Home | History | Annotate | Line # | Download | only in bfin
      1 /*
      2  * Blackfin testcase for testing illegal/legal 64-bit opcodes (group 2)
      3  * from userspace.  we track all instructions which cause some sort of
      4  * exception when run from userspace, this is normally EXCAUSE :
      5  *  - 0x22 : illegal instruction combination
      6  * and walk every instruction from 0x0000 to 0xffff
      7  */
      8 
      9 # mach: bfin
     10 # sim: --environment operating
     11 
     12 #include "test.h"
     13 	.include "testutils.inc"
     14 
     15 #define SE_ALL_BITS 16
     16 #include "se_allopcodes.h"
     17 
     18 .macro se_all_load_insn
     19 	R2 = W[P5 + 6];
     20 	R0 = R2;
     21 .endm
     22 
     23 .macro se_all_next_insn
     24 	/* increment, and go again. */
     25 	R0 = R2;
     26 
     27 	R0 += 1;
     28 	/* finish once we hit the 32bit limit */
     29 	imm32 R1, 0x10000;
     30 	CC = R1 == R0;
     31 	IF CC JUMP pass_lvl;
     32 
     33 	W[P5 + 6] = R0;
     34 .endm
     35 
     36 .macro se_all_insn_init
     37 	MNOP || NOP || NOP;
     38 .endm
     39 .macro se_all_insn_table
     40 	/* this table must be sorted, and end with zero */
     41 	/* start	end		SEQSTAT */
     42 	.dw 0x0001,	0x9bff,		0x22
     43 	.dw 0x9c60,	0x9c7f,		0x22
     44 	.dw 0x9ce0,	0x9cff,		0x22
     45 	.dw 0x9d60,	0x9d7f,		0x22
     46 	.dw 0x9e60,	0x9e7f,		0x22
     47 	.dw 0x9ee0,	0x9eff,		0x22
     48 	.dw 0x9f60,	0x9f7f,		0x22
     49 	.dw 0xa000,	0xffff,		0x22
     50 	.dw 0x0000,	0x0000,		0x00
     51 .endm
     52 
     53 	se_all_test
     54