summaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2012-05-18 12:43:04 +0000
committerMaciej W. Rozycki <macro@linux-mips.org>2012-05-18 12:43:04 +0000
commit0de57761edd371e460ff8722b4e072ded309447e (patch)
treeb66215df2594be5a7ea6bee0de7af2eb5e6ad2a2 /gdb
parente00eef26cedbe11f00e3b79ee5175160ed06299b (diff)
downloadgdb-0de57761edd371e460ff8722b4e072ded309447e.tar.gz
* mips-tdep.h (mips_write_pc): New prototype.
* mips-tdep.c (mips_write_pc): Make external, add description. * mips-linux-tdep.c (mips_linux_write_pc): Use mips_write_pc, add description.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/mips-linux-tdep.c5
-rw-r--r--gdb/mips-tdep.c4
-rw-r--r--gdb/mips-tdep.h3
4 files changed, 17 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index c06c7717417..4ad8c9604b7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,12 @@
2012-05-18 Maciej W. Rozycki <macro@codesourcery.com>
+ * mips-tdep.h (mips_write_pc): New prototype.
+ * mips-tdep.c (mips_write_pc): Make external, add description.
+ * mips-linux-tdep.c (mips_linux_write_pc): Use mips_write_pc,
+ add description.
+
+2012-05-18 Maciej W. Rozycki <macro@codesourcery.com>
+
* mips-tdep.c (mips_read_pc): Use gdbarch_pc_regnum instead of
mips_regnum->pc.
(mips_unwind_pc, mips_write_pc): Likewise.
diff --git a/gdb/mips-linux-tdep.c b/gdb/mips-linux-tdep.c
index 47af572f245..69cffc33e1c 100644
--- a/gdb/mips-linux-tdep.c
+++ b/gdb/mips-linux-tdep.c
@@ -1151,11 +1151,14 @@ mips_linux_n32n64_sigframe_init (const struct tramp_frame *self,
trad_frame_set_id (this_cache, frame_id_build (frame_sp, func));
}
+/* Implement the "write_pc" gdbarch method. */
+
static void
mips_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
{
struct gdbarch *gdbarch = get_regcache_arch (regcache);
- regcache_cooked_write_unsigned (regcache, gdbarch_pc_regnum (gdbarch), pc);
+
+ mips_write_pc (regcache, pc);
/* Clear the syscall restart flag. */
if (mips_linux_restart_reg_p (gdbarch))
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 37f4041a8b8..6d31b39b7dd 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -1141,7 +1141,9 @@ mips_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
get_frame_pc (this_frame));
}
-static void
+/* Implement the "write_pc" gdbarch method. */
+
+void
mips_write_pc (struct regcache *regcache, CORE_ADDR pc)
{
int regnum = gdbarch_pc_regnum (get_regcache_arch (regcache));
diff --git a/gdb/mips-tdep.h b/gdb/mips-tdep.h
index 72cc49adf99..9dd45418ae9 100644
--- a/gdb/mips-tdep.h
+++ b/gdb/mips-tdep.h
@@ -159,6 +159,9 @@ extern int mips_pc_is_mips16 (bfd_vma memaddr);
/* Return the currently configured (or set) saved register size. */
extern unsigned int mips_abi_regsize (struct gdbarch *gdbarch);
+/* Make PC the address of the next instruction to execute. */
+extern void mips_write_pc (struct regcache *regcache, CORE_ADDR pc);
+
/* Target descriptions which only indicate the size of general
registers. */
extern struct target_desc *mips_tdesc_gp32;