1 #ifndef __LUNAIX_MM_DEFS_H
2 #define __LUNAIX_MM_DEFS_H
8 Regardless architecture we need to draw the line very carefully, and must
9 take the size of VM into account. In general, we aims to achieve
10 "sufficiently large" of memory for kernel
13 * #768~1022 PTEs of PD (0x00000000c0000000, ~1GiB)
15 In light of upcomming x86_64 support (for Level 4&5 Paging):
16 * #510 entry of PML4 (0x0000ff0000000000, ~512GiB)
17 * #510 entry of PML5 (0x01fe000000000000, ~256TiB)
20 KERNEL_RESIDENT - a high-mem region, kernel should be
21 KSTACK_PAGES - kernel stack, pages allocated to
22 KEXEC_RSVD - page reserved for kernel images
25 #ifdef CONFIG_ARCH_X86_64
26 # define KSTACK_PAGES 4
27 # define KEXEC_RSVD 32
29 # define KSTACK_PAGES 2
30 # define KEXEC_RSVD 16
33 #define KSTACK_SIZE (KSTACK_PAGES * PAGE_SIZE)
35 #define kernel_addr(addr) ((addr) >= KERNEL_RESIDENT || (addr) < USR_EXEC)
37 #define to_kphysical(k_va) ((ptr_t)(k_va) - KERNEL_IMG)
38 #define to_kvirtual(k_pa) ((ptr_t)(k_pa) + KERNEL_IMG)
40 #endif /* __LUNAIX_MM_DEFS_H */