diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-10-11 03:56:12 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-10-11 03:56:12 -0400 |
commit | 24fcbacedb0d83cabc6761acbecfbf751265ce52 (patch) | |
tree | 7147b206304b028c3cfd5de6317e5c8510098ca9 /arch/m68k | |
parent | 2f614fe04f4463ff22234133319067d7361f54e5 (diff) | |
parent | 53a5fbdc2dff55161a206ed1a1385a8fa8055c34 (diff) |
Merge branch 'master' into upstream-fixes
Diffstat (limited to 'arch/m68k')
38 files changed, 213 insertions, 203 deletions
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 805b81fedf80..7bc14461a6ac 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig | |||
@@ -600,7 +600,7 @@ config MVME147_SCC | |||
600 | 600 | ||
601 | config SERIAL167 | 601 | config SERIAL167 |
602 | bool "CD2401 support for MVME166/7 serial ports" | 602 | bool "CD2401 support for MVME166/7 serial ports" |
603 | depends on MVME16x && BROKEN | 603 | depends on MVME16x |
604 | help | 604 | help |
605 | This is the driver for the serial ports on the Motorola MVME166, | 605 | This is the driver for the serial ports on the Motorola MVME166, |
606 | 167, and 172 boards. Everyone using one of these boards should say | 606 | 167, and 172 boards. Everyone using one of these boards should say |
diff --git a/arch/m68k/amiga/amiints.c b/arch/m68k/amiga/amiints.c index 96c79d840cff..28d95cfe8ac0 100644 --- a/arch/m68k/amiga/amiints.c +++ b/arch/m68k/amiga/amiints.c | |||
@@ -47,10 +47,10 @@ | |||
47 | 47 | ||
48 | static void amiga_enable_irq(unsigned int irq); | 48 | static void amiga_enable_irq(unsigned int irq); |
49 | static void amiga_disable_irq(unsigned int irq); | 49 | static void amiga_disable_irq(unsigned int irq); |
50 | static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp); | 50 | static irqreturn_t ami_int1(int irq, void *dev_id); |
51 | static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp); | 51 | static irqreturn_t ami_int3(int irq, void *dev_id); |
52 | static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp); | 52 | static irqreturn_t ami_int4(int irq, void *dev_id); |
53 | static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp); | 53 | static irqreturn_t ami_int5(int irq, void *dev_id); |
54 | 54 | ||
55 | static struct irq_controller amiga_irq_controller = { | 55 | static struct irq_controller amiga_irq_controller = { |
56 | .name = "amiga", | 56 | .name = "amiga", |
@@ -113,98 +113,98 @@ static void amiga_disable_irq(unsigned int irq) | |||
113 | * The builtin Amiga hardware interrupt handlers. | 113 | * The builtin Amiga hardware interrupt handlers. |
114 | */ | 114 | */ |
115 | 115 | ||
116 | static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp) | 116 | static irqreturn_t ami_int1(int irq, void *dev_id) |
117 | { | 117 | { |
118 | unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; | 118 | unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; |
119 | 119 | ||
120 | /* if serial transmit buffer empty, interrupt */ | 120 | /* if serial transmit buffer empty, interrupt */ |
121 | if (ints & IF_TBE) { | 121 | if (ints & IF_TBE) { |
122 | amiga_custom.intreq = IF_TBE; | 122 | amiga_custom.intreq = IF_TBE; |
123 | m68k_handle_int(IRQ_AMIGA_TBE, fp); | 123 | m68k_handle_int(IRQ_AMIGA_TBE); |
124 | } | 124 | } |
125 | 125 | ||
126 | /* if floppy disk transfer complete, interrupt */ | 126 | /* if floppy disk transfer complete, interrupt */ |
127 | if (ints & IF_DSKBLK) { | 127 | if (ints & IF_DSKBLK) { |
128 | amiga_custom.intreq = IF_DSKBLK; | 128 | amiga_custom.intreq = IF_DSKBLK; |
129 | m68k_handle_int(IRQ_AMIGA_DSKBLK, fp); | 129 | m68k_handle_int(IRQ_AMIGA_DSKBLK); |
130 | } | 130 | } |
131 | 131 | ||
132 | /* if software interrupt set, interrupt */ | 132 | /* if software interrupt set, interrupt */ |
133 | if (ints & IF_SOFT) { | 133 | if (ints & IF_SOFT) { |
134 | amiga_custom.intreq = IF_SOFT; | 134 | amiga_custom.intreq = IF_SOFT; |
135 | m68k_handle_int(IRQ_AMIGA_SOFT, fp); | 135 | m68k_handle_int(IRQ_AMIGA_SOFT); |
136 | } | 136 | } |
137 | return IRQ_HANDLED; | 137 | return IRQ_HANDLED; |
138 | } | 138 | } |
139 | 139 | ||
140 | static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp) | 140 | static irqreturn_t ami_int3(int irq, void *dev_id) |
141 | { | 141 | { |
142 | unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; | 142 | unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; |
143 | 143 | ||
144 | /* if a blitter interrupt */ | 144 | /* if a blitter interrupt */ |
145 | if (ints & IF_BLIT) { | 145 | if (ints & IF_BLIT) { |
146 | amiga_custom.intreq = IF_BLIT; | 146 | amiga_custom.intreq = IF_BLIT; |
147 | m68k_handle_int(IRQ_AMIGA_BLIT, fp); | 147 | m68k_handle_int(IRQ_AMIGA_BLIT); |
148 | } | 148 | } |
149 | 149 | ||
150 | /* if a copper interrupt */ | 150 | /* if a copper interrupt */ |
151 | if (ints & IF_COPER) { | 151 | if (ints & IF_COPER) { |
152 | amiga_custom.intreq = IF_COPER; | 152 | amiga_custom.intreq = IF_COPER; |
153 | m68k_handle_int(IRQ_AMIGA_COPPER, fp); | 153 | m68k_handle_int(IRQ_AMIGA_COPPER); |
154 | } | 154 | } |
155 | 155 | ||
156 | /* if a vertical blank interrupt */ | 156 | /* if a vertical blank interrupt */ |
157 | if (ints & IF_VERTB) { | 157 | if (ints & IF_VERTB) { |
158 | amiga_custom.intreq = IF_VERTB; | 158 | amiga_custom.intreq = IF_VERTB; |
159 | m68k_handle_int(IRQ_AMIGA_VERTB, fp); | 159 | m68k_handle_int(IRQ_AMIGA_VERTB); |
160 | } | 160 | } |
161 | return IRQ_HANDLED; | 161 | return IRQ_HANDLED; |
162 | } | 162 | } |
163 | 163 | ||
164 | static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp) | 164 | static irqreturn_t ami_int4(int irq, void *dev_id) |
165 | { | 165 | { |
166 | unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; | 166 | unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; |
167 | 167 | ||
168 | /* if audio 0 interrupt */ | 168 | /* if audio 0 interrupt */ |
169 | if (ints & IF_AUD0) { | 169 | if (ints & IF_AUD0) { |
170 | amiga_custom.intreq = IF_AUD0; | 170 | amiga_custom.intreq = IF_AUD0; |
171 | m68k_handle_int(IRQ_AMIGA_AUD0, fp); | 171 | m68k_handle_int(IRQ_AMIGA_AUD0); |
172 | } | 172 | } |
173 | 173 | ||
174 | /* if audio 1 interrupt */ | 174 | /* if audio 1 interrupt */ |
175 | if (ints & IF_AUD1) { | 175 | if (ints & IF_AUD1) { |
176 | amiga_custom.intreq = IF_AUD1; | 176 | amiga_custom.intreq = IF_AUD1; |
177 | m68k_handle_int(IRQ_AMIGA_AUD1, fp); | 177 | m68k_handle_int(IRQ_AMIGA_AUD1); |
178 | } | 178 | } |
179 | 179 | ||
180 | /* if audio 2 interrupt */ | 180 | /* if audio 2 interrupt */ |
181 | if (ints & IF_AUD2) { | 181 | if (ints & IF_AUD2) { |
182 | amiga_custom.intreq = IF_AUD2; | 182 | amiga_custom.intreq = IF_AUD2; |
183 | m68k_handle_int(IRQ_AMIGA_AUD2, fp); | 183 | m68k_handle_int(IRQ_AMIGA_AUD2); |
184 | } | 184 | } |
185 | 185 | ||
186 | /* if audio 3 interrupt */ | 186 | /* if audio 3 interrupt */ |
187 | if (ints & IF_AUD3) { | 187 | if (ints & IF_AUD3) { |
188 | amiga_custom.intreq = IF_AUD3; | 188 | amiga_custom.intreq = IF_AUD3; |
189 | m68k_handle_int(IRQ_AMIGA_AUD3, fp); | 189 | m68k_handle_int(IRQ_AMIGA_AUD3); |
190 | } | 190 | } |
191 | return IRQ_HANDLED; | 191 | return IRQ_HANDLED; |
192 | } | 192 | } |
193 | 193 | ||
194 | static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp) | 194 | static irqreturn_t ami_int5(int irq, void *dev_id) |
195 | { | 195 | { |
196 | unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; | 196 | unsigned short ints = amiga_custom.intreqr & amiga_custom.intenar; |
197 | 197 | ||
198 | /* if serial receive buffer full interrupt */ | 198 | /* if serial receive buffer full interrupt */ |
199 | if (ints & IF_RBF) { | 199 | if (ints & IF_RBF) { |
200 | /* acknowledge of IF_RBF must be done by the serial interrupt */ | 200 | /* acknowledge of IF_RBF must be done by the serial interrupt */ |
201 | m68k_handle_int(IRQ_AMIGA_RBF, fp); | 201 | m68k_handle_int(IRQ_AMIGA_RBF); |
202 | } | 202 | } |
203 | 203 | ||
204 | /* if a disk sync interrupt */ | 204 | /* if a disk sync interrupt */ |
205 | if (ints & IF_DSKSYN) { | 205 | if (ints & IF_DSKSYN) { |
206 | amiga_custom.intreq = IF_DSKSYN; | 206 | amiga_custom.intreq = IF_DSKSYN; |
207 | m68k_handle_int(IRQ_AMIGA_DSKSYN, fp); | 207 | m68k_handle_int(IRQ_AMIGA_DSKSYN); |
208 | } | 208 | } |
209 | return IRQ_HANDLED; | 209 | return IRQ_HANDLED; |
210 | } | 210 | } |
diff --git a/arch/m68k/amiga/cia.c b/arch/m68k/amiga/cia.c index dbad30054721..7a20058eb380 100644 --- a/arch/m68k/amiga/cia.c +++ b/arch/m68k/amiga/cia.c | |||
@@ -82,7 +82,7 @@ unsigned char cia_able_irq(struct ciabase *base, unsigned char mask) | |||
82 | return old; | 82 | return old; |
83 | } | 83 | } |
84 | 84 | ||
85 | static irqreturn_t cia_handler(int irq, void *dev_id, struct pt_regs *fp) | 85 | static irqreturn_t cia_handler(int irq, void *dev_id) |
86 | { | 86 | { |
87 | struct ciabase *base = (struct ciabase *)dev_id; | 87 | struct ciabase *base = (struct ciabase *)dev_id; |
88 | int mach_irq; | 88 | int mach_irq; |
@@ -93,7 +93,7 @@ static irqreturn_t cia_handler(int irq, void *dev_id, struct pt_regs *fp) | |||
93 | amiga_custom.intreq = base->int_mask; | 93 | amiga_custom.intreq = base->int_mask; |
94 | for (; ints; mach_irq++, ints >>= 1) { | 94 | for (; ints; mach_irq++, ints >>= 1) { |
95 | if (ints & 1) | 95 | if (ints & 1) |
96 | m68k_handle_int(mach_irq, fp); | 96 | m68k_handle_int(mach_irq); |
97 | } | 97 | } |
98 | return IRQ_HANDLED; | 98 | return IRQ_HANDLED; |
99 | } | 99 | } |
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c index 092e50d2cb13..3204f412cad8 100644 --- a/arch/m68k/amiga/config.c +++ b/arch/m68k/amiga/config.c | |||
@@ -83,7 +83,7 @@ static char amiga_model_name[13] = "Amiga "; | |||
83 | 83 | ||
84 | extern char m68k_debug_device[]; | 84 | extern char m68k_debug_device[]; |
85 | 85 | ||
86 | static void amiga_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 86 | static void amiga_sched_init(irq_handler_t handler); |
87 | /* amiga specific irq functions */ | 87 | /* amiga specific irq functions */ |
88 | extern void amiga_init_IRQ (void); | 88 | extern void amiga_init_IRQ (void); |
89 | static void amiga_get_model(char *model); | 89 | static void amiga_get_model(char *model); |
@@ -487,8 +487,7 @@ void __init config_amiga(void) | |||
487 | 487 | ||
488 | static unsigned short jiffy_ticks; | 488 | static unsigned short jiffy_ticks; |
489 | 489 | ||
490 | static void __init amiga_sched_init(irqreturn_t (*timer_routine)(int, void *, | 490 | static void __init amiga_sched_init(irq_handler_t timer_routine) |
491 | struct pt_regs *)) | ||
492 | { | 491 | { |
493 | static struct resource sched_res = { | 492 | static struct resource sched_res = { |
494 | .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff, | 493 | .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff, |
diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c index 6f4581575fb4..cb8e7609df4c 100644 --- a/arch/m68k/apollo/config.c +++ b/arch/m68k/apollo/config.c | |||
@@ -25,7 +25,7 @@ u_long cpuctrl_physaddr; | |||
25 | u_long timer_physaddr; | 25 | u_long timer_physaddr; |
26 | u_long apollo_model; | 26 | u_long apollo_model; |
27 | 27 | ||
28 | extern void dn_sched_init(irqreturn_t (*handler)(int,void *,struct pt_regs *)); | 28 | extern void dn_sched_init(irq_handler_t handler); |
29 | extern void dn_init_IRQ(void); | 29 | extern void dn_init_IRQ(void); |
30 | extern unsigned long dn_gettimeoffset(void); | 30 | extern unsigned long dn_gettimeoffset(void); |
31 | extern int dn_dummy_hwclk(int, struct rtc_time *); | 31 | extern int dn_dummy_hwclk(int, struct rtc_time *); |
@@ -38,7 +38,7 @@ extern irqreturn_t dn_process_int(int irq, struct pt_regs *fp); | |||
38 | #ifdef CONFIG_HEARTBEAT | 38 | #ifdef CONFIG_HEARTBEAT |
39 | static void dn_heartbeat(int on); | 39 | static void dn_heartbeat(int on); |
40 | #endif | 40 | #endif |
41 | static irqreturn_t dn_timer_int(int irq,void *, struct pt_regs *); | 41 | static irqreturn_t dn_timer_int(int irq,void *); |
42 | static void dn_get_model(char *model); | 42 | static void dn_get_model(char *model); |
43 | static const char *apollo_models[] = { | 43 | static const char *apollo_models[] = { |
44 | [APOLLO_DN3000-APOLLO_DN3000] = "DN3000 (Otter)", | 44 | [APOLLO_DN3000-APOLLO_DN3000] = "DN3000 (Otter)", |
@@ -174,13 +174,13 @@ void config_apollo(void) { | |||
174 | 174 | ||
175 | } | 175 | } |
176 | 176 | ||
177 | irqreturn_t dn_timer_int(int irq, void *dev_id, struct pt_regs *fp) | 177 | irqreturn_t dn_timer_int(int irq, void *dev_id) |
178 | { | 178 | { |
179 | irqreturn_t (*timer_handler)(int, void *, struct pt_regs *) = dev_id; | 179 | irq_handler_t timer_handler = dev_id; |
180 | 180 | ||
181 | volatile unsigned char x; | 181 | volatile unsigned char x; |
182 | 182 | ||
183 | timer_handler(irq, dev_id, fp); | 183 | timer_handler(irq, dev_id); |
184 | 184 | ||
185 | x=*(volatile unsigned char *)(timer+3); | 185 | x=*(volatile unsigned char *)(timer+3); |
186 | x=*(volatile unsigned char *)(timer+5); | 186 | x=*(volatile unsigned char *)(timer+5); |
@@ -188,8 +188,8 @@ irqreturn_t dn_timer_int(int irq, void *dev_id, struct pt_regs *fp) | |||
188 | return IRQ_HANDLED; | 188 | return IRQ_HANDLED; |
189 | } | 189 | } |
190 | 190 | ||
191 | void dn_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) { | 191 | void dn_sched_init(irq_handler_t timer_routine) |
192 | 192 | { | |
193 | /* program timer 1 */ | 193 | /* program timer 1 */ |
194 | *(volatile unsigned char *)(timer+3)=0x01; | 194 | *(volatile unsigned char *)(timer+3)=0x01; |
195 | *(volatile unsigned char *)(timer+1)=0x40; | 195 | *(volatile unsigned char *)(timer+1)=0x40; |
diff --git a/arch/m68k/apollo/dma.c b/arch/m68k/apollo/dma.c deleted file mode 100644 index aed8be177ef1..000000000000 --- a/arch/m68k/apollo/dma.c +++ /dev/null | |||
@@ -1,50 +0,0 @@ | |||
1 | #include <linux/types.h> | ||
2 | #include <linux/kernel.h> | ||
3 | #include <linux/mm.h> | ||
4 | #include <linux/kd.h> | ||
5 | #include <linux/tty.h> | ||
6 | #include <linux/console.h> | ||
7 | |||
8 | #include <asm/setup.h> | ||
9 | #include <asm/bootinfo.h> | ||
10 | #include <asm/system.h> | ||
11 | #include <asm/pgtable.h> | ||
12 | #include <asm/apollodma.h> | ||
13 | #include <asm/io.h> | ||
14 | |||
15 | /* note only works for 16 Bit 1 page DMA's */ | ||
16 | |||
17 | static unsigned short next_free_xlat_entry=0; | ||
18 | |||
19 | unsigned short dma_map_page(unsigned long phys_addr,int count,int type) { | ||
20 | |||
21 | unsigned long page_aligned_addr=phys_addr & (~((1<<12)-1)); | ||
22 | unsigned short start_map_addr=page_aligned_addr >> 10; | ||
23 | unsigned short free_xlat_entry, *xlat_map_entry; | ||
24 | int i; | ||
25 | |||
26 | free_xlat_entry=next_free_xlat_entry; | ||
27 | for(i=0,xlat_map_entry=addr_xlat_map+(free_xlat_entry<<2);i<8;i++,xlat_map_entry++) { | ||
28 | #if 0 | ||
29 | printk("phys_addr: %x, page_aligned_addr: %x, start_map_addr: %x\n",phys_addr,page_aligned_addr,start_map_addr+i); | ||
30 | #endif | ||
31 | out_be16(xlat_map_entry, start_map_addr+i); | ||
32 | } | ||
33 | |||
34 | next_free_xlat_entry+=2; | ||
35 | if(next_free_xlat_entry>125) | ||
36 | next_free_xlat_entry=0; | ||
37 | |||
38 | #if 0 | ||
39 | printk("next_free_xlat_entry: %d\n",next_free_xlat_entry); | ||
40 | #endif | ||
41 | |||
42 | return free_xlat_entry<<10; | ||
43 | } | ||
44 | |||
45 | void dma_unmap_page(unsigned short dma_addr) { | ||
46 | |||
47 | return ; | ||
48 | |||
49 | } | ||
50 | |||
diff --git a/arch/m68k/apollo/dn_ints.c b/arch/m68k/apollo/dn_ints.c index 9fe07803797b..4274af125998 100644 --- a/arch/m68k/apollo/dn_ints.c +++ b/arch/m68k/apollo/dn_ints.c | |||
@@ -6,7 +6,7 @@ | |||
6 | 6 | ||
7 | void dn_process_int(unsigned int irq, struct pt_regs *fp) | 7 | void dn_process_int(unsigned int irq, struct pt_regs *fp) |
8 | { | 8 | { |
9 | m68k_handle_int(irq, fp); | 9 | __m68k_handle_int(irq, fp); |
10 | 10 | ||
11 | *(volatile unsigned char *)(pica)=0x20; | 11 | *(volatile unsigned char *)(pica)=0x20; |
12 | *(volatile unsigned char *)(picb)=0x20; | 12 | *(volatile unsigned char *)(picb)=0x20; |
diff --git a/arch/m68k/atari/ataints.c b/arch/m68k/atari/ataints.c index ece13cbf9950..7f812641790c 100644 --- a/arch/m68k/atari/ataints.c +++ b/arch/m68k/atari/ataints.c | |||
@@ -332,6 +332,9 @@ static void atari_shutdown_irq(unsigned int irq) | |||
332 | atari_disable_irq(irq); | 332 | atari_disable_irq(irq); |
333 | atari_turnoff_irq(irq); | 333 | atari_turnoff_irq(irq); |
334 | m68k_irq_shutdown(irq); | 334 | m68k_irq_shutdown(irq); |
335 | |||
336 | if (irq == IRQ_AUTO_4) | ||
337 | vectors[VEC_INT4] = falcon_hblhandler; | ||
335 | } | 338 | } |
336 | 339 | ||
337 | static struct irq_controller atari_irq_controller = { | 340 | static struct irq_controller atari_irq_controller = { |
@@ -356,7 +359,7 @@ static struct irq_controller atari_irq_controller = { | |||
356 | 359 | ||
357 | void __init atari_init_IRQ(void) | 360 | void __init atari_init_IRQ(void) |
358 | { | 361 | { |
359 | m68k_setup_user_interrupt(VEC_USER, 192, NULL); | 362 | m68k_setup_user_interrupt(VEC_USER, NUM_ATARI_SOURCES - IRQ_USER, NULL); |
360 | m68k_setup_irq_controller(&atari_irq_controller, 1, NUM_ATARI_SOURCES - 1); | 363 | m68k_setup_irq_controller(&atari_irq_controller, 1, NUM_ATARI_SOURCES - 1); |
361 | 364 | ||
362 | /* Initialize the MFP(s) */ | 365 | /* Initialize the MFP(s) */ |
@@ -403,8 +406,10 @@ void __init atari_init_IRQ(void) | |||
403 | * gets overruns) | 406 | * gets overruns) |
404 | */ | 407 | */ |
405 | 408 | ||
406 | if (!MACH_IS_HADES) | 409 | if (!MACH_IS_HADES) { |
407 | vectors[VEC_INT2] = falcon_hblhandler; | 410 | vectors[VEC_INT2] = falcon_hblhandler; |
411 | vectors[VEC_INT4] = falcon_hblhandler; | ||
412 | } | ||
408 | } | 413 | } |
409 | 414 | ||
410 | if (ATARIHW_PRESENT(PCM_8BIT) && ATARIHW_PRESENT(MICROWIRE)) { | 415 | if (ATARIHW_PRESENT(PCM_8BIT) && ATARIHW_PRESENT(MICROWIRE)) { |
diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c index b2079252a954..ca5cd4344e3d 100644 --- a/arch/m68k/atari/config.c +++ b/arch/m68k/atari/config.c | |||
@@ -62,7 +62,7 @@ static void atari_heartbeat( int on ); | |||
62 | #endif | 62 | #endif |
63 | 63 | ||
64 | /* atari specific timer functions (in time.c) */ | 64 | /* atari specific timer functions (in time.c) */ |
65 | extern void atari_sched_init(irqreturn_t (*)(int, void *, struct pt_regs *)); | 65 | extern void atari_sched_init(irq_handler_t ); |
66 | extern unsigned long atari_gettimeoffset (void); | 66 | extern unsigned long atari_gettimeoffset (void); |
67 | extern int atari_mste_hwclk (int, struct rtc_time *); | 67 | extern int atari_mste_hwclk (int, struct rtc_time *); |
68 | extern int atari_tt_hwclk (int, struct rtc_time *); | 68 | extern int atari_tt_hwclk (int, struct rtc_time *); |
diff --git a/arch/m68k/atari/stdma.c b/arch/m68k/atari/stdma.c index 288f5e6a124e..d64b5804e980 100644 --- a/arch/m68k/atari/stdma.c +++ b/arch/m68k/atari/stdma.c | |||
@@ -44,7 +44,7 @@ | |||
44 | 44 | ||
45 | static int stdma_locked; /* the semaphore */ | 45 | static int stdma_locked; /* the semaphore */ |
46 | /* int func to be called */ | 46 | /* int func to be called */ |
47 | static irqreturn_t (*stdma_isr)(int, void *, struct pt_regs *); | 47 | static irq_handler_t stdma_isr; |
48 | static void *stdma_isr_data; /* data passed to isr */ | 48 | static void *stdma_isr_data; /* data passed to isr */ |
49 | static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */ | 49 | static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */ |
50 | 50 | ||
@@ -53,7 +53,7 @@ static DECLARE_WAIT_QUEUE_HEAD(stdma_wait); /* wait queue for ST-DMA */ | |||
53 | 53 | ||
54 | /***************************** Prototypes *****************************/ | 54 | /***************************** Prototypes *****************************/ |
55 | 55 | ||
56 | static irqreturn_t stdma_int (int irq, void *dummy, struct pt_regs *fp); | 56 | static irqreturn_t stdma_int (int irq, void *dummy); |
57 | 57 | ||
58 | /************************* End of Prototypes **************************/ | 58 | /************************* End of Prototypes **************************/ |
59 | 59 | ||
@@ -75,8 +75,7 @@ static irqreturn_t stdma_int (int irq, void *dummy, struct pt_regs *fp); | |||
75 | * | 75 | * |
76 | */ | 76 | */ |
77 | 77 | ||
78 | void stdma_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *), | 78 | void stdma_lock(irq_handler_t handler, void *data) |
79 | void *data) | ||
80 | { | 79 | { |
81 | unsigned long flags; | 80 | unsigned long flags; |
82 | 81 | ||
@@ -188,9 +187,9 @@ void __init stdma_init(void) | |||
188 | * | 187 | * |
189 | */ | 188 | */ |
190 | 189 | ||
191 | static irqreturn_t stdma_int(int irq, void *dummy, struct pt_regs *fp) | 190 | static irqreturn_t stdma_int(int irq, void *dummy) |
192 | { | 191 | { |
193 | if (stdma_isr) | 192 | if (stdma_isr) |
194 | (*stdma_isr)(irq, stdma_isr_data, fp); | 193 | (*stdma_isr)(irq, stdma_isr_data); |
195 | return IRQ_HANDLED; | 194 | return IRQ_HANDLED; |
196 | } | 195 | } |
diff --git a/arch/m68k/atari/time.c b/arch/m68k/atari/time.c index e79bbc94216d..e0d3c8bfb408 100644 --- a/arch/m68k/atari/time.c +++ b/arch/m68k/atari/time.c | |||
@@ -16,11 +16,12 @@ | |||
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/rtc.h> | 17 | #include <linux/rtc.h> |
18 | #include <linux/bcd.h> | 18 | #include <linux/bcd.h> |
19 | #include <linux/delay.h> | ||
19 | 20 | ||
20 | #include <asm/atariints.h> | 21 | #include <asm/atariints.h> |
21 | 22 | ||
22 | void __init | 23 | void __init |
23 | atari_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) | 24 | atari_sched_init(irq_handler_t timer_routine) |
24 | { | 25 | { |
25 | /* set Timer C data Register */ | 26 | /* set Timer C data Register */ |
26 | mfp.tim_dt_c = INT_TICKS; | 27 | mfp.tim_dt_c = INT_TICKS; |
@@ -212,8 +213,12 @@ int atari_tt_hwclk( int op, struct rtc_time *t ) | |||
212 | * additionally the RTC_SET bit is set to prevent an update cycle. | 213 | * additionally the RTC_SET bit is set to prevent an update cycle. |
213 | */ | 214 | */ |
214 | 215 | ||
215 | while( RTC_READ(RTC_FREQ_SELECT) & RTC_UIP ) | 216 | while( RTC_READ(RTC_FREQ_SELECT) & RTC_UIP ) { |
216 | schedule_timeout_interruptible(HWCLK_POLL_INTERVAL); | 217 | if (in_atomic() || irqs_disabled()) |
218 | mdelay(1); | ||
219 | else | ||
220 | schedule_timeout_interruptible(HWCLK_POLL_INTERVAL); | ||
221 | } | ||
217 | 222 | ||
218 | local_irq_save(flags); | 223 | local_irq_save(flags); |
219 | RTC_WRITE( RTC_CONTROL, ctrl | RTC_SET ); | 224 | RTC_WRITE( RTC_CONTROL, ctrl | RTC_SET ); |
diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c index d1e916ae55a8..896ae3d3d919 100644 --- a/arch/m68k/bvme6000/config.c +++ b/arch/m68k/bvme6000/config.c | |||
@@ -38,7 +38,7 @@ | |||
38 | 38 | ||
39 | static void bvme6000_get_model(char *model); | 39 | static void bvme6000_get_model(char *model); |
40 | static int bvme6000_get_hardware_list(char *buffer); | 40 | static int bvme6000_get_hardware_list(char *buffer); |
41 | extern void bvme6000_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 41 | extern void bvme6000_sched_init(irq_handler_t handler); |
42 | extern unsigned long bvme6000_gettimeoffset (void); | 42 | extern unsigned long bvme6000_gettimeoffset (void); |
43 | extern int bvme6000_hwclk (int, struct rtc_time *); | 43 | extern int bvme6000_hwclk (int, struct rtc_time *); |
44 | extern int bvme6000_set_clock_mmss (unsigned long); | 44 | extern int bvme6000_set_clock_mmss (unsigned long); |
@@ -52,7 +52,7 @@ static unsigned char bin2bcd (unsigned char b); | |||
52 | /* Save tick handler routine pointer, will point to do_timer() in | 52 | /* Save tick handler routine pointer, will point to do_timer() in |
53 | * kernel/sched.c, called via bvme6000_process_int() */ | 53 | * kernel/sched.c, called via bvme6000_process_int() */ |
54 | 54 | ||
55 | static irqreturn_t (*tick_handler)(int, void *, struct pt_regs *); | 55 | static irq_handler_t tick_handler; |
56 | 56 | ||
57 | 57 | ||
58 | int bvme6000_parse_bootinfo(const struct bi_record *bi) | 58 | int bvme6000_parse_bootinfo(const struct bi_record *bi) |
@@ -154,7 +154,7 @@ void __init config_bvme6000(void) | |||
154 | } | 154 | } |
155 | 155 | ||
156 | 156 | ||
157 | irqreturn_t bvme6000_abort_int (int irq, void *dev_id, struct pt_regs *fp) | 157 | irqreturn_t bvme6000_abort_int (int irq, void *dev_id) |
158 | { | 158 | { |
159 | unsigned long *new = (unsigned long *)vectors; | 159 | unsigned long *new = (unsigned long *)vectors; |
160 | unsigned long *old = (unsigned long *)0xf8000000; | 160 | unsigned long *old = (unsigned long *)0xf8000000; |
@@ -171,14 +171,14 @@ irqreturn_t bvme6000_abort_int (int irq, void *dev_id, struct pt_regs *fp) | |||
171 | } | 171 | } |
172 | 172 | ||
173 | 173 | ||
174 | static irqreturn_t bvme6000_timer_int (int irq, void *dev_id, struct pt_regs *fp) | 174 | static irqreturn_t bvme6000_timer_int (int irq, void *dev_id) |
175 | { | 175 | { |
176 | volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; | 176 | volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; |
177 | unsigned char msr = rtc->msr & 0xc0; | 177 | unsigned char msr = rtc->msr & 0xc0; |
178 | 178 | ||
179 | rtc->msr = msr | 0x20; /* Ack the interrupt */ | 179 | rtc->msr = msr | 0x20; /* Ack the interrupt */ |
180 | 180 | ||
181 | return tick_handler(irq, dev_id, fp); | 181 | return tick_handler(irq, dev_id); |
182 | } | 182 | } |
183 | 183 | ||
184 | /* | 184 | /* |
@@ -190,7 +190,7 @@ static irqreturn_t bvme6000_timer_int (int irq, void *dev_id, struct pt_regs *fp | |||
190 | * so divide by 8 to get the microsecond result. | 190 | * so divide by 8 to get the microsecond result. |
191 | */ | 191 | */ |
192 | 192 | ||
193 | void bvme6000_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) | 193 | void bvme6000_sched_init (irq_handler_t timer_routine) |
194 | { | 194 | { |
195 | volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; | 195 | volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; |
196 | unsigned char msr = rtc->msr & 0xc0; | 196 | unsigned char msr = rtc->msr & 0xc0; |
diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c index 7df05662b277..dd7c8a2583d3 100644 --- a/arch/m68k/hp300/time.c +++ b/arch/m68k/hp300/time.c | |||
@@ -36,15 +36,15 @@ | |||
36 | 36 | ||
37 | #define INTVAL ((10000 / 4) - 1) | 37 | #define INTVAL ((10000 / 4) - 1) |
38 | 38 | ||
39 | static irqreturn_t hp300_tick(int irq, void *dev_id, struct pt_regs *regs) | 39 | static irqreturn_t hp300_tick(int irq, void *dev_id) |
40 | { | 40 | { |
41 | unsigned long tmp; | 41 | unsigned long tmp; |
42 | irqreturn_t (*vector)(int, void *, struct pt_regs *) = dev_id; | 42 | irq_handler_t vector = dev_id; |
43 | in_8(CLOCKBASE + CLKSR); | 43 | in_8(CLOCKBASE + CLKSR); |
44 | asm volatile ("movpw %1@(5),%0" : "=d" (tmp) : "a" (CLOCKBASE)); | 44 | asm volatile ("movpw %1@(5),%0" : "=d" (tmp) : "a" (CLOCKBASE)); |
45 | /* Turn off the network and SCSI leds */ | 45 | /* Turn off the network and SCSI leds */ |
46 | blinken_leds(0, 0xe0); | 46 | blinken_leds(0, 0xe0); |
47 | return vector(irq, NULL, regs); | 47 | return vector(irq, NULL); |
48 | } | 48 | } |
49 | 49 | ||
50 | unsigned long hp300_gettimeoffset(void) | 50 | unsigned long hp300_gettimeoffset(void) |
@@ -63,7 +63,7 @@ unsigned long hp300_gettimeoffset(void) | |||
63 | return (USECS_PER_JIFFY * ticks) / INTVAL; | 63 | return (USECS_PER_JIFFY * ticks) / INTVAL; |
64 | } | 64 | } |
65 | 65 | ||
66 | void __init hp300_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)) | 66 | void __init hp300_sched_init(irq_handler_t vector) |
67 | { | 67 | { |
68 | out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */ | 68 | out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */ |
69 | out_8(CLOCKBASE + CLKCR1, 0x1); /* reset */ | 69 | out_8(CLOCKBASE + CLKCR1, 0x1); /* reset */ |
diff --git a/arch/m68k/hp300/time.h b/arch/m68k/hp300/time.h index 8ef9987b49ab..f5b3d098b0f5 100644 --- a/arch/m68k/hp300/time.h +++ b/arch/m68k/hp300/time.h | |||
@@ -1,4 +1,4 @@ | |||
1 | extern void hp300_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)); | 1 | extern void hp300_sched_init(irq_handler_t vector); |
2 | extern unsigned long hp300_gettimeoffset (void); | 2 | extern unsigned long hp300_gettimeoffset (void); |
3 | 3 | ||
4 | 4 | ||
diff --git a/arch/m68k/kernel/Makefile b/arch/m68k/kernel/Makefile index dae609797dc0..1c9ecaa473d5 100644 --- a/arch/m68k/kernel/Makefile +++ b/arch/m68k/kernel/Makefile | |||
@@ -9,10 +9,11 @@ else | |||
9 | endif | 9 | endif |
10 | extra-y += vmlinux.lds | 10 | extra-y += vmlinux.lds |
11 | 11 | ||
12 | obj-y := entry.o process.o traps.o ints.o dma.o signal.o ptrace.o \ | 12 | obj-y := entry.o process.o traps.o ints.o signal.o ptrace.o \ |
13 | sys_m68k.o time.o semaphore.o setup.o m68k_ksyms.o | 13 | sys_m68k.o time.o semaphore.o setup.o m68k_ksyms.o |
14 | 14 | ||
15 | obj-$(CONFIG_PCI) += bios32.o | 15 | obj-$(CONFIG_PCI) += bios32.o |
16 | obj-$(CONFIG_MODULES) += module.o | 16 | obj-$(CONFIG_MODULES) += module.o |
17 | obj-y$(CONFIG_MMU_SUN3) += dma.o # no, it's not a typo | ||
17 | 18 | ||
18 | EXTRA_AFLAGS := -traditional | 19 | EXTRA_AFLAGS := -traditional |
diff --git a/arch/m68k/kernel/dma.c b/arch/m68k/kernel/dma.c index fc449f8b2045..9d4e4b5b6bd8 100644 --- a/arch/m68k/kernel/dma.c +++ b/arch/m68k/kernel/dma.c | |||
@@ -15,7 +15,7 @@ | |||
15 | #include <asm/scatterlist.h> | 15 | #include <asm/scatterlist.h> |
16 | 16 | ||
17 | void *dma_alloc_coherent(struct device *dev, size_t size, | 17 | void *dma_alloc_coherent(struct device *dev, size_t size, |
18 | dma_addr_t *handle, int flag) | 18 | dma_addr_t *handle, gfp_t flag) |
19 | { | 19 | { |
20 | struct page *page, **map; | 20 | struct page *page, **map; |
21 | pgprot_t pgprot; | 21 | pgprot_t pgprot; |
@@ -51,7 +51,7 @@ void *dma_alloc_coherent(struct device *dev, size_t size, | |||
51 | pgprot_val(pgprot) |= _PAGE_GLOBAL040 | _PAGE_NOCACHE_S; | 51 | pgprot_val(pgprot) |= _PAGE_GLOBAL040 | _PAGE_NOCACHE_S; |
52 | else | 52 | else |
53 | pgprot_val(pgprot) |= _PAGE_NOCACHE030; | 53 | pgprot_val(pgprot) |= _PAGE_NOCACHE030; |
54 | addr = vmap(map, size, flag, pgprot); | 54 | addr = vmap(map, size, VM_MAP, pgprot); |
55 | kfree(map); | 55 | kfree(map); |
56 | 56 | ||
57 | return addr; | 57 | return addr; |
diff --git a/arch/m68k/kernel/entry.S b/arch/m68k/kernel/entry.S index 9083c8b7659f..222ce4244564 100644 --- a/arch/m68k/kernel/entry.S +++ b/arch/m68k/kernel/entry.S | |||
@@ -205,7 +205,7 @@ ENTRY(auto_inthandler) | |||
205 | movel %sp,%sp@- | 205 | movel %sp,%sp@- |
206 | movel %d0,%sp@- | put vector # on stack | 206 | movel %d0,%sp@- | put vector # on stack |
207 | auto_irqhandler_fixup = . + 2 | 207 | auto_irqhandler_fixup = . + 2 |
208 | jsr m68k_handle_int | process the IRQ | 208 | jsr __m68k_handle_int | process the IRQ |
209 | addql #8,%sp | pop parameters off stack | 209 | addql #8,%sp | pop parameters off stack |
210 | 210 | ||
211 | ret_from_interrupt: | 211 | ret_from_interrupt: |
@@ -239,7 +239,7 @@ user_irqvec_fixup = . + 2 | |||
239 | movel %sp,%sp@- | 239 | movel %sp,%sp@- |
240 | movel %d0,%sp@- | put vector # on stack | 240 | movel %d0,%sp@- | put vector # on stack |
241 | user_irqhandler_fixup = . + 2 | 241 | user_irqhandler_fixup = . + 2 |
242 | jsr m68k_handle_int | process the IRQ | 242 | jsr __m68k_handle_int | process the IRQ |
243 | addql #8,%sp | pop parameters off stack | 243 | addql #8,%sp | pop parameters off stack |
244 | 244 | ||
245 | subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1) | 245 | subqb #1,%curptr@(TASK_INFO+TINFO_PREEMPT+1) |
@@ -706,4 +706,33 @@ sys_call_table: | |||
706 | .long sys_add_key | 706 | .long sys_add_key |
707 | .long sys_request_key /* 280 */ | 707 | .long sys_request_key /* 280 */ |
708 | .long sys_keyctl | 708 | .long sys_keyctl |
709 | .long sys_ioprio_set | ||
710 | .long sys_ioprio_get | ||
711 | .long sys_inotify_init | ||
712 | .long sys_inotify_add_watch /* 285 */ | ||
713 | .long sys_inotify_rm_watch | ||
714 | .long sys_migrate_pages | ||
715 | .long sys_openat | ||
716 | .long sys_mkdirat | ||
717 | .long sys_mknodat /* 290 */ | ||
718 | .long sys_fchownat | ||
719 | .long sys_futimesat | ||
720 | .long sys_fstatat64 | ||
721 | .long sys_unlinkat | ||
722 | .long sys_renameat /* 295 */ | ||
723 | .long sys_linkat | ||
724 | .long sys_symlinkat | ||
725 | .long sys_readlinkat | ||
726 | .long sys_fchmodat | ||
727 | .long sys_faccessat /* 300 */ | ||
728 | .long sys_ni_syscall /* Reserved for pselect6 */ | ||
729 | .long sys_ni_syscall /* Reserved for ppoll */ | ||
730 | .long sys_unshare | ||
731 | .long sys_set_robust_list | ||
732 | .long sys_get_robust_list /* 305 */ | ||
733 | .long sys_splice | ||
734 | .long sys_sync_file_range | ||
735 | .long sys_tee | ||
736 | .long sys_vmsplice | ||
737 | .long sys_move_pages /* 310 */ | ||
709 | 738 | ||
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c index b33e37fb7b0e..84aceca6c05c 100644 --- a/arch/m68k/kernel/ints.c +++ b/arch/m68k/kernel/ints.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <asm/page.h> | 39 | #include <asm/page.h> |
40 | #include <asm/machdep.h> | 40 | #include <asm/machdep.h> |
41 | #include <asm/cacheflush.h> | 41 | #include <asm/cacheflush.h> |
42 | #include <asm/irq_regs.h> | ||
42 | 43 | ||
43 | #ifdef CONFIG_Q40 | 44 | #ifdef CONFIG_Q40 |
44 | #include <asm/q40ints.h> | 45 | #include <asm/q40ints.h> |
@@ -104,7 +105,7 @@ void __init init_IRQ(void) | |||
104 | * @handler: called from auto vector interrupts | 105 | * @handler: called from auto vector interrupts |
105 | * | 106 | * |
106 | * setup the handler to be called from auto vector interrupts instead of the | 107 | * setup the handler to be called from auto vector interrupts instead of the |
107 | * standard m68k_handle_int(), it will be called with irq numbers in the range | 108 | * standard __m68k_handle_int(), it will be called with irq numbers in the range |
108 | * from IRQ_AUTO_1 - IRQ_AUTO_7. | 109 | * from IRQ_AUTO_1 - IRQ_AUTO_7. |
109 | */ | 110 | */ |
110 | void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_regs *)) | 111 | void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_regs *)) |
@@ -123,7 +124,7 @@ void __init m68k_setup_auto_interrupt(void (*handler)(unsigned int, struct pt_re | |||
123 | * setup user vector interrupts, this includes activating the specified range | 124 | * setup user vector interrupts, this includes activating the specified range |
124 | * of interrupts, only then these interrupts can be requested (note: this is | 125 | * of interrupts, only then these interrupts can be requested (note: this is |
125 | * different from auto vector interrupts). An optional handler can be installed | 126 | * different from auto vector interrupts). An optional handler can be installed |
126 | * to be called instead of the default m68k_handle_int(), it will be called | 127 | * to be called instead of the default __m68k_handle_int(), it will be called |
127 | * with irq numbers starting from IRQ_USER. | 128 | * with irq numbers starting from IRQ_USER. |
128 | */ | 129 | */ |
129 | void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt, | 130 | void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt, |
@@ -131,6 +132,7 @@ void __init m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt, | |||
131 | { | 132 | { |
132 | int i; | 133 | int i; |
133 | 134 | ||
135 | BUG_ON(IRQ_USER + cnt >= NR_IRQS); | ||
134 | m68k_first_user_vec = vec; | 136 | m68k_first_user_vec = vec; |
135 | for (i = 0; i < cnt; i++) | 137 | for (i = 0; i < cnt; i++) |
136 | irq_controller[IRQ_USER + i] = &user_irq_controller; | 138 | irq_controller[IRQ_USER + i] = &user_irq_controller; |
@@ -215,7 +217,7 @@ int setup_irq(unsigned int irq, struct irq_node *node) | |||
215 | } | 217 | } |
216 | 218 | ||
217 | int request_irq(unsigned int irq, | 219 | int request_irq(unsigned int irq, |
218 | irqreturn_t (*handler) (int, void *, struct pt_regs *), | 220 | irq_handler_t handler, |
219 | unsigned long flags, const char *devname, void *dev_id) | 221 | unsigned long flags, const char *devname, void *dev_id) |
220 | { | 222 | { |
221 | struct irq_node *node; | 223 | struct irq_node *node; |
@@ -379,18 +381,25 @@ unsigned int irq_canonicalize(unsigned int irq) | |||
379 | 381 | ||
380 | EXPORT_SYMBOL(irq_canonicalize); | 382 | EXPORT_SYMBOL(irq_canonicalize); |
381 | 383 | ||
382 | asmlinkage void m68k_handle_int(unsigned int irq, struct pt_regs *regs) | 384 | asmlinkage void m68k_handle_int(unsigned int irq) |
383 | { | 385 | { |
384 | struct irq_node *node; | 386 | struct irq_node *node; |
385 | |||
386 | kstat_cpu(0).irqs[irq]++; | 387 | kstat_cpu(0).irqs[irq]++; |
387 | node = irq_list[irq]; | 388 | node = irq_list[irq]; |
388 | do { | 389 | do { |
389 | node->handler(irq, node->dev_id, regs); | 390 | node->handler(irq, node->dev_id); |
390 | node = node->next; | 391 | node = node->next; |
391 | } while (node); | 392 | } while (node); |
392 | } | 393 | } |
393 | 394 | ||
395 | asmlinkage void __m68k_handle_int(unsigned int irq, struct pt_regs *regs) | ||
396 | { | ||
397 | struct pt_regs *old_regs; | ||
398 | old_regs = set_irq_regs(regs); | ||
399 | m68k_handle_int(irq); | ||
400 | set_irq_regs(old_regs); | ||
401 | } | ||
402 | |||
394 | asmlinkage void handle_badint(struct pt_regs *regs) | 403 | asmlinkage void handle_badint(struct pt_regs *regs) |
395 | { | 404 | { |
396 | kstat_cpu(0).irqs[0]++; | 405 | kstat_cpu(0).irqs[0]++; |
diff --git a/arch/m68k/kernel/m68k_ksyms.c b/arch/m68k/kernel/m68k_ksyms.c index aff26a52167c..f9636e84e6a4 100644 --- a/arch/m68k/kernel/m68k_ksyms.c +++ b/arch/m68k/kernel/m68k_ksyms.c | |||
@@ -1,7 +1,6 @@ | |||
1 | #include <linux/module.h> | 1 | #include <linux/module.h> |
2 | #include <linux/linkage.h> | 2 | #include <linux/linkage.h> |
3 | #include <linux/sched.h> | 3 | #include <linux/sched.h> |
4 | #include <linux/string.h> | ||
5 | #include <linux/mm.h> | 4 | #include <linux/mm.h> |
6 | #include <linux/user.h> | 5 | #include <linux/user.h> |
7 | #include <linux/elfcore.h> | 6 | #include <linux/elfcore.h> |
@@ -53,9 +52,6 @@ EXPORT_SYMBOL(mach_beep); | |||
53 | #endif | 52 | #endif |
54 | EXPORT_SYMBOL(dump_fpu); | 53 | EXPORT_SYMBOL(dump_fpu); |
55 | EXPORT_SYMBOL(dump_thread); | 54 | EXPORT_SYMBOL(dump_thread); |
56 | EXPORT_SYMBOL(strnlen); | ||
57 | EXPORT_SYMBOL(strrchr); | ||
58 | EXPORT_SYMBOL(strstr); | ||
59 | EXPORT_SYMBOL(kernel_thread); | 55 | EXPORT_SYMBOL(kernel_thread); |
60 | #ifdef CONFIG_VME | 56 | #ifdef CONFIG_VME |
61 | EXPORT_SYMBOL(vme_brdtype); | 57 | EXPORT_SYMBOL(vme_brdtype); |
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c index f2d7ee0ee18c..42d5b85f3350 100644 --- a/arch/m68k/kernel/setup.c +++ b/arch/m68k/kernel/setup.c | |||
@@ -64,7 +64,7 @@ static char m68k_command_line[CL_SIZE]; | |||
64 | 64 | ||
65 | char m68k_debug_device[6] = ""; | 65 | char m68k_debug_device[6] = ""; |
66 | 66 | ||
67 | void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *)) __initdata = NULL; | 67 | void (*mach_sched_init) (irq_handler_t handler) __initdata = NULL; |
68 | /* machine dependent irq functions */ | 68 | /* machine dependent irq functions */ |
69 | void (*mach_init_IRQ) (void) __initdata = NULL; | 69 | void (*mach_init_IRQ) (void) __initdata = NULL; |
70 | void (*mach_get_model) (char *model); | 70 | void (*mach_get_model) (char *model); |
diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c index 28b2fefa4513..2a599c3ed787 100644 --- a/arch/m68k/kernel/time.c +++ b/arch/m68k/kernel/time.c | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
23 | #include <asm/io.h> | 23 | #include <asm/io.h> |
24 | #include <asm/irq_regs.h> | ||
24 | 25 | ||
25 | #include <linux/time.h> | 26 | #include <linux/time.h> |
26 | #include <linux/timex.h> | 27 | #include <linux/timex.h> |
@@ -37,13 +38,13 @@ static inline int set_rtc_mmss(unsigned long nowtime) | |||
37 | * timer_interrupt() needs to keep up the real-time clock, | 38 | * timer_interrupt() needs to keep up the real-time clock, |
38 | * as well as call the "do_timer()" routine every clocktick | 39 | * as well as call the "do_timer()" routine every clocktick |
39 | */ | 40 | */ |
40 | static irqreturn_t timer_interrupt(int irq, void *dummy, struct pt_regs * regs) | 41 | static irqreturn_t timer_interrupt(int irq, void *dummy) |
41 | { | 42 | { |
42 | do_timer(1); | 43 | do_timer(1); |
43 | #ifndef CONFIG_SMP | 44 | #ifndef CONFIG_SMP |
44 | update_process_times(user_mode(regs)); | 45 | update_process_times(user_mode(get_irq_regs())); |
45 | #endif | 46 | #endif |
46 | profile_tick(CPU_PROFILING, regs); | 47 | profile_tick(CPU_PROFILING); |
47 | 48 | ||
48 | #ifdef CONFIG_HEARTBEAT | 49 | #ifdef CONFIG_HEARTBEAT |
49 | /* use power LED as a heartbeat instead -- much more useful | 50 | /* use power LED as a heartbeat instead -- much more useful |
diff --git a/arch/m68k/lib/string.c b/arch/m68k/lib/string.c index b92b89e1ea0c..891e1347bc4e 100644 --- a/arch/m68k/lib/string.c +++ b/arch/m68k/lib/string.c | |||
@@ -1,6 +1,19 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file COPYING in the main directory of this archive | ||
4 | * for more details. | ||
5 | */ | ||
6 | |||
7 | #define __IN_STRING_C | ||
1 | 8 | ||
2 | #include <linux/types.h> | ||
3 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/string.h> | ||
11 | |||
12 | char *strcpy(char *dest, const char *src) | ||
13 | { | ||
14 | return __kernel_strcpy(dest, src); | ||
15 | } | ||
16 | EXPORT_SYMBOL(strcpy); | ||
4 | 17 | ||
5 | void *memset(void *s, int c, size_t count) | 18 | void *memset(void *s, int c, size_t count) |
6 | { | 19 | { |
diff --git a/arch/m68k/lib/uaccess.c b/arch/m68k/lib/uaccess.c index 1bc188c0d983..865f9fb9e686 100644 --- a/arch/m68k/lib/uaccess.c +++ b/arch/m68k/lib/uaccess.c | |||
@@ -84,7 +84,7 @@ unsigned long __generic_copy_to_user(void __user *to, const void *from, | |||
84 | " .even\n" | 84 | " .even\n" |
85 | "20: lsl.l #2,%0\n" | 85 | "20: lsl.l #2,%0\n" |
86 | "50: add.l %5,%0\n" | 86 | "50: add.l %5,%0\n" |
87 | " jra 7b\n" | 87 | " jra 8b\n" |
88 | " .previous\n" | 88 | " .previous\n" |
89 | "\n" | 89 | "\n" |
90 | " .section __ex_table,\"a\"\n" | 90 | " .section __ex_table,\"a\"\n" |
diff --git a/arch/m68k/mac/baboon.c b/arch/m68k/mac/baboon.c index 6eaa881793d1..a1c7ec706741 100644 --- a/arch/m68k/mac/baboon.c +++ b/arch/m68k/mac/baboon.c | |||
@@ -25,7 +25,7 @@ | |||
25 | int baboon_present,baboon_active; | 25 | int baboon_present,baboon_active; |
26 | volatile struct baboon *baboon; | 26 | volatile struct baboon *baboon; |
27 | 27 | ||
28 | irqreturn_t baboon_irq(int, void *, struct pt_regs *); | 28 | irqreturn_t baboon_irq(int, void *); |
29 | 29 | ||
30 | #if 0 | 30 | #if 0 |
31 | extern int macide_ack_intr(struct ata_channel *); | 31 | extern int macide_ack_intr(struct ata_channel *); |
@@ -64,7 +64,7 @@ void __init baboon_register_interrupts(void) | |||
64 | * Baboon interrupt handler. This works a lot like a VIA. | 64 | * Baboon interrupt handler. This works a lot like a VIA. |
65 | */ | 65 | */ |
66 | 66 | ||
67 | irqreturn_t baboon_irq(int irq, void *dev_id, struct pt_regs *regs) | 67 | irqreturn_t baboon_irq(int irq, void *dev_id) |
68 | { | 68 | { |
69 | int irq_bit,i; | 69 | int irq_bit,i; |
70 | unsigned char events; | 70 | unsigned char events; |
@@ -81,7 +81,7 @@ irqreturn_t baboon_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
81 | for (i = 0, irq_bit = 1 ; i < 3 ; i++, irq_bit <<= 1) { | 81 | for (i = 0, irq_bit = 1 ; i < 3 ; i++, irq_bit <<= 1) { |
82 | if (events & irq_bit/* & baboon_active*/) { | 82 | if (events & irq_bit/* & baboon_active*/) { |
83 | baboon_active &= ~irq_bit; | 83 | baboon_active &= ~irq_bit; |
84 | m68k_handle_int(IRQ_BABOON_0 + i, regs); | 84 | m68k_handle_int(IRQ_BABOON_0 + i); |
85 | baboon_active |= irq_bit; | 85 | baboon_active |= irq_bit; |
86 | baboon->mb_ifr &= ~irq_bit; | 86 | baboon->mb_ifr &= ~irq_bit; |
87 | } | 87 | } |
diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c index 85dda1095b1f..562b38d00180 100644 --- a/arch/m68k/mac/config.c +++ b/arch/m68k/mac/config.c | |||
@@ -72,7 +72,7 @@ extern int show_mac_interrupts(struct seq_file *, void *); | |||
72 | extern void iop_preinit(void); | 72 | extern void iop_preinit(void); |
73 | extern void iop_init(void); | 73 | extern void iop_init(void); |
74 | extern void via_init(void); | 74 | extern void via_init(void); |
75 | extern void via_init_clock(irqreturn_t (*func)(int, void *, struct pt_regs *)); | 75 | extern void via_init_clock(irq_handler_t func); |
76 | extern void via_flush_cache(void); | 76 | extern void via_flush_cache(void); |
77 | extern void oss_init(void); | 77 | extern void oss_init(void); |
78 | extern void psc_init(void); | 78 | extern void psc_init(void); |
@@ -88,7 +88,7 @@ extern void mac_debugging_long(int, long); | |||
88 | 88 | ||
89 | static void mac_get_model(char *str); | 89 | static void mac_get_model(char *str); |
90 | 90 | ||
91 | static void mac_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)) | 91 | static void mac_sched_init(irq_handler_t vector) |
92 | { | 92 | { |
93 | via_init_clock(vector); | 93 | via_init_clock(vector); |
94 | } | 94 | } |
diff --git a/arch/m68k/mac/iop.c b/arch/m68k/mac/iop.c index bc657b1057a7..0cea21f58192 100644 --- a/arch/m68k/mac/iop.c +++ b/arch/m68k/mac/iop.c | |||
@@ -132,7 +132,7 @@ static int iop_get_proc_info(char *, char **, off_t, int); | |||
132 | 132 | ||
133 | struct listener { | 133 | struct listener { |
134 | const char *devname; | 134 | const char *devname; |
135 | void (*handler)(struct iop_msg *, struct pt_regs *); | 135 | void (*handler)(struct iop_msg *); |
136 | }; | 136 | }; |
137 | 137 | ||
138 | /* | 138 | /* |
@@ -152,7 +152,7 @@ static struct iop_msg iop_msg_pool[NUM_IOP_MSGS]; | |||
152 | static struct iop_msg *iop_send_queue[NUM_IOPS][NUM_IOP_CHAN]; | 152 | static struct iop_msg *iop_send_queue[NUM_IOPS][NUM_IOP_CHAN]; |
153 | static struct listener iop_listeners[NUM_IOPS][NUM_IOP_CHAN]; | 153 | static struct listener iop_listeners[NUM_IOPS][NUM_IOP_CHAN]; |
154 | 154 | ||
155 | irqreturn_t iop_ism_irq(int, void *, struct pt_regs *); | 155 | irqreturn_t iop_ism_irq(int, void *); |
156 | 156 | ||
157 | extern void oss_irq_enable(int); | 157 | extern void oss_irq_enable(int); |
158 | 158 | ||
@@ -342,7 +342,7 @@ void __init iop_register_interrupts(void) | |||
342 | */ | 342 | */ |
343 | 343 | ||
344 | int iop_listen(uint iop_num, uint chan, | 344 | int iop_listen(uint iop_num, uint chan, |
345 | void (*handler)(struct iop_msg *, struct pt_regs *), | 345 | void (*handler)(struct iop_msg *), |
346 | const char *devname) | 346 | const char *devname) |
347 | { | 347 | { |
348 | if ((iop_num >= NUM_IOPS) || !iop_base[iop_num]) return -EINVAL; | 348 | if ((iop_num >= NUM_IOPS) || !iop_base[iop_num]) return -EINVAL; |
@@ -407,7 +407,7 @@ static void iop_do_send(struct iop_msg *msg) | |||
407 | * has gone into the IOP_MSG_COMPLETE state. | 407 | * has gone into the IOP_MSG_COMPLETE state. |
408 | */ | 408 | */ |
409 | 409 | ||
410 | static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs) | 410 | static void iop_handle_send(uint iop_num, uint chan) |
411 | { | 411 | { |
412 | volatile struct mac_iop *iop = iop_base[iop_num]; | 412 | volatile struct mac_iop *iop = iop_base[iop_num]; |
413 | struct iop_msg *msg,*msg2; | 413 | struct iop_msg *msg,*msg2; |
@@ -426,7 +426,7 @@ static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs) | |||
426 | for (i = 0 ; i < IOP_MSG_LEN ; i++, offset++) { | 426 | for (i = 0 ; i < IOP_MSG_LEN ; i++, offset++) { |
427 | msg->reply[i] = iop_readb(iop, offset); | 427 | msg->reply[i] = iop_readb(iop, offset); |
428 | } | 428 | } |
429 | if (msg->handler) (*msg->handler)(msg, regs); | 429 | if (msg->handler) (*msg->handler)(msg); |
430 | msg2 = msg; | 430 | msg2 = msg; |
431 | msg = msg->next; | 431 | msg = msg->next; |
432 | iop_free_msg(msg2); | 432 | iop_free_msg(msg2); |
@@ -440,7 +440,7 @@ static void iop_handle_send(uint iop_num, uint chan, struct pt_regs *regs) | |||
440 | * gone into the IOP_MSG_NEW state. | 440 | * gone into the IOP_MSG_NEW state. |
441 | */ | 441 | */ |
442 | 442 | ||
443 | static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs) | 443 | static void iop_handle_recv(uint iop_num, uint chan) |
444 | { | 444 | { |
445 | volatile struct mac_iop *iop = iop_base[iop_num]; | 445 | volatile struct mac_iop *iop = iop_base[iop_num]; |
446 | int i,offset; | 446 | int i,offset; |
@@ -468,7 +468,7 @@ static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs) | |||
468 | /* the message ourselves to avoid possible stalls. */ | 468 | /* the message ourselves to avoid possible stalls. */ |
469 | 469 | ||
470 | if (msg->handler) { | 470 | if (msg->handler) { |
471 | (*msg->handler)(msg, regs); | 471 | (*msg->handler)(msg); |
472 | } else { | 472 | } else { |
473 | #ifdef DEBUG_IOP | 473 | #ifdef DEBUG_IOP |
474 | printk("iop_handle_recv: unclaimed message on iop %d channel %d\n", iop_num, chan); | 474 | printk("iop_handle_recv: unclaimed message on iop %d channel %d\n", iop_num, chan); |
@@ -492,7 +492,7 @@ static void iop_handle_recv(uint iop_num, uint chan, struct pt_regs *regs) | |||
492 | 492 | ||
493 | int iop_send_message(uint iop_num, uint chan, void *privdata, | 493 | int iop_send_message(uint iop_num, uint chan, void *privdata, |
494 | uint msg_len, __u8 *msg_data, | 494 | uint msg_len, __u8 *msg_data, |
495 | void (*handler)(struct iop_msg *, struct pt_regs *)) | 495 | void (*handler)(struct iop_msg *)) |
496 | { | 496 | { |
497 | struct iop_msg *msg, *q; | 497 | struct iop_msg *msg, *q; |
498 | 498 | ||
@@ -584,7 +584,7 @@ __u8 *iop_compare_code(uint iop_num, __u8 *code_start, | |||
584 | * Handle an ISM IOP interrupt | 584 | * Handle an ISM IOP interrupt |
585 | */ | 585 | */ |
586 | 586 | ||
587 | irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs) | 587 | irqreturn_t iop_ism_irq(int irq, void *dev_id) |
588 | { | 588 | { |
589 | uint iop_num = (uint) dev_id; | 589 | uint iop_num = (uint) dev_id; |
590 | volatile struct mac_iop *iop = iop_base[iop_num]; | 590 | volatile struct mac_iop *iop = iop_base[iop_num]; |
@@ -608,7 +608,7 @@ irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
608 | printk(" %02X", state); | 608 | printk(" %02X", state); |
609 | #endif | 609 | #endif |
610 | if (state == IOP_MSG_COMPLETE) { | 610 | if (state == IOP_MSG_COMPLETE) { |
611 | iop_handle_send(iop_num, i, regs); | 611 | iop_handle_send(iop_num, i); |
612 | } | 612 | } |
613 | } | 613 | } |
614 | #ifdef DEBUG_IOP | 614 | #ifdef DEBUG_IOP |
@@ -628,7 +628,7 @@ irqreturn_t iop_ism_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
628 | printk(" %02X", state); | 628 | printk(" %02X", state); |
629 | #endif | 629 | #endif |
630 | if (state == IOP_MSG_NEW) { | 630 | if (state == IOP_MSG_NEW) { |
631 | iop_handle_recv(iop_num, i, regs); | 631 | iop_handle_recv(iop_num, i); |
632 | } | 632 | } |
633 | } | 633 | } |
634 | #ifdef DEBUG_IOP | 634 | #ifdef DEBUG_IOP |
diff --git a/arch/m68k/mac/macints.c b/arch/m68k/mac/macints.c index 694b14bb0de1..f6fcd754d8f6 100644 --- a/arch/m68k/mac/macints.c +++ b/arch/m68k/mac/macints.c | |||
@@ -133,6 +133,7 @@ | |||
133 | #include <asm/hwtest.h> | 133 | #include <asm/hwtest.h> |
134 | #include <asm/errno.h> | 134 | #include <asm/errno.h> |
135 | #include <asm/macints.h> | 135 | #include <asm/macints.h> |
136 | #include <asm/irq_regs.h> | ||
136 | 137 | ||
137 | #define DEBUG_SPURIOUS | 138 | #define DEBUG_SPURIOUS |
138 | #define SHUTUP_SONIC | 139 | #define SHUTUP_SONIC |
@@ -208,8 +209,8 @@ static void scc_irq_disable(unsigned int); | |||
208 | * console_loglevel determines NMI handler function | 209 | * console_loglevel determines NMI handler function |
209 | */ | 210 | */ |
210 | 211 | ||
211 | irqreturn_t mac_nmi_handler(int, void *, struct pt_regs *); | 212 | irqreturn_t mac_nmi_handler(int, void *); |
212 | irqreturn_t mac_debug_handler(int, void *, struct pt_regs *); | 213 | irqreturn_t mac_debug_handler(int, void *); |
213 | 214 | ||
214 | /* #define DEBUG_MACINTS */ | 215 | /* #define DEBUG_MACINTS */ |
215 | 216 | ||
@@ -393,7 +394,7 @@ int mac_irq_pending(unsigned int irq) | |||
393 | 394 | ||
394 | static int num_debug[8]; | 395 | static int num_debug[8]; |
395 | 396 | ||
396 | irqreturn_t mac_debug_handler(int irq, void *dev_id, struct pt_regs *regs) | 397 | irqreturn_t mac_debug_handler(int irq, void *dev_id) |
397 | { | 398 | { |
398 | if (num_debug[irq] < 10) { | 399 | if (num_debug[irq] < 10) { |
399 | printk("DEBUG: Unexpected IRQ %d\n", irq); | 400 | printk("DEBUG: Unexpected IRQ %d\n", irq); |
@@ -405,7 +406,7 @@ irqreturn_t mac_debug_handler(int irq, void *dev_id, struct pt_regs *regs) | |||
405 | static int in_nmi; | 406 | static int in_nmi; |
406 | static volatile int nmi_hold; | 407 | static volatile int nmi_hold; |
407 | 408 | ||
408 | irqreturn_t mac_nmi_handler(int irq, void *dev_id, struct pt_regs *fp) | 409 | irqreturn_t mac_nmi_handler(int irq, void *dev_id) |
409 | { | 410 | { |
410 | int i; | 411 | int i; |
411 | /* | 412 | /* |
@@ -432,6 +433,7 @@ irqreturn_t mac_nmi_handler(int irq, void *dev_id, struct pt_regs *fp) | |||
432 | 433 | ||
433 | if (console_loglevel >= 8) { | 434 | if (console_loglevel >= 8) { |
434 | #if 0 | 435 | #if 0 |
436 | struct pt_regs *fp = get_irq_regs(); | ||
435 | show_state(); | 437 | show_state(); |
436 | printk("PC: %08lx\nSR: %04x SP: %p\n", fp->pc, fp->sr, fp); | 438 | printk("PC: %08lx\nSR: %04x SP: %p\n", fp->pc, fp->sr, fp); |
437 | printk("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n", | 439 | printk("d0: %08lx d1: %08lx d2: %08lx d3: %08lx\n", |
@@ -479,7 +481,7 @@ static void scc_irq_disable(unsigned int irq) | |||
479 | * here is cleaner than hacking it into drivers/char/macserial.c. | 481 | * here is cleaner than hacking it into drivers/char/macserial.c. |
480 | */ | 482 | */ |
481 | 483 | ||
482 | void mac_scc_dispatch(int irq, void *dev_id, struct pt_regs *regs) | 484 | void mac_scc_dispatch(int irq, void *dev_id) |
483 | { | 485 | { |
484 | volatile unsigned char *scc = (unsigned char *) mac_bi_data.sccbase + 2; | 486 | volatile unsigned char *scc = (unsigned char *) mac_bi_data.sccbase + 2; |
485 | unsigned char reg; | 487 | unsigned char reg; |
@@ -504,7 +506,7 @@ void mac_scc_dispatch(int irq, void *dev_id, struct pt_regs *regs) | |||
504 | /* pretty much kill the system. */ | 506 | /* pretty much kill the system. */ |
505 | 507 | ||
506 | if (reg & 0x38) | 508 | if (reg & 0x38) |
507 | m68k_handle_int(IRQ_SCCA, regs); | 509 | m68k_handle_int(IRQ_SCCA); |
508 | if (reg & 0x07) | 510 | if (reg & 0x07) |
509 | m68k_handle_int(IRQ_SCCB, regs); | 511 | m68k_handle_int(IRQ_SCCB); |
510 | } | 512 | } |
diff --git a/arch/m68k/mac/oss.c b/arch/m68k/mac/oss.c index 63e04365191f..63690819565a 100644 --- a/arch/m68k/mac/oss.c +++ b/arch/m68k/mac/oss.c | |||
@@ -30,11 +30,11 @@ | |||
30 | int oss_present; | 30 | int oss_present; |
31 | volatile struct mac_oss *oss; | 31 | volatile struct mac_oss *oss; |
32 | 32 | ||
33 | irqreturn_t oss_irq(int, void *, struct pt_regs *); | 33 | irqreturn_t oss_irq(int, void *); |
34 | irqreturn_t oss_nubus_irq(int, void *, struct pt_regs *); | 34 | irqreturn_t oss_nubus_irq(int, void *); |
35 | 35 | ||
36 | extern irqreturn_t via1_irq(int, void *, struct pt_regs *); | 36 | extern irqreturn_t via1_irq(int, void *); |
37 | extern irqreturn_t mac_scc_dispatch(int, void *, struct pt_regs *); | 37 | extern irqreturn_t mac_scc_dispatch(int, void *); |
38 | 38 | ||
39 | /* | 39 | /* |
40 | * Initialize the OSS | 40 | * Initialize the OSS |
@@ -92,7 +92,7 @@ void __init oss_nubus_init(void) | |||
92 | * and SCSI; everything else is routed to its own autovector IRQ. | 92 | * and SCSI; everything else is routed to its own autovector IRQ. |
93 | */ | 93 | */ |
94 | 94 | ||
95 | irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs) | 95 | irqreturn_t oss_irq(int irq, void *dev_id) |
96 | { | 96 | { |
97 | int events; | 97 | int events; |
98 | 98 | ||
@@ -113,7 +113,7 @@ irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
113 | oss->irq_pending &= ~OSS_IP_SOUND; | 113 | oss->irq_pending &= ~OSS_IP_SOUND; |
114 | } else if (events & OSS_IP_SCSI) { | 114 | } else if (events & OSS_IP_SCSI) { |
115 | oss->irq_level[OSS_SCSI] = OSS_IRQLEV_DISABLED; | 115 | oss->irq_level[OSS_SCSI] = OSS_IRQLEV_DISABLED; |
116 | m68k_handle_int(IRQ_MAC_SCSI, regs); | 116 | m68k_handle_int(IRQ_MAC_SCSI); |
117 | oss->irq_pending &= ~OSS_IP_SCSI; | 117 | oss->irq_pending &= ~OSS_IP_SCSI; |
118 | oss->irq_level[OSS_SCSI] = OSS_IRQLEV_SCSI; | 118 | oss->irq_level[OSS_SCSI] = OSS_IRQLEV_SCSI; |
119 | } else { | 119 | } else { |
@@ -128,7 +128,7 @@ irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
128 | * Unlike the VIA/RBV this is on its own autovector interrupt level. | 128 | * Unlike the VIA/RBV this is on its own autovector interrupt level. |
129 | */ | 129 | */ |
130 | 130 | ||
131 | irqreturn_t oss_nubus_irq(int irq, void *dev_id, struct pt_regs *regs) | 131 | irqreturn_t oss_nubus_irq(int irq, void *dev_id) |
132 | { | 132 | { |
133 | int events, irq_bit, i; | 133 | int events, irq_bit, i; |
134 | 134 | ||
@@ -146,7 +146,7 @@ irqreturn_t oss_nubus_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
146 | for (i = 0, irq_bit = 1 ; i < 6 ; i++, irq_bit <<= 1) { | 146 | for (i = 0, irq_bit = 1 ; i < 6 ; i++, irq_bit <<= 1) { |
147 | if (events & irq_bit) { | 147 | if (events & irq_bit) { |
148 | oss->irq_level[i] = OSS_IRQLEV_DISABLED; | 148 | oss->irq_level[i] = OSS_IRQLEV_DISABLED; |
149 | m68k_handle_int(NUBUS_SOURCE_BASE + i, regs); | 149 | m68k_handle_int(NUBUS_SOURCE_BASE + i); |
150 | oss->irq_pending &= ~irq_bit; | 150 | oss->irq_pending &= ~irq_bit; |
151 | oss->irq_level[i] = OSS_IRQLEV_NUBUS; | 151 | oss->irq_level[i] = OSS_IRQLEV_NUBUS; |
152 | } | 152 | } |
diff --git a/arch/m68k/mac/psc.c b/arch/m68k/mac/psc.c index e26218091755..15378a5878c9 100644 --- a/arch/m68k/mac/psc.c +++ b/arch/m68k/mac/psc.c | |||
@@ -30,7 +30,7 @@ | |||
30 | int psc_present; | 30 | int psc_present; |
31 | volatile __u8 *psc; | 31 | volatile __u8 *psc; |
32 | 32 | ||
33 | irqreturn_t psc_irq(int, void *, struct pt_regs *); | 33 | irqreturn_t psc_irq(int, void *); |
34 | 34 | ||
35 | /* | 35 | /* |
36 | * Debugging dump, used in various places to see what's going on. | 36 | * Debugging dump, used in various places to see what's going on. |
@@ -127,7 +127,7 @@ void __init psc_register_interrupts(void) | |||
127 | * PSC interrupt handler. It's a lot like the VIA interrupt handler. | 127 | * PSC interrupt handler. It's a lot like the VIA interrupt handler. |
128 | */ | 128 | */ |
129 | 129 | ||
130 | irqreturn_t psc_irq(int irq, void *dev_id, struct pt_regs *regs) | 130 | irqreturn_t psc_irq(int irq, void *dev_id) |
131 | { | 131 | { |
132 | int pIFR = pIFRbase + ((int) dev_id); | 132 | int pIFR = pIFRbase + ((int) dev_id); |
133 | int pIER = pIERbase + ((int) dev_id); | 133 | int pIER = pIERbase + ((int) dev_id); |
@@ -149,7 +149,7 @@ irqreturn_t psc_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
149 | for (i = 0, irq_bit = 1 ; i < 4 ; i++, irq_bit <<= 1) { | 149 | for (i = 0, irq_bit = 1 ; i < 4 ; i++, irq_bit <<= 1) { |
150 | if (events & irq_bit) { | 150 | if (events & irq_bit) { |
151 | psc_write_byte(pIER, irq_bit); | 151 | psc_write_byte(pIER, irq_bit); |
152 | m68k_handle_int(base_irq + i, regs); | 152 | m68k_handle_int(base_irq + i); |
153 | psc_write_byte(pIFR, irq_bit); | 153 | psc_write_byte(pIFR, irq_bit); |
154 | psc_write_byte(pIER, irq_bit | 0x80); | 154 | psc_write_byte(pIER, irq_bit | 0x80); |
155 | } | 155 | } |
diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c index c4aa345d544e..e27735be2924 100644 --- a/arch/m68k/mac/via.c +++ b/arch/m68k/mac/via.c | |||
@@ -63,14 +63,14 @@ static int gIER,gIFR,gBufA,gBufB; | |||
63 | static int nubus_active; | 63 | static int nubus_active; |
64 | 64 | ||
65 | void via_debug_dump(void); | 65 | void via_debug_dump(void); |
66 | irqreturn_t via1_irq(int, void *, struct pt_regs *); | 66 | irqreturn_t via1_irq(int, void *); |
67 | irqreturn_t via2_irq(int, void *, struct pt_regs *); | 67 | irqreturn_t via2_irq(int, void *); |
68 | irqreturn_t via_nubus_irq(int, void *, struct pt_regs *); | 68 | irqreturn_t via_nubus_irq(int, void *); |
69 | void via_irq_enable(int irq); | 69 | void via_irq_enable(int irq); |
70 | void via_irq_disable(int irq); | 70 | void via_irq_disable(int irq); |
71 | void via_irq_clear(int irq); | 71 | void via_irq_clear(int irq); |
72 | 72 | ||
73 | extern irqreturn_t mac_scc_dispatch(int, void *, struct pt_regs *); | 73 | extern irqreturn_t mac_scc_dispatch(int, void *); |
74 | extern int oss_present; | 74 | extern int oss_present; |
75 | 75 | ||
76 | /* | 76 | /* |
@@ -235,7 +235,7 @@ void __init via_init(void) | |||
235 | * Start the 100 Hz clock | 235 | * Start the 100 Hz clock |
236 | */ | 236 | */ |
237 | 237 | ||
238 | void __init via_init_clock(irqreturn_t (*func)(int, void *, struct pt_regs *)) | 238 | void __init via_init_clock(irq_handler_t func) |
239 | { | 239 | { |
240 | via1[vACR] |= 0x40; | 240 | via1[vACR] |= 0x40; |
241 | via1[vT1LL] = MAC_CLOCK_LOW; | 241 | via1[vT1LL] = MAC_CLOCK_LOW; |
@@ -412,7 +412,7 @@ void __init via_nubus_init(void) | |||
412 | * the machspec interrupt number after clearing the interrupt. | 412 | * the machspec interrupt number after clearing the interrupt. |
413 | */ | 413 | */ |
414 | 414 | ||
415 | irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs) | 415 | irqreturn_t via1_irq(int irq, void *dev_id) |
416 | { | 416 | { |
417 | int irq_bit, i; | 417 | int irq_bit, i; |
418 | unsigned char events, mask; | 418 | unsigned char events, mask; |
@@ -424,7 +424,7 @@ irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
424 | for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) | 424 | for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) |
425 | if (events & irq_bit) { | 425 | if (events & irq_bit) { |
426 | via1[vIER] = irq_bit; | 426 | via1[vIER] = irq_bit; |
427 | m68k_handle_int(VIA1_SOURCE_BASE + i, regs); | 427 | m68k_handle_int(VIA1_SOURCE_BASE + i); |
428 | via1[vIFR] = irq_bit; | 428 | via1[vIFR] = irq_bit; |
429 | via1[vIER] = irq_bit | 0x80; | 429 | via1[vIER] = irq_bit | 0x80; |
430 | } | 430 | } |
@@ -439,14 +439,14 @@ irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
439 | /* No, it won't be set. that's why we're doing this. */ | 439 | /* No, it won't be set. that's why we're doing this. */ |
440 | via_irq_disable(IRQ_MAC_NUBUS); | 440 | via_irq_disable(IRQ_MAC_NUBUS); |
441 | via_irq_clear(IRQ_MAC_NUBUS); | 441 | via_irq_clear(IRQ_MAC_NUBUS); |
442 | m68k_handle_int(IRQ_MAC_NUBUS, regs); | 442 | m68k_handle_int(IRQ_MAC_NUBUS); |
443 | via_irq_enable(IRQ_MAC_NUBUS); | 443 | via_irq_enable(IRQ_MAC_NUBUS); |
444 | } | 444 | } |
445 | #endif | 445 | #endif |
446 | return IRQ_HANDLED; | 446 | return IRQ_HANDLED; |
447 | } | 447 | } |
448 | 448 | ||
449 | irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs) | 449 | irqreturn_t via2_irq(int irq, void *dev_id) |
450 | { | 450 | { |
451 | int irq_bit, i; | 451 | int irq_bit, i; |
452 | unsigned char events, mask; | 452 | unsigned char events, mask; |
@@ -459,7 +459,7 @@ irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
459 | if (events & irq_bit) { | 459 | if (events & irq_bit) { |
460 | via2[gIER] = irq_bit; | 460 | via2[gIER] = irq_bit; |
461 | via2[gIFR] = irq_bit | rbv_clear; | 461 | via2[gIFR] = irq_bit | rbv_clear; |
462 | m68k_handle_int(VIA2_SOURCE_BASE + i, regs); | 462 | m68k_handle_int(VIA2_SOURCE_BASE + i); |
463 | via2[gIER] = irq_bit | 0x80; | 463 | via2[gIER] = irq_bit | 0x80; |
464 | } | 464 | } |
465 | return IRQ_HANDLED; | 465 | return IRQ_HANDLED; |
@@ -470,7 +470,7 @@ irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
470 | * VIA2 dispatcher as a fast interrupt handler. | 470 | * VIA2 dispatcher as a fast interrupt handler. |
471 | */ | 471 | */ |
472 | 472 | ||
473 | irqreturn_t via_nubus_irq(int irq, void *dev_id, struct pt_regs *regs) | 473 | irqreturn_t via_nubus_irq(int irq, void *dev_id) |
474 | { | 474 | { |
475 | int irq_bit, i; | 475 | int irq_bit, i; |
476 | unsigned char events; | 476 | unsigned char events; |
@@ -481,7 +481,7 @@ irqreturn_t via_nubus_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
481 | for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) { | 481 | for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) { |
482 | if (events & irq_bit) { | 482 | if (events & irq_bit) { |
483 | via_irq_disable(NUBUS_SOURCE_BASE + i); | 483 | via_irq_disable(NUBUS_SOURCE_BASE + i); |
484 | m68k_handle_int(NUBUS_SOURCE_BASE + i, regs); | 484 | m68k_handle_int(NUBUS_SOURCE_BASE + i); |
485 | via_irq_enable(NUBUS_SOURCE_BASE + i); | 485 | via_irq_enable(NUBUS_SOURCE_BASE + i); |
486 | } | 486 | } |
487 | } | 487 | } |
diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c index 0cd0e5bddcee..4a7df9c3f85a 100644 --- a/arch/m68k/mvme147/config.c +++ b/arch/m68k/mvme147/config.c | |||
@@ -38,7 +38,7 @@ | |||
38 | 38 | ||
39 | static void mvme147_get_model(char *model); | 39 | static void mvme147_get_model(char *model); |
40 | static int mvme147_get_hardware_list(char *buffer); | 40 | static int mvme147_get_hardware_list(char *buffer); |
41 | extern void mvme147_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 41 | extern void mvme147_sched_init(irq_handler_t handler); |
42 | extern unsigned long mvme147_gettimeoffset (void); | 42 | extern unsigned long mvme147_gettimeoffset (void); |
43 | extern int mvme147_hwclk (int, struct rtc_time *); | 43 | extern int mvme147_hwclk (int, struct rtc_time *); |
44 | extern int mvme147_set_clock_mmss (unsigned long); | 44 | extern int mvme147_set_clock_mmss (unsigned long); |
@@ -51,7 +51,7 @@ static int bcd2int (unsigned char b); | |||
51 | /* Save tick handler routine pointer, will point to do_timer() in | 51 | /* Save tick handler routine pointer, will point to do_timer() in |
52 | * kernel/sched.c, called via mvme147_process_int() */ | 52 | * kernel/sched.c, called via mvme147_process_int() */ |
53 | 53 | ||
54 | irqreturn_t (*tick_handler)(int, void *, struct pt_regs *); | 54 | irq_handler_t tick_handler; |
55 | 55 | ||
56 | 56 | ||
57 | int mvme147_parse_bootinfo(const struct bi_record *bi) | 57 | int mvme147_parse_bootinfo(const struct bi_record *bi) |
@@ -114,15 +114,15 @@ void __init config_mvme147(void) | |||
114 | 114 | ||
115 | /* Using pcc tick timer 1 */ | 115 | /* Using pcc tick timer 1 */ |
116 | 116 | ||
117 | static irqreturn_t mvme147_timer_int (int irq, void *dev_id, struct pt_regs *fp) | 117 | static irqreturn_t mvme147_timer_int (int irq, void *dev_id) |
118 | { | 118 | { |
119 | m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR; | 119 | m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR; |
120 | m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1; | 120 | m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1; |
121 | return tick_handler(irq, dev_id, fp); | 121 | return tick_handler(irq, dev_id); |
122 | } | 122 | } |
123 | 123 | ||
124 | 124 | ||
125 | void mvme147_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) | 125 | void mvme147_sched_init (irq_handler_t timer_routine) |
126 | { | 126 | { |
127 | tick_handler = timer_routine; | 127 | tick_handler = timer_routine; |
128 | request_irq (PCC_IRQ_TIMER1, mvme147_timer_int, | 128 | request_irq (PCC_IRQ_TIMER1, mvme147_timer_int, |
diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c index ce2727ed1bc0..c829ebb6b1af 100644 --- a/arch/m68k/mvme16x/config.c +++ b/arch/m68k/mvme16x/config.c | |||
@@ -42,7 +42,7 @@ static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE; | |||
42 | 42 | ||
43 | static void mvme16x_get_model(char *model); | 43 | static void mvme16x_get_model(char *model); |
44 | static int mvme16x_get_hardware_list(char *buffer); | 44 | static int mvme16x_get_hardware_list(char *buffer); |
45 | extern void mvme16x_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 45 | extern void mvme16x_sched_init(irq_handler_t handler); |
46 | extern unsigned long mvme16x_gettimeoffset (void); | 46 | extern unsigned long mvme16x_gettimeoffset (void); |
47 | extern int mvme16x_hwclk (int, struct rtc_time *); | 47 | extern int mvme16x_hwclk (int, struct rtc_time *); |
48 | extern int mvme16x_set_clock_mmss (unsigned long); | 48 | extern int mvme16x_set_clock_mmss (unsigned long); |
@@ -54,7 +54,7 @@ int bcd2int (unsigned char b); | |||
54 | /* Save tick handler routine pointer, will point to do_timer() in | 54 | /* Save tick handler routine pointer, will point to do_timer() in |
55 | * kernel/sched.c, called via mvme16x_process_int() */ | 55 | * kernel/sched.c, called via mvme16x_process_int() */ |
56 | 56 | ||
57 | static irqreturn_t (*tick_handler)(int, void *, struct pt_regs *); | 57 | static irq_handler_t tick_handler; |
58 | 58 | ||
59 | 59 | ||
60 | unsigned short mvme16x_config; | 60 | unsigned short mvme16x_config; |
@@ -190,7 +190,7 @@ void __init config_mvme16x(void) | |||
190 | } | 190 | } |
191 | } | 191 | } |
192 | 192 | ||
193 | static irqreturn_t mvme16x_abort_int (int irq, void *dev_id, struct pt_regs *fp) | 193 | static irqreturn_t mvme16x_abort_int (int irq, void *dev_id) |
194 | { | 194 | { |
195 | p_bdid p = &mvme_bdid; | 195 | p_bdid p = &mvme_bdid; |
196 | unsigned long *new = (unsigned long *)vectors; | 196 | unsigned long *new = (unsigned long *)vectors; |
@@ -218,13 +218,13 @@ static irqreturn_t mvme16x_abort_int (int irq, void *dev_id, struct pt_regs *fp) | |||
218 | return IRQ_HANDLED; | 218 | return IRQ_HANDLED; |
219 | } | 219 | } |
220 | 220 | ||
221 | static irqreturn_t mvme16x_timer_int (int irq, void *dev_id, struct pt_regs *fp) | 221 | static irqreturn_t mvme16x_timer_int (int irq, void *dev_id) |
222 | { | 222 | { |
223 | *(volatile unsigned char *)0xfff4201b |= 8; | 223 | *(volatile unsigned char *)0xfff4201b |= 8; |
224 | return tick_handler(irq, dev_id, fp); | 224 | return tick_handler(irq, dev_id); |
225 | } | 225 | } |
226 | 226 | ||
227 | void mvme16x_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) | 227 | void mvme16x_sched_init (irq_handler_t timer_routine) |
228 | { | 228 | { |
229 | p_bdid p = &mvme_bdid; | 229 | p_bdid p = &mvme_bdid; |
230 | int irq; | 230 | int irq; |
diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c index 9a1827876408..92f873cc7060 100644 --- a/arch/m68k/q40/config.c +++ b/arch/m68k/q40/config.c | |||
@@ -39,7 +39,7 @@ extern irqreturn_t q40_process_int (int level, struct pt_regs *regs); | |||
39 | extern void q40_init_IRQ (void); | 39 | extern void q40_init_IRQ (void); |
40 | static void q40_get_model(char *model); | 40 | static void q40_get_model(char *model); |
41 | static int q40_get_hardware_list(char *buffer); | 41 | static int q40_get_hardware_list(char *buffer); |
42 | extern void q40_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 42 | extern void q40_sched_init(irq_handler_t handler); |
43 | 43 | ||
44 | extern unsigned long q40_gettimeoffset (void); | 44 | extern unsigned long q40_gettimeoffset (void); |
45 | extern int q40_hwclk (int, struct rtc_time *); | 45 | extern int q40_hwclk (int, struct rtc_time *); |
diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c index 472f41c4158b..31cc07d8cec4 100644 --- a/arch/m68k/q40/q40ints.c +++ b/arch/m68k/q40/q40ints.c | |||
@@ -125,9 +125,9 @@ void q40_mksound(unsigned int hz, unsigned int ticks) | |||
125 | sound_ticks = ticks << 1; | 125 | sound_ticks = ticks << 1; |
126 | } | 126 | } |
127 | 127 | ||
128 | static irqreturn_t (*q40_timer_routine)(int, void *, struct pt_regs *); | 128 | static irq_handler_t q40_timer_routine; |
129 | 129 | ||
130 | static irqreturn_t q40_timer_int (int irq, void * dev, struct pt_regs * regs) | 130 | static irqreturn_t q40_timer_int (int irq, void * dev) |
131 | { | 131 | { |
132 | ql_ticks = ql_ticks ? 0 : 1; | 132 | ql_ticks = ql_ticks ? 0 : 1; |
133 | if (sound_ticks) { | 133 | if (sound_ticks) { |
@@ -138,11 +138,11 @@ static irqreturn_t q40_timer_int (int irq, void * dev, struct pt_regs * regs) | |||
138 | } | 138 | } |
139 | 139 | ||
140 | if (!ql_ticks) | 140 | if (!ql_ticks) |
141 | q40_timer_routine(irq, dev, regs); | 141 | q40_timer_routine(irq, dev); |
142 | return IRQ_HANDLED; | 142 | return IRQ_HANDLED; |
143 | } | 143 | } |
144 | 144 | ||
145 | void q40_sched_init (irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) | 145 | void q40_sched_init (irq_handler_t timer_routine) |
146 | { | 146 | { |
147 | int timer_irq; | 147 | int timer_irq; |
148 | 148 | ||
@@ -218,11 +218,11 @@ static void q40_irq_handler(unsigned int irq, struct pt_regs *fp) | |||
218 | switch (irq) { | 218 | switch (irq) { |
219 | case 4: | 219 | case 4: |
220 | case 6: | 220 | case 6: |
221 | m68k_handle_int(Q40_IRQ_SAMPLE, fp); | 221 | __m68k_handle_int(Q40_IRQ_SAMPLE, fp); |
222 | return; | 222 | return; |
223 | } | 223 | } |
224 | if (mir & Q40_IRQ_FRAME_MASK) { | 224 | if (mir & Q40_IRQ_FRAME_MASK) { |
225 | m68k_handle_int(Q40_IRQ_FRAME, fp); | 225 | __m68k_handle_int(Q40_IRQ_FRAME, fp); |
226 | master_outb(-1, FRAME_CLEAR_REG); | 226 | master_outb(-1, FRAME_CLEAR_REG); |
227 | } | 227 | } |
228 | if ((mir & Q40_IRQ_SER_MASK) || (mir & Q40_IRQ_EXT_MASK)) { | 228 | if ((mir & Q40_IRQ_SER_MASK) || (mir & Q40_IRQ_EXT_MASK)) { |
@@ -257,7 +257,7 @@ static void q40_irq_handler(unsigned int irq, struct pt_regs *fp) | |||
257 | goto iirq; | 257 | goto iirq; |
258 | } | 258 | } |
259 | q40_state[irq] |= IRQ_INPROGRESS; | 259 | q40_state[irq] |= IRQ_INPROGRESS; |
260 | m68k_handle_int(irq, fp); | 260 | __m68k_handle_int(irq, fp); |
261 | q40_state[irq] &= ~IRQ_INPROGRESS; | 261 | q40_state[irq] &= ~IRQ_INPROGRESS; |
262 | 262 | ||
263 | /* naively enable everything, if that fails than */ | 263 | /* naively enable everything, if that fails than */ |
@@ -288,7 +288,7 @@ static void q40_irq_handler(unsigned int irq, struct pt_regs *fp) | |||
288 | mir = master_inb(IIRQ_REG); | 288 | mir = master_inb(IIRQ_REG); |
289 | /* should test whether keyboard irq is really enabled, doing it in defhand */ | 289 | /* should test whether keyboard irq is really enabled, doing it in defhand */ |
290 | if (mir & Q40_IRQ_KEYB_MASK) | 290 | if (mir & Q40_IRQ_KEYB_MASK) |
291 | m68k_handle_int(Q40_IRQ_KEYBOARD, fp); | 291 | __m68k_handle_int(Q40_IRQ_KEYBOARD, fp); |
292 | 292 | ||
293 | return; | 293 | return; |
294 | } | 294 | } |
diff --git a/arch/m68k/sun3/config.c b/arch/m68k/sun3/config.c index d09d03b3d956..4851b8437a87 100644 --- a/arch/m68k/sun3/config.c +++ b/arch/m68k/sun3/config.c | |||
@@ -35,7 +35,7 @@ extern char _text, _end; | |||
35 | char sun3_reserved_pmeg[SUN3_PMEGS_NUM]; | 35 | char sun3_reserved_pmeg[SUN3_PMEGS_NUM]; |
36 | 36 | ||
37 | extern unsigned long sun3_gettimeoffset(void); | 37 | extern unsigned long sun3_gettimeoffset(void); |
38 | extern void sun3_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 38 | extern void sun3_sched_init(irq_handler_t handler); |
39 | extern void sun3_get_model (char* model); | 39 | extern void sun3_get_model (char* model); |
40 | extern void idprom_init (void); | 40 | extern void idprom_init (void); |
41 | extern int sun3_hwclk(int set, struct rtc_time *t); | 41 | extern int sun3_hwclk(int set, struct rtc_time *t); |
@@ -162,7 +162,7 @@ void __init config_sun3(void) | |||
162 | sun3_bootmem_alloc(memory_start, memory_end); | 162 | sun3_bootmem_alloc(memory_start, memory_end); |
163 | } | 163 | } |
164 | 164 | ||
165 | void __init sun3_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) | 165 | void __init sun3_sched_init(irq_handler_t timer_routine) |
166 | { | 166 | { |
167 | sun3_disable_interrupts(); | 167 | sun3_disable_interrupts(); |
168 | intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_DISABLE|INTERSIL_24H_MODE); | 168 | intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_DISABLE|INTERSIL_24H_MODE); |
diff --git a/arch/m68k/sun3/sun3ints.c b/arch/m68k/sun3/sun3ints.c index dc4ea7e074a6..baf74e8de8b5 100644 --- a/arch/m68k/sun3/sun3ints.c +++ b/arch/m68k/sun3/sun3ints.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <asm/intersil.h> | 15 | #include <asm/intersil.h> |
16 | #include <asm/oplib.h> | 16 | #include <asm/oplib.h> |
17 | #include <asm/sun3ints.h> | 17 | #include <asm/sun3ints.h> |
18 | #include <asm/irq_regs.h> | ||
18 | #include <linux/seq_file.h> | 19 | #include <linux/seq_file.h> |
19 | 20 | ||
20 | extern void sun3_leds (unsigned char); | 21 | extern void sun3_leds (unsigned char); |
@@ -48,7 +49,7 @@ void sun3_disable_irq(unsigned int irq) | |||
48 | *sun3_intreg &= ~(1 << irq); | 49 | *sun3_intreg &= ~(1 << irq); |
49 | } | 50 | } |
50 | 51 | ||
51 | static irqreturn_t sun3_int7(int irq, void *dev_id, struct pt_regs *fp) | 52 | static irqreturn_t sun3_int7(int irq, void *dev_id) |
52 | { | 53 | { |
53 | *sun3_intreg |= (1 << irq); | 54 | *sun3_intreg |= (1 << irq); |
54 | if (!(kstat_cpu(0).irqs[irq] % 2000)) | 55 | if (!(kstat_cpu(0).irqs[irq] % 2000)) |
@@ -56,7 +57,7 @@ static irqreturn_t sun3_int7(int irq, void *dev_id, struct pt_regs *fp) | |||
56 | return IRQ_HANDLED; | 57 | return IRQ_HANDLED; |
57 | } | 58 | } |
58 | 59 | ||
59 | static irqreturn_t sun3_int5(int irq, void *dev_id, struct pt_regs *fp) | 60 | static irqreturn_t sun3_int5(int irq, void *dev_id) |
60 | { | 61 | { |
61 | #ifdef CONFIG_SUN3 | 62 | #ifdef CONFIG_SUN3 |
62 | intersil_clear(); | 63 | intersil_clear(); |
@@ -67,14 +68,14 @@ static irqreturn_t sun3_int5(int irq, void *dev_id, struct pt_regs *fp) | |||
67 | #endif | 68 | #endif |
68 | do_timer(1); | 69 | do_timer(1); |
69 | #ifndef CONFIG_SMP | 70 | #ifndef CONFIG_SMP |
70 | update_process_times(user_mode(fp)); | 71 | update_process_times(user_mode(get_irq_regs())); |
71 | #endif | 72 | #endif |
72 | if (!(kstat_cpu(0).irqs[irq] % 20)) | 73 | if (!(kstat_cpu(0).irqs[irq] % 20)) |
73 | sun3_leds(led_pattern[(kstat_cpu(0).irqs[irq] % 160) / 20]); | 74 | sun3_leds(led_pattern[(kstat_cpu(0).irqs[irq] % 160) / 20]); |
74 | return IRQ_HANDLED; | 75 | return IRQ_HANDLED; |
75 | } | 76 | } |
76 | 77 | ||
77 | static irqreturn_t sun3_vec255(int irq, void *dev_id, struct pt_regs *fp) | 78 | static irqreturn_t sun3_vec255(int irq, void *dev_id) |
78 | { | 79 | { |
79 | // intersil_clear(); | 80 | // intersil_clear(); |
80 | return IRQ_HANDLED; | 81 | return IRQ_HANDLED; |
@@ -84,7 +85,7 @@ static void sun3_inthandle(unsigned int irq, struct pt_regs *fp) | |||
84 | { | 85 | { |
85 | *sun3_intreg &= ~(1 << irq); | 86 | *sun3_intreg &= ~(1 << irq); |
86 | 87 | ||
87 | m68k_handle_int(irq, fp); | 88 | __m68k_handle_int(irq, fp); |
88 | } | 89 | } |
89 | 90 | ||
90 | static struct irq_controller sun3_irq_controller = { | 91 | static struct irq_controller sun3_irq_controller = { |
diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c index 6f4204fbecd7..f5eaafb00d21 100644 --- a/arch/m68k/sun3x/time.c +++ b/arch/m68k/sun3x/time.c | |||
@@ -90,7 +90,7 @@ static void sun3x_timer_tick(int irq, void *dev_id, struct pt_regs *regs) | |||
90 | } | 90 | } |
91 | #endif | 91 | #endif |
92 | 92 | ||
93 | void __init sun3x_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)) | 93 | void __init sun3x_sched_init(irq_handler_t vector) |
94 | { | 94 | { |
95 | 95 | ||
96 | sun3_disable_interrupts(); | 96 | sun3_disable_interrupts(); |
diff --git a/arch/m68k/sun3x/time.h b/arch/m68k/sun3x/time.h index e7e43b4ec4a1..6909e1297534 100644 --- a/arch/m68k/sun3x/time.h +++ b/arch/m68k/sun3x/time.h | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | extern int sun3x_hwclk(int set, struct rtc_time *t); | 4 | extern int sun3x_hwclk(int set, struct rtc_time *t); |
5 | unsigned long sun3x_gettimeoffset (void); | 5 | unsigned long sun3x_gettimeoffset (void); |
6 | void sun3x_sched_init(irqreturn_t (*vector)(int, void *, struct pt_regs *)); | 6 | void sun3x_sched_init(irq_handler_t vector); |
7 | 7 | ||
8 | struct mostek_dt { | 8 | struct mostek_dt { |
9 | volatile unsigned char csr; | 9 | volatile unsigned char csr; |