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