sw: Move the exception message out of rodata

Per offline discussion as well as
https://spacebeaker-review.googlesource.com/c/shodan/sw/vec/+/8841/comments/e8cdd665_0d2807c6,
move the string to be embedded as immediate data.

Change-Id: Idd427a1ddf735b7b47e2aa6b265fedd9b1585379
diff --git a/springbok/crt0.S b/springbok/crt0.S
index f9e46f6..d4ce006 100644
--- a/springbok/crt0.S
+++ b/springbok/crt0.S
@@ -246,13 +246,27 @@
 
 .weak exception_handler
 exception_handler:
-        li   t4, 0 # ERROR logging level
-        la   a0, exception_msg
-        csrr t5, mcause
-        .word 0x001E50EFB # simprint t4, a0, t5 (encoded as custom3<func3=0>)
+        # Exception occurred
+        li   t0, 0x65637845 # "Exce"
+        li   t1, 0x6f697470 # "ptio"
+        li   t2, 0x636f206e # "n oc"
+        li   t3, 0x72727563 # "curr"
+        li   t4, 0x00006465 # "ed\0\0"
+        addi sp, sp, -20
+        sw   t0, 0(sp)
+        sw   t1, 4(sp)
+        sw   t2, 8(sp)
+        sw   t3, 12(sp)
+        sw   t4, 16(sp)
+        csrr a0, mcause
+        li   t6, 0 # ERROR logging level
+        .word 0x00A10FFB # simprint t6, sp, a0 (encoded as custom3<func3=0>)
+        addi sp, sp, 20
+        # Store mcause as the reture value
+        mv   s0, a0
         call print_csrs
-        # Store the return value as mcause to be used in _finish
-        mv   a0, t5
+        # Restore the return value to be used in _finish
+        mv   a0, s0
         # Clear the stack
         la   sp, _stack_ptr
         j _finish
@@ -260,7 +274,3 @@
 .weak print_csrs
 print_csrs:
         mret
-
-.section ".rodata","a",@progbits
-exception_msg:
-        .string "Exception occurred\0"