Changeset da1bafb in mainline for kernel/genarch/include/mm/page_pt.h


Ignore:
Timestamp:
2010-05-24T18:57:31Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0095368
Parents:
666f492
Message:

major code revision

  • replace spinlocks taken with interrupts disabled with irq_spinlocks
  • change spacing (not indendation) to be tab-size independent
  • use unsigned integer types where appropriate (especially bit flags)
  • visual separation
  • remove argument names in function prototypes
  • string changes
  • correct some formating directives
  • replace various cryptic single-character variables (t, a, m, c, b, etc.) with proper identifiers (thread, task, timeout, as, itm, itc, etc.)
  • unify some assembler constructs
  • unused page table levels are now optimized out in compile time
  • replace several ints (with boolean semantics) with bools
  • use specifically sized types instead of generic types where appropriate (size_t, uint32_t, btree_key_t)
  • improve comments
  • split asserts with conjuction into multiple independent asserts
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/include/mm/page_pt.h

    r666f492 rda1bafb  
    3737 * Architectures that use hierarchical page tables
    3838 * are supposed to implement *_ARCH macros.
     39 *
    3940 */
    4041
     
    5253 * Number of entries in each level.
    5354 */
    54 #define PTL0_ENTRIES                    PTL0_ENTRIES_ARCH
    55 #define PTL1_ENTRIES                    PTL1_ENTRIES_ARCH
    56 #define PTL2_ENTRIES                    PTL2_ENTRIES_ARCH
    57 #define PTL3_ENTRIES                    PTL3_ENTRIES_ARCH
     55#define PTL0_ENTRIES  PTL0_ENTRIES_ARCH
     56#define PTL1_ENTRIES  PTL1_ENTRIES_ARCH
     57#define PTL2_ENTRIES  PTL2_ENTRIES_ARCH
     58#define PTL3_ENTRIES  PTL3_ENTRIES_ARCH
    5859
    5960/* Table sizes in each level */
    60 #define PTL0_SIZE                       PTL0_SIZE_ARCH
    61 #define PTL1_SIZE                       PTL1_SIZE_ARCH
    62 #define PTL2_SIZE                       PTL2_SIZE_ARCH
    63 #define PTL3_SIZE                       PTL3_SIZE_ARCH
     61#define PTL0_SIZE  PTL0_SIZE_ARCH
     62#define PTL1_SIZE  PTL1_SIZE_ARCH
     63#define PTL2_SIZE  PTL2_SIZE_ARCH
     64#define PTL3_SIZE  PTL3_SIZE_ARCH
    6465
    6566/*
    6667 * These macros process vaddr and extract those portions
    6768 * of it that function as indices to respective page tables.
     69 *
    6870 */
    69 #define PTL0_INDEX(vaddr)               PTL0_INDEX_ARCH(vaddr)
    70 #define PTL1_INDEX(vaddr)               PTL1_INDEX_ARCH(vaddr)
    71 #define PTL2_INDEX(vaddr)               PTL2_INDEX_ARCH(vaddr)
    72 #define PTL3_INDEX(vaddr)               PTL3_INDEX_ARCH(vaddr)
     71#define PTL0_INDEX(vaddr)  PTL0_INDEX_ARCH(vaddr)
     72#define PTL1_INDEX(vaddr)  PTL1_INDEX_ARCH(vaddr)
     73#define PTL2_INDEX(vaddr)  PTL2_INDEX_ARCH(vaddr)
     74#define PTL3_INDEX(vaddr)  PTL3_INDEX_ARCH(vaddr)
    7375
    74 #define SET_PTL0_ADDRESS(ptl0)          SET_PTL0_ADDRESS_ARCH(ptl0)
     76#define SET_PTL0_ADDRESS(ptl0)  SET_PTL0_ADDRESS_ARCH(ptl0)
    7577
    7678/*
    7779 * These macros traverse the 4-level tree of page tables,
    7880 * each descending by one level.
     81 *
    7982 */
    80 #define GET_PTL1_ADDRESS(ptl0, i)       GET_PTL1_ADDRESS_ARCH(ptl0, i)
    81 #define GET_PTL2_ADDRESS(ptl1, i)       GET_PTL2_ADDRESS_ARCH(ptl1, i)
    82 #define GET_PTL3_ADDRESS(ptl2, i)       GET_PTL3_ADDRESS_ARCH(ptl2, i)
    83 #define GET_FRAME_ADDRESS(ptl3, i)      GET_FRAME_ADDRESS_ARCH(ptl3, i)
     83#define GET_PTL1_ADDRESS(ptl0, i)   GET_PTL1_ADDRESS_ARCH(ptl0, i)
     84#define GET_PTL2_ADDRESS(ptl1, i)   GET_PTL2_ADDRESS_ARCH(ptl1, i)
     85#define GET_PTL3_ADDRESS(ptl2, i)   GET_PTL3_ADDRESS_ARCH(ptl2, i)
     86#define GET_FRAME_ADDRESS(ptl3, i)  GET_FRAME_ADDRESS_ARCH(ptl3, i)
    8487
    8588/*
    8689 * These macros are provided to change the shape of the 4-level tree of page
    8790 * tables on respective level.
     91 *
    8892 */
    89 #define SET_PTL1_ADDRESS(ptl0, i, a)    SET_PTL1_ADDRESS_ARCH(ptl0, i, a)
    90 #define SET_PTL2_ADDRESS(ptl1, i, a)    SET_PTL2_ADDRESS_ARCH(ptl1, i, a)
    91 #define SET_PTL3_ADDRESS(ptl2, i, a)    SET_PTL3_ADDRESS_ARCH(ptl2, i, a)
    92 #define SET_FRAME_ADDRESS(ptl3, i, a)   SET_FRAME_ADDRESS_ARCH(ptl3, i, a)
     93#define SET_PTL1_ADDRESS(ptl0, i, a)   SET_PTL1_ADDRESS_ARCH(ptl0, i, a)
     94#define SET_PTL2_ADDRESS(ptl1, i, a)   SET_PTL2_ADDRESS_ARCH(ptl1, i, a)
     95#define SET_PTL3_ADDRESS(ptl2, i, a)   SET_PTL3_ADDRESS_ARCH(ptl2, i, a)
     96#define SET_FRAME_ADDRESS(ptl3, i, a)  SET_FRAME_ADDRESS_ARCH(ptl3, i, a)
    9397
    9498/*
    9599 * These macros are provided to query various flags within the page tables.
     100 *
    96101 */
    97 #define GET_PTL1_FLAGS(ptl0, i)         GET_PTL1_FLAGS_ARCH(ptl0, i)
    98 #define GET_PTL2_FLAGS(ptl1, i)         GET_PTL2_FLAGS_ARCH(ptl1, i)
    99 #define GET_PTL3_FLAGS(ptl2, i)         GET_PTL3_FLAGS_ARCH(ptl2, i)
    100 #define GET_FRAME_FLAGS(ptl3, i)        GET_FRAME_FLAGS_ARCH(ptl3, i)
     102#define GET_PTL1_FLAGS(ptl0, i)   GET_PTL1_FLAGS_ARCH(ptl0, i)
     103#define GET_PTL2_FLAGS(ptl1, i)   GET_PTL2_FLAGS_ARCH(ptl1, i)
     104#define GET_PTL3_FLAGS(ptl2, i)   GET_PTL3_FLAGS_ARCH(ptl2, i)
     105#define GET_FRAME_FLAGS(ptl3, i)  GET_FRAME_FLAGS_ARCH(ptl3, i)
    101106
    102107/*
    103108 * These macros are provided to set/clear various flags within the page tables.
     109 *
    104110 */
    105 #define SET_PTL1_FLAGS(ptl0, i, x)      SET_PTL1_FLAGS_ARCH(ptl0, i, x)
    106 #define SET_PTL2_FLAGS(ptl1, i, x)      SET_PTL2_FLAGS_ARCH(ptl1, i, x)
    107 #define SET_PTL3_FLAGS(ptl2, i, x)      SET_PTL3_FLAGS_ARCH(ptl2, i, x)
    108 #define SET_FRAME_FLAGS(ptl3, i, x)     SET_FRAME_FLAGS_ARCH(ptl3, i, x)
     111#define SET_PTL1_FLAGS(ptl0, i, x)   SET_PTL1_FLAGS_ARCH(ptl0, i, x)
     112#define SET_PTL2_FLAGS(ptl1, i, x)   SET_PTL2_FLAGS_ARCH(ptl1, i, x)
     113#define SET_PTL3_FLAGS(ptl2, i, x)   SET_PTL3_FLAGS_ARCH(ptl2, i, x)
     114#define SET_FRAME_FLAGS(ptl3, i, x)  SET_FRAME_FLAGS_ARCH(ptl3, i, x)
    109115
    110116/*
    111117 * Macros for querying the last-level PTEs.
     118 *
    112119 */
    113 #define PTE_VALID(p)            PTE_VALID_ARCH((p))
    114 #define PTE_PRESENT(p)          PTE_PRESENT_ARCH((p))
    115 #define PTE_GET_FRAME(p)        PTE_GET_FRAME_ARCH((p))
    116 #define PTE_READABLE(p)         1
    117 #define PTE_WRITABLE(p)         PTE_WRITABLE_ARCH((p))
    118 #define PTE_EXECUTABLE(p)       PTE_EXECUTABLE_ARCH((p))
     120#define PTE_VALID(p)       PTE_VALID_ARCH((p))
     121#define PTE_PRESENT(p)     PTE_PRESENT_ARCH((p))
     122#define PTE_GET_FRAME(p)   PTE_GET_FRAME_ARCH((p))
     123#define PTE_READABLE(p)    1
     124#define PTE_WRITABLE(p)    PTE_WRITABLE_ARCH((p))
     125#define PTE_EXECUTABLE(p)  PTE_EXECUTABLE_ARCH((p))
    119126
    120127extern as_operations_t as_pt_operations;
    121128extern page_mapping_operations_t pt_mapping_operations;
    122129
    123 extern void page_mapping_insert_pt(as_t *as, uintptr_t page, uintptr_t frame,
    124     int flags);
    125 extern pte_t *page_mapping_find_pt(as_t *as, uintptr_t page);
     130extern void page_mapping_insert_pt(as_t *, uintptr_t, uintptr_t, unsigned int);
     131extern pte_t *page_mapping_find_pt(as_t *, uintptr_t);
    126132
    127133#endif
Note: See TracChangeset for help on using the changeset viewer.