linux-mips
[Top] [All Lists]

[PATCH] MIPS: Cooked FP register for new ABIs

To: libc-ports@sourceware.org
Subject: [PATCH] MIPS: Cooked FP register for new ABIs
From: "Maciej W. Rozycki" <macro@codesourcery.com>
Date: Sun, 1 Mar 2009 00:19:36 +0000 (GMT)
Cc: linux-mips@linux-mips.org, "Maciej W. Rozycki" <macro@linux-mips.org>
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
User-agent: Alpine 1.10 (DEB 962 2008-03-14)
Hello,

 Here is a change to <sys/fpregdef.h> to provide correct cooked FP 
register names for the MIPS n64 and n32 ABIs according to "MIPSpro 
Assembly Language Programmer's Guide" (Silicon Graphic's document number 
007-2418-004).

2009-03-01  Maciej W. Rozycki  <macro@codesourcery.com>

        * sysdeps/mips/sys/fpregdef.h: Update for new ABIs.

 Please apply.

  Maciej

glibc-ports-2.9.90-20090226-mips-fpregdef-15.patch
diff -up --recursive --new-file 
glibc-ports-2.9.90-20090226.macro/sysdeps/mips/sys/fpregdef.h 
glibc-ports-2.9.90-20090226/sysdeps/mips/sys/fpregdef.h
--- glibc-ports-2.9.90-20090226.macro/sysdeps/mips/sys/fpregdef.h       
2001-07-06 04:56:01.000000000 +0000
+++ glibc-ports-2.9.90-20090226/sysdeps/mips/sys/fpregdef.h     2009-03-01 
00:10:53.000000000 +0000
@@ -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 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 */

<Prev in Thread] Current Thread [Next in Thread>
  • [PATCH] MIPS: Cooked FP register for new ABIs, Maciej W. Rozycki <=