powerpc/vdso: Merge __kernel_sync_dicache_p5() into __kernel_sync_dicache()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Sun, 27 Sep 2020 09:16:35 +0000 (09:16 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 3 Dec 2020 14:01:17 +0000 (01:01 +1100)
__kernel_sync_dicache_p5() is an alternative to
__kernel_sync_dicache() when cpu has CPU_FTR_COHERENT_ICACHE

Remove this alternative function and merge
__kernel_sync_dicache_p5() into __kernel_sync_dicache() using
standard CPU feature fixup.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/4c7dcc6544882761b2b0249d7a8ec2c3a8088cb5.1601197618.git.christophe.leroy@csgroup.eu
arch/powerpc/kernel/vdso.c
arch/powerpc/kernel/vdso32/cacheflush.S
arch/powerpc/kernel/vdso32/vdso32.lds.S
arch/powerpc/kernel/vdso64/cacheflush.S
arch/powerpc/kernel/vdso64/vdso64.lds.S

index 2744920..f110b58 100644 (file)
@@ -87,10 +87,6 @@ struct vdso_patch_def
  * with a coherent icache
  */
 static struct vdso_patch_def vdso_patches[] = {
-       {
-               CPU_FTR_COHERENT_ICACHE, CPU_FTR_COHERENT_ICACHE,
-               "__kernel_sync_dicache", "__kernel_sync_dicache_p5"
-       },
 };
 
 /*
index 017843b..f340e82 100644 (file)
  */
 V_FUNCTION_BEGIN(__kernel_sync_dicache)
   .cfi_startproc
+BEGIN_FTR_SECTION
+       b       3f
+END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE)
 #ifdef CONFIG_PPC64
        mflr    r12
   .cfi_register lr,r12
        get_datapage    r10
        mtlr    r12
+  .cfi_restore lr
 #endif
 
 #ifdef CONFIG_PPC64
@@ -84,20 +88,11 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache)
        isync
        li      r3,0
        blr
-  .cfi_endproc
-V_FUNCTION_END(__kernel_sync_dicache)
-
-
-/*
- * POWER5 version of __kernel_sync_dicache
- */
-V_FUNCTION_BEGIN(__kernel_sync_dicache_p5)
-  .cfi_startproc
+3:
        crclr   cr0*4+so
        sync
        isync
        li      r3,0
        blr
   .cfi_endproc
-V_FUNCTION_END(__kernel_sync_dicache_p5)
-
+V_FUNCTION_END(__kernel_sync_dicache)
index dc62772..18b10d1 100644 (file)
@@ -162,7 +162,6 @@ VERSION
                __kernel_time;
                __kernel_get_tbfreq;
                __kernel_sync_dicache;
-               __kernel_sync_dicache_p5;
                __kernel_sigtramp32;
                __kernel_sigtramp_rt32;
 #if defined(CONFIG_PPC64) || !defined(CONFIG_SMP)
index 61985de..76c3c8c 100644 (file)
  */
 V_FUNCTION_BEGIN(__kernel_sync_dicache)
   .cfi_startproc
+BEGIN_FTR_SECTION
+       b       3f
+END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_ICACHE)
        mflr    r12
   .cfi_register lr,r12
        get_datapage    r10
        mtlr    r12
+  .cfi_restore lr
 
        lwz     r7,CFG_DCACHE_BLOCKSZ(r10)
        addi    r5,r7,-1
@@ -61,19 +65,11 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache)
        isync
        li      r3,0
        blr
-  .cfi_endproc
-V_FUNCTION_END(__kernel_sync_dicache)
-
-
-/*
- * POWER5 version of __kernel_sync_dicache
- */
-V_FUNCTION_BEGIN(__kernel_sync_dicache_p5)
-  .cfi_startproc
+3:
        crclr   cr0*4+so
        sync
        isync
        li      r3,0
        blr
   .cfi_endproc
-V_FUNCTION_END(__kernel_sync_dicache_p5)
+V_FUNCTION_END(__kernel_sync_dicache)
index 913d34e..21aec13 100644 (file)
@@ -159,7 +159,6 @@ VERSION
                __kernel_clock_getres;
                __kernel_get_tbfreq;
                __kernel_sync_dicache;
-               __kernel_sync_dicache_p5;
                __kernel_sigtramp_rt64;
                __kernel_getcpu;
                __kernel_time;