diff --git a/glibc-sparcv9v-memset.patch b/glibc-sparcv9v-memset.patch index 542c738..4169304 100644 --- a/glibc-sparcv9v-memset.patch +++ b/glibc-sparcv9v-memset.patch @@ -1,5 +1,37 @@ ---- libc/sysdeps/sparc/sparc64/sparcv9v/memset.S.jj 2006-03-06 02:33:03.000000000 +0100 -+++ libc/sysdeps/sparc/sparc64/sparcv9v/memset.S 2008-10-07 23:52:22.000000000 +0200 +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. @@ -7,14 +39,37 @@ This file is part of the GNU C Library. Contributed by David S. Miller (davem@davemloft.net) -@@ -49,6 +49,9 @@ END(memset) +@@ -49,7 +49,11 @@ END(memset) ENTRY(__bzero) clr %o2 +-1: brz,pn %o1, 90f ++1: +#ifndef USE_BRP + srl %o1, 0, %o1 +#endif - 1: brz,pn %o1, 90f ++ 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 diff --git a/glibc.spec b/glibc.spec index 7918473..af11618 100644 --- a/glibc.spec +++ b/glibc.spec @@ -23,7 +23,7 @@ Summary: The GNU libc libraries Name: glibc Version: 2.8 -Release: 9 +Release: 10 # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries. # Things that are linked directly into dynamically linked programs # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional @@ -1022,6 +1022,9 @@ rm -f *.filelist* %endif %changelog +* Thu Oct 09 2008 Dennis Gilmore 2.8-10 +- updated memset patch from davem and jakub + * Tue Oct 07 2008 Dennis Gilmore 2.8-9 - apply patch from Jakub for sparcv9v memset issue