Various optimisations by inverting branches and removing
redundant instructions.

Signed-off-by: Christophe Leroy <christophe.le...@c-s.fr>
---
 arch/powerpc/kernel/vdso32/datapage.S     |  3 +--
 arch/powerpc/kernel/vdso32/getcpu.S       |  6 +++---
 arch/powerpc/kernel/vdso32/gettimeofday.S | 18 +++++++++---------
 3 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/arch/powerpc/kernel/vdso32/datapage.S 
b/arch/powerpc/kernel/vdso32/datapage.S
index d480d2d4a3fe..436b88c455d1 100644
--- a/arch/powerpc/kernel/vdso32/datapage.S
+++ b/arch/powerpc/kernel/vdso32/datapage.S
@@ -31,11 +31,10 @@ V_FUNCTION_BEGIN(__kernel_get_syscall_map)
   .cfi_startproc
        mflr    r12
   .cfi_register lr,r12
-       mr      r4,r3
+       mr.     r4,r3
        get_datapage    r3, r0
        mtlr    r12
        addi    r3,r3,CFG_SYSCALL_MAP32
-       cmpli   cr0,r4,0
        beqlr
        li      r0,NR_syscalls
        stw     r0,0(r4)
diff --git a/arch/powerpc/kernel/vdso32/getcpu.S 
b/arch/powerpc/kernel/vdso32/getcpu.S
index bde226ad904d..ac1faa8a2bfd 100644
--- a/arch/powerpc/kernel/vdso32/getcpu.S
+++ b/arch/powerpc/kernel/vdso32/getcpu.S
@@ -31,10 +31,10 @@ V_FUNCTION_BEGIN(__kernel_getcpu)
        rlwinm  r7,r5,16,31-15,31-0
        beq     cr0,1f
        stw     r6,0(r3)
-1:     beq     cr1,2f
-       stw     r7,0(r4)
-2:     crclr   cr0*4+so
+1:     crclr   cr0*4+so
        li      r3,0                    /* always success */
+       beqlr   cr1
+       stw     r7,0(r4)
        blr
   .cfi_endproc
 V_FUNCTION_END(__kernel_getcpu)
diff --git a/arch/powerpc/kernel/vdso32/gettimeofday.S 
b/arch/powerpc/kernel/vdso32/gettimeofday.S
index c65f41c612f7..47aa44ab8bbb 100644
--- a/arch/powerpc/kernel/vdso32/gettimeofday.S
+++ b/arch/powerpc/kernel/vdso32/gettimeofday.S
@@ -35,10 +35,9 @@ V_FUNCTION_BEGIN(__kernel_gettimeofday)
        mflr    r12
   .cfi_register lr,r12
 
-       mr      r10,r3                  /* r10 saves tv */
+       mr.     r10,r3                  /* r10 saves tv */
        mr      r11,r4                  /* r11 saves tz */
        get_datapage    r9, r0
-       cmplwi  r10,0                   /* check if tv is NULL */
        beq     3f
        LOAD_REG_IMMEDIATE(r7, 1000000) /* load up USEC_PER_SEC */
        bl      __do_get_tspec@local    /* get sec/usec from tb & kernel */
@@ -46,15 +45,16 @@ V_FUNCTION_BEGIN(__kernel_gettimeofday)
        stw     r4,TVAL32_TV_USEC(r10)
 
 3:     cmplwi  r11,0                   /* check if tz is NULL */
-       beq     1f
+       mtlr    r12
+       crclr   cr0*4+so
+       li      r3,0
+       beqlr
+
        lwz     r4,CFG_TZ_MINUTEWEST(r9)/* fill tz */
        lwz     r5,CFG_TZ_DSTTIME(r9)
        stw     r4,TZONE_TZ_MINWEST(r11)
        stw     r5,TZONE_TZ_DSTTIME(r11)
 
-1:     mtlr    r12
-       crclr   cr0*4+so
-       li      r3,0
        blr
   .cfi_endproc
 V_FUNCTION_END(__kernel_gettimeofday)
@@ -248,10 +248,10 @@ V_FUNCTION_BEGIN(__kernel_time)
        lwz     r3,STAMP_XTIME+TSPEC_TV_SEC(r9)
 
        cmplwi  r11,0                   /* check if t is NULL */
-       beq     2f
-       stw     r3,0(r11)               /* store result at *t */
-2:     mtlr    r12
+       mtlr    r12
        crclr   cr0*4+so
+       beqlr
+       stw     r3,0(r11)               /* store result at *t */
        blr
   .cfi_endproc
 V_FUNCTION_END(__kernel_time)
-- 
2.13.3

Reply via email to