Browse Source

Add hidden versions, hope I made it correctly. Sparc optimized string functions are not usable with current build system, each function (as long as asm) should go into an own file, the file having the name of the function

Peter S. Mazinger 19 years ago
parent
commit
f56e03f575

+ 3 - 1
libc/string/sparc/sparc32/memchr.S

@@ -63,6 +63,9 @@
 1:	retl
 1:	retl
 	 sub		%o0, 1, %o0
 	 sub		%o0, 1, %o0
 
 
+.globl memchr
+.set memchr,__memchr
+.hidden __memchr
 ENTRY(__memchr)
 ENTRY(__memchr)
 	andcc		%o1, 0xff, %o1
 	andcc		%o1, 0xff, %o1
 	sll		%o1, 8, %g6
 	sll		%o1, 8, %g6
@@ -138,7 +141,6 @@ ENTRY(__memchr)
 	 sub		%o0, 4, %o0
 	 sub		%o0, 4, %o0
 END(__memchr)
 END(__memchr)
 
 
-weak_alias (__memchr, memchr)
 #if !__BOUNDED_POINTERS__
 #if !__BOUNDED_POINTERS__
 weak_alias (__memchr, __ubp_memchr)
 weak_alias (__memchr, __ubp_memchr)
 #endif
 #endif

+ 16 - 6
libc/string/sparc/sparc32/memcpy.S

@@ -161,12 +161,19 @@
 	b		3f
 	b		3f
 	 sub		%o0, 2, %o0
 	 sub		%o0, 2, %o0
 
 
-ENTRY(bcopy)
+.globl bcopy
+.set bcopy,__bcopy
+.hidden __bcopy
+ENTRY(__bcopy)
 	mov		%o0, %o3
 	mov		%o0, %o3
 	mov		%o1, %o0
 	mov		%o1, %o0
 	mov		%o3, %o1
 	mov		%o3, %o1
-END(bcopy)
+END(__bcopy)
-ENTRY(memmove)
+
+.globl memmove
+.set memmove,__memmove
+.hidden __memmove
+ENTRY(__memmove)
 	cmp		%o0, %o1
 	cmp		%o0, %o1
 	st		%o0, [%sp + 64]
 	st		%o0, [%sp + 64]
 	bleu		9f
 	bleu		9f
@@ -446,9 +453,12 @@ ENTRY(memmove)
 	sub		%o2, 2, %o2
 	sub		%o2, 2, %o2
 	b		3f
 	b		3f
 	 add		%o0, 2, %o0
 	 add		%o0, 2, %o0
-END(memmove)
+END(__memmove)
 
 
-ENTRY(memcpy)		/* %o0=dst %o1=src %o2=len */
+.globl memcpy
+.set memcpy,__memcpy
+.hidden __memcpy
+ENTRY(__memcpy)		/* %o0=dst %o1=src %o2=len */
 	sub		%o0, %o1, %o4
 	sub		%o0, %o1, %o4
 	st		%o0, [%sp + 64]
 	st		%o0, [%sp + 64]
 9:	andcc		%o4, 3, %o5
 9:	andcc		%o4, 3, %o5
@@ -963,4 +973,4 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=len */
 	 sub		%o7, %o4, %o5
 	 sub		%o7, %o4, %o5
 110:	retl
 110:	retl
 	 sub		%o7, %g6, %o5
 	 sub		%o7, %g6, %o5
-END(memcpy)
+END(__memcpy)

+ 5 - 2
libc/string/sparc/sparc32/memset.S

@@ -62,7 +62,10 @@ ENTRY(__bzero)
 	 sub		%o0, %o2, %o0
 	 sub		%o0, %o2, %o0
 END(__bzero)
 END(__bzero)
 
 
-ENTRY(memset)
+.globl memset
+.set memset,__memset
+.hidden __memset
+ENTRY(__memset)
 	and		%o1, 0xff, %g3
 	and		%o1, 0xff, %g3
 	sll		%g3, 8, %g2
 	sll		%g3, 8, %g2
 	or		%g3, %g2, %g3
 	or		%g3, %g2, %g3
