patch-2.1.45 linux/arch/sparc64/lib/strlen_user.S

Next file: linux/arch/sparc64/mm/fault.c
Previous file: linux/arch/sparc64/lib/checksum.S
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.44/linux/arch/sparc64/lib/strlen_user.S linux/arch/sparc64/lib/strlen_user.S
@@ -20,36 +20,27 @@
 	andcc	%o0, 3, %g0
 	be,pt	%icc, 9f
 	 sethi	%hi(HI_MAGIC), %o4
-10:
-	lduba	[%o0] ASI_S, %o5
+10:	lduba	[%o0] ASI_S, %o5
 	brz,pn	%o5, 21f
 	 add	%o0, 1, %o0
 	andcc	%o0, 3, %g0
 	be,pn	%icc, 4f
 	 or	%o4, %lo(HI_MAGIC), %o3
-11:
-	lduba	[%o0] ASI_S, %o5
+11:	lduba	[%o0] ASI_S, %o5
 	brz,pn	%o5, 22f
 	 add	%o0, 1, %o0
 	andcc	%o0, 3, %g0
-	be,pt	%icc, 5f
-	 sethi	%hi(LO_MAGIC), %o4
-12:
-	lduba	[%o0] ASI_S, %o5
+	be,pt	%icc, 13f
+	 srl	%o3, 7, %o2
+12:	lduba	[%o0] ASI_S, %o5
 	brz,pn	%o5, 23f
 	 add	%o0, 1, %o0
-	ba,pt	%icc, 13f
-	 or	%o4, %lo(LO_MAGIC), %o2
-9:
-	or	%o4, %lo(HI_MAGIC), %o3
-4:
-	sethi	%hi(LO_MAGIC), %o4
-5:
-	or	%o4, %lo(LO_MAGIC), %o2
-13:
-	lda	[%o0] ASI_S, %o5
-2:
-	sub	%o5, %o2, %o4
+	ba,pt	%icc, 2f
+15:	 lda	[%o0] ASI_S, %o5
+9:	or	%o4, %lo(HI_MAGIC), %o3
+4:	srl	%o3, 7, %o2
+13:	lda	[%o0] ASI_S, %o5
+2:	sub	%o5, %o2, %o4
 	andcc	%o4, %o3, %g0
 	be,pt	%icc, 13b
 	 add	%o0, 4, %o0
@@ -69,20 +60,15 @@
 	 add	%o4, 1, %o4
 	andcc	%o5, 0xff, %g0
 	bne,a,pt %icc, 2b
-14:
-	 lda	[%o0] ASI_S, %o5
+14:	 lda	[%o0] ASI_S, %o5
 	add	%o4, 1, %o4
-1:
-	retl
+1:	retl
 	 sub	%o4, %o1, %o0
-21:
-	retl
+21:	retl
 	 mov	1, %o0
-22:
-	retl
+22:	retl
 	 mov	2, %o0
-23:
-	retl
+23:	retl
 	 mov	3, %o0
 
         .section .fixup,#alloc,#execinstr
@@ -97,5 +83,6 @@
 	.xword	10b, 30b
 	.xword	11b, 30b
 	.xword	12b, 30b
+	.xword	15b, 30b
 	.xword	13b, 30b
 	.xword	14b, 30b

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov