aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2012-04-09 03:42:43 +0000
committerMike Frysinger <vapier@gentoo.org>2012-04-09 03:42:43 +0000
commit8faad9bd0f2d55b33a718bd950982439deca6c03 (patch)
treeddd055c60dbb0e9b509b6251836a24f5e19ba4ca /sim
parent6aa0db85fbaedf8ad38f900fb16fbf771783d4b5 (diff)
downloadgdb-8faad9bd0f2d55b33a718bd950982439deca6c03.zip
gdb-8faad9bd0f2d55b33a718bd950982439deca6c03.tar.gz
gdb-8faad9bd0f2d55b33a718bd950982439deca6c03.tar.bz2
sim: bfin: unify se_all helpers more
Now that we have the se_all helpers together and working, we can see what pieces are duplicated in each test and unify them in the common header file. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'sim')
-rw-r--r--sim/testsuite/sim/bfin/ChangeLog22
-rw-r--r--sim/testsuite/sim/bfin/se_all16bitopcodes.S11
-rw-r--r--sim/testsuite/sim/bfin/se_all32bitopcodes.S18
-rw-r--r--sim/testsuite/sim/bfin/se_all64bitg0opcodes.S8
-rw-r--r--sim/testsuite/sim/bfin/se_all64bitg1opcodes.S6
-rw-r--r--sim/testsuite/sim/bfin/se_all64bitg2opcodes.S6
-rw-r--r--sim/testsuite/sim/bfin/se_allopcodes.h47
7 files changed, 64 insertions, 54 deletions
diff --git a/sim/testsuite/sim/bfin/ChangeLog b/sim/testsuite/sim/bfin/ChangeLog
index fa3aa11..4efd6d3 100644
--- a/sim/testsuite/sim/bfin/ChangeLog
+++ b/sim/testsuite/sim/bfin/ChangeLog
@@ -1,3 +1,25 @@
+2012-04-08 Mike Frysinger <vapier@gentoo.org>
+
+ * se_all16bitopcodes.S (SE_ALL_BITS): Define to 16.
+ (SE_ALL_NEW_INSN_STUB): Define.
+ (se_all_load_table): Delete.
+ (se_all_new_insn_log): Likewise.
+ * se_all32bitopcodes.S: Add more details on slowness.
+ (SE_ALL_BITS): Define to 13.
+ (se_all_load_table): Delete.
+ (se_all_new_insn_stub, se_all_new_insn_log): Likewise.
+ * se_all64bitg0opcodes.S: Add more details on slowness.
+ (se_all_new_insn_stub): Delete.
+ * se_all64bitg1opcodes.S: See mach to bfin.
+ (se_all_new_insn_stub): Delete.
+ * se_all64bitg2opcodes.S: See mach to bfin.
+ (se_all_new_insn_stub): Delete.
+ * se_allopcodes.h (LOAD_PFX): Define based on SE_ALL_BITS.
+ (se_all_new_16bit_insn_log, se_all_new_32bit_insn_log): Unify
+ into new se_all_new_insn_log helper.
+ (se_all_load_table): New helper.
+ (se_all_new_insn_stub): Likewise.
+
2012-03-25 Mike Frysinger <vapier@gentoo.org>
* c_dsp32mac_dr_a1a0.s: Change 0x12efbc5569 to 0xefbc5569.
diff --git a/sim/testsuite/sim/bfin/se_all16bitopcodes.S b/sim/testsuite/sim/bfin/se_all16bitopcodes.S
index 6a6d76c..042621e 100644
--- a/sim/testsuite/sim/bfin/se_all16bitopcodes.S
+++ b/sim/testsuite/sim/bfin/se_all16bitopcodes.S
@@ -12,6 +12,9 @@
# sim: --environment operating
#include "test.h"
+
+#define SE_ALL_BITS 16
+#define SE_ALL_NEW_INSN_STUB
#include "se_allopcodes.h"
.include "testutils.inc"
@@ -19,11 +22,6 @@
R2 = W[P5];
R0 = R2;
.endm
-.macro se_all_load_table
- R7 = W[P1++];
- R6 = W[P1++];
- R5 = W[P1++];
-.endm
.macro se_all_next_insn
/* increment, and go again. */
@@ -41,9 +39,6 @@
.macro se_all_new_insn_stub
jump _legal_instruction;
.endm
-.macro se_all_new_insn_log
- se_all_new_16bit_insn_log
-.endm
.macro se_all_insn_init
.dw 0x0000;
diff --git a/sim/testsuite/sim/bfin/se_all32bitopcodes.S b/sim/testsuite/sim/bfin/se_all32bitopcodes.S
index 90b1ff6..6178e52 100644
--- a/sim/testsuite/sim/bfin/se_all32bitopcodes.S
+++ b/sim/testsuite/sim/bfin/se_all32bitopcodes.S
@@ -8,12 +8,16 @@
* and walk every instruction from 0x00000000 to 0xffffffff (and have 0xc000 set)
*/
-# don't try to run normally as it takes way too long in sim
+# Don't want to enable for normal `make check` as it takes way too long in
+# the sim -- executes over 3 billion insns, and even at 10 MIPS, that's 10+
+# minutes :(. Useful for directed testing, but that's about it.
# mach: none
# sim: --environment operating
# xfail: too many invalid insns are decoded as valid
#include "test.h"
+
+#define SE_ALL_BITS 32
#include "se_allopcodes.h"
.include "testutils.inc"
@@ -23,11 +27,6 @@
R1 = R2 >> 16;
R0 = R0 | R1;
.endm
-.macro se_all_load_table
- R7 = [P1++];
- R6 = [P1++];
- R5 = [P1++];
-.endm
.macro se_all_next_insn
/* increment, and go again. */
@@ -68,13 +67,6 @@
[P5] = R0;
.endm
-.macro se_all_new_insn_stub
- jump fail_lvl;
-.endm
-.macro se_all_new_insn_log
- se_all_new_32bit_insn_log
-.endm
-
.macro se_all_insn_init
.dw 0xc000;
.dw 0x0000;
diff --git a/sim/testsuite/sim/bfin/se_all64bitg0opcodes.S b/sim/testsuite/sim/bfin/se_all64bitg0opcodes.S
index dee8037..9e08afe 100644
--- a/sim/testsuite/sim/bfin/se_all64bitg0opcodes.S
+++ b/sim/testsuite/sim/bfin/se_all64bitg0opcodes.S
@@ -7,7 +7,9 @@
* (and have 0x8000000 set)
*/
-# don't try to run normally as it takes way too long in sim
+# Don't want to enable for normal `make check` as it takes way too long in
+# the sim -- executes over 3 billion insns, and even at 10 MIPS, that's 10+
+# minutes :(. Useful for directed testing, but that's about it.
# mach: none
# sim: --environment operating
# xfail: too many invalid insns are decoded as valid
@@ -64,10 +66,6 @@
[P5] = R0;
.endm
-.macro se_all_new_insn_stub
- jump fail_lvl;
-.endm
-
.macro se_all_insn_init
.dw 0xc800; /* 32bit */
.dw 0x0000; /* insn */
diff --git a/sim/testsuite/sim/bfin/se_all64bitg1opcodes.S b/sim/testsuite/sim/bfin/se_all64bitg1opcodes.S
index ec4d145..b3b47f8 100644
--- a/sim/testsuite/sim/bfin/se_all64bitg1opcodes.S
+++ b/sim/testsuite/sim/bfin/se_all64bitg1opcodes.S
@@ -6,7 +6,7 @@
* and walk every instruction from 0x0000 to 0xffff
*/
-# mach: none
+# mach: bfin
# sim: --environment operating
# xfail: wrong excause (0x21 instead of 0x22)
@@ -34,10 +34,6 @@
W[P5 + 4] = R0;
.endm
-.macro se_all_new_insn_stub
- jump fail_lvl;
-.endm
-
.macro se_all_insn_init
MNOP || NOP || NOP;
.endm
diff --git a/sim/testsuite/sim/bfin/se_all64bitg2opcodes.S b/sim/testsuite/sim/bfin/se_all64bitg2opcodes.S
index 68c16c6..6ec8aec 100644
--- a/sim/testsuite/sim/bfin/se_all64bitg2opcodes.S
+++ b/sim/testsuite/sim/bfin/se_all64bitg2opcodes.S
@@ -6,7 +6,7 @@
* and walk every instruction from 0x0000 to 0xffff
*/
-# mach: none
+# mach: bfin
# sim: --environment operating
# xfail: wrong excause (0x21 instead of 0x22)
@@ -34,10 +34,6 @@
W[P5 + 6] = R0;
.endm
-.macro se_all_new_insn_stub
- jump fail_lvl;
-.endm
-
.macro se_all_insn_init
MNOP || NOP || NOP;
.endm
diff --git a/sim/testsuite/sim/bfin/se_allopcodes.h b/sim/testsuite/sim/bfin/se_allopcodes.h
index 2e45673..7ff8d2b 100644
--- a/sim/testsuite/sim/bfin/se_allopcodes.h
+++ b/sim/testsuite/sim/bfin/se_allopcodes.h
@@ -10,6 +10,14 @@
b0 = r0; b1 = r0; b2 = r0; b3 = r0;
.endm
+#if SE_ALL_BITS == 32
+# define LOAD_PFX
+#elif SE_ALL_BITS == 16
+# define LOAD_PFX W
+#else
+# error "Please define SE_ALL_BITS"
+#endif
+
/*
* execute a test of an opcode space. host test
* has to fill out a number of callbacks.
@@ -176,36 +184,39 @@ _table:
_table_end:
.endm
-.macro se_all_new_16bit_insn_log
-.ifdef BFIN_JTAG_xxxxx
- R1 = R0;
- R0 = 0x4;
- call __emu_out;
- R0 = R1 << 16;
- R0 = R0 | R3;
- call __emu_out;
-.else
- loadsym P0, _next_location;
- P1 = [P0];
- W[P1++] = R0;
- W[P1++] = R3;
- [P0] = P1;
-.endif
+.macro se_all_load_table
+ R7 = LOAD_PFX[P1++];
+ R6 = LOAD_PFX[P1++];
+ R5 = LOAD_PFX[P1++];
+.endm
+
+#ifndef SE_ALL_NEW_INSN_STUB
+.macro se_all_new_insn_stub
+ jump fail_lvl;
.endm
-.macro se_all_new_32bit_insn_log
+#endif
+
+.macro se_all_new_insn_log
.ifdef BFIN_JTAG_xxxxx
R1 = R0;
+#if SE_ALL_BITS == 32
R0 = 0x8;
call __emu_out;
R0 = R1;
call __emu_out;
R0 = R3;
+#else
+ R0 = 0x4;
+ call __emu_out;
+ R0 = R1 << 16;
+ R0 = R0 | R3;
+#endif
call __emu_out;
.else
loadsym P0, _next_location;
P1 = [P0];
- [P1++] = R0;
- [P1++] = R3;
+ LOAD_PFX[P1++] = R0;
+ LOAD_PFX[P1++] = R3;
[P0] = P1;
.endif
.endm