Fix test arguments (Jeremy C. Reed)
[qemu-kvm/fedora.git] / target-sparc / machine.c
blobaaac30b1e83857a2b0b1ca6de18d568937ddbe86
1 #include "hw/hw.h"
2 #include "hw/boards.h"
4 #include "exec-all.h"
6 void register_machines(void)
8 #ifdef TARGET_SPARC64
9 qemu_register_machine(&sun4u_machine);
10 #else
11 qemu_register_machine(&ss5_machine);
12 qemu_register_machine(&ss10_machine);
13 qemu_register_machine(&ss600mp_machine);
14 qemu_register_machine(&ss20_machine);
15 qemu_register_machine(&ss2_machine);
16 qemu_register_machine(&voyager_machine);
17 qemu_register_machine(&ss_lx_machine);
18 qemu_register_machine(&ss4_machine);
19 qemu_register_machine(&scls_machine);
20 qemu_register_machine(&sbook_machine);
21 qemu_register_machine(&ss1000_machine);
22 qemu_register_machine(&ss2000_machine);
23 #endif
26 void cpu_save(QEMUFile *f, void *opaque)
28 CPUState *env = opaque;
29 int i;
30 uint32_t tmp;
32 for(i = 0; i < 8; i++)
33 qemu_put_betls(f, &env->gregs[i]);
34 qemu_put_be32s(f, &env->nwindows);
35 for(i = 0; i < env->nwindows * 16; i++)
36 qemu_put_betls(f, &env->regbase[i]);
38 /* FPU */
39 for(i = 0; i < TARGET_FPREGS; i++) {
40 union {
41 float32 f;
42 uint32_t i;
43 } u;
44 u.f = env->fpr[i];
45 qemu_put_be32(f, u.i);
48 qemu_put_betls(f, &env->pc);
49 qemu_put_betls(f, &env->npc);
50 qemu_put_betls(f, &env->y);
51 tmp = GET_PSR(env);
52 qemu_put_be32(f, tmp);
53 qemu_put_betls(f, &env->fsr);
54 qemu_put_betls(f, &env->tbr);
55 #ifndef TARGET_SPARC64
56 qemu_put_be32s(f, &env->wim);
57 /* MMU */
58 for(i = 0; i < 16; i++)
59 qemu_put_be32s(f, &env->mmuregs[i]);
60 #endif
63 int cpu_load(QEMUFile *f, void *opaque, int version_id)
65 CPUState *env = opaque;
66 int i;
67 uint32_t tmp;
69 if (version_id != 4)
70 return -EINVAL;
71 for(i = 0; i < 8; i++)
72 qemu_get_betls(f, &env->gregs[i]);
73 qemu_get_be32s(f, &env->nwindows);
74 for(i = 0; i < env->nwindows * 16; i++)
75 qemu_get_betls(f, &env->regbase[i]);
77 /* FPU */
78 for(i = 0; i < TARGET_FPREGS; i++) {
79 union {
80 float32 f;
81 uint32_t i;
82 } u;
83 u.i = qemu_get_be32(f);
84 env->fpr[i] = u.f;
87 qemu_get_betls(f, &env->pc);
88 qemu_get_betls(f, &env->npc);
89 qemu_get_betls(f, &env->y);
90 tmp = qemu_get_be32(f);
91 env->cwp = 0; /* needed to ensure that the wrapping registers are
92 correctly updated */
93 PUT_PSR(env, tmp);
94 qemu_get_betls(f, &env->fsr);
95 qemu_get_betls(f, &env->tbr);
96 #ifndef TARGET_SPARC64
97 qemu_get_be32s(f, &env->wim);
98 /* MMU */
99 for(i = 0; i < 16; i++)
100 qemu_get_be32s(f, &env->mmuregs[i]);
101 #endif
102 tlb_flush(env, 1);
103 return 0;