X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86_64%2Finclude%2Fmm_virt.h;h=6cf25f025e3bbc0e2a4826886e48efe8951988e1;hb=fad68a47fc99c28c0557c06631b95277c8ed9159;hp=3c4240d7dab0f19a40762060d83af0589b66e28f;hpb=a67686f0f79bba5390acf5ee29827d15e7abc4ff;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86_64/include/mm_virt.h b/Kernel/arch/x86_64/include/mm_virt.h index 3c4240d7..6cf25f02 100644 --- a/Kernel/arch/x86_64/include/mm_virt.h +++ b/Kernel/arch/x86_64/include/mm_virt.h @@ -11,6 +11,8 @@ #include +#define PAGE_SIZE 0x1000 + // === Memory Location Definitions === /* * Userland - Lower Half @@ -19,33 +21,38 @@ * START ADDRESS END ADDRESS BITS SIZE NAME * 0x00000000 00000000 - 0x00007FFF FFFFFFFF 47 128 TiB User Space * 0x00008000 00000000 - 0xFFFF7FFF FFFFFFFF --- SIGN EXTENSION NULL ZONE - * 0xFFFF8000 00000000 - 0xFFFFFFFF FFFFFFFF 47 128 TiB Kernel Range - * 8000 00000000 - 9000 00000000 44 16 TiB Kernel Heap - * 9000 00000000 - 9800 00000000 43 8 TiB Module Space - * 9800 00000000 - 9A00 00000000 41 2 TiB Kernel VFS - * A000 00000000 - B000 00000000 44 16 TiB Kernel Stacks - * C000 00000000 - D000 00000000 44 16 TiB Hardware Mappings + * 0xFFFF8000 00000000 - 0xFFFFFFFF FFFFFFFF 47 128 TiB Kernel Range + * 8000 00000000 - 9000 00000000 42 16 TiB Kernel Heap + * 9000 00000000 - 9800 00000000 43 8 TiB Module Space + * 9800 00000000 - 9A00 00000000 41 2 TiB Kernel VFS + * ---- GAP ---- 6 TiB + * A000 00000000 - B000 00000000 44 16 TiB Kernel Stacks + * C000 00000000 - D000 00000000 44 16 TiB Hardware Mappings * D000 00000000 - D080 00000000 39 512 GiB Per-Process Data * D080 00000000 - D100 00000000 39 512 GiB Kernel Supplied User Code - * E000 00000000 - E400 00000000 42 4 TiB Physical Page Reference Counts (2**40 = 2**52 bytes) - * E400 00000000 - E480 00000000 39 512 GiB Physical Page Bitmap (1 page per bit) - * E480 00000000 - E500 00000000 39 512 GiB Physical Page DblAlloc Bitmap (1 page per bit) - * E500 00000000 - E500 80000000 31 2 GiB Physical Page Super Bitmap (64 pages per bit) - * FD00 00000000 - FD80 00000000 39 512 GiB Local APIC - * FE00 00000000 - FE80 00000000 39 512 GiB Fractal Mapping (PML4 508) - * FE80 00000000 - FF00 00000000 39 512 GiB Temp Fractal Mapping - * FF00 00000000 - FF80 00000000 39 512 GiB -- UNUSED -- - * FF80 00000000 - FFFF 80000000 ~39 GiB -- UNUSED -- - * FFFF 80000000 - FFFF 7FFFFFFF 31 2 GiB Identity Map + * ---- GAP ---- 15 TiB + * E000 00000000 - E800 00000000 43 8 TiB Physical Page Nodes (2**40 pages * 8 bytes) + * E800 00000000 - EC00 00000000 42 4 TiB Physical Page Reference Counts (2**40 pg * 4 bytes) + * EC00 00000000 - EC80 00000000 39 512 GiB Physical Page Bitmap (1 page per bit) + * EC80 00000000 - ED00 00000000 39 512 GiB Physical Page DblAlloc Bitmap (1 page per bit) + * ED00 00000000 - ED00 80000000 31 2 GiB Physical Page Super Bitmap (64 pages per bit) + * ---- GAP ---- 9 TiB + * FE00 00000000 - FE80 00000000 39 512 GiB Fractal Mapping (PML4 508) + * FE80 00000000 - FF00 00000000 39 512 GiB Temp Fractal Mapping + * FF00 00000000 - FF80 00000000 39 512 GiB Temporary page mappings + * FF80 00000000 - FF80 80000000 31 2 GiB Local APIC + * ---- GAP ---- 506 GiB + * FFFF 00000000 - FFFF 80000000 31 2 GiB User Code + * FFFF 80000000 - FFFF FFFFFFFF 31 2 GiB Kernel code / data */ #define MM_USER_MIN 0x00000000##00010000 #define USER_LIB_MAX 0x00007000##00000000 +#define USER_STACK_PREALLOC 0x00000000##00002000 // 8 KiB #define USER_STACK_SZ 0x00000000##00020000 // 64 KiB -#define USER_STACK_TOP 0x00007FFF##FFFFF000 -#define MM_USER_MAX 0x00007FFF##FFFFF000 +#define USER_STACK_TOP 0x00008000##00000000 #define MM_KERNEL_RANGE 0xFFFF8000##00000000 -#define MM_KHEAP_BASE (MM_KERNEL_RANGE|(0x8000##80000000)) +#define MM_KHEAP_BASE (MM_KERNEL_RANGE|(0x8000##00000000)) #define MM_KHEAP_MAX (MM_KERNEL_RANGE|(0x9000##00000000)) #define MM_MODULE_MIN (MM_KERNEL_RANGE|(0x9000##00000000)) #define MM_MODULE_MAX (MM_KERNEL_RANGE|(0x9800##00000000)) @@ -57,23 +64,27 @@ #define MM_HWMAP_TOP (MM_KERNEL_RANGE|(0xD000##00000000)) #define MM_PPD_BASE (MM_KERNEL_RANGE|(0xD000##00000000)) #define MM_PPD_CFG MM_PPD_BASE -#define MM_PPD_VFS (MM_KERNEL_RANGE|(0xD008##00000000)) +#define MM_PPD_HANDLES (MM_KERNEL_RANGE|(0xD008##00000000)) #define MM_USER_CODE (MM_KERNEL_RANGE|(0xD080##00000000)) -#define MM_PAGE_COUNTS (MM_KERNEL_RANGE|(0xE000##00000000)) -#define MM_PAGE_BITMAP (MM_KERNEL_RANGE|(0xE400##00000000)) -#define MM_PAGE_DBLBMP (MM_KERNEL_RANGE|(0xE480##00000000)) -#define MM_PAGE_SUPBMP (MM_KERNEL_RANGE|(0xE500##00000000)) +#define MM_PAGE_NODES (MM_KERNEL_RANGE|(0xE000##00000000)) +#define MM_PAGE_COUNTS (MM_KERNEL_RANGE|(0xE800##00000000)) +#define MM_PAGE_BITMAP (MM_KERNEL_RANGE|(0xEC00##00000000)) +#define MM_PAGE_DBLBMP (MM_KERNEL_RANGE|(0xEC00##00000000)) +#define MM_PAGE_SUPBMP (MM_KERNEL_RANGE|(0xED00##00000000)) -#define MM_LOCALAPIC (MM_KERNEL_RANGE|(0xFD00##00000000)) #define MM_FRACTAL_BASE (MM_KERNEL_RANGE|(0xFE00##00000000)) #define MM_TMPFRAC_BASE (MM_KERNEL_RANGE|(0xFE80##00000000)) +#define MM_TMPMAP_BASE (MM_KERNEL_RANGE|(0xFF00##00000000)) +#define MM_TMPMAP_END (MM_KERNEL_RANGE|(0xFF80##00000000)) +#define MM_LOCALAPIC (MM_KERNEL_RANGE|(0xFF80##00000000)) +#define MM_KERNEL_CODE (MM_KERNEL_RANGE|(0xFFFF##80000000)) // === FUNCTIONS === void MM_FinishVirtualInit(void); tVAddr MM_NewKStack(void); tVAddr MM_Clone(void); -tVAddr MM_NewWorkerStack(void); +tVAddr MM_NewWorkerStack(void *StackData, size_t StackSize); #endif