@@ -147,6 +150,6 @@ ENTRY(memset)
 	stb		%g3, [%o0 + 6]
 	stb		%g3, [%o0 + 6]
 0:	retl
 0:	retl
 	 nop
 	 nop
-END(memset)
+END(__memset)
 
 
 weak_alias (__bzero, bzero)
 weak_alias (__bzero, bzero)

+ 3 - 2
libc/string/sparc/sparc32/stpcpy.S

@@ -65,6 +65,9 @@
 1:	retl
 1:	retl
 	 add		%o0, -1, %o0
 	 add		%o0, -1, %o0
 
 
+.globl stpcpy
+.set stpcpy,__stpcpy
+.hidden __stpcpy
 ENTRY(__stpcpy)
 ENTRY(__stpcpy)
 	andcc		%o1, 3, %g0
 	andcc		%o1, 3, %g0
 	bne		10b
 	bne		10b
@@ -157,5 +160,3 @@ ENTRY(__stpcpy)
 19:	retl
 19:	retl
 	 nop
 	 nop
 END(__stpcpy)
 END(__stpcpy)
-
-weak_alias (__stpcpy, stpcpy)

+ 5 - 2
libc/string/sparc/sparc32/strcat.S

@@ -91,7 +91,10 @@
 	b		3f
 	b		3f
 	 sub		%o0, 1, %o0
 	 sub		%o0, 1, %o0
 
 
-ENTRY(strcat)
+.globl strcat
+.set strcat,__strcat
+.hidden __strcat
+ENTRY(__strcat)
 	mov		%o0, %g2
 	mov		%o0, %g2
 	andcc		%o0, 3, %g0
 	andcc		%o0, 3, %g0
 	bne		11b
 	bne		11b
@@ -343,4 +346,4 @@ ENTRY(strcat)
 	 srl		%o5, 16, %o4
 	 srl		%o5, 16, %o4
 	retl
 	retl
 	 mov		%g2, %o0
 	 mov		%g2, %o0
-END(strcat)
+END(__strcat)

+ 10 - 4
libc/string/sparc/sparc32/strchr.S

@@ -67,7 +67,10 @@
 1:	retl
 1:	retl
 	 sub		%o0, 1, %o0
 	 sub		%o0, 1, %o0
 
 
-ENTRY(strchr)
+.globl strchr
+.set strchr,__strchr
+.hidden __strchr
+ENTRY(__strchr)
 	andcc		%o1, 0xff, %o1
 	andcc		%o1, 0xff, %o1
 	be		12f
 	be		12f
 	 sll		%o1, 8, %o2
 	 sll		%o1, 8, %o2
@@ -215,9 +218,12 @@ ENTRY(strchr)
 1:	 or		%o4, %lo(0x01010101), %o2
 1:	 or		%o4, %lo(0x01010101), %o2
 	b		7f
 	b		7f
 	 ld		[%o0], %g4
 	 ld		[%o0], %g4
-END(strchr)
+END(__strchr)
 
 
-ENTRY(strrchr)
+.globl strrchr
+.set strrchr,__strrchr
+.hidden __strrchr
+ENTRY(__strrchr)
 	andcc		%o1, 0xff, %o1
 	andcc		%o1, 0xff, %o1
 	clr		%o5
 	clr		%o5
 	be		12b
 	be		12b
@@ -274,7 +280,7 @@ ENTRY(strrchr)
 	 ld		[%o0], %g4
 	 ld		[%o0], %g4
 9:	retl
 9:	retl
 	 mov		%o5, %o0
 	 mov		%o5, %o0
-END(strrchr)
+END(__strrchr)
 
 
 weak_alias (strchr, index)
 weak_alias (strchr, index)
 weak_alias (strrchr, rindex)
 weak_alias (strrchr, rindex)

+ 5 - 2
libc/string/sparc/sparc32/strcmp.S

@@ -74,7 +74,10 @@
 2:	retl
 2:	retl
 	 mov		%o4, %o0
 	 mov		%o4, %o0
 
 
-ENTRY(strcmp)
+.globl strcmp
+.set strcmp,__strcmp
+.hidden __strcmp
+ENTRY(__strcmp)
 	andcc		%o0, 3, %g0
 	andcc		%o0, 3, %g0
 	bne		10b
 	bne		10b
 	 sethi		%hi(0x80808080), %g1
 	 sethi		%hi(0x80808080), %g1
@@ -252,4 +255,4 @@ ENTRY(strcmp)
 	 ld		[%i0], %i4
 	 ld		[%i0], %i4
 	jmpl		%i7 + 8, %g0
 	jmpl		%i7 + 8, %g0
 	 restore	%g4, %g0, %o0
 	 restore	%g4, %g0, %o0
-END(strcmp)
+END(__strcmp)

+ 5 - 2
libc/string/sparc/sparc32/strcpy.S

@@ -63,7 +63,10 @@
 	b		6f
 	b		6f
 	 andcc		%o0, 3, %g3
 	 andcc		%o0, 3, %g3
 
 
-ENTRY(strcpy)
+.globl strcpy
+.set strcpy,__strcpy
+.hidden __strcpy
+ENTRY(__strcpy)
 	mov		%o0, %g2
 	mov		%o0, %g2
 	andcc		%o1, 3, %g0
 	andcc		%o1, 3, %g0
 	bne		1b
 	bne		1b
@@ -269,4 +272,4 @@ ENTRY(strcpy)
 	 srl		%o5, 16, %o4
 	 srl		%o5, 16, %o4
 	retl
 	retl
 	 mov		%g2, %o0
 	 mov		%g2, %o0
-END(strcpy)
+END(__strcpy)

+ 5 - 2
libc/string/sparc/sparc32/strlen.S

@@ -63,7 +63,10 @@
 3:	retl
 3:	retl
 	 mov		2, %o0
 	 mov		2, %o0
 
 
-ENTRY(strlen)
+.globl strlen
+.set strlen,__strlen
+.hidden __strlen
+ENTRY(__strlen)
 	mov		%o0, %o1
 	mov		%o0, %o1
 	andcc		%o0, 3, %g0
 	andcc		%o0, 3, %g0
 	bne		10b
 	bne		10b
@@ -98,4 +101,4 @@ ENTRY(strlen)
 	add		%o4, 1, %o4
 	add		%o4, 1, %o4
 13:	retl
 13:	retl
 	 sub		%o4, %o1, %o0
 	 sub		%o4, %o1, %o0
-END(strlen)
+END(__strlen)

+ 15 - 6
libc/string/sparc/sparc64/memcpy.S

@@ -191,7 +191,10 @@
 	.text
 	.text
 	.align		32
 	.align		32
 
 
-ENTRY(bcopy)
+.globl bcopy
+.set bcopy,__bcopy
+.hidden __bcopy
+ENTRY(__bcopy)
 	sub		%o1, %o0, %o4			/* IEU0		Group		*/
 	sub		%o1, %o0, %o4			/* IEU0		Group		*/
 	mov		%o0, %g3			/* IEU1				*/
 	mov		%o0, %g3			/* IEU1				*/
 	cmp		%o4, %o2			/* IEU1		Group		*/
 	cmp		%o4, %o2			/* IEU1		Group		*/
@@ -205,7 +208,7 @@ ENTRY(bcopy)
 	 add		%o0, %o2, %o0			/* IEU0				*/
 	 add		%o0, %o2, %o0			/* IEU0				*/
 	retl
 	retl
 	 nop
 	 nop
-END(bcopy)
+END(__bcopy)
 
 
 	.align		32
 	.align		32
 200:	be,pt		%xcc, 201f			/* CTI				*/
 200:	be,pt		%xcc, 201f			/* CTI				*/
@@ -503,7 +506,10 @@ END(__align_cpy_16)
 #endif
 #endif
 
 
 	.align		32
 	.align		32
-ENTRY(memcpy)
+.globl memcpy
+.set memcpy,__memcpy
+.hidden __memcpy
+ENTRY(__memcpy)
 210:
 210:
 #ifndef USE_BPR
 #ifndef USE_BPR
 	srl		%o2, 0, %o2			/* IEU1		Group		*/
 	srl		%o2, 0, %o2			/* IEU1		Group		*/
