aboutsummaryrefslogtreecommitdiff
path: root/machine
diff options
context:
space:
mode:
authorGabriel L. Somlo <gsomlo@gmail.com>2019-06-11 10:51:01 -0400
committerGabriel L. Somlo <gsomlo@gmail.com>2019-06-11 10:55:53 -0400
commit9c20a7744f7ad070094af0c1c29346fcfec50829 (patch)
treeb4ebec71f912e2a2359f86e244a950bb54422166 /machine
parentcb253a3f970b373df4390a0e7a17610556f920f3 (diff)
downloadpk-9c20a7744f7ad070094af0c1c29346fcfec50829.zip
pk-9c20a7744f7ad070094af0c1c29346fcfec50829.tar.gz
pk-9c20a7744f7ad070094af0c1c29346fcfec50829.tar.bz2
Check for 'U' extension before accessing 'mcounteren' CSR
On 64-bit Rocket with 'DefaultFPGAConfig' (using 'WithNSmallCores'), the 'U' extension is not supported, and accessing 'mcounteren' would trigger an 'Illegal Instruction' trap. Signed-off-by: Gabriel Somlo <gsomlo@gmail.com>
Diffstat (limited to 'machine')
-rw-r--r--machine/minit.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/machine/minit.c b/machine/minit.c
index bb1ee6e..5ad6d92 100644
--- a/machine/minit.c
+++ b/machine/minit.c
@@ -30,7 +30,8 @@ static void mstatus_init()
// Enable user/supervisor use of perf counters
if (supports_extension('S'))
write_csr(scounteren, -1);
- write_csr(mcounteren, -1);
+ if (supports_extension('U'))
+ write_csr(mcounteren, -1);
// Enable software interrupts
write_csr(mie, MIP_MSIP);