main.rs: enable floating point
authorKit Rhett Aultman <kit@kitaultman.com>
Mon, 2 Sep 2024 17:44:02 +0000 (13:44 -0400)
committerKit Rhett Aultman <kit@kitaultman.com>
Mon, 2 Sep 2024 17:44:02 +0000 (13:44 -0400)
The trap frame already handles the floating point registers, but
floating point support was not enabled via the mstatus register.  This
didn't cause an issue on the Ubuntu 22.04 standard version of qemu, but
one built from nightly source will issue an illegal instruction
exception if floating point registers are accessed without the support
being enabled.

This commit fixes the issue by enabling floating point support from
early initialization.

src/main.rs

index d25754e85a2f67071d9f6e60d4e6d79dd6c46869..76f3110573bd69025267601325027f2ecce1f82b 100644 (file)
@@ -104,6 +104,9 @@ extern "C" fn entry() -> ! {
     // we can't use keywords other than const and sym
     unsafe {
         asm!(
+        // Turn on floating point support
+        "li t0, 1 << 13",
+        "csrw mstatus, t0",
         // Establish the stack frame reference in mscratch
         "csrw mscratch, {trap_frame}",
         "lla t2, m_trap_vector",