@@ -694,7 +700,7 @@ ENTRY(memcpy)
 214:	wr		%g0, FPRS_FEF, %fprs
 214:	wr		%g0, FPRS_FEF, %fprs
 	retl
 	retl
 	 mov		%g4, %o0
 	 mov		%g4, %o0
-END(memcpy)
+END(__memcpy)
 
 
 	.align		32
 	.align		32
 228:	andcc		%o2, 1, %g0			/* IEU1		Group		*/
 228:	andcc		%o2, 1, %g0			/* IEU1		Group		*/
@@ -719,7 +725,10 @@ END(memcpy)
 	 nop
 	 nop
 
 
 	.align		32
 	.align		32
-ENTRY(memmove)
+.globl memmove
+.set memmove,__memmove
+.hidden __memmove
+ENTRY(__memmove)
 #ifndef USE_BPR
 #ifndef USE_BPR
 	srl		%o2, 0, %o2			/* IEU1		Group		*/
 	srl		%o2, 0, %o2			/* IEU1		Group		*/
 #endif
 #endif
@@ -910,7 +919,7 @@ ENTRY(memmove)
 234:	wr		%g0, FPRS_FEF, %fprs
 234:	wr		%g0, FPRS_FEF, %fprs
 	retl
 	retl
 	 mov		%g4, %o0
 	 mov		%g4, %o0
-END(memmove)
+END(__memmove)
 
 
 #ifdef USE_BPR
 #ifdef USE_BPR
 weak_alias (memcpy, __align_cpy_1)
 weak_alias (memcpy, __align_cpy_1)

+ 5 - 2
libc/string/sparc/sparc64/memset.S

@@ -36,7 +36,10 @@
 	/* Well, memset is a lot easier to get right than bcopy... */
 	/* Well, memset is a lot easier to get right than bcopy... */
 	.text
 	.text
 	.align		32
 	.align		32
-ENTRY(memset)
+.globl memset
+.set memset,__memset
+.hidden __memset
+ENTRY(__memset)
 	andcc		%o1, 0xff, %o1
 	andcc		%o1, 0xff, %o1
 	mov		%o0, %o5
 	mov		%o0, %o5
 	be,a,pt		%icc, 50f
 	be,a,pt		%icc, 50f
@@ -176,7 +179,7 @@ ENTRY(memset)
 	 nop
 	 nop
 	ba,pt		%xcc, 18b
 	ba,pt		%xcc, 18b
 	 ldd		[%o0], %f0
 	 ldd		[%o0], %f0
-END(memset)
+END(__memset)
 
 
 #define ZERO_BLOCKS(base, offset, source)		\
 #define ZERO_BLOCKS(base, offset, source)		\
 	stx		source, [base - offset - 0x38];	\
 	stx		source, [base - offset - 0x38];	\

+ 15 - 6
libc/string/sparc/sparc64/sparcv9b/memcpy.S

@@ -36,7 +36,10 @@
 	.text
 	.text
 	.align	32
 	.align	32
 
 
-ENTRY(bcopy)
+.globl bcopy
+.set bcopy,__bcopy
+.hidden __bcopy
+ENTRY(__bcopy)
 	sub		%o1, %o0, %o4
 	sub		%o1, %o0, %o4
 	mov		%o0, %g4
 	mov		%o0, %g4
 	cmp		%o4, %o2
 	cmp		%o4, %o2
@@ -50,7 +53,7 @@ ENTRY(bcopy)
 	 add		%o0, %o2, %o0
 	 add		%o0, %o2, %o0
 	retl
 	retl
 	 nop
 	 nop
-END(bcopy)
+END(__bcopy)
 
 
 	/* Special/non-trivial issues of this code:
 	/* Special/non-trivial issues of this code:
 	 *
 	 *
@@ -67,7 +70,10 @@ END(bcopy)
 	 * of up to 2.4GB per second.
 	 * of up to 2.4GB per second.
 	 */
 	 */
 	.align		32
 	.align		32
-ENTRY(memcpy)
+.globl memcpy
+.set memcpy,__memcpy
+.hidden __memcpy
+ENTRY(__memcpy)
 
 
 100: /* %o0=dst, %o1=src, %o2=len */
 100: /* %o0=dst, %o1=src, %o2=len */
 	mov		%o0, %g5
 	mov		%o0, %g5
