diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-07-05 11:16:58 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-07-05 11:16:58 -0700 |
commit | 8b41191ccdf19f08662e2eb674a2eddc717d5108 (patch) | |
tree | 7795aa0f8801e76573990a220baf12ad8ffaef4b /machine/minit.c | |
parent | 1e62fdfce7b0095a57e4672c6c5fa4d3efb33d2a (diff) | |
download | pk-8b41191ccdf19f08662e2eb674a2eddc717d5108.zip pk-8b41191ccdf19f08662e2eb674a2eddc717d5108.tar.gz pk-8b41191ccdf19f08662e2eb674a2eddc717d5108.tar.bz2 |
Initialize timecmp; add PRCI test
Diffstat (limited to 'machine/minit.c')
-rw-r--r-- | machine/minit.c | 15 |
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(); } |