Commit | Line | Data |
---|---|---|
3bf97905 DB |
1 | # fr30 testcase for |
2 | # mach(): fr30 | |
3 | # ld $Rj,$Ri | |
4 | # ld @($R13,$Rj),$Ri | |
5 | # ld @($R14,$disp10),$Ri | |
6 | # ld @($R15,$udisp6),$Ri | |
7 | # ld @$R15+,$Ri | |
2cf8f53c | 8 | # ld @$R15+,$Rs |
3bf97905 DB |
9 | |
10 | .include "testutils.inc" | |
11 | ||
12 | START | |
13 | ||
14 | .text | |
15 | .global ld | |
16 | ld: | |
17 | ; Test ld $Rj,$Ri | |
18 | mvi_h_mem #0x00000000,sp | |
19 | set_cc 0x0f ; condition codes should not change | |
20 | ld @sp,r7 | |
21 | test_cc 1 1 1 1 | |
22 | test_h_gr 0,r7 | |
23 | ||
24 | mvi_h_mem #0x00000001,sp | |
25 | set_cc 0x07 ; condition codes should not change | |
26 | ld @sp,r7 | |
27 | test_cc 0 1 1 1 | |
28 | test_h_gr 1,r7 | |
29 | ||
30 | mvi_h_mem #0x7fffffff,sp | |
31 | set_cc 0x0b ; condition codes should not change | |
32 | ld @sp,r7 | |
33 | test_cc 1 0 1 1 | |
34 | test_h_gr 0x7fffffff,r7 | |
35 | ||
36 | mvi_h_mem #0x80000000,sp | |
37 | set_cc 0x0d ; condition codes should not change | |
38 | ld @sp,r7 | |
39 | test_cc 1 1 0 1 | |
40 | test_h_gr 0x80000000,r7 | |
41 | ||
42 | mvi_h_mem #0xffffffff,sp | |
43 | set_cc 0x0e ; condition codes should not change | |
44 | ld @sp,r7 | |
45 | test_cc 1 1 1 0 | |
46 | test_h_gr -1,r7 | |
47 | ||
48 | ; Test ld @($R13,$Rj),$Ri | |
49 | mvr_h_gr sp,r13 | |
50 | inci_h_gr -8,r13 | |
51 | mvi_h_gr 8,r8 | |
52 | ||
53 | mvi_h_mem #0x00000000,sp | |
54 | set_cc 0x0f ; condition codes should not change | |
55 | ld @(r13,r8),r7 | |
56 | test_cc 1 1 1 1 | |
57 | test_h_gr 0,r7 | |
58 | ||
59 | mvi_h_mem #0x00000001,sp | |
60 | set_cc 0x07 ; condition codes should not change | |
61 | ld @(r13,r8),r7 | |
62 | test_cc 0 1 1 1 | |
63 | test_h_gr 1,r7 | |
64 | ||
65 | mvi_h_mem #0x7fffffff,sp | |
66 | set_cc 0x0b ; condition codes should not change | |
67 | ld @(r13,r8),r7 | |
68 | test_cc 1 0 1 1 | |
69 | test_h_gr 0x7fffffff,r7 | |
70 | ||
71 | mvi_h_mem #0x80000000,sp | |
72 | set_cc 0x0d ; condition codes should not change | |
73 | ld @(r13,r8),r7 | |
74 | test_cc 1 1 0 1 | |
75 | test_h_gr 0x80000000,r7 | |
76 | ||
77 | mvi_h_mem #0xffffffff,sp | |
78 | set_cc 0x0e ; condition codes should not change | |
79 | ld @(r13,r8),r7 | |
80 | test_cc 1 1 1 0 | |
81 | test_h_gr -1,r7 | |
82 | ||
83 | ; Test ld @($R14,$disp10),$Ri | |
84 | mvi_h_mem #0xdeadbeef,sp | |
85 | mvr_h_gr sp,r14 | |
86 | mvi_h_gr -0x1fc,r8 | |
87 | add_h_gr r8,r14 | |
88 | ||
89 | set_cc 0x0f ; condition codes should not change | |
90 | ld @(r14,0x1fc),r7 | |
91 | test_cc 1 1 1 1 | |
92 | test_h_gr 0xdeadbeef,r7 | |
93 | ||
94 | inci_h_gr 0xfc,r14 | |
95 | set_cc 0x07 ; condition codes should not change | |
96 | ld @(r14,0x100),r7 | |
97 | test_cc 0 1 1 1 | |
98 | test_h_gr 0xdeadbeef,r7 | |
99 | ||
100 | inci_h_gr 0x100,r14 | |
101 | set_cc 0x0b ; condition codes should not change | |
102 | ld @(r14,0x0),r7 | |
103 | test_cc 1 0 1 1 | |
104 | test_h_gr 0xdeadbeef,r7 | |
105 | ||
106 | inci_h_gr 0x100,r14 | |
107 | set_cc 0x0d ; condition codes should not change | |
108 | ld @(r14,-0x100),r7 | |
109 | test_cc 1 1 0 1 | |
110 | test_h_gr 0xdeadbeef,r7 | |
111 | ||
112 | inci_h_gr 0x100,r14 | |
113 | set_cc 0x0e ; condition codes should not change | |
114 | ld @(r14,-0x200),r7 | |
115 | test_cc 1 1 1 0 | |
116 | test_h_gr 0xdeadbeef,r7 | |
117 | ||
118 | ; Test ld @($R15,$udisp6),$Ri | |
119 | mvi_h_mem #0xdeadbeef,sp | |
120 | mvr_h_gr sp,r14 | |
121 | mvi_h_gr -0x3c,r8 | |
122 | add_h_gr r8,r14 | |
123 | ||
124 | set_cc 0x0f ; condition codes should not change | |
125 | ld @(r14,0x3c),r7 | |
126 | test_cc 1 1 1 1 | |
127 | test_h_gr 0xdeadbeef,r7 | |
128 | ||
129 | inci_h_gr 0x1c,r14 | |
130 | set_cc 0x07 ; condition codes should not change | |
131 | ld @(r14,0x20),r7 | |
132 | test_cc 0 1 1 1 | |
133 | test_h_gr 0xdeadbeef,r7 | |
134 | ||
135 | inci_h_gr 0x20,r14 | |
136 | set_cc 0x0b ; condition codes should not change | |
137 | ld @(r14,0x0),r7 | |
138 | test_cc 1 0 1 1 | |
139 | test_h_gr 0xdeadbeef,r7 | |
140 | ||
141 | ; Test ld @$R15+,$Ri | |
142 | mvr_h_gr sp,r8 ; save original stack pointer | |
143 | mvr_h_gr r8,r9 | |
144 | inci_h_gr 4,r9 ; original stack pointer + 4 | |
145 | mvi_h_mem #0xdeadbeef,sp ; prime memory | |
146 | ||
2cf8f53c | 147 | mvr_h_gr r8,sp ; restore original stack pointer |
3bf97905 DB |
148 | set_cc 0x0f ; condition codes should not change |
149 | ld @r15+,r7 | |
150 | test_cc 1 1 1 1 | |
151 | test_h_gr 0xdeadbeef,r7 | |
152 | testr_h_gr sp,r9 ; should have been incremented | |
153 | ||
f628df57 DB |
154 | mvr_h_gr r8,sp ; restore original stack pointer |
155 | set_cc 0x0f ; condition codes should not change | |
156 | ld @r15+,sp | |
157 | test_cc 1 1 1 1 | |
158 | test_h_gr 0xdeadbeef,sp ; should not have been incremented | |
159 | ||
2cf8f53c DB |
160 | ; Test ld @$R15+,$Rs |
161 | mvr_h_gr r8,sp ; restore original stack pointer | |
162 | set_cc 0x0f ; condition codes should not change | |
163 | ld @r15+,tbr | |
164 | test_cc 1 1 1 1 | |
165 | test_h_dr 0xdeadbeef,tbr | |
166 | testr_h_gr sp,r9 ; should have been incremented | |
167 | ||
168 | mvr_h_gr r8,sp ; restore original stack pointer | |
169 | set_cc 0x0f ; condition codes should not change | |
170 | ld @r15+,rp | |
171 | test_cc 1 1 1 1 | |
172 | test_h_dr 0xdeadbeef,rp | |
173 | testr_h_gr sp,r9 ; should have been incremented | |
174 | ||
175 | mvr_h_gr r8,sp ; restore original stack pointer | |
176 | set_cc 0x0f ; condition codes should not change | |
177 | ld @r15+,mdh | |
178 | test_cc 1 1 1 1 | |
179 | test_h_dr 0xdeadbeef,mdh | |
180 | testr_h_gr sp,r9 ; should have been incremented | |
181 | ||
182 | mvr_h_gr r8,sp ; restore original stack pointer | |
183 | set_cc 0x0f ; condition codes should not change | |
184 | ld @r15+,mdl | |
185 | test_cc 1 1 1 1 | |
186 | test_h_dr 0xdeadbeef,mdl | |
187 | testr_h_gr sp,r9 ; should have been incremented | |
188 | ||
189 | ; Failing tests moved to the bottom | |
190 | set_s_user | |
191 | mvr_h_gr r8,sp ; restore original stack pointer | |
192 | set_cc 0x0f ; condition codes should not change | |
193 | ld @r15+,ssp | |
194 | test_cc 1 1 1 1 | |
195 | test_h_dr 0xdeadbeef,ssp | |
196 | testr_h_gr sp,r9 ; should have been incremented | |
197 | ||
198 | mvr_h_gr r8,sp ; restore original stack pointer | |
199 | set_cc 0x0f ; condition codes should not change | |
200 | ld @r15+,usp | |
201 | test_cc 1 1 1 1 | |
202 | test_h_dr 0xdeadbeef,usp | |
203 | test_h_gr 0xdeadbeef,sp ; should not have been incremented | |
204 | ||
205 | set_s_system | |
206 | mvr_h_gr r8,sp ; restore original stack pointer | |
207 | set_cc 0x0f ; condition codes should not change | |
208 | ld @r15+,usp | |
209 | test_cc 1 1 1 1 | |
210 | test_h_dr 0xdeadbeef,usp | |
211 | testr_h_gr sp,r9 ; should have been incremented | |
212 | ||
213 | mvr_h_gr r8,sp ; restore original stack pointer | |
214 | set_cc 0x0f ; condition codes should not change | |
215 | ld @r15+,ssp | |
216 | test_cc 1 1 1 1 | |
217 | test_h_dr 0xdeadbeef,ssp | |
218 | test_h_gr 0xdeadbeef,sp ; should not have been incremented | |
219 | ||
3bf97905 | 220 | pass |