@@ -328,7 +334,7 @@ small_copy_unaligned:
 	retl
 	retl
 	 mov		%g5, %o0
 	 mov		%g5, %o0
 
 
-END(memcpy)
+END(__memcpy)
 
 
 #define RMOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3)	\
 #define RMOVE_BIGCHUNK(src, dst, offset, t0, t1, t2, t3)	\
 	ldx		[%src - offset - 0x20], %t0; 		\
 	ldx		[%src - offset - 0x20], %t0; 		\
@@ -403,7 +409,10 @@ END(memcpy)
 	 mov		%g4, %o0
 	 mov		%g4, %o0
 
 
 	.align		32
 	.align		32
-ENTRY(memmove)
+.globl memmove
+.set memmove,__memmove
+.hidden __memmove
+ENTRY(__memmove)
 	mov		%o0, %g5
 	mov		%o0, %g5
 #ifndef USE_BPR
 #ifndef USE_BPR
 	srl		%o2, 0, %o2			/* IEU1		Group		*/
 	srl		%o2, 0, %o2			/* IEU1		Group		*/
@@ -595,7 +604,7 @@ ENTRY(memmove)
 234:	wr		%g0, FPRS_FEF, %fprs
 234:	wr		%g0, FPRS_FEF, %fprs
 	retl
 	retl
 	 mov		%g4, %o0
 	 mov		%g4, %o0
-END(memmove)
+END(__memmove)
 
 
 #ifdef USE_BPR
 #ifdef USE_BPR
 weak_alias (memcpy, __align_cpy_1)
 weak_alias (memcpy, __align_cpy_1)

+ 5 - 2
libc/string/sparc/sparc64/strcat.S

@@ -47,7 +47,10 @@
 
 
 	.text
 	.text
 	.align		32
 	.align		32
-ENTRY(strcat)
+.globl strcat
+.set strcat,__strcat
+.hidden __strcat
+ENTRY(__strcat)
 	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
 	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
 	ldub		[%o0], %o3			/* Load				*/
 	ldub		[%o0], %o3			/* Load				*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU0		Group		*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU0		Group		*/
@@ -335,4 +338,4 @@ ENTRY(strcat)
 	stb		%o4, [%o0 - 8]			/* Store			*/
 	stb		%o4, [%o0 - 8]			/* Store			*/
 	retl						/* CTI+IEU1	Group		*/
 	retl						/* CTI+IEU1	Group		*/
 	 mov		%g6, %o0			/* IEU0				*/
 	 mov		%g6, %o0			/* IEU0				*/
-END(strcat)
+END(__strcat)

+ 10 - 4
libc/string/sparc/sparc64/strchr.S

@@ -47,7 +47,10 @@
 
 
 	.text
 	.text
 	.align		32
 	.align		32
-ENTRY(strchr)
+.globl strchr
+.set strchr,__strchr
+.hidden __strchr
+ENTRY(__strchr)
 	andcc		%o1, 0xff, %o1			/* IEU1		Group		*/
 	andcc		%o1, 0xff, %o1			/* IEU1		Group		*/
 	be,pn		%icc, 17f			/* CTI				*/
 	be,pn		%icc, 17f			/* CTI				*/
 	 sllx		%o1, 8, %g3			/* IEU0		Group		*/
 	 sllx		%o1, 8, %g3			/* IEU0		Group		*/
@@ -327,10 +330,13 @@ ENTRY(strchr)
 	 lduba		[%o0] ASI_PNF, %o3		/* Load				*/
 	 lduba		[%o0] ASI_PNF, %o3		/* Load				*/
 	retl						/* CTI+IEU1	Group		*/
 	retl						/* CTI+IEU1	Group		*/
 	 add		%o0, -1, %o0			/* IEU0				*/
 	 add		%o0, -1, %o0			/* IEU0				*/
-END(strchr)
+END(__strchr)
 
 
 	.align		32
 	.align		32
