summaryrefslogtreecommitdiff
path: root/arch/m68k/kernel/entry.S
diff options
context:
space:
mode:
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 @@
.globl sys_call_table
.globl sys_fork, sys_clone, sys_vfork
.globl ret_from_interrupt, bad_interrupt
+.globl auto_irqhandler_fixup
+.globl user_irqvec_fixup, user_irqhandler_fixup
.text
ENTRY(buserr)
@@ -212,6 +214,7 @@ ENTRY(auto_inthandler)
jbra 3f
1:
#endif
+auto_irqhandler_fixup = . + 2
jsr m68k_handle_int | process the IRQ
3: addql #8,%sp | pop parameters off stack
@@ -234,17 +237,19 @@ ret_from_last_interrupt:
/* Handler for user defined interrupt vectors */
-ENTRY(mach_inthandler)
+ENTRY(user_inthandler)
SAVE_ALL_INT
GET_CURRENT(%d0)
addqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)
| put exception # in d0
bfextu %sp@(PT_VECTOR){#4,#10},%d0
+user_irqvec_fixup = . + 2
+ subw #VEC_USER,%d0
movel %sp,%sp@-
movel %d0,%sp@- | put vector # on stack
- movel mach_process_int,%a0
- jsr %a0@ | process the IRQ
+user_irqhandler_fixup = . + 2
+ jsr m68k_handle_int | process the IRQ
addql #8,%sp | pop parameters off stack
subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1)