Revision aa941b94 hw/pxa2xx_dma.c

b/hw/pxa2xx_dma.c
430 430
    pxa2xx_dma_write
431 431
};
432 432

  
433
static void pxa2xx_dma_save(QEMUFile *f, void *opaque)
434
{
435
    struct pxa2xx_dma_state_s *s = (struct pxa2xx_dma_state_s *) opaque;
436
    int i;
437

  
438
    qemu_put_be32(f, s->channels);
439

  
440
    qemu_put_be32s(f, &s->stopintr);
441
    qemu_put_be32s(f, &s->eorintr);
442
    qemu_put_be32s(f, &s->rasintr);
443
    qemu_put_be32s(f, &s->startintr);
444
    qemu_put_be32s(f, &s->endintr);
445
    qemu_put_be32s(f, &s->align);
446
    qemu_put_be32s(f, &s->pio);
447

  
448
    qemu_put_buffer(f, s->req, PXA2XX_DMA_NUM_REQUESTS);
449
    for (i = 0; i < s->channels; i ++) {
450
        qemu_put_betl(f, s->chan[i].descr);
451
        qemu_put_betl(f, s->chan[i].src);
452
        qemu_put_betl(f, s->chan[i].dest);
453
        qemu_put_be32s(f, &s->chan[i].cmd);
454
        qemu_put_be32s(f, &s->chan[i].state);
455
        qemu_put_be32(f, s->chan[i].request);
456
    };
457
}
458

  
459
static int pxa2xx_dma_load(QEMUFile *f, void *opaque, int version_id)
460
{
461
    struct pxa2xx_dma_state_s *s = (struct pxa2xx_dma_state_s *) opaque;
462
    int i;
463

  
464
    if (qemu_get_be32(f) != s->channels)
465
        return -EINVAL;
466

  
467
    qemu_get_be32s(f, &s->stopintr);
468
    qemu_get_be32s(f, &s->eorintr);
469
    qemu_get_be32s(f, &s->rasintr);
470
    qemu_get_be32s(f, &s->startintr);
471
    qemu_get_be32s(f, &s->endintr);
472
    qemu_get_be32s(f, &s->align);
473
    qemu_get_be32s(f, &s->pio);
474

  
475
    qemu_get_buffer(f, s->req, PXA2XX_DMA_NUM_REQUESTS);
476
    for (i = 0; i < s->channels; i ++) {
477
        s->chan[i].descr = qemu_get_betl(f);
478
        s->chan[i].src = qemu_get_betl(f);
479
        s->chan[i].dest = qemu_get_betl(f);
480
        qemu_get_be32s(f, &s->chan[i].cmd);
481
        qemu_get_be32s(f, &s->chan[i].state);
482
        s->chan[i].request = qemu_get_be32(f);
483
    };
484

  
485
    return 0;
486
}
487

  
433 488
static struct pxa2xx_dma_state_s *pxa2xx_dma_init(target_phys_addr_t base,
434 489
                qemu_irq irq, int channels)
435 490
{
......
455 510
                    pxa2xx_dma_writefn, s);
456 511
    cpu_register_physical_memory(base, 0x0000ffff, iomemtype);
457 512

  
513
    register_savevm("pxa2xx_dma", 0, 0, pxa2xx_dma_save, pxa2xx_dma_load, s);
514

  
458 515
    return s;
459 516
}
460 517

  

Also available in: Unified diff