[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[commits] r8304 - in /trunk: libc/ libc/elf/ libc/sysdeps/powerpc/powerpc32/elf/ libc/sysdeps/powerpc/powerpc64/elf/ libc/sysdeps/sh/ ...



Author: joseph
Date: Thu Apr 16 04:55:53 2009
New Revision: 8304

Log:
Merge changes between r8289 and r8303 from /fsf/trunk.

Added:
    trunk/libc/sysdeps/sh/libc-tls.c
      - copied unchanged from r8303, fsf/trunk/libc/sysdeps/sh/libc-tls.c
    trunk/libc/sysdeps/x86_64/add_n.S
      - copied unchanged from r8303, fsf/trunk/libc/sysdeps/x86_64/add_n.S
    trunk/libc/sysdeps/x86_64/addmul_1.S
      - copied unchanged from r8303, fsf/trunk/libc/sysdeps/x86_64/addmul_1.S
    trunk/libc/sysdeps/x86_64/lshift.S
      - copied unchanged from r8303, fsf/trunk/libc/sysdeps/x86_64/lshift.S
    trunk/libc/sysdeps/x86_64/mp_clz_tab.c
      - copied unchanged from r8303, fsf/trunk/libc/sysdeps/x86_64/mp_clz_tab.c
    trunk/libc/sysdeps/x86_64/mul_1.S
      - copied unchanged from r8303, fsf/trunk/libc/sysdeps/x86_64/mul_1.S
    trunk/libc/sysdeps/x86_64/rshift.S
      - copied unchanged from r8303, fsf/trunk/libc/sysdeps/x86_64/rshift.S
    trunk/libc/sysdeps/x86_64/sub_n.S
      - copied unchanged from r8303, fsf/trunk/libc/sysdeps/x86_64/sub_n.S
    trunk/libc/sysdeps/x86_64/submul_1.S
      - copied unchanged from r8303, fsf/trunk/libc/sysdeps/x86_64/submul_1.S
Modified:
    trunk/libc/ChangeLog
    trunk/libc/elf/elf.h
    trunk/libc/sysdeps/powerpc/powerpc32/elf/start.S
    trunk/libc/sysdeps/powerpc/powerpc64/elf/start.S
    trunk/libc/sysdeps/sh/bits/setjmp.h
    trunk/libc/sysdeps/sparc/sparc32/elf/start.S
    trunk/libc/sysdeps/sparc/sparc64/elf/start.S
    trunk/libc/sysdeps/unix/sysv/linux/fallocate.c
    trunk/libc/sysdeps/unix/sysv/linux/fallocate64.c
    trunk/libc/sysdeps/unix/sysv/linux/getsysstats.c
    trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
    trunk/libc/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c
    trunk/ports/ChangeLog.mips
    trunk/ports/sysdeps/mips/sys/fpregdef.h

Modified: trunk/libc/ChangeLog
==============================================================================
--- trunk/libc/ChangeLog (original)
+++ trunk/libc/ChangeLog Thu Apr 16 04:55:53 2009
@@ -1,3 +1,62 @@
+2009-04-15  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/getsysstats.c (next_line): Make sure there
+	are always at least 4 bytes in the returned line.
+
+2009-04-15  Jakub Jelinek  <jakub@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/getsysstats.c (__get_nprocs): Check
+	__libc_use_alloca (8192), if the stack is too small use 512 bytes
+	instead of 8K.  Stop searching in /proc/stat after hitting first
+	line not starting with cpu.
+	(next_line): Truncate too long
+	lines at buffer size * 3/4 instead of pretending there were line
+	breaks inside of large lines.
+
+2009-04-14  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* sysdeps/x86_64/mp_clz_tab.c: New file.
+
+2009-03-17  Ryan S. Arnold  <rsa@xxxxxxxxxx>
+            Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/fallocate.c: Handle old kernel headers.
+	* sysdeps/unix/sysv/linux/fallocate64.c: Likewise.
+	* sysdeps/unix/sysv/linux/wordsize-64/fallocate.c: Likewise.
+
+2009-03-25  Andrew Stubbs  <ams@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/sh/libc-tls.c: New file.
+
+	* sysdeps/sh/bits/setjmp.h (__jmp_buf): Give name to structure type.
+
+2009-04-14  Roland McGrath  <roland@xxxxxxxxxx>
+
+	* elf/elf.h: Add various missing ARM constants, to match binutils.
+
+2009-04-14  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	Optimizations from GMP.
+	* sysdeps/x86_64/add_n.S: New file.
+	* sysdeps/x86_64/addmul_1.S: New file.
+	* sysdeps/x86_64/lshift.S: New file.
+	* sysdeps/x86_64/mul_1.S: New file.
+	* sysdeps/x86_64/rshift.S: New file.
+	* sysdeps/x86_64/sub_n.S: New file.
+	* sysdeps/x86_64/submul_1.S: New file.
+
+2009-04-14  Jakub Jelinek  <jakub@xxxxxxxxxx>
+
+	* sysdeps/powerpc/powerpc32/elf/start.S: Ensure .data is non-empty.
+	* sysdeps/powerpc/powerpc64/elf/start.S: Likewise.
+	* sysdeps/sparc/sparc32/elf/start.S: Likewise.
+	* sysdeps/sparc/sparc64/elf/start.S: Likewise.
+
+2009-04-14  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/kernel-features.h: SH also has
+	preadv/pwritev.
+
 2009-04-13  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	* sysdeps/x86-64/strrchr.S: New file.

Modified: trunk/libc/elf/elf.h
==============================================================================
--- trunk/libc/elf/elf.h (original)
+++ trunk/libc/elf/elf.h Thu Apr 16 04:55:53 2009
@@ -2205,42 +2205,62 @@
 /* ARM specific declarations */
 
 /* Processor specific flags for the ELF header e_flags field.  */
-#define EF_ARM_RELEXEC     0x01
-#define EF_ARM_HASENTRY    0x02
-#define EF_ARM_INTERWORK   0x04
-#define EF_ARM_APCS_26     0x08
-#define EF_ARM_APCS_FLOAT  0x10
-#define EF_ARM_PIC         0x20
-#define EF_ARM_ALIGN8      0x40		/* 8-bit structure alignment is in use */
-#define EF_ARM_NEW_ABI     0x80
-#define EF_ARM_OLD_ABI     0x100
+#define EF_ARM_RELEXEC		0x01
+#define EF_ARM_HASENTRY		0x02
+#define EF_ARM_INTERWORK	0x04
+#define EF_ARM_APCS_26		0x08
+#define EF_ARM_APCS_FLOAT	0x10
+#define EF_ARM_PIC		0x20
+#define EF_ARM_ALIGN8		0x40 /* 8-bit structure alignment is in use */
+#define EF_ARM_NEW_ABI		0x80
+#define EF_ARM_OLD_ABI		0x100
+#define EF_ARM_SOFT_FLOAT	0x200
+#define EF_ARM_VFP_FLOAT	0x400
+#define EF_ARM_MAVERICK_FLOAT	0x800
+
 
 /* Other constants defined in the ARM ELF spec. version B-01.  */
 /* NB. These conflict with values defined above.  */
 #define EF_ARM_SYMSARESORTED	0x04
-#define EF_ARM_DYNSYMSUSESEGIDX 0x08
+#define EF_ARM_DYNSYMSUSESEGIDX	0x08
 #define EF_ARM_MAPSYMSFIRST	0x10
 #define EF_ARM_EABIMASK		0XFF000000
 
-#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
-#define EF_ARM_EABI_UNKNOWN  0x00000000
-#define EF_ARM_EABI_VER1     0x01000000
-#define EF_ARM_EABI_VER2     0x02000000
-
-/* Additional symbol types for Thumb */
-#define STT_ARM_TFUNC      0xd
+/* Constants defined in AAELF.  */
+#define EF_ARM_BE8	    0x00800000
+#define EF_ARM_LE8	    0x00400000
+
+#define EF_ARM_EABI_VERSION(flags)	((flags) & EF_ARM_EABIMASK)
+#define EF_ARM_EABI_UNKNOWN	0x00000000
+#define EF_ARM_EABI_VER1	0x01000000
+#define EF_ARM_EABI_VER2	0x02000000
+#define EF_ARM_EABI_VER3	0x03000000
+#define EF_ARM_EABI_VER4	0x04000000
+#define EF_ARM_EABI_VER5	0x05000000
+
+/* Additional symbol types for Thumb.  */
+#define STT_ARM_TFUNC		STT_LOPROC /* A Thumb function.  */
+#define STT_ARM_16BIT		STT_HIPROC /* A Thumb label.  */
 
 /* ARM-specific values for sh_flags */
-#define SHF_ARM_ENTRYSECT  0x10000000   /* Section contains an entry point */
-#define SHF_ARM_COMDEF     0x80000000   /* Section may be multiply defined
-					   in the input to a link step */
+#define SHF_ARM_ENTRYSECT	0x10000000 /* Section contains an entry point */
+#define SHF_ARM_COMDEF		0x80000000 /* Section may be multiply defined
+					      in the input to a link step.  */
 
 /* ARM-specific program header flags */
-#define PF_ARM_SB          0x10000000   /* Segment contains the location
-					   addressed by the static base */
+#define PF_ARM_SB		0x10000000 /* Segment contains the location
+					      addressed by the static base. */
+#define PF_ARM_PI		0x20000000 /* Position-independent segment.  */
+#define PF_ARM_ABS		0x40000000 /* Absolute segment.  */
 
 /* Processor specific values for the Phdr p_type field.  */
-#define PT_ARM_EXIDX	0x70000001	/* .ARM.exidx segment */
+#define PT_ARM_EXIDX		(PT_LOPROC + 1)	/* ARM unwind segment.  */
+
+/* Processor specific values for the Shdr sh_type field.  */
+#define SHT_ARM_EXIDX		(SHT_LOPROC + 1) /* ARM unwind section.  */
+#define SHT_ARM_PREEMPTMAP	(SHT_LOPROC + 2) /* Preemption details.  */
+#define SHT_ARM_ATTRIBUTES	(SHT_LOPROC + 3) /* ARM attributes section.  */
+
 
 /* ARM relocs.  */
 

Modified: trunk/libc/sysdeps/powerpc/powerpc32/elf/start.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc32/elf/start.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc32/elf/start.S Thu Apr 16 04:55:53 2009
@@ -1,5 +1,6 @@
 /* Startup code for programs linked with GNU libc.
-   Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+   Copyright (C) 1998,1999,2000,2001,2002,2003,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
@@ -98,4 +99,5 @@
 	.section ".data"
 	.globl	__data_start
 __data_start:
+	.long	0
 weak_alias (__data_start, data_start)

Modified: trunk/libc/sysdeps/powerpc/powerpc64/elf/start.S
==============================================================================
--- trunk/libc/sysdeps/powerpc/powerpc64/elf/start.S (original)
+++ trunk/libc/sysdeps/powerpc/powerpc64/elf/start.S Thu Apr 16 04:55:53 2009
@@ -1,5 +1,6 @@
 /* Startup code for programs linked with GNU libc.  PowerPC64 version.
-   Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
+   Copyright (C) 1998,1999,2000,2001,2002,2003,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
@@ -83,4 +84,5 @@
 	.section ".data"
 	.globl	__data_start
 __data_start:
+	.long	0
 weak_alias (__data_start, data_start)

Modified: trunk/libc/sysdeps/sh/bits/setjmp.h
==============================================================================
--- trunk/libc/sysdeps/sh/bits/setjmp.h (original)
+++ trunk/libc/sysdeps/sh/bits/setjmp.h Thu Apr 16 04:55:53 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999,2000,2003,2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999,2000,2003,2005,2006,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
@@ -25,7 +25,7 @@
 #endif
 
 #ifndef _ASM
-typedef struct
+typedef struct __jmp_buf_internal_tag
   {
     /* Callee-saved registers r8 through r15.  */
     int __regs[8];

Modified: trunk/libc/sysdeps/sparc/sparc32/elf/start.S
==============================================================================
--- trunk/libc/sysdeps/sparc/sparc32/elf/start.S (original)
+++ trunk/libc/sysdeps/sparc/sparc32/elf/start.S Thu Apr 16 04:55:53 2009
@@ -1,5 +1,6 @@
 /* Startup code for elf32-sparc
-   Copyright (C) 1997, 1998, 2002, 2004, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 2002, 2004, 2007, 2009
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <richard@xxxxxxxxxxxxxx>, 1997.
 
@@ -96,4 +97,5 @@
 	.data
 	.globl	__data_start
 __data_start:
+	.long	0
 weak_alias (__data_start, data_start)

Modified: trunk/libc/sysdeps/sparc/sparc64/elf/start.S
==============================================================================
--- trunk/libc/sysdeps/sparc/sparc64/elf/start.S (original)
+++ trunk/libc/sysdeps/sparc/sparc64/elf/start.S Thu Apr 16 04:55:53 2009
@@ -1,5 +1,6 @@
 /* Startup code for elf64-sparc
-   Copyright (C) 1997, 1998, 2002, 2004, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 2002, 2004, 2007, 2009
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <richard@xxxxxxxxxxxxxx>, 1997.
 
@@ -97,4 +98,5 @@
 	.data
 	.globl	__data_start
 __data_start:
+	.long	0
 weak_alias (__data_start, data_start)

Modified: trunk/libc/sysdeps/unix/sysv/linux/fallocate.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/fallocate.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/fallocate.c Thu Apr 16 04:55:53 2009
@@ -25,7 +25,12 @@
 int
 fallocate (int fd, int mode, __off_t offset, __off_t len)
 {
+#ifdef __NR_fallocate
   return INLINE_SYSCALL (fallocate, 6, fd, mode,
 			 __LONG_LONG_PAIR (offset >> 31, offset),
 			 __LONG_LONG_PAIR (len >> 31, len));
+#else
+  __set_errno (ENOSYS);
+  return -1;
+#endif
 }

Modified: trunk/libc/sysdeps/unix/sysv/linux/fallocate64.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/fallocate64.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/fallocate64.c Thu Apr 16 04:55:53 2009
@@ -25,9 +25,14 @@
 int
 __fallocate64_l64 (int fd, int mode, __off64_t offset, __off64_t len)
 {
+#ifdef __NR_fallocate
   return INLINE_SYSCALL (fallocate, 6, fd, mode,
 			 __LONG_LONG_PAIR ((long int) (offset >> 32),
 					   (long int) offset),
 			 __LONG_LONG_PAIR ((long int) (len >> 32),
 					   (long int) len));
+#else
+  __set_errno (ENOSYS);
+  return -1;
+#endif
 }

Modified: trunk/libc/sysdeps/unix/sysv/linux/getsysstats.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/getsysstats.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/getsysstats.c Thu Apr 16 04:55:53 2009
@@ -93,15 +93,42 @@
 		return NULL;
 
 	      *re += n;
+
+	      nl = memchr (*cp, '\n', *re - *cp);
+	      while (nl == NULL && *re == buffer_end)
+		{
+		  /* Truncate too long lines.  */
+		  *re = buffer + 3 * (buffer_end - buffer) / 4;
+		  n = read_not_cancel (fd, *re, buffer_end - *re);
+		  if (n < 0)
+		    return NULL;
+
+		  nl = memchr (*re, '\n', n);
+		  **re = '\n';
+		  *re += n;
+		}
 	    }
