summaryrefslogtreecommitdiffstats
path: root/meta-microblaze/recipes-devtools/gdb/gdb/0041-Adding-64-bit-MB-support-Added-new-architecture-to-M.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-microblaze/recipes-devtools/gdb/gdb/0041-Adding-64-bit-MB-support-Added-new-architecture-to-M.patch')
-rw-r--r--meta-microblaze/recipes-devtools/gdb/gdb/0041-Adding-64-bit-MB-support-Added-new-architecture-to-M.patch953
1 files changed, 953 insertions, 0 deletions
diff --git a/meta-microblaze/recipes-devtools/gdb/gdb/0041-Adding-64-bit-MB-support-Added-new-architecture-to-M.patch b/meta-microblaze/recipes-devtools/gdb/gdb/0041-Adding-64-bit-MB-support-Added-new-architecture-to-M.patch
new file mode 100644
index 00000000..0c72e792
--- /dev/null
+++ b/meta-microblaze/recipes-devtools/gdb/gdb/0041-Adding-64-bit-MB-support-Added-new-architecture-to-M.patch
@@ -0,0 +1,953 @@
1From 992c41987cb6c89bb3f9cbc0f6a2b0aa3458e4d2 Mon Sep 17 00:00:00 2001
2From: Nagaraju Mekala <nmekala@xilix.com>
3Date: Thu, 31 Jan 2019 14:36:00 +0530
4Subject: [PATCH 41/52] Adding 64 bit MB support Added new architecture to
5 Microblaze 64-bit support to GDB Signed-off-by :Nagaraju Mekala
6 <nmekala@xilix.com>
7
8Conflicts:
9 gdb/Makefile.in
10---
11 bfd/archures.c | 2 +
12 bfd/bfd-in2.h | 2 +
13 bfd/cpu-microblaze.c | 8 +-
14 gas/config/tc-microblaze.c | 13 ++
15 gas/config/tc-microblaze.h | 4 +
16 gdb/features/Makefile | 3 +
17 gdb/features/microblaze-core.xml | 6 +-
18 gdb/features/microblaze-stack-protect.xml | 4 +-
19 gdb/features/microblaze-with-stack-protect.c | 8 +-
20 gdb/features/microblaze.c | 6 +-
21 gdb/features/microblaze64-core.xml | 69 ++++++
22 gdb/features/microblaze64-stack-protect.xml | 12 +
23 .../microblaze64-with-stack-protect.c | 79 +++++++
24 .../microblaze64-with-stack-protect.xml | 12 +
25 gdb/features/microblaze64.c | 77 +++++++
26 gdb/features/microblaze64.xml | 11 +
27 gdb/microblaze-tdep.c | 207 ++++++++++++++++--
28 gdb/microblaze-tdep.h | 8 +-
29 .../microblaze-with-stack-protect.dat | 4 +-
30 19 files changed, 491 insertions(+), 44 deletions(-)
31 create mode 100644 gdb/features/microblaze64-core.xml
32 create mode 100644 gdb/features/microblaze64-stack-protect.xml
33 create mode 100644 gdb/features/microblaze64-with-stack-protect.c
34 create mode 100644 gdb/features/microblaze64-with-stack-protect.xml
35 create mode 100644 gdb/features/microblaze64.c
36 create mode 100644 gdb/features/microblaze64.xml
37
38Index: gdb-9.2/bfd/archures.c
39===================================================================
40--- gdb-9.2.orig/bfd/archures.c
41+++ gdb-9.2/bfd/archures.c
42@@ -513,6 +513,8 @@ DESCRIPTION
43 . bfd_arch_lm32, {* Lattice Mico32. *}
44 .#define bfd_mach_lm32 1
45 . bfd_arch_microblaze,{* Xilinx MicroBlaze. *}
46+.#define bfd_mach_microblaze 1
47+.#define bfd_mach_microblaze64 2
48 . bfd_arch_tilepro, {* Tilera TILEPro. *}
49 . bfd_arch_tilegx, {* Tilera TILE-Gx. *}
50 .#define bfd_mach_tilepro 1
51Index: gdb-9.2/bfd/bfd-in2.h
52===================================================================
53--- gdb-9.2.orig/bfd/bfd-in2.h
54+++ gdb-9.2/bfd/bfd-in2.h
55@@ -1896,6 +1896,8 @@ enum bfd_architecture
56 bfd_arch_lm32, /* Lattice Mico32. */
57 #define bfd_mach_lm32 1
58 bfd_arch_microblaze,/* Xilinx MicroBlaze. */
59+#define bfd_mach_microblaze 1
60+#define bfd_mach_microblaze64 2
61 bfd_arch_tilepro, /* Tilera TILEPro. */
62 bfd_arch_tilegx, /* Tilera TILE-Gx. */
63 #define bfd_mach_tilepro 1
64Index: gdb-9.2/bfd/cpu-microblaze.c
65===================================================================
66--- gdb-9.2.orig/bfd/cpu-microblaze.c
67+++ gdb-9.2/bfd/cpu-microblaze.c
68@@ -31,7 +31,7 @@ const bfd_arch_info_type bfd_microblaze_
69 64, /* 32 bits in an address. */
70 8, /* 8 bits in a byte. */
71 bfd_arch_microblaze, /* Architecture. */
72- 0, /* Machine number - 0 for now. */
73+ bfd_mach_microblaze64, /* 64 bit Machine */
74 "microblaze", /* Architecture name. */
75 "MicroBlaze", /* Printable name. */
76 3, /* Section align power. */
77@@ -46,7 +46,7 @@ const bfd_arch_info_type bfd_microblaze_
78 32, /* Bits in an address. */
79 8, /* Bits in a byte. */
80 bfd_arch_microblaze, /* Architecture number. */
81- 0, /* Machine number - 0 for now. */
82+ bfd_mach_microblaze, /* 32 bit Machine */
83 "microblaze", /* Architecture name. */
84 "MicroBlaze", /* Printable name. */
85 3, /* Section align power. */
86@@ -63,7 +63,7 @@ const bfd_arch_info_type bfd_microblaze_
87 32, /* 32 bits in an address. */
88 8, /* 8 bits in a byte. */
89 bfd_arch_microblaze, /* Architecture. */
90- 0, /* Machine number - 0 for now. */
91+ bfd_mach_microblaze, /* 32 bit Machine */
92 "microblaze", /* Architecture name. */
93 "MicroBlaze", /* Printable name. */
94 3, /* Section align power. */
95@@ -78,7 +78,7 @@ const bfd_arch_info_type bfd_microblaze_
96 64, /* 32 bits in an address. */
97 8, /* 8 bits in a byte. */
98 bfd_arch_microblaze, /* Architecture. */
99- 0, /* Machine number - 0 for now. */
100+ bfd_mach_microblaze64, /* 64 bit Machine */
101 "microblaze", /* Architecture name. */
102 "MicroBlaze", /* Printable name. */
103 3, /* Section align power. */
104Index: gdb-9.2/gdb/features/Makefile
105===================================================================
106--- gdb-9.2.orig/gdb/features/Makefile
107+++ gdb-9.2/gdb/features/Makefile
108@@ -48,6 +48,7 @@ WHICH = arm/arm-with-iwmmxt arm/arm-with
109 arm/arm-with-neon \
110 mips-linux mips-dsp-linux \
111 microblaze-with-stack-protect \
112+ microblaze64-with-stack-protect \
113 mips64-linux mips64-dsp-linux \
114 nios2-linux \
115 rs6000/powerpc-32 \
116@@ -111,7 +112,9 @@ XMLTOC = \
117 arc-v2.xml \
118 arc-arcompact.xml \
119 microblaze-with-stack-protect.xml \
120+ microblaze64-with-stack-protect.xml \
121 microblaze.xml \
122+ microblaze64.xml \
123 mips-dsp-linux.xml \
124 mips-linux.xml \
125 mips64-dsp-linux.xml \
126Index: gdb-9.2/gdb/features/microblaze-core.xml
127===================================================================
128--- gdb-9.2.orig/gdb/features/microblaze-core.xml
129+++ gdb-9.2/gdb/features/microblaze-core.xml
130@@ -8,7 +8,7 @@
131 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
132 <feature name="org.gnu.gdb.microblaze.core">
133 <reg name="r0" bitsize="32" regnum="0"/>
134- <reg name="r1" bitsize="32" type="data_ptr"/>
135+ <reg name="r1" bitsize="32"/>
136 <reg name="r2" bitsize="32"/>
137 <reg name="r3" bitsize="32"/>
138 <reg name="r4" bitsize="32"/>
139@@ -39,7 +39,7 @@
140 <reg name="r29" bitsize="32"/>
141 <reg name="r30" bitsize="32"/>
142 <reg name="r31" bitsize="32"/>
143- <reg name="rpc" bitsize="32" type="code_ptr"/>
144+ <reg name="rpc" bitsize="32"/>
145 <reg name="rmsr" bitsize="32"/>
146 <reg name="rear" bitsize="32"/>
147 <reg name="resr" bitsize="32"/>
148@@ -64,4 +64,6 @@
149 <reg name="rtlbsx" bitsize="32"/>
150 <reg name="rtlblo" bitsize="32"/>
151 <reg name="rtlbhi" bitsize="32"/>
152+ <reg name="slr" bitsize="32"/>
153+ <reg name="shr" bitsize="32"/>
154 </feature>
155Index: gdb-9.2/gdb/features/microblaze-stack-protect.xml
156===================================================================
157--- gdb-9.2.orig/gdb/features/microblaze-stack-protect.xml
158+++ gdb-9.2/gdb/features/microblaze-stack-protect.xml
159@@ -7,6 +7,6 @@
160
161 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
162 <feature name="org.gnu.gdb.microblaze.stack-protect">
163- <reg name="rslr" bitsize="32"/>
164- <reg name="rshr" bitsize="32"/>
165+ <reg name="slr" bitsize="32"/>
166+ <reg name="shr" bitsize="32"/>
167 </feature>
168Index: gdb-9.2/gdb/features/microblaze-with-stack-protect.c
169===================================================================
170--- gdb-9.2.orig/gdb/features/microblaze-with-stack-protect.c
171+++ gdb-9.2/gdb/features/microblaze-with-stack-protect.c
172@@ -14,7 +14,7 @@ initialize_tdesc_microblaze_with_stack_p
173
174 feature = tdesc_create_feature (result, "org.gnu.gdb.microblaze.core");
175 tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
176- tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "data_ptr");
177+ tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
178 tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
179 tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
180 tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
181@@ -45,7 +45,7 @@ initialize_tdesc_microblaze_with_stack_p
182 tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "int");
183 tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "int");
184 tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "int");
185- tdesc_create_reg (feature, "rpc", 32, 1, NULL, 32, "code_ptr");
186+ tdesc_create_reg (feature, "rpc", 32, 1, NULL, 32, "int");
187 tdesc_create_reg (feature, "rmsr", 33, 1, NULL, 32, "int");
188 tdesc_create_reg (feature, "rear", 34, 1, NULL, 32, "int");
189 tdesc_create_reg (feature, "resr", 35, 1, NULL, 32, "int");
190@@ -72,8 +72,8 @@ initialize_tdesc_microblaze_with_stack_p
191 tdesc_create_reg (feature, "rtlbhi", 56, 1, NULL, 32, "int");
192
193 feature = tdesc_create_feature (result, "org.gnu.gdb.microblaze.stack-protect");
194- tdesc_create_reg (feature, "rslr", 57, 1, NULL, 32, "int");
195- tdesc_create_reg (feature, "rshr", 58, 1, NULL, 32, "int");
196+ tdesc_create_reg (feature, "slr", 57, 1, NULL, 32, "int");
197+ tdesc_create_reg (feature, "shr", 58, 1, NULL, 32, "int");
198
199 tdesc_microblaze_with_stack_protect = result;
200 }
201Index: gdb-9.2/gdb/features/microblaze.c
202===================================================================
203--- gdb-9.2.orig/gdb/features/microblaze.c
204+++ gdb-9.2/gdb/features/microblaze.c
205@@ -14,7 +14,7 @@ initialize_tdesc_microblaze (void)
206
207 feature = tdesc_create_feature (result, "org.gnu.gdb.microblaze.core");
208 tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
209- tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "data_ptr");
210+ tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
211 tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "int");
212 tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "int");
213 tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "int");
214@@ -45,7 +45,7 @@ initialize_tdesc_microblaze (void)
215 tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "int");
216 tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "int");
217 tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "int");
218- tdesc_create_reg (feature, "rpc", 32, 1, NULL, 32, "code_ptr");
219+ tdesc_create_reg (feature, "rpc", 32, 1, NULL, 32, "int");
220 tdesc_create_reg (feature, "rmsr", 33, 1, NULL, 32, "int");
221 tdesc_create_reg (feature, "rear", 34, 1, NULL, 32, "int");
222 tdesc_create_reg (feature, "resr", 35, 1, NULL, 32, "int");
223@@ -70,6 +70,8 @@ initialize_tdesc_microblaze (void)
224 tdesc_create_reg (feature, "rtlbsx", 54, 1, NULL, 32, "int");
225 tdesc_create_reg (feature, "rtlblo", 55, 1, NULL, 32, "int");
226 tdesc_create_reg (feature, "rtlbhi", 56, 1, NULL, 32, "int");
227+ tdesc_create_reg (feature, "slr", 57, 1, NULL, 64, "uint64");
228+ tdesc_create_reg (feature, "shr", 58, 1, NULL, 64, "uint64");
229
230 tdesc_microblaze = result;
231 }
232Index: gdb-9.2/gdb/features/microblaze64-core.xml
233===================================================================
234--- /dev/null
235+++ gdb-9.2/gdb/features/microblaze64-core.xml
236@@ -0,0 +1,69 @@
237+<?xml version="1.0"?>
238+<!-- Copyright (C) 2014-2018 Free Software Foundation, Inc.
239+
240+ Copying and distribution of this file, with or without modification,
241+ are permitted in any medium without royalty provided the copyright
242+ notice and this notice are preserved. -->
243+
244+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
245+<feature name="org.gnu.gdb.microblaze64.core">
246+ <reg name="r0" bitsize="64" regnum="0"/>
247+ <reg name="r1" bitsize="64"/>
248+ <reg name="r2" bitsize="64"/>
249+ <reg name="r3" bitsize="64"/>
250+ <reg name="r4" bitsize="64"/>
251+ <reg name="r5" bitsize="64"/>
252+ <reg name="r6" bitsize="64"/>
253+ <reg name="r7" bitsize="64"/>
254+ <reg name="r8" bitsize="64"/>
255+ <reg name="r9" bitsize="64"/>
256+ <reg name="r10" bitsize="64"/>
257+ <reg name="r11" bitsize="64"/>
258+ <reg name="r12" bitsize="64"/>
259+ <reg name="r13" bitsize="64"/>
260+ <reg name="r14" bitsize="64"/>
261+ <reg name="r15" bitsize="64"/>
262+ <reg name="r16" bitsize="64"/>
263+ <reg name="r17" bitsize="64"/>
264+ <reg name="r18" bitsize="64"/>
265+ <reg name="r19" bitsize="64"/>
266+ <reg name="r20" bitsize="64"/>
267+ <reg name="r21" bitsize="64"/>
268+ <reg name="r22" bitsize="64"/>
269+ <reg name="r23" bitsize="64"/>
270+ <reg name="r24" bitsize="64"/>
271+ <reg name="r25" bitsize="64"/>
272+ <reg name="r26" bitsize="64"/>
273+ <reg name="r27" bitsize="64"/>
274+ <reg name="r28" bitsize="64"/>
275+ <reg name="r29" bitsize="64"/>
276+ <reg name="r30" bitsize="64"/>
277+ <reg name="r31" bitsize="64"/>
278+ <reg name="rpc" bitsize="64"/>
279+ <reg name="rmsr" bitsize="32"/>
280+ <reg name="rear" bitsize="64"/>
281+ <reg name="resr" bitsize="32"/>
282+ <reg name="rfsr" bitsize="32"/>
283+ <reg name="rbtr" bitsize="64"/>
284+ <reg name="rpvr0" bitsize="32"/>
285+ <reg name="rpvr1" bitsize="32"/>
286+ <reg name="rpvr2" bitsize="32"/>
287+ <reg name="rpvr3" bitsize="32"/>
288+ <reg name="rpvr4" bitsize="32"/>
289+ <reg name="rpvr5" bitsize="32"/>
290+ <reg name="rpvr6" bitsize="32"/>
291+ <reg name="rpvr7" bitsize="32"/>
292+ <reg name="rpvr8" bitsize="64"/>
293+ <reg name="rpvr9" bitsize="64"/>
294+ <reg name="rpvr10" bitsize="32"/>
295+ <reg name="rpvr11" bitsize="32"/>
296+ <reg name="redr" bitsize="32"/>
297+ <reg name="rpid" bitsize="32"/>
298+ <reg name="rzpr" bitsize="32"/>
299+ <reg name="rtlbx" bitsize="32"/>
300+ <reg name="rtlbsx" bitsize="32"/>
301+ <reg name="rtlblo" bitsize="32"/>
302+ <reg name="rtlbhi" bitsize="32"/>
303+ <reg name="slr" bitsize="64"/>
304+ <reg name="shr" bitsize="64"/>
305+</feature>
306Index: gdb-9.2/gdb/features/microblaze64-stack-protect.xml
307===================================================================
308--- /dev/null
309+++ gdb-9.2/gdb/features/microblaze64-stack-protect.xml
310@@ -0,0 +1,12 @@
311+<?xml version="1.0"?>
312+<!-- Copyright (C) 2014-2018 Free Software Foundation, Inc.
313+
314+ Copying and distribution of this file, with or without modification,
315+ are permitted in any medium without royalty provided the copyright
316+ notice and this notice are preserved. -->
317+
318+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
319+<feature name="org.gnu.gdb.microblaze64.stack-protect">
320+ <reg name="slr" bitsize="64"/>
321+ <reg name="shr" bitsize="64"/>
322+</feature>
323Index: gdb-9.2/gdb/features/microblaze64-with-stack-protect.c
324===================================================================
325--- /dev/null
326+++ gdb-9.2/gdb/features/microblaze64-with-stack-protect.c
327@@ -0,0 +1,79 @@
328+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
329+ Original: microblaze-with-stack-protect.xml */
330+
331+#include "defs.h"
332+#include "osabi.h"
333+#include "target-descriptions.h"
334+
335+struct target_desc *tdesc_microblaze64_with_stack_protect;
336+static void
337+initialize_tdesc_microblaze64_with_stack_protect (void)
338+{
339+ struct target_desc *result = allocate_target_description ();
340+ struct tdesc_feature *feature;
341+
342+ feature = tdesc_create_feature (result, "org.gnu.gdb.microblaze64.core");
343+ tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
344+ tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
345+ tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
346+ tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
347+ tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
348+ tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
349+ tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
350+ tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
351+ tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
352+ tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
353+ tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
354+ tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
355+ tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
356+ tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
357+ tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
358+ tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
359+ tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
360+ tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
361+ tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
362+ tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
363+ tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
364+ tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
365+ tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
366+ tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
367+ tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
368+ tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
369+ tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
370+ tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
371+ tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
372+ tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
373+ tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
374+ tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
375+ tdesc_create_reg (feature, "rpc", 32, 1, NULL, 64, "uint64");
376+ tdesc_create_reg (feature, "rmsr", 33, 1, NULL, 32, "int");
377+ tdesc_create_reg (feature, "rear", 34, 1, NULL, 64, "int");
378+ tdesc_create_reg (feature, "resr", 35, 1, NULL, 32, "int");
379+ tdesc_create_reg (feature, "rfsr", 36, 1, NULL, 32, "int");
380+ tdesc_create_reg (feature, "rbtr", 37, 1, NULL, 64, "uint64");
381+ tdesc_create_reg (feature, "rpvr0", 38, 1, NULL, 32, "int");
382+ tdesc_create_reg (feature, "rpvr1", 39, 1, NULL, 32, "int");
383+ tdesc_create_reg (feature, "rpvr2", 40, 1, NULL, 32, "int");
384+ tdesc_create_reg (feature, "rpvr3", 41, 1, NULL, 32, "int");
385+ tdesc_create_reg (feature, "rpvr4", 42, 1, NULL, 32, "int");
386+ tdesc_create_reg (feature, "rpvr5", 43, 1, NULL, 32, "int");
387+ tdesc_create_reg (feature, "rpvr6", 44, 1, NULL, 32, "int");
388+ tdesc_create_reg (feature, "rpvr7", 45, 1, NULL, 32, "int");
389+ tdesc_create_reg (feature, "rpvr8", 46, 1, NULL, 64, "uint64");
390+ tdesc_create_reg (feature, "rpvr9", 47, 1, NULL, 64, "uint64");
391+ tdesc_create_reg (feature, "rpvr10", 48, 1, NULL, 32, "int");
392+ tdesc_create_reg (feature, "rpvr11", 49, 1, NULL, 32, "int");
393+ tdesc_create_reg (feature, "redr", 50, 1, NULL, 32, "int");
394+ tdesc_create_reg (feature, "rpid", 51, 1, NULL, 32, "int");
395+ tdesc_create_reg (feature, "rzpr", 52, 1, NULL, 32, "int");
396+ tdesc_create_reg (feature, "rtlbx", 53, 1, NULL, 32, "int");
397+ tdesc_create_reg (feature, "rtlbsx", 54, 1, NULL, 32, "int");
398+ tdesc_create_reg (feature, "rtlblo", 55, 1, NULL, 32, "int");
399+ tdesc_create_reg (feature, "rtlbhi", 56, 1, NULL, 32, "int");
400+
401+ feature = tdesc_create_feature (result, "org.gnu.gdb.microblaze64.stack-protect");
402+ tdesc_create_reg (feature, "slr", 57, 1, NULL, 64, "uint64");
403+ tdesc_create_reg (feature, "shr", 58, 1, NULL, 64, "uint64");
404+
405+ tdesc_microblaze64_with_stack_protect = result;
406+}
407Index: gdb-9.2/gdb/features/microblaze64-with-stack-protect.xml
408===================================================================
409--- /dev/null
410+++ gdb-9.2/gdb/features/microblaze64-with-stack-protect.xml
411@@ -0,0 +1,12 @@
412+<?xml version="1.0"?>
413+<!-- Copyright (C) 2014-2018 Free Software Foundation, Inc.
414+
415+ Copying and distribution of this file, with or without modification,
416+ are permitted in any medium without royalty provided the copyright
417+ notice and this notice are preserved. -->
418+
419+<!DOCTYPE target SYSTEM "gdb-target.dtd">
420+<target>
421+ <xi:include href="microblaze64-core.xml"/>
422+ <xi:include href="microblaze64-stack-protect.xml"/>
423+</target>
424Index: gdb-9.2/gdb/features/microblaze64.c
425===================================================================
426--- /dev/null
427+++ gdb-9.2/gdb/features/microblaze64.c
428@@ -0,0 +1,77 @@
429+/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
430+ Original: microblaze.xml */
431+
432+#include "defs.h"
433+#include "osabi.h"
434+#include "target-descriptions.h"
435+
436+struct target_desc *tdesc_microblaze64;
437+static void
438+initialize_tdesc_microblaze64 (void)
439+{
440+ struct target_desc *result = allocate_target_description ();
441+ struct tdesc_feature *feature;
442+
443+ feature = tdesc_create_feature (result, "org.gnu.gdb.microblaze64.core");
444+ tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
445+ tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
446+ tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
447+ tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
448+ tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
449+ tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
450+ tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
451+ tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
452+ tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
453+ tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
454+ tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
455+ tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
456+ tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
457+ tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
458+ tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
459+ tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
460+ tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
461+ tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
462+ tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
463+ tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
464+ tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
465+ tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
466+ tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
467+ tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
468+ tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
469+ tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
470+ tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
471+ tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
472+ tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
473+ tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
474+ tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
475+ tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
476+ tdesc_create_reg (feature, "rpc", 32, 1, NULL, 64, "uint64");
477+ tdesc_create_reg (feature, "rmsr", 33, 1, NULL, 32, "int");
478+ tdesc_create_reg (feature, "rear", 34, 1, NULL, 64, "uint64");
479+ tdesc_create_reg (feature, "resr", 35, 1, NULL, 32, "int");
480+ tdesc_create_reg (feature, "rfsr", 36, 1, NULL, 32, "int");
481+ tdesc_create_reg (feature, "rbtr", 37, 1, NULL, 64, "uint64");
482+ tdesc_create_reg (feature, "rpvr0", 38, 1, NULL, 32, "int");
483+ tdesc_create_reg (feature, "rpvr1", 39, 1, NULL, 32, "int");
484+ tdesc_create_reg (feature, "rpvr2", 40, 1, NULL, 32, "int");
485+ tdesc_create_reg (feature, "rpvr3", 41, 1, NULL, 32, "int");
486+ tdesc_create_reg (feature, "rpvr4", 42, 1, NULL, 32, "int");
487+ tdesc_create_reg (feature, "rpvr5", 43, 1, NULL, 32, "int");
488+ tdesc_create_reg (feature, "rpvr6", 44, 1, NULL, 32, "int");
489+ tdesc_create_reg (feature, "rpvr7", 45, 1, NULL, 32, "int");
490+ tdesc_create_reg (feature, "rpvr8", 46, 1, NULL, 64, "uint64");
491+ tdesc_create_reg (feature, "rpvr9", 47, 1, NULL, 64, "uint64");
492+ tdesc_create_reg (feature, "rpvr10", 48, 1, NULL, 32, "int");
493+ tdesc_create_reg (feature, "rpvr11", 49, 1, NULL, 32, "int");
494+ tdesc_create_reg (feature, "redr", 50, 1, NULL, 32, "int");
495+ tdesc_create_reg (feature, "rpid", 51, 1, NULL, 32, "int");
496+ tdesc_create_reg (feature, "rzpr", 52, 1, NULL, 32, "int");
497+ tdesc_create_reg (feature, "rtlbx", 53, 1, NULL, 32, "int");
498+ tdesc_create_reg (feature, "rtlbsx", 54, 1, NULL, 32, "int");
499+ tdesc_create_reg (feature, "rtlblo", 55, 1, NULL, 32, "int");
500+ tdesc_create_reg (feature, "rtlbhi", 56, 1, NULL, 32, "int");
501+ tdesc_create_reg (feature, "slr", 57, 1, NULL, 64, "uint64");
502+ tdesc_create_reg (feature, "shr", 58, 1, NULL, 64, "uint64");
503+
504+ tdesc_microblaze64 = result;
505+}
506Index: gdb-9.2/gdb/features/microblaze64.xml
507===================================================================
508--- /dev/null
509+++ gdb-9.2/gdb/features/microblaze64.xml
510@@ -0,0 +1,11 @@
511+<?xml version="1.0"?>
512+<!-- Copyright (C) 2014-2018 Free Software Foundation, Inc.
513+
514+ Copying and distribution of this file, with or without modification,
515+ are permitted in any medium without royalty provided the copyright
516+ notice and this notice are preserved. -->
517+
518+<!DOCTYPE target SYSTEM "gdb-target.dtd">
519+<target>
520+ <xi:include href="microblaze64-core.xml"/>
521+</target>
522Index: gdb-9.2/gdb/microblaze-tdep.c
523===================================================================
524--- gdb-9.2.orig/gdb/microblaze-tdep.c
525+++ gdb-9.2/gdb/microblaze-tdep.c
526@@ -40,7 +40,9 @@
527 #include "remote.h"
528
529 #include "features/microblaze-with-stack-protect.c"
530+#include "features/microblaze64-with-stack-protect.c"
531 #include "features/microblaze.c"
532+#include "features/microblaze64.c"
533
534 /* Instruction macros used for analyzing the prologue. */
535 /* This set of instruction macros need to be changed whenever the
536@@ -75,12 +77,13 @@ static const char *microblaze_register_n
537 "rpvr0", "rpvr1", "rpvr2", "rpvr3", "rpvr4", "rpvr5", "rpvr6",
538 "rpvr7", "rpvr8", "rpvr9", "rpvr10", "rpvr11",
539 "redr", "rpid", "rzpr", "rtlbx", "rtlbsx", "rtlblo", "rtlbhi",
540- "rslr", "rshr"
541+ "slr", "shr"
542 };
543
544 #define MICROBLAZE_NUM_REGS ARRAY_SIZE (microblaze_register_names)
545
546 static unsigned int microblaze_debug_flag = 0;
547+int reg_size = 4;
548
549 static void ATTRIBUTE_PRINTF (1, 2)
550 microblaze_debug (const char *fmt, ...)
551@@ -145,6 +148,7 @@ microblaze_store_arguments (struct regca
552 error (_("store_arguments not implemented"));
553 return sp;
554 }
555+#if 0
556 static int
557 microblaze_linux_memory_remove_breakpoint (struct gdbarch *gdbarch,
558 struct bp_target_info *bp_tgt)
559@@ -154,7 +158,7 @@ microblaze_linux_memory_remove_breakpoin
560 int val;
561 int bplen;
562 gdb_byte old_contents[BREAKPOINT_MAX];
563- struct cleanup *cleanup;
564+ //struct cleanup *cleanup;
565
566 /* Determine appropriate breakpoint contents and size for this address. */
567 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &bplen);
568@@ -162,7 +166,8 @@ microblaze_linux_memory_remove_breakpoin
569 error (_("Software breakpoints not implemented for this target."));
570
571 /* Make sure we see the memory breakpoints. */
572- cleanup = make_show_memory_breakpoints_cleanup (1);
573+ scoped_restore
574+ cleanup = make_scoped_restore_show_memory_breakpoints (1);
575 val = target_read_memory (addr, old_contents, bplen);
576
577 /* If our breakpoint is no longer at the address, this means that the
578@@ -178,6 +183,7 @@ microblaze_linux_memory_remove_breakpoin
579 return val;
580 }
581
582+#endif
583 /* Allocate and initialize a frame cache. */
584
585 static struct microblaze_frame_cache *
586@@ -570,17 +576,16 @@ microblaze_extract_return_value (struct
587 gdb_byte *valbuf)
588 {
589 gdb_byte buf[8];
590-
591 /* Copy the return value (starting) in RETVAL_REGNUM to VALBUF. */
592 switch (TYPE_LENGTH (type))
593 {
594 case 1: /* return last byte in the register. */
595 regcache->cooked_read (MICROBLAZE_RETVAL_REGNUM, buf);
596- memcpy(valbuf, buf + MICROBLAZE_REGISTER_SIZE - 1, 1);
597+ memcpy(valbuf, buf + reg_size - 1, 1);
598 return;
599 case 2: /* return last 2 bytes in register. */
600 regcache->cooked_read (MICROBLAZE_RETVAL_REGNUM, buf);
601- memcpy(valbuf, buf + MICROBLAZE_REGISTER_SIZE - 2, 2);
602+ memcpy(valbuf, buf + reg_size - 2, 2);
603 return;
604 case 4: /* for sizes 4 or 8, copy the required length. */
605 case 8:
606@@ -647,7 +652,119 @@ microblaze_stabs_argument_has_addr (stru
607 return (TYPE_LENGTH (type) == 16);
608 }
609
610-
611+#if 0
612+static std::vector<CORE_ADDR>
613+microblaze_software_single_step (struct regcache *regcache)
614+{
615+// struct gdbarch *arch = get_frame_arch(frame);
616+ struct gdbarch *arch = get_regcache_arch (regcache);
617+ struct address_space *aspace = get_regcache_aspace (regcache);
618+// struct address_space *aspace = get_frame_address_space (frame);
619+ struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
620+ static char le_breakp[] = MICROBLAZE_BREAKPOINT_LE;
621+ static char be_breakp[] = MICROBLAZE_BREAKPOINT;
622+ enum bfd_endian byte_order = gdbarch_byte_order (arch);
623+ char *breakp = byte_order == BFD_ENDIAN_BIG ? be_breakp : le_breakp;
624+ std::vector<CORE_ADDR> ret = 0;
625+
626+ /* Save the address and the values of the next_pc and the target */
627+ static struct sstep_breaks
628+ {
629+ CORE_ADDR address;
630+ bfd_boolean valid;
631+ /* Shadow contents. */
632+ char data[INST_WORD_SIZE];
633+ } stepbreaks[2];
634+ int ii;
635+
636+ if (1)
637+ {
638+ CORE_ADDR pc;
639+ std::vector<CORE_ADDR> *next_pcs = NULL;
640+ long insn;
641+ enum microblaze_instr minstr;
642+ bfd_boolean isunsignednum;
643+ enum microblaze_instr_type insn_type;
644+ short delay_slots;
645+ int imm;
646+ bfd_boolean immfound = FALSE;
647+
648+ /* Set a breakpoint at the next instruction */
649+ /* If the current instruction is an imm, set it at the inst after */
650+ /* If the instruction has a delay slot, skip the delay slot */
651+ pc = regcache_read_pc (regcache);
652+ insn = microblaze_fetch_instruction (pc);
653+ minstr = get_insn_microblaze (insn, &isunsignednum, &insn_type, &delay_slots);
654+ if (insn_type == immediate_inst)
655+ {
656+ int rd, ra, rb;
657+ immfound = TRUE;
658+ minstr = microblaze_decode_insn (insn, &rd, &ra, &rb, &imm);
659+ pc = pc + INST_WORD_SIZE;
660+ insn = microblaze_fetch_instruction (pc);
661+ minstr = get_insn_microblaze (insn, &isunsignednum, &insn_type, &delay_slots);
662+ }
663+ stepbreaks[0].address = pc + (delay_slots * INST_WORD_SIZE) + INST_WORD_SIZE;
664+ if (insn_type != return_inst) {
665+ stepbreaks[0].valid = TRUE;
666+ } else {
667+ stepbreaks[0].valid = FALSE;
668+ }
669+
670+ microblaze_debug ("single-step insn_type=%x insn=%x\n", insn_type, insn);
671+ /* Now check for branch or return instructions */
672+ if (insn_type == branch_inst || insn_type == return_inst) {
673+ int limm;
674+ int lrd, lra, lrb;
675+ int ra, rb;
676+ bfd_boolean targetvalid;
677+ bfd_boolean unconditionalbranch;
678+ microblaze_decode_insn(insn, &lrd, &lra, &lrb, &limm);
679+ if (lra >= 0 && lra < MICROBLAZE_NUM_REGS)
680+ ra = regcache_raw_get_unsigned(regcache, lra);
681+ else
682+ ra = 0;
683+ if (lrb >= 0 && lrb < MICROBLAZE_NUM_REGS)
684+ rb = regcache_raw_get_unsigned(regcache, lrb);
685+ else
686+ rb = 0;
687+ stepbreaks[1].address = microblaze_get_target_address (insn, immfound, imm, pc, ra, rb, &targetvalid, &unconditionalbranch);
688+ microblaze_debug ("single-step uncondbr=%d targetvalid=%d target=%x\n", unconditionalbranch, targetvalid, stepbreaks[1].address);
689+ if (unconditionalbranch)
690+ stepbreaks[0].valid = FALSE; /* This is a unconditional branch: will not come to the next address */
691+ if (targetvalid && (stepbreaks[0].valid == FALSE ||
692+ (stepbreaks[0].address != stepbreaks[1].address))
693+ && (stepbreaks[1].address != pc)) {
694+ stepbreaks[1].valid = TRUE;
695+ } else {
696+ stepbreaks[1].valid = FALSE;
697+ }
698+ } else {
699+ stepbreaks[1].valid = FALSE;
700+ }
701+
702+ /* Insert the breakpoints */
703+ for (ii = 0; ii < 2; ++ii)
704+ {
705+
706+ /* ignore invalid breakpoint. */
707+ if (stepbreaks[ii].valid) {
708+ VEC_safe_push (CORE_ADDR, next_pcs, stepbreaks[ii].address);;
709+// insert_single_step_breakpoint (arch, aspace, stepbreaks[ii].address);
710+ ret = next_pcs;
711+ }
712+ }
713+ }
714+ return ret;
715+}
716+#endif
717+
718+static void
719+microblaze_write_pc (struct regcache *regcache, CORE_ADDR pc)
720+{
721+ regcache_cooked_write_unsigned (regcache, MICROBLAZE_PC_REGNUM, pc);
722+}
723+
724 static int dwarf2_to_reg_map[78] =
725 { 0 /* r0 */, 1 /* r1 */, 2 /* r2 */, 3 /* r3 */, /* 0- 3 */
726 4 /* r4 */, 5 /* r5 */, 6 /* r6 */, 7 /* r7 */, /* 4- 7 */
727@@ -682,13 +799,14 @@ microblaze_dwarf2_reg_to_regnum (struct
728 static void
729 microblaze_register_g_packet_guesses (struct gdbarch *gdbarch)
730 {
731+
732 register_remote_g_packet_guess (gdbarch,
733- 4 * MICROBLAZE_NUM_CORE_REGS,
734- tdesc_microblaze);
735+ 4 * MICROBLAZE_NUM_REGS,
736+ tdesc_microblaze64);
737
738 register_remote_g_packet_guess (gdbarch,
739 4 * MICROBLAZE_NUM_REGS,
740- tdesc_microblaze_with_stack_protect);
741+ tdesc_microblaze64_with_stack_protect);
742 }
743
744 void
745@@ -696,15 +814,15 @@ microblaze_supply_gregset (const struct
746 struct regcache *regcache,
747 int regnum, const void *gregs)
748 {
749- unsigned int *regs = gregs;
750+ const gdb_byte *regs = (const gdb_byte *) gregs;
751 if (regnum >= 0)
752- regcache_raw_supply (regcache, regnum, regs + regnum);
753+ regcache->raw_supply (regnum, regs + regnum);
754
755 if (regnum == -1) {
756 int i;
757
758 for (i = 0; i < 50; i++) {
759- regcache_raw_supply (regcache, i, regs + i);
760+ regcache->raw_supply (regnum, regs + i);
761 }
762 }
763 }
764@@ -755,6 +873,17 @@ microblaze_regset_from_core_section (str
765 }
766
767
768+static void
769+make_regs (struct gdbarch *arch)
770+{
771+ struct gdbarch_tdep *tdep = gdbarch_tdep (arch);
772+ int mach = gdbarch_bfd_arch_info (arch)->mach;
773+
774+ if (mach == bfd_mach_microblaze64)
775+ {
776+ set_gdbarch_ptr_bit (arch, 64);
777+ }
778+}
779
780 static struct gdbarch *
781 microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
782@@ -769,8 +898,15 @@ microblaze_gdbarch_init (struct gdbarch_
783 if (arches != NULL)
784 return arches->gdbarch;
785 if (tdesc == NULL)
786- tdesc = tdesc_microblaze;
787-
788+ {
789+ if (info.bfd_arch_info->mach == bfd_mach_microblaze64)
790+ {
791+ tdesc = tdesc_microblaze64;
792+ reg_size = 8;
793+ }
794+ else
795+ tdesc = tdesc_microblaze;
796+ }
797 /* Check any target description for validity. */
798 if (tdesc_has_registers (tdesc))
799 {
800@@ -778,27 +914,35 @@ microblaze_gdbarch_init (struct gdbarch_
801 int valid_p;
802 int i;
803
804- feature = tdesc_find_feature (tdesc,
805+ if (info.bfd_arch_info->mach == bfd_mach_microblaze64)
806+ feature = tdesc_find_feature (tdesc,
807+ "org.gnu.gdb.microblaze64.core");
808+ else
809+ feature = tdesc_find_feature (tdesc,
810 "org.gnu.gdb.microblaze.core");
811 if (feature == NULL)
812 return NULL;
813 tdesc_data = tdesc_data_alloc ();
814
815 valid_p = 1;
816- for (i = 0; i < MICROBLAZE_NUM_CORE_REGS; i++)
817+ for (i = 0; i < MICROBLAZE_NUM_REGS; i++)
818 valid_p &= tdesc_numbered_register (feature, tdesc_data, i,
819 microblaze_register_names[i]);
820- feature = tdesc_find_feature (tdesc,
821+ if (info.bfd_arch_info->mach == bfd_mach_microblaze64)
822+ feature = tdesc_find_feature (tdesc,
823+ "org.gnu.gdb.microblaze64.stack-protect");
824+ else
825+ feature = tdesc_find_feature (tdesc,
826 "org.gnu.gdb.microblaze.stack-protect");
827 if (feature != NULL)
828 {
829 valid_p = 1;
830 valid_p &= tdesc_numbered_register (feature, tdesc_data,
831 MICROBLAZE_SLR_REGNUM,
832- "rslr");
833+ "slr");
834 valid_p &= tdesc_numbered_register (feature, tdesc_data,
835 MICROBLAZE_SHR_REGNUM,
836- "rshr");
837+ "shr");
838 }
839
840 if (!valid_p)
841@@ -806,6 +950,7 @@ microblaze_gdbarch_init (struct gdbarch_
842 tdesc_data_cleanup (tdesc_data);
843 return NULL;
844 }
845+
846 }
847
848 /* Allocate space for the new architecture. */
849@@ -825,7 +970,17 @@ microblaze_gdbarch_init (struct gdbarch_
850 /* Register numbers of various important registers. */
851 set_gdbarch_sp_regnum (gdbarch, MICROBLAZE_SP_REGNUM);
852 set_gdbarch_pc_regnum (gdbarch, MICROBLAZE_PC_REGNUM);
853+
854+ /* Register set.
855+ make_regs (gdbarch); */
856+ switch (info.bfd_arch_info->mach)
857+ {
858+ case bfd_mach_microblaze64:
859+ set_gdbarch_ptr_bit (gdbarch, 64);
860+ break;
861+ }
862
863+
864 /* Map Dwarf2 registers to GDB registers. */
865 set_gdbarch_dwarf2_reg_to_regnum (gdbarch, microblaze_dwarf2_reg_to_regnum);
866
867@@ -845,13 +1000,15 @@ microblaze_gdbarch_init (struct gdbarch_
868 microblaze_breakpoint::kind_from_pc);
869 set_gdbarch_sw_breakpoint_from_kind (gdbarch,
870 microblaze_breakpoint::bp_from_kind);
871- set_gdbarch_memory_remove_breakpoint (gdbarch, microblaze_linux_memory_remove_breakpoint);
872+// set_gdbarch_memory_remove_breakpoint (gdbarch, microblaze_linux_memory_remove_breakpoint);
873+
874+// set_gdbarch_software_single_step (gdbarch, microblaze_software_single_step);
875
876 set_gdbarch_frame_args_skip (gdbarch, 8);
877
878 set_gdbarch_unwind_pc (gdbarch, microblaze_unwind_pc);
879
880- microblaze_register_g_packet_guesses (gdbarch);
881+ //microblaze_register_g_packet_guesses (gdbarch);
882
883 frame_base_set_default (gdbarch, &microblaze_frame_base);
884
885@@ -866,11 +1023,11 @@ microblaze_gdbarch_init (struct gdbarch_
886 tdesc_use_registers (gdbarch, tdesc, tdesc_data);
887 //frame_base_append_sniffer (gdbarch, microblaze_frame_sniffer);
888
889- /* If we have register sets, enable the generic core file support. */
890+ /* If we have register sets, enable the generic core file support.
891 if (tdep->gregset) {
892 set_gdbarch_regset_from_core_section (gdbarch,
893 microblaze_regset_from_core_section);
894- }
895+ }*/
896
897 return gdbarch;
898 }
899@@ -882,6 +1039,8 @@ _initialize_microblaze_tdep (void)
900
901 initialize_tdesc_microblaze_with_stack_protect ();
902 initialize_tdesc_microblaze ();
903+ initialize_tdesc_microblaze64_with_stack_protect ();
904+ initialize_tdesc_microblaze64 ();
905 /* Debug this files internals. */
906 add_setshow_zuinteger_cmd ("microblaze", class_maintenance,
907 &microblaze_debug_flag, _("\
908Index: gdb-9.2/gdb/microblaze-tdep.h
909===================================================================
910--- gdb-9.2.orig/gdb/microblaze-tdep.h
911+++ gdb-9.2/gdb/microblaze-tdep.h
912@@ -27,7 +27,7 @@ struct microblaze_gregset
913 microblaze_gregset() {}
914 unsigned int gregs[32];
915 unsigned int fpregs[32];
916- unsigned int pregs[16];
917+ unsigned int pregs[18];
918 };
919
920 struct gdbarch_tdep
921@@ -101,9 +101,9 @@ enum microblaze_regnum
922 MICROBLAZE_RTLBSX_REGNUM,
923 MICROBLAZE_RTLBLO_REGNUM,
924 MICROBLAZE_RTLBHI_REGNUM,
925- MICROBLAZE_SLR_REGNUM, MICROBLAZE_NUM_CORE_REGS = MICROBLAZE_SLR_REGNUM,
926+ MICROBLAZE_SLR_REGNUM,
927 MICROBLAZE_SHR_REGNUM,
928- MICROBLAZE_NUM_REGS
929+ MICROBLAZE_NUM_REGS, MICROBLAZE_NUM_CORE_REGS = MICROBLAZE_NUM_REGS
930 };
931
932 struct microblaze_frame_cache
933@@ -128,7 +128,7 @@ struct microblaze_frame_cache
934 struct trad_frame_saved_reg *saved_regs;
935 };
936 /* All registers are 32 bits. */
937-#define MICROBLAZE_REGISTER_SIZE 4
938+//#define MICROBLAZE_REGISTER_SIZE 8
939
940 /* MICROBLAZE_BREAKPOINT defines the breakpoint that should be used.
941 Only used for native debugging. */
942Index: gdb-9.2/gdb/regformats/microblaze-with-stack-protect.dat
943===================================================================
944--- gdb-9.2.orig/gdb/regformats/microblaze-with-stack-protect.dat
945+++ gdb-9.2/gdb/regformats/microblaze-with-stack-protect.dat
946@@ -60,5 +60,5 @@ expedite:r1,rpc
947 32:rtlbsx
948 32:rtlblo
949 32:rtlbhi
950-32:rslr
951-32:rshr
952+32:slr
953+32:shr