diff options
Diffstat (limited to 'isa')
-rw-r--r-- | isa/rv64si/scall.S | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/isa/rv64si/scall.S b/isa/rv64si/scall.S index 82f202a..77718f2 100644 --- a/isa/rv64si/scall.S +++ b/isa/rv64si/scall.S @@ -19,7 +19,6 @@ RVTEST_CODE_BEGIN #define scause mcause #define sepc mepc #define sret mret - #define stvec_handler mtvec_handler #undef SSTATUS_SPP #define SSTATUS_SPP MSTATUS_MPP #endif @@ -57,6 +56,11 @@ do_scall: TEST_PASSFAIL +# make the linker not find the symbol stvec_handler when running in machine +# mode. env/p/riscv_test.h sets stvec to the address of that symbol in case it +# is non-zero. thus, effectively, we don't register a handler for scalls, so +# that the default handler (trap_vector) is used. +#ifndef __MACHINE_MODE .align 2 .global stvec_handler stvec_handler: @@ -66,6 +70,7 @@ stvec_handler: csrr t0, sepc bne t0, t2, fail j pass +#endif RVTEST_CODE_END |