Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/kernel/exceptions-64s.S | 55 +++++++++++++---------------
 1 file changed, 26 insertions(+), 29 deletions(-)

diff --git a/arch/powerpc/kernel/exceptions-64s.S 
b/arch/powerpc/kernel/exceptions-64s.S
index 90514766dc7d..cba99f9a815b 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -266,15 +266,6 @@ do_define_int n
        .endif
 .endm
 
-.macro INT_KVM_HANDLER name, vec, hsrr, area, skip
-       TRAMP_KVM_BEGIN(\name\()_kvm)
-       KVM_HANDLER \vec, \hsrr, \area, \skip
-.endm
-
-.macro GEN_KVM name
-       KVM_HANDLER IVEC, IHSRR, IAREA, IKVM_SKIP
-.endm
-
 #ifdef CONFIG_KVM_BOOK3S_64_HANDLER
 #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
 /*
@@ -293,35 +284,35 @@ do_define_int n
        bne     \name\()_kvm
 .endm
 
-.macro KVM_HANDLER vec, hsrr, area, skip
-       .if \skip
+.macro GEN_KVM name
+       .if IKVM_SKIP
        cmpwi   r10,KVM_GUEST_MODE_SKIP
        beq     89f
        .else
 BEGIN_FTR_SECTION_NESTED(947)
-       ld      r10,\area+EX_CFAR(r13)
+       ld      r10,IAREA+EX_CFAR(r13)
        std     r10,HSTATE_CFAR(r13)
 END_FTR_SECTION_NESTED(CPU_FTR_CFAR,CPU_FTR_CFAR,947)
        .endif
 
 BEGIN_FTR_SECTION_NESTED(948)
-       ld      r10,\area+EX_PPR(r13)
+       ld      r10,IAREA+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)
+       ld      r10,IAREA+EX_R10(r13)
        std     r12,HSTATE_SCRATCH0(r13)
        sldi    r12,r9,32
        /* HSRR variants have the 0x2 bit added to their trap number */
-       .if \hsrr == EXC_HV_OR_STD
+       .if IHSRR == EXC_HV_OR_STD
        BEGIN_FTR_SECTION
-       ori     r12,r12,(\vec + 0x2)
+       ori     r12,r12,(IVEC + 0x2)
        FTR_SECTION_ELSE
-       ori     r12,r12,(\vec)
+       ori     r12,r12,(IVEC)
        ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE | CPU_FTR_ARCH_206)
-       .elseif \hsrr
-       ori     r12,r12,(\vec + 0x2)
+       .elseif IHSRR
+       ori     r12,r12,(IVEC+ 0x2)
        .else
-       ori     r12,r12,(\vec)
+       ori     r12,r12,(IVEC)
        .endif
 
 #ifdef CONFIG_RELOCATABLE
@@ -334,25 +325,25 @@ 
END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,948)
        std     r9,HSTATE_SCRATCH1(r13)
        __LOAD_FAR_HANDLER(r9, kvmppc_interrupt)
        mtctr   r9
-       ld      r9,\area+EX_R9(r13)
+       ld      r9,IAREA+EX_R9(r13)
        bctr
 #else
-       ld      r9,\area+EX_R9(r13)
+       ld      r9,IAREA+EX_R9(r13)
        b       kvmppc_interrupt
 #endif
 
 
-       .if \skip
+       .if IKVM_SKIP
 89:    mtocrf  0x80,r9
-       ld      r9,\area+EX_R9(r13)
-       ld      r10,\area+EX_R10(r13)
-       .if \hsrr == EXC_HV_OR_STD
+       ld      r9,IAREA+EX_R9(r13)
+       ld      r10,IAREA+EX_R10(r13)
+       .if IHSRR == EXC_HV_OR_STD
        BEGIN_FTR_SECTION
        b       kvmppc_skip_Hinterrupt
        FTR_SECTION_ELSE
        b       kvmppc_skip_interrupt
        ALT_FTR_SECTION_END_IFSET(CPU_FTR_HVMODE | CPU_FTR_ARCH_206)
-       .elseif \hsrr
+       .elseif IHSRR
        b       kvmppc_skip_Hinterrupt
        .else
        b       kvmppc_skip_interrupt
@@ -363,7 +354,7 @@ END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,948)
 #else
 .macro KVMTEST name, hsrr, n
 .endm
-.macro KVM_HANDLER name, vec, hsrr, area, skip
+.macro GEN_KVM name
 .endm
 #endif
 
@@ -1627,6 +1618,12 @@ EXC_VIRT_NONE(0x4b00, 0x100)
  * without saving, though xer is not a good idea to use, as hardware may
  * interpret some bits so it may be costly to change them.
  */
+INT_DEFINE_BEGIN(system_call)
+       IVEC=0xc00
+       IKVM_REAL=1
+       IKVM_VIRT=1
+INT_DEFINE_END(system_call)
+
 .macro SYSTEM_CALL virt
 #ifdef CONFIG_KVM_BOOK3S_64_HANDLER
        /*
@@ -1720,7 +1717,7 @@ TRAMP_KVM_BEGIN(system_call_kvm)
        SET_SCRATCH0(r10)
        std     r9,PACA_EXGEN+EX_R9(r13)
        mfcr    r9
-       KVM_HANDLER 0xc00, EXC_STD, PACA_EXGEN, 0
+       GEN_KVM system_call
 #endif
 
 
-- 
2.23.0

Reply via email to