Home | History | Annotate | Line # | Download | only in bfin
      1 /*
      2  * Blackfin testcase for testing illegal/legal 64-bit opcodes (group 1)
      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 + 4];
     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 + 4] = 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,	0x7fff,		0x22
     43 	.dw 0x9040,	0x9040,		0x22
     44 	.dw 0x9049,	0x9049,		0x22
     45 	.dw 0x9052,	0x9052,		0x22
     46 	.dw 0x905b,	0x905b,		0x22
     47 	.dw 0x9064,	0x9064,		0x22
     48 	.dw 0x906d,	0x906d,		0x22
     49 	.dw 0x9076,	0x9076,		0x22
     50 	.dw 0x907f,	0x907f,		0x22
     51 	.dw 0x90c0,	0x90c0,		0x22
     52 	.dw 0x90c9,	0x90c9,		0x22
     53 	.dw 0x90d2,	0x90d2,		0x22
     54 	.dw 0x90db,	0x90db,		0x22
     55 	.dw 0x90e4,	0x90e4,		0x22
     56 	.dw 0x90ed,	0x90ed,		0x22
     57 	.dw 0x90f6,	0x90f6,		0x22
     58 	.dw 0x90ff,	0x90ff,		0x22
     59 	.dw 0x9180,	0x91ff,		0x22
     60 	.dw 0x9380,	0x93ff,		0x22
     61 	.dw 0x9580,	0x95ff,		0x22
     62 	.dw 0x9640,	0x967f,		0x22
     63 	.dw 0x96c0,	0x96ff,		0x22
     64 	.dw 0x9740,	0x97ff,		0x22
     65 	.dw 0x9980,	0x99ff,		0x22
     66 	.dw 0x9a40,	0x9a7f,		0x22
     67 	.dw 0x9ac0,	0x9aff,		0x22
     68 	.dw 0x9b40,	0x9bff,		0x22
     69 	.dw 0x9c60,	0x9c7f,		0x22
     70 	.dw 0x9ce0,	0x9cff,		0x22
     71 	.dw 0x9d60,	0x9d7f,		0x22
     72 	.dw 0x9ef0,	0x9eff,		0x22
     73 	.dw 0x9f70,	0x9f7f,		0x22
     74 	.dw 0xc000,	0xffff,		0x22
     75 	.dw 0x0000,	0x0000,		0x00
     76 .endm
     77 
     78 	se_all_test
     79