static int apic_dispatch_post_load(void *opaque, int version_id) { APICCommonState *s = APIC_COMMON(opaque); APICCommonClass *info = APIC_COMMON_GET_CLASS(s); if (info->post_load) { info->post_load(s); } return 0; }
/* This function is only used for old state version 1 and 2 */ static int apic_load_old(QEMUFile *f, void *opaque, int version_id) { APICCommonState *s = opaque; APICCommonClass *info = APIC_COMMON_GET_CLASS(s); int i; if (version_id > 2) { return -EINVAL; } /* XXX: what if the base changes? (registered memory regions) */ qemu_get_be32s(f, &s->apicbase); qemu_get_8s(f, &s->id); qemu_get_8s(f, &s->arb_id); qemu_get_8s(f, &s->tpr); qemu_get_be32s(f, &s->spurious_vec); qemu_get_8s(f, &s->log_dest); qemu_get_8s(f, &s->dest_mode); for (i = 0; i < 8; i++) { qemu_get_be32s(f, &s->isr[i]); qemu_get_be32s(f, &s->tmr[i]); qemu_get_be32s(f, &s->irr[i]); } for (i = 0; i < APIC_LVT_NB; i++) { qemu_get_be32s(f, &s->lvt[i]); } qemu_get_be32s(f, &s->esr); qemu_get_be32s(f, &s->icr[0]); qemu_get_be32s(f, &s->icr[1]); qemu_get_be32s(f, &s->divide_conf); s->count_shift = qemu_get_be32(f); qemu_get_be32s(f, &s->initial_count); s->initial_count_load_time = qemu_get_be64(f); s->next_time = qemu_get_be64(f); if (version_id >= 2) { s->timer_expiry = qemu_get_be64(f); } if (info->post_load) { info->post_load(s); } return 0; }