diff options
Diffstat (limited to 'v')
-rw-r--r-- | v/entry.S | 2 | ||||
-rw-r--r-- | v/riscv_test.h | 6 | ||||
-rw-r--r-- | v/vm.c | 4 |
3 files changed, 4 insertions, 8 deletions
@@ -1,6 +1,6 @@ #include "riscv_test.h" -#ifdef __riscv64 +#if __riscv_xlen == 64 # define STORE sd # define LOAD ld # define REGBYTES 8 diff --git a/v/riscv_test.h b/v/riscv_test.h index 0dd3a1f..8ca9ffd 100644 --- a/v/riscv_test.h +++ b/v/riscv_test.h @@ -46,11 +46,7 @@ userstart: \ #define PGSHIFT 12 #define PGSIZE (1UL << PGSHIFT) -#ifdef __riscv64 -# define SIZEOF_TRAPFRAME_T 288 -#else -# define SIZEOF_TRAPFRAME_T 144 -#endif +#define SIZEOF_TRAPFRAME_T ((__riscv_xlen / 8) * 36) #ifndef __ASSEMBLER__ @@ -62,7 +62,7 @@ void wtf() #define l1pt pt[0] #define user_l2pt pt[1] #define kernel_l2pt pt[2] -#ifdef __riscv64 +#if __riscv_xlen == 64 # define NPT 5 # define user_l3pt pt[3] # define kernel_l3pt pt[4] @@ -204,7 +204,7 @@ void vm_boot(uintptr_t test_addr) l1pt[PTES_PER_PT-1] = ((pte_t)kernel_l2pt >> PGSHIFT << PTE_PPN_SHIFT) | PTE_V; // map user to lowermost megapage l1pt[0] = ((pte_t)user_l2pt >> PGSHIFT << PTE_PPN_SHIFT) | PTE_V; -#ifdef __riscv64 +#if __riscv_xlen == 64 kernel_l2pt[PTES_PER_PT-1] = ((pte_t)kernel_l3pt >> PGSHIFT << PTE_PPN_SHIFT) | PTE_V; user_l2pt[0] = ((pte_t)user_l3pt >> PGSHIFT << PTE_PPN_SHIFT) | PTE_V; #endif |