This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


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] sparc32 TLS glibc support


Hi!

The following patch passes make check with --with-tls --without-__thread
on sparc-*-linux and sparcv9-*-linux.

2003-01-24  Jakub Jelinek  <jakub@redhat.com>

	* elf/tls-macros.h: Add SPARC 32-bit definitions.
	* sysdeps/sparc/sparc32/elf/configure.in: Add TLS check.
	* sysdeps/sparc/sparc32/elf/configure: Rebuilt.
	* sysdeps/sparc/sparc32/dl-machine.h: Add dl_machine_h guards
	for the first half of the header.  Include tls.h.
	(elf_machine_type_class): Return ELF_RTYPE_CLASS_PLT for TLS
	relocs too.
	(elf_machine_rela): Handle TLS relocs.
	* sysdeps/sparc/dl-tls.h: New file.

	* sysdeps/unix/sysv/linux/sparc/sparc32/socket.S: Add cancellation
	support.

	* sysdeps/sparc/sparc32/sparcv9/hp-timing.h: Use %g6 instead of %g7.
	* sysdeps/sparc/sparc32/memchr.S: Likewise.
	* sysdeps/sparc/sparc32/memcpy.S: Likewise.
	* sysdeps/sparc/sparc32/strcat.S: Likewise.
	* sysdeps/sparc/sparc32/strchr.S: Likewise.
	* sysdeps/sparc/sparc32/strcmp.S: Likewise.
	* sysdeps/sparc/sparc32/strcpy.S: Likewise.
	* sysdeps/sparc/sparc64/sparcv9b/memcpy.S: Likewise.
	* sysdeps/sparc/sparc64/hp-timing.h: Likewise.
	* sysdeps/sparc/sparc64/memcpy.S: Likewise.
	* sysdeps/sparc/sparc64/stpcpy.S: Likewise.
	* sysdeps/sparc/sparc64/stpncpy.S: Likewise.
	* sysdeps/sparc/sparc64/strcat.S: Likewise.
	* sysdeps/sparc/sparc64/strchr.S: Likewise.
	* sysdeps/sparc/sparc64/strcmp.S: Likewise.
	* sysdeps/sparc/sparc64/strcpy.S: Likewise.
	* sysdeps/sparc/sparc64/strncmp.S: Likewise.
	* sysdeps/sparc/sparc64/strncpy.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.
linuxthreads/
	* sysdeps/sparc/sparc32/pt-machine.h (__thread_self): Change to %g7,
	as required by TLS ABI.
	* sysdeps/sparc/sparc64/pt-machine.h (__thread_self): Likewise.
	* sysdeps/sparc/tls.h [HAVE_TLS_SUPPORT] (USE_TLS, TLS_INIT_TCB_SIZE,
	TLS_INIT_TCB_ALIGN, TLS_TCB_SIZE, TLS_TCB_ALIGN, TLS_TCB_AT_TP,
	INSTALL_DTV, INSTALL_NEW_DTV, GET_DTV, TLS_INIT_TP, THREAD_DTV):
	Define.
        [HAVE_TLS_SUPPORT]: Include descr.h and sysdep.h.
	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Use %g7
	instead of %g6 for thread pointer.
	* sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: Likewise.

--- libc/elf/tls-macros.h.jj	Sun Jan 12 03:45:42 2003
+++ libc/elf/tls-macros.h	Fri Jan 24 15:55:24 2003
@@ -298,6 +298,75 @@ register void *__gp __asm__("$29");
           : "=r" (__l) : : "loc0", __TLS_CALL_CLOBBERS);		      \
      __l; })
 
