aboutsummaryrefslogtreecommitdiff
path: root/machine/minit.c
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2016-07-05 11:16:58 -0700
committerAndrew Waterman <waterman@cs.berkeley.edu>2016-07-05 11:16:58 -0700
commit8b41191ccdf19f08662e2eb674a2eddc717d5108 (patch)
tree7795aa0f8801e76573990a220baf12ad8ffaef4b /machine/minit.c
parent1e62fdfce7b0095a57e4672c6c5fa4d3efb33d2a (diff)
downloadriscv-pk-8b41191ccdf19f08662e2eb674a2eddc717d5108.zip
riscv-pk-8b41191ccdf19f08662e2eb674a2eddc717d5108.tar.gz
riscv-pk-8b41191ccdf19f08662e2eb674a2eddc717d5108.tar.bz2
Initialize timecmp; add PRCI test
Diffstat (limited to 'machine/minit.c')
-rw-r--r--machine/minit.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/machine/minit.c b/machine/minit.c
index f01e579..4a1ddc6 100644
--- a/machine/minit.c
+++ b/machine/minit.c
@@ -98,10 +98,24 @@ static void plic_init()
plic_priorities[i] = 1;
}
+static void prci_test()
+{
+ assert(!(read_csr(mip) & MIP_MSIP));
+ *HLS()->ipi = 1;
+ assert(read_csr(mip) & MIP_MSIP);
+ *HLS()->ipi = 0;
+
+ assert(!(read_csr(mip) & MIP_MTIP));
+ *HLS()->timecmp = 0;
+ assert(read_csr(mip) & MIP_MTIP);
+ *HLS()->timecmp = -1ULL;
+}
+
static void hart_plic_init()
{
// clear pending interrupts
*HLS()->ipi = 0;
+ *HLS()->timecmp = -1ULL;
write_csr(mip, 0);
if (!plic_ndevs)
@@ -121,6 +135,7 @@ void init_first_hart()
parse_config_string();
plic_init();
hart_plic_init();
+ //prci_test();
memory_init();
boot_loader();
}