//Original:testcases/core/c_linkage/c_linkage.dsp // Spec Reference: linkage (link & unlnk) # mach: bfin .include "testutils.inc" start INIT_R_REGS(0); loadsym sp, DATA_ADDR_1, 0x24; p0 = sp; FP = 0x0064 (X); R0 = 5; RETS = R0; LINK 4; // push rets, push fp, fp=sp, sp=sp-framesize (4) R1 = 3; RETS = R1; // initialize rets by a different value loadsym p1, SUBR CALL ( P1 ); SP = 0x3333 (X); UNLINK; // sp = fp, fp = pop (old fp), rets = pop(old rets), R2 = RETS; // for checking CHECKREG r0, 0x00000005; CHECKREG r1, 0x00000003; CHECKREG r2, 0x00000005; CHECKREG r3, 0x00000000; CHECKREG r4, 0x00000000; CHECKREG r5, 0x00000000; CHECKREG r6, 0x00001111; CHECKREG r7, 0x00000000; CHECKREG fp, 0x00000064; CC = SP == P0; if CC JUMP 1f; fail; 1: pass SUBR: // should jump here R6.L = 0x1111; RTS; R7.L = 0x2222; // should not go here RTS; .data DATA_ADDR_1: DATA: .space (0x0100); // Stack Segments .space (0x100); KSTACK: