diff --git a/ostd/src/arch/riscv/mod.rs b/ostd/src/arch/riscv/mod.rs index a030b5649..a6477a782 100644 --- a/ostd/src/arch/riscv/mod.rs +++ b/ostd/src/arch/riscv/mod.rs @@ -64,6 +64,8 @@ pub fn read_random() -> Option { pub(crate) fn enable_cpu_features() { unsafe { - riscv::register::sstatus::set_fs(riscv::register::sstatus::FS::Clean); + // We adopt a lazy approach to enable the floating-point unit; it's not + // enabled before the first FPU trap. + riscv::register::sstatus::set_fs(riscv::register::sstatus::FS::Off); } }