]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/s390/lib/uaccess64.S
Merge git://git.infradead.org/mtd-2.6
[linux-2.6-omap-h63xx.git] / arch / s390 / lib / uaccess64.S
index 19b41a33c230cb02e1d5f527cb3c43bb12de0e31..1f755be22f92736a7c38f6110e2a9edf5c394339 100644 (file)
@@ -88,30 +88,31 @@ __copy_to_user_asm:
         .globl __copy_in_user_asm
        # %r2 = from, %r3 = n, %r4 = to
 __copy_in_user_asm:
+       aghi    %r3,-1
+       jo      6f
        sacf    256
-       bras    1,1f
-       mvc     0(1,%r4),0(%r2)
-0:     mvc     0(256,%r4),0(%r2)
-       la      %r2,256(%r2)
-       la      %r4,256(%r4)
-1:     aghi    %r3,-256
-       jnm     0b
-2:     ex      %r3,0(%r1)
-       sacf    0
-       slgr    %r2,%r2
-       br      14
-3:     mvc     0(1,%r4),0(%r2)
+       bras    %r1,4f
+0:     aghi    %r3,257
+1:     mvc     0(1,%r4),0(%r2)
        la      %r2,1(%r2)
        la      %r4,1(%r4)
        aghi    %r3,-1
+       jnz     1b
+2:     lgr     %r2,%r3
+       br      %r14
+3:     mvc     0(256,%r4),0(%r2)
+       la      %r2,256(%r2)
+       la      %r4,256(%r4)
+4:     aghi    %r3,-256
        jnm     3b
-4:     lgr     %r2,%r3
+5:     ex      %r3,4(%r1)
        sacf    0
-       br      %r14
+6:     slgr    %r2,%r2
+       br      14
         .section __ex_table,"a"
-       .quad   0b,3b
-       .quad   2b,3b
-       .quad   3b,4b
+       .quad   1b,2b
+       .quad   3b,0b
+       .quad   5b,0b
         .previous
 
         .align 4