diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-02-05 06:47:02 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-02-05 06:47:02 +0000 |
commit | 99a7e12f34b3661a0d1354eef83a0eef4df5e34c (patch) | |
tree | 3560aca9ca86792f9ab7bd87861ea143a1b3c7a3 /arch/sparc/lib/strlen_user.S | |
parent | e73a04659c0b8cdee4dd40e58630e2cf63afb316 (diff) |
Merge with Linux 2.3.38.
Diffstat (limited to 'arch/sparc/lib/strlen_user.S')
-rw-r--r-- | arch/sparc/lib/strlen_user.S | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/arch/sparc/lib/strlen_user.S b/arch/sparc/lib/strlen_user.S index 6f2328e06..3dc3c3820 100644 --- a/arch/sparc/lib/strlen_user.S +++ b/arch/sparc/lib/strlen_user.S @@ -47,8 +47,11 @@ mov 3, %o0 .align 4 - .global C_LABEL(__strlen_user) + .global C_LABEL(__strlen_user), C_LABEL(__strnlen_user) C_LABEL(__strlen_user): + sethi %hi(32768), %o1 +C_LABEL(__strnlen_user): + mov %o1, %g1 mov %o0, %o1 andcc %o0, 3, %g0 bne 10b @@ -63,11 +66,16 @@ C_LABEL(__strlen_user): 2: sub %o5, %o2, %o4 andcc %o4, %o3, %g0 - be 13b + bne 82f add %o0, 4, %o0 + sub %o0, %o1, %g2 +81: cmp %g2, %g1 + blu 13b + mov %o0, %o4 + ba,a 1f /* Check every byte. */ - srl %o5, 24, %g5 +82: srl %o5, 24, %g5 andcc %g5, 0xff, %g0 be 1f add %o0, -3, %o4 @@ -80,9 +88,9 @@ C_LABEL(__strlen_user): be 1f add %o4, 1, %o4 andcc %o5, 0xff, %g0 - bne,a 2b -14: - ld [%o0], %o5 + bne 81b + sub %o0, %o1, %g2 + add %o4, 1, %o4 1: retl @@ -101,4 +109,3 @@ C_LABEL(__strlen_user): .word 11b, 9b .word 12b, 9b .word 13b, 9b - .word 14b, 9b |