73 lines
987 B
ArmAsm
73 lines
987 B
ArmAsm
# 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
|