// testset instruction //TESTSET is an atomic test-and-set. //If the lock was not set prior to the TESTSET, cc is set, the lock bit is set, //and this processor gets the lock. If the lock was set //prior to the TESTSET, cc is cleared, the lock bit is still set, //but the processor fails to acquire the lock. # mach: bfin .include "testutils.inc" start loadsym P0, datalabel; R0 = 0; CC = R0; R0 = B [ P0 ] (Z); DBGA ( R0.L , 0 ); TESTSET ( P0 ); R0 = CC; DBGA ( R0.L , 1 ); R0 = B [ P0 ] (Z); DBGA ( R0.L , 0x80 ); R0 = 0; CC = R0; TESTSET ( P0 ); R0 = CC; DBGA ( R0.L , 0 ); R0 = B [ P0 ] (Z); DBGA ( R0.L , 0x80 ); pass .data datalabel: .dw 0 |