2009-04-15 Maciej W. Rozycki <macro@codesourcery.com>
authorJoseph Myers <joseph@codesourcery.com>
Wed, 15 Apr 2009 20:22:41 +0000 (20:22 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 15 Apr 2009 20:22:41 +0000 (20:22 +0000)
* sysdeps/mips/sys/fpregdef.h: Update for new ABIs.

ChangeLog.mips
sysdeps/mips/sys/fpregdef.h

index 6f5e4f7..4e6ce79 100644 (file)
@@ -1,3 +1,7 @@
+2009-04-15  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       * sysdeps/mips/sys/fpregdef.h: Update for new ABIs.
+
 2009-04-09  Joseph Myers  <joseph@codesourcery.com>
 
        * sysdeps/unix/sysv/linux/mips/bits/socket.h: Add missing protocol
index 3781152..d6c72bb 100644 (file)
@@ -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
 #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
 #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 fs4    $f28
 #define fs4f   $f29
-#define fs5    $f30
 #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 fs5    $f29
+#define fs6    $f30
+#define fs7    $f31
+#endif /* _MIPS_SIM == _ABI64 */
+
+#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 */
+#define fcr31  $31     /* FPU status register */
 
 #endif /* sys/fpregdef.h */