1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
# fr30 testcase for
# mach(): fr30
# st $Ri,@$Rj
.include "testutils.inc"
START
.text
.global st
st:
mvr_h_gr sp,r9 ; Save stack pointer
; Test st $Ri,@Rj
mvi_h_gr 0xdeadbeef,r8
set_cc 0x0f ; Condition codes should not change
st r8,@sp
test_cc 1 1 1 1
test_h_mem 0xdeadbeef,sp
test_h_gr 0xdeadbeef,r8
; Test st $Ri,@(R13,Rj)
mvi_h_gr 0xbeefdead,r8
mvr_h_gr sp,r1
inci_h_gr -8,sp
mvr_h_gr sp,r2
inci_h_gr 4,sp
mvi_h_gr 4,r13
set_cc 0x0e ; Condition codes should not change
st r8,@(r13,sp)
test_cc 1 1 1 0
test_h_mem 0xbeefdead,r1
test_h_gr 0xbeefdead,r8
mvi_h_gr 0,r13
set_cc 0x0d ; Condition codes should not change
st r8,@(r13,sp)
test_cc 1 1 0 1
test_h_mem 0xbeefdead,sp
test_h_gr 0xbeefdead,r8
mvi_h_gr -4,r13
set_cc 0x0c ; Condition codes should not change
st r8,@(r13,sp)
test_cc 1 1 0 0
test_h_mem 0xbeefdead,r2
test_h_gr 0xbeefdead,r8
; Test st $Ri,@(R14,$disp10)
mvi_h_gr 0xdeadbeef,r8
mvr_h_gr r9,sp ; Restore stack pointer
mvr_h_gr sp,r14
inci_h_gr -508,r14
mvr_h_gr r14,r2
inci_h_gr -512,r14
mvr_h_gr r14,r3
inci_h_gr 512,r14
set_cc 0x0b ; Condition codes should not change
st r8,@(r14,508)
test_cc 1 0 1 1
test_h_mem 0xdeadbeef,r1
test_h_gr 0xdeadbeef,r8
set_cc 0x0a ; Condition codes should not change
st r8,@(r14,0)
test_cc 1 0 1 0
test_h_mem 0xdeadbeef,r2
test_h_gr 0xdeadbeef,r8
set_cc 0x09 ; Condition codes should not change
st r8,@(r14,-512)
test_cc 1 0 0 1
test_h_mem 0xdeadbeef,r3
test_h_gr 0xdeadbeef,r8
; Test st $Ri,@(R15,$udisp6)
mvi_h_gr 0xbeefdead,r8
mvr_h_gr r9,sp ; Restore stack pointer
inci_h_gr -60,sp
set_cc 0x08 ; Condition codes should not change
st r8,@(r15,60)
test_cc 1 0 0 0
test_h_mem 0xbeefdead,r9
test_h_gr 0xbeefdead,r8
set_cc 0x07 ; Condition codes should not change
st r8,@(r15,0)
test_cc 0 1 1 1
test_h_mem 0xbeefdead,r9
test_h_gr 0xbeefdead,r8
; Test st $Ri,@-R15
mvr_h_gr r9,sp ; Restore stack pointer
mvr_h_gr r9,r10
set_cc 0x06 ; Condition codes should not change
st r15,@-r15
test_cc 0 1 1 0
testr_h_mem r9,sp ; original value stored
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
mvi_h_gr 0xdeadbeef,r8
set_cc 0x05 ; Condition codes should not change
st r8,@-r15
test_cc 0 1 0 1
test_h_mem 0xdeadbeef,sp
test_h_gr 0xdeadbeef,r8
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
; Test st $Rs,@-R15
mvr_h_gr r9,sp ; Restore stack pointer
mvr_h_gr r9,r10
mvi_h_dr 0xbeefdead,tbr
mvi_h_dr 0xdeadbeef,rp
mvi_h_dr 0x0000dead,mdh
mvi_h_dr 0xbeef0000,mdl
set_cc 0x04 ; Condition codes should not change
st tbr,@-r15
test_cc 0 1 0 0
test_h_mem 0xbeefdead,sp
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
set_cc 0x03 ; Condition codes should not change
st rp,@-r15
test_cc 0 0 1 1
test_h_mem 0xdeadbeef,sp
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
set_cc 0x02 ; Condition codes should not change
st mdh,@-r15
test_cc 0 0 1 0
test_h_mem 0x0000dead,sp
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
set_cc 0x01 ; Condition codes should not change
st mdl,@-r15
test_cc 0 0 0 1
test_h_mem 0xbeef0000,sp
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
mvr_h_gr sp,usp
set_s_user
set_cc 0x00 ; Condition codes should not change
st ssp,@-r15
test_cc 0 0 0 0
testr_h_mem r10,sp
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
set_cc 0x00 ; Condition codes should not change
st usp,@-r15
test_cc 0 0 0 0
testr_h_mem r10,sp ; original value stored
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
mvr_h_gr sp,ssp
set_s_system
set_cc 0x00 ; Condition codes should not change
st usp,@-r15
test_cc 0 0 0 0
testr_h_mem r10,sp
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
set_cc 0x00 ; Condition codes should not change
st ssp,@-r15
test_cc 0 0 0 0
testr_h_mem r10,sp ; original value stored
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
; Test st $PS,@-R15
mvr_h_gr r9,sp ; Restore stack pointer
mvr_h_gr r9,r10
set_cc 0x0f ; Condition codes affect result
set_dbits 3 ; Division bits affect result
st ps,@-r15
test_cc 1 1 1 1
test_h_mem 0x0000060f,sp
inci_h_gr -4,r10
testr_h_gr r10,sp ; was decremented
pass
|