tizen 2.4 release
[external/binutils.git] / sim / testsuite / sim / bfin / c_linkage.s
1 //Original:testcases/core/c_linkage/c_linkage.dsp
2 // Spec Reference: linkage (link & unlnk)
3 # mach: bfin
4
5 .include "testutils.inc"
6         start
7
8         INIT_R_REGS(0);
9
10         loadsym sp, DATA_ADDR_1, 0x24;
11         p0 = sp;
12
13         FP = 0x0064 (X);
14         R0 = 5;
15         RETS = R0;
16
17         LINK 4; // push rets, push fp, fp=sp, sp=sp-framesize (4)
18
19         R1 = 3;
20         RETS = R1;      // initialize rets by a different value
21
22         loadsym p1, SUBR
23         CALL ( P1 );
24
25         SP = 0x3333 (X);
26
27         UNLINK; // sp = fp, fp = pop (old fp), rets = pop(old rets),
28
29         R2 = RETS;      // for checking
30
31         CHECKREG r0, 0x00000005;
32         CHECKREG r1, 0x00000003;
33         CHECKREG r2, 0x00000005;
34         CHECKREG r3, 0x00000000;
35         CHECKREG r4, 0x00000000;
36         CHECKREG r5, 0x00000000;
37         CHECKREG r6, 0x00001111;
38         CHECKREG r7, 0x00000000;
39         CHECKREG fp, 0x00000064;
40         CC = SP == P0;
41         if CC JUMP 1f;
42         fail;
43 1:
44         pass
45
46 SUBR:                           // should jump here
47         R6.L = 0x1111;
48         RTS;
49         R7.L = 0x2222;  // should not go here
50         RTS;
51
52         .data
53 DATA_ADDR_1:
54 DATA:
55         .space (0x0100);
56
57 // Stack Segments
58
59         .space (0x100);
60 KSTACK: