Revision 23e39294 hw/pl011.c
b/hw/pl011.c | ||
---|---|---|
238 | 238 |
pl011_write |
239 | 239 |
}; |
240 | 240 |
|
241 |
static void pl011_save(QEMUFile *f, void *opaque) |
|
242 |
{ |
|
243 |
pl011_state *s = (pl011_state *)opaque; |
|
244 |
int i; |
|
245 |
|
|
246 |
qemu_put_be32(f, s->readbuff); |
|
247 |
qemu_put_be32(f, s->flags); |
|
248 |
qemu_put_be32(f, s->lcr); |
|
249 |
qemu_put_be32(f, s->cr); |
|
250 |
qemu_put_be32(f, s->dmacr); |
|
251 |
qemu_put_be32(f, s->int_enabled); |
|
252 |
qemu_put_be32(f, s->int_level); |
|
253 |
for (i = 0; i < 16; i++) |
|
254 |
qemu_put_be32(f, s->read_fifo[i]); |
|
255 |
qemu_put_be32(f, s->ilpr); |
|
256 |
qemu_put_be32(f, s->ibrd); |
|
257 |
qemu_put_be32(f, s->fbrd); |
|
258 |
qemu_put_be32(f, s->ifl); |
|
259 |
qemu_put_be32(f, s->read_pos); |
|
260 |
qemu_put_be32(f, s->read_count); |
|
261 |
qemu_put_be32(f, s->read_trigger); |
|
262 |
} |
|
263 |
|
|
264 |
static int pl011_load(QEMUFile *f, void *opaque, int version_id) |
|
265 |
{ |
|
266 |
pl011_state *s = (pl011_state *)opaque; |
|
267 |
int i; |
|
268 |
|
|
269 |
if (version_id != 1) |
|
270 |
return -EINVAL; |
|
271 |
|
|
272 |
s->readbuff = qemu_get_be32(f); |
|
273 |
s->flags = qemu_get_be32(f); |
|
274 |
s->lcr = qemu_get_be32(f); |
|
275 |
s->cr = qemu_get_be32(f); |
|
276 |
s->dmacr = qemu_get_be32(f); |
|
277 |
s->int_enabled = qemu_get_be32(f); |
|
278 |
s->int_level = qemu_get_be32(f); |
|
279 |
for (i = 0; i < 16; i++) |
|
280 |
s->read_fifo[i] = qemu_get_be32(f); |
|
281 |
s->ilpr = qemu_get_be32(f); |
|
282 |
s->ibrd = qemu_get_be32(f); |
|
283 |
s->fbrd = qemu_get_be32(f); |
|
284 |
s->ifl = qemu_get_be32(f); |
|
285 |
s->read_pos = qemu_get_be32(f); |
|
286 |
s->read_count = qemu_get_be32(f); |
|
287 |
s->read_trigger = qemu_get_be32(f); |
|
288 |
|
|
289 |
return 0; |
|
290 |
} |
|
291 |
|
|
241 | 292 |
void pl011_init(uint32_t base, qemu_irq irq, |
242 | 293 |
CharDriverState *chr, enum pl011_type type) |
243 | 294 |
{ |
... | ... | |
260 | 311 |
qemu_chr_add_handlers(chr, pl011_can_receive, pl011_receive, |
261 | 312 |
pl011_event, s); |
262 | 313 |
} |
263 |
/* ??? Save/restore. */
|
|
314 |
register_savevm("pl011_uart", -1, 1, pl011_save, pl011_load, s);
|
|
264 | 315 |
} |
265 | 316 |
|
Also available in: Unified diff