diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2006-04-01 15:17:45 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2006-04-18 22:14:18 -0400 |
commit | 93373ed4d87fb02554ce020d929388ac16913664 (patch) | |
tree | 01925421619219d00c39744b0a4cc79b8f7f719b /arch/mips/kernel | |
parent | c9e321e095384f25f2b7ffef456794cfa876dafc (diff) |
[MIPS] Rewrite spurious_interrupt from assembler to C.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r-- | arch/mips/kernel/entry.S | 26 | ||||
-rw-r--r-- | arch/mips/kernel/irq.c | 5 |
2 files changed, 5 insertions, 26 deletions
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S index 83c87fe4ee4f..371571f4f280 100644 --- a/arch/mips/kernel/entry.S +++ b/arch/mips/kernel/entry.S | |||
@@ -119,29 +119,3 @@ syscall_exit_work: | |||
119 | li a1, 1 | 119 | li a1, 1 |
120 | jal do_syscall_trace | 120 | jal do_syscall_trace |
121 | b resume_userspace | 121 | b resume_userspace |
122 | |||
123 | /* | ||
124 | * Common spurious interrupt handler. | ||
125 | */ | ||
126 | LEAF(spurious_interrupt) | ||
127 | /* | ||
128 | * Someone tried to fool us by sending an interrupt but we | ||
129 | * couldn't find a cause for it. | ||
130 | */ | ||
131 | PTR_LA t1, irq_err_count | ||
132 | #ifdef CONFIG_SMP | ||
133 | 1: ll t0, (t1) | ||
134 | addiu t0, 1 | ||
135 | sc t0, (t1) | ||
136 | #if R10000_LLSC_WAR | ||
137 | beqzl t0, 1b | ||
138 | #else | ||
139 | beqz t0, 1b | ||
140 | #endif | ||
141 | #else | ||
142 | lw t0, (t1) | ||
143 | addiu t0, 1 | ||
144 | sw t0, (t1) | ||
145 | #endif | ||
146 | j ret_from_irq | ||
147 | END(spurious_interrupt) | ||
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index 3dd76b3d2967..e0efc4f2f93e 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c | |||
@@ -101,6 +101,11 @@ skip: | |||
101 | return 0; | 101 | return 0; |
102 | } | 102 | } |
103 | 103 | ||
104 | asmlinkage void spurious_interrupt(struct pt_regs *regs) | ||
105 | { | ||
106 | atomic_inc(&irq_err_count); | ||
107 | } | ||
108 | |||
104 | #ifdef CONFIG_KGDB | 109 | #ifdef CONFIG_KGDB |
105 | extern void breakpoint(void); | 110 | extern void breakpoint(void); |
106 | extern void set_debug_traps(void); | 111 | extern void set_debug_traps(void); |