Ignore:
Timestamp:
2018-03-21T19:32:48Z (6 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Children:
1c7a170
Parents:
973be387
Message:

Change the way page flags work. TODO description

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/arm32/include/arch/mm/page_armv4.h

    r973be387 r94d211e  
    4949#define PTE_GET_FRAME_ARCH(pte) \
    5050        (((uintptr_t) ((pte_t *) (pte))->l1.frame_base_addr) << FRAME_WIDTH)
     51#define PTE_READABLE_ARCH(pte) \
     52        1
    5153#define PTE_WRITABLE_ARCH(pte) \
    5254        (((pte_t *) (pte))->l1.access_permission_0 == PTE_AP_USER_RW_KERNEL_RW)
     
    138140        int np = (p->descriptor_type == PTE_DESCRIPTOR_NOT_PRESENT);
    139141
    140         return (np << PAGE_PRESENT_SHIFT) | (1 << PAGE_USER_SHIFT) |
    141             (1 << PAGE_READ_SHIFT) | (1 << PAGE_WRITE_SHIFT) |
    142             (1 << PAGE_EXEC_SHIFT) | (1 << PAGE_CACHEABLE_SHIFT);
     142        return (np << PAGE_NOT_PRESENT_SHIFT) | PAGE_NEXT_LEVEL_PT;
    143143}
    144144
     
    156156        int ap = p->access_permission_0;
    157157
    158         return ((dt == PTE_DESCRIPTOR_NOT_PRESENT) << PAGE_PRESENT_SHIFT) |
     158        return ((dt == PTE_DESCRIPTOR_NOT_PRESENT) << PAGE_NOT_PRESENT_SHIFT) |
    159159            ((ap == PTE_AP_USER_RO_KERNEL_RW) << PAGE_READ_SHIFT) |
    160160            ((ap == PTE_AP_USER_RW_KERNEL_RW) << PAGE_READ_SHIFT) |
     
    164164            ((ap == PTE_AP_USER_NO_KERNEL_RW) << PAGE_WRITE_SHIFT) |
    165165            (1 << PAGE_EXEC_SHIFT) |
    166             (p->bufferable << PAGE_CACHEABLE);
     166            (p->bufferable ? PAGE_CACHEABLE : PAGE_NOT_CACHEABLE);
    167167}
    168168
     
    220220
    221221        if (flags & PAGE_USER)  {
    222                 if (flags & PAGE_READ) {
     222                if (flags & _PAGE_READ) {
    223223                        p->access_permission_0 = p->access_permission_1 =
    224224                            p->access_permission_2 = p->access_permission_3 =
    225225                            PTE_AP_USER_RO_KERNEL_RW;
    226226                }
    227                 if (flags & PAGE_WRITE) {
     227                if (flags & _PAGE_WRITE) {
    228228                        p->access_permission_0 = p->access_permission_1 =
    229229                            p->access_permission_2 = p->access_permission_3 =
Note: See TracChangeset for help on using the changeset viewer.