Revision 2c6ab832
b/hw/cirrus_vga.c | ||
---|---|---|
2753 | 2753 |
cirrus_mmio_writel, |
2754 | 2754 |
}; |
2755 | 2755 |
|
2756 |
/* load/save state */ |
|
2757 |
|
|
2758 |
static void cirrus_vga_save(QEMUFile *f, void *opaque) |
|
2759 |
{ |
|
2760 |
CirrusVGAState *s = opaque; |
|
2761 |
|
|
2762 |
qemu_put_be32s(f, &s->latch); |
|
2763 |
qemu_put_8s(f, &s->sr_index); |
|
2764 |
qemu_put_buffer(f, s->sr, 256); |
|
2765 |
qemu_put_8s(f, &s->gr_index); |
|
2766 |
qemu_put_8s(f, &s->cirrus_shadow_gr0); |
|
2767 |
qemu_put_8s(f, &s->cirrus_shadow_gr1); |
|
2768 |
qemu_put_buffer(f, s->gr + 2, 254); |
|
2769 |
qemu_put_8s(f, &s->ar_index); |
|
2770 |
qemu_put_buffer(f, s->ar, 21); |
|
2771 |
qemu_put_be32s(f, &s->ar_flip_flop); |
|
2772 |
qemu_put_8s(f, &s->cr_index); |
|
2773 |
qemu_put_buffer(f, s->cr, 256); |
|
2774 |
qemu_put_8s(f, &s->msr); |
|
2775 |
qemu_put_8s(f, &s->fcr); |
|
2776 |
qemu_put_8s(f, &s->st00); |
|
2777 |
qemu_put_8s(f, &s->st01); |
|
2778 |
|
|
2779 |
qemu_put_8s(f, &s->dac_state); |
|
2780 |
qemu_put_8s(f, &s->dac_sub_index); |
|
2781 |
qemu_put_8s(f, &s->dac_read_index); |
|
2782 |
qemu_put_8s(f, &s->dac_write_index); |
|
2783 |
qemu_put_buffer(f, s->dac_cache, 3); |
|
2784 |
qemu_put_buffer(f, s->palette, 768); |
|
2785 |
|
|
2786 |
qemu_put_be32s(f, &s->bank_offset); |
|
2787 |
|
|
2788 |
qemu_put_8s(f, &s->cirrus_hidden_dac_lockindex); |
|
2789 |
qemu_put_8s(f, &s->cirrus_hidden_dac_data); |
|
2790 |
|
|
2791 |
qemu_put_be32s(f, &s->hw_cursor_x); |
|
2792 |
qemu_put_be32s(f, &s->hw_cursor_y); |
|
2793 |
/* XXX: we do not save the bitblt state - we assume we do not save |
|
2794 |
the state when the blitter is active */ |
|
2795 |
} |
|
2796 |
|
|
2797 |
static int cirrus_vga_load(QEMUFile *f, void *opaque, int version_id) |
|
2798 |
{ |
|
2799 |
CirrusVGAState *s = opaque; |
|
2800 |
|
|
2801 |
if (version_id != 1) |
|
2802 |
return -EINVAL; |
|
2803 |
|
|
2804 |
qemu_get_be32s(f, &s->latch); |
|
2805 |
qemu_get_8s(f, &s->sr_index); |
|
2806 |
qemu_get_buffer(f, s->sr, 256); |
|
2807 |
qemu_get_8s(f, &s->gr_index); |
|
2808 |
qemu_get_8s(f, &s->cirrus_shadow_gr0); |
|
2809 |
qemu_get_8s(f, &s->cirrus_shadow_gr1); |
|
2810 |
s->gr[0x00] = s->cirrus_shadow_gr0 & 0x0f; |
|
2811 |
s->gr[0x01] = s->cirrus_shadow_gr1 & 0x0f; |
|
2812 |
qemu_get_buffer(f, s->gr + 2, 254); |
|
2813 |
qemu_get_8s(f, &s->ar_index); |
|
2814 |
qemu_get_buffer(f, s->ar, 21); |
|
2815 |
qemu_get_be32s(f, &s->ar_flip_flop); |
|
2816 |
qemu_get_8s(f, &s->cr_index); |
|
2817 |
qemu_get_buffer(f, s->cr, 256); |
|
2818 |
qemu_get_8s(f, &s->msr); |
|
2819 |
qemu_get_8s(f, &s->fcr); |
|
2820 |
qemu_get_8s(f, &s->st00); |
|
2821 |
qemu_get_8s(f, &s->st01); |
|
2822 |
|
|
2823 |
qemu_get_8s(f, &s->dac_state); |
|
2824 |
qemu_get_8s(f, &s->dac_sub_index); |
|
2825 |
qemu_get_8s(f, &s->dac_read_index); |
|
2826 |
qemu_get_8s(f, &s->dac_write_index); |
|
2827 |
qemu_get_buffer(f, s->dac_cache, 3); |
|
2828 |
qemu_get_buffer(f, s->palette, 768); |
|
2829 |
|
|
2830 |
qemu_get_be32s(f, &s->bank_offset); |
|
2831 |
|
|
2832 |
qemu_get_8s(f, &s->cirrus_hidden_dac_lockindex); |
|
2833 |
qemu_get_8s(f, &s->cirrus_hidden_dac_data); |
|
2834 |
|
|
2835 |
qemu_get_be32s(f, &s->hw_cursor_x); |
|
2836 |
qemu_get_be32s(f, &s->hw_cursor_y); |
|
2837 |
|
|
2838 |
/* force refresh */ |
|
2839 |
s->graphic_mode = -1; |
|
2840 |
cirrus_update_bank_ptr(s, 0); |
|
2841 |
cirrus_update_bank_ptr(s, 1); |
|
2842 |
return 0; |
|
2843 |
} |
|
2844 |
|
|
2756 | 2845 |
/*************************************** |
2757 | 2846 |
* |
2758 | 2847 |
* initialize |
... | ... | |
2862 | 2951 |
s->get_resolution = cirrus_get_resolution; |
2863 | 2952 |
s->cursor_invalidate = cirrus_cursor_invalidate; |
2864 | 2953 |
s->cursor_draw_line = cirrus_cursor_draw_line; |
2954 |
|
|
2955 |
register_savevm("cirrus_vga", 0, 1, cirrus_vga_save, cirrus_vga_load, s); |
|
2865 | 2956 |
} |
2866 | 2957 |
|
2867 | 2958 |
/*************************************** |
Also available in: Unified diff