Revision efb56cf7 hw/pcnet.c
b/hw/pcnet.c | ||
---|---|---|
69 | 69 |
uint16_t csr[128]; |
70 | 70 |
uint16_t bcr[32]; |
71 | 71 |
uint64_t timer; |
72 |
int mmio_index, xmit_pos, recv_pos;
|
|
72 |
int mmio_index, xmit_pos; |
|
73 | 73 |
uint8_t buffer[4096]; |
74 | 74 |
int tx_busy; |
75 | 75 |
qemu_irq irq; |
... | ... | |
1067 | 1067 |
if (CSR_STOP(s) || CSR_SPND(s)) |
1068 | 1068 |
return 0; |
1069 | 1069 |
|
1070 |
if (s->recv_pos > 0) |
|
1071 |
return 0; |
|
1072 |
|
|
1073 | 1070 |
return sizeof(s->buffer)-16; |
1074 | 1071 |
} |
1075 | 1072 |
|
... | ... | |
1896 | 1893 |
qemu_put_be16s(f, &s->bcr[i]); |
1897 | 1894 |
qemu_put_be64s(f, &s->timer); |
1898 | 1895 |
qemu_put_sbe32(f, s->xmit_pos); |
1899 |
qemu_put_sbe32(f, s->recv_pos); |
|
1900 | 1896 |
qemu_put_buffer(f, s->buffer, 4096); |
1901 | 1897 |
qemu_put_sbe32(f, s->tx_busy); |
1902 | 1898 |
qemu_put_timer(f, s->poll_timer); |
... | ... | |
1905 | 1901 |
static int pcnet_load(QEMUFile *f, void *opaque, int version_id) |
1906 | 1902 |
{ |
1907 | 1903 |
PCNetState *s = opaque; |
1908 |
int i; |
|
1904 |
int i, dummy;
|
|
1909 | 1905 |
|
1910 |
if (version_id != 2)
|
|
1906 |
if (version_id < 2 || version_id > 3)
|
|
1911 | 1907 |
return -EINVAL; |
1912 | 1908 |
|
1913 | 1909 |
qemu_get_sbe32s(f, &s->rap); |
... | ... | |
1922 | 1918 |
qemu_get_be16s(f, &s->bcr[i]); |
1923 | 1919 |
qemu_get_be64s(f, &s->timer); |
1924 | 1920 |
qemu_get_sbe32s(f, &s->xmit_pos); |
1925 |
qemu_get_sbe32s(f, &s->recv_pos); |
|
1921 |
if (version_id == 2) { |
|
1922 |
qemu_get_sbe32s(f, &dummy); |
|
1923 |
} |
|
1926 | 1924 |
qemu_get_buffer(f, s->buffer, 4096); |
1927 | 1925 |
qemu_get_sbe32s(f, &s->tx_busy); |
1928 | 1926 |
qemu_get_timer(f, s->poll_timer); |
... | ... | |
1943 | 1941 |
PCIPCNetState *s = opaque; |
1944 | 1942 |
int ret; |
1945 | 1943 |
|
1946 |
if (version_id != 2) |
|
1947 |
return -EINVAL; |
|
1948 |
|
|
1949 | 1944 |
ret = pci_device_load(&s->pci_dev, f); |
1950 | 1945 |
if (ret < 0) |
1951 | 1946 |
return ret; |
... | ... | |
2071 | 2066 |
s->phys_mem_read = pci_physical_memory_read; |
2072 | 2067 |
s->phys_mem_write = pci_physical_memory_write; |
2073 | 2068 |
|
2074 |
register_savevm("pcnet", -1, 2, pci_pcnet_save, pci_pcnet_load, d);
|
|
2069 |
register_savevm("pcnet", -1, 3, pci_pcnet_save, pci_pcnet_load, d);
|
|
2075 | 2070 |
return pcnet_common_init(&pci_dev->qdev, s, pci_pcnet_cleanup); |
2076 | 2071 |
} |
2077 | 2072 |
|
... | ... | |
2148 | 2143 |
s->phys_mem_read = ledma_memory_read; |
2149 | 2144 |
s->phys_mem_write = ledma_memory_write; |
2150 | 2145 |
|
2151 |
register_savevm("pcnet", -1, 2, pcnet_save, pcnet_load, s);
|
|
2146 |
register_savevm("pcnet", -1, 3, pcnet_save, pcnet_load, s);
|
|
2152 | 2147 |
return pcnet_common_init(&dev->qdev, s, lance_cleanup); |
2153 | 2148 |
} |
2154 | 2149 |
|
Also available in: Unified diff