summaryrefslogtreecommitdiff
path: root/tools/4.11/gdb/sparc/7.9/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch
diff options
context:
space:
mode:
Diffstat (limited to 'tools/4.11/gdb/sparc/7.9/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch')
-rw-r--r--tools/4.11/gdb/sparc/7.9/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch61
1 files changed, 61 insertions, 0 deletions
diff --git a/tools/4.11/gdb/sparc/7.9/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch b/tools/4.11/gdb/sparc/7.9/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch
new file mode 100644
index 0000000..e48ff75
--- /dev/null
+++ b/tools/4.11/gdb/sparc/7.9/0001-sim-erc32-Disassembly-in-stand-alone-mode-did-not-wo.patch
@@ -0,0 +1,61 @@
+From 723f3af6060ee39c89f2b79954a39c7bdee39f99 Mon Sep 17 00:00:00 2001
+From: Jiri Gaisler <jiri@gaisler.se>
+Date: Sat, 30 Aug 2014 22:40:25 +0200
+Subject: [PATCH 01/23] sim/erc32: Disassembly in stand-alone mode did not
+ work.
+
+ The API to print_insn_sparc() has changed over the years ...
+
+ * func.c (print_insn_sparc_sis) Add helper function for disassembly.
+ (disp_ctrl) Use helper function.
+---
+ sim/erc32/func.c | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/sim/erc32/func.c b/sim/erc32/func.c
+index d001c58..e6744ee 100644
+--- a/sim/erc32/func.c
++++ b/sim/erc32/func.c
+@@ -759,6 +759,17 @@ disp_regs(sregs,cwp)
+ }
+ }
+
++static void print_insn_sparc_sis(uint32 addr, struct disassemble_info *info)
++{
++ unsigned char i[4];
++
++ sis_memory_read(addr, i, 4);
++ dinfo.buffer_vma = addr;
++ dinfo.buffer_length = 4;
++ dinfo.buffer = i;
++ print_insn_sparc(addr, info);
++}
++
+ static void
+ disp_ctrl(sregs)
+ struct pstate *sregs;
+@@ -770,10 +781,10 @@ disp_ctrl(sregs)
+ sregs->psr, sregs->wim, sregs->tbr, sregs->y);
+ sis_memory_read(sregs->pc, i, 4);
+ printf("\n pc: %08X = %02X%02X%02X%02X ", sregs->pc,i[0],i[1],i[2],i[3]);
+- print_insn_sparc(sregs->pc, &dinfo);
++ print_insn_sparc_sis(sregs->pc, &dinfo);
+ sis_memory_read(sregs->npc, i, 4);
+ printf("\n npc: %08X = %02X%02X%02X%02X ",sregs->npc,i[0],i[1],i[2],i[3]);
+- print_insn_sparc(sregs->npc, &dinfo);
++ print_insn_sparc_sis(sregs->npc, &dinfo);
+ if (sregs->err_mode)
+ printf("\n IU in error mode");
+ printf("\n\n");
+@@ -821,7 +832,7 @@ dis_mem(addr, len, info)
+ for (i = addr & -3; i < ((addr & -3) + (len << 2)); i += 4) {
+ sis_memory_read(i, data, 4);
+ printf(" %08x %02x%02x%02x%02x ", i, data[0],data[1],data[2],data[3]);
+- print_insn_sparc(i, info);
++ print_insn_sparc_sis(i, info);
+ if (i >= 0xfffffffc) break;
+ printf("\n");
+ }
+--
+1.9.1
+