3
#include "qemu-timer.h"
7
void register_machines(void)
10
qemu_register_machine(&sun4u_machine);
11
qemu_register_machine(&sun4v_machine);
12
qemu_register_machine(&niagara_machine);
14
qemu_register_machine(&ss5_machine);
15
qemu_register_machine(&ss10_machine);
16
qemu_register_machine(&ss600mp_machine);
17
qemu_register_machine(&ss20_machine);
18
qemu_register_machine(&ss2_machine);
19
qemu_register_machine(&voyager_machine);
20
qemu_register_machine(&ss_lx_machine);
21
qemu_register_machine(&ss4_machine);
22
qemu_register_machine(&scls_machine);
23
qemu_register_machine(&sbook_machine);
24
qemu_register_machine(&ss1000_machine);
25
qemu_register_machine(&ss2000_machine);
29
void cpu_save(QEMUFile *f, void *opaque)
31
CPUState *env = opaque;
35
// if env->cwp == env->nwindows - 1, this will set the ins of the last
36
// window as the outs of the first window
37
cpu_set_cwp(env, env->cwp);
39
for(i = 0; i < 8; i++)
40
qemu_put_betls(f, &env->gregs[i]);
41
qemu_put_be32s(f, &env->nwindows);
42
for(i = 0; i < env->nwindows * 16; i++)
43
qemu_put_betls(f, &env->regbase[i]);
46
for(i = 0; i < TARGET_FPREGS; i++) {
52
qemu_put_be32(f, u.i);
55
qemu_put_betls(f, &env->pc);
56
qemu_put_betls(f, &env->npc);
57
qemu_put_betls(f, &env->y);
59
qemu_put_be32(f, tmp);
60
qemu_put_betls(f, &env->fsr);
61
qemu_put_betls(f, &env->tbr);
62
tmp = env->interrupt_index;
63
qemu_put_be32(f, tmp);
64
qemu_put_be32s(f, &env->pil_in);
65
#ifndef TARGET_SPARC64
66
qemu_put_be32s(f, &env->wim);
68
for (i = 0; i < 32; i++)
69
qemu_put_be32s(f, &env->mmuregs[i]);
71
qemu_put_be64s(f, &env->lsu);
72
for (i = 0; i < 16; i++) {
73
qemu_put_be64s(f, &env->immuregs[i]);
74
qemu_put_be64s(f, &env->dmmuregs[i]);
76
for (i = 0; i < 64; i++) {
77
qemu_put_be64s(f, &env->itlb_tag[i]);
78
qemu_put_be64s(f, &env->itlb_tte[i]);
79
qemu_put_be64s(f, &env->dtlb_tag[i]);
80
qemu_put_be64s(f, &env->dtlb_tte[i]);
82
qemu_put_be32s(f, &env->mmu_version);
83
for (i = 0; i < MAXTL_MAX; i++) {
84
qemu_put_be64s(f, &env->ts[i].tpc);
85
qemu_put_be64s(f, &env->ts[i].tnpc);
86
qemu_put_be64s(f, &env->ts[i].tstate);
87
qemu_put_be32s(f, &env->ts[i].tt);
89
qemu_put_be32s(f, &env->xcc);
90
qemu_put_be32s(f, &env->asi);
91
qemu_put_be32s(f, &env->pstate);
92
qemu_put_be32s(f, &env->tl);
93
qemu_put_be32s(f, &env->cansave);
94
qemu_put_be32s(f, &env->canrestore);
95
qemu_put_be32s(f, &env->otherwin);
96
qemu_put_be32s(f, &env->wstate);
97
qemu_put_be32s(f, &env->cleanwin);
98
for (i = 0; i < 8; i++)
99
qemu_put_be64s(f, &env->agregs[i]);
100
for (i = 0; i < 8; i++)
101
qemu_put_be64s(f, &env->bgregs[i]);
102
for (i = 0; i < 8; i++)
103
qemu_put_be64s(f, &env->igregs[i]);
104
for (i = 0; i < 8; i++)
105
qemu_put_be64s(f, &env->mgregs[i]);
106
qemu_put_be64s(f, &env->fprs);
107
qemu_put_be64s(f, &env->tick_cmpr);
108
qemu_put_be64s(f, &env->stick_cmpr);
109
qemu_put_ptimer(f, env->tick);
110
qemu_put_ptimer(f, env->stick);
111
qemu_put_be64s(f, &env->gsr);
112
qemu_put_be32s(f, &env->gl);
113
qemu_put_be64s(f, &env->hpstate);
114
for (i = 0; i < MAXTL_MAX; i++)
115
qemu_put_be64s(f, &env->htstate[i]);
116
qemu_put_be64s(f, &env->hintp);
117
qemu_put_be64s(f, &env->htba);
118
qemu_put_be64s(f, &env->hver);
119
qemu_put_be64s(f, &env->hstick_cmpr);
120
qemu_put_be64s(f, &env->ssr);
121
qemu_put_ptimer(f, env->hstick);
125
int cpu_load(QEMUFile *f, void *opaque, int version_id)
127
CPUState *env = opaque;
133
for(i = 0; i < 8; i++)
134
qemu_get_betls(f, &env->gregs[i]);
135
qemu_get_be32s(f, &env->nwindows);
136
for(i = 0; i < env->nwindows * 16; i++)
137
qemu_get_betls(f, &env->regbase[i]);
140
for(i = 0; i < TARGET_FPREGS; i++) {
145
u.i = qemu_get_be32(f);
149
qemu_get_betls(f, &env->pc);
150
qemu_get_betls(f, &env->npc);
151
qemu_get_betls(f, &env->y);
152
tmp = qemu_get_be32(f);
153
env->cwp = 0; /* needed to ensure that the wrapping registers are
156
qemu_get_betls(f, &env->fsr);
157
qemu_get_betls(f, &env->tbr);
158
tmp = qemu_get_be32(f);
159
env->interrupt_index = tmp;
160
qemu_get_be32s(f, &env->pil_in);
161
#ifndef TARGET_SPARC64
162
qemu_get_be32s(f, &env->wim);
164
for (i = 0; i < 32; i++)
165
qemu_get_be32s(f, &env->mmuregs[i]);
167
qemu_get_be64s(f, &env->lsu);
168
for (i = 0; i < 16; i++) {
169
qemu_get_be64s(f, &env->immuregs[i]);
170
qemu_get_be64s(f, &env->dmmuregs[i]);
172
for (i = 0; i < 64; i++) {
173
qemu_get_be64s(f, &env->itlb_tag[i]);
174
qemu_get_be64s(f, &env->itlb_tte[i]);
175
qemu_get_be64s(f, &env->dtlb_tag[i]);
176
qemu_get_be64s(f, &env->dtlb_tte[i]);
178
qemu_get_be32s(f, &env->mmu_version);
179
for (i = 0; i < MAXTL_MAX; i++) {
180
qemu_get_be64s(f, &env->ts[i].tpc);
181
qemu_get_be64s(f, &env->ts[i].tnpc);
182
qemu_get_be64s(f, &env->ts[i].tstate);
183
qemu_get_be32s(f, &env->ts[i].tt);
185
qemu_get_be32s(f, &env->xcc);
186
qemu_get_be32s(f, &env->asi);
187
qemu_get_be32s(f, &env->pstate);
188
qemu_get_be32s(f, &env->tl);
189
env->tsptr = &env->ts[env->tl & MAXTL_MASK];
190
qemu_get_be32s(f, &env->cansave);
191
qemu_get_be32s(f, &env->canrestore);
192
qemu_get_be32s(f, &env->otherwin);
193
qemu_get_be32s(f, &env->wstate);
194
qemu_get_be32s(f, &env->cleanwin);
195
for (i = 0; i < 8; i++)
196
qemu_get_be64s(f, &env->agregs[i]);
197
for (i = 0; i < 8; i++)
198
qemu_get_be64s(f, &env->bgregs[i]);
199
for (i = 0; i < 8; i++)
200
qemu_get_be64s(f, &env->igregs[i]);
201
for (i = 0; i < 8; i++)
202
qemu_get_be64s(f, &env->mgregs[i]);
203
qemu_get_be64s(f, &env->fprs);
204
qemu_get_be64s(f, &env->tick_cmpr);
205
qemu_get_be64s(f, &env->stick_cmpr);
206
qemu_get_ptimer(f, env->tick);
207
qemu_get_ptimer(f, env->stick);
208
qemu_get_be64s(f, &env->gsr);
209
qemu_get_be32s(f, &env->gl);
210
qemu_get_be64s(f, &env->hpstate);
211
for (i = 0; i < MAXTL_MAX; i++)
212
qemu_get_be64s(f, &env->htstate[i]);
213
qemu_get_be64s(f, &env->hintp);
214
qemu_get_be64s(f, &env->htba);
215
qemu_get_be64s(f, &env->hver);
216
qemu_get_be64s(f, &env->hstick_cmpr);
217
qemu_get_be64s(f, &env->ssr);
218
qemu_get_ptimer(f, env->hstick);