Changes in / [fb7c52f:8359969] in mainline


Ignore:
Location:
kernel
Files:
12 edited

Legend:

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

    rfb7c52f r8359969  
    177177#define PFERR_CODE_ID           (1 << 4)
    178178
    179 /** Page Table Entry. */
    180 typedef struct {
    181         unsigned present : 1;
    182         unsigned writeable : 1;
    183         unsigned uaccessible : 1;
    184         unsigned page_write_through : 1;
    185         unsigned page_cache_disable : 1;
    186         unsigned accessed : 1;
    187         unsigned dirty : 1;
    188         unsigned unused: 1;
    189         unsigned global : 1;
    190         unsigned soft_valid : 1;                /**< Valid content even if present bit is cleared. */
    191         unsigned avl : 2;
    192         unsigned addr_12_31 : 30;
    193         unsigned addr_32_51 : 21;
    194         unsigned no_execute : 1;
    195 } __attribute__ ((packed)) pte_t;
    196 
    197179static inline unsigned int get_pt_flags(pte_t *pt, size_t i)
    198180{
  • kernel/arch/amd64/include/types.h

    rfb7c52f r8359969  
    8282#define PRIxn "llx"
    8383
     84/** Page Table Entry. */
     85typedef struct {
     86        unsigned present : 1;
     87        unsigned writeable : 1;
     88        unsigned uaccessible : 1;
     89        unsigned page_write_through : 1;
     90        unsigned page_cache_disable : 1;
     91        unsigned accessed : 1;
     92        unsigned dirty : 1;
     93        unsigned unused: 1;
     94        unsigned global : 1;
     95        unsigned soft_valid : 1;                /**< Valid content even if present bit is cleared. */
     96        unsigned avl : 2;
     97        unsigned addr_12_31 : 30;
     98        unsigned addr_32_51 : 21;
     99        unsigned no_execute : 1;
     100} __attribute__ ((packed)) pte_t;
     101
    84102#endif
    85103
  • kernel/arch/arm32/include/mm/page.h

    rfb7c52f r8359969  
    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) {
  • kernel/arch/arm32/include/types.h

    rfb7c52f r8359969  
    8787#define PRIxn "x"       /**< Format for hexadecimal (u)native_t. */
    8888
     89/** Page table entry.
     90 *
     91 *  We have different structs for level 0 and level 1 page table entries.
     92 *  See page.h for definition of pte_level*_t.
     93 */
     94typedef struct {
     95        unsigned dummy : 32;
     96} pte_t;
     97
    8998#endif
    9099
  • kernel/arch/ia32/include/mm/page.h

    rfb7c52f r8359969  
    146146#define PFERR_CODE_RSVD         (1 << 3)       
    147147
    148 /** Page Table Entry. */
    149 typedef struct {
    150         unsigned present : 1;
    151         unsigned writeable : 1;
    152         unsigned uaccessible : 1;
    153         unsigned page_write_through : 1;
    154         unsigned page_cache_disable : 1;
    155         unsigned accessed : 1;
    156         unsigned dirty : 1;
    157         unsigned pat : 1;
    158         unsigned global : 1;
    159         unsigned soft_valid : 1;        /**< Valid content even if the present bit is not set. */
    160         unsigned avl : 2;
    161         unsigned frame_address : 20;
    162 } __attribute__ ((packed)) pte_t;
    163 
    164148static inline unsigned int get_pt_flags(pte_t *pt, size_t i)
    165149{
  • kernel/arch/ia32/include/types.h

    rfb7c52f r8359969  
    8080#define PRIxn "x"       /**< Format for hexadecimal (u)native_t. */
    8181
     82/** Page Table Entry. */
     83typedef struct {
     84        unsigned present : 1;
     85        unsigned writeable : 1;
     86        unsigned uaccessible : 1;
     87        unsigned page_write_through : 1;
     88        unsigned page_cache_disable : 1;
     89        unsigned accessed : 1;
     90        unsigned dirty : 1;
     91        unsigned pat : 1;
     92        unsigned global : 1;
     93        unsigned soft_valid : 1;        /**< Valid content even if the present bit is not set. */
     94        unsigned avl : 2;
     95        unsigned frame_address : 20;
     96} __attribute__ ((packed)) pte_t;
     97
    8298#endif
    8399
  • kernel/arch/mips32/include/mm/page.h

    rfb7c52f r8359969  
    141141#include <arch/exception.h>
    142142
    143 /** Page Table Entry. */
    144 typedef struct {
    145         unsigned g : 1;                 /**< Global bit. */
    146         unsigned p : 1;                 /**< Present bit. */
    147         unsigned d : 1;                 /**< Dirty bit. */
    148         unsigned cacheable : 1;         /**< Cacheable bit. */
    149         unsigned : 1;                   /**< Unused. */
    150         unsigned soft_valid : 1;        /**< Valid content even if not present. */
    151         unsigned pfn : 24;              /**< Physical frame number. */
    152         unsigned w : 1;                 /**< Page writable bit. */
    153         unsigned a : 1;                 /**< Accessed bit. */
    154 } pte_t;
    155 
    156 
    157143static inline unsigned int get_pt_flags(pte_t *pt, size_t i)
    158144{
  • kernel/arch/mips32/include/types.h

    rfb7c52f r8359969  
    8080#define PRIxn "x"       /**< Format for hexadecimal (u)native_t. */
    8181
     82/** Page Table Entry. */
     83typedef struct {
     84        unsigned g : 1;                 /**< Global bit. */
     85        unsigned p : 1;                 /**< Present bit. */
     86        unsigned d : 1;                 /**< Dirty bit. */
     87        unsigned cacheable : 1;         /**< Cacheable bit. */
     88        unsigned : 1;                   /**< Unused. */
     89        unsigned soft_valid : 1;        /**< Valid content even if not present. */
     90        unsigned pfn : 24;              /**< Physical frame number. */
     91        unsigned w : 1;                 /**< Page writable bit. */
     92        unsigned a : 1;                 /**< Accessed bit. */
     93} pte_t;
     94
    8295#endif
    8396
  • kernel/arch/ppc32/include/mm/page.h

    rfb7c52f r8359969  
    131131#include <arch/interrupt.h>
    132132
    133 /** Page Table Entry. */
    134 typedef struct {
    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. */
    142 } pte_t;
    143 
    144133static inline unsigned int get_pt_flags(pte_t *pt, size_t i)
    145134{
  • kernel/arch/ppc32/include/types.h

    rfb7c52f r8359969  
    8282#define PRIxn "x"
    8383
     84/** Page Table Entry. */
     85typedef struct {
     86        unsigned present : 1;             /**< Present bit. */
     87        unsigned page_write_through : 1;  /**< Write thought caching. */
     88        unsigned page_cache_disable : 1;  /**< No caching. */
     89        unsigned accessed : 1;            /**< Accessed bit. */
     90        unsigned global : 1;              /**< Global bit. */
     91        unsigned valid : 1;               /**< Valid content even if not present. */
     92        unsigned pfn : 20;                /**< Physical frame number. */
     93} pte_t;
     94
    8495#endif
    8596
  • kernel/genarch/include/mm/as_pt.h

    rfb7c52f r8359969  
    3636#define KERN_AS_PT_H_
    3737
    38 #include <arch/mm/page.h>
     38#include <mm/mm.h>
     39#include <arch/types.h>
    3940
    4041#define AS_PAGE_TABLE
  • kernel/genarch/include/mm/page_pt.h

    rfb7c52f r8359969  
    4444#define KERN_PAGE_PT_H_
    4545
     46#include <arch/types.h>
    4647#include <mm/as.h>
    4748#include <mm/page.h>
    48 #include <arch/mm/page.h>
    49 #include <arch/types.h>
    5049
    5150/*
Note: See TracChangeset for help on using the changeset viewer.