diff options
author | Roman Zippel <zippel@linux-m68k.org> | 2006-06-25 08:47:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-25 13:00:57 -0400 |
commit | 68387c448b7f2b3e2bfa0f606391cd3b602b1997 (patch) | |
tree | a6a5d209ae09a3bbaf4e1614ea4b2bd4920e6c56 /arch/m68k/kernel/entry.S | |
parent | b5dc7840b3ebe9c7967dd8ba73db957767009ff9 (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.S | 11 |
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 |
53 | ENTRY(buserr) | 55 | ENTRY(buserr) |
@@ -212,6 +214,7 @@ ENTRY(auto_inthandler) | |||
212 | jbra 3f | 214 | jbra 3f |
213 | 1: | 215 | 1: |
214 | #endif | 216 | #endif |
217 | auto_irqhandler_fixup = . + 2 | ||
215 | jsr m68k_handle_int | process the IRQ | 218 | jsr m68k_handle_int | process the IRQ |
216 | 3: addql #8,%sp | pop parameters off stack | 219 | 3: 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 | ||
237 | ENTRY(mach_inthandler) | 240 | ENTRY(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 |
246 | user_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 | 251 | user_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) |