Revision 23e39294 hw/pl022.c

b/hw/pl022.c
244 244
   pl022_write
245 245
};
246 246

  
247
static void pl022_save(QEMUFile *f, void *opaque)
248
{
249
    pl022_state *s = (pl022_state *)opaque;
250
    int i;
251

  
252
    qemu_put_be32(f, s->cr0);
253
    qemu_put_be32(f, s->cr1);
254
    qemu_put_be32(f, s->bitmask);
255
    qemu_put_be32(f, s->sr);
256
    qemu_put_be32(f, s->cpsr);
257
    qemu_put_be32(f, s->is);
258
    qemu_put_be32(f, s->im);
259
    qemu_put_be32(f, s->tx_fifo_head);
260
    qemu_put_be32(f, s->rx_fifo_head);
261
    qemu_put_be32(f, s->tx_fifo_len);
262
    qemu_put_be32(f, s->rx_fifo_len);
263
    for (i = 0; i < 8; i++) {
264
        qemu_put_be16(f, s->tx_fifo[i]);
265
        qemu_put_be16(f, s->rx_fifo[i]);
266
    }
267
}
268

  
269
static int pl022_load(QEMUFile *f, void *opaque, int version_id)
270
{
271
    pl022_state *s = (pl022_state *)opaque;
272
    int i;
273

  
274
    if (version_id != 1)
275
        return -EINVAL;
276

  
277
    s->cr0 = qemu_get_be32(f);
278
    s->cr1 = qemu_get_be32(f);
279
    s->bitmask = qemu_get_be32(f);
280
    s->sr = qemu_get_be32(f);
281
    s->cpsr = qemu_get_be32(f);
282
    s->is = qemu_get_be32(f);
283
    s->im = qemu_get_be32(f);
284
    s->tx_fifo_head = qemu_get_be32(f);
285
    s->rx_fifo_head = qemu_get_be32(f);
286
    s->tx_fifo_len = qemu_get_be32(f);
287
    s->rx_fifo_len = qemu_get_be32(f);
288
    for (i = 0; i < 8; i++) {
289
        s->tx_fifo[i] = qemu_get_be16(f);
290
        s->rx_fifo[i] = qemu_get_be16(f);
291
    }
292

  
293
    return 0;
294
}
295

  
247 296
void pl022_init(uint32_t base, qemu_irq irq, int (*xfer_cb)(void *, int),
248 297
                void * opaque)
249 298
{
......
259 308
    s->xfer_cb = xfer_cb;
260 309
    s->opaque = opaque;
261 310
    pl022_reset(s);
262
    /* ??? Save/restore.  */
311
    register_savevm("pl022_ssp", -1, 1, pl022_save, pl022_load, s);
263 312
}
264 313

  
265 314

  

Also available in: Unified diff