RISC-V port mostly links now
[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  0xFFFFFF8000000000
7 # define NPTLEVELS                  4
8 # define L1PGSHIFT         (12+9+9+9)
9 # define L1PGSIZE   (1L << L1PGSHIFT)
10 # define L2PGSHIFT           (12+9+9)
11 # define L2PGSIZE   (1L << L2PGSHIFT)
12 # define L3PGSHIFT             (12+9)
13 # define L3PGSIZE   (1L << L3PGSHIFT)
14 # define L4PGSHIFT               (12)
15 # define L4PGSIZE   (1L << L4PGSHIFT)
16 # define PGSHIFT            L4PGSHIFT
17 # define KPGSHIFT           L3PGSHIFT
18 #else
19 # define KERNBASE          0x80000000
20 # define NPTLEVELS                  2
21 # define L1PGSHIFT            (12+10)
22 # define L1PGSIZE    (1 << L1PGSHIFT)
23 # define L2PGSHIFT                 12
24 # define L2PGSIZE    (1 << L2PGSHIFT)
25 # define PGSHIFT            L2PGSHIFT
26 # define KPGSHIFT           L1PGSHIFT
27 #endif
28
29 #define PGSIZE (1 << PGSHIFT)
30 #define KPGSIZE (1 << KPGSHIFT)
31 #define PTSIZE PGSIZE
32
33 #ifndef __ASSEMBLER__
34 typedef unsigned long pte_t;
35 typedef unsigned long pde_t;
36 #endif
37
38 #endif