Skip to contentSkip to conversation

fastcall fixes for x86 smp interrupts

PATCH New Brian Gerst 1 participant 1 message Nov 20, 2004

lore
Share & tools
lore
#0 lore raw

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
diff -urN linux-2.6.10-rc2-bk/arch/i386/kernel/apic.c linux/arch/i386/kernel/apic.c
@@ -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(&regs);
+	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
diff -urN linux-2.6.10-rc2-bk/arch/i386/kernel/smp.c linux/arch/i386/kernel/smp.c
@@ -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