diff options
Diffstat (limited to 'sim/testsuite/bfin/se_all64bitg2opcodes.S')
-rw-r--r-- | sim/testsuite/bfin/se_all64bitg2opcodes.S | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/sim/testsuite/bfin/se_all64bitg2opcodes.S b/sim/testsuite/bfin/se_all64bitg2opcodes.S new file mode 100644 index 0000000..99de3ac --- /dev/null +++ b/sim/testsuite/bfin/se_all64bitg2opcodes.S @@ -0,0 +1,53 @@ +/* + * Blackfin testcase for testing illegal/legal 64-bit opcodes (group 2) + * from userspace. we track all instructions which cause some sort of + * exception when run from userspace, this is normally EXCAUSE : + * - 0x22 : illegal instruction combination + * and walk every instruction from 0x0000 to 0xffff + */ + +# mach: bfin +# sim: --environment operating + +#include "test.h" + .include "testutils.inc" + +#define SE_ALL_BITS 16 +#include "se_allopcodes.h" + +.macro se_all_load_insn + R2 = W[P5 + 6]; + R0 = R2; +.endm + +.macro se_all_next_insn + /* increment, and go again. */ + R0 = R2; + + R0 += 1; + /* finish once we hit the 32bit limit */ + imm32 R1, 0x10000; + CC = R1 == R0; + IF CC JUMP pass_lvl; + + W[P5 + 6] = R0; +.endm + +.macro se_all_insn_init + MNOP || NOP || NOP; +.endm +.macro se_all_insn_table + /* this table must be sorted, and end with zero */ + /* start end SEQSTAT */ + .dw 0x0001, 0x9bff, 0x22 + .dw 0x9c60, 0x9c7f, 0x22 + .dw 0x9ce0, 0x9cff, 0x22 + .dw 0x9d60, 0x9d7f, 0x22 + .dw 0x9e60, 0x9e7f, 0x22 + .dw 0x9ee0, 0x9eff, 0x22 + .dw 0x9f60, 0x9f7f, 0x22 + .dw 0xa000, 0xffff, 0x22 + .dw 0x0000, 0x0000, 0x00 +.endm + + se_all_test |