diff --git a/base/usr/include/kernel/arch/aarch64/pml.h b/base/usr/include/kernel/arch/aarch64/pml.h index 5004aae1..61490413 100644 --- a/base/usr/include/kernel/arch/aarch64/pml.h +++ b/base/usr/include/kernel/arch/aarch64/pml.h @@ -35,5 +35,5 @@ union PML { uint64_t raw; }; -#define mmu_page_is_user_readable(p) (0) -#define mmu_page_is_user_writable(p) (0) +#define mmu_page_is_user_readable(p) (p->bits.ap & 1) +#define mmu_page_is_user_writable(p) ((p->bits.ap & 1) && !(p->bits.ap & 2)) diff --git a/base/usr/include/kernel/arch/x86_64/pml.h b/base/usr/include/kernel/arch/x86_64/pml.h index d8bcc8ec..87a3f7be 100644 --- a/base/usr/include/kernel/arch/x86_64/pml.h +++ b/base/usr/include/kernel/arch/x86_64/pml.h @@ -22,3 +22,5 @@ union PML { uint64_t raw; }; +#define mmu_page_is_user_readable(p) (p->bits.user) +#define mmu_page_is_user_writable(p) (p->bits.writable)