diff options
| author | Prashanth Mundkur | 2018-11-29 09:15:36 -0800 |
|---|---|---|
| committer | Prashanth Mundkur | 2018-11-29 09:18:47 -0800 |
| commit | f33c5d3d237449a58322fe3299b21788707a2555 (patch) | |
| tree | 712b7c2fb18957dcfc336d83bffe7dc3530dead6 /riscv | |
| parent | 33c8a4c616ebc9621c538b89f2d43b7404514f9a (diff) | |
RISC-V: minor cleanup of the spike interface.
Diffstat (limited to 'riscv')
| -rw-r--r-- | riscv/riscv_sim.c | 85 |
1 files changed, 45 insertions, 40 deletions
diff --git a/riscv/riscv_sim.c b/riscv/riscv_sim.c index 0a5fec70..f632a399 100644 --- a/riscv/riscv_sim.c +++ b/riscv/riscv_sim.c @@ -385,56 +385,61 @@ int compare_states(struct tv_spike_t *s) int passed = 1; #ifdef SPIKE +#define TV_CHECK(reg, spike_reg, sail_reg) \ + passed &= tv_check_ ## reg(s, spike_reg, sail_reg); + // fix default C enum map for cur_privilege uint8_t priv = (zcur_privilege == 2) ? 3 : zcur_privilege; passed &= tv_check_priv(s, priv); passed &= tv_check_pc(s, zPC); - passed &= tv_check_gpr(s, 1, zx1); - passed &= tv_check_gpr(s, 2, zx2); - passed &= tv_check_gpr(s, 3, zx3); - passed &= tv_check_gpr(s, 4, zx4); - passed &= tv_check_gpr(s, 5, zx5); - passed &= tv_check_gpr(s, 6, zx6); - passed &= tv_check_gpr(s, 7, zx7); - passed &= tv_check_gpr(s, 8, zx8); - passed &= tv_check_gpr(s, 9, zx9); - passed &= tv_check_gpr(s, 10, zx10); - passed &= tv_check_gpr(s, 11, zx11); - passed &= tv_check_gpr(s, 12, zx12); - passed &= tv_check_gpr(s, 13, zx13); - passed &= tv_check_gpr(s, 14, zx14); - passed &= tv_check_gpr(s, 15, zx15); - passed &= tv_check_gpr(s, 15, zx15); - passed &= tv_check_gpr(s, 16, zx16); - passed &= tv_check_gpr(s, 17, zx17); - passed &= tv_check_gpr(s, 18, zx18); - passed &= tv_check_gpr(s, 19, zx19); - passed &= tv_check_gpr(s, 20, zx20); - passed &= tv_check_gpr(s, 21, zx21); - passed &= tv_check_gpr(s, 22, zx22); - passed &= tv_check_gpr(s, 23, zx23); - passed &= tv_check_gpr(s, 24, zx24); - passed &= tv_check_gpr(s, 25, zx25); - passed &= tv_check_gpr(s, 25, zx25); - passed &= tv_check_gpr(s, 26, zx26); - passed &= tv_check_gpr(s, 27, zx27); - passed &= tv_check_gpr(s, 28, zx28); - passed &= tv_check_gpr(s, 29, zx29); - passed &= tv_check_gpr(s, 30, zx30); - passed &= tv_check_gpr(s, 31, zx31); + TV_CHECK(gpr, 1, zx1); + TV_CHECK(gpr, 2, zx2); + TV_CHECK(gpr, 3, zx3); + TV_CHECK(gpr, 4, zx4); + TV_CHECK(gpr, 5, zx5); + TV_CHECK(gpr, 6, zx6); + TV_CHECK(gpr, 7, zx7); + TV_CHECK(gpr, 8, zx8); + TV_CHECK(gpr, 9, zx9); + TV_CHECK(gpr, 10, zx10); + TV_CHECK(gpr, 11, zx11); + TV_CHECK(gpr, 12, zx12); + TV_CHECK(gpr, 13, zx13); + TV_CHECK(gpr, 14, zx14); + TV_CHECK(gpr, 15, zx15); + TV_CHECK(gpr, 15, zx15); + TV_CHECK(gpr, 16, zx16); + TV_CHECK(gpr, 17, zx17); + TV_CHECK(gpr, 18, zx18); + TV_CHECK(gpr, 19, zx19); + TV_CHECK(gpr, 20, zx20); + TV_CHECK(gpr, 21, zx21); + TV_CHECK(gpr, 22, zx22); + TV_CHECK(gpr, 23, zx23); + TV_CHECK(gpr, 24, zx24); + TV_CHECK(gpr, 25, zx25); + TV_CHECK(gpr, 25, zx25); + TV_CHECK(gpr, 26, zx26); + TV_CHECK(gpr, 27, zx27); + TV_CHECK(gpr, 28, zx28); + TV_CHECK(gpr, 29, zx29); + TV_CHECK(gpr, 30, zx30); + TV_CHECK(gpr, 31, zx31); /* some selected CSRs for now */ - passed &= tv_check_csr(s, CSR_MCAUSE, zmcause.zMcause_chunk_0); - passed &= tv_check_csr(s, CSR_MEPC, zmepc); - passed &= tv_check_csr(s, CSR_MTVAL, zmtval); - passed &= tv_check_csr(s, CSR_MSTATUS, zmstatus); + TV_CHECK(csr, CSR_MCAUSE, zmcause.zMcause_chunk_0); + TV_CHECK(csr, CSR_MEPC, zmepc); + TV_CHECK(csr, CSR_MTVAL, zmtval); + TV_CHECK(csr, CSR_MSTATUS, zmstatus); + + TV_CHECK(csr, CSR_SCAUSE, zscause.zMcause_chunk_0); + TV_CHECK(csr, CSR_SEPC, zsepc); + TV_CHECK(csr, CSR_STVAL, zstval); - passed &= tv_check_csr(s, CSR_SCAUSE, zscause.zMcause_chunk_0); - passed &= tv_check_csr(s, CSR_SEPC, zsepc); - passed &= tv_check_csr(s, CSR_STVAL, zstval); +#undef TV_CHECK #endif return passed; |
