diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-03-14 02:06:21 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-03-14 02:06:21 -0700 |
commit | 40668501fa8d52054f5678db4e6dd32b5ed7fe15 (patch) | |
tree | 3e3815cca73f9afd872e251e4ab206f3badcf425 /pk/minit.c | |
parent | 438823e1308b219aa7daf11cf86e3028e9b8667d (diff) | |
download | pk-40668501fa8d52054f5678db4e6dd32b5ed7fe15.zip pk-40668501fa8d52054f5678db4e6dd32b5ed7fe15.tar.gz pk-40668501fa8d52054f5678db4e6dd32b5ed7fe15.tar.bz2 |
Fix some bugs in FP emulation
Diffstat (limited to 'pk/minit.c')
-rw-r--r-- | pk/minit.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -47,6 +47,18 @@ static void hart_init() panic("TODO: SMP support"); } +static void fp_init() +{ +#ifdef __riscv_hard_float + kassert(read_csr(mstatus) & MSTATUS_FS); + SET_FCSR(0); + for (int i = 0; i < 32; i++) + init_fp_reg(i); +#else + kassert(!(read_csr(mstatus) & MSTATUS_FS)); +#endif +} + void machine_init() { file_init(); @@ -57,6 +69,7 @@ void machine_init() mstatus_init(); memory_init(); hart_init(); + fp_init(); vm_init(); boot_loader(args); } |