From 5430fc65a118300b35a834a1112caea3441ff12e Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Thu, 5 Sep 2013 09:32:56 -0500 Subject: [PATCH] PowerPC: fix POWER7 memrchr for some large inputs --- ChangeLog | 6 ++++++ sysdeps/powerpc/powerpc32/power7/memrchr.S | 4 ++-- sysdeps/powerpc/powerpc64/power7/memrchr.S | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9392693..2403463 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2013-09-05 Adhemerval Zanella + * sysdeps/powerpc/powerpc32/power7/memrchr.S (__memrchr): Fix invalid + memory access for final bytes in some large inputs. + * sysdeps/powerpc/powerpc64/power7/memrchr.S (__memrchr): Likewise. + +2013-09-05 Adhemerval Zanella + * string/test-memrchr.c: New file. * string/test-memrchr-ifunc.c: New file. * string/Makefile: Add new memrchr testcase. diff --git a/sysdeps/powerpc/powerpc32/power7/memrchr.S b/sysdeps/powerpc/powerpc32/power7/memrchr.S index d1e3fda..defd832 100644 --- a/sysdeps/powerpc/powerpc32/power7/memrchr.S +++ b/sysdeps/powerpc/powerpc32/power7/memrchr.S @@ -101,8 +101,8 @@ L(loop): /* We're here because the counter reached 0, and that means we didn't have any matches for BYTE in the whole range. Just return the original range. */ - addi r9,r8,4 - cmplw cr6,r9,r7 + addi r8,r8,4 + cmplw cr6,r8,r7 bgt cr6,L(loop_small) b L(null) diff --git a/sysdeps/powerpc/powerpc64/power7/memrchr.S b/sysdeps/powerpc/powerpc64/power7/memrchr.S index d24fbbb..c499952 100644 --- a/sysdeps/powerpc/powerpc64/power7/memrchr.S +++ b/sysdeps/powerpc/powerpc64/power7/memrchr.S @@ -102,8 +102,8 @@ L(loop): /* We're here because the counter reached 0, and that means we didn't have any matches for BYTE in the whole range. Just return the original range. */ - addi r9,r8,8 - cmpld cr6,r9,r7 + addi r8,r8,8 + cmpld cr6,r8,r7 bgt cr6,L(loop_small) b L(null) -- 2.7.4