openrisc: Properly store r31 to pt_regs on unhandled exceptions
authorStafford Horne <shorne@gmail.com>
Sat, 11 Feb 2023 10:14:06 +0000 (19:14 +0900)
committerStafford Horne <shorne@gmail.com>
Wed, 26 Apr 2023 14:08:06 +0000 (15:08 +0100)
In commit 91993c8c2ed5 ("openrisc: use shadow registers to save regs on
exception") the unhandled exception path was changed to do an early
store of r30 instead of r31.  The entry code was not updated and r31 is
not getting stored to pt_regs.

This patch updates the entry handler to store r31 instead of r30.  We
also remove some misleading commented out store r30 and r31
instructrions.

I noticed this while working on adding floating point exception
handling,  This issue probably would never impact anything since we kill
the process or Oops right away on unhandled exceptions.

Fixes: 91993c8c2ed5 ("openrisc: use shadow registers to save regs on exception")
Signed-off-by: Stafford Horne <shorne@gmail.com>
arch/openrisc/kernel/entry.S

index 54a87bb..a130c4d 100644 (file)
@@ -173,7 +173,6 @@ handler:                                                    ;\
        l.sw    PT_GPR28(r1),r28                                        ;\
        l.sw    PT_GPR29(r1),r29                                        ;\
        /* r30 already save */                                  ;\
-/*        l.sw    PT_GPR30(r1),r30*/                                   ;\
        l.sw    PT_GPR31(r1),r31                                        ;\
        TRACE_IRQS_OFF_ENTRY                                            ;\
        /* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\
@@ -211,9 +210,8 @@ handler:                                                    ;\
        l.sw    PT_GPR27(r1),r27                                        ;\
        l.sw    PT_GPR28(r1),r28                                        ;\
        l.sw    PT_GPR29(r1),r29                                        ;\
-       /* r31 already saved */                                 ;\
-       l.sw    PT_GPR30(r1),r30                                        ;\
-/*        l.sw    PT_GPR31(r1),r31     */                              ;\
+       /* r30 already saved */                                         ;\
+       l.sw    PT_GPR31(r1),r31                                        ;\
        /* Store -1 in orig_gpr11 for non-syscall exceptions */ ;\
        l.addi  r30,r0,-1                                       ;\
        l.sw    PT_ORIG_GPR11(r1),r30                           ;\