My Project
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Classes | Macros | Typedefs | Functions
pagetable.h File Reference
#include <sw_types.h>
#include <sw_board.h>
#include <ptf.h>

Go to the source code of this file.

Classes

struct  ptable
 

Macros

#define PAGE_MASK   (PAGE_SIZE - 1)
 
#define ATTR_MEMORY   0x0
 
#define ATTR_DEVICE_STRONG   0x1
 
#define AP_PRIV_RW_USR_NO   0x0
 
#define AP_PRIV_RW_USR_RW   0x1
 
#define AP_PRIV_RO_USR_NO   0x2
 
#define AP_PRIV_RO_USR_RO   0x3
 
#define AP_RW   0x1
 
#define AP_RO   0x3
 
#define NOEXEC   0x1UL
 
#define EXEC   0x0UL
 
#define PT_ENTRIES   (PAGE_SIZE >> 3)
 
#define PAGEMAP_LEVEL   3
 
#define PTE_TYPE_INVALID   0x00
 
#define PTE_TYPE_BLOCK   0x01
 
#define PTE_TYPE_PAGE   0x03
 
#define PTE_TYPE_TABLE   0x03
 
#define LEVEL_OFFSET_MASK(x)   (LEVEL0_OFFSET_MASK >> (x * LEVEL_OFFSET_BITS))
 
#define LEVEL_OFFSET_SHIFT(x)   ((4 - x) * LEVEL_OFFSET_BITS)
 
#define MEM_ATTRIBUTES_MAP   0x00000000000000ff
 
#define TABLE_ATTR   0x0
 
#define ACCESS_FLAG   1
 
#define PT_ATTR_SHIFT   2
 
#define PT_NS_SHIFT   5
 
#define PT_AP_SHIFT   6
 
#define PT_AF_SHIFT   10
 
#define PT_PXN_SHIFT   53
 
#define PT_UXN_SHIFT   54
 
#define PT_XN_SHIFT   54
 
#define BA_MEMORY   0x0000000000000440
 
#define BA_DEVICE   0x0000000000000441
 
#define IDENT_MAP   0
 
#define LIN_MAP   1
 
#define DEV_MAP   2
 
#define PT_STAGE_1   0
 
#define PT_STAGE_2   1
 
#define STATIC_PT_PAGES   32
 
#define kva_to_kpa(x)   (((x) - KERN_VA_BASE) + KERN_PA_BASE)
 
#define kpa_to_kva(x)   (((x) - KERN_PA_BASE) + KERN_VA_BASE)
 

Typedefs

typedef unsigned long(* ptp_alloc_t )(void)
 

Functions

void pt_page_allocator_init (ptp_alloc_t)
 Initialize ptable page allocator function. More...
 
unsigned long static_pt_page_alloc (void)
 static pool page allocator More...
 

Macro Definition Documentation

#define ACCESS_FLAG   1
#define AP_PRIV_RO_USR_NO   0x2

Priv read only, usr no access

#define AP_PRIV_RO_USR_RO   0x3

Priv read only, usr read only

#define AP_PRIV_RW_USR_NO   0x0

Priv read/write, usr no access

#define AP_PRIV_RW_USR_RW   0x1

Priv read/write, usr read/write

#define AP_RO   0x3
#define AP_RW   0x1
#define ATTR_DEVICE_STRONG   0x1
#define ATTR_MEMORY   0x0
#define BA_DEVICE   0x0000000000000441
#define BA_MEMORY   0x0000000000000440
#define DEV_MAP   2
#define EXEC   0x0UL
#define IDENT_MAP   0
#define kpa_to_kva (   x)    (((x) - KERN_PA_BASE) + KERN_VA_BASE)
#define kva_to_kpa (   x)    (((x) - KERN_VA_BASE) + KERN_PA_BASE)
#define LEVEL_OFFSET_MASK (   x)    (LEVEL0_OFFSET_MASK >> (x * LEVEL_OFFSET_BITS))
#define LEVEL_OFFSET_SHIFT (   x)    ((4 - x) * LEVEL_OFFSET_BITS)
#define LIN_MAP   1
#define MEM_ATTRIBUTES_MAP   0x00000000000000ff
#define NOEXEC   0x1UL
#define PAGE_MASK   (PAGE_SIZE - 1)
#define PAGEMAP_LEVEL   3
#define PT_AF_SHIFT   10
#define PT_AP_SHIFT   6
#define PT_ATTR_SHIFT   2
#define PT_ENTRIES   (PAGE_SIZE >> 3)
#define PT_NS_SHIFT   5
#define PT_PXN_SHIFT   53
#define PT_STAGE_1   0
#define PT_STAGE_2   1
#define PT_UXN_SHIFT   54
#define PT_XN_SHIFT   54
#define PTE_TYPE_BLOCK   0x01
#define PTE_TYPE_INVALID   0x00
#define PTE_TYPE_PAGE   0x03
#define PTE_TYPE_TABLE   0x03
#define STATIC_PT_PAGES   32
#define TABLE_ATTR   0x0

Typedef Documentation

typedef unsigned long(* ptp_alloc_t)(void)

Function Documentation

void pt_page_allocator_init ( ptp_alloc_t  ptpa)

Initialize ptable page allocator function.

Parameters
ptp_alloc_t
ptpa
unsigned long static_pt_page_alloc ( void  )

static pool page allocator

Returns