2008-10-09 Jakub Jelinek , David S. Miller * 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