Ignore:
File:
1 edited

Legend:

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

    r7a0359b rf3277d49  
    2727 */
    2828
    29 /** @addtogroup ppc32mm
     29/** @addtogroup ppc32mm 
    3030 * @{
    3131 */
     
    3737
    3838#include <arch/mm/frame.h>
    39 #include <trace.h>
    4039
    41 #define PAGE_WIDTH  FRAME_WIDTH
    42 #define PAGE_SIZE   FRAME_SIZE
     40#define PAGE_WIDTH      FRAME_WIDTH
     41#define PAGE_SIZE       FRAME_SIZE
    4342
    4443#ifdef KERNEL
    4544
    4645#ifndef __ASM__
    47         #define KA2PA(x)  (((uintptr_t) (x)) - 0x80000000)
    48         #define PA2KA(x)  (((uintptr_t) (x)) + 0x80000000)
     46#       define KA2PA(x) (((uintptr_t) (x)) - 0x80000000)
     47#       define PA2KA(x) (((uintptr_t) (x)) + 0x80000000)
    4948#else
    50         #define KA2PA(x)  ((x) - 0x80000000)
    51         #define PA2KA(x)  ((x) + 0x80000000)
     49#       define KA2PA(x) ((x) - 0x80000000)
     50#       define PA2KA(x) ((x) + 0x80000000)
    5251#endif
    5352
     
    6665
    6766/* Number of entries in each level. */
    68 #define PTL0_ENTRIES_ARCH  1024
    69 #define PTL1_ENTRIES_ARCH  0
    70 #define PTL2_ENTRIES_ARCH  0
    71 #define PTL3_ENTRIES_ARCH  1024
     67#define PTL0_ENTRIES_ARCH       1024
     68#define PTL1_ENTRIES_ARCH       0
     69#define PTL2_ENTRIES_ARCH       0
     70#define PTL3_ENTRIES_ARCH       1024
    7271
    7372/* Page table sizes for each level. */
    74 #define PTL0_SIZE_ARCH  ONE_FRAME
    75 #define PTL1_SIZE_ARCH  0
    76 #define PTL2_SIZE_ARCH  0
    77 #define PTL3_SIZE_ARCH  ONE_FRAME
     73#define PTL0_SIZE_ARCH          ONE_FRAME
     74#define PTL1_SIZE_ARCH          0
     75#define PTL2_SIZE_ARCH          0
     76#define PTL3_SIZE_ARCH          ONE_FRAME
    7877
    7978/* Macros calculating indices into page tables on each level. */
    80 #define PTL0_INDEX_ARCH(vaddr)  (((vaddr) >> 22) & 0x3ff)
    81 #define PTL1_INDEX_ARCH(vaddr)  0
    82 #define PTL2_INDEX_ARCH(vaddr)  0
    83 #define PTL3_INDEX_ARCH(vaddr)  (((vaddr) >> 12) & 0x3ff)
     79#define PTL0_INDEX_ARCH(vaddr)  (((vaddr) >> 22) & 0x3ff)
     80#define PTL1_INDEX_ARCH(vaddr)  0
     81#define PTL2_INDEX_ARCH(vaddr)  0
     82#define PTL3_INDEX_ARCH(vaddr)  (((vaddr) >> 12) & 0x3ff)
    8483
    8584/* Get PTE address accessors for each level. */
    8685#define GET_PTL1_ADDRESS_ARCH(ptl0, i) \
    8786        (((pte_t *) (ptl0))[(i)].pfn << 12)
    88 
    8987#define GET_PTL2_ADDRESS_ARCH(ptl1, i) \
    9088        (ptl1)
    91 
    9289#define GET_PTL3_ADDRESS_ARCH(ptl2, i) \
    9390        (ptl2)
    94 
    95 #define GET_FRAME_ADDRESS_ARCH(ptl3, i) \
     91#define GET_FRAME_ADDRESS_ARCH(ptl3, i) \
    9692        (((pte_t *) (ptl3))[(i)].pfn << 12)
    9793
    9894/* Set PTE address accessors for each level. */
    9995#define SET_PTL0_ADDRESS_ARCH(ptl0)
    100 
    10196#define SET_PTL1_ADDRESS_ARCH(ptl0, i, a) \
    10297        (((pte_t *) (ptl0))[(i)].pfn = (a) >> 12)
    103 
    10498#define SET_PTL2_ADDRESS_ARCH(ptl1, i, a)
    10599#define SET_PTL3_ADDRESS_ARCH(ptl2, i, a)
    106 
    107100#define SET_FRAME_ADDRESS_ARCH(ptl3, i, a) \
    108101        (((pte_t *) (ptl3))[(i)].pfn = (a) >> 12)
     
    111104#define GET_PTL1_FLAGS_ARCH(ptl0, i) \
    112105        get_pt_flags((pte_t *) (ptl0), (size_t) (i))
    113 
    114106#define GET_PTL2_FLAGS_ARCH(ptl1, i) \
    115107        PAGE_PRESENT
    116 
    117108#define GET_PTL3_FLAGS_ARCH(ptl2, i) \
    118109        PAGE_PRESENT
    119 
    120110#define GET_FRAME_FLAGS_ARCH(ptl3, i) \
    121111        get_pt_flags((pte_t *) (ptl3), (size_t) (i))
    122112
    123113/* Set PTE flags accessors for each level. */
    124 #define SET_PTL1_FLAGS_ARCH(ptl0, i, x) \
     114#define SET_PTL1_FLAGS_ARCH(ptl0, i, x) \
    125115        set_pt_flags((pte_t *) (ptl0), (size_t) (i), (x))
    126 
    127116#define SET_PTL2_FLAGS_ARCH(ptl1, i, x)
    128117#define SET_PTL3_FLAGS_ARCH(ptl2, i, x)
    129 
    130118#define SET_FRAME_FLAGS_ARCH(ptl3, i, x) \
    131119        set_pt_flags((pte_t *) (ptl3), (size_t) (i), (x))
    132120
    133121/* Macros for querying the last-level PTEs. */
    134 #define PTE_VALID_ARCH(pte)       (*((uint32_t *) (pte)) != 0)
    135 #define PTE_PRESENT_ARCH(pte)     ((pte)->present != 0)
    136 #define PTE_GET_FRAME_ARCH(pte)   ((pte)->pfn << 12)
    137 #define PTE_WRITABLE_ARCH(pte)    1
    138 #define PTE_EXECUTABLE_ARCH(pte)  1
     122#define PTE_VALID_ARCH(pte)                     (*((uint32_t *) (pte)) != 0)
     123#define PTE_PRESENT_ARCH(pte)                   ((pte)->present != 0)
     124#define PTE_GET_FRAME_ARCH(pte)                 ((pte)->pfn << 12)
     125#define PTE_WRITABLE_ARCH(pte)                  1
     126#define PTE_EXECUTABLE_ARCH(pte)                1
    139127
    140128#ifndef __ASM__
     
    145133/** Page Table Entry. */
    146134typedef struct {
    147         unsigned int present : 1;             /**< Present bit. */
    148         unsigned int page_write_through : 1;  /**< Write thought caching. */
    149         unsigned int page_cache_disable : 1;  /**< No caching. */
    150         unsigned int accessed : 1;            /**< Accessed bit. */
    151         unsigned int global : 1;              /**< Global bit. */
    152         unsigned int valid : 1;               /**< Valid content even if not present. */
    153         unsigned int pfn : 20;                /**< Physical frame number. */
     135        unsigned present : 1;             /**< Present bit. */
     136        unsigned page_write_through : 1;  /**< Write thought caching. */
     137        unsigned page_cache_disable : 1;  /**< No caching. */
     138        unsigned accessed : 1;            /**< Accessed bit. */
     139        unsigned global : 1;              /**< Global bit. */
     140        unsigned valid : 1;               /**< Valid content even if not present. */
     141        unsigned pfn : 20;                /**< Physical frame number. */
    154142} pte_t;
    155143
    156 NO_TRACE static inline unsigned int get_pt_flags(pte_t *pt, size_t i)
     144static inline unsigned int get_pt_flags(pte_t *pt, size_t i)
    157145{
    158         pte_t *entry = &pt[i];
     146        pte_t *p = &pt[i];
    159147       
    160         return (((!entry->page_cache_disable) << PAGE_CACHEABLE_SHIFT) |
    161             ((!entry->present) << PAGE_PRESENT_SHIFT) |
     148        return (((!p->page_cache_disable) << PAGE_CACHEABLE_SHIFT) |
     149            ((!p->present) << PAGE_PRESENT_SHIFT) |
    162150            (1 << PAGE_USER_SHIFT) |
    163151            (1 << PAGE_READ_SHIFT) |
    164152            (1 << PAGE_WRITE_SHIFT) |
    165153            (1 << PAGE_EXEC_SHIFT) |
    166             (entry->global << PAGE_GLOBAL_SHIFT));
     154            (p->global << PAGE_GLOBAL_SHIFT));
    167155}
    168156
    169 NO_TRACE static inline void set_pt_flags(pte_t *pt, size_t i, int flags)
     157static inline void set_pt_flags(pte_t *pt, size_t i, int flags)
    170158{
    171         pte_t *entry = &pt[i];
     159        pte_t *p = &pt[i];
    172160       
    173         entry->page_cache_disable = !(flags & PAGE_CACHEABLE);
    174         entry->present = !(flags & PAGE_NOT_PRESENT);
    175         entry->global = (flags & PAGE_GLOBAL) != 0;
    176         entry->valid = 1;
     161        p->page_cache_disable = !(flags & PAGE_CACHEABLE);
     162        p->present = !(flags & PAGE_NOT_PRESENT);
     163        p->global = (flags & PAGE_GLOBAL) != 0;
     164        p->valid = 1;
    177165}
    178166
Note: See TracChangeset for help on using the changeset viewer.