aboutsummaryrefslogtreecommitdiff
path: root/machine/unprivileged_memory.h
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2016-07-06 03:23:58 -0700
committerAndrew Waterman <waterman@cs.berkeley.edu>2016-07-06 03:23:58 -0700
commitf6eff201069564ea01100d556b079f99e076dd09 (patch)
tree0b8932b0f1dd3dcf70ec86e972b91b2f97d2e5c0 /machine/unprivileged_memory.h
parent8b41191ccdf19f08662e2eb674a2eddc717d5108 (diff)
downloadriscv-pk-f6eff201069564ea01100d556b079f99e076dd09.zip
riscv-pk-f6eff201069564ea01100d556b079f99e076dd09.tar.gz
riscv-pk-f6eff201069564ea01100d556b079f99e076dd09.tar.bz2
Udpate to new PTE format
Diffstat (limited to 'machine/unprivileged_memory.h')
-rw-r--r--machine/unprivileged_memory.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/machine/unprivileged_memory.h b/machine/unprivileged_memory.h
index d03cc5e..7ed9e7c 100644
--- a/machine/unprivileged_memory.h
+++ b/machine/unprivileged_memory.h
@@ -57,7 +57,7 @@ static uint32_t __attribute__((always_inline)) get_insn(uintptr_t mepc, uintptr_
"lw %[insn], (%[addr])\n"
"csrw mstatus, %[mstatus]"
: [mstatus] "+&r" (__mstatus), [insn] "=&r" (val)
- : [mprv] "r" (MSTATUS_MPRV), [addr] "r" (__mepc));
+ : [mprv] "r" (MSTATUS_MPRV | MSTATUS_MXR), [addr] "r" (__mepc));
#else
uintptr_t rvc_mask = 3, tmp;
asm ("csrrs %[mstatus], mstatus, %[mprv]\n"
@@ -69,7 +69,7 @@ static uint32_t __attribute__((always_inline)) get_insn(uintptr_t mepc, uintptr_
"add %[insn], %[insn], %[tmp]\n"
"1: csrw mstatus, %[mstatus]"
: [mstatus] "+&r" (__mstatus), [insn] "=&r" (val), [tmp] "=&r" (tmp)
- : [mprv] "r" (MSTATUS_MPRV), [addr] "r" (__mepc),
+ : [mprv] "r" (MSTATUS_MPRV | MSTATUS_MXR), [addr] "r" (__mepc),
[rvc_mask] "r" (rvc_mask));
#endif
*mstatus = __mstatus;