# Blackfin testcase for playing with TESTSET # mach: bfin .include "testutils.inc" start .macro _ts val:req /* Load value to the external data storage */ imm32 R0, \val [P4] = R0; FLUSHINV[P4]; SSYNC; mnop; imm32 R1, 0xdeadbeef imm32 R2, 0xdeadbeef TESTSET (P4); SSYNC; mnop; mnop; /* TESTSET will set CC based on low byte == 0 */ .if \val & 0xff if CC jump 1f; .else if ! CC jump 1f; .endif /* Regardless of CC, the byte MSB is set to 1 */ imm32 R1, \val | 0x80 /* Make sure the result is what we want */ R2 = [P4]; FLUSHINV[P4]; SSYNC; mnop; CC = R2 == R1; if ! CC jump 1f; jump 2f; 1: fail 2: .endm .macro ts val:req _ts \val _ts ~(\val) .endm loadsym P4, _data ts 0x00000000 ts 0x00000011 ts 0x11111111 ts 0x11111101 ts 0x11111110 ts 0x111111bb ts 0xaaaaaa00 ts 0xabcd2222 ts 0x000000bb ts 0x55555555 ts 0x5555550a ts 0x00100010 ts 0x00100100 ts 0x33333000 ts 0x000000aa pass .data _data: .long 0 .size _data, .-_data