]> git.baikalelectronics.ru Git - kernel.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 May 2023 09:35:53 +0000 (11:35 +0200)
[ Upstream commit 812489ac4dd91144a74ce65ecf232252a2e406fb ]

In commit 5e448e6d3004 ("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: 5e448e6d3004 ("openrisc: use shadow registers to save regs on exception")
Signed-off-by: Stafford Horne <shorne@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/openrisc/kernel/entry.S

index 6b27cf4a0d786a250feb7bbb852c08e80259658e..8db433947d39328f9e5bdb2c9dea477854ee8d3b 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                           ;\