aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m68k/kernel/entry.S
diff options
context:
space:
mode:
authorRoman Zippel <zippel@linux-m68k.org>2006-06-25 08:47:01 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-25 13:00:57 -0400
commit68387c448b7f2b3e2bfa0f606391cd3b602b1997 (patch)
treea6a5d209ae09a3bbaf4e1614ea4b2bd4920e6c56 /arch/m68k/kernel/entry.S
parentb5dc7840b3ebe9c7967dd8ba73db957767009ff9 (diff)
[PATCH] m68k: convert generic irq code to irq controller
Convert the generic irq code to use irq controller, this gets rid of the machine specific callbacks and gives better control over irq handling without duplicating lots of code. Signed-off-by: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/m68k/kernel/entry.S')
-rw-r--r--arch/m68k/kernel/entry.S11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S
index 1fb88f3311de..48cccc556e13 100644
--- a/arch/m68k/kernel/entry.S
+++ b/arch/m68k/kernel/entry.S
@@ -48,6 +48,8 @@
48.globl sys_call_table 48.globl sys_call_table
49.globl sys_fork, sys_clone, sys_vfork 49.globl sys_fork, sys_clone, sys_vfork
50.globl ret_from_interrupt, bad_interrupt 50.globl ret_from_interrupt, bad_interrupt
51.globl auto_irqhandler_fixup
52.globl user_irqvec_fixup, user_irqhandler_fixup
51 53
52.text 54.text
53ENTRY(buserr) 55ENTRY(buserr)
@@ -212,6 +214,7 @@ ENTRY(auto_inthandler)
212 jbra 3f 214 jbra 3f
2131: 2151:
214#endif 216#endif
217auto_irqhandler_fixup = . + 2
215 jsr m68k_handle_int | process the IRQ 218 jsr m68k_handle_int | process the IRQ
2163: addql #8,%sp | pop parameters off stack 2193: addql #8,%sp | pop parameters off stack
217 220
@@ -234,17 +237,19 @@ ret_from_last_interrupt:
234 237
235/* Handler for user defined interrupt vectors */ 238/* Handler for user defined interrupt vectors */
236 239
237ENTRY(mach_inthandler) 240ENTRY(user_inthandler)
238 SAVE_ALL_INT 241 SAVE_ALL_INT
239 GET_CURRENT(%d0) 242 GET_CURRENT(%d0)
240 addqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1) 243 addqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
241 | put exception # in d0 244 | put exception # in d0
242 bfextu %sp@(PT_VECTOR){#4,#10},%d0 245 bfextu %sp@(PT_VECTOR){#4,#10},%d0
246user_irqvec_fixup = . + 2
247 subw #VEC_USER,%d0
243 248
244 movel %sp,%sp@- 249 movel %sp,%sp@-
245 movel %d0,%sp@- | put vector # on stack 250 movel %d0,%sp@- | put vector # on stack
246 movel mach_process_int,%a0 251user_irqhandler_fixup = . + 2
247 jsr %a0@ | process the IRQ 252 jsr m68k_handle_int | process the IRQ
248 addql #8,%sp | pop parameters off stack 253 addql #8,%sp | pop parameters off stack
249 254
250 subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1) 255 subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)