powerpc/64s/exception: Add GEN_KVM macro that uses INT_DEFINE parameters
authorNicholas Piggin <npiggin@gmail.com>
Tue, 25 Feb 2020 17:35:12 +0000 (03:35 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 1 Apr 2020 02:42:09 +0000 (13:42 +1100)
No generated code change.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200225173541.1549955-4-npiggin@gmail.com
arch/powerpc/kernel/exceptions-64s.S

index f3f2ec8..da3c22e 100644 (file)
@@ -204,6 +204,7 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
 #define ISET_RI                .L_ISET_RI_\name\()
 #define IEARLY         .L_IEARLY_\name\()
 #define IMASK          .L_IMASK_\name\()
+#define IKVM_SKIP      .L_IKVM_SKIP_\name\()
 #define IKVM_REAL      .L_IKVM_REAL_\name\()
 #define IKVM_VIRT      .L_IKVM_VIRT_\name\()
 #define ISTACK         .L_ISTACK_\name\()
@@ -243,6 +244,9 @@ do_define_int n
        .ifndef IMASK
                IMASK=0
        .endif
+       .ifndef IKVM_SKIP
+               IKVM_SKIP=0
+       .endif
        .ifndef IKVM_REAL
                IKVM_REAL=0
        .endif
@@ -265,6 +269,10 @@ do_define_int n
        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
 /*
@@ -1226,6 +1234,7 @@ INT_DEFINE_BEGIN(data_access)
        IVEC=0x300
        IDAR=1
        IDSISR=1
+       IKVM_SKIP=1
        IKVM_REAL=1
 INT_DEFINE_END(data_access)
 
@@ -1235,7 +1244,8 @@ EXC_REAL_END(data_access, 0x300, 0x80)
 EXC_VIRT_BEGIN(data_access, 0x4300, 0x80)
        GEN_INT_ENTRY data_access, virt=1
 EXC_VIRT_END(data_access, 0x4300, 0x80)
-INT_KVM_HANDLER data_access, 0x300, EXC_STD, PACA_EXGEN, 1
+TRAMP_KVM_BEGIN(data_access_kvm)
+       GEN_KVM data_access
 EXC_COMMON_BEGIN(data_access_common)
        GEN_COMMON data_access
        ld      r4,_DAR(r1)