+#elif defined __sparc__ && !defined __arch64__
+
+# define TLS_LE(x) \
+  ({ int *__l;								      \
+     asm ("sethi %%tle_hix22(" #x "), %0" : "=r" (__l));		      \
+     asm ("xor %1, %%tle_lox10(" #x "), %0" : "=r" (__l) : "r" (__l));	      \
+     asm ("add %%g7, %1, %0" : "=r" (__l) : "r" (__l));			      \
+     __l; })
+
+# ifdef __PIC__ 
+#  define TLS_LOAD_PIC \
+  ({ register long pc __asm__ ("%o7");					      \
+     long got;								      \
+     asm ("sethi %%hi(_GLOBAL_OFFSET_TABLE_-4), %1\n\t"			      \
+	  "call .+8\n\t"						      \
+	  "add %1, %%lo(_GLOBAL_OFFSET_TABLE_+4), %1\n\t"		      \
+	  "add %1, %0, %1\n\t"						      \
+	  : "=r" (pc), "=r" (got));					      \
+     got; })
+# else
+#  define TLS_LOAD_PIC \
+   ({ long got;								      \
+      asm (".hidden _GLOBAL_OFFSET_TABLE_\n\t"				      \
+	   "sethi %%hi(_GLOBAL_OFFSET_TABLE_), %0\n\t"			      \
+	   "or %0, %%lo(_GLOBAL_OFFSET_TABLE_), %0"			      \
+	   : "=r" (got));						      \
+      got; })
+# endif
+
+# define TLS_IE(x) \
+  ({ int *__l;								      \
+     asm ("sethi %%tie_hi22(" #x "), %0" : "=r" (__l));			      \
+     asm ("add %1, %%tie_lo10(" #x "), %0" : "=r" (__l) : "r" (__l));	      \
+     asm ("ld [%1 + %2], %0, %%tie_ld(" #x ")"				      \
+	  : "=r" (__l) : "r" (TLS_LOAD_PIC), "r" (__l));		      \
+     asm ("add %%g7, %1, %0, %%tie_add(" #x ")" : "=r" (__l) : "r" (__l));    \
+     __l; })
+
+# define TLS_LD(x) \
+  ({ int *__l; register void *__o0 asm ("%o0");				      \
+     long __o;								      \
+     asm ("sethi %%tldm_hi22(" #x "), %0" : "=r" (__l));		      \
+     asm ("add %1, %%tldm_lo10(" #x "), %0" : "=r" (__l) : "r" (__l));	      \
+     asm ("add %1, %2, %0, %%tldm_add(" #x ")"				      \
+	  : "=r" (__o0) : "r" (TLS_LOAD_PIC), "r" (__l));		      \
+     asm ("call __tls_get_addr, %%tgd_call(" #x ")\n\t"			      \
+	  " nop"							      \
+	  : "=r" (__o0) : "0" (__o0)					      \
+	  : "g1", "g2", "g3", "g4", "g5", "g6", "o1", "o2", "o3", "o4",	      \
+	    "o5", "o7");						      \
+     asm ("sethi %%tldo_hix22(" #x "), %0" : "=r" (__o));		      \
+     asm ("xor %1, %%tldo_lox10(" #x "), %0" : "=r" (__o) : "r" (__o));	      \
+     asm ("add %1, %2, %0, %%tldo_add(" #x ")" : "=r" (__l)		      \
+	  : "r" (__o0), "r" (__o));					      \
+     __l; })
+
+# define TLS_GD(x) \
+  ({ int *__l; register void *__o0 asm ("%o0");				      \
+     asm ("sethi %%tgd_hi22(" #x "), %0" : "=r" (__l));			      \
+     asm ("add %1, %%tgd_lo10(" #x "), %0" : "=r" (__l) : "r" (__l));	      \
+     asm ("add %1, %2, %0, %%tgd_add(" #x ")"				      \
+	  : "=r" (__o0) : "r" (TLS_LOAD_PIC), "r" (__l));		      \
+     asm ("call __tls_get_addr, %%tgd_call(" #x ")\n\t"			      \
+	  " nop"							      \
+	  : "=r" (__o0) : "0" (__o0)					      \
+	  : "g1", "g2", "g3", "g4", "g5", "g6", "o1", "o2", "o3", "o4",	      \
+	    "o5", "o7");						      \
+     __o0; })
+
 #else
 # error "No support for this architecture so far."
 #endif
--- libc/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h.jj	Mon Aug 26 18:39:53 2002
+++ libc/linuxthreads/sysdeps/sparc/sparc32/pt-machine.h	Thu Jan 23 22:15:05 2003
@@ -1,6 +1,6 @@
 /* Machine-dependent pthreads configuration and inline functions.
    sparc version.
-   Copyright (C) 1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc.
+   Copyright (C) 1996-1998, 2000-2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>.
 
@@ -53,10 +53,10 @@ testandset (int *spinlock)
 register char *stack_pointer __asm__("%sp");
 
 
-/* Registers %g6 and %g7 are reserved by the ABI for "system use".  It
-   happens that Solaris uses %g6 for the thread pointer -- we do the same.  */
+/* Registers %g6 and %g7 are reserved by the ABI for "system use".
+   %g7 is specified in the TLS ABI as thread pointer -- we do the same.  */
 struct _pthread_descr_struct;
-register struct _pthread_descr_struct *__thread_self __asm__("%g6");
+register struct _pthread_descr_struct *__thread_self __asm__("%g7");
 
 /* Return the thread descriptor for the current thread.  */
 #define THREAD_SELF  __thread_self
--- libc/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h.jj	Mon Aug 26 18:39:51 2002
+++ libc/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h	Thu Jan 23 22:16:02 2003
@@ -1,6 +1,6 @@
 /* Machine-dependent pthreads configuration and inline functions.
    Sparc v9 version.
-   Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
+   Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>.
 
@@ -59,10 +59,10 @@ testandset (int *spinlock)
 register char *stack_pointer __asm__ ("%sp");
 
 
-/* Registers %g6 and %g7 are reserved by the ABI for "system use".  It
-   happens that Solaris uses %g6 for the thread pointer -- we do the same.  */
+/* Registers %g6 and %g7 are reserved by the ABI for "system use".  The
+   TLS ABI specifies %g7 as the thread pointer.  */
 struct _pthread_descr_struct;
-register struct _pthread_descr_struct *__thread_self __asm__ ("%g6");
+register struct _pthread_descr_struct *__thread_self __asm__ ("%g7");
 
 /* Return the thread descriptor for the current thread.  */
 #define THREAD_SELF  __thread_self
--- libc/linuxthreads/sysdeps/sparc/tls.h.jj	Sat Dec 28 17:10:45 2002
+++ libc/linuxthreads/sysdeps/sparc/tls.h	Thu Jan 23 21:24:39 2003
@@ -1,5 +1,5 @@
 /* Definitions for thread-local data handling.  linuxthreads/sparc version.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -45,9 +45,56 @@ typedef struct
 # include <tcb-offsets.h>
 #endif /* __ASSEMBLER__ */
 
-#undef USE_TLS
+#ifdef HAVE_TLS_SUPPORT
 
-#if USE_TLS
+/* Signal that TLS support is available.  */
+# define USE_TLS	1
+
+# ifndef __ASSEMBLER__
+/* Get system call information.  */
+#  include <sysdep.h>
+
+/* Get the thread descriptor definition.  */
+#  include <linuxthreads/descr.h>
+
+/* This is the size of the initial TCB.  */
+#  define TLS_INIT_TCB_SIZE sizeof (tcbhead_t)
+
+/* Alignment requirements for the initial TCB.  */
+#  define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
+
+/* This is the size of the TCB.  */
+#  define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
+
+/* Alignment requirements for the TCB.  */
+#  define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
+
+/* The TCB can have any size and the memory following the address the
+   thread pointer points to is unspecified.  Allocate the TCB there.  */
+#  define TLS_TCB_AT_TP	1
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+#  define INSTALL_DTV(descr, dtvp) \
+  ((tcbhead_t *) (descr))->dtv = (dtvp) + 1
+
+/* Install new dtv for current thread.  */
+#  define INSTALL_NEW_DTV(DTV) \
+  (((tcbhead_t *) __thread_self)->dtv = (DTV))
+
+/* Return dtv of given thread descriptor.  */
+#  define GET_DTV(descr) \
+  (((tcbhead_t *) (descr))->dtv)
+
+/* Code to initially initialize the thread pointer.  */
+# define TLS_INIT_TP(descr, secondcall) \
+  (__thread_self = (__typeof (__thread_self)) (descr), NULL)
+
+/* Return the address of the dtv for the current thread.  */
+#  define THREAD_DTV() \
+  (((tcbhead_t *) __thread_self)->dtv)
+
+# endif
 
 #else
 
--- libc/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h.jj	Tue Dec 31 15:25:24 2002
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h	Thu Jan 23 22:16:43 2003
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
 
@@ -29,7 +29,7 @@
 # define PSEUDO(name, syscall_name, args)				      \
 	.text;								      \
 ENTRY(name)								      \
-	ld [%g6 + MULTIPLE_THREADS_OFFSET], %g1;			      \
+	ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1;			      \
 	cmp %g1, 0;							      \
 	bne 1f;								      \
 	 mov SYS_ify(syscall_name), %g1;				      \
@@ -86,7 +86,7 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_er
   __builtin_expect (THREAD_GETMEM (THREAD_SELF,				      \
 				   p_header.data.multiple_threads) == 0, 1)
 # else
-#  define SINGLE_THREAD_P ld [%g6 + MULTIPLE_THREADS_OFFSET], %g1
+#  define SINGLE_THREAD_P ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1
 # endif
 
 #elif !defined __ASSEMBLER__
--- libc/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S.jj	Tue Jan 14 20:05:08 2003
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S	Thu Jan 23 22:16:56 2003
@@ -21,7 +21,7 @@
 
 	.text
 ENTRY(__vfork)
-	ld	[%g6 + MULTIPLE_THREADS_OFFSET], %o0
+	ld	[%g7 + MULTIPLE_THREADS_OFFSET], %o0
 	cmp	%o0, 0
 #ifdef SHARED
 	bne	HIDDEN_JUMPTARGET(__fork)
--- libc/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h.jj	Tue Dec 31 15:25:25 2002
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h	Thu Jan 23 22:17:40 2003
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
 
@@ -29,7 +29,7 @@
 # define PSEUDO(name, syscall_name, args)				      \
 	.text;								      \
 ENTRY(name)								      \
-	ld [%g6 + MULTIPLE_THREADS_OFFSET], %g1;			      \
+	ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1;			      \
 	brz,pn %g1, 1f;							      \
 	 mov SYS_ify(syscall_name), %g1;				      \
 	ta 0x6d;							      \
@@ -85,7 +85,7 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_er
   __builtin_expect (THREAD_GETMEM (THREAD_SELF,				      \
 				   p_header.data.multiple_threads) == 0, 1)
 # else
-#  define SINGLE_THREAD_P ld [%g6 + MULTIPLE_THREADS_OFFSET], %g1
+#  define SINGLE_THREAD_P ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1
 # endif
 
 #elif !defined __ASSEMBLER__
--- libc/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S.jj	Tue Jan 14 20:05:44 2003
+++ libc/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S	Thu Jan 23 22:17:55 2003
@@ -21,7 +21,7 @@
 
 	.text
 ENTRY(__vfork)
-	ld	[%g6 + MULTIPLE_THREADS_OFFSET], %o0
+	ld	[%g7 + MULTIPLE_THREADS_OFFSET], %o0
 #ifdef SHARED
 	cmp	%o0, 0
 	bne	HIDDEN_JUMPTARGET (__fork)
--- libc/sysdeps/sparc/sparc32/elf/configure.in.jj	Thu Jan 23 22:37:02 2003
+++ libc/sysdeps/sparc/sparc32/elf/configure.in	Thu Jan 23 22:43:31 2003
@@ -0,0 +1,43 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/sparc/sparc32/elf.
+
+if test "$usetls" != no; then
+# Check for support of thread-local storage handling in assembler and linker.
+AC_CACHE_CHECK(for sparc32 TLS support, libc_cv_sparc32_tls, [dnl
+cat > conftest.s <<\EOF
+	.section ".tdata", "awT", @progbits
+	.globl foo
+foo:	.word	1
+	.section ".tbss", "awT", @nobits
+	.globl bar
+bar:	.skip	4
+	.text
+baz:	sethi	%tgd_hi22(foo), %l1
+	add	%l1, %tgd_lo10(foo), %l1
+	add	%l7, %l1, %o0, %tgd_add(foo)
+	call	__tls_get_addr, %tgd_call(foo)
+	sethi	%tldm_hi22(bar), %l1
+	add	%l1, %tldm_lo10(bar), %l1
+	add	%l7, %l1, %o0, %tldm_add(bar)
+	call	__tls_get_addr, %tldm_call(bar)
+	sethi	%tldo_hix22(bar), %l1
+	xor	%l1, %tldo_lox10(bar), %l1
+	add	%o0, %l1, %l1, %tldo_add(bar)
+	sethi	%tie_hi22(foo), %l1
+	add	%l1, %tie_lo10(foo), %l1
+	ld	[%l7 + %l1], %l1, %tie_ld(foo)
+	add	%g7, %l1, %l1, %tie_add(foo)
+	sethi	%tle_hix22(foo), %l1
+	xor	%l1, %tle_lox10(foo), %l1
+EOF
+dnl
+if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+  libc_cv_sparc32_tls=yes
+else
+  libc_cv_sparc32_tls=no
+fi
+rm -f conftest*])
+if test $libc_cv_sparc32_tls = yes; then
+  AC_DEFINE(HAVE_TLS_SUPPORT)
+fi
+fi
--- libc/sysdeps/sparc/sparc32/elf/configure.jj	Thu Jan 23 22:37:05 2003
+++ libc/sysdeps/sparc/sparc32/elf/configure	Thu Jan 23 22:44:37 2003
@@ -0,0 +1,57 @@
+# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
+ # Local configure fragment for sysdeps/sparc/sparc32/elf.
+
+if test "$usetls" != no; then
+# Check for support of thread-local storage handling in assembler and linker.
+echo "$as_me:$LINENO: checking for sparc32 TLS support" >&5
+echo $ECHO_N "checking for sparc32 TLS support... $ECHO_C" >&6
+if test "${libc_cv_sparc32_tls+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat > conftest.s <<\EOF
+	.section ".tdata", "awT", @progbits
+	.globl foo
+foo:	.word	1
+	.section ".tbss", "awT", @nobits
+	.globl bar
+bar:	.skip	4
+	.text
+baz:	sethi	%tgd_hi22(foo), %l1
+	add	%l1, %tgd_lo10(foo), %l1
+	add	%l7, %l1, %o0, %tgd_add(foo)
+	call	__tls_get_addr, %tgd_call(foo)
+	sethi	%tldm_hi22(bar), %l1
+	add	%l1, %tldm_lo10(bar), %l1
+	add	%l7, %l1, %o0, %tldm_add(bar)
+	call	__tls_get_addr, %tldm_call(bar)
+	sethi	%tldo_hix22(bar), %l1
+	xor	%l1, %tldo_lox10(bar), %l1
+	add	%o0, %l1, %l1, %tldo_add(bar)
+	sethi	%tie_hi22(foo), %l1
+	add	%l1, %tie_lo10(foo), %l1
+	ld	[%l7 + %l1], %l1, %tie_ld(foo)
+	add	%g7, %l1, %l1, %tie_add(foo)
+	sethi	%tle_hix22(foo), %l1
+	xor	%l1, %tle_lox10(foo), %l1
+EOF
+if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  libc_cv_sparc32_tls=yes
+else
+  libc_cv_sparc32_tls=no
+fi
+rm -f conftest*
+fi
+echo "$as_me:$LINENO: result: $libc_cv_sparc32_tls" >&5
+echo "${ECHO_T}$libc_cv_sparc32_tls" >&6
+if test $libc_cv_sparc32_tls = yes; then
+  cat >>confdefs.h <<\_ACEOF
+#define HAVE_TLS_SUPPORT 1
+_ACEOF
+
+fi
+fi
--- libc/sysdeps/sparc/sparc32/sparcv9/hp-timing.h.jj	Fri Feb  1 14:02:51 2002
+++ libc/sysdeps/sparc/sparc32/sparcv9/hp-timing.h	Thu Jan 23 21:17:36 2003
@@ -1,5 +1,5 @@
 /* High precision, low overhead timing functions.  sparcv9 version.
-   Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller <davem@redhat.com>, 2001.
 
@@ -58,17 +58,17 @@ typedef unsigned long long int hp_timing
 do {								\
   hp_timing_t __diff = (Diff) - GL(dl_hp_timing_overhead);	\
   __asm__ __volatile__("srl	%L0, 0, %%g1\n\t"		\
-		       "sllx	%H0, 32, %%g7\n\t"		\
-		       "or	%%g1, %%g7, %%g1\n\t"		\
+		       "sllx	%H0, 32, %%g6\n\t"		\
+		       "or	%%g1, %%g6, %%g1\n\t"		\
 		       "1: ldx	[%1], %%g5\n\t"			\
-		       "add	%%g5, %%g1, %%g7\n\t"		\
-		       "casx	[%1], %%g5,  %%g7\n\t"		\
-		       "cmp	%%g5, %%g7\n\t"			\
+		       "add	%%g5, %%g1, %%g6\n\t"		\
+		       "casx	[%1], %%g5,  %%g6\n\t"		\
+		       "cmp	%%g5, %%g6\n\t"			\
 		       "bne,pn	%%xcc, 1b\n\t"			\
 		       " nop"					\
 		       : /* no outputs */			\
 		       : "r" (__diff), "r" (&(Sum))		\
-		       : "memory", "g1", "g5", "g7");		\
+		       : "memory", "g1", "g5", "g6");		\
 } while(0)
 
 #define HP_TIMING_ACCUM_NT(Sum, Diff)	(Sum) += (Diff)
--- libc/sysdeps/sparc/sparc32/dl-machine.h.jj	Thu Sep 26 23:23:44 2002
+++ libc/sysdeps/sparc/sparc32/dl-machine.h	Fri Jan 24 12:43:37 2003
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  SPARC version.
-   Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1996-2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -17,11 +17,15 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#ifndef dl_machine_h
+#define dl_machine_h
+
 #define ELF_MACHINE_NAME "sparc"
 
 #include <string.h>
 #include <sys/param.h>
 #include <ldsodefs.h>
+#include <tls.h>
 
 #ifndef VALIDX
 # define VALIDX(tag) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGNUM \
@@ -237,9 +241,17 @@ elf_machine_runtime_setup (struct link_m
    PLT entries should not be allowed to define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
-#define elf_machine_type_class(type) \
-  ((((type) == R_SPARC_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)	\
+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+# define elf_machine_type_class(type) \
+  ((((type) == R_SPARC_JMP_SLOT						      \
+     || ((type) >= R_SPARC_TLS_GD_HI22 && (type) <= R_SPARC_TLS_TPOFF64))     \
+    * ELF_RTYPE_CLASS_PLT)						      \
+   | (((type) == R_SPARC_COPY) * ELF_RTYPE_CLASS_COPY))
+#else
+# define elf_machine_type_class(type) \
+  ((((type) == R_SPARC_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)			      \
    | (((type) == R_SPARC_COPY) * ELF_RTYPE_CLASS_COPY))
+#endif
 
 /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.  */
 #define ELF_MACHINE_JMP_SLOT	R_SPARC_JMP_SLOT
@@ -413,6 +425,8 @@ elf_machine_plt_value (struct link_map *
   return value + reloc->r_addend;
 }
 
+#endif /* dl_machine_h */
+
 #ifdef RESOLVE
 
 /* Perform the relocation specified by RELOC and SYM (which is fully resolved).
@@ -448,16 +462,29 @@ elf_machine_rela (struct link_map *map, 
 #if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP
       const Elf32_Sym *const refsym = sym;
 #endif
+#if defined USE_TLS && !defined RTLD_BOOTSTRAP
+      struct link_map *sym_map;
+#endif
       Elf32_Addr value;
 #ifndef RESOLVE_CONFLICT_FIND_MAP
       if (sym->st_shndx != SHN_UNDEF &&
 	  ELF32_ST_BIND (sym->st_info) == STB_LOCAL)
-	value = map->l_addr;
+	{
+	  value = map->l_addr;
+# if defined USE_TLS && !defined RTLD_BOOTSTRAP
+	  sym_map = map;
+# endif
+	}
       else
 	{
+# if defined USE_TLS && !defined RTLD_BOOTSTRAP
+	  sym_map = RESOLVE_MAP (&sym, version, r_type);
+	  value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
+# else	  
 	  value = RESOLVE (&sym, version, r_type);
 	  if (sym)
 	    value += sym->st_value;
+# endif
 	}
 #else
       value = 0;
@@ -496,6 +523,43 @@ elf_machine_rela (struct link_map *map, 
 	     so we can optimize the first instruction of .plt out.  */
 	  sparc_fixup_plt (reloc, reloc_addr, value, 0);
 	  break;
+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
+    && !defined RESOLVE_CONFLICT_FIND_MAP
+	case R_SPARC_TLS_DTPMOD32:
+	  /* Get the information from the link map returned by the
+	     resolv function.  */
+	  if (sym_map != NULL)
+	    *reloc_addr = sym_map->l_tls_modid;
+	  break;
+	case R_SPARC_TLS_DTPOFF32:
+	  /* During relocation all TLS symbols are defined and used.
+	     Therefore the offset is already correct.  */
+	  *reloc_addr = (sym == NULL ? 0 : sym->st_value) + reloc->r_addend;
+	  break;
+	case R_SPARC_TLS_TPOFF32:
+	  /* The offset is negative, forward from the thread pointer.  */
+	  /* We know the offset of object the symbol is contained in.
+	     It is a negative value which will be added to the
+	     thread pointer.  */
+	  CHECK_STATIC_TLS (map, sym_map);
+	  *reloc_addr
+	    = (sym == NULL ? 0 : sym->st_value - sym_map->l_tls_offset)
+	      + reloc->r_addend;
+	  break;
+# ifndef RTLD_BOOTSTRAP
+	case R_SPARC_TLS_LE_HIX22:
+	case R_SPARC_TLS_LE_LOX10:
+	  CHECK_STATIC_TLS (map, sym_map);
+	  value = (sym == NULL ? 0 : sym->st_value - sym_map->l_tls_offset)
+		  + reloc->r_addend;
+	  if (r_type == R_SPARC_TLS_LE_HIX22)
+	    *reloc_addr = (*reloc_addr & 0xffc00000) | ((~value) >> 10);
+	  else
+	    *reloc_addr = (*reloc_addr & 0xffffe000) | (value & 0x3ff)
+			  | 0x1c00;
+	  break;
+# endif
+#endif
 #ifndef RTLD_BOOTSTRAP
 	case R_SPARC_8:
 	  *(char *) reloc_addr = value;
--- libc/sysdeps/sparc/sparc32/memchr.S.jj	Fri Jul  6 00:56:04 2001
+++ libc/sysdeps/sparc/sparc32/memchr.S	Thu Jan 23 21:17:59 2003
@@ -1,7 +1,7 @@
 /* memchr (str, ch, n) -- Return pointer to first occurrence of CH in STR less
    than N.
    For SPARC v7.
-   Copyright (C) 1996,1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1999, 2000, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz> and
 		  David S. Miller <davem@caip.rutgers.edu>.
@@ -67,23 +67,23 @@
 
 ENTRY(__memchr)
 	andcc		%o1, 0xff, %o1
-	sll		%o1, 8, %g7
+	sll		%o1, 8, %g6
 	andcc		%o0, 3, %g0
-	or		%o1, %g7, %g7
-	sll		%g7, 16, %o3
+	or		%o1, %g6, %g6
+	sll		%g6, 16, %o3
 	bne		0b
-	 or		%o3, %g7, %g2
+	 or		%o3, %g6, %g2
 	sethi		%hi(0x80808080), %o4
 	or		%o4, %lo(0x80808080), %o3
 4:	sethi		%hi(0x01010101), %o5
 5:	and		%o2, 3, %g1
 7:	andcc		%o2, 0xfffffffc, %o2
 	be		0f
-	 or		%o5, %lo(0x01010101), %g7
+	 or		%o5, %lo(0x01010101), %g6
 	ld		[%o0], %g4
 6:	xor		%g4, %g2, %g5
 	add		%o0, 4, %o0
-	sub		%g5, %g7, %g5
+	sub		%g5, %g6, %g5
 	andcc		%g5, %o3, %g0
 	bne		8f
 	 subcc		%o2, 4, %o2
--- libc/sysdeps/sparc/sparc32/memcpy.S.jj	Fri Jul  6 00:56:04 2001
+++ libc/sysdeps/sparc/sparc32/memcpy.S	Thu Jan 23 21:18:12 2003
@@ -1,6 +1,6 @@
 /* Copy SIZE bytes from SRC to DEST.
    For SPARC v7.
-   Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller <davem@caip.rutgers.edu>,
 		  Eddie C. Dost <ecd@skynet.be> and
@@ -196,7 +196,7 @@ ENTRY(memmove)
 	st		%o4, [%o0 - 4]
 	sub		%o1, 4, %o1
 	sub		%o0, 4, %o0
-2:	andcc		%g1, 0xffffff80, %g7
+2:	andcc		%g1, 0xffffff80, %g6
 	be		3f
 	 andcc		%o0, 4, %g0
 
@@ -205,23 +205,23 @@ ENTRY(memmove)
 	RMOVE_BIGCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5)
 	RMOVE_BIGCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5)
 	RMOVE_BIGCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5)
-	subcc		%g7, 128, %g7
+	subcc		%g6, 128, %g6
 	sub		%o1, 128, %o1
 	bne		5b
 	 sub		%o0, 128, %o0
 
-3:	andcc		%g1, 0x70, %g7
+3:	andcc		%g1, 0x70, %g6
 	be		72f
 	 andcc		%g1, 8, %g0
 
-	srl		%g7, 1, %o4
+	srl		%g6, 1, %o4
 	mov		%o7, %g2
-	add		%g7, %o4, %o4
+	add		%g6, %o4, %o4
 101:	call		100f
-	 sub		%o1, %g7, %o1
+	 sub		%o1, %g6, %o1
 	mov		%g2, %o7
 	jmpl		%o5 + (72f - 101b), %g0
-	 sub		%o0, %g7, %o0
+	 sub		%o0, %g6, %o0
 
 71:	RMOVE_LASTCHUNK(o1, o0, 0x60, g2, g3, g4, g5)
 	RMOVE_LASTCHUNK(o1, o0, 0x50, g2, g3, g4, g5)
@@ -264,23 +264,23 @@ ENTRY(memmove)
 	RMOVE_BIGALIGNCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5)
 	RMOVE_BIGALIGNCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5)
 	RMOVE_BIGALIGNCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5)
-	subcc		%g7, 128, %g7
+	subcc		%g6, 128, %g6
 	sub		%o1, 128, %o1
 	bne		74b
 	 sub		%o0, 128, %o0
 
-	andcc		%g1, 0x70, %g7
+	andcc		%g1, 0x70, %g6
 	be		72b
 	 andcc		%g1, 8, %g0
 
-	srl		%g7, 1, %o4
+	srl		%g6, 1, %o4
 	mov		%o7, %g2
-	add		%g7, %o4, %o4
+	add		%g6, %o4, %o4
 102:	call		100f
-	 sub		%o1, %g7, %o1
+	 sub		%o1, %g6, %o1
 	mov		%g2, %o7
 	jmpl		%o5 + (72b - 102b), %g0
-	 sub		%o0, %g7, %o0
+	 sub		%o0, %g6, %o0
 
 75:	and		%o2, 0xe, %o3
 	mov		%o7, %g2
@@ -351,7 +351,7 @@ ENTRY(memmove)
 	sll		%g2, 3, %g4
 	mov		32, %g2
 	be		4f
-	 sub		%g2, %g4, %g7
+	 sub		%g2, %g4, %g6
 
 	blu		3f
 	 cmp		%g3, 8
@@ -386,22 +386,22 @@ ENTRY(memmove)
 
 	ld		[%o1 + 12], %o3
 5:	sll		%o5, %g4, %g2
-	srl		%g1, %g7, %g5
+	srl		%g1, %g6, %g5
 	or		%g2, %g5, %g2
 	st		%g2, [%o0 + 12]
 6:	ld		[%o1 + 8], %o4
 	sll		%o3, %g4, %g2
-	srl		%o5, %g7, %g5
+	srl		%o5, %g6, %g5
 	or		%g2, %g5, %g2
 	st		%g2, [%o0 + 8]
 7:	ld		[%o1 + 4], %g1
 	sll		%o4, %g4, %g2
-	srl		%o3, %g7, %g5
+	srl		%o3, %g6, %g5
 	or		%g2, %g5, %g2
 	st		%g2, [%o0 + 4]
 8:	ld		[%o1], %o5
 	sll		%g1, %g4, %g2
-	srl		%o4, %g7, %g5
+	srl		%o4, %g6, %g5
 	addcc		%g3, -4, %g3
 	or		%g2, %g5, %g2
 	add		%o1, -16, %o1
@@ -410,7 +410,7 @@ ENTRY(memmove)
 	bne,a		5b	
 	 ld		[%o1 + 12], %o3
 	sll		%o5, %g4, %g2
-	srl		%g1, %g7, %g5
+	srl		%g1, %g6, %g5
 	srl		%g4, 3, %g3
 	or		%g2, %g5, %g2
 	add		%o1, %g3, %o1
@@ -471,7 +471,7 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	st		%o4, [%o0]
 	add		%o1, 4, %o1
 	add		%o0, 4, %o0
-2:	andcc		%g1, 0xffffff80, %g7
+2:	andcc		%g1, 0xffffff80, %g6
 	be		3f
 	 andcc		%o0, 4, %g0
 
@@ -480,20 +480,20 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	MOVE_BIGCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5)
 	MOVE_BIGCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5)
 	MOVE_BIGCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5)
-	subcc		%g7, 128, %g7
+	subcc		%g6, 128, %g6
 	add		%o1, 128, %o1
 	bne		5b
 	 add		%o0, 128, %o0
-3:	andcc		%g1, 0x70, %g7
+3:	andcc		%g1, 0x70, %g6
 	be		80f
 	 andcc		%g1, 8, %g0
 
-	srl		%g7, 1, %o4
+	srl		%g6, 1, %o4
 	mov		%o7, %g2
-	add		%g7, %o4, %o4
-	add		%o1, %g7, %o1
+	add		%g6, %o4, %o4
+	add		%o1, %g6, %o1
 104:	call		100f
-	 add		%o0, %g7, %o0
+	 add		%o0, %g6, %o0
 	jmpl		%o5 + (80f - 104b), %g0
 	 mov		%g2, %o7
 
@@ -541,21 +541,21 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	MOVE_BIGALIGNCHUNK(o1, o0, 0x20, o2, o3, o4, o5, g2, g3, g4, g5)
 	MOVE_BIGALIGNCHUNK(o1, o0, 0x40, o2, o3, o4, o5, g2, g3, g4, g5)
 	MOVE_BIGALIGNCHUNK(o1, o0, 0x60, o2, o3, o4, o5, g2, g3, g4, g5)
-	subcc		%g7, 128, %g7
+	subcc		%g6, 128, %g6
 	add		%o1, 128, %o1
 	bne		82b
 	 add		%o0, 128, %o0
 
-	andcc		%g1, 0x70, %g7
+	andcc		%g1, 0x70, %g6
 	be		84f
 	 andcc		%g1, 8, %g0
 
 	mov		%o7, %g2
 111:	call		110f
-	 add		%o1, %g7, %o1
+	 add		%o1, %g6, %o1
 	mov		%g2, %o7
 	jmpl		%o5 + (84f - 111b), %g0
-	 add		%o0, %g7, %o0
+	 add		%o0, %g6, %o0
 
 83:	MOVE_LASTALIGNCHUNK(o1, o0, 0x60, g2, g3, g4, g5)
 	MOVE_LASTALIGNCHUNK(o1, o0, 0x50, g2, g3, g4, g5)
@@ -626,7 +626,7 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	sll		%g2, 3, %g4
 	mov		32, %g2
 	be		4f
-	 sub		%g2, %g4, %g7
+	 sub		%g2, %g4, %g6
 	
 	blu		3f
 	 cmp		%g3, 0x8
@@ -661,22 +661,22 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	ld		[%o1], %o3
 	add		%g3, -1, %g3
 5:	sll		%o5, %g4, %g2
-	srl		%g1, %g7, %g5
+	srl		%g1, %g6, %g5
 	or		%g2, %g5, %g2
 	st		%g2, [%o0]
 7:	ld		[%o1 + 4], %o4
 	sll		%g1, %g4, %g2
-	srl		%o3, %g7, %g5
+	srl		%o3, %g6, %g5
 	or		%g2, %g5, %g2
 	st		%g2, [%o0 + 4]
 8:	ld		[%o1 + 8], %o5
 	sll		%o3, %g4, %g2
-	srl		%o4, %g7, %g5
+	srl		%o4, %g6, %g5
 	or		%g2, %g5, %g2
 	st		%g2, [%o0 + 8]
 9:	ld		[%o1 + 12], %g1
 	sll		%o4, %g4, %g2
-	srl		%o5, %g7, %g5
+	srl		%o5, %g6, %g5
 	addcc		%g3, -4, %g3
 	or		%g2, %g5, %g2
 	add		%o1, 16, %o1
@@ -685,8 +685,8 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	bne,a		5b
 	 ld		[%o1], %o3
 10:	sll		%o5, %g4, %g2
-	srl		%g1, %g7, %g5
-	srl		%g7, 3, %g3
+	srl		%g1, %g6, %g5
+	srl		%g6, 3, %g3
 	or		%g2, %g5, %g2
 	sub		%o1, %g3, %o1
 	andcc		%o2, 2, %g0
@@ -758,10 +758,10 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	be		41f
 	 and		%o2, 0xffffffc0, %o3
 	ld		[%o0 - 7], %o4
-4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
-	SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
-	SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
-	SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
+4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
+	SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
+	SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
+	SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
 	subcc		%o3, 64, %o3
 	add		%o1, 64, %o1
 	bne		4b
@@ -770,7 +770,7 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	andcc		%o2, 0x30, %o3
 	be,a		1f
 	 srl		%g1, 16, %g2
-4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
+4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
 	subcc		%o3, 16, %o3
 	add		%o1, 16, %o1
 	bne		4b
@@ -793,10 +793,10 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	be		42f
 	 and		%o2, 0xffffffc0, %o3
 	ld		[%o0 - 6], %o4
-4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
-	SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
-	SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
-	SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
+4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
+	SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
+	SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
+	SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
 	subcc		%o3, 64, %o3
 	add		%o1, 64, %o1
 	bne		4b
@@ -805,7 +805,7 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	andcc		%o2, 0x30, %o3
 	be,a		1f
 	 srl		%g1, 16, %g2
-4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
+4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
 	subcc		%o3, 16, %o3
 	add		%o1, 16, %o1
 	bne		4b
@@ -830,10 +830,10 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 
 	ld		[%o0 - 1], %o4
 	add		%o0, 4, %o0
-4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1)
-	SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1)
-	SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1)
-	SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1)
+4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1)
+	SMOVE_CHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1)
+	SMOVE_CHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1)
+	SMOVE_CHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1)
 	subcc		%o3, 64, %o3
 	add		%o1, 64, %o1
 	bne		4b
@@ -842,7 +842,7 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	andcc		%o2, 0x30, %o3
 	be,a		1f
 	 srl		%g1, 24, %g2
-4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, -1)
+4:	SMOVE_CHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, -1)
 	subcc		%o3, 16, %o3
 	add		%o1, 16, %o1
 	bne		4b
@@ -852,10 +852,10 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 1:	st		%o4, [%o0 - 5]
 	b		88f
 	 stb		%g2, [%o0 - 1]
-41:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
-	SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
-	SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
-	SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
+41:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
+	SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
+	SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
+	SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
 	subcc		%o3, 64, %o3
 	add		%o1, 64, %o1
 	bne		41b
@@ -864,7 +864,7 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	andcc		%o2, 0x30, %o3
 	be,a		1f
 	 srl		%g1, 16, %g2
-4:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 8, 24, -3)
+4:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 8, 24, -3)
 	subcc		%o3, 16, %o3
 	add		%o1, 16, %o1
 	bne		4b
@@ -875,10 +875,10 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	srl		%g1, 8, %g4
 	b		88f
 	 stb		%g4, [%o0 - 1]
-43:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3)
-	SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3)
-	SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3)
-	SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3)
+43:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3)
+	SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3)
+	SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3)
+	SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3)
 	subcc		%o3, 64, %o3
 	add		%o1, 64, %o1
 	bne		43b
@@ -887,7 +887,7 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	andcc		%o2, 0x30, %o3
 	be,a		1f
 	 srl		%g1, 24, %g2
-4:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 24, 8, 3)
+4:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 24, 8, 3)
 	subcc		%o3, 16, %o3
 	add		%o1, 16, %o1
 	bne		4b
@@ -897,10 +897,10 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 1:	stb		%g2, [%o0 + 3]
 	b		88f
 	 add		%o0, 4, %o0
-42:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
-	SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
-	SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
-	SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
+42:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
+	SMOVE_ALIGNCHUNK(o1, o0, 0x10, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
+	SMOVE_ALIGNCHUNK(o1, o0, 0x20, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
+	SMOVE_ALIGNCHUNK(o1, o0, 0x30, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
 	subcc		%o3, 64, %o3
 	add		%o1, 64, %o1
 	bne		42b
@@ -909,7 +909,7 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 	andcc		%o2, 0x30, %o3
 	be,a		1f
 	 srl		%g1, 16, %g2
-4:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g7, g1, 16, 16, -2)
+4:	SMOVE_ALIGNCHUNK(o1, o0, 0x00, g2, g3, g4, g5, o4, o5, g6, g1, 16, 16, -2)
 	subcc		%o3, 16, %o3
 	add		%o1, 16, %o1
 	bne		4b
@@ -964,5 +964,5 @@ ENTRY(memcpy)		/* %o0=dst %o1=src %o2=le
 100:	retl
 	 sub		%o7, %o4, %o5
 110:	retl
-	 sub		%o7, %g7, %o5
+	 sub		%o7, %g6, %o5
 END(memcpy)
--- libc/sysdeps/sparc/sparc32/strcat.S.jj	Fri Jul  6 00:56:04 2001
+++ libc/sysdeps/sparc/sparc32/strcat.S	Thu Jan 23 21:18:34 2003
@@ -1,6 +1,6 @@
 /* strcat (dest, src) -- Append SRC on the end of DEST.
    For SPARC v7.
-   Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz>.
 
@@ -183,7 +183,7 @@ ENTRY(strcat)
 	srl		%o5, 8, %g5
 	sth		%g5, [%o0 + 2]
 1:	add		%o0, 4, %o0
-4:	sll		%o5, 24, %g7
+4:	sll		%o5, 24, %g6
 	ld		[%o1], %o5
 	add		%o1, 4, %o1
 	srl		%o5, 8, %g5
@@ -191,7 +191,7 @@ ENTRY(strcat)
 #ifdef EIGHTBIT_NOT_RARE
 	andn		%o4, %o5, %o4
 #endif
-	or		%g5, %g7, %g5
+	or		%g5, %g6, %g5
 	andcc		%o4, %o3, %g0
 	be,a		1b
 	 st		%g5, [%o0]
@@ -249,7 +249,7 @@ ENTRY(strcat)
 	sth		%g5, [%o0]
 	sub		%o0, 2, %o0
 1:	add		%o0, 4, %o0
-4:	sll		%o5, 16, %g7
+4:	sll		%o5, 16, %g6
 	ld		[%o1], %o5
 	add		%o1, 4, %o1
 	srl		%o5, 16, %g5
@@ -257,7 +257,7 @@ ENTRY(strcat)
 #ifdef EIGHTBIT_NOT_RARE
 	andn		%o4, %o5, %o4
 #endif
-	or		%g5, %g7, %g5
+	or		%g5, %g6, %g5
 	andcc		%o4, %o3, %g0
 	be,a		1b
 	 st		%g5, [%o0]
@@ -305,7 +305,7 @@ ENTRY(strcat)
 	stb		%g5, [%o0]
 	sub		%o0, 3, %o0
 1:	add		%o0, 4, %o0
-4:	sll		%o5, 8, %g7
+4:	sll		%o5, 8, %g6
 	ld		[%o1], %o5
 	add		%o1, 4, %o1
 	srl		%o5, 24, %g5
@@ -313,7 +313,7 @@ ENTRY(strcat)
 #ifdef EIGHTBIT_NOT_RARE
 	andn		%o4, %o5, %o4
 #endif
-	or		%g5, %g7, %g5
+	or		%g5, %g6, %g5
 	andcc		%o4, %o3, %g0
 	be		1b
 	 st		%g5, [%o0]
--- libc/sysdeps/sparc/sparc32/strchr.S.jj	Fri Jul  6 00:56:04 2001
+++ libc/sysdeps/sparc/sparc32/strchr.S	Thu Jan 23 21:18:42 2003
@@ -1,6 +1,6 @@
 /* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
    For SPARC v7.
-   Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz> and
 		  David S. Miller <davem@caip.rutgers.edu>.
@@ -86,9 +86,9 @@ ENTRY(strchr)
 6:	xor		%g4, %g2, %g5
 	sub		%g4, %o2, %o4
 #ifdef EIGHTBIT_NOT_RARE
-	sub		%g5, %o2, %g7
+	sub		%g5, %o2, %g6
 	andn		%o4, %g4, %o4
-	andn		%g7, %g5, %g5
+	andn		%g6, %g5, %g5
 #else
 	sub		%g5, %o2, %g5
 #endif
@@ -237,9 +237,9 @@ ENTRY(strrchr)
 7:	xor		%g4, %g2, %g5
 	sub		%g4, %o2, %o4
 #ifdef EIGHTBIT_NOT_RARE
-	sub		%g5, %o2, %g7
+	sub		%g5, %o2, %g6
 	andn		%o4, %g4, %o4
-	andn		%g7, %g5, %g5
+	andn		%g6, %g5, %g5
 #else
 	sub		%g5, %o2, %g5
 #endif
--- libc/sysdeps/sparc/sparc32/strcmp.S.jj	Fri Jul  6 00:56:04 2001
+++ libc/sysdeps/sparc/sparc32/strcmp.S	Thu Jan 23 21:18:49 2003
@@ -1,6 +1,6 @@
 /* Compare two strings for differences.
    For SPARC v7.
-   Copyright (C) 1996, 97, 99 Free Software Foundation, Inc.
+   Copyright (C) 1996, 97, 99, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz>.
 
@@ -144,13 +144,13 @@ ENTRY(strcmp)
 	andn		%i1, 3, %i1
 	mov		32, %l1
 	ld		[%i1], %l2
-	mov		-1, %g7
+	mov		-1, %g6
 	add		%i1, 4, %i1
 	sub		%l1, %g3, %l1
-	sll		%g7, %g3, %g7
+	sll		%g6, %g3, %g6
 
 1:	sll		%l2, %g3, %g5
-	and		%i4, %g7, %l3
+	and		%i4, %g6, %l3
 	sub		%i4, %i2, %g1
 #ifdef EIGHTBIT_NOT_RARE
 	andn		%g1, %i4, %g1
--- libc/sysdeps/sparc/sparc32/strcpy.S.jj	Fri Jul  6 00:56:04 2001
+++ libc/sysdeps/sparc/sparc32/strcpy.S	Thu Jan 23 21:18:57 2003
@@ -1,6 +1,6 @@
 /* Copy SRC to DEST returning DEST.
    For SPARC v7.
-   Copyright (C) 1996, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz>.
 
@@ -125,12 +125,12 @@ ENTRY(strcpy)
 	srl		%o5, 8, %g5
 	sth		%g5, [%o0 + 2]
 1:	add		%o0, 4, %o0
-4:	sll		%o5, 24, %g7
+4:	sll		%o5, 24, %g6
 	ld		[%o1], %o5
 	add		%o1, 4, %o1
 	srl		%o5, 8, %g5
 	sub		%o5, %o2, %o4
-	or		%g5, %g7, %g5
+	or		%g5, %g6, %g5
 	andcc		%o4, %o3, %g0
 	be,a		1b
 	 st		%g5, [%o0]
@@ -184,12 +184,12 @@ ENTRY(strcpy)
 	sth		%g5, [%o0]
 	sub		%o0, 2, %o0
 1:	add		%o0, 4, %o0
-4:	sll		%o5, 16, %g7
+4:	sll		%o5, 16, %g6
 	ld		[%o1], %o5
 	add		%o1, 4, %o1
 	srl		%o5, 16, %g5
 	sub		%o5, %o2, %o4
-	or		%g5, %g7, %g5
+	or		%g5, %g6, %g5
 	andcc		%o4, %o3, %g0
 	be,a		1b
 	 st		%g5, [%o0]
@@ -234,12 +234,12 @@ ENTRY(strcpy)
 	stb		%g5, [%o0]
 	sub		%o0, 3, %o0
 1:	add		%o0, 4, %o0
-4:	sll		%o5, 8, %g7
+4:	sll		%o5, 8, %g6
 	ld		[%o1], %o5
 	add		%o1, 4, %o1
 	srl		%o5, 24, %g5
 	sub		%o5, %o2, %o4
-	or		%g5, %g7, %g5
+	or		%g5, %g6, %g5
 	andcc		%o4, %o3, %g0
 	be		1b
 	 st		%g5, [%o0]
--- libc/sysdeps/sparc/sparc64/sparcv9b/memcpy.S.jj	Fri Jul  6 00:56:05 2001
+++ libc/sysdeps/sparc/sparc64/sparcv9b/memcpy.S	Thu Jan 23 21:19:25 2003
@@ -1,6 +1,6 @@
 /* Copy SIZE bytes from SRC to DEST.
    For UltraSPARC-III.
-   Copyright (C) 2001 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller (davem@redhat.com)
 
@@ -547,13 +547,13 @@ ENTRY(memmove)
 	sth		%g2, [%o0]			/* Store	Group + bubble	*/
 5:	andcc		%o1, 4, %g0			/* IEU1				*/
 236:	be,a,pn		%xcc, 2f			/* CTI				*/
-	 andcc		%o2, -128, %g7			/* IEU1		Group		*/
+	 andcc		%o2, -128, %g6			/* IEU1		Group		*/
 	lduw		[%o1 - 4], %g5			/* Load		Group		*/
 	sub		%o1, 4, %o1			/* IEU0				*/
 	sub		%o0, 4, %o0			/* IEU1				*/
 	sub		%o2, 4, %o2			/* IEU0		Group		*/
 	stw		%g5, [%o0]			/* Store			*/
-	andcc		%o2, -128, %g7			/* IEU1		Group		*/
+	andcc		%o2, -128, %g6			/* IEU1		Group		*/
 2:	be,pn		%xcc, 235f			/* CTI				*/
 	 andcc		%o0, 4, %g0			/* IEU1		Group		*/
 	be,pn		%xcc, 282f + 4			/* CTI		Group		*/
@@ -561,11 +561,11 @@ ENTRY(memmove)
 	RMOVE_BIGCHUNK(o1, o0, 0x20, g1, g3, g5, o5)
 	RMOVE_BIGCHUNK(o1, o0, 0x40, g1, g3, g5, o5)
 	RMOVE_BIGCHUNK(o1, o0, 0x60, g1, g3, g5, o5)
-	subcc		%g7, 128, %g7			/* IEU1		Group		*/
+	subcc		%g6, 128, %g6			/* IEU1		Group		*/
 	sub		%o1, 128, %o1			/* IEU0				*/
 	bne,pt		%xcc, 5b			/* CTI				*/
 	 sub		%o0, 128, %o0			/* IEU0		Group		*/
-235:	andcc		%o2, 0x70, %g7			/* IEU1		Group		*/
+235:	andcc		%o2, 0x70, %g6			/* IEU1		Group		*/
 41:	be,pn		%xcc, 280f			/* CTI				*/
 	 andcc		%o2, 8, %g0			/* IEU1		Group		*/
 							/* Clk1 8-(			*/
@@ -573,11 +573,11 @@ ENTRY(memmove)
 							/* Clk3 8-(			*/
 							/* Clk4 8-(			*/
 279:	rd		%pc, %o5			/* PDU		Group		*/
-	sll		%g7, 1, %g5			/* IEU0		Group		*/
-	sub		%o1, %g7, %o1			/* IEU1				*/
+	sll		%g6, 1, %g5			/* IEU0		Group		*/
+	sub		%o1, %g6, %o1			/* IEU1				*/
 	sub		%o5, %g5, %o5			/* IEU0  	Group		*/
 	jmpl		%o5 + %lo(280f - 279b), %g0	/* CTI		Group brk forced*/
-	 sub		%o0, %g7, %o0			/* IEU0		Group		*/
+	 sub		%o0, %g6, %o0			/* IEU0		Group		*/
 	RMOVE_LASTCHUNK(o1, o0, 0x60, g2, g3, g5, o5)
 	RMOVE_LASTCHUNK(o1, o0, 0x50, g2, g3, g5, o5)
 	RMOVE_LASTCHUNK(o1, o0, 0x40, g2, g3, g5, o5)
@@ -614,11 +614,11 @@ ENTRY(memmove)
 
 282:	RMOVE_BIGALIGNCHUNK(o1, o0, 0x00, g1, g3, g5, o5)
 	RMOVE_BIGALIGNCHUNK(o1, o0, 0x40, g1, g3, g5, o5)
-	subcc		%g7, 128, %g7			/* IEU1		Group		*/
+	subcc		%g6, 128, %g6			/* IEU1		Group		*/
 	sub		%o1, 128, %o1			/* IEU0				*/
 	bne,pt		%xcc, 282b			/* CTI				*/
 	 sub		%o0, 128, %o0			/* IEU0		Group		*/
-	andcc		%o2, 0x70, %g7			/* IEU1				*/
+	andcc		%o2, 0x70, %g6			/* IEU1				*/
 	be,pn		%xcc, 284f			/* CTI				*/
 	 andcc		%o2, 8, %g0			/* IEU1		Group		*/
 							/* Clk1 8-(			*/
@@ -626,10 +626,10 @@ ENTRY(memmove)
 							/* Clk3 8-(			*/
 							/* Clk4 8-(			*/
 283:	rd		%pc, %o5			/* PDU		Group		*/
-	sub		%o1, %g7, %o1			/* IEU0		Group		*/
-	sub		%o5, %g7, %o5			/* IEU1				*/
+	sub		%o1, %g6, %o1			/* IEU0		Group		*/
+	sub		%o5, %g6, %o5			/* IEU1				*/
 	jmpl		%o5 + %lo(284f - 283b), %g0	/* CTI		Group brk forced*/
-	 sub		%o0, %g7, %o0			/* IEU0		Group		*/
+	 sub		%o0, %g6, %o0			/* IEU0		Group		*/
 	RMOVE_LASTALIGNCHUNK(o1, o0, 0x60, g2, g3)
 	RMOVE_LASTALIGNCHUNK(o1, o0, 0x50, g2, g3)
 	RMOVE_LASTALIGNCHUNK(o1, o0, 0x40, g2, g3)
--- libc/sysdeps/sparc/sparc64/hp-timing.h.jj	Mon Mar 11 19:35:47 2002
+++ libc/sysdeps/sparc/sparc64/hp-timing.h	Thu Jan 23 21:19:38 2003
@@ -1,5 +1,5 @@
 /* High precision, low overhead timing functions.  sparc64 version.
-   Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller <davem@redhat.com>, 2001.
 
@@ -63,7 +63,7 @@ do {								\
 		       " nop"					\
 		       : "=&r" (tmp1), "=&r" (tmp2)		\
 		       : "r" (__diff), "r" (&(Sum))		\
-		       : "memory", "g1", "g5", "g7");		\
+		       : "memory", "g1", "g5", "g6");		\
 } while(0)
 
 #define HP_TIMING_ACCUM_NT(Sum, Diff)	(Sum) += (Diff)
--- libc/sysdeps/sparc/sparc64/memcpy.S.jj	Fri Jul  6 00:56:05 2001
+++ libc/sysdeps/sparc/sparc64/memcpy.S	Thu Jan 23 21:19:51 2003
@@ -1,6 +1,6 @@
 /* Copy SIZE bytes from SRC to DEST.
    For UltraSPARC.
-   Copyright (C) 1996, 97, 98, 99 Free Software Foundation, Inc.
+   Copyright (C) 1996, 97, 98, 99, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by David S. Miller (davem@caip.rutgers.edu) and
 		  Jakub Jelinek (jakub@redhat.com).
@@ -26,7 +26,7 @@
 #define USE_BPR
 	.register	%g2, #scratch
 	.register	%g3, #scratch
-	.register	%g7, #scratch
+	.register	%g6, #scratch
 #define XCC	xcc
 #endif
 #define FPRS_FEF	4
@@ -256,24 +256,24 @@ END(bcopy)
 	 add		%o0, 8, %o0			/* IEU0				*/
 202:	membar	  #LoadStore | #StoreStore | #StoreLoad	/* LSU		Group		*/
 	wr		%g0, ASI_BLK_P, %asi		/* LSU		Group		*/
-	subcc		%o2, 0x40, %g7			/* IEU1		Group		*/
+	subcc		%o2, 0x40, %g6			/* IEU1		Group		*/
 	mov		%o1, %g1			/* IEU0				*/
-	andncc		%g7, (0x40 - 1), %g7		/* IEU1		Group		*/
+	andncc		%g6, (0x40 - 1), %g6		/* IEU1		Group		*/
 	srl		%g1, 3, %g2			/* IEU0				*/
-	sub		%o2, %g7, %g3			/* IEU0		Group		*/
+	sub		%o2, %g6, %g3			/* IEU0		Group		*/
 	andn		%o1, (0x40 - 1), %o1		/* IEU1				*/
 	and		%g2, 7, %g2			/* IEU0		Group		*/
 	andncc		%g3, 0x7, %g3			/* IEU1				*/
 	fmovd		%f0, %f2			/* FPU				*/
 	sub		%g3, 0x10, %g3			/* IEU0		Group		*/
-	sub		%o2, %g7, %o2			/* IEU1				*/
+	sub		%o2, %g6, %o2			/* IEU1				*/
 	alignaddr	%g1, %g0, %g0			/* GRU		Group		*/
-	add		%g1, %g7, %g1			/* IEU0		Group		*/
+	add		%g1, %g6, %g1			/* IEU0		Group		*/
 	subcc		%o2, %g3, %o2			/* IEU1				*/
 	ldda		[%o1 + 0x00] %asi, %f0		/* LSU		Group		*/
 	add		%g1, %g3, %g1			/* IEU0				*/
 	ldda		[%o1 + 0x40] %asi, %f16		/* LSU		Group		*/
-	sub		%g7, 0x80, %g7			/* IEU0				*/
+	sub		%g6, 0x80, %g6			/* IEU0				*/
 	ldda		[%o1 + 0x80] %asi, %f32		/* LSU		Group		*/
 							/* Clk1		Group 8-(	*/
 							/* Clk2		Group 8-(	*/
@@ -286,9 +286,9 @@ END(bcopy)
 	 addcc		%o1, 0xc0, %o1			/* IEU1		Group		*/
 
 	.align		512		/* OK, here comes the fun part... */
-300:	FREG_FROB(f0, f2, f4, f6, f8, f10,f12,f14,f16)	LOOP_CHUNK1(o1, o0, g7, 301f)
-	FREG_FROB(f16,f18,f20,f22,f24,f26,f28,f30,f32)	LOOP_CHUNK2(o1, o0, g7, 302f)
-	FREG_FROB(f32,f34,f36,f38,f40,f42,f44,f46,f0)	LOOP_CHUNK3(o1, o0, g7, 303f)
+300:	FREG_FROB(f0, f2, f4, f6, f8, f10,f12,f14,f16)	LOOP_CHUNK1(o1, o0, g6, 301f)
+	FREG_FROB(f16,f18,f20,f22,f24,f26,f28,f30,f32)	LOOP_CHUNK2(o1, o0, g6, 302f)
+	FREG_FROB(f32,f34,f36,f38,f40,f42,f44,f46,f0)	LOOP_CHUNK3(o1, o0, g6, 303f)
 	b,pt		%xcc, 300b+4; faligndata %f0, %f2, %f48
 301:	FREG_FROB(f16,f18,f20,f22,f24,f26,f28,f30,f32)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f32,f34,f36,f38,f40,f42,f44,f46,f0)	STORE_JUMP(o0, f48, 400f) membar #Sync
@@ -297,9 +297,9 @@ END(bcopy)
 303:	FREG_FROB(f0, f2, f4, f6, f8, f10,f12,f14,f16)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f16,f18,f20,f22,f24,f26,f28,f30,f32)	STORE_JUMP(o0, f48, 432f) membar #Sync
 	VISLOOP_PAD
-310:	FREG_FROB(f2, f4, f6, f8, f10,f12,f14,f16,f18)	LOOP_CHUNK1(o1, o0, g7, 311f)
-	FREG_FROB(f18,f20,f22,f24,f26,f28,f30,f32,f34)	LOOP_CHUNK2(o1, o0, g7, 312f)
-	FREG_FROB(f34,f36,f38,f40,f42,f44,f46,f0, f2)	LOOP_CHUNK3(o1, o0, g7, 313f)
+310:	FREG_FROB(f2, f4, f6, f8, f10,f12,f14,f16,f18)	LOOP_CHUNK1(o1, o0, g6, 311f)
+	FREG_FROB(f18,f20,f22,f24,f26,f28,f30,f32,f34)	LOOP_CHUNK2(o1, o0, g6, 312f)
+	FREG_FROB(f34,f36,f38,f40,f42,f44,f46,f0, f2)	LOOP_CHUNK3(o1, o0, g6, 313f)
 	b,pt		%xcc, 310b+4; faligndata %f2, %f4, %f48
 311:	FREG_FROB(f18,f20,f22,f24,f26,f28,f30,f32,f34)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f34,f36,f38,f40,f42,f44,f46,f0, f2)	STORE_JUMP(o0, f48, 402f) membar #Sync
@@ -308,9 +308,9 @@ END(bcopy)
 313:	FREG_FROB(f2, f4, f6, f8, f10,f12,f14,f16,f18)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f18,f20,f22,f24,f26,f28,f30,f32,f34)	STORE_JUMP(o0, f48, 434f) membar #Sync
 	VISLOOP_PAD
-320:	FREG_FROB(f4, f6, f8, f10,f12,f14,f16,f18,f20)	LOOP_CHUNK1(o1, o0, g7, 321f)
-	FREG_FROB(f20,f22,f24,f26,f28,f30,f32,f34,f36)	LOOP_CHUNK2(o1, o0, g7, 322f)
-	FREG_FROB(f36,f38,f40,f42,f44,f46,f0, f2, f4)	LOOP_CHUNK3(o1, o0, g7, 323f)
+320:	FREG_FROB(f4, f6, f8, f10,f12,f14,f16,f18,f20)	LOOP_CHUNK1(o1, o0, g6, 321f)
+	FREG_FROB(f20,f22,f24,f26,f28,f30,f32,f34,f36)	LOOP_CHUNK2(o1, o0, g6, 322f)
+	FREG_FROB(f36,f38,f40,f42,f44,f46,f0, f2, f4)	LOOP_CHUNK3(o1, o0, g6, 323f)
 	b,pt		%xcc, 320b+4; faligndata %f4, %f6, %f48
 321:	FREG_FROB(f20,f22,f24,f26,f28,f30,f32,f34,f36)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f36,f38,f40,f42,f44,f46,f0, f2, f4)	STORE_JUMP(o0, f48, 404f) membar #Sync
@@ -319,9 +319,9 @@ END(bcopy)
 323:	FREG_FROB(f4, f6, f8, f10,f12,f14,f16,f18,f20)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f20,f22,f24,f26,f28,f30,f32,f34,f36)	STORE_JUMP(o0, f48, 436f) membar #Sync
 	VISLOOP_PAD
-330:	FREG_FROB(f6, f8, f10,f12,f14,f16,f18,f20,f22)	LOOP_CHUNK1(o1, o0, g7, 331f)
-	FREG_FROB(f22,f24,f26,f28,f30,f32,f34,f36,f38)	LOOP_CHUNK2(o1, o0, g7, 332f)
-	FREG_FROB(f38,f40,f42,f44,f46,f0, f2, f4, f6)	LOOP_CHUNK3(o1, o0, g7, 333f)
+330:	FREG_FROB(f6, f8, f10,f12,f14,f16,f18,f20,f22)	LOOP_CHUNK1(o1, o0, g6, 331f)
+	FREG_FROB(f22,f24,f26,f28,f30,f32,f34,f36,f38)	LOOP_CHUNK2(o1, o0, g6, 332f)
+	FREG_FROB(f38,f40,f42,f44,f46,f0, f2, f4, f6)	LOOP_CHUNK3(o1, o0, g6, 333f)
 	b,pt		%xcc, 330b+4; faligndata %f6, %f8, %f48
 331:	FREG_FROB(f22,f24,f26,f28,f30,f32,f34,f36,f38)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f38,f40,f42,f44,f46,f0, f2, f4, f6)	STORE_JUMP(o0, f48, 406f) membar #Sync
@@ -330,9 +330,9 @@ END(bcopy)
 333:	FREG_FROB(f6, f8, f10,f12,f14,f16,f18,f20,f22)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f22,f24,f26,f28,f30,f32,f34,f36,f38)	STORE_JUMP(o0, f48, 438f) membar #Sync
 	VISLOOP_PAD
-340:	FREG_FROB(f8, f10,f12,f14,f16,f18,f20,f22,f24)	LOOP_CHUNK1(o1, o0, g7, 341f)
-	FREG_FROB(f24,f26,f28,f30,f32,f34,f36,f38,f40)	LOOP_CHUNK2(o1, o0, g7, 342f)
-	FREG_FROB(f40,f42,f44,f46,f0, f2, f4, f6, f8)	LOOP_CHUNK3(o1, o0, g7, 343f)
+340:	FREG_FROB(f8, f10,f12,f14,f16,f18,f20,f22,f24)	LOOP_CHUNK1(o1, o0, g6, 341f)
+	FREG_FROB(f24,f26,f28,f30,f32,f34,f36,f38,f40)	LOOP_CHUNK2(o1, o0, g6, 342f)
+	FREG_FROB(f40,f42,f44,f46,f0, f2, f4, f6, f8)	LOOP_CHUNK3(o1, o0, g6, 343f)
 	b,pt		%xcc, 340b+4; faligndata %f8, %f10, %f48
 341:	FREG_FROB(f24,f26,f28,f30,f32,f34,f36,f38,f40)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f40,f42,f44,f46,f0, f2, f4, f6, f8)	STORE_JUMP(o0, f48, 408f) membar #Sync
@@ -341,9 +341,9 @@ END(bcopy)
 343:	FREG_FROB(f8, f10,f12,f14,f16,f18,f20,f22,f24)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f24,f26,f28,f30,f32,f34,f36,f38,f40)	STORE_JUMP(o0, f48, 440f) membar #Sync
 	VISLOOP_PAD
-350:	FREG_FROB(f10,f12,f14,f16,f18,f20,f22,f24,f26)	LOOP_CHUNK1(o1, o0, g7, 351f)
-	FREG_FROB(f26,f28,f30,f32,f34,f36,f38,f40,f42)	LOOP_CHUNK2(o1, o0, g7, 352f)
-	FREG_FROB(f42,f44,f46,f0, f2, f4, f6, f8, f10)	LOOP_CHUNK3(o1, o0, g7, 353f)
+350:	FREG_FROB(f10,f12,f14,f16,f18,f20,f22,f24,f26)	LOOP_CHUNK1(o1, o0, g6, 351f)
+	FREG_FROB(f26,f28,f30,f32,f34,f36,f38,f40,f42)	LOOP_CHUNK2(o1, o0, g6, 352f)
+	FREG_FROB(f42,f44,f46,f0, f2, f4, f6, f8, f10)	LOOP_CHUNK3(o1, o0, g6, 353f)
 	b,pt		%xcc, 350b+4; faligndata %f10, %f12, %f48
 351:	FREG_FROB(f26,f28,f30,f32,f34,f36,f38,f40,f42)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f42,f44,f46,f0, f2, f4, f6, f8, f10)	STORE_JUMP(o0, f48, 410f) membar #Sync
@@ -352,9 +352,9 @@ END(bcopy)
 353:	FREG_FROB(f10,f12,f14,f16,f18,f20,f22,f24,f26)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f26,f28,f30,f32,f34,f36,f38,f40,f42)	STORE_JUMP(o0, f48, 442f) membar #Sync
 	VISLOOP_PAD
