Revision bfc179b6

b/target-i386/cpu.h
687 687

  
688 688
    /* For KVM */
689 689
    uint64_t interrupt_bitmap[256 / 64];
690
    int32_t pending_irq_vmstate;
690 691
    uint32_t mp_state;
691 692

  
692 693
    /* in order to simplify APIC support, we leave this pointer to the
b/target-i386/machine.c
27 27
{
28 28
    CPUState *env = opaque;
29 29
    uint16_t fpregs_format;
30
    int32_t pending_irq;
31 30
    int i, bit;
32 31

  
33 32
    cpu_synchronize_state(env);
......
142 141

  
143 142
    /* There can only be one pending IRQ set in the bitmap at a time, so try
144 143
       to find it and save its number instead (-1 for none). */
145
    pending_irq = -1;
144
    env->pending_irq_vmstate = -1;
146 145
    for (i = 0; i < ARRAY_SIZE(env->interrupt_bitmap); i++) {
147 146
        if (env->interrupt_bitmap[i]) {
148 147
            bit = ctz64(env->interrupt_bitmap[i]);
149
            pending_irq = i * 64 + bit;
148
            env->pending_irq_vmstate = i * 64 + bit;
150 149
            break;
151 150
        }
152 151
    }
153
    qemu_put_sbe32s(f, &pending_irq);
152
    qemu_put_sbe32s(f, &env->pending_irq_vmstate);
154 153
    qemu_put_be32s(f, &env->mp_state);
155 154
    qemu_put_be64s(f, &env->tsc);
156 155

  
......
198 197
    CPUState *env = opaque;
199 198
    int i, guess_mmx;
200 199
    uint16_t fpregs_format;
201
    int32_t pending_irq;
202 200

  
203 201
    cpu_synchronize_state(env);
204 202
    if (version_id < 3 || version_id > CPU_SAVE_VERSION)
......
344 342
    }
345 343

  
346 344
    if (version_id >= 9) {
347
        qemu_get_sbe32s(f, &pending_irq);
345
        qemu_get_sbe32s(f, &env->pending_irq_vmstate);
348 346
        memset(&env->interrupt_bitmap, 0, sizeof(env->interrupt_bitmap));
349
        if (pending_irq >= 0) {
350
            env->interrupt_bitmap[pending_irq / 64] |=
351
                (uint64_t)1 << (pending_irq % 64);
347
        if (env->pending_irq_vmstate >= 0) {
348
            env->interrupt_bitmap[env->pending_irq_vmstate / 64] |=
349
                (uint64_t)1 << (env->pending_irq_vmstate % 64);
352 350
        }
353 351
        qemu_get_be32s(f, &env->mp_state);
354 352
        qemu_get_be64s(f, &env->tsc);

Also available in: Unified diff