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