Revision 0abaa7c1 hw/pcnet.c
b/hw/pcnet.c | ||
---|---|---|
60 | 60 |
typedef struct PCNetState_st PCNetState; |
61 | 61 |
|
62 | 62 |
struct PCNetState_st { |
63 |
PCIDevice *pci_dev; |
|
64 | 63 |
VLANClientState *vc; |
65 | 64 |
uint8_t macaddr[6]; |
66 | 65 |
QEMUTimer *poll_timer; |
... | ... | |
1885 | 1884 |
PCNetState *s = opaque; |
1886 | 1885 |
unsigned int i; |
1887 | 1886 |
|
1888 |
if (s->pci_dev) |
|
1889 |
pci_device_save(s->pci_dev, f); |
|
1890 |
|
|
1891 | 1887 |
qemu_put_sbe32(f, s->rap); |
1892 | 1888 |
qemu_put_sbe32(f, s->isr); |
1893 | 1889 |
qemu_put_sbe32(f, s->lnkst); |
... | ... | |
1909 | 1905 |
static int pcnet_load(QEMUFile *f, void *opaque, int version_id) |
1910 | 1906 |
{ |
1911 | 1907 |
PCNetState *s = opaque; |
1912 |
int i, ret;
|
|
1908 |
int i; |
|
1913 | 1909 |
|
1914 | 1910 |
if (version_id != 2) |
1915 | 1911 |
return -EINVAL; |
1916 | 1912 |
|
1917 |
if (s->pci_dev) { |
|
1918 |
ret = pci_device_load(s->pci_dev, f); |
|
1919 |
if (ret < 0) |
|
1920 |
return ret; |
|
1921 |
} |
|
1922 |
|
|
1923 | 1913 |
qemu_get_sbe32s(f, &s->rap); |
1924 | 1914 |
qemu_get_sbe32s(f, &s->isr); |
1925 | 1915 |
qemu_get_sbe32s(f, &s->lnkst); |
... | ... | |
1940 | 1930 |
return 0; |
1941 | 1931 |
} |
1942 | 1932 |
|
1933 |
static void pci_pcnet_save(QEMUFile *f, void *opaque) |
|
1934 |
{ |
|
1935 |
PCIPCNetState *s = opaque; |
|
1936 |
|
|
1937 |
pci_device_save(&s->pci_dev, f); |
|
1938 |
pcnet_save(f, &s->state); |
|
1939 |
} |
|
1940 |
|
|
1941 |
static int pci_pcnet_load(QEMUFile *f, void *opaque, int version_id) |
|
1942 |
{ |
|
1943 |
PCIPCNetState *s = opaque; |
|
1944 |
int ret; |
|
1945 |
|
|
1946 |
if (version_id != 2) |
|
1947 |
return -EINVAL; |
|
1948 |
|
|
1949 |
ret = pci_device_load(&s->pci_dev, f); |
|
1950 |
if (ret < 0) |
|
1951 |
return ret; |
|
1952 |
|
|
1953 |
return pcnet_load(f, &s->state, version_id); |
|
1954 |
} |
|
1955 |
|
|
1943 | 1956 |
static void pcnet_common_cleanup(PCNetState *d) |
1944 | 1957 |
{ |
1945 | 1958 |
unregister_savevm("pcnet", d); |
... | ... | |
1958 | 1971 |
pcnet_can_receive, pcnet_receive, NULL, |
1959 | 1972 |
cleanup, s); |
1960 | 1973 |
pcnet_h_reset(s); |
1961 |
register_savevm("pcnet", -1, 2, pcnet_save, pcnet_load, s); |
|
1962 | 1974 |
return 0; |
1963 | 1975 |
} |
1964 | 1976 |
|
... | ... | |
2060 | 2072 |
s->irq = pci_dev->irq[0]; |
2061 | 2073 |
s->phys_mem_read = pci_physical_memory_read; |
2062 | 2074 |
s->phys_mem_write = pci_physical_memory_write; |
2063 |
s->pci_dev = pci_dev; |
|
2064 | 2075 |
|
2076 |
register_savevm("pcnet", -1, 2, pci_pcnet_save, pci_pcnet_load, d); |
|
2065 | 2077 |
return pcnet_common_init(&pci_dev->qdev, s, pci_pcnet_cleanup); |
2066 | 2078 |
} |
2067 | 2079 |
|
... | ... | |
2138 | 2150 |
s->phys_mem_read = ledma_memory_read; |
2139 | 2151 |
s->phys_mem_write = ledma_memory_write; |
2140 | 2152 |
|
2153 |
register_savevm("pcnet", -1, 2, pcnet_save, pcnet_load, s); |
|
2141 | 2154 |
return pcnet_common_init(&dev->qdev, s, lance_cleanup); |
2142 | 2155 |
} |
2143 | 2156 |
|
Also available in: Unified diff