This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix Niagara-4 memcpy bug on 32-bit.


Committed to master.

	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S: On 32-bit, clear
	upper 32-bits of the length value in %o2 since we use branch-on-register
	tests which consider the entire 64-bit register.
---
 ChangeLog                                         |    6 ++++++
 sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S |    3 +++
 2 files changed, 9 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index fe1e019..1c8111b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-10-06  David S. Miller  <davem@davemloft.net>
+
+	* sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S: On 32-bit, clear
+	upper 32-bits of the length value in %o2 since we use branch-on-register
+	tests which consider the entire 64-bit register.
+
 2012-10-06  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* string/test-strstr.c (check2): Add a test for page boundary.
diff --git a/sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S b/sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S
index 7bb05b9..3da98a8 100644
--- a/sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S
+++ b/sysdeps/sparc/sparc64/multiarch/memcpy-niagara4.S
@@ -64,6 +64,9 @@ ENTRY(__memcpy_niagara4)
 100:	/* %o0=dst, %o1=src, %o2=len */
 	mov		%o0, %o3
 101:
+#ifndef __arch64__
+	srl		%o2, 0, %o2
+#endif
 	brz,pn		%o2, .Lexit
 	 cmp		%o2, 3
 	ble,pn		%icc, .Ltiny
-- 
1.7.10.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]