+	  else
+	    nl = memchr (*cp, '\n', *re - *cp);
 
 	  res = *cp;
-	  nl = memchr (*cp, '\n', *re - *cp);
 	}
 
       if (nl == NULL)
 	nl = *re - 1;
     }
+  else if (nl + 5 >= *re)
+    {
+      memmove (buffer, nl, *re - nl);
+      *re = buffer + (*re - nl);
+      nl = *cp = buffer;
+
+      ssize_t n = read_not_cancel (fd, *re, buffer_end - *re);
+      if (n < 0)
+	return NULL;
+
+      *re += n;
+    }
 
   *cp = nl + 1;
   assert (*cp <= *re);
@@ -115,8 +142,9 @@
 {
   /* XXX Here will come a test for the new system call.  */
 
-  char buffer[8192];
-  char *const buffer_end = buffer + sizeof (buffer);
+  const size_t buffer_size = __libc_use_alloca (8192) ? 8192 : 512;
+  char *buffer = alloca (buffer_size);
+  char *buffer_end = buffer + buffer_size;
   char *cp = buffer_end;
   char *re = buffer_end;
   int result = 1;
@@ -134,7 +162,11 @@
 
       char *l;
       while ((l = next_line (fd, buffer, &cp, &re, buffer_end)) != NULL)
-	if (strncmp (l, "cpu", 3) == 0 && isdigit (l[3]))
+	/* The current format of /proc/stat has all the cpu* entries
+	   at the front.  We assume here that stays this way.  */
+	if (strncmp (l, "cpu", 3) != 0)
+	  break;
+	else if (isdigit (l[3]))
 	  ++result;
 
       close_not_cancel_no_status (fd);

Modified: trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h Thu Apr 16 04:55:53 2009
@@ -533,7 +533,7 @@
 /* Support for preadv and pwritev was added in 2.6.30.  */
 #if __LINUX_KERNEL_VERSION >= 0x02061e \
     && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
-	|| defined __ia64__ || defined __sparc__)
+	|| defined __ia64__ || defined __sparc__ && defined __sh__)
 # define __ASSUME_PREADV	1
 # define __ASSUME_PWRITEV	1
 #endif

Modified: trunk/libc/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c
==============================================================================
--- trunk/libc/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c (original)
+++ trunk/libc/sysdeps/unix/sysv/linux/wordsize-64/fallocate.c Thu Apr 16 04:55:53 2009
@@ -25,6 +25,11 @@
 int
 fallocate (int fd, int mode, __off_t offset, __off_t len)
 {
+#ifdef __NR_fallocate
   return INLINE_SYSCALL (fallocate, 4, fd, mode, offset, len);
+#else
+  __set_errno (ENOSYS);
+  return -1;
+#endif
 }
 strong_alias (fallocate, fallocate64)

Modified: trunk/ports/ChangeLog.mips
==============================================================================
--- trunk/ports/ChangeLog.mips (original)
+++ trunk/ports/ChangeLog.mips Thu Apr 16 04:55:53 2009
@@ -1,3 +1,7 @@
+2009-04-15  Maciej W. Rozycki  <macro@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/mips/sys/fpregdef.h: Update for new ABIs.
+
 2009-04-09  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/mips/bits/socket.h: Add missing protocol

Modified: trunk/ports/sysdeps/mips/sys/fpregdef.h
==============================================================================
--- trunk/ports/sysdeps/mips/sys/fpregdef.h (original)
+++ trunk/ports/sysdeps/mips/sys/fpregdef.h Thu Apr 16 04:55:53 2009
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
+/* 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
@@ -19,19 +19,52 @@
 #ifndef _SYS_FPREGDEF_H
 #define _SYS_FPREGDEF_H
 
-/*
- * These definitions only cover the R3000-ish 16/32 register model.
- * But we're trying to be R3000 friendly anyway ...
- */
-#define fv0	$f0      /* return value */
-#define fv0f	$f1
+#include <sgidefs.h>
+
+/* Commonalities first, individualities next...  */
+
+#define fv0	$f0	/* return value */
 #define fv1	$f2
+
+#if _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32
+#define fs0	$f20	/* callee saved */
+#define fs1	$f22
+#define fs2	$f24
+#define fs3	$f26
+#define fs4	$f28
+#define fs5	$f30
+#endif /* _MIPS_SIM == _ABIO32 || _MIPS_SIM == _ABIN32 */
+
+#if _MIPS_SIM == _ABI64 || _MIPS_SIM == _ABIN32
+#define fa0	$f12	/* argument registers */
+#define fa1	$f13
+#define fa2	$f14
+#define fa3	$f15
+#define fa4	$f16
+#define fa5	$f17
+#define fa6	$f18
+#define fa7	$f19
+
+#define ft0	$f4	/* caller saved */
+#define ft1	$f5
+#define ft2	$f6
+#define ft3	$f7
+#define ft4	$f8
+#define ft5	$f9
+#define ft6	$f10
+#define ft7	$f11
+#endif /* _MIPS_SIM == _ABI64 || _MIPS_SIM == _ABIN32 */
+
+#if _MIPS_SIM == _ABIO32
+#define fv0f	$f1	/* return value, high part */
 #define fv1f	$f3
-#define fa0	$f12     /* argument registers */
+
+#define fa0	$f12	/* argument registers */
 #define fa0f	$f13
 #define fa1	$f14
 #define fa1f	$f15
