Messages in this thread | | | Date | Fri, 10 Apr 2009 21:45:24 +0400 | From | Cyrill Gorcunov <> | Subject | Re: [git-pull -tip] x86: declaration patches |
| |
[Sam Ravnborg - Fri, Apr 10, 2009 at 07:29:25PM +0200] | Hi Jaswinder. | | > diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h | > index 7309c0a..2f35e81 100644 | > --- a/arch/x86/include/asm/hw_irq.h | > +++ b/arch/x86/include/asm/hw_irq.h | > @@ -81,6 +81,11 @@ extern void eisa_set_level_irq(unsigned int irq); | > /* SMP */ | > extern void smp_apic_timer_interrupt(struct pt_regs *); | > extern void smp_spurious_interrupt(struct pt_regs *); | > +#ifdef CONFIG_X86_32 | > +extern void smp_generic_interrupt(struct pt_regs *); | > +#else | > +extern asmlinkage void smp_generic_interrupt(struct pt_regs *); | > +#endif | > extern void smp_error_interrupt(struct pt_regs *); | > #ifdef CONFIG_SMP | > extern void smp_reschedule_interrupt(struct pt_regs *); | > @@ -93,6 +98,15 @@ extern asmlinkage void smp_invalidate_interrupt(struct pt_regs *); | > #endif | > #endif | > | > +#ifdef CONFIG_X86_IO_APIC | > +#ifdef CONFIG_X86_32 | > +extern void smp_irq_move_cleanup_interrupt(void); | > +#else | > +extern asmlinkage void smp_irq_move_cleanup_interrupt(void); | > +#endif | > +#endif | | The above is a lot ifdefs just to: | 1) use asmlinkage only on 64 bit | 2) hide the prototype if do not implement the function | | Is there any relevant cost associated with asmlinkage or could we just make it | always asmlinkage?
Hi,
as far as I see asmlinkage is just (on X86-64 after all substitution) nothing, ie:
#define asmlinkage
(until we pass __cplusplus, do we ever?)
Which means we could safely pass asmlinkage on X86-64 in case if X86-32 requires it.
Like
| > +#ifdef CONFIG_X86_32 | > +extern void smp_generic_interrupt(struct pt_regs *); | > +#else | > +extern asmlinkage void smp_generic_interrupt(struct pt_regs *); | > +#endif
could be just written as extern void smp_generic_interrupt(struct pt_regs *); for both.
Cyrill
| |