summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--hw/eepro100.c94
1 files changed, 20 insertions, 74 deletions
diff --git a/hw/eepro100.c b/hw/eepro100.c
index 445d46c85d..62207da100 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -191,32 +191,14 @@ typedef enum {
 
 typedef struct {
     PCIDevice dev;
-#if 1
-    uint8_t cmd;
-    uint32_t start;
-    uint32_t stop;
-    uint8_t boundary;
-    uint8_t tsr;
-    uint8_t tpsr;
-    uint16_t tcnt;
-    uint16_t rcnt;
-    uint32_t rsar;
-    uint8_t rsr;
-    uint8_t rxcr;
-    uint8_t isr;
-    uint8_t dcfg;
-    uint8_t imr;
-    uint8_t phys[6];            /* mac address */
-    uint8_t curpag;
     uint8_t mult[8];            /* multicast mask array */
     int mmio_index;
     VLANClientState *vc;
-#endif
     uint8_t scb_stat;           /* SCB stat/ack byte */
     uint8_t int_stat;           /* PCI interrupt status */
+    /* region must not be saved by nic_save. */
     uint32_t region[3];         /* PCI region addresses */
     uint8_t macaddr[6];
-    uint32_t statcounter[19];
     uint16_t mdimem[32];
     eeprom_t *eeprom;
     uint32_t device;            /* device variant */
@@ -1618,51 +1600,31 @@ static int nic_load(QEMUFile * f, void *opaque, int version_id)
     if (version_id > 3)
         return -EINVAL;
 
-    if (version_id >= 3) {
-        ret = pci_device_load(&s->dev, f);
-        if (ret < 0)
-            return ret;
+    ret = pci_device_load(&s->dev, f);
+    if (ret < 0) {
+        return ret;
     }
 
-    if (version_id >= 2) {
-        qemu_get_8s(f, &s->rxcr);
-    } else {
-        s->rxcr = 0x0c;
-    }
+    /* Skip unused entries. */
+    qemu_fseek(f, 32, SEEK_CUR);
 
-    qemu_get_8s(f, &s->cmd);
-    qemu_get_be32s(f, &s->start);
-    qemu_get_be32s(f, &s->stop);
-    qemu_get_8s(f, &s->boundary);
-    qemu_get_8s(f, &s->tsr);
-    qemu_get_8s(f, &s->tpsr);
-    qemu_get_be16s(f, &s->tcnt);
-    qemu_get_be16s(f, &s->rcnt);
-    qemu_get_be32s(f, &s->rsar);
-    qemu_get_8s(f, &s->rsr);
-    qemu_get_8s(f, &s->isr);
-    qemu_get_8s(f, &s->dcfg);
-    qemu_get_8s(f, &s->imr);
-    qemu_get_buffer(f, s->phys, 6);
-    qemu_get_8s(f, &s->curpag);
     qemu_get_buffer(f, s->mult, 8);
     qemu_get_buffer(f, s->mem, sizeof(s->mem));
 
-    /* Restore all members of struct between scv_stat and mem. */
+    /* Restore all members of struct between scb_stat and mem. */
     qemu_get_8s(f, &s->scb_stat);
     qemu_get_8s(f, &s->int_stat);
-    for (i = 0; i < 3; i++) {
-        qemu_get_be32s(f, &s->region[i]);
-    }
+    /* Skip unused entries. */
+    qemu_fseek(f, 3 * 4, SEEK_CUR);
     qemu_get_buffer(f, s->macaddr, 6);
-    for (i = 0; i < 19; i++) {
-        qemu_get_be32s(f, &s->statcounter[i]);
-    }
+    /* Skip unused entries. */
+    qemu_fseek(f, 19 * 4, SEEK_CUR);
     for (i = 0; i < 32; i++) {
         qemu_get_be16s(f, &s->mdimem[i]);
     }
     /* The eeprom should be saved and restored by its own routines. */
     qemu_get_be32s(f, &s->device);
+    // TODO check device.
     qemu_get_be32s(f, &s->pointer);
     qemu_get_be32s(f, &s->cu_base);
     qemu_get_be32s(f, &s->cu_offset);
@@ -1709,36 +1671,20 @@ static void nic_save(QEMUFile * f, void *opaque)
 
     pci_device_save(&s->dev, f);
 
-    qemu_put_8s(f, &s->rxcr);
-
-    qemu_put_8s(f, &s->cmd);
-    qemu_put_be32s(f, &s->start);
-    qemu_put_be32s(f, &s->stop);
-    qemu_put_8s(f, &s->boundary);
-    qemu_put_8s(f, &s->tsr);
-    qemu_put_8s(f, &s->tpsr);
-    qemu_put_be16s(f, &s->tcnt);
-    qemu_put_be16s(f, &s->rcnt);
-    qemu_put_be32s(f, &s->rsar);
-    qemu_put_8s(f, &s->rsr);
-    qemu_put_8s(f, &s->isr);
-    qemu_put_8s(f, &s->dcfg);
-    qemu_put_8s(f, &s->imr);
-    qemu_put_buffer(f, s->phys, 6);
-    qemu_put_8s(f, &s->curpag);
+    /* Skip unused entries. */
+    qemu_fseek(f, 32, SEEK_CUR);
+
     qemu_put_buffer(f, s->mult, 8);
     qemu_put_buffer(f, s->mem, sizeof(s->mem));
 
-    /* Save all members of struct between scv_stat and mem. */
+    /* Save all members of struct between scb_stat and mem. */
     qemu_put_8s(f, &s->scb_stat);
     qemu_put_8s(f, &s->int_stat);
-    for (i = 0; i < 3; i++) {
-        qemu_put_be32s(f, &s->region[i]);
-    }
+    /* Skip unused entries. */
+    qemu_fseek(f, 3 * 4, SEEK_CUR);
     qemu_put_buffer(f, s->macaddr, 6);
-    for (i = 0; i < 19; i++) {
-        qemu_put_be32s(f, &s->statcounter[i]);
-    }
+    /* Skip unused entries. */
+    qemu_fseek(f, 19 * 4, SEEK_CUR);
     for (i = 0; i < 32; i++) {
         qemu_put_be16s(f, &s->mdimem[i]);
     }