This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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)



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]