| Index: sim/testsuite/sim/bfin/se_allopcodes.h
|
| diff --git a/sim/testsuite/sim/bfin/se_allopcodes.h b/sim/testsuite/sim/bfin/se_allopcodes.h
|
| index 7ff8d2b9fa0b55d1e6877236de8b06314128386e..796d5c4e62b467410172bcafeebf42694032a14d 100644
|
| --- a/sim/testsuite/sim/bfin/se_allopcodes.h
|
| +++ b/sim/testsuite/sim/bfin/se_allopcodes.h
|
| @@ -102,8 +102,7 @@ _match:
|
| se_all_load_table
|
|
|
| /* is this the end of the table? */
|
| - R4 = 0;
|
| - CC = R4 == R7;
|
| + CC = R7 == 0;
|
| IF CC jump _new_instruction;
|
|
|
| /* is the opcode (R0) greater than the 2nd entry in the table (R6) */
|
| @@ -129,6 +128,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 */
|
| @@ -149,8 +167,10 @@ _legal_instruction:
|
| _next_instruction:
|
| se_all_next_insn
|
|
|
| +.ifdef BFIN_JTAG
|
| /* Make sure the opcode isn't in a write buffer */
|
| SSYNC;
|
| +.endif
|
|
|
| R1 = P5;
|
| RETX = R1;
|
| @@ -158,9 +178,6 @@ _next_instruction:
|
| /* set up pointers to valid data (32Meg), to reduce address violations */
|
| reset_dags
|
| RETS = r0;
|
| - RETN = r0;
|
| - RETE = r0;
|
| - RETI = r0;
|
|
|
| RTX;
|
|
|
|
|