diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-03-02 21:42:17 -0800 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-03-03 11:03:59 -0800 |
commit | 75b207b9c964d409dd3dfc54aca01c4a95cff0ac (patch) | |
tree | d479e89ce739b1eb0e35b5ab163777a460abea86 | |
parent | 6906f6f470765b8165735ed06f864e00e8d9d5ec (diff) | |
download | riscv-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.S | 26 |
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 |