Revision 23e39294 hw/stellaris_enet.c

b/hw/stellaris_enet.c
326 326
    s->tx_frame_len = -1;
327 327
}
328 328

  
329
static void stellaris_enet_save(QEMUFile *f, void *opaque)
330
{
331
    stellaris_enet_state *s = (stellaris_enet_state *)opaque;
332
    int i;
333

  
334
    qemu_put_be32(f, s->ris);
335
    qemu_put_be32(f, s->im);
336
    qemu_put_be32(f, s->rctl);
337
    qemu_put_be32(f, s->tctl);
338
    qemu_put_be32(f, s->thr);
339
    qemu_put_be32(f, s->mctl);
340
    qemu_put_be32(f, s->mdv);
341
    qemu_put_be32(f, s->mtxd);
342
    qemu_put_be32(f, s->mrxd);
343
    qemu_put_be32(f, s->np);
344
    qemu_put_be32(f, s->tx_frame_len);
345
    qemu_put_be32(f, s->tx_fifo_len);
346
    qemu_put_buffer(f, s->tx_fifo, sizeof(s->tx_fifo));
347
    for (i = 0; i < 31; i++) {
348
        qemu_put_be32(f, s->rx[i].len);
349
        qemu_put_buffer(f, s->rx[i].data, sizeof(s->rx[i].data));
350

  
351
    }
352
    qemu_put_be32(f, s->next_packet);
353
    qemu_put_be32(f, s->rx_fifo - s->rx[s->next_packet].data);
354
    qemu_put_be32(f, s->rx_fifo_len);
355
}
356

  
357
static int stellaris_enet_load(QEMUFile *f, void *opaque, int version_id)
358
{
359
    stellaris_enet_state *s = (stellaris_enet_state *)opaque;
360
    int i;
361

  
362
    if (version_id != 1)
363
        return -EINVAL;
364

  
365
    s->ris = qemu_get_be32(f);
366
    s->im = qemu_get_be32(f);
367
    s->rctl = qemu_get_be32(f);
368
    s->tctl = qemu_get_be32(f);
369
    s->thr = qemu_get_be32(f);
370
    s->mctl = qemu_get_be32(f);
371
    s->mdv = qemu_get_be32(f);
372
    s->mtxd = qemu_get_be32(f);
373
    s->mrxd = qemu_get_be32(f);
374
    s->np = qemu_get_be32(f);
375
    s->tx_frame_len = qemu_get_be32(f);
376
    s->tx_fifo_len = qemu_get_be32(f);
377
    qemu_get_buffer(f, s->tx_fifo, sizeof(s->tx_fifo));
378
    for (i = 0; i < 31; i++) {
379
        s->rx[i].len = qemu_get_be32(f);
380
        qemu_get_buffer(f, s->rx[i].data, sizeof(s->rx[i].data));
381

  
382
    }
383
    s->next_packet = qemu_get_be32(f);
384
    s->rx_fifo = s->rx[s->next_packet].data + qemu_get_be32(f);
385
    s->rx_fifo_len = qemu_get_be32(f);
386

  
387
    return 0;
388
}
389

  
329 390
void stellaris_enet_init(NICInfo *nd, uint32_t base, qemu_irq irq)
330 391
{
331 392
    stellaris_enet_state *s;
......
344 405
                                     stellaris_enet_can_receive, s);
345 406

  
346 407
    stellaris_enet_reset(s);
408
    register_savevm("stellaris_enet", -1, 1,
409
                    stellaris_enet_save, stellaris_enet_load, s);
347 410
}

Also available in: Unified diff