3 * ARM7 Virtual Memory Manager Header
8 #define MM_KSTACK_SIZE 0x10000
10 #define MM_USER_MIN 0x00001000
11 #define USER_LIB_MAX 0x70000000
12 #define MM_KSTACK_BASE 0x70000000
13 #define MM_KSTACK_END 0x7F000000
14 #define MM_PPD_HANDLES 0x7F800000
15 #define MM_TABLE1USER 0x7FC00000 // 2 GiB - 4 MiB
16 #define MM_TABLE0USER 0x7FEFE000 // 2 GiB - 2 MiB - 2 pages
18 // Page Blocks are 12-bits wide (12 address bits used)
19 // Hence, the table is 16KiB large (and must be so aligned)
20 // and each block addresses 1MiB of data
22 // First level table is aligned to 16KiB (restriction of TTBR reg)
23 // - VMSAv6 uses two TTBR regs, determined by bit 31
25 //#define KERNEL_BASE 0x80000000 // 2GiB
27 #define MM_KHEAP_BASE 0x80800000 // 8MiB of kernel code
28 #define MM_KHEAP_MAX 0xC0000000 // ~1GiB of kernel heap
30 #define MM_MODULE_MIN 0xC0000000 // - 0xD0000000
31 #define MM_MODULE_MAX 0xCF000000
33 #define MM_GLOBALSTACKS 0xCF000000 // Global stacks
34 #define MM_GLOBALSTACKS_END 0xD0000000
36 // PMM Data, giving it 256MiB is overkill, but it's unused atm
37 #define MM_MAXPHYSPAGE (1024*1024)
38 // 2^(32-12) max pages
39 // 8.125 bytes per page (for bitmap allocation)
41 #define MM_PMM_BASE 0xE0000000
42 #define MM_PMM_END 0xF0000000
44 #define MM_HWMAP_BASE 0xF0000000 // Ent 0xF00
45 #define MM_HWMAP_END 0xFE000000
46 #define MM_TMPMAP_BASE 0xFE000000
47 #define MM_TMPMAP_END 0xFF000000
49 #define MM_KERNEL_VFS 0xFF000000 //
50 #define MM_TABLE1KERN 0xFF800000 // - 0x???????? 4MiB
51 //#define MM_TABLE0KERN 0xFFC00000 // - 0xFFE04000 16KiB