Fixed dynamic linking on x86
[akaros.git] / tools / compilers / gcc-glibc / glibc-2.14.1-riscv.patch
index 1757e82..7c64f4e 100644 (file)
@@ -17,8 +17,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/a
 +#define ABORT_INSTRUCTION asm ("unimp")
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/bits/atomic.h glibc-2.14.1/sysdeps/riscv/bits/atomic.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/bits/atomic.h   1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/bits/atomic.h   2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,178 @@
++++ glibc-2.14.1/sysdeps/riscv/bits/atomic.h   2011-11-01 23:44:42.000000000 -0700
+@@ -0,0 +1,177 @@
 +/* Low-level functions for atomic operations. Mips version.
 +   Copyright (C) 2005 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -67,8 +67,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/b
 +  (".gnu.linkonce.b.__riscv_atomic_lock, \"aw\", %nobits");
 +
 +volatile int __riscv_atomic_lock
-+  __attribute__ ((nocommon, section (".gnu.linkonce.b.__riscv_atomic_lock"
-+                                   __sec_comment),
++  __attribute__ ((nocommon, section(".gnu.linkonce.b.__riscv_atomic_lock\n\t#"),
 +                visibility ("hidden")));
 +
 +#define __riscv_atomic_do_lock(addr) ({ \
@@ -269,7 +268,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/b
 +#endif
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/bits/endian.h glibc-2.14.1/sysdeps/riscv/bits/endian.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/bits/endian.h   1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/bits/endian.h   2011-10-25 02:48:44.000000000 -0700
++++ glibc-2.14.1/sysdeps/riscv/bits/endian.h   2011-10-27 21:55:31.000000000 -0700
 @@ -0,0 +1,13 @@
 +/* The MIPS architecture has selectable endianness.
 +   This file is for a machine using big-endian mode.  */
@@ -278,10 +277,10 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/b
 +# error "Never use <bits/endian.h> directly; include <endian.h> instead."
 +#endif
 +
-+#if __MIPSEB
++#if __RISCVEB
 +# define __BYTE_ORDER __BIG_ENDIAN
 +#endif
-+#if __MIPSEL
++#if __RISCVEL
 +# define __BYTE_ORDER __LITTLE_ENDIAN
 +#endif
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/bits/fenv.h glibc-2.14.1/sysdeps/riscv/bits/fenv.h
@@ -403,8 +402,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/b
 +#endif /* bits/ipctypes.h */
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/bits/link.h glibc-2.14.1/sysdeps/riscv/bits/link.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/bits/link.h     1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/bits/link.h     2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,118 @@
++++ glibc-2.14.1/sysdeps/riscv/bits/link.h     2011-11-03 19:06:26.000000000 -0700
+@@ -0,0 +1,76 @@
 +/* Copyright (C) 2005, 2009 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +
@@ -427,68 +426,26 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/b
 +# error "Never include <bits/link.h> directly; use <link.h> instead."
 +#endif
 +
-+#include <sgidefs.h>
-+
-+#if _RISCV_SIM == _ABIO32
-+
-+/* Registers for entry into PLT on MIPS.  */
-+typedef struct La_mips_32_regs
-+{
-+  uint32_t lr_reg[4]; /* $a0 through $a3 */
-+  double lr_fpreg[2]; /* $f12 and $f14 */
-+  uint32_t lr_ra;
-+  uint32_t lr_sp;
-+} La_mips_32_regs;
-+
-+/* Return values for calls from PLT on MIPS.  */
-+typedef struct La_mips_32_retval
-+{
-+  uint32_t lrv_v0;
-+  uint32_t lrv_v1;
-+  double lrv_f0;
-+  double lrv_f2;
-+} La_mips_32_retval;
-+
-+#else
-+
 +typedef struct La_mips_64_regs
 +{
-+  uint64_t lr_reg[8]; /* $a0 through $a7 */
-+  double lr_fpreg[8]; /* $f12 throgh $f19 */
-+  uint64_t lr_ra;
-+  uint64_t lr_sp;
++  unsigned long lr_reg[8]; /* $a0 through $a7 */
++  double lr_fpreg[8]; /* $f4 throgh $f11 */
++  unsigned long lr_ra;
++  unsigned long lr_sp;
 +} La_mips_64_regs;
 +
 +/* Return values for calls from PLT on MIPS.  */
 +typedef struct La_mips_64_retval
 +{
-+  uint64_t lrv_v0;
-+  uint64_t lrv_v1;
-+  double lrv_f0;
-+  double lrv_f2;
++  unsigned long lrv_v0;
++  unsigned long lrv_v1;
++  double lrv_fv0;
++  double lrv_fv1;
 +} La_mips_64_retval;
 +
-+#endif
-+
 +__BEGIN_DECLS
 +
-+#if _RISCV_SIM == _ABIO32
-+
-+extern Elf32_Addr la_mips_o32_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
-+                                          uintptr_t *__refcook,
-+                                          uintptr_t *__defcook,
-+                                          La_mips_32_regs *__regs,
-+                                          unsigned int *__flags,
-+                                          const char *__symname,
-+                                          long int *__framesizep);
-+extern unsigned int la_mips_o32_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
-+                                           uintptr_t *__refcook,
-+                                           uintptr_t *__defcook,
-+                                           const La_mips_32_regs *__inregs,
-+                                           La_mips_32_retval *__outregs,
-+                                           const char *__symname);
-+
-+#elif _RISCV_SIM == _ABIN32
++#if _RISCV_SIM == _ABI32
 +
 +extern Elf32_Addr la_mips_n32_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
 +                                          uintptr_t *__refcook,
@@ -533,7 +490,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/b
 +  };
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/bits/mathdef.h glibc-2.14.1/sysdeps/riscv/bits/mathdef.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/bits/mathdef.h  1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/bits/mathdef.h  2011-10-25 02:48:44.000000000 -0700
++++ glibc-2.14.1/sysdeps/riscv/bits/mathdef.h  2011-11-03 18:57:51.000000000 -0700
 @@ -0,0 +1,45 @@
 +/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2007
 +      Free Software Foundation, Inc.
@@ -575,7 +532,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/b
 +
 +#endif        /* ISO C99 */
 +
-+#if ! defined __NO_LONG_DOUBLE_MATH && _RISCV_SIM == _ABIO32
++#if ! defined __NO_LONG_DOUBLE_MATH && _RISCV_SIM == _ABI32
 +/* Signal that we do not really have a `long double'.  This disables the
 +   declaration of all the `long double' function variants.  */
 +# define __NO_LONG_DOUBLE_MATH        1
@@ -642,7 +599,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/b
 +#endif        /* GCC.  */
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/bits/setjmp.h glibc-2.14.1/sysdeps/riscv/bits/setjmp.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/bits/setjmp.h   1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/bits/setjmp.h   2011-10-25 02:48:44.000000000 -0700
++++ glibc-2.14.1/sysdeps/riscv/bits/setjmp.h   2011-11-02 01:20:35.000000000 -0700
 @@ -0,0 +1,47 @@
 +/* Define the machine-dependent type `jmp_buf'.  RISC-V version.
 +   Copyright (C) 1992,1993,1995,1997,2000,2002,2003,2004,2005,2006
@@ -687,7 +644,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/b
 +    /* Callee-saved floating point registers.
 +       Note that there are an even number of preceding words in this struct,
 +       so no padding will be inserted before __fpregs, even for RV32. */
-+    double __fpregs[8];
++    double __fpregs[10];
 +  } __jmp_buf[1];
 +
 +#endif /* _RISCV_BITS_SETJMP_H */
@@ -1792,8 +1749,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/d
 +}
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/dl-machine.h glibc-2.14.1/sysdeps/riscv/dl-machine.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/dl-machine.h    1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/dl-machine.h    2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,746 @@
++++ glibc-2.14.1/sysdeps/riscv/dl-machine.h    2011-11-03 19:07:06.000000000 -0700
+@@ -0,0 +1,740 @@
 +/* Machine-dependent ELF dynamic relocation inline functions.  MIPS version.
 +   Copyright (C) 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007
 +   Free Software Foundation, Inc.
@@ -1827,7 +1784,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/d
 +#error ENTRY_POINT needs to be defined for MIPS.
 +#endif
 +
-+#include <sgidefs.h>
 +#include <sys/asm.h>
 +#include <dl-tls.h>
 +
@@ -2000,19 +1956,14 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/d
 +      # Subtract OFFSET_GP_GOT\n\
 +      " STRINGXP(REG_S) " a0, -" STRINGXP(OFFSET_GP_GOT) "(gp)\n\
 +      move a0, sp\n\
-+      addi sp, sp, -16\n\
-+      \n\
 +      rdnpc t0\n\
 +.Lcoff: \n\
-+      " STRINGXV(PIC_LA(a4, gp, .Lcoff)) "\n\
-+      sub a4, t0, a4\n\
-+      \n\
++      " STRINGXV(PIC_LA(t1, gp, .Lcoff)) "\n\
 +      " STRINGXV(PIC_LA(t7, gp, _dl_start)) "\n\
-+      add t7, t7, t0\n\
++      sub  t0, t0, t1\n\
++      add  t7, t7, t0\n\
 +      jalr t7\n\
-+      \n\
-+      addi sp, sp, 16\n\
-+      j _dl_start_user\n\
++      # Fall through to _dl_start_user \
 +      " _RTLD_EPILOGUE(ENTRY_POINT) "\
 +      \n\
 +      \n\
@@ -3090,34 +3041,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/e
 +      .long 0
 +      .weak data_start
 +      data_start = __data_start
-diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/fpregdef.h glibc-2.14.1/sysdeps/riscv/fpregdef.h
---- ../glibc-2.14.1-orig/sysdeps/riscv/fpregdef.h      1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/fpregdef.h      2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,24 @@
-+/* Copyright (C) 1991, 92, 94, 95, 96 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.  */
-+
-+#ifndef _FPREGDEF_H
-+#define _FPREGDEF_H
-+
-+#include <sys/fpregdef.h>
-+
-+#endif /* _FPREGDEF_H */
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/fpu/bits/mathinline.h glibc-2.14.1/sysdeps/riscv/fpu/bits/mathinline.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/fpu/bits/mathinline.h   1969-12-31 16:00:00.000000000 -0800
 +++ glibc-2.14.1/sysdeps/riscv/fpu/bits/mathinline.h   2011-10-25 02:48:44.000000000 -0700
@@ -3176,8 +3099,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/f
 +#endif /* __GNUC__ */
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/fpu/e_sqrt.c glibc-2.14.1/sysdeps/riscv/fpu/e_sqrt.c
 --- ../glibc-2.14.1-orig/sysdeps/riscv/fpu/e_sqrt.c    1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/fpu/e_sqrt.c    2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,38 @@
++++ glibc-2.14.1/sysdeps/riscv/fpu/e_sqrt.c    2011-10-27 22:20:54.000000000 -0700
+@@ -0,0 +1,26 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
@@ -3197,29 +3120,17 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/f
 +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 +   02111-1307 USA.  */
 +
-+
-+#include <sgidefs.h>
-+
-+
-+#if (_MIPS_ISA >= _MIPS_ISA_MIPS2)
-+
 +double
 +__ieee754_sqrt (double x)
 +{
 +  double z;
-+  __asm__ ("sqrt.d %0,%1" : "=f" (z) : "f" (x));
++  __asm__ ("fsqrt.d %0,%1" : "=f" (z) : "f" (x));
 +  return z;
 +}
-+
-+#else
-+
-+#include <sysdeps/ieee754/dbl-64/e_sqrt.c>
-+
-+#endif
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/fpu/e_sqrtf.c glibc-2.14.1/sysdeps/riscv/fpu/e_sqrtf.c
 --- ../glibc-2.14.1-orig/sysdeps/riscv/fpu/e_sqrtf.c   1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/fpu/e_sqrtf.c   2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,39 @@
++++ glibc-2.14.1/sysdeps/riscv/fpu/e_sqrtf.c   2011-10-27 22:21:11.000000000 -0700
+@@ -0,0 +1,26 @@
 +/* Copyright (C) 2002 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
@@ -3239,26 +3150,13 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/f
 +   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 +   02111-1307 USA.  */
 +
-+
-+#include <sgidefs.h>
-+
-+
-+#if (_MIPS_ISA >= _MIPS_ISA_MIPS2)
-+
 +float
 +__ieee754_sqrtf (float x)
 +{
 +  float z;
-+  __asm__ ("sqrt.s %0,%1" : "=f" (z) : "f" (x));
++  __asm__ ("fsqrt.s %0,%1" : "=f" (z) : "f" (x));
 +  return z;
 +}
