* ieee.c (ieee_regno_to_genreg): Convert register numbers for m68k
authorIan Lance Taylor <ian@airs.com>
Wed, 14 Feb 1996 20:13:13 +0000 (20:13 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 14 Feb 1996 20:13:13 +0000 (20:13 +0000)
and i960.
(ieee_genreg_to_regno): Likewise.

binutils/ChangeLog
binutils/ieee.c

index 09f0790..1db7b20 100644 (file)
@@ -1,3 +1,9 @@
+Wed Feb 14 15:12:17 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * ieee.c (ieee_regno_to_genreg): Convert register numbers for m68k
+       and i960.
+       (ieee_genreg_to_regno): Likewise.
+
 Mon Feb 12 14:19:59 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        * ieee.c: Extensive changes to write code to put types in the
index 642006b..1fe98bf 100644 (file)
@@ -3432,6 +3432,22 @@ ieee_regno_to_genreg (abfd, r)
      bfd *abfd;
      int r;
 {
+  switch (bfd_get_arch (abfd))
+    {
+    case bfd_arch_m68k:
+      /* For some reasons stabs adds 2 to the floating point register
+         numbers.  */
+      if (r >= 16)
+       r += 2;
+      break;
+
+    case bfd_arch_i960:
+      /* Stabs uses 0 to 15 for r0 to r15, 16 to 31 for g0 to g15, and
+         32 to 35 for fp0 to fp3.  */
+      --r;
+      break;
+    }
+
   return r;
 }
 
@@ -3442,6 +3458,22 @@ ieee_genreg_to_regno (abfd, r)
      bfd *abfd;
      int r;
 {
+  switch (bfd_get_arch (abfd))
+    {
+    case bfd_arch_m68k:
+      /* For some reason stabs add 2 to the floating point register
+         numbers.  */
+      if (r >= 18)
+       r -= 2;
+      break;
+
+    case bfd_arch_i960:
+      /* Stabs uses 0 to 15 for r0 to r15, 16 to 31 for g0 to g15, and
+         32 to 35 for fp0 to fp3.  */
+      ++r;
+      break;
+    }
+
   return r;
 }
 \f