]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Properly recover from shorter read.
authorH.J. Lu <hongjiu.lu@intel.com>
Fri, 20 Nov 2009 16:30:20 +0000 (08:30 -0800)
committerPetr Baudis <pasky@ucw.cz>
Fri, 20 Nov 2009 19:23:35 +0000 (20:23 +0100)
(cherry picked from commit 66221417957963c1d2df8d79f43573e328df2275)

ChangeLog
sysdeps/ia64/memchr.S

index 34212ee6c8e79b3abada5d8c86e19eed74cacca9..e0fd11c15e3ab852a369e99594cce069b1d6e811 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-11-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+       [BZ #10162]
+       * sysdeps/ia64/memchr.S: Don't use a simple loop on data shorter
+       than software pipeline.  Properly recover from shorter read.
+
 2009-11-16  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/unix/sysv/linux/sync_file_range.c (sync_file_range):
index cd062b2dd521c5777d805cbf07bbd78060f17299..cdd71ca5a5a59d035a786f0534005d97bcb04eb2 100644 (file)
@@ -126,7 +126,16 @@ ENTRY(__memchr)
        br.ret.sptk.many b0
 
 .recovery:
-       adds    ret0 = -((MEMLAT + 1) * 8), ret0;;
+#if MEMLAT != 6
+# error "MEMLAT must be 6!"
+#endif
+(p[MEMLAT-6])  add     ret0 = -8, ret0;;
+(p[MEMLAT-5])  add     ret0 = -8, ret0;;
+(p[MEMLAT-4])  add     ret0 = -8, ret0;;
+(p[MEMLAT-3])  add     ret0 = -8, ret0;;
+(p[MEMLAT-2])  add     ret0 = -8, ret0;;
+(p[MEMLAT-1])  add     ret0 = -8, ret0;;
+(p[MEMLAT])    add     ret0 = -8, ret0;;
 (p[MEMLAT+1])  add     ret0 = -8, ret0;;
 (p[MEMLAT+2])  add     ret0 = -8, ret0;;
 .l4: