void cea_set_pte(void *cea_vaddr, phys_addr_t pa, pgprot_t flags) { unsigned long va = (unsigned long) cea_vaddr; pte_t pte = pfn_pte(pa >> PAGE_SHIFT, flags); /* * The cpu_entry_area is shared between the user and kernel * page tables. All of its ptes can safely be global. * _PAGE_GLOBAL gets reused to help indicate PROT_NONE for * non-present PTEs, so be careful not to set it in that * case to avoid confusion. */ if (boot_cpu_has(X86_FEATURE_PGE) && (pgprot_val(flags) & _PAGE_PRESENT)) pte = pte_set_flags(pte, _PAGE_GLOBAL); set_pte_vaddr(va, pte); }
/* * Associate a virtual page frame with a given physical page frame * and protection flags for that frame. */ void set_pte_mfn(unsigned long vaddr, unsigned long mfn, pgprot_t flags) { set_pte_vaddr(vaddr, mfn_pte(mfn, flags)); }