diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-07-06 03:23:58 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-07-06 03:23:58 -0700 |
commit | f6eff201069564ea01100d556b079f99e076dd09 (patch) | |
tree | 0b8932b0f1dd3dcf70ec86e972b91b2f97d2e5c0 /machine/unprivileged_memory.h | |
parent | 8b41191ccdf19f08662e2eb674a2eddc717d5108 (diff) | |
download | riscv-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.h | 4 |
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; |