aboutsummaryrefslogtreecommitdiff
path: root/machine/minit.c
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2016-06-01 17:01:57 -0700
committerAndrew Waterman <waterman@cs.berkeley.edu>2016-06-01 17:03:26 -0700
commit771c1163d397cd08e1974869f15b2e0c2d394602 (patch)
tree08b5fd8ed054fd7ad42df9f5e176cbc6b49338a9 /machine/minit.c
parentf70ee5576a07d455bdcc5275b7fc9d471090bf64 (diff)
downloadpk-771c1163d397cd08e1974869f15b2e0c2d394602.zip
pk-771c1163d397cd08e1974869f15b2e0c2d394602.tar.gz
pk-771c1163d397cd08e1974869f15b2e0c2d394602.tar.bz2
Clear IPIs using MMIO, not mip CSR
Diffstat (limited to 'machine/minit.c')
-rw-r--r--machine/minit.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/machine/minit.c b/machine/minit.c
index f2bc0cf..609eb3a 100644
--- a/machine/minit.c
+++ b/machine/minit.c
@@ -100,6 +100,10 @@ static void plic_init()
static void hart_plic_init()
{
+ // clear pending interrupts
+ HLS()->ipi = 0;
+ write_csr(mip, 0);
+
if (!plic_ndevs)
return;
@@ -128,6 +132,7 @@ void init_other_hart()
// wait until hart 0 discovers us
while (*(uint64_t * volatile *)&HLS()->timecmp == NULL)
;
+ mb();
hart_plic_init();
boot_other_hart();