components/gdb/patches/gdb.gdb.sparc64-tdep.c-2.patch
author April Chin <april.chin@oracle.com>
Wed, 19 Apr 2017 14:37:55 -0700
changeset 7939 a0c0b8aac8d4
parent 7461 fae95a5b122f
permissions -rw-r--r--
25137614 gdb is not able to debug PIE executables on sparc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7461
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
     1
Support for target descriptions layered on top of sparc32/sparc64
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
     2
which describe more registers than native ones.
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
     3
Pseudo registers always come after the real registers.
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
     4
One more step forward to modernize sparc tdep's.
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
     5
Submitted to upstream as:
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
     6
https://sourceware.org/bugzilla/show_bug.cgi?id=20936
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
     7
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
     8
--- gdb-7.11/gdb/sparc64-tdep.c.orig	2016-11-13 22:23:36.747445049 -0800
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
     9
+++ gdb-7.11/gdb/sparc64-tdep.c	2016-11-13 22:23:47.678340579 -0800
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    10
@@ -31,6 +31,7 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    11
 #include "objfiles.h"
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    12
 #include "osabi.h"
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    13
 #include "regcache.h"
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    14
+#include "target-descriptions.h"
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    15
 #include "target.h"
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    16
 #include "value.h"
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    17
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    18
@@ -251,28 +252,29 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    19
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    20
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    21
 /* Register information.  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    22
+#define SPARC64_FPU_REGISTERS                             \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    23
+  "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",         \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    24
+  "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",   \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    25
+  "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    26
+  "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31", \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    27
+  "f32", "f34", "f36", "f38", "f40", "f42", "f44", "f46", \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    28
+  "f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62"
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    29
+#define SPARC64_CP0_REGISTERS                                             \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    30
+  "pc", "npc",                                                            \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    31
+  /* FIXME: Give "state" a name until we start using register groups.  */ \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    32
+  "state",                                                                \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    33
+  "fsr",                                                                  \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    34
+  "fprs",                                                                 \
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    35
+  "y"
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    36
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    37
+static const char *sparc64_fpu_register_names[] = { SPARC64_FPU_REGISTERS };
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    38
+static const char *sparc64_cp0_register_names[] = { SPARC64_CP0_REGISTERS };
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    39
+
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    40
 static const char *sparc64_register_names[] =
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    41
 {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    42
-  "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    43
-  "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    44
-  "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    45
-  "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    46
-
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    47
-  "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    48
-  "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    49
-  "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    50
-  "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    51
-  "f32", "f34", "f36", "f38", "f40", "f42", "f44", "f46",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    52
-  "f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    53
-
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    54
-  "pc", "npc",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    55
-  
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    56
-  /* FIXME: Give "state" a name until we start using register groups.  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    57
-  "state",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    58
-  "fsr",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    59
-  "fprs",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    60
-  "y",
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    61
+  SPARC_CORE_REGISTERS,
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    62
+  SPARC64_FPU_REGISTERS,
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    63
+  SPARC64_CP0_REGISTERS
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    64
 };
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    65
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    66
 /* Total number of registers.  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    67
@@ -298,7 +300,19 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    68
 #define SPARC64_NUM_PSEUDO_REGS ARRAY_SIZE (sparc64_pseudo_register_names)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    69
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    70
 /* Return the name of register REGNUM.  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    71
+static const char *
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    72
+sparc64_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    73
+{
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    74
+  regnum -= gdbarch_num_regs (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    75
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    76
+  if (regnum < SPARC64_NUM_PSEUDO_REGS)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    77
+    return sparc64_pseudo_register_names[regnum];
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    78
+
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    79
+  internal_error (__FILE__, __LINE__,
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    80
+                  _("sparc64_pseudo_register_name: bad register number %d"),
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    81
+                  regnum);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    82
+}
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    83
+
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    84
 static const char *
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    85
 sparc64_register_name (struct gdbarch *gdbarch, int regnum)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    86
 {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    87
@@ -305,9 +319,8 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    88
   if (regnum >= 0 && regnum < SPARC64_NUM_REGS)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    89
     return sparc64_register_names[regnum];
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    90
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    91
-  if (regnum >= SPARC64_NUM_REGS
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    92
-      && regnum < SPARC64_NUM_REGS + SPARC64_NUM_PSEUDO_REGS)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    93
-    return sparc64_pseudo_register_names[regnum - SPARC64_NUM_REGS];
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    94
+  if (regnum >= gdbarch_num_regs (gdbarch))
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    95
+    return sparc64_pseudo_register_name (gdbarch, regnum);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    96
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    97
   return NULL;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    98
 }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
    99
@@ -314,7 +327,29 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   100
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   101
 /* Return the GDB type object for the "standard" data type of data in
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   102
    register REGNUM.  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   103
+static struct type *
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   104
+sparc64_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   105
+{
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   106
+  regnum -= gdbarch_num_regs (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   107
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   108
+  if (regnum == SPARC64_CWP_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   109
+    return builtin_type (gdbarch)->builtin_int64;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   110
+  if (regnum == SPARC64_PSTATE_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   111
+    return sparc64_pstate_type (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   112
+  if (regnum == SPARC64_ASI_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   113
+    return builtin_type (gdbarch)->builtin_int64;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   114
+  if (regnum == SPARC64_CCR_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   115
+    return sparc64_ccr_type (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   116
+  if (regnum >= SPARC64_D0_REGNUM && regnum <= SPARC64_D62_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   117
+    return builtin_type (gdbarch)->builtin_double;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   118
+  if (regnum >= SPARC64_Q0_REGNUM && regnum <= SPARC64_Q60_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   119
+    return builtin_type (gdbarch)->builtin_long_double;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   120
+
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   121
+  internal_error (__FILE__, __LINE__,
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   122
+                  _("sparc64_pseudo_register_type: bad register number %d"),
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   123
+                  regnum);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   124
+}
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   125
+
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   126
 static struct type *
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   127
 sparc64_register_type (struct gdbarch *gdbarch, int regnum)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   128
 {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   129
@@ -344,20 +379,9 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   130
     return builtin_type (gdbarch)->builtin_int64;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   131
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   132
   /* Pseudo registers.  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   133
+  if (regnum >= gdbarch_num_regs (gdbarch))
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   134
+    return sparc64_pseudo_register_type (gdbarch, regnum);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   135
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   136
-  if (regnum == SPARC64_CWP_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   137
-    return builtin_type (gdbarch)->builtin_int64;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   138
-  if (regnum == SPARC64_PSTATE_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   139
-    return sparc64_pstate_type (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   140
-  if (regnum == SPARC64_ASI_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   141
-    return builtin_type (gdbarch)->builtin_int64;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   142
-  if (regnum == SPARC64_CCR_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   143
-    return sparc64_ccr_type (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   144
-  if (regnum >= SPARC64_D0_REGNUM && regnum <= SPARC64_D62_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   145
-    return builtin_type (gdbarch)->builtin_double;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   146
-  if (regnum >= SPARC64_Q0_REGNUM && regnum <= SPARC64_Q60_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   147
-    return builtin_type (gdbarch)->builtin_long_double;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   148
-
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   149
   internal_error (__FILE__, __LINE__, _("invalid regnum"));
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   150
 }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   151
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   152
@@ -369,7 +393,7 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   153
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   154
   enum register_status status;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   155
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   156
-  gdb_assert (regnum >= SPARC64_NUM_REGS);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   157
+  regnum -= gdbarch_num_regs (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   158
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   159
   if (regnum >= SPARC64_D0_REGNUM && regnum <= SPARC64_D30_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   160
     {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   161
@@ -446,8 +470,9 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   162
 			       int regnum, const gdb_byte *buf)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   163
 {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   164
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   165
-  gdb_assert (regnum >= SPARC64_NUM_REGS);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   166
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   167
+  regnum -= gdbarch_num_regs (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   168
+
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   169
   if (regnum >= SPARC64_D0_REGNUM && regnum <= SPARC64_D30_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   170
     {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   171
       regnum = SPARC_F0_REGNUM + 2 * (regnum - SPARC64_D0_REGNUM);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   172
@@ -663,6 +688,7 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   173
 sparc64_store_floating_fields (struct regcache *regcache, struct type *type,
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   174
 			       const gdb_byte *valbuf, int element, int bitpos)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   175
 {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   176
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   177
   int len = TYPE_LENGTH (type);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   178
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   179
   gdb_assert (element < 16);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   180
@@ -677,7 +703,7 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   181
 	  gdb_assert (bitpos == 0);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   182
 	  gdb_assert ((element % 2) == 0);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   183
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   184
-	  regnum = SPARC64_Q0_REGNUM + element / 2;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   185
+	  regnum = gdbarch_num_regs (gdbarch) + SPARC64_Q0_REGNUM + element / 2;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   186
 	  regcache_cooked_write (regcache, regnum, valbuf);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   187
 	}
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   188
       else if (len == 8)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   189
@@ -684,7 +710,8 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   190
 	{
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   191
 	  gdb_assert (bitpos == 0 || bitpos == 64);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   192
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   193
-	  regnum = SPARC64_D0_REGNUM + element + bitpos / 64;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   194
+	  regnum = gdbarch_num_regs (gdbarch) + SPARC64_D0_REGNUM
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   195
+                   + element + bitpos / 64;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   196
 	  regcache_cooked_write (regcache, regnum, valbuf + (bitpos / 8));
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   197
 	}
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   198
       else
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   199
@@ -737,6 +764,8 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   200
 sparc64_extract_floating_fields (struct regcache *regcache, struct type *type,
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   201
 				 gdb_byte *valbuf, int bitpos)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   202
 {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   203
+  struct gdbarch *gdbarch = get_regcache_arch (regcache);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   204
+
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   205
   if (sparc64_floating_p (type))
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   206
     {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   207
       int len = TYPE_LENGTH (type);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   208
@@ -746,7 +775,8 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   209
 	{
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   210
 	  gdb_assert (bitpos == 0 || bitpos == 128);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   211
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   212
-	  regnum = SPARC64_Q0_REGNUM + bitpos / 128;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   213
+	  regnum = gdbarch_num_regs (gdbarch) + SPARC64_Q0_REGNUM
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   214
+                   + bitpos / 128;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   215
 	  regcache_cooked_read (regcache, regnum, valbuf + (bitpos / 8));
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   216
 	}
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   217
       else if (len == 8)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   218
@@ -753,7 +783,7 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   219
 	{
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   220
 	  gdb_assert (bitpos % 64 == 0 && bitpos >= 0 && bitpos < 256);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   221
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   222
-	  regnum = SPARC64_D0_REGNUM + bitpos / 64;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   223
+	  regnum = gdbarch_num_regs (gdbarch) + SPARC64_D0_REGNUM + bitpos / 64;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   224
 	  regcache_cooked_read (regcache, regnum, valbuf + (bitpos / 8));
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   225
 	}
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   226
       else
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   227
@@ -936,13 +966,13 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   228
 	  /* Float Complex or double Complex arguments.  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   229
 	  if (element < 16)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   230
 	    {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   231
-	      regnum = SPARC64_D0_REGNUM + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   232
+	      regnum = gdbarch_num_regs (gdbarch) + SPARC64_D0_REGNUM + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   233
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   234
 	      if (len == 16)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   235
 		{
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   236
-		  if (regnum < SPARC64_D30_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   237
+		  if (regnum < gdbarch_num_regs (gdbarch) + SPARC64_D30_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   238
 		    regcache_cooked_write (regcache, regnum + 1, valbuf + 8);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   239
-		  if (regnum < SPARC64_D10_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   240
+		  if (regnum < gdbarch_num_regs (gdbarch) + SPARC64_D10_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   241
 		    regcache_cooked_write (regcache,
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   242
 					   SPARC_O0_REGNUM + element + 1,
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   243
 					   valbuf + 8);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   244
@@ -957,12 +987,14 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   245
 	      if (element % 2)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   246
 		element++;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   247
 	      if (element < 16)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   248
-		regnum = SPARC64_Q0_REGNUM + element / 2;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   249
+		regnum = gdbarch_num_regs (gdbarch) + SPARC64_Q0_REGNUM
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   250
+                         + element / 2;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   251
 	    }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   252
 	  else if (len == 8)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   253
 	    {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   254
 	      if (element < 16)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   255
-		regnum = SPARC64_D0_REGNUM + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   256
+		regnum = gdbarch_num_regs (gdbarch) + SPARC64_D0_REGNUM
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   257
+                         + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   258
 	    }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   259
 	  else if (len == 4)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   260
 	    {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   261
@@ -977,7 +1009,8 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   262
 	      valbuf = buf;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   263
 	      len = 8;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   264
 	      if (element < 16)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   265
-		regnum = SPARC64_D0_REGNUM + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   266
+		regnum = gdbarch_num_regs (gdbarch) + SPARC64_D0_REGNUM
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   267
+                         + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   268
 	    }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   269
 	}
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   270
       else
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   271
@@ -994,19 +1027,24 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   272
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   273
 	  /* If we're storing the value in a floating-point register,
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   274
              also store it in the corresponding %0 register(s).  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   275
-	  if (regnum >= SPARC64_D0_REGNUM && regnum <= SPARC64_D10_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   276
-	    {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   277
-	      gdb_assert (element < 6);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   278
-	      regnum = SPARC_O0_REGNUM + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   279
-	      regcache_cooked_write (regcache, regnum, valbuf);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   280
-	    }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   281
-	  else if (regnum >= SPARC64_Q0_REGNUM && regnum <= SPARC64_Q8_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   282
-	    {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   283
-	      gdb_assert (element < 5);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   284
-	      regnum = SPARC_O0_REGNUM + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   285
-	      regcache_cooked_write (regcache, regnum, valbuf);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   286
-	      regcache_cooked_write (regcache, regnum + 1, valbuf + 8);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   287
-	    }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   288
+	  if (regnum >= gdbarch_num_regs (gdbarch))
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   289
+            {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   290
+              regnum -= gdbarch_num_regs (gdbarch);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   291
+
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   292
+              if (regnum >= SPARC64_D0_REGNUM && regnum <= SPARC64_D10_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   293
+	        {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   294
+	          gdb_assert (element < 6);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   295
+	          regnum = SPARC_O0_REGNUM + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   296
+	          regcache_cooked_write (regcache, regnum, valbuf);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   297
+                }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   298
+              else if (regnum >= SPARC64_Q0_REGNUM && regnum <= SPARC64_Q8_REGNUM)
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   299
+                {
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   300
+                  gdb_assert (element < 5);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   301
+                  regnum = SPARC_O0_REGNUM + element;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   302
+                  regcache_cooked_write (regcache, regnum, valbuf);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   303
+                  regcache_cooked_write (regcache, regnum + 1, valbuf + 8);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   304
+	        }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   305
+            }
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   306
 	}
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   307
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   308
       /* Always store the argument in memory.  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   309
@@ -1210,6 +1248,10 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   310
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   311
   tdep->pc_regnum = SPARC64_PC_REGNUM;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   312
   tdep->npc_regnum = SPARC64_NPC_REGNUM;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   313
+  tdep->fpu_register_names = sparc64_fpu_register_names;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   314
+  tdep->fpu_registers_num = ARRAY_SIZE (sparc64_fpu_register_names);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   315
+  tdep->cp0_register_names = sparc64_cp0_register_names;
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   316
+  tdep->cp0_registers_num = ARRAY_SIZE (sparc64_cp0_register_names);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   317
 
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   318
   /* This is what all the fuss is about.  */
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   319
   set_gdbarch_long_bit (gdbarch, 64);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   320
@@ -1220,6 +1262,8 @@
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   321
   set_gdbarch_register_name (gdbarch, sparc64_register_name);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   322
   set_gdbarch_register_type (gdbarch, sparc64_register_type);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   323
   set_gdbarch_num_pseudo_regs (gdbarch, SPARC64_NUM_PSEUDO_REGS);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   324
+  set_tdesc_pseudo_register_name (gdbarch, sparc64_pseudo_register_name);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   325
+  set_tdesc_pseudo_register_type (gdbarch, sparc64_pseudo_register_type);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   326
   set_gdbarch_pseudo_register_read (gdbarch, sparc64_pseudo_register_read);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   327
   set_gdbarch_pseudo_register_write (gdbarch, sparc64_pseudo_register_write);
fae95a5b122f 25120014 gdb does not support target descriptions layered on top of native one
Ivo Raisr <ivo.raisr@oracle.com>
parents:
diff changeset
   328