-+
-+#else
-+
-+#include <sysdeps/ieee754/flt-32/e_sqrtf.c>
-+
-+#endif
-+
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/fpu/fclrexcpt.c glibc-2.14.1/sysdeps/riscv/fpu/fclrexcpt.c
 --- ../glibc-2.14.1-orig/sysdeps/riscv/fpu/fclrexcpt.c 1969-12-31 16:00:00.000000000 -0800
 +++ glibc-2.14.1/sysdeps/riscv/fpu/fclrexcpt.c 2011-10-25 02:48:44.000000000 -0700
@@ -5608,8 +5506,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/l
 +#endif
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/__longjmp.S glibc-2.14.1/sysdeps/riscv/__longjmp.S
 --- ../glibc-2.14.1-orig/sysdeps/riscv/__longjmp.S     1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/__longjmp.S     2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,57 @@
++++ glibc-2.14.1/sysdeps/riscv/__longjmp.S     2011-11-02 01:24:15.000000000 -0700
+@@ -0,0 +1,59 @@
 +/* Copyright (C) 1996, 1997, 2000, 2002, 2003, 2004
 +      Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -5650,30 +5548,31 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/_
 +#ifdef __riscv_hard_float
 +      REG_L t0, 13*SZREG(a0)
 +
-+      fld  fs0, 14*SZREG(a0)
-+      fld  fs1, 15*SZREG(a0)
-+      fld  fs2, 16*SZREG(a0)
-+      fld  fs3, 17*SZREG(a0)
-+      fld  fs4, 18*SZREG(a0)
-+      fld  fs5, 19*SZREG(a0)
-+      fld  fs6, 20*SZREG(a0)
-+      fld  fs7, 21*SZREG(a0)
++      fld  fs0, 8*0 + 14*SZREG(a0)
++      fld  fs1, 8*1 + 14*SZREG(a0)
++      fld  fs2, 8*2 + 14*SZREG(a0)
++      fld  fs3, 8*3 + 14*SZREG(a0)
++      fld  fs4, 8*4 + 14*SZREG(a0)
++      fld  fs5, 8*5 + 14*SZREG(a0)
++      fld  fs6, 8*6 + 14*SZREG(a0)
++      fld  fs7, 8*7 + 14*SZREG(a0)
++      fld  fs8, 8*8 + 14*SZREG(a0)
++      fld  fs9, 8*9 + 14*SZREG(a0)
 +
 +      mtfsr t0
 +#endif
 +
-+      sltu t0, a1, 1  # t0 = (a1 == 0)
-+      add  v0, t0, a1 # v0 = (a1 == 0 ? 1 : a1)
++      sltu t0, a1, 1    # t0 = (a1 == 0)
++      add  v0, t0, a1   # v0 = (a1 == 0 ? 1 : a1)
 +      ret
 +
 +END(__longjmp)
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/Makefile glibc-2.14.1/sysdeps/riscv/Makefile
 --- ../glibc-2.14.1-orig/sysdeps/riscv/Makefile        1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/Makefile        2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,10 @@
++++ glibc-2.14.1/sysdeps/riscv/Makefile        2011-10-27 22:23:23.000000000 -0700
+@@ -0,0 +1,9 @@
 +ifeq ($(subdir),misc)
-+sysdep_headers += regdef.h fpregdef.h sys/regdef.h sys/fpregdef.h \
-+                sys/asm.h sgidefs.h
++sysdep_headers += sys/asm.h sgidefs.h
 +endif
 +
 +ifeq ($(subdir),rt)
@@ -5981,8 +5880,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/n
 +TID_OFFSET                    thread_offsetof (tid)
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/nptl/tls.h glibc-2.14.1/sysdeps/riscv/nptl/tls.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/nptl/tls.h      1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/nptl/tls.h      2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,173 @@
++++ glibc-2.14.1/sysdeps/riscv/nptl/tls.h      2011-10-27 22:17:29.000000000 -0700
+@@ -0,0 +1,165 @@
 +/* Definition for thread-local data handling.  NPTL/MIPS version.
 +   Copyright (C) 2005, 2007 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -6023,9 +5922,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/n
 +  } pointer;
 +} dtv_t;
 +
-+# define READ_THREAD_POINTER() \
-+    ({ register void* __result asm("tp");      \
-+       __result; })
++register void* __thread_self asm("tp");
++# define READ_THREAD_POINTER() ({ __thread_self; })
 +
 +#endif /* __ASSEMBLER__ */
 +
