1 # See LICENSE for license details.
3 #*****************************************************************************
5 #-----------------------------------------------------------------------------
7 # Test illegal instruction trap.
10 #include "riscv_test.h"
11 #include "test_macros.h"
24 # Skip the rest of the test if S-mode is not present.
27 li t1, (MSTATUS_MPP & -MSTATUS_MPP) * PRV_S
33 # Test vectored interrupts if they are supported.
34 test_vectored_interrupts:
37 la t0, mtvec_handler + 1
42 csrsi mstatus, MSTATUS_MIE
48 # Delegate supervisor software interrupts so WFI won't stall.
49 csrwi mideleg, MIP_SSIP
50 # Enter supervisor mode.
55 li t1, (MSTATUS_MPP & -MSTATUS_MPP) * PRV_S
60 # Make sure WFI doesn't trap when TW=0.
67 # Make sure WFI does trap when TW=1.
71 # Make sure SFENCE.VMA and sptbr don't trap when TVM=0.
79 # Make sure SFENCE.VMA and sptbr do trap when TVM=1.
86 # Make sure SRET doesn't trap when TSR=0.
98 # Make sure SRET does trap when TSR=1.
109 .global mtvec_handler
111 j synchronous_exception
128 synchronous_exception:
129 li t1, CAUSE_ILLEGAL_INSTRUCTION
134 # Make sure mtval contains either 0 or the instruction word.