From: Russell King Date: Thu, 6 Jan 2011 22:31:35 +0000 (+0000) Subject: Merge branch 'smp' into misc X-Git-Tag: v2.6.38-rc1~471^2~2^2 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=4ec3eb13634529c0bc7466658d84d0bbe3244aea;p=linux.git Merge branch 'smp' into misc Conflicts: arch/arm/kernel/entry-armv.S arch/arm/mm/ioremap.c --- 4ec3eb13634529c0bc7466658d84d0bbe3244aea diff --cc arch/arm/include/asm/entry-macro-multi.S index 44f21d4584e8,000000000000..ec0bbf79c71f mode 100644,000000..100644 --- a/arch/arm/include/asm/entry-macro-multi.S +++ b/arch/arm/include/asm/entry-macro-multi.S @@@ -1,44 -1,0 +1,44 @@@ +/* + * Interrupt handling. Preserves r7, r8, r9 + */ + .macro arch_irq_handler_default + get_irqnr_preamble r5, lr +1: get_irqnr_and_base r0, r6, r5, lr + movne r1, sp + @ + @ routine called with r0 = irq number, r1 = struct pt_regs * + @ + adrne lr, BSYM(1b) + bne asm_do_IRQ + +#ifdef CONFIG_SMP + /* + * XXX + * + * this macro assumes that irqstat (r6) and base (r5) are + * preserved from get_irqnr_and_base above + */ + ALT_SMP(test_for_ipi r0, r6, r5, lr) + ALT_UP_B(9997f) - movne r0, sp ++ movne r1, sp + adrne lr, BSYM(1b) + bne do_IPI + +#ifdef CONFIG_LOCAL_TIMERS + test_for_ltirq r0, r6, r5, lr + movne r0, sp + adrne lr, BSYM(1b) + bne do_local_timer +#endif +#endif +9997: + .endm + + .macro arch_irq_handler, symbol_name + .align 5 + .global \symbol_name +\symbol_name: + mov r4, lr + arch_irq_handler_default + mov pc, r4 + .endm diff --cc arch/arm/include/asm/mach/irq.h index 831e81453f81,2bc47fb94d51..22ac140edd9e --- a/arch/arm/include/asm/mach/irq.h +++ b/arch/arm/include/asm/mach/irq.h @@@ -17,13 -17,11 +17,13 @@@ struct seq_file /* * This is internal. Do not use it. */ -extern unsigned int arch_nr_irqs; -extern void (*init_arch_irq)(void); extern void init_FIQ(void); - extern int show_fiq_list(struct seq_file *, void *); + extern int show_fiq_list(struct seq_file *, int); +#ifdef CONFIG_MULTI_IRQ_HANDLER +extern void (*handle_arch_irq)(struct pt_regs *); +#endif + /* * This is for easy migration, but should be changed in the source */