-360:	FREG_FROB(f12,f14,f16,f18,f20,f22,f24,f26,f28)	LOOP_CHUNK1(o1, o0, g7, 361f)
-	FREG_FROB(f28,f30,f32,f34,f36,f38,f40,f42,f44)	LOOP_CHUNK2(o1, o0, g7, 362f)
-	FREG_FROB(f44,f46,f0, f2, f4, f6, f8, f10,f12)	LOOP_CHUNK3(o1, o0, g7, 363f)
+360:	FREG_FROB(f12,f14,f16,f18,f20,f22,f24,f26,f28)	LOOP_CHUNK1(o1, o0, g6, 361f)
+	FREG_FROB(f28,f30,f32,f34,f36,f38,f40,f42,f44)	LOOP_CHUNK2(o1, o0, g6, 362f)
+	FREG_FROB(f44,f46,f0, f2, f4, f6, f8, f10,f12)	LOOP_CHUNK3(o1, o0, g6, 363f)
 	b,pt		%xcc, 360b+4; faligndata %f12, %f14, %f48
 361:	FREG_FROB(f28,f30,f32,f34,f36,f38,f40,f42,f44)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f44,f46,f0, f2, f4, f6, f8, f10,f12)	STORE_JUMP(o0, f48, 412f) membar #Sync
