Changeset 992bbb97 in mainline for include/mm/page.h


Ignore:
Timestamp:
2005-06-29T20:53:18Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ff9f858
Parents:
b60a22c
Message:

Start with generic 4-level page table interface.

Usual cleanup.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • include/mm/page.h

    rb60a22c r992bbb97  
    4747#define PAGE_EXEC               (1<<5)
    4848
     49/*
     50 * This is the generic 4-level page table interface.
     51 * Architectures are supposed to implement *_ARCH macros.
     52 */
     53
     54/*
     55 * These macros process vaddr and extract those portions
     56 * of it that function as indices to respective page tables.
     57 */
     58#define PTL0_INDEX(vaddr)               PTL0_INDEX_ARCH(vaddr)
     59#define PTL1_INDEX(vaddr)               PTL1_INDEX_ARCH(vaddr)
     60#define PTL2_INDEX(vaddr)               PTL2_INDEX_ARCH(vaddr)
     61#define PTL3_INDEX(vaddr)               PTL3_INDEX_ARCH(vaddr)
     62
     63/*
     64 * These macros traverse the 4-level tree of page tables,
     65 * each descending by one level.
     66 */
     67#define GET_PTL1_ADDRESS(ptl0, i)       GET_PTL1_ADDRESS_ARCH(ptl0, i)
     68#define GET_PTL2_ADDRESS(ptl1, i)       GET_PTL2_ADDRESS_ARCH(ptl1, i)
     69#define GET_PTL3_ADDRESS(ptl2, i)       GET_PTL3_ADDRESS_ARCH(ptl2, i)
     70#define GET_FRAME_ADDRESS(ptl3, i)      GET_FRAME_ADDRESS_ARCH(ptl3, i)
     71
     72/*
     73 * These macros are provided to change shape of the 4-level
     74 * tree of page tables on respective level.
     75 */
     76#define SET_PTL1_ADDRESS(ptl0, i, a)    SET_PTL1_ADDRESS_ARCH(ptl0, i, a)
     77#define SET_PTL2_ADDRESS(ptl1, i, a)    SET_PTL2_ADDRESS_ARCH(ptl1, i, a)
     78#define SET_PTL3_ADDRESS(ptl2, i, a)    SET_PTL3_ADDRESS_ARCH(ptl2, i, a)
     79#define SET_FRAME_ADDRESS(ptl3, i, a)   SET_FRAME_ADDRESS_ARCH(ptl3, i, a)
     80
     81/*
     82 * These macros are provided to set/clear various flags within the page tables.
     83 */
     84#define SET_PTL1_FLAGS(ptl0, i, x)      SET_PTL1_FLAGS_ARCH(ptl0, i, x)
     85#define SET_PTL2_FLAGS(ptl1, i, x)      SET_PTL2_FLAGS_ARCH(ptl1, i, x)
     86#define SET_PTL3_FLAGS(ptl2, i, x)      SET_PTL3_FLAGS_ARCH(ptl2, i, x)
     87#define SET_FRAME_FLAGS(ptl3, i, x)     SET_FRAME_FLAGS_ARCH(ptl3, i, x)
     88
     89
    4990extern void page_init(void);
    5091extern void map_page_to_frame(__address page, __address frame, int flags, __address root);
Note: See TracChangeset for help on using the changeset viewer.