* alpha-tdep.c (alpha_next_pc): Use correct register number
authorJoel Brobecker <brobecker@gnat.com>
Sun, 29 May 2005 01:54:44 +0000 (01:54 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Sun, 29 May 2005 01:54:44 +0000 (01:54 +0000)
        for floating-point branch instructions.

gdb/ChangeLog
gdb/alpha-tdep.c

index c6c45bd..02105c4 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-29  Joel Brobecker  <brobecker@adacore.com>
+
+       * alpha-tdep.c (alpha_next_pc): Use correct register number
+       for floating-point branch instructions.
+
 2005-05-28  Daniel Jacobowitz  <dan@codesourcery.com>
            Jonathan Larmour  <jifl@eCosCentric.com>
 
index 7e3f684..e7d965b 100644 (file)
@@ -1372,6 +1372,7 @@ alpha_next_pc (CORE_ADDR pc)
 {
   unsigned int insn;
   unsigned int op;
+  int regno;
   int offset;
   LONGEST rav;
   char reg[8];
@@ -1404,7 +1405,19 @@ alpha_next_pc (CORE_ADDR pc)
        }
 
       /* Need to determine if branch is taken; read RA.  */
-      regcache_cooked_read (current_regcache, (insn >> 21) & 0x1f, reg);
+      regno = (insn >> 21) & 0x1f;
+      switch (op)
+        {
+          case 0x31:              /* FBEQ */
+          case 0x36:              /* FBGE */
+          case 0x37:              /* FBGT */
+          case 0x33:              /* FBLE */
+          case 0x32:              /* FBLT */
+          case 0x35:              /* FBNE */
+            regno += FP0_REGNUM;
+       }
+      
+      regcache_cooked_read (current_regcache, regno, reg);
       rav = extract_signed_integer (reg, 8);
 
       switch (op)