fastcall fixes for x86 smp interrupts
PATCH 1/1 fastcall fixes for x86 smp interrupts
I cross-checked the functions called by the BUILD_INTERRUPT macros and came up with this patch. Even though some of these functions currently take no args I made them all consistent. Some functions in the Voyager code that are not directly called from asm code become static.
Signed-off by: Brian Gerst <[email protected]>
arch/i386/kernel/apic.c +4 -4
@@ -1149,7 +1149,7 @@* interrupt as well. Thus we cannot inline the local irq ... ] */ -void smp_apic_timer_interrupt (struct pt_regs regs) +fastcall void smp_apic_timer_interrupt(struct pt_regs *regs) {int cpu =smp_processor_id ();
@@ -1169,14 +1169,14 @@* interrupt lock, which is the WrongThing (tm) to do. */ irq_enter (); -smp_local_timer_interrupt (®s); +smp_local_timer_interrupt (regs);irq_exit (); }/* * This interrupt should _never_ happen with our APIC/SMP architecture */ -asmlinkage void smp_spurious_interrupt(void) +fastcall void smp_spurious_interrupt(struct pt_regs *regs) {unsigned long v;
@@ -1200,7 +1200,7 @@* This interrupt should never happen with our APIC/SMP architecture */ -asmlinkage void smp_error_interrupt(void) +fastcall void smp_error_interrupt(struct pt_regs *regs) {unsigned long v, v1;
arch/i386/kernel/smp.c +3 -3
@@ -308,7 +308,7 @@* 2) Leave the mm if we are in the lazy tlb mode. */ -asmlinkage void smp_invalidate_interrupt (void) +fastcall void smp_invalidate_interrupt(struct pt_regs *regs) {unsigned long cpu;
@@ -579,12 +579,12 @@* all the work is done automatically when * we return from the interrupt. */ -asmlinkage void smp_reschedule_interrupt(void) +fastcall void smp_reschedule_interrupt(struct pt_regs *regs) {ack_APIC_irq (); } -asmlinkage void smp_call_function_interrupt(void) +fastcall void smp_call_function_interrupt(struct pt_regs *regs) {void (*func) (void *info) = call_data->func;void *info = call_data->info;
arch/i386/mach-voyager/voyager_smp.c +25 -25
126 lines not on this page · raw message