From 3277ef3500a17171d17c23d7f81f9716cf9d3f52 Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Sat, 10 Apr 2021 01:43:24 +0000 Subject: physical allocator is now available --- api/kernel/memory/paging.h | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'api') 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) -- cgit v1.3.1-1-g115d