@@ -363,9 +363,9 @@ END(bcopy)
 363:	FREG_FROB(f12,f14,f16,f18,f20,f22,f24,f26,f28)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f28,f30,f32,f34,f36,f38,f40,f42,f44)	STORE_JUMP(o0, f48, 444f) membar #Sync
 	VISLOOP_PAD
-370:	FREG_FROB(f14,f16,f18,f20,f22,f24,f26,f28,f30)	LOOP_CHUNK1(o1, o0, g7, 371f)
-	FREG_FROB(f30,f32,f34,f36,f38,f40,f42,f44,f46)	LOOP_CHUNK2(o1, o0, g7, 372f)
-	FREG_FROB(f46,f0, f2, f4, f6, f8, f10,f12,f14)	LOOP_CHUNK3(o1, o0, g7, 373f)
+370:	FREG_FROB(f14,f16,f18,f20,f22,f24,f26,f28,f30)	LOOP_CHUNK1(o1, o0, g6, 371f)
+	FREG_FROB(f30,f32,f34,f36,f38,f40,f42,f44,f46)	LOOP_CHUNK2(o1, o0, g6, 372f)
+	FREG_FROB(f46,f0, f2, f4, f6, f8, f10,f12,f14)	LOOP_CHUNK3(o1, o0, g6, 373f)
 	b,pt		%xcc, 370b+4; faligndata %f14, %f16, %f48
 371:	FREG_FROB(f30,f32,f34,f36,f38,f40,f42,f44,f46)	STORE_SYNC(o0, f48) membar #Sync
 	FREG_FROB(f46,f0, f2, f4, f6, f8, f10,f12,f14)	STORE_JUMP(o0, f48, 414f) membar #Sync
