aboutsummaryrefslogtreecommitdiff
path: root/debug/programs
diff options
context:
space:
mode:
authorMegan Wachs <megan@sifive.com>2017-04-17 11:34:33 -0700
committerMegan Wachs <megan@sifive.com>2017-04-17 11:34:33 -0700
commiteca66b135bbbc4fb804ac49a93fb2bf70f6e739f (patch)
tree9e5b8001bccf0a85a1792ab3479734aadc5f0e57 /debug/programs
parentd76b30df333659baf81b8411c7144378b735062a (diff)
parent3429eb68637ff9e25d678d7e2b5f636ab409543c (diff)
downloadriscv-tests-eca66b135bbbc4fb804ac49a93fb2bf70f6e739f.zip
riscv-tests-eca66b135bbbc4fb804ac49a93fb2bf70f6e739f.tar.gz
riscv-tests-eca66b135bbbc4fb804ac49a93fb2bf70f6e739f.tar.bz2
Merge remote-tracking branch 'origin/newprogram' into debug-0.13
Diffstat (limited to 'debug/programs')
-rwxr-xr-xdebug/programs/entry.S15
-rw-r--r--debug/programs/mprv.S4
2 files changed, 17 insertions, 2 deletions
diff --git a/debug/programs/entry.S b/debug/programs/entry.S
index e021860..c9e319c 100755
--- a/debug/programs/entry.S
+++ b/debug/programs/entry.S
@@ -30,8 +30,23 @@ handle_reset:
la t0, trap_entry
csrw mtvec, t0
csrwi mstatus, 0
+
+ // make sure these registers exist by seeing if either S or U bits
+ // are set before attempting to zero them out.
+ csrr t1, misa
+ addi t2, x0, 1
+ slli t2, t2, 20 // U_EXTENSION
+ and t2, t1, t2
+ bne x0, t2, 1f
+ addi t2, x0, 1
+ slli t2, t2, 18 // S_EXTENSION
+ and t2, t1, t2
+ bne x0, t2, 1f
+ j 2f
+1:
csrwi mideleg, 0
csrwi medeleg, 0
+2:
csrwi mie, 0
# initialize global pointer
diff --git a/debug/programs/mprv.S b/debug/programs/mprv.S
index 574f32e..cc1ca54 100644
--- a/debug/programs/mprv.S
+++ b/debug/programs/mprv.S
@@ -13,9 +13,9 @@ main:
# update mstatus
csrr t1, CSR_MSTATUS
#if XLEN == 32
- li t0, (MSTATUS_MPRV | (VM_SV32 << 24))
+ li t0, (MSTATUS_MPRV | (SPTBR_MODE_SV32 << 24))
#else
- li t0, (MSTATUS_MPRV | (VM_SV39 << 24))
+ li t0, (MSTATUS_MPRV | (SPTBR_MODE_SV39 << 24))
#endif
#li t0, ((VM_SV39 << 24))
or t1, t0, t1