@@ -6092,16 +5990,9 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/n
 +# define GET_DTV(tcbp) \
 +  (((tcbhead_t *) (tcbp))[-1].dtv)
 +
-+/* Code to initially initialize the thread pointer.  This might need
-+   special attention since 'errno' is not yet available and if the
-+   operation can cause a failure 'errno' must not be touched.  */
++/* Code to initially initialize the thread pointer. */
 +# define TLS_INIT_TP(tcbp, secondcall) \
-+  ({ INTERNAL_SYSCALL_DECL (err);                                     \
-+     long result_var;                                                 \
-+     result_var = INTERNAL_SYSCALL (set_thread_area, err, 1,          \
-+                                  (char *) (tcbp) + TLS_TCB_OFFSET);  \
-+     INTERNAL_SYSCALL_ERROR_P (result_var, err)                               \
-+       ? "unknown error" : NULL; })
++  ({ __thread_self = (char*)tcbp + TLS_TCB_OFFSET; NULL; })
 +
 +/* Return the address of the dtv for the current thread.  */
 +# define THREAD_DTV() \
@@ -6181,37 +6072,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/p
 +  CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
 +fi
 +;;
-diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/regdef.h glibc-2.14.1/sysdeps/riscv/regdef.h
---- ../glibc-2.14.1-orig/sysdeps/riscv/regdef.h        1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/regdef.h        2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,27 @@
-+/* Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+   Contributed by Ralf Baechle <ralf@gnu.org>.
-+
-+   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.  */
-+
-+#ifndef _REGDEF_H
-+#define _REGDEF_H
-+
-+#include <sys/regdef.h>
-+#include <sys/fpregdef.h>
-+
-+#endif /* _REGDEF_H */
-+
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/rv32/Implies glibc-2.14.1/sysdeps/riscv/rv32/Implies
 --- ../glibc-2.14.1-orig/sysdeps/riscv/rv32/Implies    1969-12-31 16:00:00.000000000 -0800
 +++ glibc-2.14.1/sysdeps/riscv/rv32/Implies    2011-10-25 02:48:44.000000000 -0700
@@ -7667,8 +7527,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/r
 +}
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/setjmp.S glibc-2.14.1/sysdeps/riscv/setjmp.S
 --- ../glibc-2.14.1-orig/sysdeps/riscv/setjmp.S        1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/setjmp.S        2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,73 @@
++++ glibc-2.14.1/sysdeps/riscv/setjmp.S        2011-11-02 01:21:55.000000000 -0700
+@@ -0,0 +1,75 @@
 +/* Copyright (C) 1996, 1997, 2000, 2002, 2003, 2004
 +      Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -7725,6 +7585,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/s
 +  fsd  fs5, 8*5 + 14*SZREG(a0)
 +  fsd  fs6, 8*6 + 14*SZREG(a0)
 +  fsd  fs7, 8*7 + 14*SZREG(a0)
++  fsd  fs8, 8*8 + 14*SZREG(a0)
++  fsd  fs9, 8*9 + 14*SZREG(a0)
 +
 +  REG_S t0, 13*SZREG(a0)
 +#endif
@@ -7744,8 +7606,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/s
 +weak_alias(_setjmp, __GI__setjmp)
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/sgidefs.h glibc-2.14.1/sysdeps/riscv/sgidefs.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/sgidefs.h       1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/sgidefs.h       2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,73 @@
++++ glibc-2.14.1/sysdeps/riscv/sgidefs.h       2011-10-27 22:22:09.000000000 -0700
+@@ -0,0 +1,41 @@
 +/* Copyright (C) 1996, 1997, 1998, 2003, 2004 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +   Contributed by Ralf Baechle <ralf@gnu.org>.
@@ -7769,38 +7631,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/s
 +#define _SGIDEFS_H    1
 +
 +/*
-+ * A crude hack to stop <asm/sgidefs.h>
-+ */
-+#undef __ASM_SGIDEFS_H
-+#define __ASM_SGIDEFS_H
-+
-+/*
-+ * And remove any damage it might have already done
-+ */
-+#undef _MIPS_ISA_MIPS1
-+#undef _MIPS_ISA_MIPS2
-+#undef _MIPS_ISA_MIPS3
-+#undef _MIPS_ISA_MIPS4
-+#undef _MIPS_ISA_MIPS5
-+#undef _MIPS_ISA_MIPS32
-+#undef _MIPS_ISA_MIPS64
-+
-+#undef _RISCV_SIM_ABI32
-+#undef _RISCV_SIM_NABI32
-+#undef _RISCV_SIM_ABI64
-+
-+/*
-+ * Definitions for the ISA level
-+ */
-+#define _MIPS_ISA_MIPS1 1
-+#define _MIPS_ISA_MIPS2 2
-+#define _MIPS_ISA_MIPS3 3
-+#define _MIPS_ISA_MIPS4 4
-+#define _MIPS_ISA_MIPS5 5
-+#define _MIPS_ISA_MIPS32 6
-+#define _MIPS_ISA_MIPS64 7
-+
-+/*
 + * Subprogram calling convention
 + */
 +#ifndef _ABIO32
