Fixed #PF in Memory Manager (mm_virt.h was using KERNEL_BASE as a prefix)
[tpg/acess2.git] / Kernel / arch / x86_64 / include / mm_virt.h
1 /*
2  * Acess2 x86_64 Architecture Code
3  *
4  * This file is published under the terms of the Acess Licence.
5  * See the file COPYING for more details
6  *
7  * vmem.h - Virtual Memory Functions & Definitions
8  */
9 #ifndef _VMEM_H_
10 #define _VMEM_H_
11
12 #include <arch.h>
13
14 // === Memory Location Definitions ===
15 /*
16  * Userland - Lower Half
17  * Kernel land - Upper Half
18  * 
19  *    START ADDRESS          END ADDRESS       BITS   SIZE      NAME
20  * 0x00000000 00000000 - 0x00007FFF FFFFFFFF    47      128 TiB User Space
21  * 0x00008000 00000000 - 0xFFFF7FFF FFFFFFFF    --- SIGN EXTENSION NULL ZONE
22  * 0xFFFF8000 00000000 - 0xFFFFFFFF FFFFFFFF    47      128 TiB Kernel Range
23  *       8000 00000000 -       9000 00000000    44      16  TiB Kernel Heap
24  *       9000 00000000 -       9800 00000000    43      8   TiB Module Space
25  *       9800 00000000 -       9A00 00000000    41      2   TiB Kernel VFS
26  *       A000 00000000 -       B000 00000000    44      16  TiB Kernel Stacks
27  *       C000 00000000 -       D000 00000000    44      16  TiB Hardware Mappings
28  *       D000 00000000 -       D080 00000000    39      512     GiB     Per-Process Data
29  *       D080 00000000 -       D100 00000000    39      512     GiB     Kernel Supplied User Code
30  *       E000 00000000 -       E400 00000000    42      4       TiB     Physical Page Reference Counts (2**40 = 2**52 bytes)
31  *       E400 00000000 -       E480 00000000    39      512     GiB     Physical Page Bitmap (1 page per bit)
32  *       E480 00000000 -       E500 00000000    39      512     GiB     Physical Page DblAlloc Bitmap (1 page per bit)
33  *       E500 00000000 -       E500 80000000    31      2       GiB     Physical Page Super Bitmap (64 pages per bit)
34  *       FD00 00000000 -       FD80 00000000    39      512 GiB Local APIC
35  *       FE00 00000000 -       FE80 00000000    39      512 GiB Fractal Mapping (PML4 508)
36  *       FE80 00000000 -       FF00 00000000    39      512 GiB Temp Fractal Mapping
37  *       FF00 00000000 -       FF80 00000000    39      512 GiB -- UNUSED --
38  *       FF80 00000000 -       FFFF 80000000    ~39             GiB     -- UNUSED --
39  *       FFFF 80000000 -       FFFF 7FFFFFFF    31      2   GiB Identity Map
40  */
41
42 #define MM_USER_MIN     0x00000000##00010000
43 #define USER_LIB_MAX    0x00007000##00000000
44 #define USER_STACK_SZ   0x00000000##00020000    // 64 KiB
45 #define USER_STACK_TOP  0x00007FFF##FFFFF000
46 #define MM_USER_MAX     0x00007FFF##FFFFF000
47 #define MM_KERNEL_RANGE 0xFFFF8000##00000000
48 #define MM_KHEAP_BASE   (MM_KERNEL_RANGE|(0x8000##80000000))
49 #define MM_KHEAP_MAX    (MM_KERNEL_RANGE|(0x9000##00000000))
50 #define MM_MODULE_MIN   (MM_KERNEL_RANGE|(0x9000##00000000))
51 #define MM_MODULE_MAX   (MM_KERNEL_RANGE|(0x9800##00000000))
52 #define MM_KERNEL_VFS   (MM_KERNEL_RANGE|(0x9800##00000000))
53 #define MM_KSTACK_BASE  (MM_KERNEL_RANGE|(0xA000##00000000))
54 #define MM_KSTACK_TOP   (MM_KERNEL_RANGE|(0xB000##00000000))
55
56 #define MM_HWMAP_BASE   (MM_KERNEL_RANGE|(0xC000##00000000))
57 #define MM_HWMAP_TOP    (MM_KERNEL_RANGE|(0xD000##00000000))
58 #define MM_PPD_BASE     (MM_KERNEL_RANGE|(0xD000##00000000))
59 #define MM_PPD_CFG      MM_PPD_BASE
60 #define MM_PPD_VFS      (MM_KERNEL_RANGE|(0xD008##00000000))
61 #define MM_USER_CODE    (MM_KERNEL_RANGE|(0xD080##00000000))
62
63 #define MM_PAGE_COUNTS  (MM_KERNEL_RANGE|(0xE000##00000000))
64 #define MM_PAGE_BITMAP  (MM_KERNEL_RANGE|(0xE400##00000000))
65 #define MM_PAGE_DBLBMP  (MM_KERNEL_RANGE|(0xE480##00000000))
66 #define MM_PAGE_SUPBMP  (MM_KERNEL_RANGE|(0xE500##00000000))
67
68 #define MM_LOCALAPIC    (MM_KERNEL_RANGE|(0xFD00##00000000))
69 #define MM_FRACTAL_BASE (MM_KERNEL_RANGE|(0xFE00##00000000))
70 #define MM_TMPFRAC_BASE (MM_KERNEL_RANGE|(0xFE80##00000000))
71
72
73 // === FUNCTIONS ===
74 void    MM_FinishVirtualInit(void);
75 tVAddr  MM_NewKStack(void);
76 tVAddr  MM_Clone(void);
77 tVAddr  MM_NewWorkerStack(void);
78
79 #endif

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