stk4.s revision 1.1.1.1 1 1.1 christos // load up some registers.
2 1.1 christos // setup up a global pointer table and load some state.
3 1.1 christos // save the machine state and clear some of the values.
4 1.1 christos // then restore and assert some of the values to ensure that
5 1.1 christos // we maintain consitent machine state.
6 1.1 christos # mach: bfin
7 1.1 christos
8 1.1 christos .include "testutils.inc"
9 1.1 christos start
10 1.1 christos
11 1.1 christos R0 = 1;
12 1.1 christos R1 = 2;
13 1.1 christos R2 = 3;
14 1.1 christos R3 = -7;
15 1.1 christos R4 = 4;
16 1.1 christos R5 = 5;
17 1.1 christos R6 = 6;
18 1.1 christos R7 = 7;
19 1.1 christos
20 1.1 christos loadsym P0, a;
21 1.1 christos P1.L = 0x1000;
22 1.1 christos _DBG P0;
23 1.1 christos _DBG P1;
24 1.1 christos SP = P0;
25 1.1 christos FP = P0;
26 1.1 christos
27 1.1 christos CALL try;
28 1.1 christos
29 1.1 christos P1 = [ P0 ++ ];
30 1.1 christos P2 = [ P0 ++ ];
31 1.1 christos P0 += 4;
32 1.1 christos P4 = [ P0 ++ ];
33 1.1 christos P5 = [ P0 ++ ];
34 1.1 christos [ -- SP ] = ( R7:0, P5:0 );
35 1.1 christos _DBG SP;
36 1.1 christos _DBG FP;
37 1.1 christos R0 = R0 ^ R0;
38 1.1 christos R1 = R1 ^ R1;
39 1.1 christos R2 = R2 ^ R2;
40 1.1 christos R4 = R4 ^ R4;
41 1.1 christos R5 = R5 ^ R5;
42 1.1 christos R6 = R6 ^ R6;
43 1.1 christos R7 = R7 ^ R7;
44 1.1 christos ( R7:0, P5:0 ) = [ SP ++ ];
45 1.1 christos DBGA ( R0.L , 1 );
46 1.1 christos DBGA ( R1.L , 2 );
47 1.1 christos DBGA ( R2.L , 3 );
48 1.1 christos DBGA ( R3.L , 0xfff9 );
49 1.1 christos DBGA ( R4.L , 4 );
50 1.1 christos DBGA ( R5.L , 5 );
51 1.1 christos DBGA ( R6.L , 6 );
52 1.1 christos DBGA ( R7.L , 7 );
53 1.1 christos R0 = SP;
54 1.1 christos loadsym R1, a;
55 1.1 christos CC = R0 == R1;
56 1.1 christos IF !CC JUMP abrt;
57 1.1 christos R0 = FP;
58 1.1 christos CC = R0 == R1;
59 1.1 christos CC = R0 == R1;
60 1.1 christos IF !CC JUMP abrt;
61 1.1 christos pass
62 1.1 christos abrt:
63 1.1 christos fail;
64 1.1 christos
65 1.1 christos try:
66 1.1 christos LINK 0;
67 1.1 christos [ -- SP ] = ( R7:0, P5:0 );
68 1.1 christos R7 = 0x1234 (X);
69 1.1 christos [ -- SP ] = R7;
70 1.1 christos CALL bar;
71 1.1 christos R7 = [ SP ++ ];
72 1.1 christos ( R7:0, P5:0 ) = [ SP ++ ];
73 1.1 christos UNLINK;
74 1.1 christos RTS;
75 1.1 christos
76 1.1 christos bar:
77 1.1 christos LINK 0;
78 1.1 christos [ -- SP ] = ( R7:0, P5:0 );
79 1.1 christos R0 = [ FP + 8 ];
80 1.1 christos DBGA ( R0.L , 0x1234 );
81 1.1 christos CALL foo;
82 1.1 christos ( R7:0, P5:0 ) = [ SP ++ ];
83 1.1 christos UNLINK;
84 1.1 christos RTS;
85 1.1 christos
86 1.1 christos foo:
87 1.1 christos DBGA ( R0.L , 0x1234 );
88 1.1 christos RTS;
89 1.1 christos
90 1.1 christos .data
91 1.1 christos _gptab:
92 1.1 christos .dw 0x200
93 1.1 christos .dw 0x000
94 1.1 christos .dw 0x300
95 1.1 christos .dw 0x400
96 1.1 christos .dw 0x500
97 1.1 christos .dw 0x600
98 1.1 christos
99 1.1 christos .space (0x100)
100 1.1 christos a:
101 1.1 christos .dw 1
102 1.1 christos .dw 2
103 1.1 christos .dw 3
104 1.1 christos .dw 4
105 1.1 christos .dw 5
106 1.1 christos .dw 6
107 1.1 christos .dw 7
108 1.1 christos .dw 8
109 1.1 christos .dw 9
110 1.1 christos .dw 0xa
111