1 1.1 christos /* 2 1.1 christos * Blackfin testcase for testing illegal/legal 64-bit opcodes (group 1) 3 1.1 christos * from userspace. we track all instructions which cause some sort of 4 1.1 christos * exception when run from userspace, this is normally EXCAUSE : 5 1.1 christos * - 0x22 : illegal instruction combination 6 1.1 christos * and walk every instruction from 0x0000 to 0xffff 7 1.1 christos */ 8 1.1 christos 9 1.1 christos # mach: bfin 10 1.1 christos # sim: --environment operating 11 1.1 christos 12 1.1 christos #include "test.h" 13 1.1 christos .include "testutils.inc" 14 1.1 christos 15 1.1 christos #define SE_ALL_BITS 16 16 1.1 christos #include "se_allopcodes.h" 17 1.1 christos 18 1.1 christos .macro se_all_load_insn 19 1.1 christos R2 = W[P5 + 4]; 20 1.1 christos R0 = R2; 21 1.1 christos .endm 22 1.1 christos 23 1.1 christos .macro se_all_next_insn 24 1.1 christos /* increment, and go again. */ 25 1.1 christos R0 = R2; 26 1.1 christos 27 1.1 christos R0 += 1; 28 1.1 christos /* finish once we hit the 32bit limit */ 29 1.1 christos imm32 R1, 0x10000; 30 1.1 christos CC = R1 == R0; 31 1.1 christos IF CC JUMP pass_lvl; 32 1.1 christos 33 1.1 christos W[P5 + 4] = R0; 34 1.1 christos .endm 35 1.1 christos 36 1.1 christos .macro se_all_insn_init 37 1.1 christos MNOP || NOP || NOP; 38 1.1 christos .endm 39 1.1 christos .macro se_all_insn_table 40 1.1 christos /* this table must be sorted, and end with zero */ 41 1.1 christos /* start end SEQSTAT */ 42 1.1 christos .dw 0x0001, 0x7fff, 0x22 43 1.1 christos .dw 0x9040, 0x9040, 0x22 44 1.1 christos .dw 0x9049, 0x9049, 0x22 45 1.1 christos .dw 0x9052, 0x9052, 0x22 46 1.1 christos .dw 0x905b, 0x905b, 0x22 47 1.1 christos .dw 0x9064, 0x9064, 0x22 48 1.1 christos .dw 0x906d, 0x906d, 0x22 49 1.1 christos .dw 0x9076, 0x9076, 0x22 50 1.1 christos .dw 0x907f, 0x907f, 0x22 51 1.1 christos .dw 0x90c0, 0x90c0, 0x22 52 1.1 christos .dw 0x90c9, 0x90c9, 0x22 53 1.1 christos .dw 0x90d2, 0x90d2, 0x22 54 1.1 christos .dw 0x90db, 0x90db, 0x22 55 1.1 christos .dw 0x90e4, 0x90e4, 0x22 56 1.1 christos .dw 0x90ed, 0x90ed, 0x22 57 1.1 christos .dw 0x90f6, 0x90f6, 0x22 58 1.1 christos .dw 0x90ff, 0x90ff, 0x22 59 1.1 christos .dw 0x9180, 0x91ff, 0x22 60 1.1 christos .dw 0x9380, 0x93ff, 0x22 61 1.1 christos .dw 0x9580, 0x95ff, 0x22 62 1.1 christos .dw 0x9640, 0x967f, 0x22 63 1.1 christos .dw 0x96c0, 0x96ff, 0x22 64 1.1 christos .dw 0x9740, 0x97ff, 0x22 65 1.1 christos .dw 0x9980, 0x99ff, 0x22 66 1.1 christos .dw 0x9a40, 0x9a7f, 0x22 67 1.1 christos .dw 0x9ac0, 0x9aff, 0x22 68 1.1 christos .dw 0x9b40, 0x9bff, 0x22 69 1.1 christos .dw 0x9c60, 0x9c7f, 0x22 70 1.1 christos .dw 0x9ce0, 0x9cff, 0x22 71 1.1 christos .dw 0x9d60, 0x9d7f, 0x22 72 1.1 christos .dw 0x9ef0, 0x9eff, 0x22 73 1.1 christos .dw 0x9f70, 0x9f7f, 0x22 74 1.1 christos .dw 0xc000, 0xffff, 0x22 75 1.1 christos .dw 0x0000, 0x0000, 0x00 76 1.1 christos .endm 77 1.1 christos 78 1.1 christos se_all_test 79