new 64b kernel memory map (not userspace yet)
[akaros.git] / kern / arch / riscv / ros / mmu.h
1 #ifndef ROS_INC_MMU_H
2 #define ROS_INC_MMU_H
3
4 // All physical memory mapped at this address
5 #ifdef __riscv64
6 # define KERNBASE       0xFFFF800000000000
7 # define KERN_LOAD_ADDR 0xFFFFFFFF80000000
8 # define NPTLEVELS                       4
9 # define L1PGSHIFT              (12+9+9+9)
10 # define L1PGSIZE        (1L << L1PGSHIFT)
11 # define L2PGSHIFT                (12+9+9)
12 # define L2PGSIZE        (1L << L2PGSHIFT)
13 # define L3PGSHIFT                  (12+9)
14 # define L3PGSIZE        (1L << L3PGSHIFT)
15 # define L4PGSHIFT                    (12)
16 # define L4PGSIZE        (1L << L4PGSHIFT)
17 # define PGSHIFT                 L4PGSHIFT
18 #else
19 # define KERNBASE               0x80000000
20 # define KERN_LOAD_ADDR           KERNBASE
21 # define NPTLEVELS                       2
22 # define L1PGSHIFT                 (12+10)
23 # define L1PGSIZE         (1 << L1PGSHIFT)
24 # define L2PGSHIFT                      12
25 # define L2PGSIZE         (1 << L2PGSHIFT)
26 # define PGSHIFT                 L2PGSHIFT
27 #endif
28
29 #define PGSIZE (1 << PGSHIFT)
30 #define PTSIZE PGSIZE
31
32 #ifndef __ASSEMBLER__
33 typedef unsigned long pte_t;
34 typedef unsigned long pde_t;
35 #endif
36
37 #endif