powerpc/vdso32: miscellaneous optimisations
authorChristophe Leroy <christophe.leroy@c-s.fr>
Mon, 2 Dec 2019 07:57:35 +0000 (07:57 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 23 Jan 2020 10:31:16 +0000 (21:31 +1100)
Various optimisations by inverting branches and removing
redundant instructions.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/b4e79f963845545bcce1459cd6fcfe46bdde7863.1575273217.git.christophe.leroy@c-s.fr
arch/powerpc/kernel/vdso32/datapage.S
arch/powerpc/kernel/vdso32/getcpu.S
arch/powerpc/kernel/vdso32/gettimeofday.S

index 1095d818f94ae7f56eefe054950c90f9f8f2f84d..217bb630f8f99865990a123a1aa36b915bccefb7 100644 (file)
@@ -30,11 +30,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)
index 90b39af1438354ec664a3ab7ca46180e642b53d8..ff5e214fec415ef51accb450af88683b13c61687 100644 (file)
@@ -25,10 +25,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)
index 20ae38f3a5a32e11c555558e15dab30726ca4616..a3951567118a9bbabd256ea418e57b346cc5c1a7 100644 (file)
@@ -32,10 +32,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 */
@@ -43,15 +42,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)
@@ -245,10 +245,10 @@ V_FUNCTION_BEGIN(__kernel_time)
        lwz     r3,STAMP_XTIME_SEC+LOPART(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)