fixes towards risc-v user programs running
[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 # define PTSIZE                   L2PGSIZE
19 #else
20 # define KERNBASE               0x80000000
21 # define KERN_LOAD_ADDR           KERNBASE
22 # define NPTLEVELS                       2
23 # define L1PGSHIFT                 (12+10)
24 # define L1PGSIZE         (1 << L1PGSHIFT)
25 # define L2PGSHIFT                      12
26 # define L2PGSIZE         (1 << L2PGSHIFT)
27 # define PGSHIFT                 L2PGSHIFT
28 # define PTSIZE                   L1PGSIZE
29 #endif
30
31 #define PGSIZE (1 << PGSHIFT)
32
33 #ifndef __ASSEMBLER__
34 typedef unsigned long pte_t;
35 typedef unsigned long pde_t;
36 #endif
37
38 #endif