aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/smp.c
diff options
context:
space:
mode:
authorKeir Fraser <keir@xen.org>2012-03-30 08:50:33 +0100
committerKeir Fraser <keir@xen.org>2012-03-30 08:50:33 +0100
commitb57458c1d02b3ec8d8752e9cfdb17d1a89157f03 (patch)
tree002213ad5985f962d2cd37f073dee341582682c1 /xen/arch/x86/smp.c
parentd928515d763dbcb90b017460c22c990e02a2b9d8 (diff)
downloadxen-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.c15
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);
}