diff options
| -rw-r--r-- | arch/m68k/apollo/dn_ints.c | 2 | ||||
| -rw-r--r-- | arch/m68k/atari/ataints.c | 2 | ||||
| -rw-r--r-- | arch/m68k/bvme6000/config.c | 2 | ||||
| -rw-r--r-- | arch/m68k/include/asm/irq.h | 4 | ||||
| -rw-r--r-- | arch/m68k/kernel/entry_mm.S | 3 | ||||
| -rw-r--r-- | arch/m68k/kernel/ints.c | 11 | ||||
| -rw-r--r-- | arch/m68k/mvme147/config.c | 2 | ||||
| -rw-r--r-- | arch/m68k/mvme16x/config.c | 2 | ||||
| -rw-r--r-- | arch/m68k/sun3/sun3ints.c | 2 |
9 files changed, 10 insertions, 20 deletions
diff --git a/arch/m68k/apollo/dn_ints.c b/arch/m68k/apollo/dn_ints.c index b7d0aa37d199..17be1e7e2df2 100644 --- a/arch/m68k/apollo/dn_ints.c +++ b/arch/m68k/apollo/dn_ints.c | |||
| @@ -41,7 +41,7 @@ static struct irq_chip apollo_irq_chip = { | |||
| 41 | 41 | ||
| 42 | void __init dn_init_IRQ(void) | 42 | void __init dn_init_IRQ(void) |
| 43 | { | 43 | { |
| 44 | m68k_setup_user_interrupt(VEC_USER + 96, 16, NULL); | 44 | m68k_setup_user_interrupt(VEC_USER + 96, 16); |
| 45 | m68k_setup_irq_controller(&apollo_irq_chip, handle_fasteoi_irq, | 45 | m68k_setup_irq_controller(&apollo_irq_chip, handle_fasteoi_irq, |
| 46 | IRQ_APOLLO, 16); | 46 | IRQ_APOLLO, 16); |
| 47 | } | 47 | } |
diff --git a/arch/m68k/atari/ataints.c b/arch/m68k/atari/ataints.c index af544557dd1d..6d196dadfdbc 100644 --- a/arch/m68k/atari/ataints.c +++ b/arch/m68k/atari/ataints.c | |||
| @@ -137,7 +137,7 @@ static struct irq_chip atari_irq_chip = { | |||
| 137 | 137 | ||
| 138 | void __init atari_init_IRQ(void) | 138 | void __init atari_init_IRQ(void) |
| 139 | { | 139 | { |
| 140 | m68k_setup_user_interrupt(VEC_USER, NUM_ATARI_SOURCES - IRQ_USER, NULL); | 140 | m68k_setup_user_interrupt(VEC_USER, NUM_ATARI_SOURCES - IRQ_USER); |
| 141 | m68k_setup_irq_controller(&atari_irq_chip, handle_simple_irq, 1, | 141 | m68k_setup_irq_controller(&atari_irq_chip, handle_simple_irq, 1, |
| 142 | NUM_ATARI_SOURCES - 1); | 142 | NUM_ATARI_SOURCES - 1); |
| 143 | 143 | ||
diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c index 1edd95095cb4..81286476f740 100644 --- a/arch/m68k/bvme6000/config.c +++ b/arch/m68k/bvme6000/config.c | |||
| @@ -86,7 +86,7 @@ static void bvme6000_get_model(char *model) | |||
| 86 | */ | 86 | */ |
| 87 | static void __init bvme6000_init_IRQ(void) | 87 | static void __init bvme6000_init_IRQ(void) |
| 88 | { | 88 | { |
| 89 | m68k_setup_user_interrupt(VEC_USER, 192, NULL); | 89 | m68k_setup_user_interrupt(VEC_USER, 192); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | void __init config_bvme6000(void) | 92 | void __init config_bvme6000(void) |
diff --git a/arch/m68k/include/asm/irq.h b/arch/m68k/include/asm/irq.h index 94349a525bc2..6198df5ff245 100644 --- a/arch/m68k/include/asm/irq.h +++ b/arch/m68k/include/asm/irq.h | |||
| @@ -70,9 +70,7 @@ extern unsigned int m68k_irq_startup_irq(unsigned int irq); | |||
| 70 | extern void m68k_irq_shutdown(struct irq_data *data); | 70 | extern void m68k_irq_shutdown(struct irq_data *data); |
| 71 | extern void m68k_setup_auto_interrupt(void (*handler)(unsigned int, | 71 | extern void m68k_setup_auto_interrupt(void (*handler)(unsigned int, |
| 72 | struct pt_regs *)); | 72 | struct pt_regs *)); |
| 73 | extern void m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt, | 73 | extern void m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt); |
| 74 | void (*handler)(unsigned int, | ||
| 75 | struct pt_regs *)); | ||
| 76 | extern void m68k_setup_irq_controller(struct irq_chip *, | 74 | extern void m68k_setup_irq_controller(struct irq_chip *, |
| 77 | void (*handle)(unsigned int irq, | 75 | void (*handle)(unsigned int irq, |
| 78 | struct irq_desc *desc), | 76 | struct irq_desc *desc), |
diff --git a/arch/m68k/kernel/entry_mm.S b/arch/m68k/kernel/entry_mm.S index f5927d0927b4..c713f514843d 100644 --- a/arch/m68k/kernel/entry_mm.S +++ b/arch/m68k/kernel/entry_mm.S | |||
| @@ -48,7 +48,7 @@ | |||
| 48 | .globl sys_fork, sys_clone, sys_vfork | 48 | .globl sys_fork, sys_clone, sys_vfork |
| 49 | .globl ret_from_interrupt, bad_interrupt | 49 | .globl ret_from_interrupt, bad_interrupt |
| 50 | .globl auto_irqhandler_fixup | 50 | .globl auto_irqhandler_fixup |
| 51 | .globl user_irqvec_fixup, user_irqhandler_fixup | 51 | .globl user_irqvec_fixup |
| 52 | 52 | ||
| 53 | .text | 53 | .text |
| 54 | ENTRY(buserr) | 54 | ENTRY(buserr) |
| @@ -240,7 +240,6 @@ user_irqvec_fixup = . + 2 | |||
| 240 | 240 | ||
| 241 | movel %sp,%sp@- | 241 | movel %sp,%sp@- |
| 242 | movel %d0,%sp@- | put vector # on stack | 242 | movel %d0,%sp@- | put vector # on stack |
| 243 | user_irqhandler_fixup = . + 2 | ||
| 244 | jsr do_IRQ | process the IRQ | 243 | jsr do_IRQ | process the IRQ |
| 245 | addql #8,%sp | pop parameters off stack | 244 | addql #8,%sp | pop parameters off stack |
| 246 | 245 | ||
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c index e2b056b3a314..74fefac00899 100644 --- a/arch/m68k/kernel/ints.c +++ b/arch/m68k/kernel/ints.c | |||
| @@ -28,7 +28,6 @@ | |||
| 28 | #endif | 28 | #endif |
| 29 | 29 | ||
| 30 | extern u32 auto_irqhandler_fixup[]; | 30 | extern u32 auto_irqhandler_fixup[]; |
| 31 | extern u32 user_irqhandler_fixup[]; | ||
| 32 | extern u16 user_irqvec_fixup[]; | 31 | extern u16 user_irqvec_fixup[]; |
| 33 | 32 | ||
| 34 | static int m68k_first_user_vec; | 33 | static int m68k_first_user_vec; |
| @@ -91,16 +90,12 @@ void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_re | |||
| 91 | * m68k_setup_user_interrupt | 90 | * m68k_setup_user_interrupt |
| 92 | * @vec: first user vector interrupt to handle | 91 | * @vec: first user vector interrupt to handle |
| 93 | * @cnt: number of active user vector interrupts | 92 | * @cnt: number of active user vector interrupts |
| 94 | * @handler: called from user vector interrupts | ||
| 95 | * | 93 | * |
| 96 | * setup user vector interrupts, this includes activating the specified range | 94 | * setup user vector interrupts, this includes activating the specified range |
| 97 | * of interrupts, only then these interrupts can be requested (note: this is | 95 | * of interrupts, only then these interrupts can be requested (note: this is |
| 98 | * different from auto vector interrupts). An optional handler can be installed | 96 | * different from auto vector interrupts). |
| 99 | * to be called instead of the default do_IRQ(), it will be called | ||
| 100 | * with irq numbers starting from IRQ_USER. | ||
| 101 | */ | 97 | */ |
| 102 | void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt, | 98 | void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt) |
| 103 | void (*handler)(unsigned int, struct pt_regs *)) | ||
| 104 | { | 99 | { |
| 105 | int i; | 100 | int i; |
| 106 | 101 | ||
| @@ -109,8 +104,6 @@ void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt, | |||
| 109 | for (i = 0; i < cnt; i++) | 104 | for (i = 0; i < cnt; i++) |
| 110 | irq_set_chip(IRQ_USER + i, &user_irq_chip); | 105 | irq_set_chip(IRQ_USER + i, &user_irq_chip); |
| 111 | *user_irqvec_fixup = vec - IRQ_USER; | 106 | *user_irqvec_fixup = vec - IRQ_USER; |
| 112 | if (handler) | ||
| 113 | *user_irqhandler_fixup = (u32)handler; | ||
| 114 | flush_icache(); | 107 | flush_icache(); |
| 115 | } | 108 | } |
| 116 | 109 | ||
diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c index 01f2adf3f19f..5de924ef42ed 100644 --- a/arch/m68k/mvme147/config.c +++ b/arch/m68k/mvme147/config.c | |||
| @@ -81,7 +81,7 @@ static void mvme147_get_model(char *model) | |||
| 81 | 81 | ||
| 82 | void __init mvme147_init_IRQ(void) | 82 | void __init mvme147_init_IRQ(void) |
| 83 | { | 83 | { |
| 84 | m68k_setup_user_interrupt(VEC_USER, 192, NULL); | 84 | m68k_setup_user_interrupt(VEC_USER, 192); |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | void __init config_mvme147(void) | 87 | void __init config_mvme147(void) |
diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c index 0b28e2621653..31a66d99cbca 100644 --- a/arch/m68k/mvme16x/config.c +++ b/arch/m68k/mvme16x/config.c | |||
| @@ -117,7 +117,7 @@ static void mvme16x_get_hardware_list(struct seq_file *m) | |||
| 117 | 117 | ||
| 118 | static void __init mvme16x_init_IRQ (void) | 118 | static void __init mvme16x_init_IRQ (void) |
| 119 | { | 119 | { |
| 120 | m68k_setup_user_interrupt(VEC_USER, 192, NULL); | 120 | m68k_setup_user_interrupt(VEC_USER, 192); |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | #define pcc2chip ((volatile u_char *)0xfff42000) | 123 | #define pcc2chip ((volatile u_char *)0xfff42000) |
diff --git a/arch/m68k/sun3/sun3ints.c b/arch/m68k/sun3/sun3ints.c index 7eb378195cf7..78b60f53e90a 100644 --- a/arch/m68k/sun3/sun3ints.c +++ b/arch/m68k/sun3/sun3ints.c | |||
| @@ -109,7 +109,7 @@ void __init sun3_init_IRQ(void) | |||
| 109 | 109 | ||
| 110 | m68k_setup_irq_controller(&sun3_irq_chip, handle_level_irq, IRQ_AUTO_1, | 110 | m68k_setup_irq_controller(&sun3_irq_chip, handle_level_irq, IRQ_AUTO_1, |
| 111 | 7); | 111 | 7); |
| 112 | m68k_setup_user_interrupt(VEC_USER, 128, NULL); | 112 | m68k_setup_user_interrupt(VEC_USER, 128); |
| 113 | 113 | ||
| 114 | if (request_irq(IRQ_AUTO_5, sun3_int5, 0, "int5", NULL)) | 114 | if (request_irq(IRQ_AUTO_5, sun3_int5, 0, "int5", NULL)) |
| 115 | pr_err("Couldn't register %s interrupt\n", "int5"); | 115 | pr_err("Couldn't register %s interrupt\n", "int5"); |
