summaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2013-06-17 04:47:25 +0000
committerMike Frysinger <vapier@gentoo.org>2013-06-17 04:47:25 +0000
commit10b69d8264d23e4f2133a73f880655f06a3f604c (patch)
tree969871c932d34f82a05ebe236aa1487c828fed70 /sim
parentaba6da4e2b62f0caec9f9d6d1adf47c4c8401466 (diff)
downloadgdb-10b69d8264d23e4f2133a73f880655f06a3f604c.tar.gz
sim: bfin: add helpful info for generating test tables
Diffstat (limited to 'sim')
-rw-r--r--sim/testsuite/sim/bfin/ChangeLog4
-rw-r--r--sim/testsuite/sim/bfin/se_allopcodes.h19
2 files changed, 23 insertions, 0 deletions
diff --git a/sim/testsuite/sim/bfin/ChangeLog b/sim/testsuite/sim/bfin/ChangeLog
index 753affcd0aa..a6344949b13 100644
--- a/sim/testsuite/sim/bfin/ChangeLog
+++ b/sim/testsuite/sim/bfin/ChangeLog
@@ -1,5 +1,9 @@
2013-06-17 Mike Frysinger <vapier@gentoo.org>
+ * se_allopcodes.h: Add debugging related comments.
+
+2013-06-17 Mike Frysinger <vapier@gentoo.org>
+
* se_allopcodes.h: Do not clear RETN/RETE/RETI.
2012-04-09 Robin Getz <robin.getz@analog.com>
diff --git a/sim/testsuite/sim/bfin/se_allopcodes.h b/sim/testsuite/sim/bfin/se_allopcodes.h
index b49862a7b9b..8f961259abf 100644
--- a/sim/testsuite/sim/bfin/se_allopcodes.h
+++ b/sim/testsuite/sim/bfin/se_allopcodes.h
@@ -129,6 +129,25 @@ _match_done:
jump _next_instruction;
_new_instruction:
+ /* The table is generated in memory and can be extracted:
+ (gdb) dump binary memory bin &table next_location
+
+ 16bit:
+ $ od -j6 -x --width=4 bin | \
+ awk '{ s=last; e=strtonum("0x"$2); \
+ printf "\t.dw 0x%04x,\t0x%04x,\t\t0x%02x\n", \
+ s, e-1, strtonum("0x"seq); \
+ last=e; seq=$3}'
+
+ 32bit:
+ $ od -j12 -x --width=8 bin | \
+ awk '{ s=last; e=strtonum("0x"$3$2); \
+ printf "\t.dw 0x%04x, 0x%04x,\t0x%04x, 0x%04x,\t\t0x%02x, 0\n", \
+ and(s,0xffff), rshift(s,16), and(e-1,0xffff), rshift(e-1,16), \
+ strtonum("0x"seq); \
+ last=e; seq=$3}'
+
+ This should be much faster than dumping over serial/jtag. */
se_all_new_insn_stub
/* output the insn (R0) and excause (R3) if diff from last */