Revision 23e39294 hw/pl061.c

b/hw/pl061.c
240 240
   pl061_write
241 241
};
242 242

  
243
static void pl061_save(QEMUFile *f, void *opaque)
244
{
245
    pl061_state *s = (pl061_state *)opaque;
246

  
247
    qemu_put_be32(f, s->locked);
248
    qemu_put_be32(f, s->data);
249
    qemu_put_be32(f, s->old_data);
250
    qemu_put_be32(f, s->dir);
251
    qemu_put_be32(f, s->isense);
252
    qemu_put_be32(f, s->ibe);
253
    qemu_put_be32(f, s->iev);
254
    qemu_put_be32(f, s->im);
255
    qemu_put_be32(f, s->istate);
256
    qemu_put_be32(f, s->afsel);
257
    qemu_put_be32(f, s->dr2r);
258
    qemu_put_be32(f, s->dr4r);
259
    qemu_put_be32(f, s->dr8r);
260
    qemu_put_be32(f, s->odr);
261
    qemu_put_be32(f, s->pur);
262
    qemu_put_be32(f, s->pdr);
263
    qemu_put_be32(f, s->slr);
264
    qemu_put_be32(f, s->den);
265
    qemu_put_be32(f, s->cr);
266
    qemu_put_be32(f, s->float_high);
267
}
268

  
269
static int pl061_load(QEMUFile *f, void *opaque, int version_id)
270
{
271
    pl061_state *s = (pl061_state *)opaque;
272
    if (version_id != 1)
273
        return -EINVAL;
274

  
275
    s->locked = qemu_get_be32(f);
276
    s->data = qemu_get_be32(f);
277
    s->old_data = qemu_get_be32(f);
278
    s->dir = qemu_get_be32(f);
279
    s->isense = qemu_get_be32(f);
280
    s->ibe = qemu_get_be32(f);
281
    s->iev = qemu_get_be32(f);
282
    s->im = qemu_get_be32(f);
283
    s->istate = qemu_get_be32(f);
284
    s->afsel = qemu_get_be32(f);
285
    s->dr2r = qemu_get_be32(f);
286
    s->dr4r = qemu_get_be32(f);
287
    s->dr8r = qemu_get_be32(f);
288
    s->odr = qemu_get_be32(f);
289
    s->pur = qemu_get_be32(f);
290
    s->pdr = qemu_get_be32(f);
291
    s->slr = qemu_get_be32(f);
292
    s->den = qemu_get_be32(f);
293
    s->cr = qemu_get_be32(f);
294
    s->float_high = qemu_get_be32(f);
295

  
296
    return 0;
297
}
298

  
243 299
/* Returns an array of inputs.  */
244 300
qemu_irq *pl061_init(uint32_t base, qemu_irq irq, qemu_irq **out)
245 301
{
......
256 312
    if (out)
257 313
        *out = s->out;
258 314

  
259
    /* ??? Save/restore.  */
315
    register_savevm("pl061_gpio", -1, 1, pl061_save, pl061_load, s);
260 316
    return qemu_allocate_irqs(pl061_set_irq, s, 8);
261 317
}
262 318

  

Also available in: Unified diff