summaryrefslogtreecommitdiff
path: root/api/kernel/memory/paging.h
blob: 1f4ae476207d60cb09d78b970eb2a87e0714f561 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once

#define PAGE_SIZE 0x1000

#define PAGE_PR (1ULL << 0)
#define PAGE_WR (1ULL << 1)
#define PAGE_NX (1ULL << 63)

#define PAGE_MAP_LEVELS 4
#define PAGE_MAP_BITS 9
#define PAGE_OFFSET_BITS 12

#define PAGE_ADDRESS_MASK   0x0007fffffffff000
#define PAGE_ATTRIBUTE_MASK 0xf800000000000fff

#define PAGE_TABLE_INDEX_MASK ((1 << PAGE_MAP_BITS) - 1)

#define page_table_index_bits(l) (PAGE_OFFSET_BITS + PAGE_MAP_BITS * (l - 1))
#define page_table_index(v, l) ((v >> page_table_index_bits(l)) & PAGE_TABLE_INDEX_MASK)