This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[rfc] [12/15] Add gdbarch to register_name callback in m68hc11-tdep.c
- From: Markus Deuling <deuling at de dot ibm dot com>
- To: GDB Patches <gdb-patches at sourceware dot org>
- Cc: Ulrich Weigand <uweigand at de dot ibm dot com>, stcarrez at nerim dot fr
- Date: Wed, 31 Oct 2007 11:46:07 +0100
- Subject: [rfc] [12/15] Add gdbarch to register_name callback in m68hc11-tdep.c
Hi,
this patch adds gdbarch to register_name callback in m68hc11-tdep.c. Also two macros STACK_CORRECTION and USE_PAGE_REGISTER
are being replaced/removed to get rid of current_gdbarch.
Is this ok to commit?
ChangeLog:
* m68hc11-tdep.c (m68hc11_register_name): Add gdbarch parameter.
(m68hc11_frame_unwind_cache): Use get_frame_arch to get at the current
architecture by frame_info.
(m68hc11_register_reggroup_p): Add gdbarch to m68hc11_register_name
call.
(STACK_CORRECTION, USE_PAGE_REGISTER): Replace M6811_TDEP macro by its
expression.
(M6811_TDEP): Remove.
(m68hc11_register_name, m68hc11_frame_prev_register): Replace
USE_PAGE_REGISTER by its expression. Replace current_gdbarch by gdbarch.
(m68hc11_frame_prev_register): Use get_frame_arch to get at the current
architecture by frame_info.
(USE_PAGE_REGISTER): Remove.
(m68hc11_frame_unwind_cache, m68hc11_push_dummy_call): Replace
STACK_CORRECTION by its expression. Replace current_gdbarch by gdbarch.
(STACK_CORRECTION): Remove
--
Markus Deuling
GNU Toolchain for Linux on Cell BE
deuling@de.ibm.com
diff -urpN src/gdb/m68hc11-tdep.c dev/gdb/m68hc11-tdep.c
--- src/gdb/m68hc11-tdep.c 2007-10-17 15:36:44.000000000 +0200
+++ dev/gdb/m68hc11-tdep.c 2007-10-31 09:12:06.000000000 +0100
@@ -146,10 +146,6 @@ struct gdbarch_tdep
int elf_flags;
};
-#define M6811_TDEP gdbarch_tdep (current_gdbarch)
-#define STACK_CORRECTION (M6811_TDEP->stack_correction)
-#define USE_PAGE_REGISTER (M6811_TDEP->use_page_register)
-
struct m68hc11_unwind_cache
{
/* The previous frame's inner most stack address. Used as this
@@ -365,11 +361,13 @@ m68hc11_pseudo_register_write (struct gd
}
static const char *
-m68hc11_register_name (int reg_nr)
+m68hc11_register_name (struct gdbarch *gdbarch, int reg_nr)
{
- if (reg_nr == M68HC12_HARD_PC_REGNUM && USE_PAGE_REGISTER)
+ if (reg_nr == M68HC12_HARD_PC_REGNUM
+ && gdbarch_tdep (gdbarch)->use_page_register)
return "pc";
- if (reg_nr == HARD_PC_REGNUM && USE_PAGE_REGISTER)
+ if (reg_nr == HARD_PC_REGNUM
+ && gdbarch_tdep (gdbarch)->use_page_register)
return "ppc";
if (reg_nr < 0)
@@ -777,6 +775,7 @@ struct m68hc11_unwind_cache *
m68hc11_frame_unwind_cache (struct frame_info *next_frame,
void **this_prologue_cache)
{
+ struct gdbarch *gdbarch = get_frame_arch (next_frame);
ULONGEST prev_sp;
ULONGEST this_base;
struct m68hc11_unwind_cache *info;
@@ -816,7 +815,7 @@ m68hc11_frame_unwind_cache (struct frame
info->saved_regs[HARD_PC_REGNUM].addr = info->sp_offset;
this_base = frame_unwind_register_unsigned (next_frame, HARD_SP_REGNUM);
prev_sp = this_base + info->sp_offset + 2;
- this_base += STACK_CORRECTION;
+ this_base += gdbarch_tdep (gdbarch)->stack_correction;
}
else
{
@@ -824,7 +823,7 @@ m68hc11_frame_unwind_cache (struct frame
to before the first saved register giving the SP. */
prev_sp = this_base + info->size + 2;
- this_base += STACK_CORRECTION;
+ this_base += gdbarch_tdep (gdbarch)->stack_correction;
if (soft_regs[SOFT_FP_REGNUM].name)
info->saved_regs[SOFT_FP_REGNUM].addr = info->size - 2;
}
@@ -854,8 +853,8 @@ m68hc11_frame_unwind_cache (struct frame
/* Adjust all the saved registers so that they contain addresses and not
offsets. */
for (i = 0;
- i < gdbarch_num_regs (current_gdbarch)
- + gdbarch_num_pseudo_regs (current_gdbarch) - 1;
+ i < gdbarch_num_regs (gdbarch)
+ + gdbarch_num_pseudo_regs (gdbarch) - 1;
i++)
if (trad_frame_addr_p (info->saved_regs, i))
{
@@ -915,7 +914,7 @@ m68hc11_frame_prev_register (struct fram
/* Take into account the 68HC12 specific call (PC + page). */
if (info->return_kind == RETURN_RTC
&& *addrp >= 0x08000 && *addrp < 0x0c000
- && USE_PAGE_REGISTER)
+ && gdbarch_tdep (get_frame_arch (next_frame))->use_page_register)
{
int page_optimized;
@@ -1215,7 +1214,7 @@ m68hc11_push_dummy_call (struct gdbarch
write_memory (sp, buf, 2);
/* Finally, update the stack pointer... */
- sp -= STACK_CORRECTION;
+ sp -= gdbarch_tdep (gdbarch)->stack_correction;
regcache_cooked_write_unsigned (regcache, HARD_SP_REGNUM, sp);
/* ...and fake a frame pointer. */
@@ -1395,13 +1394,14 @@ m68hc11_register_reggroup_p (struct gdba
|| regnum == SOFT_TMP_REGNUM
|| regnum == SOFT_ZS_REGNUM
|| regnum == SOFT_XY_REGNUM)
- && m68hc11_register_name (regnum)));
+ && m68hc11_register_name (gdbarch, regnum)));
}
/* Group to identify gcc soft registers (d1..dN). */
if (group == m68hc11_soft_reggroup)
{
- return regnum >= SOFT_D1_REGNUM && m68hc11_register_name (regnum);
+ return regnum >= SOFT_D1_REGNUM
+ && m68hc11_register_name (gdbarch, regnum);
}
if (group == m68hc11_hard_reggroup)