Use macros for TUI window names
[deliverable/binutils-gdb.git] / sim / m32c / reg.c
index 912c32e2e6be0b8789ed3f3980eef4c4ac93e3c9..f10162e11db7b993b7eb950029067349fa1adb50 100644 (file)
@@ -1,6 +1,6 @@
 /* reg.c --- register set model for M32C simulator.
 
 /* reg.c --- register set model for M32C simulator.
 
-Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 2005-2020 Free Software Foundation, Inc.
 Contributed by Red Hat, Inc.
 
 This file is part of the GNU simulators.
 Contributed by Red Hat, Inc.
 
 This file is part of the GNU simulators.
@@ -28,6 +28,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 int verbose = 0;
 int trace = 0;
 int enable_counting = 0;
 int verbose = 0;
 int trace = 0;
 int enable_counting = 0;
+int in_gdb = 1;
 
 regs_type regs;
 int addr_mask = 0xffff;
 
 regs_type regs;
 int addr_mask = 0xffff;
@@ -75,6 +76,8 @@ int b2minsigned[] = { 0, -128, -32768, -8388608, -2147483647 - 1 };
 
 static regs_type oldregs;
 
 
 static regs_type oldregs;
 
+int m32c_opcode_pc;
+
 void
 init_regs (void)
 {
 void
 init_regs (void)
 {
@@ -216,7 +219,7 @@ get_reg_ll (reg_id id)
 static int highest_sp = 0, lowest_sp = 0xffffff;
 
 void
 static int highest_sp = 0, lowest_sp = 0xffffff;
 
 void
-stack_heap_stats ()
+stack_heap_stats (void)
 {
   printf ("heap:  %08x - %08x (%d bytes)\n", heapbottom, heaptop,
          heaptop - heapbottom);
 {
   printf ("heap:  %08x - %08x (%d bytes)\n", heapbottom, heaptop,
          heaptop - heapbottom);
@@ -227,10 +230,11 @@ stack_heap_stats ()
 void
 put_reg (reg_id id, unsigned int v)
 {
 void
 put_reg (reg_id id, unsigned int v)
 {
+  reg_bank_type *b = regs.r + (FLAG_B ? 1 : 0);
+
   if (trace > ((id != pc) ? 0 : 1))
     printf ("put_reg (%s) = %0*x\n", reg_names[id], reg_bytes[id] * 2, v);
 
   if (trace > ((id != pc) ? 0 : 1))
     printf ("put_reg (%s) = %0*x\n", reg_names[id], reg_bytes[id] * 2, v);
 
-  reg_bank_type *b = regs.r + (FLAG_B ? 1 : 0);
   switch (id)
     {
     case r0:
   switch (id)
     {
     case r0:
@@ -581,6 +585,17 @@ put_reg_ll (reg_id id, DI v)
     }
 }
 
     }
 }
 
+static void
+print_flags (int f)
+{
+  int i;
+  static char fn[] = "CDZSBOIU";
+  printf ("%d.", (f >> 12) & 7);
+  for (i = 7; i >= 0; i--)
+    if (f & (1 << i))
+      putchar (fn[i]);
+}
+
 #define TRC(f,n, id) \
   if (oldregs.f != regs.f) \
     { \
 #define TRC(f,n, id) \
   if (oldregs.f != regs.f) \
     { \
@@ -591,7 +606,7 @@ put_reg_ll (reg_id id, DI v)
     }
 
 void
     }
 
 void
-trace_register_changes ()
+trace_register_changes (void)
 {
   if (!trace)
     return;
 {
   if (!trace)
     return;
@@ -617,6 +632,49 @@ trace_register_changes ()
   TRC (r_usp, "usp", usp);
   TRC (r_isp, "isp", isp);
   TRC (r_pc, "pc", pc);
   TRC (r_usp, "usp", usp);
   TRC (r_isp, "isp", isp);
   TRC (r_pc, "pc", pc);
-  TRC (r_flags, "flags", flags);
+  if (oldregs.r_flags != regs.r_flags)
+    {
+      printf ("  flags ");
+      print_flags (oldregs.r_flags);
+      printf (":");
+      print_flags (regs.r_flags);
+    }
+  printf ("\033[0m\n");
+}
+
+#define DRC(f, n, id) \
+  printf("  %-3s %0*x", n,                            \
+        reg_bytes[id]*2, (unsigned int)regs.f);       \
+
+void
+m32c_dump_all_registers (void)
+{
+  printf ("\033[36mREGS:");
+  DRC (r[0].r_r0, "r0", r0);
+  DRC (r[0].r_r1, "r1", r1);
+  DRC (r[0].r_r2, "r2", r2);
+  DRC (r[0].r_r3, "r3", r3);
+  DRC (r[0].r_a0, "a0", a0);
+  DRC (r[0].r_a1, "a1", a1);
+  DRC (r[0].r_sb, "sb", sb);
+  DRC (r[0].r_fb, "fb", fb);
+  printf ("\n     ");
+  DRC (r[1].r_r0, "r0'", r0);
+  DRC (r[1].r_r1, "r1'", r1);
+  DRC (r[1].r_r2, "r2'", r2);
+  DRC (r[1].r_r3, "r3'", r3);
+  DRC (r[1].r_a0, "a0'", a0);
+  DRC (r[1].r_a1, "a1'", a1);
+  DRC (r[1].r_sb, "sb'", sb);
+  DRC (r[1].r_fb, "fb'", fb);
+  printf ("     \n");
+  DRC (r_intbh, "intbh", intbh);
+  DRC (r_intbl, "intbl", intbl);
+  DRC (r_usp, "usp", usp);
+  DRC (r_isp, "isp", isp);
+  DRC (r_pc, "pc", pc);
+  printf ("  flags ");
+  print_flags (regs.r_flags);
   printf ("\033[0m\n");
   printf ("\033[0m\n");
+  /*sim_disasm_one (); */
 }
 }
This page took 0.024391 seconds and 4 git commands to generate.