2006-05-31 Michael Snyder * mips-tdep.c (mips_gdbarch_init): EABI64, addr_bit is 32. (mips_write_pc): Difference between addr_bit and ptr_bit requires sign_extension when setting $pc. Index: mips-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/mips-tdep.c,v retrieving revision 1.393 diff -p -r1.393 mips-tdep.c *** mips-tdep.c 31 May 2006 23:15:50 -0000 1.393 --- mips-tdep.c 31 May 2006 23:18:47 -0000 *************** mips_unwind_dummy_id (struct gdbarch *gd *** 838,843 **** --- 838,847 ---- static void mips_write_pc (CORE_ADDR pc, ptid_t ptid) { + /* If addr_bit is 32, force sign extension. */ + if (gdbarch_addr_bit (current_gdbarch) == 32) + if ((pc & 0xffffffff80000000LL) == 0x80000000) + pc |= 0xffffffff00000000LL; write_register_pid (mips_regnum (current_gdbarch)->pc, pc, ptid); } *************** mips_gdbarch_init (struct gdbarch_info i *** 4976,4981 **** --- 4980,4986 ---- tdep->default_mask_address_p = 0; set_gdbarch_long_bit (gdbarch, 64); set_gdbarch_ptr_bit (gdbarch, 64); + set_gdbarch_addr_bit (gdbarch, 32); set_gdbarch_long_long_bit (gdbarch, 64); break; case MIPS_ABI_N32: