]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/arm/kernel/entry-armv.S
Merge branch 'devel-stable' into devel
[mv-sheeva.git] / arch / arm / kernel / entry-armv.S
index 36199ffc4cc21a3d7c83282340f8829fd1775050..2b46fea36c9fa30ab41c3747686d40eb2f64e67f 100644 (file)
 #include <asm/tls.h>
 
 #include "entry-header.S"
+#include <asm/entry-macro-multi.S>
 
 /*
  * Interrupt handling.  Preserves r7, r8, r9
  */
        .macro  irq_handler
-       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
-       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
+#ifdef CONFIG_MULTI_IRQ_HANDLER
+       ldr     r5, =handle_arch_irq
+       mov     r0, sp
+       ldr     r5, [r5]
+       adr     lr, BSYM(9997f)
+       teq     r5, #0
+       movne   pc, r5
 #endif
+       arch_irq_handler_default
 9997:
-#endif
-
        .endm
 
 #ifdef CONFIG_KPROBES
@@ -739,7 +719,7 @@ ENTRY(__switch_to)
  THUMB(        stmia   ip!, {r4 - sl, fp}         )    @ Store most regs on stack
  THUMB(        str     sp, [ip], #4               )
  THUMB(        str     lr, [ip], #4               )
-#ifdef CONFIG_MMU
+#ifdef CONFIG_CPU_USE_DOMAINS
        ldr     r6, [r2, #TI_CPU_DOMAIN]
 #endif
        set_tls r3, r4, r5
@@ -748,7 +728,7 @@ ENTRY(__switch_to)
        ldr     r8, =__stack_chk_guard
        ldr     r7, [r7, #TSK_STACK_CANARY]
 #endif
-#ifdef CONFIG_MMU
+#ifdef CONFIG_CPU_USE_DOMAINS
        mcr     p15, 0, r6, c3, c0, 0           @ Set domain register
 #endif
        mov     r5, r0
@@ -846,7 +826,7 @@ __kuser_helper_start:
  */
 
 __kuser_memory_barrier:                                @ 0xffff0fa0
-       smp_dmb
+       smp_dmb arm
        usr_ret lr
 
        .align  5
@@ -963,7 +943,7 @@ kuser_cmpxchg_fixup:
 
 #else
 
-       smp_dmb
+       smp_dmb arm
 1:     ldrex   r3, [r2]
        subs    r3, r3, r0
        strexeq r3, r1, [r2]
@@ -1249,3 +1229,9 @@ cr_alignment:
        .space  4
 cr_no_alignment:
        .space  4
+
+#ifdef CONFIG_MULTI_IRQ_HANDLER
+       .globl  handle_arch_irq
+handle_arch_irq:
+       .space  4
+#endif