diff options
author | dzwdz | 2021-09-11 18:04:57 +0200 |
---|---|---|
committer | dzwdz | 2021-09-11 18:04:57 +0200 |
commit | af2f9184e03015dc3b188ea437bbf496638000ce (patch) | |
tree | 4b4186d8df73bc1b96e14e5c8eadcf1a4f66692a /src/kernel/arch/i386/pagedir.c | |
parent | 0994192f6cab853f4a49ac73aa63f6820c886ec2 (diff) |
replace `user_ptr` with a linux-style `__user` annotation
Diffstat (limited to 'src/kernel/arch/i386/pagedir.c')
-rw-r--r-- | src/kernel/arch/i386/pagedir.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/kernel/arch/i386/pagedir.c b/src/kernel/arch/i386/pagedir.c index 2fc96f4..770ff4e 100644 --- a/src/kernel/arch/i386/pagedir.c +++ b/src/kernel/arch/i386/pagedir.c @@ -46,11 +46,12 @@ struct pagedir *pagedir_new(void) { return dir; } -void pagedir_map(struct pagedir *dir, user_ptr virt, void *phys, +void pagedir_map(struct pagedir *dir, void __user *virt, void *phys, bool user, bool writeable) { - uint32_t pd_idx = virt >> 22; - uint32_t pt_idx = virt >> 12 & 0x03FF; + uintptr_t virt_cast = (uintptr_t) virt; + uint32_t pd_idx = virt_cast >> 22; + uint32_t pt_idx = virt_cast >> 12 & 0x03FF; struct pagetable_entry *pagetable; if (dir->e[pd_idx].present) { @@ -124,12 +125,13 @@ struct pagedir *pagedir_copy(const struct pagedir *orig) { return clone; } -void *pagedir_virt2phys(struct pagedir *dir, const user_ptr virt, +void *pagedir_virt2phys(struct pagedir *dir, const void __user *virt, bool user, bool writeable) { + uintptr_t virt_cast = (uintptr_t) virt; uintptr_t phys; - uint32_t pd_idx = virt >> 22; - uint32_t pt_idx = virt >> 12 & 0x03FF; + uint32_t pd_idx = virt_cast >> 22; + uint32_t pt_idx = virt_cast >> 12 & 0x03FF; struct pagetable_entry *pagetable, page; /* DOESN'T CHECK PERMISSIONS ON PAGE DIRS, TODO @@ -146,6 +148,6 @@ void *pagedir_virt2phys(struct pagedir *dir, const user_ptr virt, if (writeable && !page.writeable) return 0; phys = page.address << 11; - phys |= virt & 0xFFF; + phys |= virt_cast & 0xFFF; return (void*)phys; } |