-#define ft0	$f4      /* caller saved */
+
+#define ft0	$f4	/* caller saved */
 #define ft0f	$f5
 #define ft1	$f6
 #define ft1f	$f7
@@ -43,19 +76,44 @@
 #define ft4f	$f17
 #define ft5	$f18
 #define ft5f	$f19
-#define fs0	$f20     /* callee saved */
-#define fs0f	$f21
-#define fs1	$f22
+
+#define fs0f	$f21	/* callee saved, high part */
 #define fs1f	$f23
-#define fs2	$f24
 #define fs2f	$f25
-#define fs3	$f26
 #define fs3f	$f27
+#define fs4f	$f29
+#define fs5f	$f31
+#endif /* _MIPS_SIM == _ABIO32 */
+
+#if _MIPS_SIM == _ABI64
+#define ft8	$f20	/* caller saved */
+#define ft9	$f21
+#define ft10	$f22
+#define ft11	$f23
+#define ft12	$f1
+#define ft13	$f3
+
+#define fs0	$f24	/* callee saved */
+#define fs1	$f25
+#define fs2	$f26
+#define fs3	$f27
 #define fs4	$f28
-#define fs4f	$f29
-#define fs5	$f30
-#define fs5f	$f31
+#define fs5	$f29
+#define fs6	$f30
+#define fs7	$f31
+#endif /* _MIPS_SIM == _ABI64 */
 
-#define fcr31	$31      /* FPU status register */
+#if _MIPS_SIM == _ABIN32
+#define ft8	$f21	/* caller saved */
+#define ft9	$f23
+#define ft10	$f25
+#define ft11	$f27
+#define ft12	$f29
+#define ft13	$f31
+#define ft14	$f1
+#define ft15	$f3
+#endif /* _MIPS_SIM == _ABIN32 */
+
+#define fcr31	$31	/* FPU status register */
 
 #endif /* sys/fpregdef.h */