diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/alpha-tdep.c | 15 |
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) |