More work on error and interrupt handling (almost got it working)
[tpg/acess2.git] / Kernel / arch / x86_64 / include / mm_virt.h
index 2dd28dd..502be55 100644 (file)
@@ -9,19 +9,59 @@
 #ifndef _VMEM_H_
 #define _VMEM_H_
 
+#include <arch.h>
+
 // === Memory Location Definitions ===
 /*
  * Userland - Lower Half
  * Kernel land - Upper Half
  * 
- * 0xFFFF8000 00000000 - 0xFFFFFFFF FFFFFFFF   2**47   Kernel Range
- *       8000 00000000 -       8000 7FFFFFFF   2 GiB   Identity Map
- *       8000 80000000 -       8001 00000000   2 GiB   Kernel Heap
- *       9000 00000000 0       9800 00000000   cbf     Module Space
+ *    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 -       8000 7FFFFFFF   31      2   GiB Identity Map
+ *       8000 80000000 -       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
+ *       D000 00000000 -       E000 00000000   44      16  TiB Hardware Mappings
+ *       E000 00000000 -       E080 00000000   39      512     GiB     Per-Process Data
+ *       E080 00000000 -       E100 00000000   39      512     GiB     Kernel Supplied User Code
+ *       FE00 00000000 -       FE80 00000000   39      512 GiB Fractal Mapping (PML4 510)
+ *       FE80 00000000 -       FF00 00000000   39      512 GiB Temp Fractal Mapping
  */
 
-#define        KERNEL_BASE     0xFFF8000##00000000
-#define MM_KHEAP_BASE  (KERNEL_BASE|0x80000000)
-#define MM_KHEAP_MAX   (KERNEL_BASE|0x1##00000000)
+#define        MM_USER_MIN     0x00000000##00010000
+#define USER_LIB_MAX   0x00008000##00000000
+#define USER_STACK_SZ  0x00000000##00020000    // 64 KiB
+#define USER_STACK_TOP 0x00008FFF##FFFFF000
+#define        MM_USER_MAX     0x00008FFF##FFFFF000
+//#define      KERNEL_BASE     0xFFF8000##00000000
+#define MM_KHEAP_BASE  (KERNEL_BASE|(0x8000##80000000))
+#define MM_KHEAP_MAX   (KERNEL_BASE|(0x8001##00000000))
+#define MM_MODULE_MIN  (KERNEL_BASE|(0x9000##00000000))
+#define MM_MODULE_MAX  (KERNEL_BASE|(0x9800##00000000))
+#define MM_KERNEL_VFS  (KERNEL_BASE|(0x9800##00000000))
+#define MM_KSTACK_BASE (KERNEL_BASE|(0xA000##00000000))
+#define MM_KSTACK_TOP  (KERNEL_BASE|(0xC000##00000000))
+
+#define MM_HWMAP_BASE  (KERNEL_BASE|(0xD000##00000000))
+#define MM_HWMAP_TOP   (KERNEL_BASE|(0xE000##00000000))
+#define MM_PPD_BASE    (KERNEL_BASE|(0xE000##00000000))
+#define MM_PPD_CFG     MM_PPD_BASE
+#define MM_PPD_VFS     (KERNEL_BASE|(0xE008##00000000))
+#define MM_USER_CODE   (KERNEL_BASE|(0xE080##00000000))
+
+#define MM_LOCALAPIC   (KERNEL_BASE|(0xFD00##00000000))
+#define MM_FRACTAL_BASE        (KERNEL_BASE|(0xFE00##00000000))
+#define MM_TMPFRAC_BASE        (KERNEL_BASE|(0xFE80##00000000))
+
+
+// === FUNCTIONS ===
+void   MM_FinishVirtualInit(void);
+tVAddr MM_NewKStack(void);
+tVAddr MM_Clone(void);
+tVAddr MM_NewWorkerStack(void);
 
 #endif

UCC git Repository :: git.ucc.asn.au