diff options
| -rw-r--r-- | bsp/env/freedom-e300-hifive1/init.c | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/bsp/env/freedom-e300-hifive1/init.c b/bsp/env/freedom-e300-hifive1/init.c index be76f90..343f071 100644 --- a/bsp/env/freedom-e300-hifive1/init.c +++ b/bsp/env/freedom-e300-hifive1/init.c @@ -182,7 +182,10 @@ void _init()    printf("core freq at %d Hz\n", get_cpu_freq());    write_csr(mtvec, &handle_trap); -  write_csr(mstatus, MSTATUS_FS); // enable FPU +  if (read_csr(misa) & (1 << ('F' - 'A'))) { // if F extension is present +    write_csr(mstatus, MSTATUS_FS); // allow FPU instructions without trapping +    write_csr(fcsr, 0); // initialize rounding mode, undefined at reset +  }    _exit(main(0, NULL));  } | 
