1999-02-03 Martin Hunt <hunt@cygnus.com>
[deliverable/binutils-gdb.git] / gdb / h8300-tdep.c
index 7c340b1c796599a3ea5dc078ea05679c7935ebfb..3fbe9e1bb28628971fbf431a294a8867db2cee1b 100644 (file)
@@ -50,6 +50,19 @@ extern int h8300hmode, h8300smode;
 #define IS_MOVK_R5(x) (x==0x7905)
 #define IS_SUB_R5SP(x) (x==0x1957)
 
+
+/* The register names change depending on whether the h8300h processor
+   type is selected. */
+
+static char *original_register_names[] = REGISTER_NAMES;
+
+static char *h8300h_register_names[] =
+  {"er0", "er1", "er2", "er3", "er4", "er5", "er6",
+    "sp", "ccr","pc","cycles","tick","inst" };
+
+char **h8300_register_names = original_register_names;
+
+
 /* Local function declarations.  */
 
 static CORE_ADDR examine_prologue ();
@@ -169,8 +182,8 @@ h8300_frame_chain (thisframe)
    ways in the stack frame.  sp is even more special:
    the address we return for it IS the sp for the next frame.
 
-   We cache the result of doing this in the frame_cache_obstack, since
-   it is fairly expensive.  */
+   We cache the result of doing this in the frame_obstack, since it is
+   fairly expensive.  */
 
 void
 h8300_frame_find_saved_regs (fi, fsr)
@@ -178,7 +191,6 @@ h8300_frame_find_saved_regs (fi, fsr)
      struct frame_saved_regs *fsr;
 {
   register struct frame_saved_regs *cache_fsr;
-  extern struct obstack frame_cache_obstack;
   CORE_ADDR ip;
   struct symtab_and_line sal;
   CORE_ADDR limit;
@@ -186,8 +198,7 @@ h8300_frame_find_saved_regs (fi, fsr)
   if (!fi->fsr)
     {
       cache_fsr = (struct frame_saved_regs *)
-       obstack_alloc (&frame_cache_obstack,
-                      sizeof (struct frame_saved_regs));
+       frame_obstack_alloc (sizeof (struct frame_saved_regs));
       memset (cache_fsr, '\0', sizeof (struct frame_saved_regs));
 
       fi->fsr = cache_fsr;
@@ -757,12 +768,22 @@ get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
 
 struct cmd_list_element *setmemorylist;
 
+static void
+set_register_names ()
+{
+  if (h8300hmode != 0)
+    h8300_register_names = h8300h_register_names;
+  else
+    h8300_register_names = original_register_names;
+}
+
 static void
 h8300_command(args, from_tty)
 {
   extern int h8300hmode;
   h8300hmode = 0;
   h8300smode = 0;
+  set_register_names ();
 }
 
 static void
@@ -771,7 +792,9 @@ h8300h_command(args, from_tty)
   extern int h8300hmode;
   h8300hmode = 1;
   h8300smode = 0;
+  set_register_names ();
 }
+
 static void
 h8300s_command(args, from_tty)
 {
@@ -779,6 +802,7 @@ h8300s_command(args, from_tty)
   extern int h8300hmode;
   h8300smode = 1;
   h8300hmode = 1;
+  set_register_names ();
 }
 
 
@@ -818,6 +842,7 @@ set_machine_hook (filename)
       h8300smode = 0;
       h8300hmode = 0;
     }
+  set_register_names ();
 }
 
 void
This page took 0.024311 seconds and 4 git commands to generate.