From: acevest Date: Tue, 30 Dec 2025 12:03:13 +0000 (+0800) Subject: 先划一段内核固定映射地址空间 X-Git-Url: http://repos.zhaoyanbai.com/Mou_128.png?a=commitdiff_plain;h=a05a7e893d54b1b55306b1aa700394426551b061;p=kernel.git 先划一段内核固定映射地址空间 --- diff --git a/include/system.h b/include/system.h index 3a58745..439b6b3 100644 --- a/include/system.h +++ b/include/system.h @@ -80,6 +80,9 @@ extern char etext, edata, end; #define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) +// 固定映射区划分出16MB的空间 +#define FIXED_MAP_VADDR_SIZE (16 << 20) + // 定义最大显存为 16MB // 后续内核不映射显存了,以后可以提供映射到用户空间的功能,由用户态程序操作 #define VRAM_VADDR_SIZE (16 << 20) @@ -93,12 +96,16 @@ extern char etext, edata, end; // 把内核线性地址的最高部分留给显存 // 余下的部分为支持映射其它物理内存的空间 -#define MAX_SUPT_PHYMM_SIZE (MAX_SUPT_VADDR_SIZE - VRAM_VADDR_SIZE) +#define MAX_SUPT_PHYMM_SIZE (MAX_SUPT_VADDR_SIZE - VRAM_VADDR_SIZE - FIXED_MAP_VADDR_SIZE) // 算出显存的线性地址 // 之后要将这个地址映射到显存的物理地址 #define VRAM_VADDR_BASE (PAGE_OFFSET + MAX_SUPT_PHYMM_SIZE) + +// 算出固定映射区的线性地址 +#define FIXED_MAP_VADDR_BASE (VRAM_VADDR_BASE + VRAM_VADDR_SIZE) + #define INT_STACK_SIZE PAGE_SIZE enum GDTSelectorIndex {