* arm-tdep.c (arm_write_pc): New function.

(arm_gdbarch_init): Call set_gdbarch_write_pc.
This commit is contained in:
Daniel Jacobowitz 2004-01-17 21:58:54 +00:00
parent e74f0f0215
commit 756fe439bb
2 changed files with 23 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2004-01-17 Daniel Jacobowitz <drow@mvista.com>
* arm-tdep.c (arm_write_pc): New function.
(arm_gdbarch_init): Call set_gdbarch_write_pc.
2004-01-17 Daniel Jacobowitz <drow@mvista.com>
* breakpoint.c (must_shift_inst_regs): Delete.

View file

@ -1,6 +1,6 @@
/* Common target dependent code for GDB on ARM systems.
Copyright 1988, 1989, 1991, 1992, 1993, 1995, 1996, 1998, 1999, 2000,
2001, 2002, 2003 Free Software Foundation, Inc.
2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@ -2689,6 +2689,21 @@ arm_coff_make_msymbol_special(int val, struct minimal_symbol *msym)
MSYMBOL_SET_SPECIAL (msym);
}
static void
arm_write_pc (CORE_ADDR pc, ptid_t ptid)
{
write_register_pid (ARM_PC_REGNUM, pc, ptid);
/* If necessary, set the T bit. */
if (arm_apcs_32)
{
CORE_ADDR val = read_register_pid (ARM_PS_REGNUM, ptid);
if (arm_pc_is_thumb (pc))
write_register_pid (ARM_PS_REGNUM, val | 0x20, ptid);
else
write_register_pid (ARM_PS_REGNUM, val & ~(CORE_ADDR) 0x20, ptid);
}
}
static enum gdb_osabi
arm_elf_osabi_sniffer (bfd *abfd)
@ -2851,6 +2866,8 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_push_dummy_call (gdbarch, arm_push_dummy_call);
set_gdbarch_write_pc (gdbarch, arm_write_pc);
/* Frame handling. */
set_gdbarch_unwind_dummy_id (gdbarch, arm_unwind_dummy_id);
set_gdbarch_unwind_pc (gdbarch, arm_unwind_pc);