Blob Blame History Raw
2008-10-09  Jakub Jelinek <jakub@redhat.com>,
	David S. Miller  <davem@davemloft.net>

	* sysdeps/sparc/sparc64/sparcv9v/memcpy.S,
	sysdeps/sparc/sparc64/sparcv9v/memset.S,
	sysdeps/sparc/sparc64/sparcv9v2/memcpy.S: When not USE_BPR,
	make sure any registers used with 64-bit 'branch-on-register'
	instructions have their top 32-bits clear.

diff --git a/sysdeps/sparc/sparc64/sparcv9v/memcpy.S b/sysdeps/sparc/sparc64/sparcv9v/memcpy.S
index 05c837f..ad2b0f7 100644
--- a/sysdeps/sparc/sparc64/sparcv9v/memcpy.S
+++ b/sysdeps/sparc/sparc64/sparcv9v/memcpy.S
@@ -1,5 +1,5 @@
 /* Copy SIZE bytes from SRC to DEST.  For SUN4V Niagara.
-   Copyright (C) 2006 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller (davem@davemloft.net)
 
@@ -61,6 +61,9 @@ END(bcopy)
 
 	.align		32
 ENTRY(memcpy)
+#ifndef USE_BPR
+	srl		%o2, 0, %o2
+#endif
 100:	/* %o0=dst, %o1=src, %o2=len */
 	mov		%o0, %g5
 	cmp		%o2, 0
diff --git a/sysdeps/sparc/sparc64/sparcv9v/memset.S b/sysdeps/sparc/sparc64/sparcv9v/memset.S
index ac0a50c..64817b8 100644
--- a/sysdeps/sparc/sparc64/sparcv9v/memset.S
+++ b/sysdeps/sparc/sparc64/sparcv9v/memset.S
@@ -1,5 +1,5 @@
 /* Set a block of memory to some byte value.  For SUN4V Niagara.
-   Copyright (C) 2006 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller (davem@davemloft.net)
 
@@ -49,7 +49,11 @@ END(memset)
 
 ENTRY(__bzero)
 	clr		%o2
-1:	brz,pn		%o1, 90f
+1:
+#ifndef USE_BRP
+	srl		%o1, 0, %o1
+#endif
+	brz,pn		%o1, 90f
 	 mov		%o0, %o3
 
 	wr		%g0, ASI_P, %asi
diff --git a/sysdeps/sparc/sparc64/sparcv9v2/memcpy.S b/sysdeps/sparc/sparc64/sparcv9v2/memcpy.S
index d94dd47..b261f46 100644
--- a/sysdeps/sparc/sparc64/sparcv9v2/memcpy.S
+++ b/sysdeps/sparc/sparc64/sparcv9v2/memcpy.S
@@ -1,5 +1,5 @@
 /* Copy SIZE bytes from SRC to DEST.  For SUN4V Niagara-2.
-   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller (davem@davemloft.net)
 
@@ -163,6 +163,9 @@ END(bcopy)
 
 	.align		32
 ENTRY(memcpy)
+#ifndef USE_BPR
+	srl		%o2, 0, %o2
+#endif
 100:	/* %o0=dst, %o1=src, %o2=len */
 	mov		%o0, %g5
 	cmp		%o2, 0