parisc: Inline trivial exception code in lusercopy.S
authorHelge Deller <deller@gmx.de>
Mon, 27 Mar 2017 16:22:37 +0000 (18:22 +0200)
committerHelge Deller <deller@gmx.de>
Wed, 10 May 2017 15:46:12 +0000 (17:46 +0200)
Fold trivial exception handling for lclear_user() and lstrnlen_user()
into the main functions.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/lib/lusercopy.S

index 85c28bb80fb7433dfcfac2fb10f6cc121448119f..d4fe19806d57764144e0b52e9feddc83a18fc160 100644 (file)
        mtsp        %r1,%sr1
        .endm
 
-       .macro fixup_branch lbl
-       ldil        L%\lbl, %r1
-       ldo         R%\lbl(%r1), %r1
-       bv          %r0(%r1)
-       .endm
-
        /*
         * unsigned long lclear_user(void *to, unsigned long n)
         *
@@ -82,16 +76,16 @@ $lclu_loop:
 $lclu_done:
        bv          %r0(%r2)
        copy        %r25,%r28
-       .exit
-ENDPROC_CFI(lclear_user)
 
-       .section .fixup,"ax"
-2:      fixup_branch $lclu_done
-       ldo        1(%r25),%r25
-       .previous
+2:     b           $lclu_done
+       ldo         1(%r25),%r25
 
        ASM_EXCEPTIONTABLE_ENTRY(1b,2b)
 
+       .exit
+ENDPROC_CFI(lclear_user)
+
+
        .procend
 
        /*
@@ -122,16 +116,15 @@ $lslen_done:
 $lslen_nzero:
        b           $lslen_done
        ldo         1(%r26),%r26 /* special case for N == 0 */
-ENDPROC_CFI(lstrnlen_user)
 
-       .section .fixup,"ax"
-3:      fixup_branch $lslen_done
+3:      b          $lslen_done
        copy        %r24,%r26    /* reset r26 so 0 is returned on fault */
-       .previous
 
        ASM_EXCEPTIONTABLE_ENTRY(1b,3b)
        ASM_EXCEPTIONTABLE_ENTRY(2b,3b)
 
+ENDPROC_CFI(lstrnlen_user)
+
        .procend