about summary refs log tree commit diff
path: root/sysdeps/i386/strchr.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1997-03-31 22:56:24 +0000
committerUlrich Drepper <drepper@redhat.com>1997-03-31 22:56:24 +0000
commit5929563ff20245bbaa1b3ca2f4bfcee623ac6fb5 (patch)
tree15b1ff0a40462018402078788148c0c99d188429 /sysdeps/i386/strchr.S
parent3075e0e37c0e7cc2e6eb518c409e0769d058ed4b (diff)
downloadglibc-5929563ff20245bbaa1b3ca2f4bfcee623ac6fb5.tar.gz
glibc-5929563ff20245bbaa1b3ca2f4bfcee623ac6fb5.tar.xz
glibc-5929563ff20245bbaa1b3ca2f4bfcee623ac6fb5.zip
1997-04-01 00:37  Ulrich Drepper  <drepper@cygnus.com>

	* math/Makefile: Prevent inlining for test-{float,double,longdouble}.
	* math/libm-test.c (initialize): Make strings unique and force
	values to memory.

	* posix/regex.c: Debug debugging code.

	* sysdeps/i386/asm-syntax.h: Define `L' macro to emit correct
	syntax for local label.
	* sysdeps/i386/add_n.S: Use correct local label syntax for the
	binary format.
	* sysdeps/i386/addmul_1.S: Likewise.
	* sysdeps/i386/lshift.S: Likewise.
	* sysdeps/i386/memchr.S: Likewise.
	* sysdeps/i386/memset.S: Likewise.
	* sysdeps/i386/mul_1.S: Likewise.
	* sysdeps/i386/rshift.S: Likewise.
	* sysdeps/i386/stpcpy.S: Likewise.
	* sysdeps/i386/stpncpy.S: Likewise.
	* sysdeps/i386/strchr.S: Likewise.
	* sysdeps/i386/strcspn.S: Likewise.
	* sysdeps/i386/strlen.S: Likewise.
	* sysdeps/i386/strpbrk.S: Likewise.
	* sysdeps/i386/strrchr.S: Likewise.
	* sysdeps/i386/strspn.S: Likewise.
	* sysdeps/i386/strtok.S: Likewise.
	* sysdeps/i386/sub_n.S: Likewise.
	* sysdeps/i386/submul_1.S: Likewise.
	* sysdeps/i386/i486/strcat.S: Likewise.
	* sysdeps/i386/i486/strlen.S: Likewise.
	* sysdeps/i386/i586/add_n.S: Likewise.
	* sysdeps/i386/i586/addmul_1.S: Likewise.
	* sysdeps/i386/i586/lshift.S: Likewise.
	* sysdeps/i386/i586/memset.S: Likewise.
	* sysdeps/i386/i586/mul_1.S: Likewise.
	* sysdeps/i386/i586/rshift.S: Likewise.
	* sysdeps/i386/i586/strchr.S: Likewise.
	* sysdeps/i386/i586/strlen.S: Likewise.
	* sysdeps/i386/i586/sub_n.S: Likewise.
	* sysdeps/i386/i586/submul_1.S: Likewise.

	* sysdeps/stub/s_log2l.c: Correct function name.

	* time/africa: Updated from ADO tzdata1997e.
	* time/aantarctica: Likewise.
	* time/asia: Likewise.
	* time/australia: Likewise.
	* time/europe: Likewise.
	* time/northamerica: Likewise.
	* time/southamerica: Likewise.
	* time/private.h: Updated from ADO tzcode1997d.
	* time/scheck.c: Likewise.

1997-03-31 12:42  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/powerpc/Dist: Add kernel_*.h files.

1997-03-23 01:41  Geoff Keating  <geoffk@ozemail.com.au>

	* sysdeps/powerpc/strlen.s: Rewrote for more speed.
	* string/tst-strlen.c: Also test various string alignments.

1997-03-19 06:11  Geoff Keating  <geoffk@ozemail.com.au>

	* sysdeps/unix/sysv/linux/powerpc/statbuf.h: Removed.
	* sysdeps/unix/sysv/linux/powerpc/kernel_stat.h: Added.

	* sysdeps/powerpc/dl-machine.h (ELF_PREFERRED_ADDRESS): Assume
	program base address is 0x01800000 if we can't otherwise tell what
	it is.
	(elf_machine_rela): Replace `assertion failed' with real error
	messages.

	* sysdeps/powerpc/dl-machine.h: More comments, more GNU indenting.
	Put in extra parentheses to make explicit the relative precedence
	of + and >>.

	* sysdeps/powerpc/bsd-setjmp.S: Add `__setjmp' symbol so the tests
	pass.
	* sysdeps/powerpc/clone.S: Rewrite.  Probably still doesn't work.

	* sysdeps/unix/sysv/linux/powerpc/sys/sysdep.h: Use .section "text"
	instead of .text.

1997-03-31 02:28  Ulrich Drepper  <drepper@cygnus.com>

	* misc/tst-tsearch.c: Don't write to stderr, write to stdout
	instead.

	* inet/inet_ntoa.c (inet_ntoa): Complete rewrite.  Now uses
	thread-specific memory in multi-threaded programs.

	* sysdeps/stub/s_exp2.c: New file.  Stub version for exp2 function.
	* sysdeps/stub/s_exp2f.c: New file.
	* sysdeps/stub/s_exp2l.c: New file.
	Reported by a sun <asun@zoology.washington.edu>.

	* sysdeps/unix/sysv/linux/netatalk/atalk.h: Rename to...
	* sysdeps/unix/sysv/linux/netatalk/at.h: ...this.
	Suggested by a sun <asun@zoology.washington.edu>.

1997-03-30 14:53  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/netinet/ip_icmp.h: Add former contents
	of <netinet/icmp.h>.
	Patch by a sun <asun@zoology.washington.edu>.

	* sysdeps/powerpc/strlen.S: Added.
Diffstat (limited to 'sysdeps/i386/strchr.S')
-rw-r--r--sysdeps/i386/strchr.S82
1 files changed, 41 insertions, 41 deletions
diff --git a/sysdeps/i386/strchr.S b/sysdeps/i386/strchr.S
index e4e5c55572..7bcd73cfe3 100644
--- a/sysdeps/i386/strchr.S
+++ b/sysdeps/i386/strchr.S
@@ -1,6 +1,6 @@
 /* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
    For Intel 80x86, x>=3.
-   Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>
    Some optimisations by Alan Modra <Alan@SPRI.Levels.UniSA.Edu.Au>
@@ -57,34 +57,34 @@ ENTRY (strchr)
 	      boundaries are multiples of 4.  */
 
 	testb $3, %eax		/* correctly aligned ? */
-	jz L11			/* yes => begin loop */
+	jz L(11)		/* yes => begin loop */
 	movb (%eax), %cl	/* load byte in question (we need it twice) */
 	cmpb %cl, %dl		/* compare byte */
-	je L6			/* target found => return */
+	je L(6)			/* target found => return */
 	testb %cl, %cl		/* is NUL? */
-	jz L2			/* yes => return NULL */
+	jz L(2)			/* yes => return NULL */
 	incl %eax		/* increment pointer */
 
 	testb $3, %eax		/* correctly aligned ? */
-	jz L11			/* yes => begin loop */
+	jz L(11)		/* yes => begin loop */
 	movb (%eax), %cl	/* load byte in question (we need it twice) */
 	cmpb %cl, %dl		/* compare byte */
-	je L6			/* target found => return */
+	je L(6)			/* target found => return */
 	testb %cl, %cl		/* is NUL? */
-	jz L2			/* yes => return NULL */
+	jz L(2)			/* yes => return NULL */
 	incl %eax		/* increment pointer */
 
 	testb $3, %eax		/* correctly aligned ? */
-	jz L11			/* yes => begin loop */
+	jz L(11)		/* yes => begin loop */
 	movb (%eax), %cl	/* load byte in question (we need it twice) */
 	cmpb %cl, %dl		/* compare byte */
-	je L6			/* target found => return */
+	je L(6)			/* target found => return */
 	testb %cl, %cl		/* is NUL? */
-	jz L2			/* yes => return NULL */
+	jz L(2)			/* yes => return NULL */
 	incl %eax		/* increment pointer */
 
 	/* No we have reached alignment.  */
-	jmp L11			/* begin loop */
+	jmp L(11)		/* begin loop */
 
       /* We exit the loop if adding MAGIC_BITS to LONGWORD fails to
 	 change any of the hole bits of LONGWORD.
@@ -116,9 +116,9 @@ ENTRY (strchr)
 
 	ALIGN(4)
 
-L1:	addl $16, %eax		/* adjust pointer for whole round */
+L(1):	addl $16, %eax		/* adjust pointer for whole round */
 
-L11:	movl (%eax), %ecx	/* get word (= 4 bytes) in question */
+L(11):	movl (%eax), %ecx	/* get word (= 4 bytes) in question */
 	xorl %edx, %ecx		/* XOR with word c|c|c|c => bytes of str == c
 				   are now 0 */
 	movl $0xfefefeff, %edi	/* magic value */
@@ -132,7 +132,7 @@ L11:	movl (%eax), %ecx	/* get word (= 4 bytes) in question */
 	   representation with more than 32 bits) not alter then last
 	   overflow, we can now test this condition.  If no carry is signaled
 	   no overflow must have occurred in the last byte => it was 0.	*/
-	jnc L7
+	jnc L(7)
 
 	/* We are only interested in carry bits that change due to the
 	   previous add, so remove original bits */
@@ -144,7 +144,7 @@ L11:	movl (%eax), %ecx	/* get word (= 4 bytes) in question */
 				   the addition will not result in 0.  */
 
 	/* If at least one byte of the word is C we don't get 0 in %edi.  */
-	jnz L7			/* found it => return pointer */
+	jnz L(7)		/* found it => return pointer */
 
 	/* Now we made sure the dword does not contain the character we are
 	   looking for.  But because we deal with strings we have to check
@@ -155,12 +155,12 @@ L11:	movl (%eax), %ecx	/* get word (= 4 bytes) in question */
 	addl %ecx, %edi		/* add the magic value to the word.  We get
 				   carry bits reported for each byte which
 				   is *not* 0 */
-	jnc L2			/* highest byte is NUL => return NULL */
+	jnc L(2)		/* highest byte is NUL => return NULL */
 	xorl %ecx, %edi		/* (word+magic)^word */
 	orl $0xfefefeff, %edi	/* set all non-carry bits */
 	incl %edi		/* add 1: if one carry bit was *not* set
 				   the addition will not result in 0.  */
-	jnz L2			/* found NUL => return NULL */
+	jnz L(2)		/* found NUL => return NULL */
 
 	movl 4(%eax), %ecx	/* get word (= 4 bytes) in question */
 	xorl %edx, %ecx		/* XOR with word c|c|c|c => bytes of str == c
@@ -169,23 +169,23 @@ L11:	movl (%eax), %ecx	/* get word (= 4 bytes) in question */
 	addl %ecx, %edi		/* add the magic value to the word.  We get
 				   carry bits reported for each byte which
 				   is *not* C */
-	jnc L71			/* highest byte is C => return pointer */
+	jnc L(71)		/* highest byte is C => return pointer */
 	xorl %ecx, %edi		/* ((word^charmask)+magic)^(word^charmask) */
 	orl $0xfefefeff, %edi	/* set all non-carry bits */
 	incl %edi		/* add 1: if one carry bit was *not* set
 				   the addition will not result in 0.  */
-	jnz L71			/* found it => return pointer */
+	jnz L(71)		/* found it => return pointer */
 	xorl %edx, %ecx		/* restore original dword without reload */
 	movl $0xfefefeff, %edi	/* magic value */
 	addl %ecx, %edi		/* add the magic value to the word.  We get
 				   carry bits reported for each byte which
 				   is *not* 0 */
-	jnc L2			/* highest byte is NUL => return NULL */
+	jnc L(2)		/* highest byte is NUL => return NULL */
 	xorl %ecx, %edi		/* (word+magic)^word */
 	orl $0xfefefeff, %edi	/* set all non-carry bits */
 	incl %edi		/* add 1: if one carry bit was *not* set
 				   the addition will not result in 0.  */
-	jnz L2			/* found NUL => return NULL */
+	jnz L(2)		/* found NUL => return NULL */
 
 	movl 8(%eax), %ecx	/* get word (= 4 bytes) in question */
 	xorl %edx, %ecx		/* XOR with word c|c|c|c => bytes of str == c
@@ -194,23 +194,23 @@ L11:	movl (%eax), %ecx	/* get word (= 4 bytes) in question */
 	addl %ecx, %edi		/* add the magic value to the word.  We get
 				   carry bits reported for each byte which
 				   is *not* C */
-	jnc L72			/* highest byte is C => return pointer */
+	jnc L(72)		/* highest byte is C => return pointer */
 	xorl %ecx, %edi		/* ((word^charmask)+magic)^(word^charmask) */
 	orl $0xfefefeff, %edi	/* set all non-carry bits */
 	incl %edi		/* add 1: if one carry bit was *not* set
 				   the addition will not result in 0.  */
-	jnz L72			/* found it => return pointer */
+	jnz L(72)		/* found it => return pointer */
 	xorl %edx, %ecx		/* restore original dword without reload */
 	movl $0xfefefeff, %edi	/* magic value */
 	addl %ecx, %edi		/* add the magic value to the word.  We get
 				   carry bits reported for each byte which
 				   is *not* 0 */
-	jnc L2			/* highest byte is NUL => return NULL */
+	jnc L(2)		/* highest byte is NUL => return NULL */
 	xorl %ecx, %edi		/* (word+magic)^word */
 	orl $0xfefefeff, %edi	/* set all non-carry bits */
 	incl %edi		/* add 1: if one carry bit was *not* set
 				   the addition will not result in 0.  */
-	jnz L2			/* found NUL => return NULL */
+	jnz L(2)		/* found NUL => return NULL */
 
 	movl 12(%eax), %ecx	/* get word (= 4 bytes) in question */
 	xorl %edx, %ecx		/* XOR with word c|c|c|c => bytes of str == c
@@ -219,59 +219,59 @@ L11:	movl (%eax), %ecx	/* get word (= 4 bytes) in question */
 	addl %ecx, %edi		/* add the magic value to the word.  We get
 				   carry bits reported for each byte which
 				   is *not* C */
-	jnc L73			/* highest byte is C => return pointer */
+	jnc L(73)		/* highest byte is C => return pointer */
 	xorl %ecx, %edi		/* ((word^charmask)+magic)^(word^charmask) */
 	orl $0xfefefeff, %edi	/* set all non-carry bits */
 	incl %edi		/* add 1: if one carry bit was *not* set
 				   the addition will not result in 0.  */
-	jnz L73			/* found it => return pointer */
+	jnz L(73)		/* found it => return pointer */
 	xorl %edx, %ecx		/* restore original dword without reload */
 	movl $0xfefefeff, %edi	/* magic value */
 	addl %ecx, %edi		/* add the magic value to the word.  We get
 				   carry bits reported for each byte which
 				   is *not* 0 */
-	jnc L2			/* highest byte is NUL => return NULL */
+	jnc L(2)		/* highest byte is NUL => return NULL */
 	xorl %ecx, %edi		/* (word+magic)^word */
 	orl $0xfefefeff, %edi	/* set all non-carry bits */
 	incl %edi		/* add 1: if one carry bit was *not* set
 				   the addition will not result in 0.  */
-	jz L1			/* no NUL found => restart loop */
+	jz L(1)			/* no NUL found => restart loop */
 
-L2:	/* Return NULL.  */
+L(2):	/* Return NULL.  */
 	xorl %eax, %eax		/* load NULL in return value register */
 	popl %edi		/* restore saved register content */
 	ret
 
-L73:	addl $4, %eax		/* adjust pointer */
-L72:	addl $4, %eax
-L71:	addl $4, %eax
+L(73):	addl $4, %eax		/* adjust pointer */
+L(72):	addl $4, %eax
+L(71):	addl $4, %eax
 
 	/* We now scan for the byte in which the character was matched.
 	   But we have to take care of the case that a NUL char is
 	   found before this in the dword.  */
 
-L7:	testb %cl, %cl		/* is first byte C? */
-	jz L6			/* yes => return pointer */
+L(7):	testb %cl, %cl		/* is first byte C? */
+	jz L(6)			/* yes => return pointer */
 	cmpb %dl, %cl		/* is first byte NUL? */
-	je L2			/* yes => return NULL */
+	je L(2)			/* yes => return NULL */
 	incl %eax		/* it's not in the first byte */
 
 	testb %ch, %ch		/* is second byte C? */
-	jz L6			/* yes => return pointer */
+	jz L(6)			/* yes => return pointer */
 	cmpb %dl, %ch		/* is second byte NUL? */
-	je L2			/* yes => return NULL? */
+	je L(2)			/* yes => return NULL? */
 	incl %eax		/* it's not in the second byte */
 
 	shrl $16, %ecx		/* make upper byte accessible */
 	testb %cl, %cl		/* is third byte C? */
-	jz L6			/* yes => return pointer */
+	jz L(6)			/* yes => return pointer */
 	cmpb %dl, %cl		/* is third byte NUL? */
-	je L2			/* yes => return NULL */
+	je L(2)			/* yes => return NULL */
 
 	/* It must be in the fourth byte and it cannot be NUL.  */
 	incl %eax
 
-L6:	popl %edi		/* restore saved register content */
+L(6):	popl %edi		/* restore saved register content */
 
 	ret
 END (strchr)