@@ -8143,38 +7973,10 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/s
 +#endif
 +
 +#endif /* sys/asm.h */
-diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/sys/fpregdef.h glibc-2.14.1/sysdeps/riscv/sys/fpregdef.h
---- ../glibc-2.14.1-orig/sysdeps/riscv/sys/fpregdef.h  1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/sys/fpregdef.h  2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,24 @@
-+/* Copyright (C) 1991,92,94,95,96,97,98,2009 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.  */
-+
-+#ifndef _SYS_FPREGDEF_H
-+#define _SYS_FPREGDEF_H
-+
-+#include <sgidefs.h>
-+
-+#endif /* sys/fpregdef.h */
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/sys/ucontext.h glibc-2.14.1/sysdeps/riscv/sys/ucontext.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/sys/ucontext.h  1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/sys/ucontext.h  2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,159 @@
++++ glibc-2.14.1/sysdeps/riscv/sys/ucontext.h  2011-11-03 19:08:52.000000000 -0700
+@@ -0,0 +1,144 @@
 +/* Copyright (C) 1998, 1999, 2002, 2003, 2004 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
 +
@@ -8199,15 +8001,10 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/s
 +#define _SYS_UCONTEXT_H       1
 +
 +#include <features.h>
-+#include <sgidefs.h>
 +#include <signal.h>
 +
 +/* Type for general register.  */
-+#if _RISCV_SIM == _ABIO32
-+typedef __uint32_t greg_t;
-+#else
-+typedef __uint64_t greg_t;
-+#endif
++typedef unsigned long greg_t;
 +
 +/* Number of general registers.  */
 +#define NGREG 36
@@ -8297,15 +8094,9 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/s
 +{
 +  union
 +  {
-+#if _RISCV_SIM == _ABIO32
-+    double fp_dregs[16];
-+    float fp_fregs[32];
-+    unsigned int fp_regs[32];
-+#else
 +    double fp_dregs[32];
 +    /* float fp_fregs[32]; */
 +    __uint64_t fp_regs[32];
-+#endif
 +  } fp_r;
 +  unsigned int fp_csr;
 +  unsigned int fp_pad;
@@ -8321,11 +8112,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/s
 +/* Userlevel context.  */
 +typedef struct ucontext
 +{
-+#if _RISCV_SIM == _ABIO32
 +  unsigned long int uc_flags;
-+#else
-+  __uint64_t uc_flags;
-+#endif
 +  struct ucontext *uc_link;
 +  __sigset_t uc_sigmask;
 +  stack_t uc_stack;
@@ -8406,8 +8193,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/t
 +     __result; })
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/tst-audit.h glibc-2.14.1/sysdeps/riscv/tst-audit.h
 --- ../glibc-2.14.1-orig/sysdeps/riscv/tst-audit.h     1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/riscv/tst-audit.h     2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,40 @@
