Statistics
| Branch: | Revision:

root / target-sparc / machine.c @ 5439779e

History | View | Annotate | Download (2.4 kB)

1
#include "hw/hw.h"
2
#include "hw/boards.h"
3

    
4
#include "exec-all.h"
5

    
6
void register_machines(void)
7
{
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
24
}
25

    
26
void cpu_save(QEMUFile *f, void *opaque)
27
{
28
    CPUState *env = opaque;
29
    int i;
30
    uint32_t tmp;
31

    
32
    for(i = 0; i < 8; i++)
33
        qemu_put_betls(f, &env->gregs[i]);
34
    for(i = 0; i < NWINDOWS * 16; i++)
35
        qemu_put_betls(f, &env->regbase[i]);
36

    
37
    /* FPU */
38
    for(i = 0; i < TARGET_FPREGS; i++) {
39
        union {
40
            float32 f;
41
            uint32_t i;
42
        } u;
43
        u.f = env->fpr[i];
44
        qemu_put_be32(f, u.i);
45
    }
46

    
47
    qemu_put_betls(f, &env->pc);
48
    qemu_put_betls(f, &env->npc);
49
    qemu_put_betls(f, &env->y);
50
    tmp = GET_PSR(env);
51
    qemu_put_be32(f, tmp);
52
    qemu_put_betls(f, &env->fsr);
53
    qemu_put_betls(f, &env->tbr);
54
#ifndef TARGET_SPARC64
55
    qemu_put_be32s(f, &env->wim);
56
    /* MMU */
57
    for(i = 0; i < 16; i++)
58
        qemu_put_be32s(f, &env->mmuregs[i]);
59
#endif
60
}
61

    
62
int cpu_load(QEMUFile *f, void *opaque, int version_id)
63
{
64
    CPUState *env = opaque;
65
    int i;
66
    uint32_t tmp;
67

    
68
    for(i = 0; i < 8; i++)
69
        qemu_get_betls(f, &env->gregs[i]);
70
    for(i = 0; i < NWINDOWS * 16; i++)
71
        qemu_get_betls(f, &env->regbase[i]);
72

    
73
    /* FPU */
74
    for(i = 0; i < TARGET_FPREGS; i++) {
75
        union {
76
            float32 f;
77
            uint32_t i;
78
        } u;
79
        u.i = qemu_get_be32(f);
80
        env->fpr[i] = u.f;
81
    }
82

    
83
    qemu_get_betls(f, &env->pc);
84
    qemu_get_betls(f, &env->npc);
85
    qemu_get_betls(f, &env->y);
86
    tmp = qemu_get_be32(f);
87
    env->cwp = 0; /* needed to ensure that the wrapping registers are
88
                     correctly updated */
89
    PUT_PSR(env, tmp);
90
    qemu_get_betls(f, &env->fsr);
91
    qemu_get_betls(f, &env->tbr);
92
#ifndef TARGET_SPARC64
93
    qemu_get_be32s(f, &env->wim);
94
    /* MMU */
95
    for(i = 0; i < 16; i++)
96
        qemu_get_be32s(f, &env->mmuregs[i]);
97
#endif
98
    tlb_flush(env, 1);
99
    return 0;
100
}
101

    
102