Revision 293c16aa
b/hw/stellaris.c | ||
---|---|---|
604 | 604 |
s->dcgc[0] = 1; |
605 | 605 |
} |
606 | 606 |
|
607 |
static void ssys_save(QEMUFile *f, void *opaque)
|
|
607 |
static int stellaris_sys_post_load(void *opaque, int version_id)
|
|
608 | 608 |
{ |
609 |
ssys_state *s = (ssys_state *)opaque; |
|
610 |
|
|
611 |
qemu_put_be32(f, s->pborctl); |
|
612 |
qemu_put_be32(f, s->ldopctl); |
|
613 |
qemu_put_be32(f, s->int_mask); |
|
614 |
qemu_put_be32(f, s->int_status); |
|
615 |
qemu_put_be32(f, s->resc); |
|
616 |
qemu_put_be32(f, s->rcc); |
|
617 |
qemu_put_be32(f, s->rcgc[0]); |
|
618 |
qemu_put_be32(f, s->rcgc[1]); |
|
619 |
qemu_put_be32(f, s->rcgc[2]); |
|
620 |
qemu_put_be32(f, s->scgc[0]); |
|
621 |
qemu_put_be32(f, s->scgc[1]); |
|
622 |
qemu_put_be32(f, s->scgc[2]); |
|
623 |
qemu_put_be32(f, s->dcgc[0]); |
|
624 |
qemu_put_be32(f, s->dcgc[1]); |
|
625 |
qemu_put_be32(f, s->dcgc[2]); |
|
626 |
qemu_put_be32(f, s->clkvclr); |
|
627 |
qemu_put_be32(f, s->ldoarst); |
|
628 |
} |
|
629 |
|
|
630 |
static int ssys_load(QEMUFile *f, void *opaque, int version_id) |
|
631 |
{ |
|
632 |
ssys_state *s = (ssys_state *)opaque; |
|
633 |
|
|
634 |
if (version_id != 1) |
|
635 |
return -EINVAL; |
|
609 |
ssys_state *s = opaque; |
|
636 | 610 |
|
637 |
s->pborctl = qemu_get_be32(f); |
|
638 |
s->ldopctl = qemu_get_be32(f); |
|
639 |
s->int_mask = qemu_get_be32(f); |
|
640 |
s->int_status = qemu_get_be32(f); |
|
641 |
s->resc = qemu_get_be32(f); |
|
642 |
s->rcc = qemu_get_be32(f); |
|
643 |
s->rcgc[0] = qemu_get_be32(f); |
|
644 |
s->rcgc[1] = qemu_get_be32(f); |
|
645 |
s->rcgc[2] = qemu_get_be32(f); |
|
646 |
s->scgc[0] = qemu_get_be32(f); |
|
647 |
s->scgc[1] = qemu_get_be32(f); |
|
648 |
s->scgc[2] = qemu_get_be32(f); |
|
649 |
s->dcgc[0] = qemu_get_be32(f); |
|
650 |
s->dcgc[1] = qemu_get_be32(f); |
|
651 |
s->dcgc[2] = qemu_get_be32(f); |
|
652 |
s->clkvclr = qemu_get_be32(f); |
|
653 |
s->ldoarst = qemu_get_be32(f); |
|
654 | 611 |
ssys_calculate_system_clock(s); |
655 | 612 |
|
656 | 613 |
return 0; |
657 | 614 |
} |
658 | 615 |
|
616 |
static const VMStateDescription vmstate_stellaris_sys = { |
|
617 |
.name = "stellaris_sys", |
|
618 |
.version_id = 1, |
|
619 |
.minimum_version_id = 1, |
|
620 |
.minimum_version_id_old = 1, |
|
621 |
.post_load = stellaris_sys_post_load, |
|
622 |
.fields = (VMStateField[]) { |
|
623 |
VMSTATE_UINT32(pborctl, ssys_state), |
|
624 |
VMSTATE_UINT32(ldopctl, ssys_state), |
|
625 |
VMSTATE_UINT32(int_mask, ssys_state), |
|
626 |
VMSTATE_UINT32(int_status, ssys_state), |
|
627 |
VMSTATE_UINT32(resc, ssys_state), |
|
628 |
VMSTATE_UINT32(rcc, ssys_state), |
|
629 |
VMSTATE_UINT32_ARRAY(rcgc, ssys_state, 3), |
|
630 |
VMSTATE_UINT32_ARRAY(scgc, ssys_state, 3), |
|
631 |
VMSTATE_UINT32_ARRAY(dcgc, ssys_state, 3), |
|
632 |
VMSTATE_UINT32(clkvclr, ssys_state), |
|
633 |
VMSTATE_UINT32(ldoarst, ssys_state), |
|
634 |
VMSTATE_END_OF_LIST() |
|
635 |
} |
|
636 |
}; |
|
637 |
|
|
659 | 638 |
static int stellaris_sys_init(uint32_t base, qemu_irq irq, |
660 | 639 |
stellaris_board_info * board, |
661 | 640 |
uint8_t *macaddr) |
... | ... | |
675 | 654 |
DEVICE_NATIVE_ENDIAN); |
676 | 655 |
cpu_register_physical_memory(base, 0x00001000, iomemtype); |
677 | 656 |
ssys_reset(s); |
678 |
register_savevm(NULL, "stellaris_sys", -1, 1, ssys_save, ssys_load, s);
|
|
657 |
vmstate_register(NULL, -1, &vmstate_stellaris_sys, s);
|
|
679 | 658 |
return 0; |
680 | 659 |
} |
681 | 660 |
|
Also available in: Unified diff