//Original:/proj/frio/dv/testcases/core/c_cactrl_iflush_pr/c_cactrl_iflush_pr.dsp // Spec Reference: c_cactrl iflush_pr # mach: bfin .include "testutils.inc" start // initial values //p1=0x448; //imm32 p1, CODE_ADDR_1; loadsym p1, SUBR1; // set all regs imm32 r0, 0x13545abd; imm32 r1, 0xadbcfec7; imm32 r2, 0xa1245679; imm32 r3, 0x00060007; imm32 r4, 0xefbc4569; imm32 r5, 0x1235000b; imm32 r6, 0x000c000d; imm32 r7, 0x678e000f; // The result accumulated in A0 and A1, and stored to a reg half R2.H = ( A1 = R1.L * R0.H ), A0 = R1.H * R0.L; R3.H = A1 , A0 = R7.H * R6.L (T); // begin of iflush IFLUSH [ P1 ]; // p1 = 0xf00 R7 = 0; ASTAT = R7; IF !CC JUMP SUBR1; JBACK: R6 = 0; //r4 = (a1 = l*h) M, a0 = h*l (r3,r2); //r5 a1 = l*h, = (a0 = h*l) (r1,r0) IS; CHECKREG r2, 0xFFD15679; CHECKREG r3, 0xFFD00007; CHECKREG r4, 0x00074569; CHECKREG r5, 0x12358000; pass //.code 0x448 //.code CODE_ADDR_1 SUBR1: R4.H = ( A1 = R3.L * R2.H ) (M), A0 = R3.H * R2.L; A1 = R1.L * R0.H, R5.L = ( A0 = R1.H * R0.L ) (ISS2); IF !CC JUMP JBACK; NOP; NOP; NOP; NOP; NOP; // Pre-load memory with known data // More data is defined than will actually be used .data DATA_ADDR_1: .dd 0x00010203 .dd 0x04050607 .dd 0x08090A0B .dd 0x0C0D0E0F .dd 0x10111213 .dd 0x14151617 .dd 0x18191A1B .dd 0x1C1D1E1F DATA_ADDR_2: .dd 0x20212223 .dd 0x24252627 .dd 0x28292A2B .dd 0x2C2D2E2F .dd 0x30313233 .dd 0x34353637 .dd 0x38393A3B .dd 0x3C3D3E3F DATA_ADDR_3: .dd 0x40414243 .dd 0x44454647 .dd 0x48494A4B .dd 0x4C4D4E4F .dd 0x50515253 .dd 0x54555657 .dd 0x58595A5B .dd 0x5C5D5E5F DATA_ADDR_4: .dd 0x60616263 .dd 0x64656667 .dd 0x68696A6B .dd 0x6C6D6E6F .dd 0x70717273 .dd 0x74757677 .dd 0x78797A7B .dd 0x7C7D7E7F DATA_ADDR_5: .dd 0x80818283 .dd 0x84858687 .dd 0x88898A8B .dd 0x8C8D8E8F .dd 0x90919293 .dd 0x94959697 .dd 0x98999A9B .dd 0x9C9D9E9F