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