#ifndef ARCH_H__ #define ARCH_H__ #include #ifdef __riscv_e #define NR_REGS 16 #else #define NR_REGS 32 #endif struct Context { //The order of these members should match trap.S, pay attention to pdir. uintptr_t gpr[NR_REGS]; uintptr_t mcause; uintptr_t mstatus; uintptr_t mepc; void *pdir; }; #ifdef __riscv_e #define GPR1 gpr[15] // a5 #else #define GPR1 gpr[17] // a7 #endif #define GPR2 gpr[10] //a0 #define GPR3 gpr[11] //a1 #define GPR4 gpr[12] //a2 #define GPRx gpr[10] //a0, return value #endif