Go to the documentation of this file.
19#ifndef __LIBARCH_ARM64_CONSTANT_H
20#define __LIBARCH_ARM64_CONSTANT_H
45#define L1_DIRSHIFT 30UL
46#define L2_DIRSHIFT 21UL
47#define L3_DIRSHIFT 12UL
48#define DIR_MASK 0x1FFUL
59#define PAGEDIR_MAX 512
60#define PAGEDIR_SIZE (PAGEDIR_MAX * sizeof(u64))
70#define PAGETAB_MAX 256
71#define PAGETAB_SIZE (PAGETAB_MAX * sizeof(u32))
72#define PAGETAB_SPAN (PAGETAB_MAX*PAGESIZE)
75#define PAGEMASK 0x3FFFFFFFFF000UL
78#define L1_BLOCK_MASK 0x3FFFFC0000000UL
79#define L1_BLOCK_SIZE 0x40000000UL
80#define L1_BLOCK_RANGE (L1_BLOCK_SIZE-1)
82#define L2_BLOCK_MASK 0x3FFFFFFE00000UL
83#define L2_BLOCK_SIZE 0x200000UL
84#define L2_BLOCK_RANGE (L2_BLOCK_SIZE-1)
86#define L1_IDX(va) (((va) >> L1_DIRSHIFT) & DIR_MASK)
87#define L2_IDX(va) (((va) >> L2_DIRSHIFT) & DIR_MASK)
88#define L3_IDX(va) (((va) >> L3_DIRSHIFT) & DIR_MASK)
97#define PT_TYPE_MASK 0b11
98#define GET_PT_TYPE(entry) ((entry) & PT_TYPE_MASK)
99#define IS_PT_PAGE_TBL(entry) (GET_PT_TYPE(entry) == PT_PAGE)
100#define IS_PT_BLOCK(entry) (GET_PT_TYPE(entry) == PT_BLOCK)
103#define PT_KERNEL (0<<6)
104#define PT_USER (1<<6)
108#define PT_NX (1UL<<54)
121#define contain_flags(val, flags) (((val)&(flags))==(flags))