@@ -476,11 +476,11 @@ ENTRY(__align_cpy_8)
 	 cmp		%o2, (64 * 6)			/* IEU1		Group		*/
 	bgeu,pn		%xcc, 201b			/* CTI				*/
 	 andcc		%o0, 0x38, %g5			/* IEU1		Group		*/
-	andcc		%o2, -128, %g7			/* IEU1		Group		*/
+	andcc		%o2, -128, %g6			/* IEU1		Group		*/
 	bne,a,pt	%xcc, 82f + 4			/* CTI				*/
 	 ldx		[%o1], %g1			/* Load				*/
 	ba,pt		%xcc, 41f			/* CTI		Group		*/
-	 andcc		%o2, 0x70, %g7			/* IEU1				*/
+	 andcc		%o2, 0x70, %g6			/* IEU1				*/
 END(__align_cpy_8)
 
 	/* void *__align_cpy_16(void *dest, void *src, size_t n)
@@ -494,11 +494,11 @@ ENTRY(__align_cpy_16)
 	cmp		%o2, (64 * 6)			/* IEU1				*/
 	bgeu,pn		%xcc, 201b			/* CTI				*/
 	 andcc		%o0, 0x38, %g5			/* IEU1		Group		*/
-	andcc		%o2, -128, %g7			/* IEU1		Group		*/
+	andcc		%o2, -128, %g6			/* IEU1		Group		*/
 	bne,a,pt	%xcc, 82f + 4			/* CTI				*/
 	 ldx		[%o1], %g1			/* Load				*/
 	ba,pt		%xcc, 41f			/* CTI		Group		*/
-	 andcc		%o2, 0x70, %g7			/* IEU1				*/
+	 andcc		%o2, 0x70, %g6			/* IEU1				*/
 END(__align_cpy_16)
 
 #endif
@@ -538,13 +538,13 @@ ENTRY(memcpy)
 	sth		%g2, [%o0 - 2]			/* Store	Group + bubble	*/
 5:	andcc		%o1, 4, %g0			/* IEU1				*/
 216:	be,a,pn		%xcc, 2f			/* CTI				*/
-	 andcc		%o2, -128, %g7			/* IEU1		Group		*/
+	 andcc		%o2, -128, %g6			/* IEU1		Group		*/
 	lduw		[%o1], %g5			/* Load		Group		*/
 	add		%o1, 4, %o1			/* IEU0				*/
 	add		%o0, 4, %o0			/* IEU1				*/
 	sub		%o2, 4, %o2			/* IEU0		Group		*/
 	stw		%g5, [%o0 - 4]			/* Store			*/
-	andcc		%o2, -128, %g7			/* IEU1		Group		*/
+	andcc		%o2, -128, %g6			/* IEU1		Group		*/
 2:	be,pn		%xcc, 215f			/* CTI				*/
 	 andcc		%o0, 4, %g0			/* IEU1		Group		*/
 	be,pn		%xcc, 82f + 4			/* CTI		Group		*/
@@ -552,11 +552,11 @@ ENTRY(memcpy)
 	MOVE_BIGCHUNK(o1, o0, 0x20, g1, g3, g5, o5)
 	MOVE_BIGCHUNK(o1, o0, 0x40, g1, g3, g5, o5)
 	MOVE_BIGCHUNK(o1, o0, 0x60, g1, g3, g5, o5)
-35:	subcc		%g7, 128, %g7			/* IEU1		Group		*/
+35:	subcc		%g6, 128, %g6			/* IEU1		Group		*/
 	add		%o1, 128, %o1			/* IEU0				*/
 	bne,pt		%xcc, 5b			/* CTI				*/
 	 add		%o0, 128, %o0			/* IEU0		Group		*/
-215:	andcc		%o2, 0x70, %g7			/* IEU1		Group		*/
+215:	andcc		%o2, 0x70, %g6			/* IEU1		Group		*/
 41:	be,pn		%xcc, 80f			/* CTI				*/
 	 andcc		%o2, 8, %g0			/* IEU1		Group		*/
 							/* Clk1 8-(			*/
@@ -564,11 +564,11 @@ ENTRY(memcpy)
 							/* Clk3 8-(			*/
 							/* Clk4 8-(			*/
 79:	rd		%pc, %o5			/* PDU		Group		*/
-	sll		%g7, 1, %g5			/* IEU0		Group		*/
-	add		%o1, %g7, %o1			/* IEU1				*/
+	sll		%g6, 1, %g5			/* IEU0		Group		*/
+	add		%o1, %g6, %o1			/* IEU1				*/
 	sub		%o5, %g5, %o5			/* IEU0  	Group		*/
 	jmpl		%o5 + %lo(80f - 79b), %g0	/* CTI		Group brk forced*/
-	 add		%o0, %g7, %o0			/* IEU0		Group		*/
+	 add		%o0, %g6, %o0			/* IEU0		Group		*/
 36:	MOVE_LASTCHUNK(o1, o0, 0x60, g2, g3, g5, o5)
 	MOVE_LASTCHUNK(o1, o0, 0x50, g2, g3, g5, o5)
 	MOVE_LASTCHUNK(o1, o0, 0x40, g2, g3, g5, o5)
