summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2021-04-10 01:43:24 +0000
committerAda Christine <adachristine18@gmail.com>2021-04-10 01:43:24 +0000
commit3277ef3500a17171d17c23d7f81f9716cf9d3f52 (patch)
tree6943dc993c6696ed4a0dd5877e855319f66a67ed /api
parent95a2b5509e675ca156eeec663daf088f3c48a75a (diff)
physical allocator is now available
Diffstat (limited to 'api')
-rw-r--r--api/kernel/memory/paging.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/api/kernel/memory/paging.h b/api/kernel/memory/paging.h
index 1f4ae47..d3dc541 100644
--- a/api/kernel/memory/paging.h
+++ b/api/kernel/memory/paging.h
@@ -1,20 +1,28 @@
#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_PR (1ULL << 0)
+#define PAGE_WR (1ULL << 1)
+#define PAGE_LG (1ULL << 7)
+#define PAGE_NX (1ULL << 63)
+
+#define PAGE_SIZE 0x1000
+#define PAGE_OFFSET_MASK (PAGE_SIZE - 1)
#define PAGE_ADDRESS_MASK 0x0007fffffffff000
#define PAGE_ATTRIBUTE_MASK 0xf800000000000fff
+#define PAGE_SIZE_LARGE 0x200000
+#define PAGE_OFFSET_MASK_LARGE (PAGE_SIZE_LARGE - 1)
+#define PAGE_ADDRESS_MASK_LARGE 0x0007ffffffe00000
+#define PAGE_ATTRIBUTE_MASK_LARGE 0xf800000000001fff
+
+#define PAGE_SIZE_HUGE 0x40000000
+
#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)
-
+#define page_table_index(v, l) (((uint64_t)v >> page_table_index_bits(l)) & PAGE_TABLE_INDEX_MASK)