about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-10-11 08:52:58 +0000
committerJakub Jelinek <jakub@redhat.com>2008-10-11 08:52:58 +0000
commit19c10a478c530d5af872890941662504c33ef745 (patch)
tree6771e6f2263d4aac8c11aeff36eab411d6ed7cad
parent17f8b4a95570df3e0d9a13eb134ca7aade70c710 (diff)
downloadglibc-19c10a478c530d5af872890941662504c33ef745.tar.gz
glibc-19c10a478c530d5af872890941662504c33ef745.tar.xz
glibc-19c10a478c530d5af872890941662504c33ef745.zip
* sysdeps/sparc/sparc64/sparcv9v/memcpy.S: When not USE_BPR,
make sure any registers used with 64-bit 'branch-on-register' 
instructions have their top 32-bits clear. 
* sysdeps/sparc/sparc64/sparcv9v/memset.S: Likewise. 
* sysdeps/sparc/sparc64/sparcv9v2/memcpy.S: Likewise.
2008-10-09  Jakub Jelinek <jakub@redhat.com>
	    David S. Miller  <davem@davemloft.net>

	* sysdeps/sparc/sparc64/sparcv9v/memcpy.S: When not USE_BPR,
	make sure any registers used with 64-bit 'branch-on-register'
	instructions have their top 32-bits clear.
	* sysdeps/sparc/sparc64/sparcv9v/memset.S: Likewise.
	* sysdeps/sparc/sparc64/sparcv9v2/memcpy.S: Likewise.
-rw-r--r--ChangeLog9
-rw-r--r--sysdeps/sparc/sparc64/sparcv9v/memcpy.S5
-rw-r--r--sysdeps/sparc/sparc64/sparcv9v/memset.S8
-rw-r--r--sysdeps/sparc/sparc64/sparcv9v2/memcpy.S5
4 files changed, 23 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 9dd19f1575..ca07dc73e1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-10-09  Jakub Jelinek <jakub@redhat.com>
+	    David S. Miller  <davem@davemloft.net>
+
+	* sysdeps/sparc/sparc64/sparcv9v/memcpy.S: When not USE_BPR,
+	make sure any registers used with 64-bit 'branch-on-register'
+	instructions have their top 32-bits clear.
+	* sysdeps/sparc/sparc64/sparcv9v/memset.S: Likewise.
+	* sysdeps/sparc/sparc64/sparcv9v2/memcpy.S: Likewise.
+
 2008-09-18  Andreas Schwab  <schwab@suse.de>
 
 	[BZ #6942]
diff --git a/sysdeps/sparc/sparc64/sparcv9v/memcpy.S b/sysdeps/sparc/sparc64/sparcv9v/memcpy.S
index 05c837fa25..ad2b0f742c 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 ac0a50cf8e..64817b8871 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 d94dd4701e..b261f461a4 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