aboutsummaryrefslogtreecommitdiff
path: root/machine/minit.c
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2021-05-18 18:33:26 -0700
committerAndrew Waterman <andrew@sifive.com>2021-05-18 18:33:26 -0700
commit09521e8550750172e7f137d1ed2845c95eefc0b6 (patch)
tree46bce4a42fd15238769d3d200609645f5948780c /machine/minit.c
parente8e6b3aaee44d43b48164fbd377864c3a682dbd3 (diff)
downloadpk-09521e8550750172e7f137d1ed2845c95eefc0b6.zip
pk-09521e8550750172e7f137d1ed2845c95eefc0b6.tar.gz
pk-09521e8550750172e7f137d1ed2845c95eefc0b6.tar.bz2
Add 2-stage translation (for debugging purposes only)remap
Diffstat (limited to 'machine/minit.c')
-rw-r--r--machine/minit.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/machine/minit.c b/machine/minit.c
index c519926..59df32b 100644
--- a/machine/minit.c
+++ b/machine/minit.c
@@ -66,8 +66,14 @@ static void delegate_traps()
write_csr(mideleg, interrupts);
write_csr(medeleg, exceptions);
- assert(read_csr(mideleg) == interrupts);
+ assert((~read_csr(mideleg) & interrupts) == 0);
assert(read_csr(medeleg) == exceptions);
+
+ uintptr_t hypervisor_exceptions =
+ (1U << CAUSE_FETCH_GUEST_PAGE_FAULT) |
+ (1U << CAUSE_LOAD_GUEST_PAGE_FAULT) |
+ (1U << CAUSE_STORE_GUEST_PAGE_FAULT);
+ set_csr(medeleg, hypervisor_exceptions);
}
static void fp_init()