aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2017-03-27 14:26:09 -0700
committerAndrew Waterman <andrew@sifive.com>2017-03-27 14:27:08 -0700
commit1b78e242657f80250292f39e1f41bad2b1ab9d6c (patch)
tree7c82538e6287459bde7c3f4a70052919cf03cb40
parentf9e8b267a273eb704f6def6f0fa04140d0654d18 (diff)
downloadriscv-tests-1b78e242657f80250292f39e1f41bad2b1ab9d6c.zip
riscv-tests-1b78e242657f80250292f39e1f41bad2b1ab9d6c.tar.gz
riscv-tests-1b78e242657f80250292f39e1f41bad2b1ab9d6c.tar.bz2
Separate page faults from physical memory access exceptions
-rw-r--r--benchmarks/pmp/pmp.c2
m---------env10
-rw-r--r--isa/rv64si/dirty.S2
3 files changed, 7 insertions, 7 deletions
diff --git a/benchmarks/pmp/pmp.c b/benchmarks/pmp/pmp.c
index 07eed8b..055ec79 100644
--- a/benchmarks/pmp/pmp.c
+++ b/benchmarks/pmp/pmp.c
@@ -16,7 +16,7 @@ uintptr_t handle_trap(uintptr_t cause, uintptr_t epc, uintptr_t regs[32])
if (cause == CAUSE_ILLEGAL_INSTRUCTION)
exit(0); // no PMP support
- if (!trap_expected)
+ if (!trap_expected || cause != CAUSE_LOAD_ACCESS)
exit(1);
trap_expected = 0;
return epc + insn_len(epc);
diff --git a/env b/env
-Subproject 3dc64058de56fbac3b793e20707739f0b985303
+Subproject 47fef2b463a484f3dafe979ec4e646990460dec
diff --git a/isa/rv64si/dirty.S b/isa/rv64si/dirty.S
index 06c9780..86e4656 100644
--- a/isa/rv64si/dirty.S
+++ b/isa/rv64si/dirty.S
@@ -58,7 +58,7 @@ RVTEST_CODE_BEGIN
.align 2
stvec_handler:
csrr t0, scause
- add t0, t0, -CAUSE_FAULT_STORE
+ add t0, t0, -CAUSE_STORE_PAGE_FAULT
bnez t0, die
li t1, 2