++++ glibc-2.14.1/sysdeps/riscv/tst-audit.h     2011-11-03 19:05:17.000000000 -0700
+@@ -0,0 +1,33 @@
 +/* Definitions for testing PLT entry/exit auditing.  ARM version.
 +
 +   Copyright (C) 2005 Free Software Foundation, Inc.
@@ -8431,13 +8218,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/t
 +
 +#include <sgidefs.h>
 +
-+#if _RISCV_SIM == _ABIO32
-+#define pltenter la_mips_o32_gnu_pltenter
-+#define pltexit la_mips_o32_gnu_pltexit
-+#define La_regs La_mips_32_regs
-+#define La_retval La_mips_32_retval
-+#else
-+#if _RISCV_SIM == _ABIN32
++#if _RISCV_SIM == _ABI32
 +#define pltenter la_mips_n32_gnu_pltenter
 +#define pltexit la_mips_n32_gnu_pltexit
 +#else
@@ -8446,7 +8227,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/riscv/t
 +#endif
 +#define La_regs La_mips_64_regs
 +#define La_retval La_mips_64_retval
-+#endif
 +#define int_retval lrv_v0
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/riscv/pipe.S glibc-2.14.1/sysdeps/unix/riscv/pipe.S
 --- ../glibc-2.14.1-orig/sysdeps/unix/riscv/pipe.S     1969-12-31 16:00:00.000000000 -0800
@@ -8539,8 +8319,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/ri
 +}
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/riscv/sysdep.h glibc-2.14.1/sysdeps/unix/riscv/sysdep.h
 --- ../glibc-2.14.1-orig/sysdeps/unix/riscv/sysdep.h   1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/unix/riscv/sysdep.h   2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,74 @@
++++ glibc-2.14.1/sysdeps/unix/riscv/sysdep.h   2011-10-27 22:23:40.000000000 -0700
+@@ -0,0 +1,73 @@
 +/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003, 2004
 +   Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -8565,7 +8345,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/ri
 +
 +#ifdef __ASSEMBLER__
 +
-+#include <regdef.h>
 +#include <sys/asm.h>
 +
 +#define ENTRY(name) LEAF(name)
@@ -11502,15 +11281,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +}
 +
 +#endif
-diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/entry.h glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/entry.h
---- ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/entry.h 1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/entry.h 2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,5 @@
-+#ifndef __ASSEMBLY__
-+extern void __start (void);
-+#endif
-+
-+#define ENTRY_POINT __start
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/fcntl.c glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/fcntl.c
 --- ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/fcntl.c 1969-12-31 16:00:00.000000000 -0800
 +++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/fcntl.c 2011-10-25 02:48:44.000000000 -0700
@@ -11598,7 +11368,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +#endif
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/getcontext.S glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/getcontext.S
 --- ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/getcontext.S    1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/getcontext.S    2011-10-25 02:48:44.000000000 -0700
++++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/getcontext.S    2011-11-02 01:26:28.000000000 -0700
 @@ -0,0 +1,83 @@
 +/* Save current context.
 +   Copyright (C) 2009 Free Software Foundation, Inc.
@@ -11622,8 +11392,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +
 +#include <sysdep.h>
 +#include <sys/asm.h>
-+#include <sys/fpregdef.h>
-+#include <sys/regdef.h>
 +
 +#include "ucontext_i.h"
 +
@@ -11653,14 +11421,16 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +#ifdef __riscv_hard_float
 +  mffsr v1
 +
-+      fsd     fs0, (24 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs1, (25 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs2, (26 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs3, (27 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs4, (28 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs5, (29 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs6, (30 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs7, (31 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs0, (20 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs1, (21 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs2, (22 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs3, (23 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs4, (24 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs5, (25 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs6, (26 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs7, (27 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs8, (28 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs9, (29 * 8 + MCONTEXT_FPREGS)(a0)
 +
 +      sw      v1, MCONTEXT_FSR(a0)
 +#endif /* __mips_hard_float */
@@ -12023,12 +11793,10 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +#include <__longjmp.S>
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/makecontext.c glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/makecontext.c
 --- ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/makecontext.c   1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/makecontext.c   2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,36 @@
++++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/makecontext.c   2011-10-27 22:23:54.000000000 -0700
+@@ -0,0 +1,34 @@
 +#include <sysdep.h>
 +#include <sys/asm.h>
-+#include <sys/fpregdef.h>
-+#include <sys/regdef.h>
 +#include <sys/ucontext.h>
 +#include <stdarg.h>
 +
@@ -14388,7 +14156,7 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +weak_alias (__umount, umount);
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/setcontext.S glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/setcontext.S
 --- ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/setcontext.S    1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/setcontext.S    2011-10-25 02:48:44.000000000 -0700
