Revision 1a7de94a hw/apic.c

b/hw/apic.c
166 166
    tab[i] &= ~mask;
167 167
}
168 168

  
169
void apic_local_deliver(CPUState *env, int vector)
169
static void apic_local_deliver(CPUState *env, int vector)
170 170
{
171 171
    APICState *s = env->apic_state;
172 172
    uint32_t lvt = s->lvt[vector];
......
197 197
    }
198 198
}
199 199

  
200
void apic_deliver_pic_intr(CPUState *env, int level)
201
{
202
    if (level)
203
        apic_local_deliver(env, APIC_LVT_LINT0);
204
    else {
205
        APICState *s = env->apic_state;
206
        uint32_t lvt = s->lvt[APIC_LVT_LINT0];
207

  
208
        switch ((lvt >> 8) & 7) {
209
        case APIC_DM_FIXED:
210
            if (!(lvt & APIC_LVT_LEVEL_TRIGGER))
211
                break;
212
            reset_bit(s->irr, lvt & 0xff);
213
            /* fall through */
214
        case APIC_DM_EXTINT:
215
            cpu_reset_interrupt(env, CPU_INTERRUPT_HARD);
216
            break;
217
        }
218
    }
219
}
220

  
200 221
#define foreach_apic(apic, deliver_bitmask, code) \
201 222
{\
202 223
    int __i, __j, __mask;\

Also available in: Unified diff