From: Ian Molton <spyro@f2s.com>

New irq exit handler (part of the softirq changes)

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/include/asm-arm26/hardirq.h |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff -puN include/asm-arm26/hardirq.h~arm26-softirq-update include/asm-arm26/hardirq.h
--- 25/include/asm-arm26/hardirq.h~arm26-softirq-update	Thu Dec 23 14:22:12 2004
+++ 25-akpm/include/asm-arm26/hardirq.h	Thu Dec 23 14:22:12 2004
@@ -29,14 +29,17 @@ typedef struct {
 #define irq_enter()		(preempt_count() += HARDIRQ_OFFSET)
 
 #ifndef CONFIG_SMP
-#define irq_exit()							\
-	do {								\
-		preempt_count() -= HARDIRQ_OFFSET;			\
-		if (!in_interrupt() && softirq_pending(smp_processor_id())) \
-			__asm__("bl%? __do_softirq": : : "lr");/* out of line */\
-		preempt_enable_no_resched();				\
-	} while (0)
 
+extern asmlinkage void __do_softirq(void);
+
+#define irq_exit()                                                      \
+        do {                                                            \
+                preempt_count() -= IRQ_EXIT_OFFSET;                     \
+                if (!in_interrupt() && local_softirq_pending())         \
+                        __do_softirq();                                 \
+                preempt_enable_no_resched();                            \
+        } while (0)
 #endif
 
+
 #endif /* __ASM_HARDIRQ_H */
_