-ENTRY(strrchr)
+.globl strrchr
+.set strrchr,__strrchr
+.hidden __strrchr
+ENTRY(__strrchr)
 	andcc		%o1, 0xff, %o1			/* IEU1		Group		*/
 	andcc		%o1, 0xff, %o1			/* IEU1		Group		*/
 	be,pn		%icc, 17b			/* CTI				*/
 	be,pn		%icc, 17b			/* CTI				*/
 	 clr		%g4				/* IEU0				*/
 	 clr		%g4				/* IEU0				*/
@@ -474,7 +480,7 @@ ENTRY(strrchr)
 	ba,pt		%xcc, 1b			/* CTI		Group		*/
 	ba,pt		%xcc, 1b			/* CTI		Group		*/
 
 
 	 ldx		[%o0], %o3			/* Load				*/
 	 ldx		[%o0], %o3			/* Load				*/
-END(strrchr)
+END(__strrchr)
 
 
 weak_alias (strchr, index)
 weak_alias (strchr, index)
 weak_alias (strrchr, rindex)
 weak_alias (strrchr, rindex)

+ 5 - 2
libc/string/sparc/sparc64/strcmp.S

@@ -45,7 +45,10 @@
 
 
 	.text
 	.text
 	.align		32
 	.align		32
-ENTRY(strcmp)
+.globl strcmp
+.set strcmp,__strcmp
+.hidden __strcmp
+ENTRY(__strcmp)
 	sethi		%hi(0x01010101), %g1			/* IEU0		Group		*/
 	sethi		%hi(0x01010101), %g1			/* IEU0		Group		*/
 	andcc		%o0, 7, %g0				/* IEU1				*/
 	andcc		%o0, 7, %g0				/* IEU1				*/
 	bne,pn		%icc, 7f				/* CTI				*/
 	bne,pn		%icc, 7f				/* CTI				*/
@@ -275,4 +278,4 @@ ENTRY(strcmp)
 
 
 	ba,pt		%xcc, 11b				/* CTI		Group		*/
 	ba,pt		%xcc, 11b				/* CTI		Group		*/
 	 ldxa		[%o1 + %o0] ASI_PNF, %g6		/* Load				*/
 	 ldxa		[%o1 + %o0] ASI_PNF, %g6		/* Load				*/
-END(strcmp)
+END(__strcmp)

+ 5 - 2
libc/string/sparc/sparc64/strcpy.S

@@ -45,7 +45,10 @@
 
 
 	.text
 	.text
 	.align		32
 	.align		32
-ENTRY(strcpy)
+.globl strcpy
+.set strcpy,__strcpy
+.hidden __strcpy
+ENTRY(__strcpy)
 	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
 	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
 	mov		%o0, %g6			/* IEU1				*/
 	mov		%o0, %g6			/* IEU1				*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU0		Group		*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU0		Group		*/
@@ -240,4 +243,4 @@ ENTRY(strcpy)
 	stb		%o4, [%o0 - 8]			/* Store			*/
 	stb		%o4, [%o0 - 8]			/* Store			*/
 	retl						/* CTI+IEU1	Group		*/
 	retl						/* CTI+IEU1	Group		*/
 	 mov		%g6, %o0			/* IEU0				*/
 	 mov		%g6, %o0			/* IEU0				*/
-END(strcpy)
+END(__strcpy)

+ 5 - 2
libc/string/sparc/sparc64/strlen.S

@@ -39,7 +39,10 @@
 
 
 	.text
 	.text
 	.align		32
 	.align		32
-ENTRY(strlen)
+.globl strlen
+.set strlen,__strlen
+.hidden __strlen
+ENTRY(__strlen)
 	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
 	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
 	ldub		[%o0], %o3			/* Load				*/
 	ldub		[%o0], %o3			/* Load				*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU0		Group		*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU0		Group		*/
@@ -169,4 +172,4 @@ ENTRY(strlen)
 	add		%o0, -1, %o0			/* IEU0		Group		*/
 	add		%o0, -1, %o0			/* IEU0		Group		*/
 	retl						/* CTI+IEU1	Group		*/
 	retl						/* CTI+IEU1	Group		*/
 	 sub		%o0, %o1, %o0			/* IEU0				*/
 	 sub		%o0, %o1, %o0			/* IEU0				*/
-END(strlen)
+END(__strlen)