Kaynağa Gözat

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 18 yıl önce
ebeveyn
işleme
f56e03f575

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

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

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

@@ -161,12 +161,19 @@
 	b		3f
 	 sub		%o0, 2, %o0
 
-ENTRY(bcopy)
+.globl bcopy
+.set bcopy,__bcopy
+.hidden __bcopy
+ENTRY(__bcopy)
 	mov		%o0, %o3
 	mov		%o1, %o0
 	mov		%o3, %o1
-END(bcopy)
-ENTRY(memmove)
+END(__bcopy)
+
+.globl memmove
+.set memmove,__memmove
+.hidden __memmove
+ENTRY(__memmove)
 	cmp		%o0, %o1
 	st		%o0, [%sp + 64]
 	bleu		9f
@@ -446,9 +453,12 @@ ENTRY(memmove)
 	sub		%o2, 2, %o2
 	b		3f
 	 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
 	st		%o0, [%sp + 64]
 9:	andcc		%o4, 3, %o5
@@ -963,4 +973,4 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=len */
 	 sub		%o7, %o4, %o5
 110:	retl
 	 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
 END(__bzero)
 
-ENTRY(memset)
+.globl memset
+.set memset,__memset
+.hidden __memset
+ENTRY(__memset)
 	and		%o1, 0xff, %g3
 	sll		%g3, 8, %g2
 	or		%g3, %g2, %g3
@@ -147,6 +150,6 @@ ENTRY(memset)
 	stb		%g3, [%o0 + 6]
 0:	retl
 	 nop
-END(memset)
+END(__memset)
 
 weak_alias (__bzero, bzero)

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -191,7 +191,10 @@
 	.text
 	.align		32
 
-ENTRY(bcopy)
+.globl bcopy
+.set bcopy,__bcopy
+.hidden __bcopy
+ENTRY(__bcopy)
 	sub		%o1, %o0, %o4			/* IEU0		Group		*/
 	mov		%o0, %g3			/* IEU1				*/
 	cmp		%o4, %o2			/* IEU1		Group		*/
@@ -205,7 +208,7 @@ ENTRY(bcopy)
 	 add		%o0, %o2, %o0			/* IEU0				*/
 	retl
 	 nop
-END(bcopy)
+END(__bcopy)
 
 	.align		32
 200:	be,pt		%xcc, 201f			/* CTI				*/
@@ -503,7 +506,10 @@ END(__align_cpy_16)
 #endif
 
 	.align		32
-ENTRY(memcpy)
+.globl memcpy
+.set memcpy,__memcpy
+.hidden __memcpy
+ENTRY(__memcpy)
 210:
 #ifndef USE_BPR
 	srl		%o2, 0, %o2			/* IEU1		Group		*/
@@ -694,7 +700,7 @@ ENTRY(memcpy)
 214:	wr		%g0, FPRS_FEF, %fprs
 	retl
 	 mov		%g4, %o0
-END(memcpy)
+END(__memcpy)
 
 	.align		32
 228:	andcc		%o2, 1, %g0			/* IEU1		Group		*/
@@ -719,7 +725,10 @@ END(memcpy)
 	 nop
 
 	.align		32
-ENTRY(memmove)
+.globl memmove
+.set memmove,__memmove
+.hidden __memmove
+ENTRY(__memmove)
 #ifndef USE_BPR
 	srl		%o2, 0, %o2			/* IEU1		Group		*/
 #endif
@@ -910,7 +919,7 @@ ENTRY(memmove)
 234:	wr		%g0, FPRS_FEF, %fprs
 	retl
 	 mov		%g4, %o0
-END(memmove)
+END(__memmove)
 
 #ifdef USE_BPR
 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... */
 	.text
 	.align		32
-ENTRY(memset)
+.globl memset
+.set memset,__memset
+.hidden __memset
+ENTRY(__memset)
 	andcc		%o1, 0xff, %o1
 	mov		%o0, %o5
 	be,a,pt		%icc, 50f
@@ -176,7 +179,7 @@ ENTRY(memset)
 	 nop
 	ba,pt		%xcc, 18b
 	 ldd		[%o0], %f0
-END(memset)
+END(__memset)
 
 #define ZERO_BLOCKS(base, offset, source)		\
 	stx		source, [base - offset - 0x38];	\

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

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

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

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

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

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

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

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

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

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

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

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