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/ia32/include/arch/mm/page.h

    r973be387 r94d211e  
    109109        get_pt_flags((pte_t *) (ptl0), (size_t) (i))
    110110#define GET_PTL2_FLAGS_ARCH(ptl1, i) \
    111         PAGE_PRESENT
     111        PAGE_NEXT_LEVEL_PT
    112112#define GET_PTL3_FLAGS_ARCH(ptl2, i) \
    113         PAGE_PRESENT
     113        PAGE_NEXT_LEVEL_PT
    114114#define GET_FRAME_FLAGS_ARCH(ptl3, i) \
    115115        get_pt_flags((pte_t *) (ptl3), (size_t) (i))
     
    138138#define PTE_GET_FRAME_ARCH(p) \
    139139        ((p)->frame_address << FRAME_WIDTH)
     140#define PTE_READABLE_ARCH(p) \
     141        1
    140142#define PTE_WRITABLE_ARCH(p) \
    141143        ((p)->writeable != 0)
    142 #define PTE_EXECUTABLE_ARCH(p)  1
     144#define PTE_EXECUTABLE_ARCH(p) \
     145        1
    143146
    144147#ifndef __ASSEMBLER__
     
    184187        pte_t *p = &pt[i];
    185188
    186         return ((!p->page_cache_disable) << PAGE_CACHEABLE_SHIFT |
    187             (!p->present) << PAGE_PRESENT_SHIFT |
    188             p->uaccessible << PAGE_USER_SHIFT |
    189             1 << PAGE_READ_SHIFT |
     189        return ((p->page_cache_disable ? PAGE_NOT_CACHEABLE : PAGE_CACHEABLE) |
     190            (!p->present) << PAGE_NOT_PRESENT_SHIFT |
     191            (p->uaccessible ? PAGE_USER : PAGE_KERNEL) |
     192            _PAGE_READ |
    190193            p->writeable << PAGE_WRITE_SHIFT |
    191             1 << PAGE_EXEC_SHIFT |
     194            _PAGE_EXEC |
    192195            p->global << PAGE_GLOBAL_SHIFT);
    193196}
     
    199202        p->page_cache_disable = !(flags & PAGE_CACHEABLE);
    200203        p->present = !(flags & PAGE_NOT_PRESENT);
    201         p->uaccessible = (flags & PAGE_USER) != 0;
    202         p->writeable = (flags & PAGE_WRITE) != 0;
     204        p->uaccessible = !(flags & PAGE_KERNEL);
     205        p->writeable = (flags & _PAGE_WRITE) != 0;
    203206        p->global = (flags & PAGE_GLOBAL) != 0;
    204207
Note: See TracChangeset for help on using the changeset viewer.