aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/alpha-tdep.c15
2 files changed, 19 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c6c45bd..02105c4 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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>
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
index 7e3f684..e7d965b 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -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)