X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/28c176b668c841a3b7fb093faccf0efa39257603..e47950ba3c4ef27ff19d8bb7ad54d779180e96e9:/lunaix-os/arch/x86/includes/sys/mm/memory.h diff --git a/lunaix-os/arch/x86/includes/sys/mm/memory.h b/lunaix-os/arch/x86/includes/sys/mm/memory.h index cf9f91d..abccba9 100644 --- a/lunaix-os/arch/x86/includes/sys/mm/memory.h +++ b/lunaix-os/arch/x86/includes/sys/mm/memory.h @@ -4,23 +4,23 @@ #include #include -static inline pte_attr_t -translate_vmr_prot(unsigned int vmr_prot) +static inline pte_t +translate_vmr_prot(unsigned int vmr_prot, pte_t pte) { - pte_attr_t _pte_prot = _PTE_U; - if ((vmr_prot & PROT_READ)) { - _pte_prot |= _PTE_R; - } + pte = pte_mkuser(pte); if ((vmr_prot & PROT_WRITE)) { - _pte_prot |= _PTE_W; + pte = pte_mkwritable(pte); } - if (!(vmr_prot & PROT_EXEC)) { - _pte_prot |= _PTE_NX; + if ((vmr_prot & PROT_EXEC)) { + pte = pte_mkexec(pte); + } + else { + pte = pte_mknonexec(pte); } - return _pte_prot; + return pte; }