Changeset c03ee1c in mainline for kernel/arch/arm32


Ignore:
Timestamp:
2007-06-13T17:49:57Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
de7663f
Parents:
6b781c0
Message:

Improve comments for arch-specific implementations of hierarchical
4-level page tables. Improve formatting.

Location:
kernel/arch/arm32/include/mm
Files:
2 edited

Legend:

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

    r6b781c0 rc03ee1c  
    5656#ifdef KERNEL
    5757
     58/* Number of entries in each level. */
    5859#define PTL0_ENTRIES_ARCH       (2 << 12)       /* 4096 */
    5960#define PTL1_ENTRIES_ARCH       0
    6061#define PTL2_ENTRIES_ARCH       0
    61 
    6262/* coarse page tables used (256 * 4 = 1KB per page) */
    6363#define PTL3_ENTRIES_ARCH       (2 << 8)        /* 256 */
    6464
     65/* Page table sizes for each level. */
    6566#define PTL0_SIZE_ARCH          FOUR_FRAMES
    6667#define PTL1_SIZE_ARCH          0
     
    6869#define PTL3_SIZE_ARCH          ONE_FRAME
    6970
     71/* Macros calculating indices into page tables for each level. */
    7072#define PTL0_INDEX_ARCH(vaddr)  (((vaddr) >> 20) & 0xfff)
    7173#define PTL1_INDEX_ARCH(vaddr)  0
     
    7375#define PTL3_INDEX_ARCH(vaddr)  (((vaddr) >> 12) & 0x0ff)
    7476
     77/* Get PTE address accessors for each level. */
    7578#define GET_PTL1_ADDRESS_ARCH(ptl0, i) \
    7679        ((pte_t *) ((((pte_level0_t *)(ptl0))[(i)]).coarse_table_addr << 10))
     
    8285        ((uintptr_t) ((((pte_level1_t *)(ptl3))[(i)]).frame_base_addr << 12))
    8386
     87/* Set PTE address accessors for each level. */
    8488#define SET_PTL0_ADDRESS_ARCH(ptl0) \
    8589        (set_ptl0_addr((pte_level0_t *) (ptl0)))
     
    9195        (((pte_level1_t *) (ptl3))[(i)].frame_base_addr = (a) >> 12)
    9296
     97/* Get PTE flags accessors for each level. */
    9398#define GET_PTL1_FLAGS_ARCH(ptl0, i) \
    9499        get_pt_level0_flags((pte_level0_t *) (ptl0), (index_t) (i))
     
    100105        get_pt_level1_flags((pte_level1_t *) (ptl3), (index_t) (i))
    101106
     107/* Set PTE flags accessors for each level. */
    102108#define SET_PTL1_FLAGS_ARCH(ptl0, i, x) \
    103109        set_pt_level0_flags((pte_level0_t *) (ptl0), (index_t) (i), (x))
     
    107113        set_pt_level1_flags((pte_level1_t *) (ptl3), (index_t) (i), (x))
    108114
     115/* Macros for querying the last-level PTE entries. */
    109116#define PTE_VALID_ARCH(pte) \
    110117        (*((uint32_t *) (pte)) != 0)
    111118#define PTE_PRESENT_ARCH(pte) \
    112119        (((pte_level0_t *) (pte))->descriptor_type != 0)
    113 
    114 /* pte should point into ptl3 */
    115120#define PTE_GET_FRAME_ARCH(pte) \
    116121        (((pte_level1_t *) (pte))->frame_base_addr << FRAME_WIDTH)
    117 
    118 /* pte should point into ptl3 */
    119122#define PTE_WRITABLE_ARCH(pte) \
    120123        (((pte_level1_t *) (pte))->access_permission_0 == \
    121124            PTE_AP_USER_RW_KERNEL_RW)
    122 
    123125#define PTE_EXECUTABLE_ARCH(pte) \
    124126        1
     
    129131typedef struct {
    130132        /* 0b01 for coarse tables, see below for details */
    131         unsigned descriptor_type     : 2;
    132         unsigned impl_specific       : 3;
    133         unsigned domain              : 4;
    134         unsigned should_be_zero      : 1;
     133        unsigned descriptor_type : 2;
     134        unsigned impl_specific : 3;
     135        unsigned domain : 4;
     136        unsigned should_be_zero : 1;
    135137
    136138        /* Pointer to the coarse 2nd level page table (holding entries for small
     
    139141         * per table in comparison with 1KB per the coarse table)
    140142         */
    141         unsigned coarse_table_addr   : 22;
     143        unsigned coarse_table_addr : 22;
    142144} ATTRIBUTE_PACKED pte_level0_t;
    143145
     
    146148
    147149        /* 0b10 for small pages */
    148         unsigned descriptor_type     : 2;
    149         unsigned bufferable          : 1;
    150         unsigned cacheable           : 1;
     150        unsigned descriptor_type : 2;
     151        unsigned bufferable : 1;
     152        unsigned cacheable : 1;
    151153
    152154        /* access permissions for each of 4 subparts of a page
     
    156158        unsigned access_permission_2 : 2;
    157159        unsigned access_permission_3 : 2;
    158         unsigned frame_base_addr     : 20;
     160        unsigned frame_base_addr : 20;
    159161} ATTRIBUTE_PACKED pte_level1_t;
    160162
     
    191193 * @param pt    Pointer to the page table to set.
    192194 */   
    193 static inline void set_ptl0_addr( pte_level0_t *pt)
     195static inline void set_ptl0_addr(pte_level0_t *pt)
    194196{
    195197        asm volatile (
  • kernel/arch/arm32/include/mm/page_fault.h

    r6b781c0 rc03ee1c  
    4242/** Decribes CP15 "fault status register" (FSR). */
    4343typedef struct {
    44         unsigned status           : 3;
    45         unsigned domain           : 4;
    46         unsigned zero             : 1;
    47         unsigned should_be_zero   : 24;
     44        unsigned status : 3;
     45        unsigned domain : 4;
     46        unsigned zero : 1;
     47        unsigned should_be_zero : 24;
    4848} ATTRIBUTE_PACKED fault_status_t;
    4949
     
    6262 */
    6363typedef struct {
    64         unsigned dummy1        : 4;
    65         unsigned bit4          : 1;
    66         unsigned bits567       : 3;
    67         unsigned dummy         : 12;
    68         unsigned access        : 1;
    69         unsigned opcode        : 4;
    70         unsigned type          : 3;
    71         unsigned condition     : 4;
     64        unsigned dummy1 : 4;
     65        unsigned bit4 : 1;
     66        unsigned bits567 : 3;
     67        unsigned dummy : 12;
     68        unsigned access : 1;
     69        unsigned opcode : 4;
     70        unsigned type : 3;
     71        unsigned condition : 4;
    7272} ATTRIBUTE_PACKED instruction_t;
    7373
Note: See TracChangeset for help on using the changeset viewer.