@@ -605,11 +605,11 @@ ENTRY(memcpy)
 
 82:	MOVE_BIGALIGNCHUNK(o1, o0, 0x00, g1, g3, g5, o5)
 	MOVE_BIGALIGNCHUNK(o1, o0, 0x40, g1, g3, g5, o5)
-37:	subcc		%g7, 128, %g7			/* IEU1		Group		*/
+37:	subcc		%g6, 128, %g6			/* IEU1		Group		*/
 	add		%o1, 128, %o1			/* IEU0				*/
 	bne,pt		%xcc, 82b			/* CTI				*/
 	 add		%o0, 128, %o0			/* IEU0		Group		*/
-	andcc		%o2, 0x70, %g7			/* IEU1				*/
+	andcc		%o2, 0x70, %g6			/* IEU1				*/
 	be,pn		%xcc, 84f			/* CTI				*/
 	 andcc		%o2, 8, %g0			/* IEU1		Group		*/
 							/* Clk1 8-(			*/
@@ -617,10 +617,10 @@ ENTRY(memcpy)
 							/* Clk3 8-(			*/
 							/* Clk4 8-(			*/
 83:	rd		%pc, %o5			/* PDU		Group		*/
-	add		%o1, %g7, %o1			/* IEU0		Group		*/
-	sub		%o5, %g7, %o5			/* IEU1				*/
+	add		%o1, %g6, %o1			/* IEU0		Group		*/
+	sub		%o5, %g6, %o5			/* IEU1				*/
 	jmpl		%o5 + %lo(84f - 83b), %g0	/* CTI		Group brk forced*/
-	 add		%o0, %g7, %o0			/* IEU0		Group		*/
+	 add		%o0, %g6, %o0			/* IEU0		Group		*/
 38:	MOVE_LASTALIGNCHUNK(o1, o0, 0x60, g2, g3)
 	MOVE_LASTALIGNCHUNK(o1, o0, 0x50, g2, g3)
 	MOVE_LASTALIGNCHUNK(o1, o0, 0x40, g2, g3)
@@ -756,13 +756,13 @@ ENTRY(memmove)
 	sth		%g2, [%o0]			/* Store	Group + bubble	*/
 5:	andcc		%o1, 4, %g0			/* IEU1				*/
 236:	be,a,pn		%xcc, 2f			/* CTI				*/
-	 andcc		%o2, -128, %g7			/* IEU1		Group		*/
+	 andcc		%o2, -128, %g6			/* IEU1		Group		*/
 	lduw		[%o1 - 4], %g5			/* Load		Group		*/
 	sub		%o1, 4, %o1			/* IEU0				*/
 	sub		%o0, 4, %o0			/* IEU1				*/
 	sub		%o2, 4, %o2			/* IEU0		Group		*/
 	stw		%g5, [%o0]			/* Store			*/
-	andcc		%o2, -128, %g7			/* IEU1		Group		*/
+	andcc		%o2, -128, %g6			/* IEU1		Group		*/
 2:	be,pn		%xcc, 235f			/* CTI				*/
 	 andcc		%o0, 4, %g0			/* IEU1		Group		*/
 	be,pn		%xcc, 282f + 4			/* CTI		Group		*/
@@ -770,11 +770,11 @@ ENTRY(memmove)
 	RMOVE_BIGCHUNK(o1, o0, 0x20, g1, g3, g5, o5)
 	RMOVE_BIGCHUNK(o1, o0, 0x40, g1, g3, g5, o5)
 	RMOVE_BIGCHUNK(o1, o0, 0x60, g1, g3, g5, o5)
-	subcc		%g7, 128, %g7			/* IEU1		Group		*/
+	subcc		%g6, 128, %g6			/* IEU1		Group		*/
 	sub		%o1, 128, %o1			/* IEU0				*/
 	bne,pt		%xcc, 5b			/* CTI				*/
 	 sub		%o0, 128, %o0			/* IEU0		Group		*/
-235:	andcc		%o2, 0x70, %g7			/* IEU1		Group		*/
+235:	andcc		%o2, 0x70, %g6			/* IEU1		Group		*/
 41:	be,pn		%xcc, 280f			/* CTI				*/
 	 andcc		%o2, 8, %g0			/* IEU1		Group		*/
 							/* Clk1 8-(			*/
@@ -782,11 +782,11 @@ ENTRY(memmove)
 							/* Clk3 8-(			*/
 							/* Clk4 8-(			*/
 279:	rd		%pc, %o5			/* PDU		Group		*/
-	sll		%g7, 1, %g5			/* IEU0		Group		*/
-	sub		%o1, %g7, %o1			/* IEU1				*/
+	sll		%g6, 1, %g5			/* IEU0		Group		*/
+	sub		%o1, %g6, %o1			/* IEU1				*/
 	sub		%o5, %g5, %o5			/* IEU0  	Group		*/
 	jmpl		%o5 + %lo(280f - 279b), %g0	/* CTI		Group brk forced*/
-	 sub		%o0, %g7, %o0			/* IEU0		Group		*/
+	 sub		%o0, %g6, %o0			/* IEU0		Group		*/
 	RMOVE_LASTCHUNK(o1, o0, 0x60, g2, g3, g5, o5)
 	RMOVE_LASTCHUNK(o1, o0, 0x50, g2, g3, g5, o5)
 	RMOVE_LASTCHUNK(o1, o0, 0x40, g2, g3, g5, o5)
@@ -823,11 +823,11 @@ ENTRY(memmove)
 
 282:	RMOVE_BIGALIGNCHUNK(o1, o0, 0x00, g1, g3, g5, o5)
 	RMOVE_BIGALIGNCHUNK(o1, o0, 0x40, g1, g3, g5, o5)
-	subcc		%g7, 128, %g7			/* IEU1		Group		*/
+	subcc		%g6, 128, %g6			/* IEU1		Group		*/
 	sub		%o1, 128, %o1			/* IEU0				*/
 	bne,pt		%xcc, 282b			/* CTI				*/
 	 sub		%o0, 128, %o0			/* IEU0		Group		*/
-	andcc		%o2, 0x70, %g7			/* IEU1				*/
+	andcc		%o2, 0x70, %g6			/* IEU1				*/
 	be,pn		%xcc, 284f			/* CTI				*/
 	 andcc		%o2, 8, %g0			/* IEU1		Group		*/
 							/* Clk1 8-(			*/
@@ -835,10 +835,10 @@ ENTRY(memmove)
 							/* Clk3 8-(			*/
 							/* Clk4 8-(			*/
 283:	rd		%pc, %o5			/* PDU		Group		*/
-	sub		%o1, %g7, %o1			/* IEU0		Group		*/
-	sub		%o5, %g7, %o5			/* IEU1				*/
+	sub		%o1, %g6, %o1			/* IEU0		Group		*/
+	sub		%o5, %g6, %o5			/* IEU1				*/
 	jmpl		%o5 + %lo(284f - 283b), %g0	/* CTI		Group brk forced*/
-	 sub		%o0, %g7, %o0			/* IEU0		Group		*/
+	 sub		%o0, %g6, %o0			/* IEU0		Group		*/
 	RMOVE_LASTALIGNCHUNK(o1, o0, 0x60, g2, g3)
 	RMOVE_LASTALIGNCHUNK(o1, o0, 0x50, g2, g3)
 	RMOVE_LASTALIGNCHUNK(o1, o0, 0x40, g2, g3)
--- libc/sysdeps/sparc/sparc64/stpcpy.S.jj	Sat Aug  3 21:22:11 2002
+++ libc/sysdeps/sparc/sparc64/stpcpy.S	Thu Jan 23 21:19:59 2003
@@ -1,6 +1,6 @@
 /* Copy SRC to DEST returning the address of the terminating '\0' in DEST.
    For SPARC v9.
-   Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
                   Jakub Jelinek <jj@ultra.linux.cz>.
@@ -25,7 +25,7 @@
 #ifndef XCC
 	.register	%g2, #scratch
 	.register	%g3, #scratch
-	.register	%g7, #scratch
+	.register	%g6, #scratch
 #endif
 
 	/* Normally, this uses
@@ -111,8 +111,8 @@ ENTRY(__stpcpy)
 
 	.align		16
 6:	ba,pt		%xcc, 23f			/* CTI		Group		*/
-	 sub		%o0, 3, %g7			/* IEU0				*/
-5:	sub		%o0, 2, %g7			/* IEU0		Group		*/
+	 sub		%o0, 3, %g6			/* IEU0				*/
+5:	sub		%o0, 2, %g6			/* IEU0		Group		*/
 	stb		%g5, [%o0 - 2]			/* Store			*/
 
 	srlx		%g3, 16, %g4			/* IEU0		Group		*/
@@ -121,27 +121,27 @@ ENTRY(__stpcpy)
 	stw		%g4, [%o0 - 8]			/* Store			*/
 
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 8:	ba,pt		%xcc, 24f			/* CTI		Group		*/
-	 sub		%o0, 5, %g7			/* IEU0				*/
+	 sub		%o0, 5, %g6			/* IEU0				*/
 
-7:	sub		%o0, 4, %g7			/* IEU0		Group		*/
+7:	sub		%o0, 4, %g6			/* IEU0		Group		*/
 	stb		%g5, [%o0 - 4]			/* Store			*/
 	srlx		%g3, 32, %g4			/* IEU0		Group		*/
 24:	stw		%g4, [%o0 - 8]			/* Store			*/
 
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0 			/* IEU0				*/
+	 mov		%g6, %o0 			/* IEU0				*/
 10:	ba,pt		%xcc, 25f			/* CTI		Group		*/
-	 sub		%o0, 7, %g7			/* IEU0				*/
+	 sub		%o0, 7, %g6			/* IEU0				*/
 
-9:	sub		%o0, 6, %g7			/* IEU0		Group		*/
+9:	sub		%o0, 6, %g6			/* IEU0		Group		*/
 	stb		%g5, [%o0 - 6]			/* Store			*/
 	srlx		%g3, 48, %g4			/* IEU0				*/
 25:	sth		%g4, [%o0 - 8]			/* Store	Group		*/
 
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 11:	stb		%g5, [%o0 - 8]			/* Store	Group		*/
 	retl						/* CTI+IEU1	Group		*/
 
@@ -230,13 +230,13 @@ ENTRY(__stpcpy)
 
 	.align		16
 17:	ba,pt		%xcc, 26f			/* CTI		Group		*/
-	 subcc		%o0, 3, %g7			/* IEU1				*/
+	 subcc		%o0, 3, %g6			/* IEU1				*/
 18:	ba,pt		%xcc, 27f			/* CTI		Group		*/
-	 subcc		%o0, 4, %g7			/* IEU1				*/
+	 subcc		%o0, 4, %g6			/* IEU1				*/
 
 19:	ba,pt		%xcc, 28f			/* CTI		Group		*/
-	 subcc		%o0, 5, %g7			/* IEU1				*/
-16:	subcc		%o0, 2, %g7			/* IEU1		Group		*/
+	 subcc		%o0, 5, %g6			/* IEU1				*/
+16:	subcc		%o0, 2, %g6			/* IEU1		Group		*/
 	srlx		%o3, 8, %o4			/* IEU0				*/
 
 	stb		%o4, [%o0 - 2]			/* Store			*/
@@ -249,15 +249,15 @@ ENTRY(__stpcpy)
 	stw		%o4, [%o0 - 8]			/* Store			*/
 	retl						/* CTI+IEU1	Group		*/
 
-	 mov		%g7, %o0 			/* IEU0				*/
+	 mov		%g6, %o0 			/* IEU0				*/
 
 	.align		16
 21:	ba,pt		%xcc, 29f			/* CTI		Group		*/
-	 subcc		%o0, 7, %g7			/* IEU1				*/
+	 subcc		%o0, 7, %g6			/* IEU1				*/
 22:	ba,pt		%xcc, 30f			/* CTI		Group		*/
-	 subcc		%o0, 8, %g7			/* IEU1				*/
+	 subcc		%o0, 8, %g6			/* IEU1				*/
 
-20:	subcc		%o0, 6, %g7			/* IEU1		Group		*/
+20:	subcc		%o0, 6, %g6			/* IEU1		Group		*/
 	srlx		%o3, 40, %o4			/* IEU0				*/
 	stb		%o4, [%o0 - 6]			/* Store			*/
 29:	srlx		%o3, 48, %o4			/* IEU0		Group		*/
@@ -267,7 +267,7 @@ ENTRY(__stpcpy)
 	stb		%o4, [%o0 - 8]			/* Store			*/
 	retl						/* CTI+IEU1	Group		*/
 
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 END(__stpcpy)
 
 weak_alias (__stpcpy, stpcpy)
--- libc/sysdeps/sparc/sparc64/stpncpy.S.jj	Sat Aug  3 02:57:48 2002
+++ libc/sysdeps/sparc/sparc64/stpncpy.S	Thu Jan 23 21:20:08 2003
@@ -2,7 +2,7 @@
    SRC to DEST, returning the address of the terminating '\0' in
    DEST, if any, or else DEST + N.
    For SPARC v9.
-   Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz> and
 		  Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz>.
@@ -29,7 +29,7 @@
 #define USE_BPR
 	.register	%g2, #scratch
 	.register	%g3, #scratch
-	.register	%g7, #scratch
+	.register	%g6, #scratch
 #endif
 
 	/* Normally, this uses
@@ -112,7 +112,7 @@ ENTRY(__stpncpy)
 	 srlx		%g3, 8, %g5			/* IEU0				*/
 	andcc		%g5, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 10f			/* CTI				*/
-	 sub		%o0, 1, %g7			/* IEU0				*/
+	 sub		%o0, 1, %g6			/* IEU0				*/
 
 	andcc		%g3, 0xff, %g0			/* IEU1		Group		*/
 	bne,pt		%icc, 2b			/* CTI				*/
@@ -156,31 +156,31 @@ ENTRY(__stpncpy)
 
 	 stb		%g0, [%o0]			/* Store			*/
 9:	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
-10:	subcc		%o0, 2, %g7			/* IEU1		Group		*/
+	 mov		%g6, %o0			/* IEU0				*/
+10:	subcc		%o0, 2, %g6			/* IEU1		Group		*/
 
 	ba,pt		%xcc, 3b			/* CTI				*/
 	 sllx		%g5, 8, %g3			/* IEU0				*/
-11:	subcc		%o0, 3, %g7			/* IEU1		Group		*/
+11:	subcc		%o0, 3, %g6			/* IEU1		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
 
 	 sllx		%g4, 16, %g3			/* IEU0				*/
-12:	subcc		%o0, 4, %g7			/* IEU1		Group		*/
+12:	subcc		%o0, 4, %g6			/* IEU1		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
 	 sllx		%g5, 24, %g3			/* IEU0				*/
 
-13:	subcc		%o0, 5, %g7			/* IEU1		Group		*/
+13:	subcc		%o0, 5, %g6			/* IEU1		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
 	 sllx		%g4, 32, %g3			/* IEU0				*/
-14:	subcc		%o0, 6, %g7			/* IEU1		Group		*/
+14:	subcc		%o0, 6, %g6			/* IEU1		Group		*/
 
 	ba,pt		%xcc, 3b			/* CTI				*/
 	 sllx		%g5, 40, %g3			/* IEU0				*/
-15:	subcc		%o0, 7, %g7			/* IEU1		Group		*/
+15:	subcc		%o0, 7, %g6			/* IEU1		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
 
 	 sllx		%g4, 48, %g3			/* IEU0				*/
