diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-05-19 02:28:59 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-05-19 02:28:59 -0700 |
commit | 80538e49f76fca845e1aa45e6033cd7648975779 (patch) | |
tree | 6980e674fee7c4a10c1a92e34a65ba61caea46b3 | |
parent | f63ce2ad06a4d4e5d35c75fbdeec8b1ab00f3d87 (diff) | |
download | riscv-tests-80538e49f76fca845e1aa45e6033cd7648975779.zip riscv-tests-80538e49f76fca845e1aa45e6033cd7648975779.tar.gz riscv-tests-80538e49f76fca845e1aa45e6033cd7648975779.tar.bz2 |
Add basic WFI test
m--------- | env | 13 | ||||
-rw-r--r-- | isa/rv64mi/Makefrag | 1 | ||||
-rw-r--r-- | isa/rv64mi/wfi.S | 8 | ||||
-rw-r--r-- | isa/rv64si/Makefrag | 1 | ||||
-rw-r--r-- | isa/rv64si/wfi.S | 41 |
5 files changed, 59 insertions, 5 deletions
diff --git a/env b/env -Subproject bb05f5bc5c509e763108f954e23233ba946542e +Subproject dac4ddd40078f31f4c2e766368c237eba84ef68 diff --git a/isa/rv64mi/Makefrag b/isa/rv64mi/Makefrag index 52f6462..b8b1da0 100644 --- a/isa/rv64mi/Makefrag +++ b/isa/rv64mi/Makefrag @@ -10,6 +10,7 @@ rv64mi_sc_tests = \ ma_fetch \ ma_addr \ scall \ + wfi \ sbreak \ timer \ diff --git a/isa/rv64mi/wfi.S b/isa/rv64mi/wfi.S new file mode 100644 index 0000000..bfb130e --- /dev/null +++ b/isa/rv64mi/wfi.S @@ -0,0 +1,8 @@ +# See LICENSE for license details. + +#include "riscv_test.h" +#undef RVTEST_RV64S +#define RVTEST_RV64S RVTEST_RV64M +#define __MACHINE_MODE + +#include "../rv64si/wfi.S" diff --git a/isa/rv64si/Makefrag b/isa/rv64si/Makefrag index f19d840..17596c3 100644 --- a/isa/rv64si/Makefrag +++ b/isa/rv64si/Makefrag @@ -8,6 +8,7 @@ rv64si_sc_tests = \ ma_fetch \ ma_addr \ scall \ + wfi \ sbreak \ timer \ diff --git a/isa/rv64si/wfi.S b/isa/rv64si/wfi.S new file mode 100644 index 0000000..956121a --- /dev/null +++ b/isa/rv64si/wfi.S @@ -0,0 +1,41 @@ +# See LICENSE for license details. + +#***************************************************************************** +# wfi.S +#----------------------------------------------------------------------------- +# +# Test wait-for-interrupt instruction. +# + +#include "riscv_test.h" +#include "test_macros.h" + +RVTEST_RV64S +RVTEST_CODE_BEGIN + +#ifdef __MACHINE_MODE + #define sstatus mstatus + #define sie mie + #define sip mip + #undef MIP_SSIP + #define MIP_SSIP MIP_MSIP +#endif + + # Make sure wfi doesn't stall if an interrupt is pending + csrc sstatus, SSTATUS_IE + csrs sie, MIP_SSIP + csrs sip, MIP_SSIP + wfi + + RVTEST_PASS + + TEST_PASSFAIL + +RVTEST_CODE_END + + .data +RVTEST_DATA_BEGIN + + TEST_DATA + +RVTEST_DATA_END |