++++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/setcontext.S    2011-11-02 01:26:08.000000000 -0700
 @@ -0,0 +1,131 @@
 +/* Set current context.
 +   Copyright (C) 2009 Free Software Foundation, Inc.
@@ -14412,8 +14180,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +
 +#include <sysdep.h>
 +#include <sys/asm.h>
-+#include <sys/fpregdef.h>
-+#include <sys/regdef.h>
 +
 +#include "ucontext_i.h"
 +
@@ -14446,14 +14212,16 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +#ifdef __riscv_hard_float
 +      lw      v1, MCONTEXT_FSR(v0)
 +
-+      fld     fs0, (24 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs1, (25 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs2, (26 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs3, (27 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs4, (28 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs5, (29 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs6, (30 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs7, (31 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs0, (20 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs1, (21 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs2, (22 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs3, (23 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs4, (24 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs5, (25 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs6, (26 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs7, (27 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs8, (28 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs9, (29 * 8 + MCONTEXT_FPREGS)(v0)
 +
 +      mtfsr   v1
 +#endif /* __mips_hard_float */
@@ -14861,8 +14629,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +#endif
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/__start_context.S glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/__start_context.S
 --- ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/__start_context.S       1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/__start_context.S       2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,41 @@
++++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/__start_context.S       2011-10-27 22:24:01.000000000 -0700
+@@ -0,0 +1,39 @@
 +/* Modify saved context.
 +   Copyright (C) 2009 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -14885,8 +14653,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +
 +#include <sysdep.h>
 +#include <sys/asm.h>
-+#include <sys/fpregdef.h>
-+#include <sys/regdef.h>
 +
 +#include "ucontext_i.h"
 +
@@ -14906,8 +14672,8 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +PSEUDO_END (__start_context)
 diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/swapcontext.S glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/swapcontext.S
 --- ../glibc-2.14.1-orig/sysdeps/unix/sysv/linux/riscv/swapcontext.S   1969-12-31 16:00:00.000000000 -0800
-+++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/swapcontext.S   2011-10-25 02:48:44.000000000 -0700
-@@ -0,0 +1,129 @@
++++ glibc-2.14.1/sysdeps/unix/sysv/linux/riscv/swapcontext.S   2011-11-02 01:25:30.000000000 -0700
+@@ -0,0 +1,131 @@
 +/* Save and set current context.
 +   Copyright (C) 2009 Free Software Foundation, Inc.
 +   This file is part of the GNU C Library.
@@ -14930,8 +14696,6 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +
 +#include <sysdep.h>
 +#include <sys/asm.h>
-+#include <sys/fpregdef.h>
-+#include <sys/regdef.h>
 +
 +#include "ucontext_i.h"
 +
@@ -14960,14 +14724,16 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +#ifdef __riscv_hard_float
 +  mffsr v1
 +
-+      fsd     fs0, (24 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs1, (25 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs2, (26 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs3, (27 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs4, (28 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs5, (29 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs6, (30 * 8 + MCONTEXT_FPREGS)(a0)
-+      fsd     fs7, (31 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs0, (20 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs1, (21 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs2, (22 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs3, (23 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs4, (24 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs5, (25 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs6, (26 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs7, (27 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs8, (28 * 8 + MCONTEXT_FPREGS)(a0)
++      fsd     fs9, (29 * 8 + MCONTEXT_FPREGS)(a0)
 +
 +      sw      v1, MCONTEXT_FSR(a0)
 +#endif /* __mips_hard_float */
@@ -14991,14 +14757,16 @@ diff -x manual -x po -x autom4te.cache -ruN ../glibc-2.14.1-orig/sysdeps/unix/sy
 +#ifdef __riscv_hard_float
 +      lw      v1, MCONTEXT_FSR(v0)
 +
-+      fld     fs0, (24 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs1, (25 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs2, (26 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs3, (27 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs4, (28 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs5, (29 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs6, (30 * 8 + MCONTEXT_FPREGS)(v0)
-+      fld     fs7, (31 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs0, (20 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs1, (21 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs2, (22 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs3, (23 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs4, (24 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs5, (25 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs6, (26 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs7, (27 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs8, (28 * 8 + MCONTEXT_FPREGS)(v0)
++      fld     fs9, (29 * 8 + MCONTEXT_FPREGS)(v0)
 +
 +      mtfsr   v1
 +#endif /* __mips_hard_float */