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