* sparc-linux-tdep.c (sparc32_linux_init_abi): Append
[deliverable/binutils-gdb.git] / gdb / sh-tdep.c
index 13cae3af3f5c1e6c0d5d32ecb7b624becbd15a49..2b4878e0cbaeebd7c9f447286d4183b2ff4a6508 100644 (file)
@@ -44,6 +44,7 @@
 #include "regcache.h"
 #include "doublest.h"
 #include "osabi.h"
+#include "reggroups.h"
 
 #include "sh-tdep.h"
 
@@ -1315,24 +1316,25 @@ sh_return_value_fpu (struct gdbarch *gdbarch, struct type *type,
 static void
 sh_generic_show_regs (void)
 {
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx                       MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
-                  (long) read_register (VBR_REGNUM));
+                  (long) read_register (VBR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
 
   printf_filtered
-    ("\nR0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+    ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
      (long) read_register (0), (long) read_register (1),
      (long) read_register (2), (long) read_register (3),
      (long) read_register (4), (long) read_register (5),
      (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
@@ -1342,27 +1344,28 @@ sh_generic_show_regs (void)
 static void
 sh3_show_regs (void)
 {
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx                       MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
-                  (long) read_register (VBR_REGNUM));
-  printf_filtered (" SSR=%08lx SPC=%08lx",
+                  (long) read_register (VBR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
+  printf_filtered ("     SSR %08lx      SPC %08lx\n",
                   (long) read_register (SSR_REGNUM),
                   (long) read_register (SPC_REGNUM));
 
   printf_filtered
-    ("\nR0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+    ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
      (long) read_register (0), (long) read_register (1),
      (long) read_register (2), (long) read_register (3),
      (long) read_register (4), (long) read_register (5),
      (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
@@ -1373,70 +1376,93 @@ sh3_show_regs (void)
 static void
 sh2e_show_regs (void)
 {
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx                       MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
-                  (long) read_register (VBR_REGNUM));
-  printf_filtered (" FPUL=%08lx FPSCR=%08lx",
+                  (long) read_register (VBR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
+  printf_filtered (
+       "     SSR %08lx      SPC %08lx     FPUL %08lx    FPSCR %08lx\n",
+                  (long) read_register (SSR_REGNUM),
+                  (long) read_register (SPC_REGNUM),
                   (long) read_register (FPUL_REGNUM),
                   (long) read_register (FPSCR_REGNUM));
 
   printf_filtered
-    ("\nR0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+    ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
      (long) read_register (0), (long) read_register (1),
      (long) read_register (2), (long) read_register (3),
      (long) read_register (4), (long) read_register (5),
      (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
                   (long) read_register (14), (long) read_register (15));
 
-  printf_filtered (("FP0-FP7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"), (long) read_register (FP0_REGNUM + 0), (long) read_register (FP0_REGNUM + 1), (long) read_register (FP0_REGNUM + 2), (long) read_register (FP0_REGNUM + 3), (long) read_register (FP0_REGNUM + 4), (long) read_register (FP0_REGNUM + 5), (long) read_register (FP0_REGNUM + 6), (long) read_register (FP0_REGNUM + 7));
-  printf_filtered (("FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"), (long) read_register (FP0_REGNUM + 8), (long) read_register (FP0_REGNUM + 9), (long) read_register (FP0_REGNUM + 10), (long) read_register (FP0_REGNUM + 11), (long) read_register (FP0_REGNUM + 12), (long) read_register (FP0_REGNUM + 13), (long) read_register (FP0_REGNUM + 14), (long) read_register (FP0_REGNUM + 15));
+  printf_filtered ("FP0-FP7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+                  (long) read_register (FP0_REGNUM + 0),
+                  (long) read_register (FP0_REGNUM + 1),
+                  (long) read_register (FP0_REGNUM + 2),
+                  (long) read_register (FP0_REGNUM + 3),
+                  (long) read_register (FP0_REGNUM + 4),
+                  (long) read_register (FP0_REGNUM + 5),
+                  (long) read_register (FP0_REGNUM + 6),
+                  (long) read_register (FP0_REGNUM + 7));
+  printf_filtered ("FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+                  (long) read_register (FP0_REGNUM + 8),
+                  (long) read_register (FP0_REGNUM + 9),
+                  (long) read_register (FP0_REGNUM + 10),
+                  (long) read_register (FP0_REGNUM + 11),
+                  (long) read_register (FP0_REGNUM + 12),
+                  (long) read_register (FP0_REGNUM + 13),
+                  (long) read_register (FP0_REGNUM + 14),
+                  (long) read_register (FP0_REGNUM + 15));
 }
 
 static void
 sh2a_show_regs (void)
 {
   int pr = read_register (FPSCR_REGNUM) & 0x80000;
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx TBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx      TBR %08lx     MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
                   (long) read_register (VBR_REGNUM),
-                  (long) read_register (TBR_REGNUM));
-  printf_filtered (" FPUL=%08lx FPSCR=%08lx\n",
+                  (long) read_register (TBR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
+  printf_filtered (
+       "     SSR %08lx      SPC %08lx     FPUL %08lx    FPSCR %08lx\n",
+                  (long) read_register (SSR_REGNUM),
+                  (long) read_register (SPC_REGNUM),
                   (long) read_register (FPUL_REGNUM),
                   (long) read_register (FPSCR_REGNUM));
 
-  printf_filtered ("R0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (0), (long) read_register (1),
                   (long) read_register (2), (long) read_register (3),
                   (long) read_register (4), (long) read_register (5),
                   (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
                   (long) read_register (14), (long) read_register (15));
 
-  printf_filtered ((pr
-                   ? "DR0-DR6  %08lx%08lx %08lx%08lx %08lx%08lx %08lx%08lx\n"
-                   :
-                   "FP0-FP7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
+  printf_filtered (
+       (pr ? "DR0-DR6  %08lx%08lx  %08lx%08lx  %08lx%08lx  %08lx%08lx\n"
+           : "FP0-FP7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
                   (long) read_register (FP0_REGNUM + 0),
                   (long) read_register (FP0_REGNUM + 1),
                   (long) read_register (FP0_REGNUM + 2),
@@ -1445,9 +1471,9 @@ sh2a_show_regs (void)
                   (long) read_register (FP0_REGNUM + 5),
                   (long) read_register (FP0_REGNUM + 6),
                   (long) read_register (FP0_REGNUM + 7));
-  printf_filtered ((pr ?
-                   "DR8-DR14 %08lx%08lx %08lx%08lx %08lx%08lx %08lx%08lx\n" :
-                   "FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
+  printf_filtered (
+       (pr ? "DR8-DR14 %08lx%08lx  %08lx%08lx  %08lx%08lx  %08lx%08lx\n"
+           : "FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
                   (long) read_register (FP0_REGNUM + 8),
                   (long) read_register (FP0_REGNUM + 9),
                   (long) read_register (FP0_REGNUM + 10),
@@ -1457,7 +1483,8 @@ sh2a_show_regs (void)
                   (long) read_register (FP0_REGNUM + 14),
                   (long) read_register (FP0_REGNUM + 15));
   printf_filtered ("BANK=%-3d\n", (int) read_register (BANK_REGNUM));
-  printf_filtered ("R0b - R7b  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered (
+       "R0b-R7b  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (R0_BANK0_REGNUM + 0),
                   (long) read_register (R0_BANK0_REGNUM + 1),
                   (long) read_register (R0_BANK0_REGNUM + 2),
@@ -1466,7 +1493,7 @@ sh2a_show_regs (void)
                   (long) read_register (R0_BANK0_REGNUM + 5),
                   (long) read_register (R0_BANK0_REGNUM + 6),
                   (long) read_register (R0_BANK0_REGNUM + 7));
-  printf_filtered ("R8b - R14b %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8b-R14b %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (R0_BANK0_REGNUM + 8),
                   (long) read_register (R0_BANK0_REGNUM + 9),
                   (long) read_register (R0_BANK0_REGNUM + 10),
@@ -1486,34 +1513,39 @@ static void
 sh2a_nofpu_show_regs (void)
 {
   int pr = read_register (FPSCR_REGNUM) & 0x80000;
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx TBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx      TBR %08lx     MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
                   (long) read_register (VBR_REGNUM),
-                  (long) read_register (TBR_REGNUM));
-  printf_filtered (" FPUL=%08lx FPSCR=%08lx\n",
+                  (long) read_register (TBR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
+  printf_filtered (
+       "     SSR %08lx      SPC %08lx     FPUL %08lx    FPSCR %08lx\n",
+                  (long) read_register (SSR_REGNUM),
+                  (long) read_register (SPC_REGNUM),
                   (long) read_register (FPUL_REGNUM),
                   (long) read_register (FPSCR_REGNUM));
 
-  printf_filtered ("R0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (0), (long) read_register (1),
                   (long) read_register (2), (long) read_register (3),
                   (long) read_register (4), (long) read_register (5),
                   (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
                   (long) read_register (14), (long) read_register (15));
 
   printf_filtered ("BANK=%-3d\n", (int) read_register (BANK_REGNUM));
-  printf_filtered ("R0b - R7b  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered (
+       "R0b-R7b  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (R0_BANK0_REGNUM + 0),
                   (long) read_register (R0_BANK0_REGNUM + 1),
                   (long) read_register (R0_BANK0_REGNUM + 2),
@@ -1522,7 +1554,7 @@ sh2a_nofpu_show_regs (void)
                   (long) read_register (R0_BANK0_REGNUM + 5),
                   (long) read_register (R0_BANK0_REGNUM + 6),
                   (long) read_register (R0_BANK0_REGNUM + 7));
-  printf_filtered ("R8b - R14b %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8b-R14b %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (R0_BANK0_REGNUM + 8),
                   (long) read_register (R0_BANK0_REGNUM + 9),
                   (long) read_register (R0_BANK0_REGNUM + 10),
@@ -1541,66 +1573,83 @@ sh2a_nofpu_show_regs (void)
 static void
 sh3e_show_regs (void)
 {
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx                       MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
-                  (long) read_register (VBR_REGNUM));
-  printf_filtered (" SSR=%08lx SPC=%08lx",
+                  (long) read_register (VBR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
+  printf_filtered (
+       "     SSR %08lx      SPC %08lx     FPUL %08lx    FPSCR %08lx\n",
                   (long) read_register (SSR_REGNUM),
-                  (long) read_register (SPC_REGNUM));
-  printf_filtered (" FPUL=%08lx FPSCR=%08lx",
+                  (long) read_register (SPC_REGNUM),
                   (long) read_register (FPUL_REGNUM),
                   (long) read_register (FPSCR_REGNUM));
 
   printf_filtered
-    ("\nR0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+    ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
      (long) read_register (0), (long) read_register (1),
      (long) read_register (2), (long) read_register (3),
      (long) read_register (4), (long) read_register (5),
      (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
                   (long) read_register (14), (long) read_register (15));
 
-  printf_filtered (("FP0-FP7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"), (long) read_register (FP0_REGNUM + 0), (long) read_register (FP0_REGNUM + 1), (long) read_register (FP0_REGNUM + 2), (long) read_register (FP0_REGNUM + 3), (long) read_register (FP0_REGNUM + 4), (long) read_register (FP0_REGNUM + 5), (long) read_register (FP0_REGNUM + 6), (long) read_register (FP0_REGNUM + 7));
-  printf_filtered (("FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"), (long) read_register (FP0_REGNUM + 8), (long) read_register (FP0_REGNUM + 9), (long) read_register (FP0_REGNUM + 10), (long) read_register (FP0_REGNUM + 11), (long) read_register (FP0_REGNUM + 12), (long) read_register (FP0_REGNUM + 13), (long) read_register (FP0_REGNUM + 14), (long) read_register (FP0_REGNUM + 15));
+  printf_filtered ("FP0-FP7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+                  (long) read_register (FP0_REGNUM + 0),
+                  (long) read_register (FP0_REGNUM + 1),
+                  (long) read_register (FP0_REGNUM + 2),
+                  (long) read_register (FP0_REGNUM + 3),
+                  (long) read_register (FP0_REGNUM + 4),
+                  (long) read_register (FP0_REGNUM + 5),
+                  (long) read_register (FP0_REGNUM + 6),
+                  (long) read_register (FP0_REGNUM + 7));
+  printf_filtered ("FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+                  (long) read_register (FP0_REGNUM + 8),
+                  (long) read_register (FP0_REGNUM + 9),
+                  (long) read_register (FP0_REGNUM + 10),
+                  (long) read_register (FP0_REGNUM + 11),
+                  (long) read_register (FP0_REGNUM + 12),
+                  (long) read_register (FP0_REGNUM + 13),
+                  (long) read_register (FP0_REGNUM + 14),
+                  (long) read_register (FP0_REGNUM + 15));
 }
 
 static void
 sh3_dsp_show_regs (void)
 {
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx                       MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
-                  (long) read_register (VBR_REGNUM));
+                  (long) read_register (VBR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
 
-  printf_filtered (" SSR=%08lx SPC=%08lx",
+  printf_filtered ("     SSR %08lx      SPC %08lx      DSR %08lx\n",
                   (long) read_register (SSR_REGNUM),
-                  (long) read_register (SPC_REGNUM));
-
-  printf_filtered (" DSR=%08lx", (long) read_register (DSR_REGNUM));
+                  (long) read_register (SPC_REGNUM),
+                  (long) read_register (DSR_REGNUM));
 
   printf_filtered
-    ("\nR0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+    ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
      (long) read_register (0), (long) read_register (1),
      (long) read_register (2), (long) read_register (3),
      (long) read_register (4), (long) read_register (5),
      (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
@@ -1625,39 +1674,38 @@ static void
 sh4_show_regs (void)
 {
   int pr = read_register (FPSCR_REGNUM) & 0x80000;
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx                       MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
-                  (long) read_register (VBR_REGNUM));
-  printf_filtered (" SSR=%08lx SPC=%08lx",
+                  (long) read_register (VBR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
+  printf_filtered (
+       "     SSR %08lx      SPC %08lx     FPUL %08lx    FPSCR %08lx\n",
                   (long) read_register (SSR_REGNUM),
-                  (long) read_register (SPC_REGNUM));
-  printf_filtered (" FPUL=%08lx FPSCR=%08lx",
+                  (long) read_register (SPC_REGNUM),
                   (long) read_register (FPUL_REGNUM),
                   (long) read_register (FPSCR_REGNUM));
 
-  printf_filtered
-    ("\nR0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
-     (long) read_register (0), (long) read_register (1),
-     (long) read_register (2), (long) read_register (3),
-     (long) read_register (4), (long) read_register (5),
-     (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+                  (long) read_register (0), (long) read_register (1),
+                  (long) read_register (2), (long) read_register (3),
+                  (long) read_register (4), (long) read_register (5),
+                  (long) read_register (6), (long) read_register (7));
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
                   (long) read_register (14), (long) read_register (15));
 
-  printf_filtered ((pr
-                   ? "DR0-DR6  %08lx%08lx %08lx%08lx %08lx%08lx %08lx%08lx\n"
-                   :
-                   "FP0-FP7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
+  printf_filtered (
+       (pr ? "DR0-DR6  %08lx%08lx  %08lx%08lx  %08lx%08lx  %08lx%08lx\n"
+           : "FP0-FP7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
                   (long) read_register (FP0_REGNUM + 0),
                   (long) read_register (FP0_REGNUM + 1),
                   (long) read_register (FP0_REGNUM + 2),
@@ -1666,9 +1714,9 @@ sh4_show_regs (void)
                   (long) read_register (FP0_REGNUM + 5),
                   (long) read_register (FP0_REGNUM + 6),
                   (long) read_register (FP0_REGNUM + 7));
-  printf_filtered ((pr ?
-                   "DR8-DR14 %08lx%08lx %08lx%08lx %08lx%08lx %08lx%08lx\n" :
-                   "FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
+  printf_filtered (
+       (pr ? "DR8-DR14 %08lx%08lx  %08lx%08lx  %08lx%08lx  %08lx%08lx\n"
+           : "FP8-FP15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n"),
                   (long) read_register (FP0_REGNUM + 8),
                   (long) read_register (FP0_REGNUM + 9),
                   (long) read_register (FP0_REGNUM + 10),
@@ -1682,27 +1730,30 @@ sh4_show_regs (void)
 static void
 sh4_nofpu_show_regs (void)
 {
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx                       MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
-                  (long) read_register (VBR_REGNUM));
-  printf_filtered (" SSR=%08lx SPC=%08lx",
+                  (long) read_register (VBR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
+  printf_filtered (
+       "     SSR %08lx      SPC %08lx     FPUL %08lx    FPSCR %08lx\n",
                   (long) read_register (SSR_REGNUM),
-                  (long) read_register (SPC_REGNUM));
+                  (long) read_register (SPC_REGNUM),
+                  (long) read_register (FPUL_REGNUM),
+                  (long) read_register (FPSCR_REGNUM));
 
-  printf_filtered
-    ("\nR0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
-     (long) read_register (0), (long) read_register (1),
-     (long) read_register (2), (long) read_register (3),
-     (long) read_register (4), (long) read_register (5),
-     (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+                  (long) read_register (0), (long) read_register (1),
+                  (long) read_register (2), (long) read_register (3),
+                  (long) read_register (4), (long) read_register (5),
+                  (long) read_register (6), (long) read_register (7));
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
@@ -1712,26 +1763,27 @@ sh4_nofpu_show_regs (void)
 static void
 sh_dsp_show_regs (void)
 {
-  printf_filtered ("PC=%s SR=%08lx PR=%08lx MACH=%08lx MACHL=%08lx\n",
+
+  printf_filtered ("      PC %s       SR %08lx       PR %08lx     MACH %08lx\n",
                   paddr (read_register (PC_REGNUM)),
                   (long) read_register (SR_REGNUM),
                   (long) read_register (PR_REGNUM),
-                  (long) read_register (MACH_REGNUM),
-                  (long) read_register (MACL_REGNUM));
+                  (long) read_register (MACH_REGNUM));
 
-  printf_filtered ("GBR=%08lx VBR=%08lx",
+  printf_filtered (
+       "     GBR %08lx      VBR %08lx      DSR %08lx     MACL %08lx\n",
                   (long) read_register (GBR_REGNUM),
-                  (long) read_register (VBR_REGNUM));
-
-  printf_filtered (" DSR=%08lx", (long) read_register (DSR_REGNUM));
+                  (long) read_register (VBR_REGNUM),
+                  (long) read_register (DSR_REGNUM),
+                  (long) read_register (MACL_REGNUM));
 
   printf_filtered
-    ("\nR0-R7  %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+    ("R0-R7    %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
      (long) read_register (0), (long) read_register (1),
      (long) read_register (2), (long) read_register (3),
      (long) read_register (4), (long) read_register (5),
      (long) read_register (6), (long) read_register (7));
-  printf_filtered ("R8-R15 %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
+  printf_filtered ("R8-R15   %08lx %08lx %08lx %08lx %08lx %08lx %08lx %08lx\n",
                   (long) read_register (8), (long) read_register (9),
                   (long) read_register (10), (long) read_register (11),
                   (long) read_register (12), (long) read_register (13),
@@ -1812,6 +1864,47 @@ sh_default_register_type (struct gdbarch *gdbarch, int reg_nr)
   return builtin_type_int;
 }
 
+/* Is a register in a reggroup?
+   The default code in reggroup.c doesn't identify system registers, some
+   float registers or any of the vector registers.
+   TODO: sh2a and dsp registers.  */
+int
+sh_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
+                       struct reggroup *reggroup)
+{
+  if (REGISTER_NAME (regnum) == NULL
+      || *REGISTER_NAME (regnum) == '\0')
+    return 0;
+
+  if (reggroup == float_reggroup
+      && (regnum == FPUL_REGNUM
+         || regnum == FPSCR_REGNUM))
+    return 1;
+
+  if (regnum >= FV0_REGNUM && regnum <= FV_LAST_REGNUM)
+    {
+      if (reggroup == vector_reggroup || reggroup == float_reggroup)
+       return 1;
+      if (reggroup == general_reggroup)
+       return 0;
+    }
+
+  if (regnum == VBR_REGNUM
+      || regnum == SR_REGNUM
+      || regnum == FPSCR_REGNUM
+      || regnum == SSR_REGNUM
+      || regnum == SPC_REGNUM)
+    {
+      if (reggroup == system_reggroup)
+       return 1;
+      if (reggroup == general_reggroup)
+       return 0;
+    }
+
+  /* The default code can cope with any other registers.  */
+  return default_register_reggroup_p (gdbarch, regnum, reggroup);
+}
+
 /* On the sh4, the DRi pseudo registers are problematic if the target
    is little endian. When the user writes one of those registers, for
    instance with 'ser var $dr0=1', we want the double to be stored
@@ -2021,6 +2114,58 @@ sh_sh2a_register_sim_regno (int nr)
   return legacy_register_sim_regno (nr);
 }
 
+/* Set up the register unwinding such that call-clobbered registers are
+   not displayed in frames >0 because the true value is not certain.
+   The 'undefined' registers will show up as 'not available' unless the
+   CFI says otherwise.
+
+   This function is currently set up for SH4 and compatible only.  */
+
+static void
+sh_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
+                          struct dwarf2_frame_state_reg *reg,
+                         struct frame_info *next_frame)
+{
+  /* Mark the PC as the destination for the return address.  */
+  if (regnum == PC_REGNUM)
+    reg->how = DWARF2_FRAME_REG_RA;
+
+  /* Mark the stack pointer as the call frame address.  */
+  else if (regnum == SP_REGNUM)
+    reg->how = DWARF2_FRAME_REG_CFA;
+
+  /* The above was taken from the default init_reg in dwarf2-frame.c
+     while the below is SH specific.  */
+
+  /* Caller save registers.  */
+  else if ((regnum >= R0_REGNUM && regnum <= R0_REGNUM+7)
+          || (regnum >= FR0_REGNUM && regnum <= FR0_REGNUM+11)
+          || (regnum >= DR0_REGNUM && regnum <= DR0_REGNUM+5)
+          || (regnum >= FV0_REGNUM && regnum <= FV0_REGNUM+2)
+          || (regnum == MACH_REGNUM)
+          || (regnum == MACL_REGNUM)
+          || (regnum == FPUL_REGNUM)
+          || (regnum == SR_REGNUM))
+    reg->how = DWARF2_FRAME_REG_UNDEFINED;
+
+  /* Callee save registers.  */
+  else if ((regnum >= R0_REGNUM+8 && regnum <= R0_REGNUM+15)
+          || (regnum >= FR0_REGNUM+12 && regnum <= FR0_REGNUM+15)
+          || (regnum >= DR0_REGNUM+6 && regnum <= DR0_REGNUM+8)
+          || (regnum == FV0_REGNUM+3))
+    reg->how = DWARF2_FRAME_REG_SAME_VALUE;
+
+  /* Other registers.  These are not in the ABI and may or may not
+     mean anything in frames >0 so don't show them.  */
+  else if ((regnum >= R0_BANK0_REGNUM && regnum <= R0_BANK0_REGNUM+15)
+          || (regnum == GBR_REGNUM)
+          || (regnum == VBR_REGNUM)
+          || (regnum == FPSCR_REGNUM)
+          || (regnum == SSR_REGNUM)
+          || (regnum == SPC_REGNUM))
+    reg->how = DWARF2_FRAME_REG_UNDEFINED;
+}
+
 static struct sh_frame_cache *
 sh_alloc_frame_cache (void)
 {
@@ -2371,6 +2516,7 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_num_pseudo_regs (gdbarch, 0);
 
   set_gdbarch_register_type (gdbarch, sh_default_register_type);
+  set_gdbarch_register_reggroup_p (gdbarch, sh_register_reggroup_p);
 
   set_gdbarch_breakpoint_from_pc (gdbarch, sh_breakpoint_from_pc);
 
@@ -2398,6 +2544,8 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   set_gdbarch_in_function_epilogue_p (gdbarch, sh_in_function_epilogue_p);
 
+  dwarf2_frame_set_init_reg (gdbarch, sh_dwarf2_frame_init_reg);
+
   switch (info.bfd_arch_info->mach)
     {
     case bfd_mach_sh:
@@ -2447,10 +2595,13 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
       break;
 
     case bfd_mach_sh3:
+    case bfd_mach_sh3_nommu:
+    case bfd_mach_sh2a_nofpu_or_sh3_nommu:
       set_gdbarch_register_name (gdbarch, sh_sh3_register_name);
       break;
 
     case bfd_mach_sh3e:
+    case bfd_mach_sh2a_or_sh3e:
       /* doubles on sh2e and sh3e are actually 4 byte. */
       set_gdbarch_double_bit (gdbarch, 4 * TARGET_CHAR_BIT);
 
@@ -2480,6 +2631,9 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
     case bfd_mach_sh4_nofpu:
     case bfd_mach_sh4a_nofpu:
+    case bfd_mach_sh4_nommu_nofpu:
+    case bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu:
+    case bfd_mach_sh2a_or_sh4:
       set_gdbarch_register_name (gdbarch, sh_sh4_nofpu_register_name);
       break;
 
This page took 0.032993 seconds and 4 git commands to generate.