diff options
author | Keir Fraser <keir@xen.org> | 2012-03-30 08:50:33 +0100 |
---|---|---|
committer | Keir Fraser <keir@xen.org> | 2012-03-30 08:50:33 +0100 |
commit | b57458c1d02b3ec8d8752e9cfdb17d1a89157f03 (patch) | |
tree | 002213ad5985f962d2cd37f073dee341582682c1 /xen/arch/x86/smp.c | |
parent | d928515d763dbcb90b017460c22c990e02a2b9d8 (diff) | |
download | xen-b57458c1d02b3ec8d8752e9cfdb17d1a89157f03.tar.gz xen-b57458c1d02b3ec8d8752e9cfdb17d1a89157f03.tar.bz2 xen-b57458c1d02b3ec8d8752e9cfdb17d1a89157f03.zip |
x86: All vectored interrupts go through do_IRQ().
Signed-off-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/smp.c')
-rw-r--r-- | xen/arch/x86/smp.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index 5eb322128f..814547bb6a 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -218,17 +218,14 @@ static cpumask_t flush_cpumask; static const void *flush_va; static unsigned int flush_flags; -fastcall void smp_invalidate_interrupt(void) +void invalidate_interrupt(struct cpu_user_regs *regs) { ack_APIC_irq(); perfc_incr(ipis); - this_cpu(irq_count)++; - irq_enter(); if ( !__sync_local_execstate() || (flush_flags & (FLUSH_TLB_GLOBAL | FLUSH_CACHE)) ) flush_area_local(flush_va, flush_flags); cpumask_clear_cpu(smp_processor_id(), &flush_cpumask); - irq_exit(); } void flush_area_mask(const cpumask_t *mask, const void *va, unsigned int flags) @@ -386,13 +383,11 @@ void smp_send_nmi_allbutself(void) send_IPI_mask(&cpu_online_map, APIC_DM_NMI); } -fastcall void smp_event_check_interrupt(struct cpu_user_regs *regs) +void event_check_interrupt(struct cpu_user_regs *regs) { - struct cpu_user_regs *old_regs = set_irq_regs(regs); ack_APIC_irq(); perfc_incr(ipis); this_cpu(irq_count)++; - set_irq_regs(old_regs); } static void __smp_call_function_interrupt(void) @@ -422,13 +417,9 @@ static void __smp_call_function_interrupt(void) irq_exit(); } -fastcall void smp_call_function_interrupt(struct cpu_user_regs *regs) +void call_function_interrupt(struct cpu_user_regs *regs) { - struct cpu_user_regs *old_regs = set_irq_regs(regs); - ack_APIC_irq(); perfc_incr(ipis); - this_cpu(irq_count)++; __smp_call_function_interrupt(); - set_irq_regs(old_regs); } |