Changeset 94d211e in mainline for kernel/arch/arm32/include/arch/mm/page_armv6.h
- Timestamp:
- 2018-03-21T19:32:48Z (6 years ago)
- Children:
- 1c7a170
- Parents:
- 973be387
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/arm32/include/arch/mm/page_armv6.h
r973be387 r94d211e 49 49 #define PTE_GET_FRAME_ARCH(pte) \ 50 50 (((uintptr_t) ((pte_t *) (pte))->l1.frame_base_addr) << FRAME_WIDTH) 51 #define PTE_READABLE_ARCH(pte) \ 52 1 51 53 #define PTE_WRITABLE_ARCH(pte) \ 52 54 (((pte_t *) (pte))->l1.access_permission_1 != PTE_AP1_RO) … … 171 173 const unsigned np = (p->descriptor_type == PTE_DESCRIPTOR_NOT_PRESENT); 172 174 173 return (np << PAGE_PRESENT_SHIFT) | (1 << PAGE_USER_SHIFT) | 174 (1 << PAGE_READ_SHIFT) | (1 << PAGE_WRITE_SHIFT) | 175 (1 << PAGE_EXEC_SHIFT) | (1 << PAGE_CACHEABLE_SHIFT); 175 return (np << PAGE_NOT_PRESENT_SHIFT) | PAGE_NEXT_LEVEL_PT; 176 176 } 177 177 … … 190 190 const unsigned ap1 = p->access_permission_1; 191 191 192 return ((dt == PTE_DESCRIPTOR_NOT_PRESENT) << PAGE_ PRESENT_SHIFT) |192 return ((dt == PTE_DESCRIPTOR_NOT_PRESENT) << PAGE_NOT_PRESENT_SHIFT) | 193 193 ((dt != PTE_DESCRIPTOR_SMALL_PAGE_NX) << PAGE_EXEC_SHIFT) | 194 194 ((ap0 == PTE_AP0_USER_LIMITED_KERNEL_FULL) << PAGE_READ_SHIFT) | … … 198 198 (((ap1 != PTE_AP1_RO) && (ap0 == PTE_AP0_USER_FULL_KERNEL_FULL)) << PAGE_WRITE_SHIFT) | 199 199 (((ap1 != PTE_AP1_RO) && (ap0 == PTE_AP0_USER_NO_KERNEL_FULL)) << PAGE_WRITE_SHIFT) | 200 (p->bufferable << PAGE_CACHEABLE);200 (p->bufferable ? PAGE_CACHEABLE : PAGE_NOT_CACHEABLE); 201 201 } 202 202 … … 249 249 p->descriptor_type = PTE_DESCRIPTOR_NOT_PRESENT; 250 250 } else { 251 if (flags & PAGE_EXEC)251 if (flags & _PAGE_EXEC) 252 252 p->descriptor_type = PTE_DESCRIPTOR_SMALL_PAGE; 253 253 else … … 288 288 p->access_permission_0 = PTE_AP0_USER_NO_KERNEL_FULL; 289 289 290 if (flags & PAGE_USER) {290 if (flags & PAGE_USER) 291 291 p->access_permission_0 = PTE_AP0_USER_FULL_KERNEL_FULL; 292 // TODO Fix kernel to use PAGE_WRITE flag properly and 293 // apply this for kernel pages as well. 294 if (!(flags & PAGE_WRITE)) 295 p->access_permission_1 = PTE_AP1_RO; 296 } 292 293 if (!(flags & _PAGE_WRITE)) 294 p->access_permission_1 = PTE_AP1_RO; 295 297 296 pt_coherence(p); 298 297 }
Note:
See TracChangeset
for help on using the changeset viewer.