aboutsummaryrefslogtreecommitdiff
path: root/isa
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2021-06-01 23:50:30 -0700
committerAndrew Waterman <andrew@sifive.com>2021-06-01 23:50:30 -0700
commit3e175a094ff15ea28ae173af8f00a36c5ed9d296 (patch)
tree7af5030b72dd1e9f33c0ed802db49d03493a5a43 /isa
parent09cfdaacd9322cf0ac94818d8c852e1f4dc5bc4f (diff)
downloadriscv-tests-3e175a094ff15ea28ae173af8f00a36c5ed9d296.zip
riscv-tests-3e175a094ff15ea28ae173af8f00a36c5ed9d296.tar.gz
riscv-tests-3e175a094ff15ea28ae173af8f00a36c5ed9d296.tar.bz2
Test all four ways of reading a read-only CSR
Diffstat (limited to 'isa')
-rw-r--r--isa/rv64si/csr.S8
1 files changed, 8 insertions, 0 deletions
diff --git a/isa/rv64si/csr.S b/isa/rv64si/csr.S
index daaee6a..9bb4ea5 100644
--- a/isa/rv64si/csr.S
+++ b/isa/rv64si/csr.S
@@ -46,6 +46,14 @@ RVTEST_CODE_BEGIN
#endif
#endif
+ # Make sure reading the cycle counter in four ways doesn't trap.
+#ifdef __MACHINE_MODE
+ TEST_CASE(25, x0, 0, csrrc x0, cycle, x0);
+ TEST_CASE(26, x0, 0, csrrs x0, cycle, x0);
+ TEST_CASE(27, x0, 0, csrrci x0, cycle, 0);
+ TEST_CASE(28, x0, 0, csrrsi x0, cycle, 0);
+#endif
+
TEST_CASE(20, a0, 0, csrw sscratch, zero; csrr a0, sscratch);
TEST_CASE(21, a0, 0, csrrwi a0, sscratch, 0; csrrwi a0, sscratch, 0xF);
TEST_CASE(22, a0, 0x1f, csrrsi x0, sscratch, 0x10; csrr a0, sscratch);