Conditionally expand the skip case if it is specified.

No generated code change.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/include/asm/exception-64s.h | 28 +++++++++---------------
 arch/powerpc/include/asm/head-64.h       |  8 +++----
 arch/powerpc/kernel/exceptions-64s.S     |  2 +-
 3 files changed, 15 insertions(+), 23 deletions(-)

diff --git a/arch/powerpc/include/asm/exception-64s.h 
b/arch/powerpc/include/asm/exception-64s.h
index 74ddcb37156c..737c37d1df4b 100644
--- a/arch/powerpc/include/asm/exception-64s.h
+++ b/arch/powerpc/include/asm/exception-64s.h
@@ -431,26 +431,17 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
        .endif
 .endm
 
-.macro KVM_HANDLER area, hsrr, n
+.macro KVM_HANDLER area, hsrr, n, skip
+       .if \skip
+       cmpwi   r10,KVM_GUEST_MODE_SKIP
+       beq     89f
+       .else
        BEGIN_FTR_SECTION_NESTED(947)
        ld      r10,\area+EX_CFAR(r13)
        std     r10,HSTATE_CFAR(r13)
        END_FTR_SECTION_NESTED(CPU_FTR_CFAR,CPU_FTR_CFAR,947)
-       BEGIN_FTR_SECTION_NESTED(948)
-       ld      r10,\area+EX_PPR(r13)
-       std     r10,HSTATE_PPR(r13)
-       END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,948)
-       ld      r10,\area+EX_R10(r13)
-       std     r12,HSTATE_SCRATCH0(r13)
-       sldi    r12,r9,32
-       ori     r12,r12,(\n)
-       /* This reloads r9 before branching to kvmppc_interrupt */
-       __BRANCH_TO_KVM_EXIT(\area, kvmppc_interrupt)
-.endm
+       .endif
 
-.macro KVM_HANDLER_SKIP area, hsrr, n
-       cmpwi   r10,KVM_GUEST_MODE_SKIP
-       beq     89f
        BEGIN_FTR_SECTION_NESTED(948)
        ld      r10,\area+EX_PPR(r13)
        std     r10,HSTATE_PPR(r13)
@@ -461,6 +452,8 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
        ori     r12,r12,(\n)
        /* This reloads r9 before branching to kvmppc_interrupt */
        __BRANCH_TO_KVM_EXIT(\area, kvmppc_interrupt)
+
+       .if \skip
 89:    mtocrf  0x80,r9
        ld      r9,\area+EX_R9(r13)
        ld      r10,\area+EX_R10(r13)
@@ -469,14 +462,13 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
        .else
        b       kvmppc_skip_interrupt
        .endif
+       .endif
 .endm
 
 #else
 .macro KVMTEST hsrr, n
 .endm
-.macro KVM_HANDLER area, hsrr, n
-.endm
-.macro KVM_HANDLER_SKIP area, hsrr, n
+.macro KVM_HANDLER area, hsrr, n, skip
 .endm
 #endif
 
diff --git a/arch/powerpc/include/asm/head-64.h 
b/arch/powerpc/include/asm/head-64.h
index 4767d6c7b8fa..518d9758b41e 100644
--- a/arch/powerpc/include/asm/head-64.h
+++ b/arch/powerpc/include/asm/head-64.h
@@ -387,22 +387,22 @@ end_##sname:
 
 #define TRAMP_KVM(area, n)                                             \
        TRAMP_KVM_BEGIN(do_kvm_##n);                                    \
-       KVM_HANDLER area, EXC_STD, n
+       KVM_HANDLER area, EXC_STD, n, 0
 
 #define TRAMP_KVM_SKIP(area, n)                                                
\
        TRAMP_KVM_BEGIN(do_kvm_##n);                                    \
-       KVM_HANDLER_SKIP area, EXC_STD, n
+       KVM_HANDLER area, EXC_STD, n, 1
 
 /*
  * HV variant exceptions get the 0x2 bit added to their trap number.
  */
 #define TRAMP_KVM_HV(area, n)                                          \
        TRAMP_KVM_BEGIN(do_kvm_H##n);                                   \
-       KVM_HANDLER area, EXC_HV, n + 0x2
+       KVM_HANDLER area, EXC_HV, n + 0x2, 0
 
 #define TRAMP_KVM_HV_SKIP(area, n)                                     \
        TRAMP_KVM_BEGIN(do_kvm_H##n);                                   \
-       KVM_HANDLER_SKIP area, EXC_HV, n + 0x2
+       KVM_HANDLER area, EXC_HV, n + 0x2, 1
 
 #define EXC_COMMON(name, realvec, hdlr)                                        
\
        EXC_COMMON_BEGIN(name);                                         \
diff --git a/arch/powerpc/kernel/exceptions-64s.S 
b/arch/powerpc/kernel/exceptions-64s.S
index 91350b3dedde..8680cd7da550 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -1063,7 +1063,7 @@ TRAMP_KVM_BEGIN(do_kvm_0xc00)
        SET_SCRATCH0(r10)
        std     r9,PACA_EXGEN+EX_R9(r13)
        mfcr    r9
-       KVM_HANDLER PACA_EXGEN, EXC_STD, 0xc00
+       KVM_HANDLER PACA_EXGEN, EXC_STD, 0xc00, 0
 #endif
 
 
-- 
2.20.1

Reply via email to