Working on separating architecture dependent and independent stuff,
[tpg/acess2.git] / Kernel / arch / x86 / include / mm_virt.h
1 /*
2  * Acess2
3  * - Virtual Memory Manager (Header)
4  */
5 #ifndef _MM_VIRT_H
6 #define _MM_VIRT_H
7
8
9 // - Memory Layout
10 #define MM_USER_MIN     0x00200000
11 #define USER_STACK_SZ   0x00010000
12 #define USER_STACK_TOP  0x00800000
13 #define USER_LIB_MAX    0xBC000000
14 #define MM_USER_MAX     0xBC000000      // Top load address for user libraries
15 #define MM_PPD_MIN      0xBC000000      // Per-Process Data
16 #define MM_PPD_VFS      0xBC000000      // 
17 #define MM_PPD_CFG      0xBFFFF000      // 
18 #define MM_PPD_MAX      0xC0000000      // 
19
20 #define MM_KHEAP_BASE   0xC0400000      // C+4MiB
21 #define MM_KHEAP_MAX    0xCF000000      //
22 #define MM_KERNEL_VFS   0xCF000000      // 
23 #define MM_KUSER_CODE   0xCFFF0000      // 16 Pages
24 #define MM_MODULE_MIN   0xD0000000      // Lowest Module Address
25 #define MM_MODULE_MAX   0xF0000000      // 512 MiB
26
27 // === FUNCTIONS ===
28 extern void     MM_FinishVirtualInit();
29 extern void     MM_SetCR3(Uint CR3);
30 extern tPAddr   MM_Allocate(tVAddr VAddr);
31 extern void     MM_Deallocate(tVAddr VAddr);
32 extern int      MM_Map(tVAddr VAddr, tPAddr PAddr);
33 extern tPAddr   MM_Clone();
34 extern tVAddr   MM_NewKStack();
35 extern tVAddr   MM_NewWorkerStack();
36
37 #endif

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