-16:	subcc		%o0, 8, %g7			/* IEU1		Group		*/
+16:	subcc		%o0, 8, %g6			/* IEU1		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
 	 clr		%g3				/* IEU0				*/
 
@@ -255,7 +255,7 @@ ENTRY(__stpncpy)
 19:	retl						/* CTI+IEU1	Group		*/
 	 nop						/* IEU0				*/
 
-20:	mov		%o0, %g7			/* IEU0		Group		*/
+20:	mov		%o0, %g6			/* IEU0		Group		*/
 	subcc		%o2, 1, %o2			/* IEU1				*/
 	be,pn		%XCC, 51f			/* CTI				*/
 	 add		%o0, 1, %o0			/* IEU0		Group		*/
@@ -266,7 +266,7 @@ ENTRY(__stpncpy)
 	 add		%o0, 1, %o0			/* IEU0				*/
 
 51:	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 	.align		16
 21:	andcc		%o2, 4, %g0			/* IEU1		Group		*/
@@ -295,7 +295,7 @@ ENTRY(__stpncpy)
 	 add		%o0, 1, %o0			/* IEU0				*/
 
 	.align		16
-55:	sub		%o0, 1, %g7			/* IEU0		Group		*/
+55:	sub		%o0, 1, %g6			/* IEU0		Group		*/
 25:	andcc		%o0, 7, %g0			/* IEU1				*/
 	be,a,pn		%icc, 4b			/* CTI				*/
 	 andncc		%o2, 31, %g3			/* IEU1		Group		*/
@@ -306,7 +306,7 @@ ENTRY(__stpncpy)
 	 add		%o0, 1, %o0			/* IEU0		Group		*/
 
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 	.align		16
 26:	ldub		[%o1], %o3			/* Load				*/
@@ -363,23 +363,23 @@ ENTRY(__stpncpy)
 	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
 
 	be,pn		%icc, 36f			/* CTI				*/
-	 srlx		%o3, 48, %g7			/* IEU0				*/
-	andcc		%g7, 0xff, %g0			/* IEU1		Group		*/
+	 srlx		%o3, 48, %g6			/* IEU0				*/
+	andcc		%g6, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 35f			/* CTI				*/
 
 	 srlx		%o3, 40, %o4			/* IEU0				*/
 	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 34f			/* CTI				*/
-	 srlx		%o3, 32, %g7			/* IEU0				*/
+	 srlx		%o3, 32, %g6			/* IEU0				*/
 
-	andcc		%g7, 0xff, %g0			/* IEU1		Group		*/
+	andcc		%g6, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 33f			/* CTI				*/
 	 srlx		%o3, 24, %o4			/* IEU0				*/
 	andcc		%o4, 0xff, %g0			/* IEU1		Group		*/
 
 	be,pn		%icc, 32f			/* CTI				*/
-	 srlx		%o3, 16, %g7			/* IEU0				*/
-	andcc		%g7, 0xff, %g0			/* IEU1		Group		*/
+	 srlx		%o3, 16, %g6			/* IEU0				*/
+	andcc		%g6, 0xff, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 31f			/* CTI				*/
 
 	 srlx		%o3, 8, %o4			/* IEU0				*/
@@ -389,33 +389,33 @@ ENTRY(__stpncpy)
 
 	bne,pn		%icc, 29b			/* CTI				*/
 	 stx		%o3, [%o0-8]			/* Store			*/
-	sub		%o0, 1, %g7			/* IEU0		Group		*/
+	sub		%o0, 1, %g6			/* IEU0		Group		*/
 	ba,pt		%xcc, 4b			/* CTI				*/
 
 	 andncc		%o2, 31, %g3			/* IEU1				*/
-30:	subcc		%o0, 2, %g7			/* IEU0				*/
+30:	subcc		%o0, 2, %g6			/* IEU0				*/
 	ba,pt		%xcc, 3b			/* CTI				*/
 	 sllx		%o4, 8, %g3			/* IEU0		Group		*/
 
-31:	sllx		%g7, 16, %g3			/* IEU0		Group		*/
+31:	sllx		%g6, 16, %g3			/* IEU0		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
-	 sub		%o0, 3, %g7			/* IEU1				*/
-32:	subcc		%o0, 4, %g7			/* IEU1		Group		*/
+	 sub		%o0, 3, %g6			/* IEU1				*/
+32:	subcc		%o0, 4, %g6			/* IEU1		Group		*/
 
 	ba,pt		%xcc, 3b			/* CTI				*/
 	 sllx		%o4, 24, %g3			/* IEU0				*/
-33:	sllx		%g7, 32, %g3			/* IEU0		Group		*/
+33:	sllx		%g6, 32, %g3			/* IEU0		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
 
-	 sub		%o0, 5, %g7			/* IEU1				*/
-34:	subcc		%o0, 6, %g7			/* IEU1		Group		*/
+	 sub		%o0, 5, %g6			/* IEU1				*/
+34:	subcc		%o0, 6, %g6			/* IEU1		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
 	 sllx		%o4, 40, %g3			/* IEU0				*/
 
-35:	sllx		%g7, 48, %g3			/* IEU0		Group		*/
+35:	sllx		%g6, 48, %g3			/* IEU0		Group		*/
 	ba,pt		%xcc, 3b			/* CTI				*/
-	 sub		%o0, 7, %g7			/* IEU1				*/
-36:	subcc		%o0, 8, %g7			/* IEU1		Group		*/
+	 sub		%o0, 7, %g6			/* IEU1				*/
+36:	subcc		%o0, 8, %g6			/* IEU1		Group		*/
 
 	ba,pt		%xcc, 3b			/* CTI				*/
 	 sllx		%o4, 56, %g3			/* IEU0				*/
--- libc/sysdeps/sparc/sparc64/strcat.S.jj	Fri Jul  6 00:56:05 2001
+++ libc/sysdeps/sparc/sparc64/strcat.S	Thu Jan 23 21:20:15 2003
@@ -1,6 +1,6 @@
 /* strcat (dest, src) -- Append SRC on the end of DEST.
    For SPARC v9.
-   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jj@ultra.linux.cz> and
 		  Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz>.
@@ -27,7 +27,7 @@
 #define USE_BPR
 	.register	%g2, #scratch
 	.register	%g3, #scratch
-	.register	%g7, #scratch
+	.register	%g6, #scratch
 #endif
 
 	/* Normally, this uses
@@ -52,7 +52,7 @@ ENTRY(strcat)
 	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
 	ldub		[%o0], %o3			/* Load				*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU0		Group		*/
-	mov		%o0, %g7			/* IEU1				*/
+	mov		%o0, %g6			/* IEU1				*/
 
 	sllx		%g1, 32, %g2			/* IEU0		Group		*/
 	andcc		%o0, 7, %g0			/* IEU1				*/
@@ -192,7 +192,7 @@ ENTRY(strcat)
 	bne,pt		%icc, 3b			/* CTI				*/
 	 mov		%o3, %g3			/* IEU0		Group		*/
 4:	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 	.align		16
 5:	stb		%g5, [%o0 - 2]			/* Store	Group		*/
@@ -202,23 +202,23 @@ ENTRY(strcat)
 
 	stw		%g4, [%o0 - 8]			/* Store	Group		*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 7:	stb		%g5, [%o0 - 4]			/* Store	Group		*/
 
 	srlx		%g3, 32, %g4			/* IEU0				*/
 8:	stw		%g4, [%o0 - 8]			/* Store	Group		*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0 			/* IEU0				*/
+	 mov		%g6, %o0 			/* IEU0				*/
 
 9:	stb		%g5, [%o0 - 6]			/* Store	Group		*/
 	srlx		%g3, 48, %g4			/* IEU0				*/
 10:	sth		%g4, [%o0 - 8]			/* Store	Group		*/
 	retl						/* CTI+IEU1	Group		*/
 
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 11:	stb		%g5, [%o0 - 8]			/* Store	Group		*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 	.align		16
 32:	andcc		%o0, 7, %g0			/* IEU1		Group		*/
@@ -309,7 +309,7 @@ ENTRY(strcat)
 	 stx		%o3, [%o0 - 8]			/* Store			*/
 	retl						/* CTI+IEU1	Group		*/
 
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 	.align		16
 16:	srlx		%o3, 8, %o4			/* IEU0		Group		*/
@@ -323,7 +323,7 @@ ENTRY(strcat)
 	stw		%o4, [%o0 - 8]			/* Store			*/
 
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0 			/* IEU0				*/
+	 mov		%g6, %o0 			/* IEU0				*/
 	nop
 	nop
 
@@ -335,5 +335,5 @@ ENTRY(strcat)
 22:	srlx		%o3, 56, %o4			/* IEU0		Group		*/
 	stb		%o4, [%o0 - 8]			/* Store			*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 END(strcat)
--- libc/sysdeps/sparc/sparc64/strchr.S.jj	Fri Jul  6 00:56:05 2001
+++ libc/sysdeps/sparc/sparc64/strchr.S	Thu Jan 23 21:20:22 2003
@@ -1,6 +1,6 @@
 /* strchr (str, ch) -- Return pointer to first occurrence of CH in STR.
    For SPARC v9.
-   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
 		  Jakub Jelinek <jj@ultra.linux.cz>.
@@ -27,7 +27,7 @@
 #define USE_BPR
 	.register	%g2, #scratch
 	.register	%g3, #scratch
-	.register	%g7, #scratch
+	.register	%g6, #scratch
 #endif
 
 	/* Normally, this uses
@@ -86,10 +86,10 @@ ENTRY(strchr)
 
 	sub		%o4, %g1, %o5			/* IEU1				*/
 #ifdef EIGHTBIT_NOT_RARE
-	andn		%o2, %o3, %g7			/* IEU0		Group		*/
+	andn		%o2, %o3, %g6			/* IEU0		Group		*/
 	andn		%o5, %o4, %o5			/* IEU1				*/
 	ldxa		[%o0] ASI_PNF, %o3		/* Load				*/
-	or		%o5, %g7, %o5			/* IEU0		Group		*/
+	or		%o5, %g6, %o5			/* IEU0		Group		*/
 #else
 	ldxa		[%o0] ASI_PNF, %o3		/* Load				*/
 	or		%o5, %o2, %o5			/* IEU0		Group		*/
@@ -240,9 +240,9 @@ ENTRY(strchr)
 19:	sub		%o3, %g1, %o2			/* IEU0		Group		*/
 
 #ifdef EIGHTBIT_NOT_RARE
-	andn		%o2, %o3, %g7			/* IEU0		Group		*/
+	andn		%o2, %o3, %g6			/* IEU0		Group		*/
 	ldxa		[%o0] ASI_PNF, %o3		/* Load				*/
-	andcc		%g7, %g2, %g0			/* IEU1		Group		*/
+	andcc		%g6, %g2, %g0			/* IEU1		Group		*/
 #else
 	ldxa		[%o0] ASI_PNF, %o3		/* Load				*/
 	andcc		%o2, %g2, %g0			/* IEU1		Group		*/
@@ -364,11 +364,11 @@ ENTRY(strrchr)
 
 3:	sub		%o4, %g1, %o5			/* IEU1				*/
 #ifdef EIGHTBIT_NOT_RARE
-	andn		%o2, %o3, %g7			/* IEU0		Group		*/
+	andn		%o2, %o3, %g6			/* IEU0		Group		*/
 	andn		%o5, %o4, %o5			/* IEU1				*/
 	ldxa		[%o0] ASI_PNF, %o3		/* Load				*/
 
-	or		%o5, %g7, %o5			/* IEU0		Group		*/
+	or		%o5, %g6, %o5			/* IEU0		Group		*/
 #else
 	ldxa		[%o0] ASI_PNF, %o3		/* Load				*/
 
--- libc/sysdeps/sparc/sparc64/strcmp.S.jj	Fri Jul  6 00:56:05 2001
+++ libc/sysdeps/sparc/sparc64/strcmp.S	Thu Jan 23 21:20:29 2003
@@ -1,6 +1,6 @@
 /* Compare two strings for differences.
    For SPARC v9.
-   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
                   Jakub Jelinek <jj@ultra.linux.cz>.
@@ -25,7 +25,7 @@
 #ifndef XCC
 	.register	%g2, #scratch
 	.register	%g3, #scratch
-	.register	%g7, #scratch
+	.register	%g6, #scratch
 #endif
 
 	/* Normally, this uses
@@ -117,7 +117,7 @@ ENTRY(strcmp)
 	 clr		%o0					/* IEU0				*/
 
 	.align		32
-13:	mov		0xff, %g7				/* IEU0		Group		*/
+13:	mov		0xff, %g6				/* IEU0		Group		*/
 #ifdef EIGHTBIT_NOT_RARE
 	andcc		%g4, %g2, %g0				/* IEU1				*/
 #else
@@ -129,34 +129,34 @@ ENTRY(strcmp)
 	srlx		%g3, 32, %g3				/* IEU0				*/
 	andcc		%g3, %g2, %g0				/* IEU1		Group		*/
 	be,pt		%xcc, 23f				/* CTI				*/
-	 sllx		%g7, 56, %o5				/* IEU0				*/
+	 sllx		%g6, 56, %o5				/* IEU0				*/
 
 	andcc		%o4, %o5, %g0				/* IEU1		Group		*/
 	be,pn		%xcc, 24f				/* CTI				*/
-	 sllx		%g7, 48, %o5				/* IEU0				*/
+	 sllx		%g6, 48, %o5				/* IEU0				*/
 	andcc		%o4, %o5, %g0				/* IEU1		Group		*/
 
 	be,pn		%xcc, 24f				/* CTI				*/
-	 sllx		%g7, 40, %o5				/* IEU0				*/
+	 sllx		%g6, 40, %o5				/* IEU0				*/
 	andcc		%o4, %o5, %g0				/* IEU1		Group		*/
 	be,pn		%xcc, 24f				/* CTI				*/
 
-	 sllx		%g7, 32, %o5				/* IEU0				*/
+	 sllx		%g6, 32, %o5				/* IEU0				*/
 	andcc		%o4, %o5, %g0				/* IEU1		Group		*/
 	be,pn		%xcc, 24f				/* CTI				*/
-23:	 sllx		%g7, 24, %o5				/* IEU0				*/
+23:	 sllx		%g6, 24, %o5				/* IEU0				*/
 
 	andcc		%o4, %o5, %g0				/* IEU1		Group		*/
 	be,pn		%icc, 24f				/* CTI				*/
-	 sllx		%g7, 16, %o5				/* IEU0				*/
+	 sllx		%g6, 16, %o5				/* IEU0				*/
 	andcc		%o4, %o5, %g0				/* IEU1		Group		*/
 
 	be,pn		%icc, 24f				/* CTI				*/
-	 sllx		%g7, 8, %o5				/* IEU0				*/
+	 sllx		%g6, 8, %o5				/* IEU0				*/
 	andcc		%o4, %o5, %g0				/* IEU1		Group		*/
 	be,pn		%icc, 24f				/* CTI				*/
 
-	 mov		%g7, %o5				/* IEU0				*/
+	 mov		%g6, %o5				/* IEU0				*/
 25:	cmp		%o4, %o3				/* IEU1		Group		*/
 5:	mov		-1, %o0					/* IEU0				*/
 	retl							/* CTI+IEU1	Group		*/
@@ -164,9 +164,9 @@ ENTRY(strcmp)
 	 movgu		%xcc, 1, %o0				/* Single	Group		*/
 
 	.align		16
-24:	sub		%o5, 1, %g7				/* IEU0		Group		*/
+24:	sub		%o5, 1, %g6				/* IEU0		Group		*/
 	clr		%o0					/* IEU1				*/
