powerpc/64s: Use BRANCH_TO_COMMON() for slb_miss_realmode
authorMichael Ellerman <mpe@ellerman.id.au>
Mon, 19 Jun 2017 11:47:11 +0000 (21:47 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 21 Jun 2017 06:18:24 +0000 (16:18 +1000)
All the callers of slb_miss_realmode currently open code the #ifndef
CONFIG_RELOCATABLE check and the branch via CTR in the RELOCATABLE case.
We have a macro to do this, BRANCH_TO_COMMON(), so use it.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
arch/powerpc/kernel/exceptions-64s.S

index ed8628c6f0f4314a00039eebb1f25449ffd41050..7bdfddbe03285a5f93ddcf1edf503df812843087 100644 (file)
@@ -514,18 +514,7 @@ EXC_REAL_BEGIN(data_access_slb, 0x380, 0x80)
        mfspr   r3,SPRN_DAR
        mfspr   r11,SPRN_SRR1
        crset   4*cr6+eq
-#ifndef CONFIG_RELOCATABLE
-       b       slb_miss_realmode
-#else
-       /*
-        * We can't just use a direct branch to slb_miss_realmode
-        * because the distance from here to there depends on where
-        * the kernel ends up being put.
-        */
-       LOAD_HANDLER(r10, slb_miss_realmode)
-       mtctr   r10
-       bctr
-#endif
+       BRANCH_TO_COMMON(r10, slb_miss_realmode)
 EXC_REAL_END(data_access_slb, 0x380, 0x80)
 
 EXC_VIRT_BEGIN(data_access_slb, 0x4380, 0x80)
@@ -536,18 +525,7 @@ EXC_VIRT_BEGIN(data_access_slb, 0x4380, 0x80)
        mfspr   r3,SPRN_DAR
        mfspr   r11,SPRN_SRR1
        crset   4*cr6+eq
-#ifndef CONFIG_RELOCATABLE
-       b       slb_miss_realmode
-#else
-       /*
-        * We can't just use a direct branch to slb_miss_realmode
-        * because the distance from here to there depends on where
-        * the kernel ends up being put.
-        */
-       LOAD_HANDLER(r10, slb_miss_realmode)
-       mtctr   r10
-       bctr
-#endif
+       BRANCH_TO_COMMON(r10, slb_miss_realmode)
 EXC_VIRT_END(data_access_slb, 0x4380, 0x80)
 TRAMP_KVM_SKIP(PACA_EXSLB, 0x380)
 
@@ -580,13 +558,7 @@ EXC_REAL_BEGIN(instruction_access_slb, 0x480, 0x80)
        mfspr   r3,SPRN_SRR0            /* SRR0 is faulting address */
        mfspr   r11,SPRN_SRR1
        crclr   4*cr6+eq
-#ifndef CONFIG_RELOCATABLE
-       b       slb_miss_realmode
-#else
-       LOAD_HANDLER(r10, slb_miss_realmode)
-       mtctr   r10
-       bctr
-#endif
+       BRANCH_TO_COMMON(r10, slb_miss_realmode)
 EXC_REAL_END(instruction_access_slb, 0x480, 0x80)
 
 EXC_VIRT_BEGIN(instruction_access_slb, 0x4480, 0x80)
@@ -597,13 +569,7 @@ EXC_VIRT_BEGIN(instruction_access_slb, 0x4480, 0x80)
        mfspr   r3,SPRN_SRR0            /* SRR0 is faulting address */
        mfspr   r11,SPRN_SRR1
        crclr   4*cr6+eq
-#ifndef CONFIG_RELOCATABLE
-       b       slb_miss_realmode
-#else
-       LOAD_HANDLER(r10, slb_miss_realmode)
-       mtctr   r10
-       bctr
-#endif
+       BRANCH_TO_COMMON(r10, slb_miss_realmode)
 EXC_VIRT_END(instruction_access_slb, 0x4480, 0x80)
 TRAMP_KVM(PACA_EXSLB, 0x480)