diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-03-31 01:44:49 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-03-31 01:44:49 -0700 |
commit | e554f30be8f77a08c7da2d2678aac640e664cc44 (patch) | |
tree | 406ffba524043d1795eeb7586a312d3290e9d30b /pk/minit.c | |
parent | 91058db5a6a5d72631981b00788bc5c906bf5f14 (diff) | |
download | pk-e554f30be8f77a08c7da2d2678aac640e664cc44.zip pk-e554f30be8f77a08c7da2d2678aac640e664cc44.tar.gz pk-e554f30be8f77a08c7da2d2678aac640e664cc44.tar.bz2 |
Don't rely on mstatus.fs to determine FPU presence
Diffstat (limited to 'pk/minit.c')
-rw-r--r-- | pk/minit.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -49,13 +49,17 @@ static void hart_init() static void fp_init() { -#ifdef __riscv_hard_float kassert(read_csr(mstatus) & MSTATUS_FS); - SET_FCSR(0); + extern int test_fpu_presence(); + +#ifdef __riscv_hard_float + if (!test_fpu_presence()) + panic("FPU not found; recompile pk with -msoft-float"); for (int i = 0; i < 32; i++) init_fp_reg(i); #else - kassert(!(read_csr(mstatus) & MSTATUS_FS)); + if (test_fpu_presence()) + panic("FPU unexpectedly found; recompile pk without -msoft-float"); #endif } |