-	or		%o5, %g7, %o5				/* IEU0		Group		*/
+	or		%o5, %g6, %o5				/* IEU0		Group		*/
 	andn		%o4, %o5, %o4				/* IEU0		Group		*/
 
 	andn		%o3, %o5, %o3				/* IEU1				*/
@@ -205,7 +205,7 @@ ENTRY(strcmp)
 	sub		%o1, %g3, %o1				/* IEU0		Group		*/
 
 	sub		%o5, %g5, %o5				/* IEU1				*/
-	ldxa		[%o1] ASI_PNF, %g7			/* Load		Group		*/
+	ldxa		[%o1] ASI_PNF, %g6			/* Load		Group		*/
 	or		%g1, %g2, %g1				/* IEU0				*/
 	sub		%o1, %o0, %o1				/* IEU1				*/
 
@@ -215,10 +215,10 @@ ENTRY(strcmp)
 								 * %g2 = 8080808080800880
 								 * %g5 = number of bits to shift left
 								 * %o5 = number of bits to shift right */
-10:	sllx		%g7, %g5, %o3				/* IEU0		Group		*/
-	ldxa		[%o1 + %o0] ASI_PNF, %g7		/* Load				*/
+10:	sllx		%g6, %g5, %o3				/* IEU0		Group		*/
+	ldxa		[%o1 + %o0] ASI_PNF, %g6		/* Load				*/
 
-11:	srlx		%g7, %o5, %o4				/* IEU0		Group		*/
+11:	srlx		%g6, %o5, %o4				/* IEU0		Group		*/
 	ldxa		[%o0] ASI_PNF, %o2			/* Load				*/
 	or		%o3, %o4, %o3				/* IEU1				*/
 	add		%o0, 8, %o0				/* IEU0		Group		*/
@@ -272,8 +272,8 @@ ENTRY(strcmp)
 	be,pn		%icc, 4b				/* CTI				*/
 	 andcc		%o2, 0xff, %g0				/* IEU1		Group		*/
 	be,pn		%icc, 4b				/* CTI				*/
-	 sllx		%g7, %g5, %o3				/* IEU0				*/
+	 sllx		%g6, %g5, %o3				/* IEU0				*/
 
 	ba,pt		%xcc, 11b				/* CTI		Group		*/
-	 ldxa		[%o1 + %o0] ASI_PNF, %g7		/* Load				*/
+	 ldxa		[%o1 + %o0] ASI_PNF, %g6		/* Load				*/
 END(strcmp)
--- libc/sysdeps/sparc/sparc64/strcpy.S.jj	Fri Jul  6 00:56:05 2001
+++ libc/sysdeps/sparc/sparc64/strcpy.S	Thu Jan 23 21:20:36 2003
@@ -1,6 +1,6 @@
 /* Copy SRC to DEST returning DEST.
    For SPARC v9.
-   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
                   Jakub Jelinek <jj@ultra.linux.cz>.
@@ -25,7 +25,7 @@
 #ifndef XCC
 	.register	%g2, #scratch
 	.register	%g3, #scratch
-	.register	%g7, #scratch
+	.register	%g6, #scratch
 #endif
 
 	/* Normally, this uses
@@ -48,7 +48,7 @@
 	.align		32
 ENTRY(strcpy)
 	sethi		%hi(0x01010101), %g1		/* IEU0		Group		*/
-	mov		%o0, %g7			/* IEU1				*/
+	mov		%o0, %g6			/* IEU1				*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU0		Group		*/
 	andcc		%o0, 7, %g0			/* IEU1				*/
 
@@ -108,7 +108,7 @@ ENTRY(strcpy)
 	bne,pt		%icc, 3b			/* CTI				*/
 	 mov		%o3, %g3			/* IEU0		Group		*/
 4:	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 	.align		16
 5:	stb		%g5, [%o0 - 2]			/* Store	Group		*/
@@ -118,23 +118,23 @@ ENTRY(strcpy)
 
 	stw		%g4, [%o0 - 8]			/* Store	Group		*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 7:	stb		%g5, [%o0 - 4]			/* Store	Group		*/
 
 	srlx		%g3, 32, %g4			/* IEU0				*/
 8:	stw		%g4, [%o0 - 8]			/* Store	Group		*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0 			/* IEU0				*/
+	 mov		%g6, %o0 			/* IEU0				*/
 
 9:	stb		%g5, [%o0 - 6]			/* Store	Group		*/
 	srlx		%g3, 48, %g4			/* IEU0				*/
 10:	sth		%g4, [%o0 - 8]			/* Store	Group		*/
 	retl						/* CTI+IEU1	Group		*/
 
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 11:	stb		%g5, [%o0 - 8]			/* Store	Group		*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 12:	or		%g1, %g2, %g1			/* IEU0		Group		*/
 	ldub		[%o1], %o3			/* Load				*/
@@ -214,7 +214,7 @@ ENTRY(strcpy)
 	 stx		%o3, [%o0 - 8]			/* Store			*/
 	retl						/* CTI+IEU1	Group		*/
 
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 	.align		16
 16:	srlx		%o3, 8, %o4			/* IEU0		Group		*/
@@ -228,7 +228,7 @@ ENTRY(strcpy)
 	stw		%o4, [%o0 - 8]			/* Store			*/
 
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0 			/* IEU0				*/
+	 mov		%g6, %o0 			/* IEU0				*/
 	nop
 	nop
 
@@ -240,5 +240,5 @@ ENTRY(strcpy)
 22:	srlx		%o3, 56, %o4			/* IEU0		Group		*/
 	stb		%o4, [%o0 - 8]			/* Store			*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 END(strcpy)
--- libc/sysdeps/sparc/sparc64/strncmp.S.jj	Mon May 20 22:08:53 2002
+++ libc/sysdeps/sparc/sparc64/strncmp.S	Thu Jan 23 21:20:44 2003
@@ -2,7 +2,7 @@
    equal to or greater than zero if S1 is lexicographically less than, 
    equal to or greater than S2.
    For SPARC v9.
-   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
                   Jakub Jelinek <jj@ultra.linux.cz>.
@@ -29,7 +29,7 @@
 #define USE_BPR
 	.register	%g2, #scratch
 	.register	%g3, #scratch
-	.register	%g7, #scratch
+	.register	%g6, #scratch
 #endif
 
 	/* Normally, this uses
@@ -79,14 +79,14 @@ ENTRY(strncmp)
 	sub		%g4, %g1, %g3			/* IEU0		Group		*/
 	subcc		%g4, %o3, %o4			/* IEU1				*/
 #ifdef EIGHTBIT_NOT_RARE
-	andn		%g3, %g4, %g7			/* IEU0		Group		*/
+	andn		%g3, %g4, %g6			/* IEU0		Group		*/
 #endif
 	bne,pn		%xcc, 6f			/* CTI				*/
 	 ldxa		[%o0] ASI_PNF, %g4		/* Load		Group		*/
 
 	add		%o0, 8, %o0			/* IEU0				*/
 #ifdef EIGHTBIT_NOT_RARE
-	andcc		%g7, %g2, %g0			/* IEU1				*/
+	andcc		%g6, %g2, %g0			/* IEU1				*/
 #else
 	andcc		%g3, %g2, %g0			/* IEU1				*/
 #endif
@@ -95,8 +95,8 @@ ENTRY(strncmp)
 
 	addcc		%g3, %g1, %o4			/* IEU1				*/
 #ifdef EIGHTBIT_NOT_RARE
-	srlx		%g7, 32, %g7			/* IEU0				*/
-	andcc		%g7, %g2, %g0			/* IEU1		Group		*/
+	srlx		%g6, 32, %g6			/* IEU0				*/
+	andcc		%g6, %g2, %g0			/* IEU1		Group		*/
 #else
 	srlx		%g3, 32, %g3			/* IEU0				*/
 	andcc		%g3, %g2, %g0			/* IEU1		Group		*/
@@ -289,11 +289,11 @@ ENTRY(strncmp)
 
 	 ldxa		[%o0] ASI_PNF, %g4		/* Load				*/
 11:	sllx		%g3, 3, %g5			/* IEU0		Group		*/
-	mov		64, %g7				/* IEU1				*/
+	mov		64, %g6				/* IEU1				*/
 	or		%g1, %g2, %g1			/* IEU0		Group		*/
 	sub		%o1, %g3, %o1			/* IEU1				*/
 
-	sub		%g7, %g5, %g7			/* IEU0		Group		*/
+	sub		%g6, %g5, %g6			/* IEU0		Group		*/
 	ldxa		[%o1] ASI_PNF, %o4		/* Load				*/
 	sllx		%g1, 7, %g2			/* IEU1				*/
 	add		%o1, 8, %o1			/* IEU0		Group		*/
@@ -301,7 +301,7 @@ ENTRY(strncmp)
 							   %g2 = 8080808080808080
 							   %g3 = %o1 alignment
 							   %g5 = number of bits to shift left
-							   %g7 = number of bits to shift right */
+							   %g6 = number of bits to shift right */
 
 12:	sllx		%o4, %g5, %o3			/* IEU0		Group		*/
 	ldxa		[%o1] ASI_PNF, %o4		/* Load				*/
@@ -309,7 +309,7 @@ ENTRY(strncmp)
 13:	ldxa		[%o0] ASI_PNF, %g4		/* Load		Group		*/
 
 	addcc		%o0, 8, %o0			/* IEU1				*/
-	srlx		%o4, %g7, %o5			/* IEU0				*/
+	srlx		%o4, %g6, %o5			/* IEU0				*/
 	subcc		%o2, 8, %o2			/* IEU1		Group		*/
 	bl,pn		%XCC, 5b			/* CTI				*/
 
--- libc/sysdeps/sparc/sparc64/strncpy.S.jj	Fri Jul  6 00:56:05 2001
+++ libc/sysdeps/sparc/sparc64/strncpy.S	Thu Jan 23 21:20:51 2003
@@ -2,7 +2,7 @@
    null-terminated string from SRC to DST.  If SRC does not cover all of
    COUNT, the balance is zeroed.
    For SPARC v9.
-   Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jan Vondrak <jvon4518@ss1000.ms.mff.cuni.cz> and
                   Jakub Jelinek <jj@ultra.linux.cz>.
@@ -29,7 +29,7 @@
 #define USE_BPR
 	.register	%g2, #scratch
 	.register	%g3, #scratch
-	.register	%g7, #scratch
+	.register	%g6, #scratch
 #endif
 
 	/* Normally, this uses
@@ -58,7 +58,7 @@ ENTRY(strncpy)
 	tst		%o2				/* IEU1				*/
 	be,pn		%XCC, 19f			/* CTI				*/
 #endif
-	 mov		%o0, %g7			/* IEU0		Group		*/
+	 mov		%o0, %g6			/* IEU0		Group		*/
 	or		%g1, %lo(0x01010101), %g1	/* IEU1				*/
 
 	andcc		%o0, 7, %g0			/* IEU1		Group		*/
@@ -156,7 +156,7 @@ ENTRY(strncpy)
 
 	 stb		%g0, [%o0]			/* Store			*/
 9:	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 	.align		16
 10:	ba,pt		%xcc, 3b			/* CTI				*/
@@ -240,14 +240,14 @@ ENTRY(strncpy)
 	stb		%g5, [%o0]			/* Store			*/ 
 
 19:	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 50:	stb		%g0, [%o0]			/* Store	Group		*/
 20:	subcc		%o2, 1, %o2			/* IEU1		Group		*/
 
 	bne,pt		%XCC, 50b			/* CTI				*/
 	 add		%o0, 1, %o0			/* IEU0				*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 21:	andcc		%o2, 4, %g0			/* IEU1		Group		*/
 	be,pn		%icc, 22f			/* CTI				*/
@@ -270,7 +270,7 @@ ENTRY(strncpy)
 	 stb		%g4, [%o0]			/* Store	Group		*/
 
 24:	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 25:	andcc		%o0, 7, %g0			/* IEU1		Group		*/
 	be,a,pn		%icc, 4b			/* CTI				*/
 
@@ -281,7 +281,7 @@ ENTRY(strncpy)
 
 	 add		%o0, 1, %o0			/* IEU0		Group		*/
 	retl						/* CTI+IEU1	Group		*/
-	 mov		%g7, %o0			/* IEU0				*/
+	 mov		%g6, %o0			/* IEU0				*/
 
 	.align		16
 26:	ldub		[%o1], %o3			/* Load				*/
--- libc/sysdeps/sparc/dl-tls.h.jj	Thu Jan 23 20:36:24 2003
+++ libc/sysdeps/sparc/dl-tls.h	Thu Jan 23 20:36:37 2003
@@ -0,0 +1,29 @@
+/* Thread-local storage handling in the ELF dynamic linker.  SPARC version.
+   Copyright (C) 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+
+/* Type used for the representation of TLS information in the GOT.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+
+extern void *__tls_get_addr (tls_index *ti);
--- libc/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S.jj	Sat Dec 28 04:18:09 2002
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/socket.S	Mon Jan 20 14:03:28 2003
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, 1997.
 
@@ -17,7 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <sysdep.h>
+#include <sysdep-cancel.h>
 #include <socketcall.h>
 
 #define P(a, b) P2(a, b)
@@ -63,7 +63,12 @@ ENTRY (__socket)
 #endif
 #endif
 
-	mov P(SOCKOP_,socket), %o0	/* arg 1: socket subfunction */
+#if defined NEED_CANCELLATION && defined CENABLE
+	SINGLE_THREAD_P
+	cmp %g1, 0
+	bne .Lsocket_cancel
+#endif
+	 mov P(SOCKOP_,socket), %o0	/* arg 1: socket subfunction */
 	add %sp, 68, %o1		/* arg 2: parameter block */
 	LOADSYSCALL(socketcall)
 	t 0x10
@@ -72,6 +77,25 @@ ENTRY (__socket)
 	retl
 	 nop
 
+#if defined NEED_CANCELLATION && defined CENABLE
+.Lsocket_cancel:
+	save %sp, -96, %sp
+	CENABLE
+	 nop
+	mov %o0, %l0
+	add %sp, 68 + 96, %o1
+	mov P(SOCKOP_,socket), %o0
+	LOADSYSCALL(socketcall)
+	t 0x10
+	bcs __syscall_error_handler2
+	 mov %o0, %l1
+	CDISABLE
+	 mov %l0, %o0
+	jmpl %i7 + 8, %g0
+	 restore %g0, %l1, %o0
+	SYSCALL_ERROR_HANDLER2
+#endif
+
 	SYSCALL_ERROR_HANDLER
 
 END (__socket)
--- libc/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h.jj	Sat Dec 28 04:18:52 2002
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h	Thu Jan 23 21:24:02 2003
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, January 1997.
 
@@ -131,7 +131,7 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_er
 	" sub	%%g0, %%o0, %%o0;"					\
 	"1:"
 
-#define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g7",		\
+#define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g6",		\
 	"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",			\
 	"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",		\
 	"f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",		\
--- libc/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h.jj	Sat Dec 28 04:20:26 2002
+++ libc/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h	Thu Jan 23 21:24:25 2003
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2000, 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
 
@@ -134,7 +134,7 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_er
 	" sub	%%g0, %%o0, %%o0;"					\
 	"1:"
 
-#define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g7",		\
+#define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g6",		\
 	"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",			\
 	"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",		\
 	"f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",		\

	Jakub


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