350 lines
8.9 KiB
ArmAsm
350 lines
8.9 KiB
ArmAsm
/*
|
|
* Blackfin testcase for testing illegal/legal 16-bit opcodes from userspace
|
|
* we track all instructions which cause some sort of exception when run from
|
|
* userspace, this is normally EXCAUSE :
|
|
* - 0x21 : illegal instruction
|
|
* - 0x22 : illegal instruction combination
|
|
* - 0x2e : use of supervisor resource from userspace
|
|
* and walk every instruction from 0x0000 to 0xbfff
|
|
*/
|
|
|
|
# mach: bfin
|
|
# sim: --environment operating
|
|
|
|
#include "test.h"
|
|
|
|
#define SE_ALL_BITS 16
|
|
#define SE_ALL_NEW_INSN_STUB
|
|
#include "se_allopcodes.h"
|
|
.include "testutils.inc"
|
|
|
|
.macro se_all_load_insn
|
|
R2 = W[P5];
|
|
R0 = R2;
|
|
.endm
|
|
|
|
.macro se_all_next_insn
|
|
/* increment, and go again. */
|
|
R0 = R2;
|
|
|
|
R0 += 1;
|
|
/* finish once we hit the 32bit limit */
|
|
R1 = 0xC000 (Z);
|
|
CC = R1 == R0;
|
|
IF CC JUMP pass_lvl;
|
|
|
|
W[P5] = R0;
|
|
.endm
|
|
|
|
.macro se_all_new_insn_stub
|
|
jump _legal_instruction;
|
|
.endm
|
|
|
|
.macro se_all_insn_init
|
|
.dw 0x0000;
|
|
.endm
|
|
.macro se_all_insn_table
|
|
/* this table must be sorted, and end with zero */
|
|
/* start end SEQSTAT */
|
|
.dw 0x0001, 0x000f, 0x21
|
|
.dw 0x0011, 0x0013, 0x2e
|
|
.ifndef BFIN_JTAG
|
|
.dw 0x0014, 0x0014, 0x2e /* anomaly - RTX works when emulator attached */
|
|
.endif
|
|
.dw 0x0015, 0x001F, 0x21
|
|
.dw 0x0021, 0x0022, 0x21
|
|
.dw 0x0026, 0x0026, 0x21
|
|
.ifndef BFIN_JTAG
|
|
.dw 0x0027, 0x0027, 0x21 /* anomaly 492 - unknown */
|
|
.endif
|
|
.dw 0x0028, 0x002F, 0x21
|
|
.dw 0x0030, 0x0037, 0x2e
|
|
.dw 0x0038, 0x003F, 0x21
|
|
.dw 0x0040, 0x0047, 0x2e
|
|
.dw 0x0048, 0x004F, 0x21
|
|
.dw 0x0058, 0x005F, 0x21
|
|
.dw 0x0068, 0x006F, 0x21
|
|
.dw 0x0078, 0x007F, 0x21
|
|
.dw 0x0088, 0x008F, 0x21
|
|
.dw 0x0090, 0x009F, 0x2E
|
|
.dw 0x00a0, 0x00a0, 0x00
|
|
.dw 0x00a1, 0x00a1, 0x01
|
|
.dw 0x00a2, 0x00a2, 0x02
|
|
.dw 0x00a3, 0x00a3, 0x03
|
|
.dw 0x00a4, 0x00a4, 0x04
|
|
.dw 0x00a5, 0x00a5, 0x05
|
|
.dw 0x00a6, 0x00a6, 0x06
|
|
.dw 0x00a7, 0x00a7, 0x07
|
|
.dw 0x00a8, 0x00a8, 0x08
|
|
.dw 0x00a9, 0x00a9, 0x09
|
|
.dw 0x00aa, 0x00aa, 0x0a
|
|
.dw 0x00ab, 0x00ab, 0x0b
|
|
.dw 0x00ac, 0x00ac, 0x0c
|
|
.dw 0x00ad, 0x00ad, 0x0d
|
|
.dw 0x00ae, 0x00ae, 0x0e
|
|
.dw 0x00af, 0x00af, 0x0f
|
|
.dw 0x00b6, 0x010f, 0x21
|
|
.dw 0x0124, 0x0124, 0x21
|
|
.ifndef BFIN_JTAG
|
|
.dw 0x0125, 0x0125, 0x21 /* anomaly 492 res = [SP++] */
|
|
.endif
|
|
.dw 0x0128, 0x012F, 0x21
|
|
.dw 0x0138, 0x0138, 0x22
|
|
.dw 0x0139, 0x013F, 0x2E
|
|
.dw 0x0164, 0x0164, 0x21
|
|
.ifndef BFIN_JTAG
|
|
.dw 0x0165, 0x0165, 0x21 /* anomaly 492 [--SP] = res */
|
|
.endif
|
|
.dw 0x0168, 0x016F, 0x21
|
|
.dw 0x0178, 0x017F, 0x2E
|
|
.dw 0x0180, 0x01FF, 0x21
|
|
.dw 0x0210, 0x0217, 0x21
|
|
.ifndef BFIN_JTAG
|
|
.dw 0x0219, 0x021F, 0x21 /* anomaly 492 CC = !CC opcode is 0000 0010 0001 1xxx */
|
|
.endif
|
|
.dw 0x0220, 0x023F, 0x21
|
|
.dw 0x0280, 0x02FF, 0x21
|
|
.dw 0x0305, 0x0305, 0x21
|
|
.dw 0x0325, 0x0325, 0x21
|
|
.dw 0x0345, 0x0345, 0x21
|
|
.dw 0x0365, 0x0365, 0x21
|
|
.dw 0x0385, 0x0385, 0x21
|
|
.dw 0x03a5, 0x03a5, 0x21
|
|
.dw 0x03c5, 0x03c5, 0x21
|
|
.dw 0x03e5, 0x03e5, 0x21
|
|
.dw 0x0400, 0x047F, 0x21
|
|
.dw 0x0486, 0x04Bf, 0x21
|
|
.dw 0x04c6, 0x04FF, 0x21
|
|
.dw 0x0501, 0x0507, 0x21
|
|
.dw 0x0509, 0x050F, 0x21
|
|
.dw 0x0511, 0x0517, 0x21
|
|
.dw 0x0519, 0x051F, 0x21
|
|
.dw 0x0521, 0x0527, 0x21
|
|
.dw 0x0529, 0x052F, 0x21
|
|
.dw 0x0531, 0x0537, 0x21
|
|
.dw 0x0539, 0x053F, 0x21
|
|
.dw 0x0541, 0x0547, 0x21
|
|
.dw 0x0549, 0x054F, 0x21
|
|
.dw 0x0551, 0x0557, 0x21
|
|
.dw 0x0559, 0x055F, 0x21
|
|
.dw 0x0561, 0x0567, 0x21
|
|
.dw 0x0569, 0x056F, 0x21
|
|
.dw 0x0571, 0x0577, 0x21
|
|
.dw 0x0579, 0x057F, 0x21
|
|
.dw 0x0586, 0x0587, 0x21
|
|
.dw 0x058e, 0x058F, 0x21
|
|
.dw 0x0596, 0x0597, 0x21
|
|
.dw 0x059e, 0x059f, 0x21
|
|
.dw 0x05a6, 0x05a7, 0x21
|
|
.dw 0x05ae, 0x05af, 0x21
|
|
.dw 0x05b6, 0x05b7, 0x21
|
|
.dw 0x05be, 0x05bf, 0x21
|
|
.dw 0x05c6, 0x05c7, 0x21
|
|
.dw 0x05ce, 0x05cf, 0x21
|
|
.dw 0x05d6, 0x05d7, 0x21
|
|
.dw 0x05de, 0x05df, 0x21
|
|
.dw 0x05e6, 0x05e7, 0x21
|
|
.dw 0x05ee, 0x05ef, 0x21
|
|
.dw 0x05f6, 0x05f7, 0x21
|
|
.dw 0x05fe, 0x05ff, 0x21
|
|
.dw 0x0a81, 0x0aff, 0x21
|
|
.dw 0x0b01, 0x0b7f, 0x21
|
|
.dw 0x0b81, 0x0bff, 0x21
|
|
.dw 0x0e80, 0x0fff, 0x21
|
|
.dw 0x3104, 0x3105, 0x21
|
|
.dw 0x310c, 0x310d, 0x21
|
|
.dw 0x3114, 0x3115, 0x21
|
|
.dw 0x311c, 0x311d, 0x21
|
|
.dw 0x3124, 0x3125, 0x21
|
|
.dw 0x312c, 0x312d, 0x21
|
|
.dw 0x3134, 0x3135, 0x21
|
|
.dw 0x313c, 0x313d, 0x21
|
|
.dw 0x3140, 0x317F, 0x21
|
|
.dw 0x31c0, 0x31ff, 0x2E
|
|
.dw 0x3304, 0x3305, 0x21
|
|
.dw 0x330c, 0x330d, 0x21
|
|
.dw 0x3314, 0x3315, 0x21
|
|
.dw 0x331c, 0x331d, 0x21
|
|
.dw 0x3324, 0x3325, 0x21
|
|
.dw 0x332c, 0x332d, 0x21
|
|
.dw 0x3334, 0x3335, 0x21
|
|
.dw 0x333c, 0x333d, 0x21
|
|
.dw 0x3340, 0x337f, 0x21
|
|
.dw 0x33c0, 0x33ff, 0x2e
|
|
.dw 0x3504, 0x3507, 0x21
|
|
.dw 0x350c, 0x350F, 0x21
|
|
.dw 0x3514, 0x3517, 0x21
|
|
.dw 0x351c, 0x351F, 0x21
|
|
.dw 0x3524, 0x3527, 0x21
|
|
.dw 0x352c, 0x352f, 0x21
|
|
.dw 0x3534, 0x3537, 0x21
|
|
.dw 0x353c, 0x353f, 0x21
|
|
.dw 0x3540, 0x35c6, 0x21
|
|
.dw 0x35c7, 0x35c7, 0x2e
|
|
.dw 0x35c8, 0x35ce, 0x21
|
|
.dw 0x35cf, 0x35cf, 0x2e
|
|
.dw 0x35d0, 0x35d6, 0x21
|
|
.dw 0x35d7, 0x35d7, 0x2e
|
|
.dw 0x35d8, 0x35de, 0x21
|
|
.dw 0x35df, 0x35df, 0x2e
|
|
.dw 0x35e0, 0x35e6, 0x21
|
|
.dw 0x35e7, 0x35e7, 0x2e
|
|
.dw 0x35e8, 0x35ee, 0x21
|
|
.dw 0x35ef, 0x35ef, 0x2e
|
|
.dw 0x35f0, 0x35f6, 0x21
|
|
.dw 0x35f7, 0x35f7, 0x2e
|
|
.dw 0x35f8, 0x35fe, 0x21
|
|
.dw 0x35ff, 0x35ff, 0x2e
|
|
.dw 0x3704, 0x3707, 0x21
|
|
.dw 0x370c, 0x370f, 0x21
|
|
.dw 0x3714, 0x3717, 0x21
|
|
.dw 0x371c, 0x371f, 0x21
|
|
.dw 0x3724, 0x3727, 0x21
|
|
.dw 0x372c, 0x372f, 0x21
|
|
.dw 0x3734, 0x3737, 0x21
|
|
.dw 0x373c, 0x37c6, 0x21
|
|
.dw 0x37c7, 0x37c7, 0x2e
|
|
.dw 0x37c8, 0x37ce, 0x21
|
|
.dw 0x37cf, 0x37cf, 0x2e
|
|
.dw 0x37d0, 0x37d6, 0x21
|
|
.dw 0x37d7, 0x37d7, 0x2e
|
|
.dw 0x37d8, 0x37de, 0x21
|
|
.dw 0x37df, 0x37df, 0x2e
|
|
.dw 0x37e0, 0x37e6, 0x21
|
|
.dw 0x37e7, 0x37e7, 0x2e
|
|
.dw 0x37e8, 0x37ee, 0x21
|
|
.dw 0x37ef, 0x37ef, 0x2e
|
|
.dw 0x37f0, 0x37f6, 0x21
|
|
.dw 0x37f7, 0x37f7, 0x2e
|
|
.dw 0x37f8, 0x37fe, 0x21
|
|
.dw 0x37ff, 0x37ff, 0x2e
|
|
.dw 0x3820, 0x382f, 0x21
|
|
.dw 0x3860, 0x386f, 0x21
|
|
.dw 0x38a0, 0x38af, 0x21
|
|
.dw 0x38b0, 0x38bf, 0x21
|
|
.dw 0x38e0, 0x38ef, 0x21
|
|
.dw 0x38f0, 0x38ff, 0x21
|
|
.dw 0x3904, 0x3907, 0x21
|
|
.dw 0x390c, 0x390f, 0x21
|
|
.dw 0x3914, 0x3917, 0x21
|
|
.dw 0x391c, 0x392f, 0x21
|
|
.dw 0x3934, 0x3937, 0x21
|
|
.dw 0x393c, 0x39bf, 0x21
|
|
.dw 0x397f, 0x397f, 0x2e
|
|
.dw 0x3980, 0x39bf, 0x21
|
|
.dw 0x39c0, 0x39c0, 0x2e
|
|
.dw 0x39c1, 0x39c7, 0x21
|
|
.dw 0x39c8, 0x39c8, 0x2e
|
|
.dw 0x39c9, 0x39cf, 0x21
|
|
.dw 0x39d0, 0x39d0, 0x2e
|
|
.dw 0x39d1, 0x39d7, 0x21
|
|
.dw 0x39d8, 0x39d8, 0x2e
|
|
.dw 0x39d9, 0x39ef, 0x21
|
|
.dw 0x39f0, 0x39f0, 0x2e
|
|
.dw 0x39f1, 0x39f6, 0x21
|
|
.dw 0x39f7, 0x39f8, 0x2e
|
|
.dw 0x39f9, 0x39fe, 0x21
|
|
.dw 0x39ff, 0x39ff, 0x2e
|
|
.dw 0x3a00, 0x3bff, 0x21
|
|
.dw 0x3c80, 0x3cff, 0x21
|
|
.dw 0x3d04, 0x3d07, 0x21
|
|
.dw 0x3d0c, 0x3d0f, 0x21
|
|
.dw 0x3d14, 0x3d17, 0x21
|
|
.dw 0x3d1c, 0x3d1f, 0x21
|
|
.dw 0x3d24, 0x3d27, 0x21
|
|
.dw 0x3d2c, 0x3d2f, 0x21
|
|
.dw 0x3d34, 0x3d37, 0x21
|
|
.dw 0x3d3c, 0x3dbf, 0X21
|
|
.dw 0x3dc0, 0x3dc0, 0x2e
|
|
.dw 0x3dc1, 0x3dc6, 0x21
|
|
.dw 0x3dc7, 0x3dc8, 0x2e
|
|
.dw 0x3dc9, 0x3dce, 0x21
|
|
.dw 0x3dcf, 0x3dd0, 0x2e
|
|
.dw 0x3dd1, 0x3dd6, 0x21
|
|
.dw 0x3dd7, 0x3dd8, 0x2e
|
|
.dw 0x3dd9, 0x3dde, 0x21
|
|
.dw 0x3ddf, 0x3de0, 0x2e
|
|
.dw 0x3de1, 0x3de6, 0x21
|
|
.dw 0x3de7, 0x3de8, 0x2e
|
|
.dw 0x3de9, 0x3dee, 0x21
|
|
.dw 0x3def, 0x3df0, 0x2e
|
|
.dw 0x3df1, 0x3df6, 0x21
|
|
.dw 0x3df7, 0x3df8, 0x2e
|
|
.dw 0x3df9, 0x3dfe, 0x21
|
|
.dw 0x3dff, 0x3e7f, 0x2e
|
|
.dw 0x3e80, 0x3eb7, 0x21
|
|
.dw 0x3eb8, 0x3ebf, 0x2e
|
|
.dw 0x3ec0, 0x3ef7, 0x21
|
|
.dw 0x3ef8, 0x3f03, 0x2e
|
|
.dw 0x3f04, 0x3f07, 0x21
|
|
.dw 0x3f08, 0x3f0b, 0x2e
|
|
.dw 0x3f0c, 0x3f0f, 0x21
|
|
.dw 0x3f10, 0x3f13, 0x2e
|
|
.dw 0x3f14, 0x3f17, 0x21
|
|
.dw 0x3f18, 0x3f1b, 0x2e
|
|
.dw 0x3f1c, 0x3f1f, 0x21
|
|
.dw 0x3f20, 0x3f23, 0x2e
|
|
.dw 0x3f24, 0x3f27, 0x21
|
|
.dw 0x3f28, 0x3f2b, 0x2e
|
|
.dw 0x3f2c, 0x3f2f, 0x21
|
|
.dw 0x3f30, 0x3f33, 0x2e
|
|
.dw 0x3f34, 0x3f37, 0x21
|
|
.dw 0x3f38, 0x3f3b, 0x2e
|
|
.dw 0x3f3c, 0x3f3d, 0x21
|
|
.dw 0x3f3e, 0x3f3f, 0x2e
|
|
.dw 0x3f40, 0x3fb7, 0x21
|
|
.dw 0x3fb8, 0x3fc0, 0x2e
|
|
.dw 0x3fc1, 0x3fc6, 0x21
|
|
.dw 0x3fc7, 0x3fc8, 0x2e
|
|
.dw 0x3fc9, 0x3fce, 0x21
|
|
.dw 0x3fcf, 0x3fd0, 0x2e
|
|
.dw 0x3fd1, 0x3fd6, 0x21
|
|
.dw 0x3fd7, 0x3fd8, 0x2e
|
|
.dw 0x3fd9, 0x3fde, 0x21
|
|
.dw 0x3fdf, 0x3fe0, 0x2e
|
|
.dw 0x3fe1, 0x3fe6, 0x21
|
|
.dw 0x3fe7, 0x3fe8, 0x2e
|
|
.dw 0x3fe9, 0x3fee, 0x21
|
|
.dw 0x3fef, 0x3ff0, 0x2e
|
|
.dw 0x3ff1, 0x3ff6, 0x21
|
|
.dw 0x3ff7, 0x3fff, 0x2e
|
|
.dw 0x4180, 0x41FF, 0x21
|
|
.dw 0x4480, 0x44bF, 0x21
|
|
.dw 0x4600, 0x47FF, 0x21
|
|
.dw 0x7000, 0x7FFF, 0x21
|
|
.dw 0x9040, 0x9040, 0x22
|
|
.dw 0x9049, 0x9049, 0x22
|
|
.dw 0x9052, 0x9052, 0x22
|
|
.dw 0x905b, 0x905b, 0x22
|
|
.dw 0x9064, 0x9064, 0x22
|
|
.dw 0x906d, 0x906d, 0x22
|
|
.dw 0x9076, 0x9076, 0x22
|
|
.dw 0x907f, 0x907f, 0x22
|
|
.dw 0x90c0, 0x90c0, 0x22
|
|
.dw 0x90c9, 0x90c9, 0x22
|
|
.dw 0x90d2, 0x90d2, 0x22
|
|
.dw 0x90db, 0x90db, 0x22
|
|
.dw 0x90e4, 0x90e4, 0x22
|
|
.dw 0x90ed, 0x90ed, 0x22
|
|
.dw 0x90f6, 0x90f6, 0x22
|
|
.dw 0x90ff, 0x90ff, 0x22
|
|
.dw 0x9180, 0x91ff, 0x21
|
|
.dw 0x9380, 0x93ff, 0x21
|
|
.dw 0x9580, 0x95ff, 0x21
|
|
.dw 0x9640, 0x967f, 0x21
|
|
.dw 0x96c0, 0x96ff, 0x21
|
|
.dw 0x9740, 0x97ff, 0x21
|
|
.dw 0x9980, 0x99ff, 0x21
|
|
.dw 0x9a40, 0x9a7f, 0x21
|
|
.dw 0x9ac0, 0x9aff, 0x21
|
|
.dw 0x9b40, 0x9bff, 0x21
|
|
.dw 0x9c60, 0x9c7f, 0x21
|
|
.dw 0x9ce0, 0x9cff, 0x21
|
|
.dw 0x9d60, 0x9d7f, 0x21
|
|
.dw 0x9ef0, 0x9eff, 0x21
|
|
.dw 0x9f70, 0x9f7f, 0x21
|
|
.dw 0x0000, 0x0000, 0x00
|
|
.endm
|
|
|
|
se_all_test
|