diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 07c5f9ad6d..bea87530f5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Tue Feb 04 09:04:37 1997 Mark Alexander + + * mips-tdep.c (mips16_get_imm): Fix calculation of extended immediate. + (mips16_heuristic_proc_desc): Recognize jal(x) instruction. + Mon Feb 03 17:57:58 1997 Mark Alexander * mips-tdep.c (mips16_decode_reg_save): Distinguish between diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 75f10d1e56..5369259a1a 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -651,7 +651,7 @@ mips16_get_imm (prev_inst, inst, nbits, scale, is_signed) if ((prev_inst & 0xf800) == 0xf000) /* prev instruction was EXTEND? */ { - offset = ((prev_inst & 0x1f) << 11) | (prev_inst & 0x7e00); + offset = ((prev_inst & 0x1f) << 11) | (prev_inst & 0x7e0); if (offset & 0x8000) /* check for negative extend */ offset = 0 - (0x10000 - (offset & 0xffff)); return offset | (inst & 0x1f); @@ -788,6 +788,8 @@ mips16_heuristic_proc_desc(start_pc, limit_pc, next_frame, sp) temp_saved_regs.regs[reg] = sp + offset; } } + else if ((inst & 0xf800) == 0x1800) /* jal(x) */ + cur_pc += MIPS16_INSTLEN; /* 32-bit instruction */ } }