aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2016-03-02 21:42:17 -0800
committerAndrew Waterman <waterman@cs.berkeley.edu>2016-03-03 11:03:59 -0800
commit75b207b9c964d409dd3dfc54aca01c4a95cff0ac (patch)
treed479e89ce739b1eb0e35b5ab163777a460abea86
parent6906f6f470765b8165735ed06f864e00e8d9d5ec (diff)
downloadriscv-tests-75b207b9c964d409dd3dfc54aca01c4a95cff0ac.zip
riscv-tests-75b207b9c964d409dd3dfc54aca01c4a95cff0ac.tar.gz
riscv-tests-75b207b9c964d409dd3dfc54aca01c4a95cff0ac.tar.bz2
Fix ma_fetch to work with or without RVC
-rw-r--r--isa/rv64si/ma_fetch.S26
1 files changed, 18 insertions, 8 deletions
diff --git a/isa/rv64si/ma_fetch.S b/isa/rv64si/ma_fetch.S
index 272a9eb..db702d9 100644
--- a/isa/rv64si/ma_fetch.S
+++ b/isa/rv64si/ma_fetch.S
@@ -21,14 +21,21 @@ RVTEST_CODE_BEGIN
#define stvec_handler mtvec_handler
#endif
-#ifndef __rvc
+ .option norvc
+
+ # Without RVC, the jalr should trap, and the handler will skip ahead.
+ # With RVC, the jalr should not trap, and "j fail" should get skipped.
li TESTNUM, 2
li t1, 0
la t0, 1f
jalr t1, t0, 2
1:
+ .option rvc
+ c.j fail
+ c.j 2f
+ .option norvc
j fail
-#endif
+2:
// This test should pass, since JALR ignores the target LSB
li TESTNUM, 3
@@ -39,14 +46,17 @@ RVTEST_CODE_BEGIN
j fail
1:
-#ifndef __rvc
li TESTNUM, 4
li t1, 0
- la t0, 3f
- jr t0, 3
-3:
+ la t0, 1f
+ jalr t1, t0, 3
+1:
+ .option rvc
+ c.j fail
+ c.j 2f
+ .option norvc
j fail
-#endif
+2:
j pass
@@ -74,7 +84,7 @@ stvec_handler:
addi t0, t0, -4
bne t0, a1, fail
- addi a1, a1, 8
+ addi a1, a1, 12
csrw sepc, a1
sret