mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-27 19:53:32 +08:00
* sysdeps/alpha/strlen.c (strlen): Fix cmpbge insn, and returning
of the byte that was zero, so we return a valid number. Mon Apr 17 12:02:49 1995 Brendan Kehoe (brendan@zen.org) * sysdeps/alpha/strlen.c (strlen): Fix cmpbge insn, and returning of the byte that was zero, so we return a valid number. * sysdeps/unix/bsd/ultrix4/mips/sysdep.h: New file defining
This commit is contained in:
parent
e0585da111
commit
5fa2588651
@ -1,6 +1,11 @@
|
||||
Mon Apr 17 12:02:49 1995 Brendan Kehoe (brendan@zen.org)
|
||||
|
||||
* sysdeps/alpha/strlen.c (strlen): Fix cmpbge insn, and returning
|
||||
of the byte that was zero, so we return a valid number.
|
||||
|
||||
Sun Apr 16 03:23:09 1995 Brendan Kehoe (brendan@zen.org)
|
||||
|
||||
* /sysdeps/unix/bsd/ultrix4/mips/sysdep.h: New file defining
|
||||
* sysdeps/unix/bsd/ultrix4/mips/sysdep.h: New file defining
|
||||
NO_UNDERSCORES then using sysdeps/unix/mips/sysdep.h.
|
||||
|
||||
Fri Apr 14 18:49:03 1995 Brendan Kehoe (brendan@zen.org)
|
||||
|
@ -36,19 +36,20 @@ strlen (const char *str)
|
||||
|
||||
for (;;)
|
||||
{
|
||||
const unsigned long int longword = *longword_ptr++;
|
||||
int mask;
|
||||
asm ("cmpbge %1, %2, %0" : "=r" (mask) : "r" (0), "r" (*longword_ptr++));
|
||||
|
||||
/* Set bits in MASK if bytes in LONGWORD are zero. */
|
||||
asm ("cmpbge $31, %1, %0" : "=r" (mask) : "r" (longword));
|
||||
if (mask)
|
||||
{
|
||||
/* Which of the bytes was the zero? */
|
||||
|
||||
const char *cp = (const char *) (longword_ptr - 1);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
for (i = 0; i < 8; i++)
|
||||
if (cp[i] == 0)
|
||||
return cp - str + i;
|
||||
return cp - str + 7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user