Ignore:
File:
1 edited

Legend:

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

    rc09adc10 r98000fb  
    7575/* Get PTE address accessors for each level. */
    7676#define GET_PTL1_ADDRESS_ARCH(ptl0, i) \
    77         ((pte_t *) ((((pte_t *)(ptl0))[(i)].l0).coarse_table_addr << 10))
     77        ((pte_t *) ((((pte_level0_t *)(ptl0))[(i)]).coarse_table_addr << 10))
    7878#define GET_PTL2_ADDRESS_ARCH(ptl1, i) \
    7979        (ptl1)
     
    8181        (ptl2)
    8282#define GET_FRAME_ADDRESS_ARCH(ptl3, i) \
    83         ((uintptr_t) ((((pte_t *)(ptl3))[(i)].l1).frame_base_addr << 12))
     83        ((uintptr_t) ((((pte_level1_t *)(ptl3))[(i)]).frame_base_addr << 12))
    8484
    8585/* Set PTE address accessors for each level. */
    8686#define SET_PTL0_ADDRESS_ARCH(ptl0) \
    87         (set_ptl0_addr((pte_t *) (ptl0)))
     87        (set_ptl0_addr((pte_level0_t *) (ptl0)))
    8888#define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) \
    89         (((pte_t *) (ptl0))[(i)].l0.coarse_table_addr = (a) >> 10)
     89        (((pte_level0_t *) (ptl0))[(i)].coarse_table_addr = (a) >> 10)
    9090#define SET_PTL2_ADDRESS_ARCH(ptl1, i, a)
    9191#define SET_PTL3_ADDRESS_ARCH(ptl2, i, a)
    9292#define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) \
    93         (((pte_t *) (ptl3))[(i)].l1.frame_base_addr = (a) >> 12)
     93        (((pte_level1_t *) (ptl3))[(i)].frame_base_addr = (a) >> 12)
    9494
    9595/* Get PTE flags accessors for each level. */
    9696#define GET_PTL1_FLAGS_ARCH(ptl0, i) \
    97         get_pt_level0_flags((pte_t *) (ptl0), (size_t) (i))
     97        get_pt_level0_flags((pte_level0_t *) (ptl0), (size_t) (i))
    9898#define GET_PTL2_FLAGS_ARCH(ptl1, i) \
    9999        PAGE_PRESENT
     
    101101        PAGE_PRESENT
    102102#define GET_FRAME_FLAGS_ARCH(ptl3, i) \
    103         get_pt_level1_flags((pte_t *) (ptl3), (size_t) (i))
     103        get_pt_level1_flags((pte_level1_t *) (ptl3), (size_t) (i))
    104104
    105105/* Set PTE flags accessors for each level. */
    106106#define SET_PTL1_FLAGS_ARCH(ptl0, i, x) \
    107         set_pt_level0_flags((pte_t *) (ptl0), (size_t) (i), (x))
     107        set_pt_level0_flags((pte_level0_t *) (ptl0), (size_t) (i), (x))
    108108#define SET_PTL2_FLAGS_ARCH(ptl1, i, x)
    109109#define SET_PTL3_FLAGS_ARCH(ptl2, i, x)
    110110#define SET_FRAME_FLAGS_ARCH(ptl3, i, x) \
    111         set_pt_level1_flags((pte_t *) (ptl3), (size_t) (i), (x))
     111        set_pt_level1_flags((pte_level1_t *) (ptl3), (size_t) (i), (x))
    112112
    113113/* Macros for querying the last-level PTE entries. */
     
    115115        (*((uint32_t *) (pte)) != 0)
    116116#define PTE_PRESENT_ARCH(pte) \
    117         (((pte_t *) (pte))->l0.descriptor_type != 0)
     117        (((pte_level0_t *) (pte))->descriptor_type != 0)
    118118#define PTE_GET_FRAME_ARCH(pte) \
    119         (((pte_t *) (pte))->l1.frame_base_addr << FRAME_WIDTH)
     119        (((pte_level1_t *) (pte))->frame_base_addr << FRAME_WIDTH)
    120120#define PTE_WRITABLE_ARCH(pte) \
    121         (((pte_t *) (pte))->l1.access_permission_0 == PTE_AP_USER_RW_KERNEL_RW)
     121        (((pte_level1_t *) (pte))->access_permission_0 == \
     122            PTE_AP_USER_RW_KERNEL_RW)
    122123#define PTE_EXECUTABLE_ARCH(pte) \
    123124        1
     
    158159} ATTRIBUTE_PACKED pte_level1_t;
    159160
    160 typedef union {
    161         pte_level0_t l0;
    162         pte_level1_t l1;
    163 } pte_t;
    164161
    165162/* Level 1 page tables access permissions */
     
    194191 * @param pt    Pointer to the page table to set.
    195192 */   
    196 static inline void set_ptl0_addr(pte_t *pt)
     193static inline void set_ptl0_addr(pte_level0_t *pt)
    197194{
    198195        asm volatile (
     
    208205 *  @param i      Index of the entry to return.
    209206 */
    210 static inline int get_pt_level0_flags(pte_t *pt, size_t i)
    211 {
    212         pte_level0_t *p = &pt[i].l0;
     207static inline int get_pt_level0_flags(pte_level0_t *pt, size_t i)
     208{
     209        pte_level0_t *p = &pt[i];
    213210        int np = (p->descriptor_type == PTE_DESCRIPTOR_NOT_PRESENT);
    214211
     
    223220 *  @param i      Index of the entry to return.
    224221 */
    225 static inline int get_pt_level1_flags(pte_t *pt, size_t i)
    226 {
    227         pte_level1_t *p = &pt[i].l1;
     222static inline int get_pt_level1_flags(pte_level1_t *pt, size_t i)
     223{
     224        pte_level1_t *p = &pt[i];
    228225
    229226        int dt = p->descriptor_type;
     
    248245 *  @param flags  new flags
    249246 */
    250 static inline void set_pt_level0_flags(pte_t *pt, size_t i, int flags)
    251 {
    252         pte_level0_t *p = &pt[i].l0;
     247static inline void set_pt_level0_flags(pte_level0_t *pt, size_t i, int flags)
     248{
     249        pte_level0_t *p = &pt[i];
    253250
    254251        if (flags & PAGE_NOT_PRESENT) {
     
    276273 *  @param flags  New flags.
    277274 */ 
    278 static inline void set_pt_level1_flags(pte_t *pt, size_t i, int flags)
    279 {
    280         pte_level1_t *p = &pt[i].l1;
     275static inline void set_pt_level1_flags(pte_level1_t *pt, size_t i, int flags)
     276{
     277        pte_level1_t *p = &pt[i];
    281278       
    282279        if (flags & PAGE_NOT_PRESENT) {
Note: See TracChangeset for help on using the changeset viewer.