interrupt_exit_user_prepare() and interrupt_exit_kernel_prepare()
get msr as second parameter from ASM. Use it instead of reading
it again.

Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu>
---
 arch/powerpc/kernel/interrupt.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/arch/powerpc/kernel/interrupt.c b/arch/powerpc/kernel/interrupt.c
index d896fc6ed0be..9541328a97b1 100644
--- a/arch/powerpc/kernel/interrupt.c
+++ b/arch/powerpc/kernel/interrupt.c
@@ -231,8 +231,8 @@ static notrace void booke_load_dbcr0(void)
 #endif
 }
 
-static notrace unsigned long __interrupt_exit_user_prepare(struct pt_regs 
*regs, unsigned long ret,
-                                                          bool is_not_scv)
+static notrace unsigned long __interrupt_exit_user_prepare(struct pt_regs 
*regs, unsigned long msr,
+                                                          unsigned long ret, 
bool is_not_scv)
 {
        unsigned long ti_flags;
 
@@ -281,7 +281,7 @@ static notrace unsigned long 
__interrupt_exit_user_prepare(struct pt_regs *regs,
                         * may decide to restore them (to avoid taking an FP
                         * fault).
                         */
-                       if ((regs->msr & mathflags) != mathflags)
+                       if ((msr & mathflags) != mathflags)
                                restore_math(regs);
                }
        }
@@ -297,7 +297,7 @@ static notrace unsigned long 
__interrupt_exit_user_prepare(struct pt_regs *regs,
        }
 
 #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
-       local_paca->tm_scratch = regs->msr;
+       local_paca->tm_scratch = msr;
 #endif
 
        booke_load_dbcr0();
@@ -357,17 +357,17 @@ notrace unsigned long syscall_exit_prepare(unsigned long 
r3,
                ret |= _TIF_RESTOREALL;
        }
 
-       return __interrupt_exit_user_prepare(regs, ret, is_not_scv);
+       return __interrupt_exit_user_prepare(regs, regs->msr, ret, is_not_scv);
 }
 
 notrace unsigned long interrupt_exit_user_prepare(struct pt_regs *regs, 
unsigned long msr)
 {
        if (!IS_ENABLED(CONFIG_BOOKE) && !IS_ENABLED(CONFIG_40x))
-               BUG_ON(!(regs->msr & MSR_RI));
-       BUG_ON(!(regs->msr & MSR_PR));
+               BUG_ON(!(msr & MSR_RI));
+       BUG_ON(!(msr & MSR_PR));
        BUG_ON(arch_irq_disabled_regs(regs));
 
-       return __interrupt_exit_user_prepare(regs, 0, true);
+       return __interrupt_exit_user_prepare(regs, msr, 0, true);
 }
 
 void preempt_schedule_irq(void);
@@ -379,9 +379,9 @@ notrace unsigned long interrupt_exit_kernel_prepare(struct 
pt_regs *regs, unsign
        unsigned long kuap;
 
        if (!IS_ENABLED(CONFIG_BOOKE) && !IS_ENABLED(CONFIG_40x) &&
-           unlikely(!(regs->msr & MSR_RI)))
+           unlikely(!(msr & MSR_RI)))
                unrecoverable_exception(regs);
-       BUG_ON(regs->msr & MSR_PR);
+       BUG_ON(msr & MSR_PR);
        /*
         * CT_WARN_ON comes here via program_check_exception,
         * so avoid recursion.
@@ -400,7 +400,7 @@ notrace unsigned long interrupt_exit_kernel_prepare(struct 
pt_regs *regs, unsign
 
        if (!arch_irq_disabled_regs(regs)) {
                /* Returning to a kernel context with local irqs enabled. */
-               WARN_ON_ONCE(!(regs->msr & MSR_EE));
+               WARN_ON_ONCE(!(msr & MSR_EE));
 again:
                if (IS_ENABLED(CONFIG_PREEMPT)) {
                        /* Return to preemptible kernel context */
@@ -416,14 +416,14 @@ notrace unsigned long 
interrupt_exit_kernel_prepare(struct pt_regs *regs, unsign
                /* Returning to a kernel context with local irqs disabled. */
                __hard_EE_RI_disable();
 #ifdef CONFIG_PPC64
-               if (regs->msr & MSR_EE)
+               if (msr & MSR_EE)
                        local_paca->irq_happened &= ~PACA_IRQ_HARD_DIS;
 #endif
        }
 
 
 #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
-       local_paca->tm_scratch = regs->msr;
+       local_paca->tm_scratch = msr;
 #endif
 
        /*
-- 
2.25.0

Reply via email to