240
static void pl061_save(QEMUFile *f, void *opaque)
242
pl061_state *s = (pl061_state *)opaque;
244
qemu_put_be32(f, s->locked);
245
qemu_put_be32(f, s->data);
246
qemu_put_be32(f, s->old_data);
247
qemu_put_be32(f, s->dir);
248
qemu_put_be32(f, s->isense);
249
qemu_put_be32(f, s->ibe);
250
qemu_put_be32(f, s->iev);
251
qemu_put_be32(f, s->im);
252
qemu_put_be32(f, s->istate);
253
qemu_put_be32(f, s->afsel);
254
qemu_put_be32(f, s->dr2r);
255
qemu_put_be32(f, s->dr4r);
256
qemu_put_be32(f, s->dr8r);
257
qemu_put_be32(f, s->odr);
258
qemu_put_be32(f, s->pur);
259
qemu_put_be32(f, s->pdr);
260
qemu_put_be32(f, s->slr);
261
qemu_put_be32(f, s->den);
262
qemu_put_be32(f, s->cr);
263
qemu_put_be32(f, s->float_high);
266
static int pl061_load(QEMUFile *f, void *opaque, int version_id)
268
pl061_state *s = (pl061_state *)opaque;
272
s->locked = qemu_get_be32(f);
273
s->data = qemu_get_be32(f);
274
s->old_data = qemu_get_be32(f);
275
s->dir = qemu_get_be32(f);
276
s->isense = qemu_get_be32(f);
277
s->ibe = qemu_get_be32(f);
278
s->iev = qemu_get_be32(f);
279
s->im = qemu_get_be32(f);
280
s->istate = qemu_get_be32(f);
281
s->afsel = qemu_get_be32(f);
282
s->dr2r = qemu_get_be32(f);
283
s->dr4r = qemu_get_be32(f);
284
s->dr8r = qemu_get_be32(f);
285
s->odr = qemu_get_be32(f);
286
s->pur = qemu_get_be32(f);
287
s->pdr = qemu_get_be32(f);
288
s->slr = qemu_get_be32(f);
289
s->den = qemu_get_be32(f);
290
s->cr = qemu_get_be32(f);
291
s->float_high = qemu_get_be32(f);
243
296
/* Returns an array of inputs. */
244
297
qemu_irq *pl061_init(uint32_t base, qemu_irq irq, qemu_irq **out)
250
303
iomemtype = cpu_register_io_memory(0, pl061_readfn,
251
304
pl061_writefn, s);
252
305
cpu_register_physical_memory(base, 0x00001000, iomemtype);
259
/* ??? Save/restore. */
311
register_savevm("pl061_gpio", -1, 1, pl061_save, pl061_load, s);
260
312
return qemu_allocate_irqs(pl061_set_irq, s, 8);