Fix fourth parameter of SSE4.2 strcmp for x86-64.

This commit is contained in:
Ulrich Drepper 2010-08-15 20:46:09 -07:00
parent f8392f4004
commit 1feccb6caf
2 changed files with 4 additions and 3 deletions

View File

@ -13,6 +13,7 @@
* sysdeps/x86_64/strcmp.S: Use correct register for fourth parameter
of strncasecmp_l.
* sysdeps/multiarch/strcmp.S: Likewise.
2010-08-14 Ulrich Drepper <drepper@redhat.com>

View File

@ -181,7 +181,7 @@ END (__strcasecmp_sse42)
# ifdef USE_AS_STRNCASECMP_L
ENTRY (__strncasecmp_sse42)
movq __libc_tsd_LOCALE@gottpoff(%rip),%rax
movq %fs:(%rax),%r10
movq %fs:(%rax),%rcx
// XXX 5 byte should be before the function
/* 5-byte NOP. */
@ -212,9 +212,9 @@ STRCMP_SSE42:
/* We have to fall back on the C implementation for locales
with encodings not matching ASCII for single bytes. */
# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
movq LOCALE_T___LOCALES+LC_CTYPE*8(%r10), %rax
movq LOCALE_T___LOCALES+LC_CTYPE*8(%rcx), %rax
# else
movq (%r10), %rax
movq (%rcx), %rax
# endif
testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax)
jne __strncasecmp_l_nonascii