diff options
Diffstat (limited to 'arch')
262 files changed, 3294 insertions, 1447 deletions
diff --git a/arch/alpha/kernel/core_apecs.c b/arch/alpha/kernel/core_apecs.c index a27ba12ba35e..ca46b2c24457 100644 --- a/arch/alpha/kernel/core_apecs.c +++ b/arch/alpha/kernel/core_apecs.c | |||
@@ -387,8 +387,7 @@ apecs_pci_clr_err(void) | |||
387 | } | 387 | } |
388 | 388 | ||
389 | void | 389 | void |
390 | apecs_machine_check(unsigned long vector, unsigned long la_ptr, | 390 | apecs_machine_check(unsigned long vector, unsigned long la_ptr) |
391 | struct pt_regs * regs) | ||
392 | { | 391 | { |
393 | struct el_common *mchk_header; | 392 | struct el_common *mchk_header; |
394 | struct el_apecs_procdata *mchk_procdata; | 393 | struct el_apecs_procdata *mchk_procdata; |
@@ -412,7 +411,7 @@ apecs_machine_check(unsigned long vector, unsigned long la_ptr, | |||
412 | wrmces(0x7); /* reset machine check pending flag */ | 411 | wrmces(0x7); /* reset machine check pending flag */ |
413 | mb(); | 412 | mb(); |
414 | 413 | ||
415 | process_mcheck_info(vector, la_ptr, regs, "APECS", | 414 | process_mcheck_info(vector, la_ptr, "APECS", |
416 | (mcheck_expected(0) | 415 | (mcheck_expected(0) |
417 | && (mchk_sysdata->epic_dcsr & 0x0c00UL))); | 416 | && (mchk_sysdata->epic_dcsr & 0x0c00UL))); |
418 | } | 417 | } |
diff --git a/arch/alpha/kernel/core_cia.c b/arch/alpha/kernel/core_cia.c index fd563064363c..1d6ee6c985f9 100644 --- a/arch/alpha/kernel/core_cia.c +++ b/arch/alpha/kernel/core_cia.c | |||
@@ -1192,8 +1192,7 @@ cia_decode_mchk(unsigned long la_ptr) | |||
1192 | } | 1192 | } |
1193 | 1193 | ||
1194 | void | 1194 | void |
1195 | cia_machine_check(unsigned long vector, unsigned long la_ptr, | 1195 | cia_machine_check(unsigned long vector, unsigned long la_ptr) |
1196 | struct pt_regs * regs) | ||
1197 | { | 1196 | { |
1198 | int expected; | 1197 | int expected; |
1199 | 1198 | ||
@@ -1208,5 +1207,5 @@ cia_machine_check(unsigned long vector, unsigned long la_ptr, | |||
1208 | expected = mcheck_expected(0); | 1207 | expected = mcheck_expected(0); |
1209 | if (!expected && vector == 0x660) | 1208 | if (!expected && vector == 0x660) |
1210 | expected = cia_decode_mchk(la_ptr); | 1209 | expected = cia_decode_mchk(la_ptr); |
1211 | process_mcheck_info(vector, la_ptr, regs, "CIA", expected); | 1210 | process_mcheck_info(vector, la_ptr, "CIA", expected); |
1212 | } | 1211 | } |
diff --git a/arch/alpha/kernel/core_lca.c b/arch/alpha/kernel/core_lca.c index 6a5a9145c676..4843f6ec9f3a 100644 --- a/arch/alpha/kernel/core_lca.c +++ b/arch/alpha/kernel/core_lca.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/tty.h> | 19 | #include <linux/tty.h> |
20 | 20 | ||
21 | #include <asm/ptrace.h> | 21 | #include <asm/ptrace.h> |
22 | #include <asm/irq_regs.h> | ||
22 | #include <asm/smp.h> | 23 | #include <asm/smp.h> |
23 | 24 | ||
24 | #include "proto.h" | 25 | #include "proto.h" |
@@ -386,8 +387,7 @@ ioc_error(__u32 stat0, __u32 stat1) | |||
386 | } | 387 | } |
387 | 388 | ||
388 | void | 389 | void |
389 | lca_machine_check(unsigned long vector, unsigned long la_ptr, | 390 | lca_machine_check(unsigned long vector, unsigned long la_ptr) |
390 | struct pt_regs *regs) | ||
391 | { | 391 | { |
392 | const char * reason; | 392 | const char * reason; |
393 | union el_lca el; | 393 | union el_lca el; |
@@ -397,7 +397,7 @@ lca_machine_check(unsigned long vector, unsigned long la_ptr, | |||
397 | wrmces(rdmces()); /* reset machine check pending flag */ | 397 | wrmces(rdmces()); /* reset machine check pending flag */ |
398 | 398 | ||
399 | printk(KERN_CRIT "LCA machine check: vector=%#lx pc=%#lx code=%#x\n", | 399 | printk(KERN_CRIT "LCA machine check: vector=%#lx pc=%#lx code=%#x\n", |
400 | vector, regs->pc, (unsigned int) el.c->code); | 400 | vector, get_irq_regs()->pc, (unsigned int) el.c->code); |
401 | 401 | ||
402 | /* | 402 | /* |
403 | * The first quadword after the common header always seems to | 403 | * The first quadword after the common header always seems to |
diff --git a/arch/alpha/kernel/core_mcpcia.c b/arch/alpha/kernel/core_mcpcia.c index 28849c894153..8d019071190a 100644 --- a/arch/alpha/kernel/core_mcpcia.c +++ b/arch/alpha/kernel/core_mcpcia.c | |||
@@ -572,8 +572,7 @@ mcpcia_print_system_area(unsigned long la_ptr) | |||
572 | } | 572 | } |
573 | 573 | ||
574 | void | 574 | void |
575 | mcpcia_machine_check(unsigned long vector, unsigned long la_ptr, | 575 | mcpcia_machine_check(unsigned long vector, unsigned long la_ptr) |
576 | struct pt_regs * regs) | ||
577 | { | 576 | { |
578 | struct el_common *mchk_header; | 577 | struct el_common *mchk_header; |
579 | struct el_MCPCIA_uncorrected_frame_mcheck *mchk_logout; | 578 | struct el_MCPCIA_uncorrected_frame_mcheck *mchk_logout; |
@@ -610,7 +609,7 @@ mcpcia_machine_check(unsigned long vector, unsigned long la_ptr, | |||
610 | wrmces(0x7); | 609 | wrmces(0x7); |
611 | mb(); | 610 | mb(); |
612 | 611 | ||
613 | process_mcheck_info(vector, la_ptr, regs, "MCPCIA", expected != 0); | 612 | process_mcheck_info(vector, la_ptr, "MCPCIA", expected != 0); |
614 | if (!expected && vector != 0x620 && vector != 0x630) { | 613 | if (!expected && vector != 0x620 && vector != 0x630) { |
615 | mcpcia_print_uncorrectable(mchk_logout); | 614 | mcpcia_print_uncorrectable(mchk_logout); |
616 | mcpcia_print_system_area(la_ptr); | 615 | mcpcia_print_system_area(la_ptr); |
diff --git a/arch/alpha/kernel/core_polaris.c b/arch/alpha/kernel/core_polaris.c index 277674a500ff..c5a271d37abd 100644 --- a/arch/alpha/kernel/core_polaris.c +++ b/arch/alpha/kernel/core_polaris.c | |||
@@ -187,8 +187,7 @@ polaris_pci_clr_err(void) | |||
187 | } | 187 | } |
188 | 188 | ||
189 | void | 189 | void |
190 | polaris_machine_check(unsigned long vector, unsigned long la_ptr, | 190 | polaris_machine_check(unsigned long vector, unsigned long la_ptr) |
191 | struct pt_regs * regs) | ||
192 | { | 191 | { |
193 | /* Clear the error before any reporting. */ | 192 | /* Clear the error before any reporting. */ |
194 | mb(); | 193 | mb(); |
@@ -198,6 +197,6 @@ polaris_machine_check(unsigned long vector, unsigned long la_ptr, | |||
198 | wrmces(0x7); | 197 | wrmces(0x7); |
199 | mb(); | 198 | mb(); |
200 | 199 | ||
201 | process_mcheck_info(vector, la_ptr, regs, "POLARIS", | 200 | process_mcheck_info(vector, la_ptr, "POLARIS", |
202 | mcheck_expected(0)); | 201 | mcheck_expected(0)); |
203 | } | 202 | } |
diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c index ecce09e3626a..f5ca5255eb06 100644 --- a/arch/alpha/kernel/core_t2.c +++ b/arch/alpha/kernel/core_t2.c | |||
@@ -551,8 +551,7 @@ t2_clear_errors(int cpu) | |||
551 | * Hence all the taken/expected/any_expected/last_taken stuff... | 551 | * Hence all the taken/expected/any_expected/last_taken stuff... |
552 | */ | 552 | */ |
553 | void | 553 | void |
554 | t2_machine_check(unsigned long vector, unsigned long la_ptr, | 554 | t2_machine_check(unsigned long vector, unsigned long la_ptr) |
555 | struct pt_regs * regs) | ||
556 | { | 555 | { |
557 | int cpu = smp_processor_id(); | 556 | int cpu = smp_processor_id(); |
558 | #ifdef CONFIG_VERBOSE_MCHECK | 557 | #ifdef CONFIG_VERBOSE_MCHECK |
@@ -618,5 +617,5 @@ t2_machine_check(unsigned long vector, unsigned long la_ptr, | |||
618 | } | 617 | } |
619 | #endif | 618 | #endif |
620 | 619 | ||
621 | process_mcheck_info(vector, la_ptr, regs, "T2", mcheck_expected(cpu)); | 620 | process_mcheck_info(vector, la_ptr, "T2", mcheck_expected(cpu)); |
622 | } | 621 | } |
diff --git a/arch/alpha/kernel/core_tsunami.c b/arch/alpha/kernel/core_tsunami.c index 8aa305bd6a2c..ce623c6e55e1 100644 --- a/arch/alpha/kernel/core_tsunami.c +++ b/arch/alpha/kernel/core_tsunami.c | |||
@@ -443,8 +443,7 @@ tsunami_pci_clr_err(void) | |||
443 | } | 443 | } |
444 | 444 | ||
445 | void | 445 | void |
446 | tsunami_machine_check(unsigned long vector, unsigned long la_ptr, | 446 | tsunami_machine_check(unsigned long vector, unsigned long la_ptr) |
447 | struct pt_regs * regs) | ||
448 | { | 447 | { |
449 | /* Clear error before any reporting. */ | 448 | /* Clear error before any reporting. */ |
450 | mb(); | 449 | mb(); |
@@ -454,6 +453,6 @@ tsunami_machine_check(unsigned long vector, unsigned long la_ptr, | |||
454 | wrmces(0x7); | 453 | wrmces(0x7); |
455 | mb(); | 454 | mb(); |
456 | 455 | ||
457 | process_mcheck_info(vector, la_ptr, regs, "TSUNAMI", | 456 | process_mcheck_info(vector, la_ptr, "TSUNAMI", |
458 | mcheck_expected(smp_processor_id())); | 457 | mcheck_expected(smp_processor_id())); |
459 | } | 458 | } |
diff --git a/arch/alpha/kernel/core_wildfire.c b/arch/alpha/kernel/core_wildfire.c index 2b767a1bad96..7e072443d7fd 100644 --- a/arch/alpha/kernel/core_wildfire.c +++ b/arch/alpha/kernel/core_wildfire.c | |||
@@ -322,8 +322,7 @@ wildfire_init_arch(void) | |||
322 | } | 322 | } |
323 | 323 | ||
324 | void | 324 | void |
325 | wildfire_machine_check(unsigned long vector, unsigned long la_ptr, | 325 | wildfire_machine_check(unsigned long vector, unsigned long la_ptr) |
326 | struct pt_regs * regs) | ||
327 | { | 326 | { |
328 | mb(); | 327 | mb(); |
329 | mb(); /* magic */ | 328 | mb(); /* magic */ |
@@ -332,7 +331,7 @@ wildfire_machine_check(unsigned long vector, unsigned long la_ptr, | |||
332 | wrmces(0x7); | 331 | wrmces(0x7); |
333 | mb(); | 332 | mb(); |
334 | 333 | ||
335 | process_mcheck_info(vector, la_ptr, regs, "WILDFIRE", | 334 | process_mcheck_info(vector, la_ptr, "WILDFIRE", |
336 | mcheck_expected(smp_processor_id())); | 335 | mcheck_expected(smp_processor_id())); |
337 | } | 336 | } |
338 | 337 | ||
diff --git a/arch/alpha/kernel/err_ev6.c b/arch/alpha/kernel/err_ev6.c index 64f59f2fcf5c..69b5f4ea7355 100644 --- a/arch/alpha/kernel/err_ev6.c +++ b/arch/alpha/kernel/err_ev6.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/sched.h> | 11 | #include <linux/sched.h> |
12 | 12 | ||
13 | #include <asm/io.h> | 13 | #include <asm/io.h> |
14 | #include <asm/irq_regs.h> | ||
14 | #include <asm/hwrpb.h> | 15 | #include <asm/hwrpb.h> |
15 | #include <asm/smp.h> | 16 | #include <asm/smp.h> |
16 | #include <asm/err_common.h> | 17 | #include <asm/err_common.h> |
@@ -229,7 +230,7 @@ ev6_process_logout_frame(struct el_common *mchk_header, int print) | |||
229 | } | 230 | } |
230 | 231 | ||
231 | void | 232 | void |
232 | ev6_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | 233 | ev6_machine_check(u64 vector, u64 la_ptr) |
233 | { | 234 | { |
234 | struct el_common *mchk_header = (struct el_common *)la_ptr; | 235 | struct el_common *mchk_header = (struct el_common *)la_ptr; |
235 | 236 | ||
@@ -260,7 +261,7 @@ ev6_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | |||
260 | (unsigned int)vector, (int)smp_processor_id()); | 261 | (unsigned int)vector, (int)smp_processor_id()); |
261 | 262 | ||
262 | ev6_process_logout_frame(mchk_header, 1); | 263 | ev6_process_logout_frame(mchk_header, 1); |
263 | dik_show_regs(regs, NULL); | 264 | dik_show_regs(get_irq_regs(), NULL); |
264 | 265 | ||
265 | err_print_prefix = saved_err_prefix; | 266 | err_print_prefix = saved_err_prefix; |
266 | } | 267 | } |
diff --git a/arch/alpha/kernel/err_ev7.c b/arch/alpha/kernel/err_ev7.c index fed6b3d1b803..95463ab1cf35 100644 --- a/arch/alpha/kernel/err_ev7.c +++ b/arch/alpha/kernel/err_ev7.c | |||
@@ -118,7 +118,7 @@ ev7_collect_logout_frame_subpackets(struct el_subpacket *el_ptr, | |||
118 | } | 118 | } |
119 | 119 | ||
120 | void | 120 | void |
121 | ev7_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | 121 | ev7_machine_check(u64 vector, u64 la_ptr) |
122 | { | 122 | { |
123 | struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr; | 123 | struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr; |
124 | char *saved_err_prefix = err_print_prefix; | 124 | char *saved_err_prefix = err_print_prefix; |
diff --git a/arch/alpha/kernel/err_impl.h b/arch/alpha/kernel/err_impl.h index 64e9b73809fa..3c12258158e6 100644 --- a/arch/alpha/kernel/err_impl.h +++ b/arch/alpha/kernel/err_impl.h | |||
@@ -60,26 +60,26 @@ extern struct ev7_lf_subpackets * | |||
60 | ev7_collect_logout_frame_subpackets(struct el_subpacket *, | 60 | ev7_collect_logout_frame_subpackets(struct el_subpacket *, |
61 | struct ev7_lf_subpackets *); | 61 | struct ev7_lf_subpackets *); |
62 | extern void ev7_register_error_handlers(void); | 62 | extern void ev7_register_error_handlers(void); |
63 | extern void ev7_machine_check(u64, u64, struct pt_regs *); | 63 | extern void ev7_machine_check(u64, u64); |
64 | 64 | ||
65 | /* | 65 | /* |
66 | * err_ev6.c | 66 | * err_ev6.c |
67 | */ | 67 | */ |
68 | extern void ev6_register_error_handlers(void); | 68 | extern void ev6_register_error_handlers(void); |
69 | extern int ev6_process_logout_frame(struct el_common *, int); | 69 | extern int ev6_process_logout_frame(struct el_common *, int); |
70 | extern void ev6_machine_check(u64, u64, struct pt_regs *); | 70 | extern void ev6_machine_check(u64, u64); |
71 | 71 | ||
72 | /* | 72 | /* |
73 | * err_marvel.c | 73 | * err_marvel.c |
74 | */ | 74 | */ |
75 | extern void marvel_machine_check(u64, u64, struct pt_regs *); | 75 | extern void marvel_machine_check(u64, u64); |
76 | extern void marvel_register_error_handlers(void); | 76 | extern void marvel_register_error_handlers(void); |
77 | 77 | ||
78 | /* | 78 | /* |
79 | * err_titan.c | 79 | * err_titan.c |
80 | */ | 80 | */ |
81 | extern int titan_process_logout_frame(struct el_common *, int); | 81 | extern int titan_process_logout_frame(struct el_common *, int); |
82 | extern void titan_machine_check(u64, u64, struct pt_regs *); | 82 | extern void titan_machine_check(u64, u64); |
83 | extern void titan_register_error_handlers(void); | 83 | extern void titan_register_error_handlers(void); |
84 | extern int privateer_process_logout_frame(struct el_common *, int); | 84 | extern int privateer_process_logout_frame(struct el_common *, int); |
85 | extern void privateer_machine_check(u64, u64, struct pt_regs *); | 85 | extern void privateer_machine_check(u64, u64); |
diff --git a/arch/alpha/kernel/err_marvel.c b/arch/alpha/kernel/err_marvel.c index 70b38b1d2af3..f2956ac8dccc 100644 --- a/arch/alpha/kernel/err_marvel.c +++ b/arch/alpha/kernel/err_marvel.c | |||
@@ -1042,7 +1042,7 @@ marvel_process_logout_frame(struct ev7_lf_subpackets *lf_subpackets, int print) | |||
1042 | } | 1042 | } |
1043 | 1043 | ||
1044 | void | 1044 | void |
1045 | marvel_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | 1045 | marvel_machine_check(u64 vector, u64 la_ptr) |
1046 | { | 1046 | { |
1047 | struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr; | 1047 | struct el_subpacket *el_ptr = (struct el_subpacket *)la_ptr; |
1048 | int (*process_frame)(struct ev7_lf_subpackets *, int) = NULL; | 1048 | int (*process_frame)(struct ev7_lf_subpackets *, int) = NULL; |
@@ -1077,7 +1077,7 @@ marvel_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | |||
1077 | 1077 | ||
1078 | default: | 1078 | default: |
1079 | /* Don't know it - pass it up. */ | 1079 | /* Don't know it - pass it up. */ |
1080 | ev7_machine_check(vector, la_ptr, regs); | 1080 | ev7_machine_check(vector, la_ptr); |
1081 | return; | 1081 | return; |
1082 | } | 1082 | } |
1083 | 1083 | ||
diff --git a/arch/alpha/kernel/err_titan.c b/arch/alpha/kernel/err_titan.c index 7e6720d45f02..febe71c6869f 100644 --- a/arch/alpha/kernel/err_titan.c +++ b/arch/alpha/kernel/err_titan.c | |||
@@ -379,7 +379,7 @@ titan_process_logout_frame(struct el_common *mchk_header, int print) | |||
379 | } | 379 | } |
380 | 380 | ||
381 | void | 381 | void |
382 | titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | 382 | titan_machine_check(u64 vector, u64 la_ptr) |
383 | { | 383 | { |
384 | struct el_common *mchk_header = (struct el_common *)la_ptr; | 384 | struct el_common *mchk_header = (struct el_common *)la_ptr; |
385 | struct el_TITAN_sysdata_mcheck *tmchk = | 385 | struct el_TITAN_sysdata_mcheck *tmchk = |
@@ -408,7 +408,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | |||
408 | * Only handle system errors here | 408 | * Only handle system errors here |
409 | */ | 409 | */ |
410 | if ((vector != SCB_Q_SYSMCHK) && (vector != SCB_Q_SYSERR)) { | 410 | if ((vector != SCB_Q_SYSMCHK) && (vector != SCB_Q_SYSERR)) { |
411 | ev6_machine_check(vector, la_ptr, regs); | 411 | ev6_machine_check(vector, la_ptr); |
412 | return; | 412 | return; |
413 | } | 413 | } |
414 | 414 | ||
@@ -442,7 +442,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | |||
442 | #ifdef CONFIG_VERBOSE_MCHECK | 442 | #ifdef CONFIG_VERBOSE_MCHECK |
443 | titan_process_logout_frame(mchk_header, alpha_verbose_mcheck); | 443 | titan_process_logout_frame(mchk_header, alpha_verbose_mcheck); |
444 | if (alpha_verbose_mcheck) | 444 | if (alpha_verbose_mcheck) |
445 | dik_show_regs(regs, NULL); | 445 | dik_show_regs(get_irq_regs(), NULL); |
446 | #endif /* CONFIG_VERBOSE_MCHECK */ | 446 | #endif /* CONFIG_VERBOSE_MCHECK */ |
447 | 447 | ||
448 | err_print_prefix = saved_err_prefix; | 448 | err_print_prefix = saved_err_prefix; |
@@ -452,7 +452,7 @@ titan_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | |||
452 | * machine checks to interrupts | 452 | * machine checks to interrupts |
453 | */ | 453 | */ |
454 | irqmask = tmchk->c_dirx & TITAN_MCHECK_INTERRUPT_MASK; | 454 | irqmask = tmchk->c_dirx & TITAN_MCHECK_INTERRUPT_MASK; |
455 | titan_dispatch_irqs(irqmask, regs); | 455 | titan_dispatch_irqs(irqmask); |
456 | } | 456 | } |
457 | 457 | ||
458 | 458 | ||
@@ -701,7 +701,7 @@ privateer_process_logout_frame(struct el_common *mchk_header, int print) | |||
701 | } | 701 | } |
702 | 702 | ||
703 | void | 703 | void |
704 | privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | 704 | privateer_machine_check(u64 vector, u64 la_ptr) |
705 | { | 705 | { |
706 | struct el_common *mchk_header = (struct el_common *)la_ptr; | 706 | struct el_common *mchk_header = (struct el_common *)la_ptr; |
707 | struct el_TITAN_sysdata_mcheck *tmchk = | 707 | struct el_TITAN_sysdata_mcheck *tmchk = |
@@ -723,7 +723,7 @@ privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | |||
723 | * Only handle system events here. | 723 | * Only handle system events here. |
724 | */ | 724 | */ |
725 | if (vector != SCB_Q_SYSEVENT) | 725 | if (vector != SCB_Q_SYSEVENT) |
726 | return titan_machine_check(vector, la_ptr, regs); | 726 | return titan_machine_check(vector, la_ptr); |
727 | 727 | ||
728 | /* | 728 | /* |
729 | * Report the event - System Events should be reported even if no | 729 | * Report the event - System Events should be reported even if no |
@@ -746,7 +746,7 @@ privateer_machine_check(u64 vector, u64 la_ptr, struct pt_regs *regs) | |||
746 | /* | 746 | /* |
747 | * Dispatch the interrupt(s). | 747 | * Dispatch the interrupt(s). |
748 | */ | 748 | */ |
749 | titan_dispatch_irqs(irqmask, regs); | 749 | titan_dispatch_irqs(irqmask); |
750 | 750 | ||
751 | /* | 751 | /* |
752 | * Release the logout frame. | 752 | * Release the logout frame. |
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index 729c475d2269..facf82a5499a 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c | |||
@@ -127,7 +127,7 @@ unlock: | |||
127 | #define MAX_ILLEGAL_IRQS 16 | 127 | #define MAX_ILLEGAL_IRQS 16 |
128 | 128 | ||
129 | void | 129 | void |
130 | handle_irq(int irq, struct pt_regs * regs) | 130 | handle_irq(int irq) |
131 | { | 131 | { |
132 | /* | 132 | /* |
133 | * We ack quickly, we don't want the irq controller | 133 | * We ack quickly, we don't want the irq controller |
@@ -157,6 +157,6 @@ handle_irq(int irq, struct pt_regs * regs) | |||
157 | * at IPL 0. | 157 | * at IPL 0. |
158 | */ | 158 | */ |
159 | local_irq_disable(); | 159 | local_irq_disable(); |
160 | __do_IRQ(irq, regs); | 160 | __do_IRQ(irq); |
161 | irq_exit(); | 161 | irq_exit(); |
162 | } | 162 | } |
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c index ddf5cf8dcb0b..6dd126b8be85 100644 --- a/arch/alpha/kernel/irq_alpha.c +++ b/arch/alpha/kernel/irq_alpha.c | |||
@@ -39,6 +39,7 @@ asmlinkage void | |||
39 | do_entInt(unsigned long type, unsigned long vector, | 39 | do_entInt(unsigned long type, unsigned long vector, |
40 | unsigned long la_ptr, struct pt_regs *regs) | 40 | unsigned long la_ptr, struct pt_regs *regs) |
41 | { | 41 | { |
42 | struct pt_regs *old_regs; | ||
42 | switch (type) { | 43 | switch (type) { |
43 | case 0: | 44 | case 0: |
44 | #ifdef CONFIG_SMP | 45 | #ifdef CONFIG_SMP |
@@ -51,6 +52,7 @@ do_entInt(unsigned long type, unsigned long vector, | |||
51 | #endif | 52 | #endif |
52 | break; | 53 | break; |
53 | case 1: | 54 | case 1: |
55 | old_regs = set_irq_regs(regs); | ||
54 | #ifdef CONFIG_SMP | 56 | #ifdef CONFIG_SMP |
55 | { | 57 | { |
56 | long cpu; | 58 | long cpu; |
@@ -61,18 +63,23 @@ do_entInt(unsigned long type, unsigned long vector, | |||
61 | if (cpu != boot_cpuid) { | 63 | if (cpu != boot_cpuid) { |
62 | kstat_cpu(cpu).irqs[RTC_IRQ]++; | 64 | kstat_cpu(cpu).irqs[RTC_IRQ]++; |
63 | } else { | 65 | } else { |
64 | handle_irq(RTC_IRQ, regs); | 66 | handle_irq(RTC_IRQ); |
65 | } | 67 | } |
66 | } | 68 | } |
67 | #else | 69 | #else |
68 | handle_irq(RTC_IRQ, regs); | 70 | handle_irq(RTC_IRQ); |
69 | #endif | 71 | #endif |
72 | set_irq_regs(old_regs); | ||
70 | return; | 73 | return; |
71 | case 2: | 74 | case 2: |
72 | alpha_mv.machine_check(vector, la_ptr, regs); | 75 | old_regs = set_irq_regs(regs); |
76 | alpha_mv.machine_check(vector, la_ptr); | ||
77 | set_irq_regs(old_regs); | ||
73 | return; | 78 | return; |
74 | case 3: | 79 | case 3: |
75 | alpha_mv.device_interrupt(vector, regs); | 80 | old_regs = set_irq_regs(regs); |
81 | alpha_mv.device_interrupt(vector); | ||
82 | set_irq_regs(old_regs); | ||
76 | return; | 83 | return; |
77 | case 4: | 84 | case 4: |
78 | perf_irq(la_ptr, regs); | 85 | perf_irq(la_ptr, regs); |
@@ -120,8 +127,7 @@ struct mcheck_info __mcheck_info; | |||
120 | 127 | ||
121 | void | 128 | void |
122 | process_mcheck_info(unsigned long vector, unsigned long la_ptr, | 129 | process_mcheck_info(unsigned long vector, unsigned long la_ptr, |
123 | struct pt_regs *regs, const char *machine, | 130 | const char *machine, int expected) |
124 | int expected) | ||
125 | { | 131 | { |
126 | struct el_common *mchk_header; | 132 | struct el_common *mchk_header; |
127 | const char *reason; | 133 | const char *reason; |
@@ -148,7 +154,7 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr, | |||
148 | mchk_header = (struct el_common *)la_ptr; | 154 | mchk_header = (struct el_common *)la_ptr; |
149 | 155 | ||
150 | printk(KERN_CRIT "%s machine check: vector=0x%lx pc=0x%lx code=0x%x\n", | 156 | printk(KERN_CRIT "%s machine check: vector=0x%lx pc=0x%lx code=0x%x\n", |
151 | machine, vector, regs->pc, mchk_header->code); | 157 | machine, vector, get_irq_regs()->pc, mchk_header->code); |
152 | 158 | ||
153 | switch (mchk_header->code) { | 159 | switch (mchk_header->code) { |
154 | /* Machine check reasons. Defined according to PALcode sources. */ | 160 | /* Machine check reasons. Defined according to PALcode sources. */ |
@@ -189,7 +195,7 @@ process_mcheck_info(unsigned long vector, unsigned long la_ptr, | |||
189 | printk(KERN_CRIT "machine check type: %s%s\n", | 195 | printk(KERN_CRIT "machine check type: %s%s\n", |
190 | reason, mchk_header->retry ? " (retryable)" : ""); | 196 | reason, mchk_header->retry ? " (retryable)" : ""); |
191 | 197 | ||
192 | dik_show_regs(regs, NULL); | 198 | dik_show_regs(get_irq_regs(), NULL); |
193 | 199 | ||
194 | #ifdef CONFIG_VERBOSE_MCHECK | 200 | #ifdef CONFIG_VERBOSE_MCHECK |
195 | if (alpha_verbose_mcheck > 1) { | 201 | if (alpha_verbose_mcheck > 1) { |
diff --git a/arch/alpha/kernel/irq_i8259.c b/arch/alpha/kernel/irq_i8259.c index ebbadbc0c36a..9405bee9894e 100644 --- a/arch/alpha/kernel/irq_i8259.c +++ b/arch/alpha/kernel/irq_i8259.c | |||
@@ -137,7 +137,7 @@ init_i8259a_irqs(void) | |||
137 | 137 | ||
138 | #if defined(IACK_SC) | 138 | #if defined(IACK_SC) |
139 | void | 139 | void |
140 | isa_device_interrupt(unsigned long vector, struct pt_regs *regs) | 140 | isa_device_interrupt(unsigned long vector) |
141 | { | 141 | { |
142 | /* | 142 | /* |
143 | * Generate a PCI interrupt acknowledge cycle. The PIC will | 143 | * Generate a PCI interrupt acknowledge cycle. The PIC will |
@@ -147,13 +147,13 @@ isa_device_interrupt(unsigned long vector, struct pt_regs *regs) | |||
147 | */ | 147 | */ |
148 | int j = *(vuip) IACK_SC; | 148 | int j = *(vuip) IACK_SC; |
149 | j &= 0xff; | 149 | j &= 0xff; |
150 | handle_irq(j, regs); | 150 | handle_irq(j); |
151 | } | 151 | } |
152 | #endif | 152 | #endif |
153 | 153 | ||
154 | #if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC) | 154 | #if defined(CONFIG_ALPHA_GENERIC) || !defined(IACK_SC) |
155 | void | 155 | void |
156 | isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs) | 156 | isa_no_iack_sc_device_interrupt(unsigned long vector) |
157 | { | 157 | { |
158 | unsigned long pic; | 158 | unsigned long pic; |
159 | 159 | ||
@@ -176,7 +176,7 @@ isa_no_iack_sc_device_interrupt(unsigned long vector, struct pt_regs *regs) | |||
176 | while (pic) { | 176 | while (pic) { |
177 | int j = ffz(~pic); | 177 | int j = ffz(~pic); |
178 | pic &= pic - 1; | 178 | pic &= pic - 1; |
179 | handle_irq(j, regs); | 179 | handle_irq(j); |
180 | } | 180 | } |
181 | } | 181 | } |
182 | #endif | 182 | #endif |
diff --git a/arch/alpha/kernel/irq_impl.h b/arch/alpha/kernel/irq_impl.h index f201d8ffc0d9..cc9a8a7aa279 100644 --- a/arch/alpha/kernel/irq_impl.h +++ b/arch/alpha/kernel/irq_impl.h | |||
@@ -15,10 +15,10 @@ | |||
15 | 15 | ||
16 | #define RTC_IRQ 8 | 16 | #define RTC_IRQ 8 |
17 | 17 | ||
18 | extern void isa_device_interrupt(unsigned long, struct pt_regs *); | 18 | extern void isa_device_interrupt(unsigned long); |
19 | extern void isa_no_iack_sc_device_interrupt(unsigned long, struct pt_regs *); | 19 | extern void isa_no_iack_sc_device_interrupt(unsigned long); |
20 | extern void srm_device_interrupt(unsigned long, struct pt_regs *); | 20 | extern void srm_device_interrupt(unsigned long); |
21 | extern void pyxis_device_interrupt(unsigned long, struct pt_regs *); | 21 | extern void pyxis_device_interrupt(unsigned long); |
22 | 22 | ||
23 | extern struct irqaction timer_irqaction; | 23 | extern struct irqaction timer_irqaction; |
24 | extern struct irqaction isa_cascade_irqaction; | 24 | extern struct irqaction isa_cascade_irqaction; |
@@ -39,4 +39,4 @@ extern void i8259a_end_irq(unsigned int); | |||
39 | extern struct hw_interrupt_type i8259a_irq_type; | 39 | extern struct hw_interrupt_type i8259a_irq_type; |
40 | extern void init_i8259a_irqs(void); | 40 | extern void init_i8259a_irqs(void); |
41 | 41 | ||
42 | extern void handle_irq(int irq, struct pt_regs * regs); | 42 | extern void handle_irq(int irq); |
diff --git a/arch/alpha/kernel/irq_pyxis.c b/arch/alpha/kernel/irq_pyxis.c index 3b581415bab0..d53edbccbfe5 100644 --- a/arch/alpha/kernel/irq_pyxis.c +++ b/arch/alpha/kernel/irq_pyxis.c | |||
@@ -81,7 +81,7 @@ static struct hw_interrupt_type pyxis_irq_type = { | |||
81 | }; | 81 | }; |
82 | 82 | ||
83 | void | 83 | void |
84 | pyxis_device_interrupt(unsigned long vector, struct pt_regs *regs) | 84 | pyxis_device_interrupt(unsigned long vector) |
85 | { | 85 | { |
86 | unsigned long pld; | 86 | unsigned long pld; |
87 | unsigned int i; | 87 | unsigned int i; |
@@ -98,9 +98,9 @@ pyxis_device_interrupt(unsigned long vector, struct pt_regs *regs) | |||
98 | i = ffz(~pld); | 98 | i = ffz(~pld); |
99 | pld &= pld - 1; /* clear least bit set */ | 99 | pld &= pld - 1; /* clear least bit set */ |
100 | if (i == 7) | 100 | if (i == 7) |
101 | isa_device_interrupt(vector, regs); | 101 | isa_device_interrupt(vector); |
102 | else | 102 | else |
103 | handle_irq(16+i, regs); | 103 | handle_irq(16+i); |
104 | } | 104 | } |
105 | } | 105 | } |
106 | 106 | ||
diff --git a/arch/alpha/kernel/irq_srm.c b/arch/alpha/kernel/irq_srm.c index 8e4d121f84cc..32212014fbe9 100644 --- a/arch/alpha/kernel/irq_srm.c +++ b/arch/alpha/kernel/irq_srm.c | |||
@@ -72,8 +72,8 @@ init_srm_irqs(long max, unsigned long ignore_mask) | |||
72 | } | 72 | } |
73 | 73 | ||
74 | void | 74 | void |
75 | srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 75 | srm_device_interrupt(unsigned long vector) |
76 | { | 76 | { |
77 | int irq = (vector - 0x800) >> 4; | 77 | int irq = (vector - 0x800) >> 4; |
78 | handle_irq(irq, regs); | 78 | handle_irq(irq); |
79 | } | 79 | } |
diff --git a/arch/alpha/kernel/proto.h b/arch/alpha/kernel/proto.h index 21f71287b6f5..95912ecc65e1 100644 --- a/arch/alpha/kernel/proto.h +++ b/arch/alpha/kernel/proto.h | |||
@@ -20,7 +20,7 @@ struct pci_controller; | |||
20 | extern struct pci_ops apecs_pci_ops; | 20 | extern struct pci_ops apecs_pci_ops; |
21 | extern void apecs_init_arch(void); | 21 | extern void apecs_init_arch(void); |
22 | extern void apecs_pci_clr_err(void); | 22 | extern void apecs_pci_clr_err(void); |
23 | extern void apecs_machine_check(u64, u64, struct pt_regs *); | 23 | extern void apecs_machine_check(u64, u64); |
24 | extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); | 24 | extern void apecs_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); |
25 | 25 | ||
26 | /* core_cia.c */ | 26 | /* core_cia.c */ |
@@ -29,27 +29,27 @@ extern void cia_init_pci(void); | |||
29 | extern void cia_init_arch(void); | 29 | extern void cia_init_arch(void); |
30 | extern void pyxis_init_arch(void); | 30 | extern void pyxis_init_arch(void); |
31 | extern void cia_kill_arch(int); | 31 | extern void cia_kill_arch(int); |
32 | extern void cia_machine_check(u64, u64, struct pt_regs *); | 32 | extern void cia_machine_check(u64, u64); |
33 | extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); | 33 | extern void cia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); |
34 | 34 | ||
35 | /* core_irongate.c */ | 35 | /* core_irongate.c */ |
36 | extern struct pci_ops irongate_pci_ops; | 36 | extern struct pci_ops irongate_pci_ops; |
37 | extern int irongate_pci_clr_err(void); | 37 | extern int irongate_pci_clr_err(void); |
38 | extern void irongate_init_arch(void); | 38 | extern void irongate_init_arch(void); |
39 | extern void irongate_machine_check(u64, u64, struct pt_regs *); | 39 | extern void irongate_machine_check(u64, u64); |
40 | #define irongate_pci_tbi ((void *)0) | 40 | #define irongate_pci_tbi ((void *)0) |
41 | 41 | ||
42 | /* core_lca.c */ | 42 | /* core_lca.c */ |
43 | extern struct pci_ops lca_pci_ops; | 43 | extern struct pci_ops lca_pci_ops; |
44 | extern void lca_init_arch(void); | 44 | extern void lca_init_arch(void); |
45 | extern void lca_machine_check(u64, u64, struct pt_regs *); | 45 | extern void lca_machine_check(u64, u64); |
46 | extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); | 46 | extern void lca_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); |
47 | 47 | ||
48 | /* core_marvel.c */ | 48 | /* core_marvel.c */ |
49 | extern struct pci_ops marvel_pci_ops; | 49 | extern struct pci_ops marvel_pci_ops; |
50 | extern void marvel_init_arch(void); | 50 | extern void marvel_init_arch(void); |
51 | extern void marvel_kill_arch(int); | 51 | extern void marvel_kill_arch(int); |
52 | extern void marvel_machine_check(u64, u64, struct pt_regs *); | 52 | extern void marvel_machine_check(u64, u64); |
53 | extern void marvel_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); | 53 | extern void marvel_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); |
54 | extern int marvel_pa_to_nid(unsigned long); | 54 | extern int marvel_pa_to_nid(unsigned long); |
55 | extern int marvel_cpuid_to_nid(int); | 55 | extern int marvel_cpuid_to_nid(int); |
@@ -64,7 +64,7 @@ void io7_clear_errors(struct io7 *io7); | |||
64 | extern struct pci_ops mcpcia_pci_ops; | 64 | extern struct pci_ops mcpcia_pci_ops; |
65 | extern void mcpcia_init_arch(void); | 65 | extern void mcpcia_init_arch(void); |
66 | extern void mcpcia_init_hoses(void); | 66 | extern void mcpcia_init_hoses(void); |
67 | extern void mcpcia_machine_check(u64, u64, struct pt_regs *); | 67 | extern void mcpcia_machine_check(u64, u64); |
68 | extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); | 68 | extern void mcpcia_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); |
69 | 69 | ||
70 | /* core_polaris.c */ | 70 | /* core_polaris.c */ |
@@ -72,21 +72,21 @@ extern struct pci_ops polaris_pci_ops; | |||
72 | extern int polaris_read_config_dword(struct pci_dev *, int, u32 *); | 72 | extern int polaris_read_config_dword(struct pci_dev *, int, u32 *); |
73 | extern int polaris_write_config_dword(struct pci_dev *, int, u32); | 73 | extern int polaris_write_config_dword(struct pci_dev *, int, u32); |
74 | extern void polaris_init_arch(void); | 74 | extern void polaris_init_arch(void); |
75 | extern void polaris_machine_check(u64, u64, struct pt_regs *); | 75 | extern void polaris_machine_check(u64, u64); |
76 | #define polaris_pci_tbi ((void *)0) | 76 | #define polaris_pci_tbi ((void *)0) |
77 | 77 | ||
78 | /* core_t2.c */ | 78 | /* core_t2.c */ |
79 | extern struct pci_ops t2_pci_ops; | 79 | extern struct pci_ops t2_pci_ops; |
80 | extern void t2_init_arch(void); | 80 | extern void t2_init_arch(void); |
81 | extern void t2_kill_arch(int); | 81 | extern void t2_kill_arch(int); |
82 | extern void t2_machine_check(u64, u64, struct pt_regs *); | 82 | extern void t2_machine_check(u64, u64); |
83 | extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); | 83 | extern void t2_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); |
84 | 84 | ||
85 | /* core_titan.c */ | 85 | /* core_titan.c */ |
86 | extern struct pci_ops titan_pci_ops; | 86 | extern struct pci_ops titan_pci_ops; |
87 | extern void titan_init_arch(void); | 87 | extern void titan_init_arch(void); |
88 | extern void titan_kill_arch(int); | 88 | extern void titan_kill_arch(int); |
89 | extern void titan_machine_check(u64, u64, struct pt_regs *); | 89 | extern void titan_machine_check(u64, u64); |
90 | extern void titan_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); | 90 | extern void titan_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); |
91 | extern struct _alpha_agp_info *titan_agp_info(void); | 91 | extern struct _alpha_agp_info *titan_agp_info(void); |
92 | 92 | ||
@@ -94,14 +94,14 @@ extern struct _alpha_agp_info *titan_agp_info(void); | |||
94 | extern struct pci_ops tsunami_pci_ops; | 94 | extern struct pci_ops tsunami_pci_ops; |
95 | extern void tsunami_init_arch(void); | 95 | extern void tsunami_init_arch(void); |
96 | extern void tsunami_kill_arch(int); | 96 | extern void tsunami_kill_arch(int); |
97 | extern void tsunami_machine_check(u64, u64, struct pt_regs *); | 97 | extern void tsunami_machine_check(u64, u64); |
98 | extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); | 98 | extern void tsunami_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); |
99 | 99 | ||
100 | /* core_wildfire.c */ | 100 | /* core_wildfire.c */ |
101 | extern struct pci_ops wildfire_pci_ops; | 101 | extern struct pci_ops wildfire_pci_ops; |
102 | extern void wildfire_init_arch(void); | 102 | extern void wildfire_init_arch(void); |
103 | extern void wildfire_kill_arch(int); | 103 | extern void wildfire_kill_arch(int); |
104 | extern void wildfire_machine_check(u64, u64, struct pt_regs *); | 104 | extern void wildfire_machine_check(u64, u64); |
105 | extern void wildfire_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); | 105 | extern void wildfire_pci_tbi(struct pci_controller *, dma_addr_t, dma_addr_t); |
106 | extern int wildfire_pa_to_nid(unsigned long); | 106 | extern int wildfire_pa_to_nid(unsigned long); |
107 | extern int wildfire_cpuid_to_nid(int); | 107 | extern int wildfire_cpuid_to_nid(int); |
@@ -133,7 +133,7 @@ extern void smp_percpu_timer_interrupt(struct pt_regs *); | |||
133 | /* extern void reset_for_srm(void); */ | 133 | /* extern void reset_for_srm(void); */ |
134 | 134 | ||
135 | /* time.c */ | 135 | /* time.c */ |
136 | extern irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs); | 136 | extern irqreturn_t timer_interrupt(int irq, void *dev); |
137 | extern void common_init_rtc(void); | 137 | extern void common_init_rtc(void); |
138 | extern unsigned long est_cycle_freq; | 138 | extern unsigned long est_cycle_freq; |
139 | 139 | ||
@@ -177,7 +177,7 @@ extern void dik_show_regs(struct pt_regs *regs, unsigned long *r9_15); | |||
177 | extern void die_if_kernel(char *, struct pt_regs *, long, unsigned long *); | 177 | extern void die_if_kernel(char *, struct pt_regs *, long, unsigned long *); |
178 | 178 | ||
179 | /* sys_titan.c */ | 179 | /* sys_titan.c */ |
180 | extern void titan_dispatch_irqs(u64, struct pt_regs *); | 180 | extern void titan_dispatch_irqs(u64); |
181 | 181 | ||
182 | /* ../mm/init.c */ | 182 | /* ../mm/init.c */ |
183 | extern void switch_to_system_map(void); | 183 | extern void switch_to_system_map(void); |
@@ -214,5 +214,4 @@ extern struct mcheck_info | |||
214 | #endif | 214 | #endif |
215 | 215 | ||
216 | extern void process_mcheck_info(unsigned long vector, unsigned long la_ptr, | 216 | extern void process_mcheck_info(unsigned long vector, unsigned long la_ptr, |
217 | struct pt_regs *regs, const char *machine, | 217 | const char *machine, int expected); |
218 | int expected); | ||
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c index 4dc273e537fd..596780e2c7da 100644 --- a/arch/alpha/kernel/smp.c +++ b/arch/alpha/kernel/smp.c | |||
@@ -515,12 +515,15 @@ smp_cpus_done(unsigned int max_cpus) | |||
515 | void | 515 | void |
516 | smp_percpu_timer_interrupt(struct pt_regs *regs) | 516 | smp_percpu_timer_interrupt(struct pt_regs *regs) |
517 | { | 517 | { |
518 | struct pt_regs *old_regs; | ||
518 | int cpu = smp_processor_id(); | 519 | int cpu = smp_processor_id(); |
519 | unsigned long user = user_mode(regs); | 520 | unsigned long user = user_mode(regs); |
520 | struct cpuinfo_alpha *data = &cpu_data[cpu]; | 521 | struct cpuinfo_alpha *data = &cpu_data[cpu]; |
521 | 522 | ||
523 | old_regs = set_irq_regs(regs); | ||
524 | |||
522 | /* Record kernel PC. */ | 525 | /* Record kernel PC. */ |
523 | profile_tick(CPU_PROFILING, regs); | 526 | profile_tick(CPU_PROFILING); |
524 | 527 | ||
525 | if (!--data->prof_counter) { | 528 | if (!--data->prof_counter) { |
526 | /* We need to make like a normal interrupt -- otherwise | 529 | /* We need to make like a normal interrupt -- otherwise |
@@ -534,6 +537,7 @@ smp_percpu_timer_interrupt(struct pt_regs *regs) | |||
534 | 537 | ||
535 | irq_exit(); | 538 | irq_exit(); |
536 | } | 539 | } |
540 | set_irq_regs(old_regs); | ||
537 | } | 541 | } |
538 | 542 | ||
539 | int __init | 543 | int __init |
diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c index d6926b7b1e99..49bedfbbd31b 100644 --- a/arch/alpha/kernel/sys_alcor.c +++ b/arch/alpha/kernel/sys_alcor.c | |||
@@ -100,7 +100,7 @@ static struct hw_interrupt_type alcor_irq_type = { | |||
100 | }; | 100 | }; |
101 | 101 | ||
102 | static void | 102 | static void |
103 | alcor_device_interrupt(unsigned long vector, struct pt_regs *regs) | 103 | alcor_device_interrupt(unsigned long vector) |
104 | { | 104 | { |
105 | unsigned long pld; | 105 | unsigned long pld; |
106 | unsigned int i; | 106 | unsigned int i; |
@@ -116,9 +116,9 @@ alcor_device_interrupt(unsigned long vector, struct pt_regs *regs) | |||
116 | i = ffz(~pld); | 116 | i = ffz(~pld); |
117 | pld &= pld - 1; /* clear least bit set */ | 117 | pld &= pld - 1; /* clear least bit set */ |
118 | if (i == 31) { | 118 | if (i == 31) { |
119 | isa_device_interrupt(vector, regs); | 119 | isa_device_interrupt(vector); |
120 | } else { | 120 | } else { |
121 | handle_irq(16 + i, regs); | 121 | handle_irq(16 + i); |
122 | } | 122 | } |
123 | } | 123 | } |
124 | } | 124 | } |
diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c index 25a215067da8..ace475c124f6 100644 --- a/arch/alpha/kernel/sys_cabriolet.c +++ b/arch/alpha/kernel/sys_cabriolet.c | |||
@@ -82,7 +82,7 @@ static struct hw_interrupt_type cabriolet_irq_type = { | |||
82 | }; | 82 | }; |
83 | 83 | ||
84 | static void | 84 | static void |
85 | cabriolet_device_interrupt(unsigned long v, struct pt_regs *r) | 85 | cabriolet_device_interrupt(unsigned long v) |
86 | { | 86 | { |
87 | unsigned long pld; | 87 | unsigned long pld; |
88 | unsigned int i; | 88 | unsigned int i; |
@@ -98,15 +98,15 @@ cabriolet_device_interrupt(unsigned long v, struct pt_regs *r) | |||
98 | i = ffz(~pld); | 98 | i = ffz(~pld); |
99 | pld &= pld - 1; /* clear least bit set */ | 99 | pld &= pld - 1; /* clear least bit set */ |
100 | if (i == 4) { | 100 | if (i == 4) { |
101 | isa_device_interrupt(v, r); | 101 | isa_device_interrupt(v); |
102 | } else { | 102 | } else { |
103 | handle_irq(16 + i, r); | 103 | handle_irq(16 + i); |
104 | } | 104 | } |
105 | } | 105 | } |
106 | } | 106 | } |
107 | 107 | ||
108 | static void __init | 108 | static void __init |
109 | common_init_irq(void (*srm_dev_int)(unsigned long v, struct pt_regs *r)) | 109 | common_init_irq(void (*srm_dev_int)(unsigned long v)) |
110 | { | 110 | { |
111 | init_i8259a_irqs(); | 111 | init_i8259a_irqs(); |
112 | 112 | ||
@@ -154,18 +154,18 @@ cabriolet_init_irq(void) | |||
154 | too invasive though. */ | 154 | too invasive though. */ |
155 | 155 | ||
156 | static void | 156 | static void |
157 | pc164_srm_device_interrupt(unsigned long v, struct pt_regs *r) | 157 | pc164_srm_device_interrupt(unsigned long v) |
158 | { | 158 | { |
159 | __min_ipl = getipl(); | 159 | __min_ipl = getipl(); |
160 | srm_device_interrupt(v, r); | 160 | srm_device_interrupt(v); |
161 | __min_ipl = 0; | 161 | __min_ipl = 0; |
162 | } | 162 | } |
163 | 163 | ||
164 | static void | 164 | static void |
165 | pc164_device_interrupt(unsigned long v, struct pt_regs *r) | 165 | pc164_device_interrupt(unsigned long v) |
166 | { | 166 | { |
167 | __min_ipl = getipl(); | 167 | __min_ipl = getipl(); |
168 | cabriolet_device_interrupt(v, r); | 168 | cabriolet_device_interrupt(v); |
169 | __min_ipl = 0; | 169 | __min_ipl = 0; |
170 | } | 170 | } |
171 | 171 | ||
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c index dd6103b867e7..85d2f933dd07 100644 --- a/arch/alpha/kernel/sys_dp264.c +++ b/arch/alpha/kernel/sys_dp264.c | |||
@@ -217,7 +217,7 @@ static struct hw_interrupt_type clipper_irq_type = { | |||
217 | }; | 217 | }; |
218 | 218 | ||
219 | static void | 219 | static void |
220 | dp264_device_interrupt(unsigned long vector, struct pt_regs * regs) | 220 | dp264_device_interrupt(unsigned long vector) |
221 | { | 221 | { |
222 | #if 1 | 222 | #if 1 |
223 | printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n"); | 223 | printk("dp264_device_interrupt: NOT IMPLEMENTED YET!! \n"); |
@@ -236,9 +236,9 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
236 | i = ffz(~pld); | 236 | i = ffz(~pld); |
237 | pld &= pld - 1; /* clear least bit set */ | 237 | pld &= pld - 1; /* clear least bit set */ |
238 | if (i == 55) | 238 | if (i == 55) |
239 | isa_device_interrupt(vector, regs); | 239 | isa_device_interrupt(vector); |
240 | else | 240 | else |
241 | handle_irq(16 + i, 16 + i, regs); | 241 | handle_irq(16 + i); |
242 | #if 0 | 242 | #if 0 |
243 | TSUNAMI_cchip->dir0.csr = 1UL << i; mb(); | 243 | TSUNAMI_cchip->dir0.csr = 1UL << i; mb(); |
244 | tmp = TSUNAMI_cchip->dir0.csr; | 244 | tmp = TSUNAMI_cchip->dir0.csr; |
@@ -248,7 +248,7 @@ dp264_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
248 | } | 248 | } |
249 | 249 | ||
250 | static void | 250 | static void |
251 | dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 251 | dp264_srm_device_interrupt(unsigned long vector) |
252 | { | 252 | { |
253 | int irq; | 253 | int irq; |
254 | 254 | ||
@@ -268,11 +268,11 @@ dp264_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
268 | if (irq >= 32) | 268 | if (irq >= 32) |
269 | irq -= 16; | 269 | irq -= 16; |
270 | 270 | ||
271 | handle_irq(irq, regs); | 271 | handle_irq(irq); |
272 | } | 272 | } |
273 | 273 | ||
274 | static void | 274 | static void |
275 | clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 275 | clipper_srm_device_interrupt(unsigned long vector) |
276 | { | 276 | { |
277 | int irq; | 277 | int irq; |
278 | 278 | ||
@@ -290,7 +290,7 @@ clipper_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
290 | * | 290 | * |
291 | * Eg IRQ 24 is DRIR bit 8, etc, etc | 291 | * Eg IRQ 24 is DRIR bit 8, etc, etc |
292 | */ | 292 | */ |
293 | handle_irq(irq, regs); | 293 | handle_irq(irq); |
294 | } | 294 | } |
295 | 295 | ||
296 | static void __init | 296 | static void __init |
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c index ed108b66ec09..9c5a306dc0ee 100644 --- a/arch/alpha/kernel/sys_eb64p.c +++ b/arch/alpha/kernel/sys_eb64p.c | |||
@@ -80,7 +80,7 @@ static struct hw_interrupt_type eb64p_irq_type = { | |||
80 | }; | 80 | }; |
81 | 81 | ||
82 | static void | 82 | static void |
83 | eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs) | 83 | eb64p_device_interrupt(unsigned long vector) |
84 | { | 84 | { |
85 | unsigned long pld; | 85 | unsigned long pld; |
86 | unsigned int i; | 86 | unsigned int i; |
@@ -97,9 +97,9 @@ eb64p_device_interrupt(unsigned long vector, struct pt_regs *regs) | |||
97 | pld &= pld - 1; /* clear least bit set */ | 97 | pld &= pld - 1; /* clear least bit set */ |
98 | 98 | ||
99 | if (i == 5) { | 99 | if (i == 5) { |
100 | isa_device_interrupt(vector, regs); | 100 | isa_device_interrupt(vector); |
101 | } else { | 101 | } else { |
102 | handle_irq(16 + i, regs); | 102 | handle_irq(16 + i); |
103 | } | 103 | } |
104 | } | 104 | } |
105 | } | 105 | } |
diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c index 64a785baf53a..7ef3b6fb3700 100644 --- a/arch/alpha/kernel/sys_eiger.c +++ b/arch/alpha/kernel/sys_eiger.c | |||
@@ -91,7 +91,7 @@ static struct hw_interrupt_type eiger_irq_type = { | |||
91 | }; | 91 | }; |
92 | 92 | ||
93 | static void | 93 | static void |
94 | eiger_device_interrupt(unsigned long vector, struct pt_regs * regs) | 94 | eiger_device_interrupt(unsigned long vector) |
95 | { | 95 | { |
96 | unsigned intstatus; | 96 | unsigned intstatus; |
97 | 97 | ||
@@ -118,20 +118,20 @@ eiger_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
118 | * despatch an interrupt if it's set. | 118 | * despatch an interrupt if it's set. |
119 | */ | 119 | */ |
120 | 120 | ||
121 | if (intstatus & 8) handle_irq(16+3, regs); | 121 | if (intstatus & 8) handle_irq(16+3); |
122 | if (intstatus & 4) handle_irq(16+2, regs); | 122 | if (intstatus & 4) handle_irq(16+2); |
123 | if (intstatus & 2) handle_irq(16+1, regs); | 123 | if (intstatus & 2) handle_irq(16+1); |
124 | if (intstatus & 1) handle_irq(16+0, regs); | 124 | if (intstatus & 1) handle_irq(16+0); |
125 | } else { | 125 | } else { |
126 | isa_device_interrupt(vector, regs); | 126 | isa_device_interrupt(vector); |
127 | } | 127 | } |
128 | } | 128 | } |
129 | 129 | ||
130 | static void | 130 | static void |
131 | eiger_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 131 | eiger_srm_device_interrupt(unsigned long vector) |
132 | { | 132 | { |
133 | int irq = (vector - 0x800) >> 4; | 133 | int irq = (vector - 0x800) >> 4; |
134 | handle_irq(irq, regs); | 134 | handle_irq(irq); |
135 | } | 135 | } |
136 | 136 | ||
137 | static void __init | 137 | static void __init |
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c index 4ac2b328b8de..2c3de97de46c 100644 --- a/arch/alpha/kernel/sys_jensen.c +++ b/arch/alpha/kernel/sys_jensen.c | |||
@@ -129,7 +129,7 @@ static struct hw_interrupt_type jensen_local_irq_type = { | |||
129 | }; | 129 | }; |
130 | 130 | ||
131 | static void | 131 | static void |
132 | jensen_device_interrupt(unsigned long vector, struct pt_regs * regs) | 132 | jensen_device_interrupt(unsigned long vector) |
133 | { | 133 | { |
134 | int irq; | 134 | int irq; |
135 | 135 | ||
@@ -189,7 +189,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
189 | if (cc - last_msg > ((JENSEN_CYCLES_PER_SEC) * 3) || | 189 | if (cc - last_msg > ((JENSEN_CYCLES_PER_SEC) * 3) || |
190 | irq != last_irq) { | 190 | irq != last_irq) { |
191 | printk(KERN_CRIT " irq %d count %d cc %u @ %lx\n", | 191 | printk(KERN_CRIT " irq %d count %d cc %u @ %lx\n", |
192 | irq, count, cc-last_cc, regs->pc); | 192 | irq, count, cc-last_cc, get_irq_regs()->pc); |
193 | count = 0; | 193 | count = 0; |
194 | last_msg = cc; | 194 | last_msg = cc; |
195 | last_irq = irq; | 195 | last_irq = irq; |
@@ -198,7 +198,7 @@ jensen_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
198 | } | 198 | } |
199 | #endif | 199 | #endif |
200 | 200 | ||
201 | handle_irq(irq, regs); | 201 | handle_irq(irq); |
202 | } | 202 | } |
203 | 203 | ||
204 | static void __init | 204 | static void __init |
@@ -244,7 +244,7 @@ jensen_init_arch(void) | |||
244 | } | 244 | } |
245 | 245 | ||
246 | static void | 246 | static void |
247 | jensen_machine_check (u64 vector, u64 la, struct pt_regs *regs) | 247 | jensen_machine_check (u64 vector, u64 la) |
248 | { | 248 | { |
249 | printk(KERN_CRIT "Machine check\n"); | 249 | printk(KERN_CRIT "Machine check\n"); |
250 | } | 250 | } |
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c index 36d215954376..e349f03b830e 100644 --- a/arch/alpha/kernel/sys_marvel.c +++ b/arch/alpha/kernel/sys_marvel.c | |||
@@ -38,7 +38,7 @@ | |||
38 | * Interrupt handling. | 38 | * Interrupt handling. |
39 | */ | 39 | */ |
40 | static void | 40 | static void |
41 | io7_device_interrupt(unsigned long vector, struct pt_regs * regs) | 41 | io7_device_interrupt(unsigned long vector) |
42 | { | 42 | { |
43 | unsigned int pid; | 43 | unsigned int pid; |
44 | unsigned int irq; | 44 | unsigned int irq; |
@@ -64,7 +64,7 @@ io7_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
64 | irq &= MARVEL_IRQ_VEC_IRQ_MASK; /* not too many bits */ | 64 | irq &= MARVEL_IRQ_VEC_IRQ_MASK; /* not too many bits */ |
65 | irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT; /* merge the pid */ | 65 | irq |= pid << MARVEL_IRQ_VEC_PE_SHIFT; /* merge the pid */ |
66 | 66 | ||
67 | handle_irq(irq, regs); | 67 | handle_irq(irq); |
68 | } | 68 | } |
69 | 69 | ||
70 | static volatile unsigned long * | 70 | static volatile unsigned long * |
diff --git a/arch/alpha/kernel/sys_miata.c b/arch/alpha/kernel/sys_miata.c index 61ac56f8eeea..b8b817feb1ee 100644 --- a/arch/alpha/kernel/sys_miata.c +++ b/arch/alpha/kernel/sys_miata.c | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | 34 | ||
35 | static void | 35 | static void |
36 | miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 36 | miata_srm_device_interrupt(unsigned long vector) |
37 | { | 37 | { |
38 | int irq; | 38 | int irq; |
39 | 39 | ||
@@ -56,7 +56,7 @@ miata_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
56 | if (irq >= 16) | 56 | if (irq >= 16) |
57 | irq = irq + 8; | 57 | irq = irq + 8; |
58 | 58 | ||
59 | handle_irq(irq, regs); | 59 | handle_irq(irq); |
60 | } | 60 | } |
61 | 61 | ||
62 | static void __init | 62 | static void __init |
diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c index cc4c58111366..8d3e9429c5ee 100644 --- a/arch/alpha/kernel/sys_mikasa.c +++ b/arch/alpha/kernel/sys_mikasa.c | |||
@@ -79,7 +79,7 @@ static struct hw_interrupt_type mikasa_irq_type = { | |||
79 | }; | 79 | }; |
80 | 80 | ||
81 | static void | 81 | static void |
82 | mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs) | 82 | mikasa_device_interrupt(unsigned long vector) |
83 | { | 83 | { |
84 | unsigned long pld; | 84 | unsigned long pld; |
85 | unsigned int i; | 85 | unsigned int i; |
@@ -97,9 +97,9 @@ mikasa_device_interrupt(unsigned long vector, struct pt_regs *regs) | |||
97 | i = ffz(~pld); | 97 | i = ffz(~pld); |
98 | pld &= pld - 1; /* clear least bit set */ | 98 | pld &= pld - 1; /* clear least bit set */ |
99 | if (i < 16) { | 99 | if (i < 16) { |
100 | isa_device_interrupt(vector, regs); | 100 | isa_device_interrupt(vector); |
101 | } else { | 101 | } else { |
102 | handle_irq(i, regs); | 102 | handle_irq(i); |
103 | } | 103 | } |
104 | } | 104 | } |
105 | } | 105 | } |
@@ -182,8 +182,7 @@ mikasa_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
182 | 182 | ||
183 | #if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO) | 183 | #if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO) |
184 | static void | 184 | static void |
185 | mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr, | 185 | mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr) |
186 | struct pt_regs * regs) | ||
187 | { | 186 | { |
188 | #define MCHK_NO_DEVSEL 0x205U | 187 | #define MCHK_NO_DEVSEL 0x205U |
189 | #define MCHK_NO_TABT 0x204U | 188 | #define MCHK_NO_TABT 0x204U |
@@ -202,7 +201,7 @@ mikasa_apecs_machine_check(unsigned long vector, unsigned long la_ptr, | |||
202 | mb(); | 201 | mb(); |
203 | 202 | ||
204 | code = mchk_header->code; | 203 | code = mchk_header->code; |
205 | process_mcheck_info(vector, la_ptr, regs, "MIKASA APECS", | 204 | process_mcheck_info(vector, la_ptr, "MIKASA APECS", |
206 | (mcheck_expected(0) | 205 | (mcheck_expected(0) |
207 | && (code == MCHK_NO_DEVSEL | 206 | && (code == MCHK_NO_DEVSEL |
208 | || code == MCHK_NO_TABT))); | 207 | || code == MCHK_NO_TABT))); |
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c index c0d696efec5b..93744bab73fb 100644 --- a/arch/alpha/kernel/sys_nautilus.c +++ b/arch/alpha/kernel/sys_nautilus.c | |||
@@ -124,8 +124,7 @@ naut_sys_machine_check(unsigned long vector, unsigned long la_ptr, | |||
124 | in the system. They are analysed separately but all starts here. */ | 124 | in the system. They are analysed separately but all starts here. */ |
125 | 125 | ||
126 | void | 126 | void |
127 | nautilus_machine_check(unsigned long vector, unsigned long la_ptr, | 127 | nautilus_machine_check(unsigned long vector, unsigned long la_ptr) |
128 | struct pt_regs *regs) | ||
129 | { | 128 | { |
130 | char *mchk_class; | 129 | char *mchk_class; |
131 | 130 | ||
@@ -165,7 +164,7 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr, | |||
165 | else if (vector == SCB_Q_SYSMCHK) | 164 | else if (vector == SCB_Q_SYSMCHK) |
166 | mchk_class = "Fatal"; | 165 | mchk_class = "Fatal"; |
167 | else { | 166 | else { |
168 | ev6_machine_check(vector, la_ptr, regs); | 167 | ev6_machine_check(vector, la_ptr); |
169 | return; | 168 | return; |
170 | } | 169 | } |
171 | 170 | ||
@@ -173,7 +172,7 @@ nautilus_machine_check(unsigned long vector, unsigned long la_ptr, | |||
173 | "[%s System Machine Check (NMI)]\n", | 172 | "[%s System Machine Check (NMI)]\n", |
174 | vector, mchk_class); | 173 | vector, mchk_class); |
175 | 174 | ||
176 | naut_sys_machine_check(vector, la_ptr, regs); | 175 | naut_sys_machine_check(vector, la_ptr, get_irq_regs()); |
177 | 176 | ||
178 | /* Tell the PALcode to clear the machine check */ | 177 | /* Tell the PALcode to clear the machine check */ |
179 | draina(); | 178 | draina(); |
diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c index 2d3cff7e8c5f..de6ba3432e8a 100644 --- a/arch/alpha/kernel/sys_noritake.c +++ b/arch/alpha/kernel/sys_noritake.c | |||
@@ -77,7 +77,7 @@ static struct hw_interrupt_type noritake_irq_type = { | |||
77 | }; | 77 | }; |
78 | 78 | ||
79 | static void | 79 | static void |
80 | noritake_device_interrupt(unsigned long vector, struct pt_regs *regs) | 80 | noritake_device_interrupt(unsigned long vector) |
81 | { | 81 | { |
82 | unsigned long pld; | 82 | unsigned long pld; |
83 | unsigned int i; | 83 | unsigned int i; |
@@ -96,15 +96,15 @@ noritake_device_interrupt(unsigned long vector, struct pt_regs *regs) | |||
96 | i = ffz(~pld); | 96 | i = ffz(~pld); |
97 | pld &= pld - 1; /* clear least bit set */ | 97 | pld &= pld - 1; /* clear least bit set */ |
98 | if (i < 16) { | 98 | if (i < 16) { |
99 | isa_device_interrupt(vector, regs); | 99 | isa_device_interrupt(vector); |
100 | } else { | 100 | } else { |
101 | handle_irq(i, regs); | 101 | handle_irq(i); |
102 | } | 102 | } |
103 | } | 103 | } |
104 | } | 104 | } |
105 | 105 | ||
106 | static void | 106 | static void |
107 | noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 107 | noritake_srm_device_interrupt(unsigned long vector) |
108 | { | 108 | { |
109 | int irq; | 109 | int irq; |
110 | 110 | ||
@@ -122,7 +122,7 @@ noritake_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
122 | if (irq >= 16) | 122 | if (irq >= 16) |
123 | irq = irq + 1; | 123 | irq = irq + 1; |
124 | 124 | ||
125 | handle_irq(irq, regs); | 125 | handle_irq(irq); |
126 | } | 126 | } |
127 | 127 | ||
128 | static void __init | 128 | static void __init |
@@ -264,8 +264,7 @@ noritake_swizzle(struct pci_dev *dev, u8 *pinp) | |||
264 | 264 | ||
265 | #if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO) | 265 | #if defined(CONFIG_ALPHA_GENERIC) || !defined(CONFIG_ALPHA_PRIMO) |
266 | static void | 266 | static void |
267 | noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr, | 267 | noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr) |
268 | struct pt_regs * regs) | ||
269 | { | 268 | { |
270 | #define MCHK_NO_DEVSEL 0x205U | 269 | #define MCHK_NO_DEVSEL 0x205U |
271 | #define MCHK_NO_TABT 0x204U | 270 | #define MCHK_NO_TABT 0x204U |
@@ -284,7 +283,7 @@ noritake_apecs_machine_check(unsigned long vector, unsigned long la_ptr, | |||
284 | mb(); | 283 | mb(); |
285 | 284 | ||
286 | code = mchk_header->code; | 285 | code = mchk_header->code; |
287 | process_mcheck_info(vector, la_ptr, regs, "NORITAKE APECS", | 286 | process_mcheck_info(vector, la_ptr, "NORITAKE APECS", |
288 | (mcheck_expected(0) | 287 | (mcheck_expected(0) |
289 | && (code == MCHK_NO_DEVSEL | 288 | && (code == MCHK_NO_DEVSEL |
290 | || code == MCHK_NO_TABT))); | 289 | || code == MCHK_NO_TABT))); |
diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c index 949607e3d6fb..581d08c70b92 100644 --- a/arch/alpha/kernel/sys_rawhide.c +++ b/arch/alpha/kernel/sys_rawhide.c | |||
@@ -134,7 +134,7 @@ static struct hw_interrupt_type rawhide_irq_type = { | |||
134 | }; | 134 | }; |
135 | 135 | ||
136 | static void | 136 | static void |
137 | rawhide_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 137 | rawhide_srm_device_interrupt(unsigned long vector) |
138 | { | 138 | { |
139 | int irq; | 139 | int irq; |
140 | 140 | ||
@@ -158,7 +158,7 @@ rawhide_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
158 | /* Adjust by which hose it is from. */ | 158 | /* Adjust by which hose it is from. */ |
159 | irq -= ((irq + 16) >> 2) & 0x38; | 159 | irq -= ((irq + 16) >> 2) & 0x38; |
160 | 160 | ||
161 | handle_irq(irq, regs); | 161 | handle_irq(irq); |
162 | } | 162 | } |
163 | 163 | ||
164 | static void __init | 164 | static void __init |
diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c index 6ae506052635..ce1faa6f1df1 100644 --- a/arch/alpha/kernel/sys_rx164.c +++ b/arch/alpha/kernel/sys_rx164.c | |||
@@ -83,7 +83,7 @@ static struct hw_interrupt_type rx164_irq_type = { | |||
83 | }; | 83 | }; |
84 | 84 | ||
85 | static void | 85 | static void |
86 | rx164_device_interrupt(unsigned long vector, struct pt_regs *regs) | 86 | rx164_device_interrupt(unsigned long vector) |
87 | { | 87 | { |
88 | unsigned long pld; | 88 | unsigned long pld; |
89 | volatile unsigned int *dirr; | 89 | volatile unsigned int *dirr; |
@@ -102,9 +102,9 @@ rx164_device_interrupt(unsigned long vector, struct pt_regs *regs) | |||
102 | i = ffz(~pld); | 102 | i = ffz(~pld); |
103 | pld &= pld - 1; /* clear least bit set */ | 103 | pld &= pld - 1; /* clear least bit set */ |
104 | if (i == 20) { | 104 | if (i == 20) { |
105 | isa_no_iack_sc_device_interrupt(vector, regs); | 105 | isa_no_iack_sc_device_interrupt(vector); |
106 | } else { | 106 | } else { |
107 | handle_irq(16+i, regs); | 107 | handle_irq(16+i); |
108 | } | 108 | } |
109 | } | 109 | } |
110 | } | 110 | } |
diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c index a7a14647b50e..906019cfa681 100644 --- a/arch/alpha/kernel/sys_sable.c +++ b/arch/alpha/kernel/sys_sable.c | |||
@@ -512,7 +512,7 @@ static struct hw_interrupt_type sable_lynx_irq_type = { | |||
512 | }; | 512 | }; |
513 | 513 | ||
514 | static void | 514 | static void |
515 | sable_lynx_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 515 | sable_lynx_srm_device_interrupt(unsigned long vector) |
516 | { | 516 | { |
517 | /* Note that the vector reported by the SRM PALcode corresponds | 517 | /* Note that the vector reported by the SRM PALcode corresponds |
518 | to the interrupt mask bits, but we have to manage via the | 518 | to the interrupt mask bits, but we have to manage via the |
@@ -526,7 +526,7 @@ sable_lynx_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
526 | printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n", | 526 | printk("%s: vector 0x%lx bit 0x%x irq 0x%x\n", |
527 | __FUNCTION__, vector, bit, irq); | 527 | __FUNCTION__, vector, bit, irq); |
528 | #endif | 528 | #endif |
529 | handle_irq(irq, regs); | 529 | handle_irq(irq); |
530 | } | 530 | } |
531 | 531 | ||
532 | static void __init | 532 | static void __init |
diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c index 2c75cd1fd81a..9bd9a31450c6 100644 --- a/arch/alpha/kernel/sys_takara.c +++ b/arch/alpha/kernel/sys_takara.c | |||
@@ -85,7 +85,7 @@ static struct hw_interrupt_type takara_irq_type = { | |||
85 | }; | 85 | }; |
86 | 86 | ||
87 | static void | 87 | static void |
88 | takara_device_interrupt(unsigned long vector, struct pt_regs *regs) | 88 | takara_device_interrupt(unsigned long vector) |
89 | { | 89 | { |
90 | unsigned intstatus; | 90 | unsigned intstatus; |
91 | 91 | ||
@@ -112,20 +112,20 @@ takara_device_interrupt(unsigned long vector, struct pt_regs *regs) | |||
112 | * despatch an interrupt if it's set. | 112 | * despatch an interrupt if it's set. |
113 | */ | 113 | */ |
114 | 114 | ||
115 | if (intstatus & 8) handle_irq(16+3, regs); | 115 | if (intstatus & 8) handle_irq(16+3); |
116 | if (intstatus & 4) handle_irq(16+2, regs); | 116 | if (intstatus & 4) handle_irq(16+2); |
117 | if (intstatus & 2) handle_irq(16+1, regs); | 117 | if (intstatus & 2) handle_irq(16+1); |
118 | if (intstatus & 1) handle_irq(16+0, regs); | 118 | if (intstatus & 1) handle_irq(16+0); |
119 | } else { | 119 | } else { |
120 | isa_device_interrupt (vector, regs); | 120 | isa_device_interrupt (vector); |
121 | } | 121 | } |
122 | } | 122 | } |
123 | 123 | ||
124 | static void | 124 | static void |
125 | takara_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 125 | takara_srm_device_interrupt(unsigned long vector) |
126 | { | 126 | { |
127 | int irq = (vector - 0x800) >> 4; | 127 | int irq = (vector - 0x800) >> 4; |
128 | handle_irq(irq, regs); | 128 | handle_irq(irq); |
129 | } | 129 | } |
130 | 130 | ||
131 | static void __init | 131 | static void __init |
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c index 302aab38d95f..29ab7db81c30 100644 --- a/arch/alpha/kernel/sys_titan.c +++ b/arch/alpha/kernel/sys_titan.c | |||
@@ -167,18 +167,18 @@ titan_set_irq_affinity(unsigned int irq, cpumask_t affinity) | |||
167 | } | 167 | } |
168 | 168 | ||
169 | static void | 169 | static void |
170 | titan_device_interrupt(unsigned long vector, struct pt_regs * regs) | 170 | titan_device_interrupt(unsigned long vector) |
171 | { | 171 | { |
172 | printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n"); | 172 | printk("titan_device_interrupt: NOT IMPLEMENTED YET!! \n"); |
173 | } | 173 | } |
174 | 174 | ||
175 | static void | 175 | static void |
176 | titan_srm_device_interrupt(unsigned long vector, struct pt_regs * regs) | 176 | titan_srm_device_interrupt(unsigned long vector) |
177 | { | 177 | { |
178 | int irq; | 178 | int irq; |
179 | 179 | ||
180 | irq = (vector - 0x800) >> 4; | 180 | irq = (vector - 0x800) >> 4; |
181 | handle_irq(irq, regs); | 181 | handle_irq(irq); |
182 | } | 182 | } |
183 | 183 | ||
184 | 184 | ||
@@ -204,7 +204,7 @@ static struct hw_interrupt_type titan_irq_type = { | |||
204 | }; | 204 | }; |
205 | 205 | ||
206 | static irqreturn_t | 206 | static irqreturn_t |
207 | titan_intr_nop(int irq, void *dev_id, struct pt_regs *regs) | 207 | titan_intr_nop(int irq, void *dev_id) |
208 | { | 208 | { |
209 | /* | 209 | /* |
210 | * This is a NOP interrupt handler for the purposes of | 210 | * This is a NOP interrupt handler for the purposes of |
@@ -243,7 +243,7 @@ titan_legacy_init_irq(void) | |||
243 | } | 243 | } |
244 | 244 | ||
245 | void | 245 | void |
246 | titan_dispatch_irqs(u64 mask, struct pt_regs *regs) | 246 | titan_dispatch_irqs(u64 mask) |
247 | { | 247 | { |
248 | unsigned long vector; | 248 | unsigned long vector; |
249 | 249 | ||
@@ -263,7 +263,7 @@ titan_dispatch_irqs(u64 mask, struct pt_regs *regs) | |||
263 | vector = 0x900 + (vector << 4); /* convert to SRM vector */ | 263 | vector = 0x900 + (vector << 4); /* convert to SRM vector */ |
264 | 264 | ||
265 | /* dispatch it */ | 265 | /* dispatch it */ |
266 | alpha_mv.device_interrupt(vector, regs); | 266 | alpha_mv.device_interrupt(vector); |
267 | } | 267 | } |
268 | } | 268 | } |
269 | 269 | ||
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c index 22c5798fe083..42c3eede4d09 100644 --- a/arch/alpha/kernel/sys_wildfire.c +++ b/arch/alpha/kernel/sys_wildfire.c | |||
@@ -234,7 +234,7 @@ wildfire_init_irq(void) | |||
234 | } | 234 | } |
235 | 235 | ||
236 | static void | 236 | static void |
237 | wildfire_device_interrupt(unsigned long vector, struct pt_regs * regs) | 237 | wildfire_device_interrupt(unsigned long vector) |
238 | { | 238 | { |
239 | int irq; | 239 | int irq; |
240 | 240 | ||
@@ -246,7 +246,7 @@ wildfire_device_interrupt(unsigned long vector, struct pt_regs * regs) | |||
246 | * bits 5-0: irq in PCA | 246 | * bits 5-0: irq in PCA |
247 | */ | 247 | */ |
248 | 248 | ||
249 | handle_irq(irq, regs); | 249 | handle_irq(irq); |
250 | return; | 250 | return; |
251 | } | 251 | } |
252 | 252 | ||
diff --git a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c index 581ddcc22fc5..cf0666523989 100644 --- a/arch/alpha/kernel/time.c +++ b/arch/alpha/kernel/time.c | |||
@@ -104,7 +104,7 @@ unsigned long long sched_clock(void) | |||
104 | * timer_interrupt() needs to keep up the real-time clock, | 104 | * timer_interrupt() needs to keep up the real-time clock, |
105 | * as well as call the "do_timer()" routine every clocktick | 105 | * as well as call the "do_timer()" routine every clocktick |
106 | */ | 106 | */ |
107 | irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs) | 107 | irqreturn_t timer_interrupt(int irq, void *dev) |
108 | { | 108 | { |
109 | unsigned long delta; | 109 | unsigned long delta; |
110 | __u32 now; | 110 | __u32 now; |
@@ -112,7 +112,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs) | |||
112 | 112 | ||
113 | #ifndef CONFIG_SMP | 113 | #ifndef CONFIG_SMP |
114 | /* Not SMP, do kernel PC profiling here. */ | 114 | /* Not SMP, do kernel PC profiling here. */ |
115 | profile_tick(CPU_PROFILING, regs); | 115 | profile_tick(CPU_PROFILING); |
116 | #endif | 116 | #endif |
117 | 117 | ||
118 | write_seqlock(&xtime_lock); | 118 | write_seqlock(&xtime_lock); |
@@ -132,7 +132,7 @@ irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs) | |||
132 | while (nticks > 0) { | 132 | while (nticks > 0) { |
133 | do_timer(1); | 133 | do_timer(1); |
134 | #ifndef CONFIG_SMP | 134 | #ifndef CONFIG_SMP |
135 | update_process_times(user_mode(regs)); | 135 | update_process_times(user_mode(get_irq_regs())); |
136 | #endif | 136 | #endif |
137 | nticks--; | 137 | nticks--; |
138 | } | 138 | } |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index e999b11de2c6..2c4ff1cbe334 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -111,6 +111,7 @@ static struct irq_desc bad_irq_desc = { | |||
111 | */ | 111 | */ |
112 | asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) | 112 | asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) |
113 | { | 113 | { |
114 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
114 | struct irqdesc *desc = irq_desc + irq; | 115 | struct irqdesc *desc = irq_desc + irq; |
115 | 116 | ||
116 | /* | 117 | /* |
@@ -122,13 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
122 | 123 | ||
123 | irq_enter(); | 124 | irq_enter(); |
124 | 125 | ||
125 | set_irq_regs(regs); | ||
126 | desc_handle_irq(irq, desc); | 126 | desc_handle_irq(irq, desc); |
127 | 127 | ||
128 | /* AT91 specific workaround */ | 128 | /* AT91 specific workaround */ |
129 | irq_finish(irq); | 129 | irq_finish(irq); |
130 | 130 | ||
131 | irq_exit(); | 131 | irq_exit(); |
132 | set_irq_regs(old_regs); | ||
132 | } | 133 | } |
133 | 134 | ||
134 | void set_irq_flags(unsigned int irq, unsigned int iflags) | 135 | void set_irq_flags(unsigned int irq, unsigned int iflags) |
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 591fc3187c7f..465440592791 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -361,14 +361,14 @@ __ioremap(unsigned long phys_addr, size_t size, unsigned long flags) | |||
361 | } | 361 | } |
362 | EXPORT_SYMBOL(__ioremap); | 362 | EXPORT_SYMBOL(__ioremap); |
363 | 363 | ||
364 | void __iounmap(void __iomem *addr) | 364 | void __iounmap(volatile void __iomem *addr) |
365 | { | 365 | { |
366 | #ifndef CONFIG_SMP | 366 | #ifndef CONFIG_SMP |
367 | struct vm_struct **p, *tmp; | 367 | struct vm_struct **p, *tmp; |
368 | #endif | 368 | #endif |
369 | unsigned int section_mapping = 0; | 369 | unsigned int section_mapping = 0; |
370 | 370 | ||
371 | addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr); | 371 | addr = (volatile void __iomem *)(PAGE_MASK & (unsigned long)addr); |
372 | 372 | ||
373 | #ifndef CONFIG_SMP | 373 | #ifndef CONFIG_SMP |
374 | /* | 374 | /* |
@@ -395,6 +395,6 @@ void __iounmap(void __iomem *addr) | |||
395 | #endif | 395 | #endif |
396 | 396 | ||
397 | if (!section_mapping) | 397 | if (!section_mapping) |
398 | vunmap(addr); | 398 | vunmap((void __force *)addr); |
399 | } | 399 | } |
400 | EXPORT_SYMBOL(__iounmap); | 400 | EXPORT_SYMBOL(__iounmap); |
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c index b7287fb499f3..cd082c36ca03 100644 --- a/arch/i386/kernel/io_apic.c +++ b/arch/i386/kernel/io_apic.c | |||
@@ -1184,8 +1184,8 @@ static int __assign_irq_vector(int irq) | |||
1184 | 1184 | ||
1185 | BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); | 1185 | BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); |
1186 | 1186 | ||
1187 | if (IO_APIC_VECTOR(irq) > 0) | 1187 | if (irq_vector[irq] > 0) |
1188 | return IO_APIC_VECTOR(irq); | 1188 | return irq_vector[irq]; |
1189 | 1189 | ||
1190 | current_vector += 8; | 1190 | current_vector += 8; |
1191 | if (current_vector == SYSCALL_VECTOR) | 1191 | if (current_vector == SYSCALL_VECTOR) |
@@ -1199,7 +1199,7 @@ static int __assign_irq_vector(int irq) | |||
1199 | } | 1199 | } |
1200 | 1200 | ||
1201 | vector = current_vector; | 1201 | vector = current_vector; |
1202 | IO_APIC_VECTOR(irq) = vector; | 1202 | irq_vector[irq] = vector; |
1203 | 1203 | ||
1204 | return vector; | 1204 | return vector; |
1205 | } | 1205 | } |
@@ -1967,7 +1967,7 @@ static void ack_ioapic_quirk_irq(unsigned int irq) | |||
1967 | * operation to prevent an edge-triggered interrupt escaping meanwhile. | 1967 | * operation to prevent an edge-triggered interrupt escaping meanwhile. |
1968 | * The idea is from Manfred Spraul. --macro | 1968 | * The idea is from Manfred Spraul. --macro |
1969 | */ | 1969 | */ |
1970 | i = IO_APIC_VECTOR(irq); | 1970 | i = irq_vector[irq]; |
1971 | 1971 | ||
1972 | v = apic_read(APIC_TMR + ((i & ~0x1f) >> 1)); | 1972 | v = apic_read(APIC_TMR + ((i & ~0x1f) >> 1)); |
1973 | 1973 | ||
@@ -1984,7 +1984,7 @@ static void ack_ioapic_quirk_irq(unsigned int irq) | |||
1984 | 1984 | ||
1985 | static int ioapic_retrigger_irq(unsigned int irq) | 1985 | static int ioapic_retrigger_irq(unsigned int irq) |
1986 | { | 1986 | { |
1987 | send_IPI_self(IO_APIC_VECTOR(irq)); | 1987 | send_IPI_self(irq_vector[irq]); |
1988 | 1988 | ||
1989 | return 1; | 1989 | return 1; |
1990 | } | 1990 | } |
@@ -2020,7 +2020,7 @@ static inline void init_IO_APIC_traps(void) | |||
2020 | */ | 2020 | */ |
2021 | for (irq = 0; irq < NR_IRQS ; irq++) { | 2021 | for (irq = 0; irq < NR_IRQS ; irq++) { |
2022 | int tmp = irq; | 2022 | int tmp = irq; |
2023 | if (IO_APIC_IRQ(tmp) && !IO_APIC_VECTOR(tmp)) { | 2023 | if (IO_APIC_IRQ(tmp) && !irq_vector[tmp]) { |
2024 | /* | 2024 | /* |
2025 | * Hmm.. We don't have an entry for this, | 2025 | * Hmm.. We don't have an entry for this, |
2026 | * so default to an old-fashioned 8259 | 2026 | * so default to an old-fashioned 8259 |
diff --git a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c index 47f02af74be3..dbc4aae91959 100644 --- a/arch/i386/pci/irq.c +++ b/arch/i386/pci/irq.c | |||
@@ -1141,10 +1141,6 @@ static int pirq_enable_irq(struct pci_dev *dev) | |||
1141 | } | 1141 | } |
1142 | dev = temp_dev; | 1142 | dev = temp_dev; |
1143 | if (irq >= 0) { | 1143 | if (irq >= 0) { |
1144 | #ifdef CONFIG_PCI_MSI | ||
1145 | if (!platform_legacy_irq(irq)) | ||
1146 | irq = IO_APIC_VECTOR(irq); | ||
1147 | #endif | ||
1148 | printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n", | 1144 | printk(KERN_INFO "PCI->APIC IRQ transform: %s[%c] -> IRQ %d\n", |
1149 | pci_name(dev), 'A' + pin, irq); | 1145 | pci_name(dev), 'A' + pin, irq); |
1150 | dev->irq = irq; | 1146 | dev->irq = irq; |
diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c index e1a1b11473e2..be769ef326a2 100644 --- a/arch/ia64/hp/sim/simeth.c +++ b/arch/ia64/hp/sim/simeth.c | |||
@@ -54,7 +54,7 @@ static int simeth_close(struct net_device *dev); | |||
54 | static int simeth_tx(struct sk_buff *skb, struct net_device *dev); | 54 | static int simeth_tx(struct sk_buff *skb, struct net_device *dev); |
55 | static int simeth_rx(struct net_device *dev); | 55 | static int simeth_rx(struct net_device *dev); |
56 | static struct net_device_stats *simeth_get_stats(struct net_device *dev); | 56 | static struct net_device_stats *simeth_get_stats(struct net_device *dev); |
57 | static irqreturn_t simeth_interrupt(int irq, void *dev_id, struct pt_regs * regs); | 57 | static irqreturn_t simeth_interrupt(int irq, void *dev_id); |
58 | static void set_multicast_list(struct net_device *dev); | 58 | static void set_multicast_list(struct net_device *dev); |
59 | static int simeth_device_event(struct notifier_block *this,unsigned long event, void *ptr); | 59 | static int simeth_device_event(struct notifier_block *this,unsigned long event, void *ptr); |
60 | 60 | ||
@@ -497,7 +497,7 @@ simeth_rx(struct net_device *dev) | |||
497 | * Interrupt handler (Yes, we can do it too !!!) | 497 | * Interrupt handler (Yes, we can do it too !!!) |
498 | */ | 498 | */ |
499 | static irqreturn_t | 499 | static irqreturn_t |
500 | simeth_interrupt(int irq, void *dev_id, struct pt_regs * regs) | 500 | simeth_interrupt(int irq, void *dev_id) |
501 | { | 501 | { |
502 | struct net_device *dev = dev_id; | 502 | struct net_device *dev = dev_id; |
503 | 503 | ||
diff --git a/arch/ia64/hp/sim/simserial.c b/arch/ia64/hp/sim/simserial.c index 246eb3d3757a..77819acaea9d 100644 --- a/arch/ia64/hp/sim/simserial.c +++ b/arch/ia64/hp/sim/simserial.c | |||
@@ -130,7 +130,7 @@ static void rs_start(struct tty_struct *tty) | |||
130 | #endif | 130 | #endif |
131 | } | 131 | } |
132 | 132 | ||
133 | static void receive_chars(struct tty_struct *tty, struct pt_regs *regs) | 133 | static void receive_chars(struct tty_struct *tty) |
134 | { | 134 | { |
135 | unsigned char ch; | 135 | unsigned char ch; |
136 | static unsigned char seen_esc = 0; | 136 | static unsigned char seen_esc = 0; |
@@ -152,7 +152,7 @@ static void receive_chars(struct tty_struct *tty, struct pt_regs *regs) | |||
152 | ch = ia64_ssc(0, 0, 0, 0, | 152 | ch = ia64_ssc(0, 0, 0, 0, |
153 | SSC_GETCHAR); | 153 | SSC_GETCHAR); |
154 | while (!ch); | 154 | while (!ch); |
155 | handle_sysrq(ch, regs, NULL); | 155 | handle_sysrq(ch, NULL); |
156 | } | 156 | } |
157 | #endif | 157 | #endif |
158 | seen_esc = 0; | 158 | seen_esc = 0; |
@@ -170,7 +170,7 @@ static void receive_chars(struct tty_struct *tty, struct pt_regs *regs) | |||
170 | /* | 170 | /* |
171 | * This is the serial driver's interrupt routine for a single port | 171 | * This is the serial driver's interrupt routine for a single port |
172 | */ | 172 | */ |
173 | static irqreturn_t rs_interrupt_single(int irq, void *dev_id, struct pt_regs * regs) | 173 | static irqreturn_t rs_interrupt_single(int irq, void *dev_id) |
174 | { | 174 | { |
175 | struct async_struct * info; | 175 | struct async_struct * info; |
176 | 176 | ||
@@ -187,7 +187,7 @@ static irqreturn_t rs_interrupt_single(int irq, void *dev_id, struct pt_regs * r | |||
187 | * pretty simple in our case, because we only get interrupts | 187 | * pretty simple in our case, because we only get interrupts |
188 | * on inbound traffic | 188 | * on inbound traffic |
189 | */ | 189 | */ |
190 | receive_chars(info->tty, regs); | 190 | receive_chars(info->tty); |
191 | return IRQ_HANDLED; | 191 | return IRQ_HANDLED; |
192 | } | 192 | } |
193 | 193 | ||
@@ -714,7 +714,7 @@ startup(struct async_struct *info) | |||
714 | { | 714 | { |
715 | unsigned long flags; | 715 | unsigned long flags; |
716 | int retval=0; | 716 | int retval=0; |
717 | irqreturn_t (*handler)(int, void *, struct pt_regs *); | 717 | irqreturn_t (*handler)(int, void *); |
718 | struct serial_state *state= info->state; | 718 | struct serial_state *state= info->state; |
719 | unsigned long page; | 719 | unsigned long page; |
720 | 720 | ||
diff --git a/arch/ia64/sn/kernel/huberror.c b/arch/ia64/sn/kernel/huberror.c index 96fb81e6321f..abca6bd7962f 100644 --- a/arch/ia64/sn/kernel/huberror.c +++ b/arch/ia64/sn/kernel/huberror.c | |||
@@ -22,7 +22,7 @@ | |||
22 | void hubiio_crb_error_handler(struct hubdev_info *hubdev_info); | 22 | void hubiio_crb_error_handler(struct hubdev_info *hubdev_info); |
23 | extern void bte_crb_error_handler(cnodeid_t, int, int, ioerror_t *, | 23 | extern void bte_crb_error_handler(cnodeid_t, int, int, ioerror_t *, |
24 | int); | 24 | int); |
25 | static irqreturn_t hub_eint_handler(int irq, void *arg, struct pt_regs *ep) | 25 | static irqreturn_t hub_eint_handler(int irq, void *arg) |
26 | { | 26 | { |
27 | struct hubdev_info *hubdev_info; | 27 | struct hubdev_info *hubdev_info; |
28 | struct ia64_sal_retval ret_stuff; | 28 | struct ia64_sal_retval ret_stuff; |
@@ -178,7 +178,7 @@ void hubiio_crb_error_handler(struct hubdev_info *hubdev_info) | |||
178 | */ | 178 | */ |
179 | void hub_error_init(struct hubdev_info *hubdev_info) | 179 | void hub_error_init(struct hubdev_info *hubdev_info) |
180 | { | 180 | { |
181 | if (request_irq(SGI_II_ERROR, (void *)hub_eint_handler, IRQF_SHARED, | 181 | if (request_irq(SGI_II_ERROR, hub_eint_handler, IRQF_SHARED, |
182 | "SN_hub_error", (void *)hubdev_info)) | 182 | "SN_hub_error", (void *)hubdev_info)) |
183 | printk("hub_error_init: Failed to request_irq for 0x%p\n", | 183 | printk("hub_error_init: Failed to request_irq for 0x%p\n", |
184 | hubdev_info); | 184 | hubdev_info); |
diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c index 4d026f9dd98b..fa96dfc0e1aa 100644 --- a/arch/ia64/sn/kernel/xpc_main.c +++ b/arch/ia64/sn/kernel/xpc_main.c | |||
@@ -222,7 +222,7 @@ xpc_timeout_partition_disengage_request(unsigned long data) | |||
222 | * Notify the heartbeat check thread that an IRQ has been received. | 222 | * Notify the heartbeat check thread that an IRQ has been received. |
223 | */ | 223 | */ |
224 | static irqreturn_t | 224 | static irqreturn_t |
225 | xpc_act_IRQ_handler(int irq, void *dev_id, struct pt_regs *regs) | 225 | xpc_act_IRQ_handler(int irq, void *dev_id) |
226 | { | 226 | { |
227 | atomic_inc(&xpc_act_IRQ_rcvd); | 227 | atomic_inc(&xpc_act_IRQ_rcvd); |
228 | wake_up_interruptible(&xpc_act_IRQ_wq); | 228 | wake_up_interruptible(&xpc_act_IRQ_wq); |
@@ -607,12 +607,9 @@ xpc_activate_partition(struct xpc_partition *part) | |||
607 | * irq - Interrupt ReQuest number. NOT USED. | 607 | * irq - Interrupt ReQuest number. NOT USED. |
608 | * | 608 | * |
609 | * dev_id - partid of IPI's potential sender. | 609 | * dev_id - partid of IPI's potential sender. |
610 | * | ||
611 | * regs - processor's context before the processor entered | ||
612 | * interrupt code. NOT USED. | ||
613 | */ | 610 | */ |
614 | irqreturn_t | 611 | irqreturn_t |
615 | xpc_notify_IRQ_handler(int irq, void *dev_id, struct pt_regs *regs) | 612 | xpc_notify_IRQ_handler(int irq, void *dev_id) |
616 | { | 613 | { |
617 | partid_t partid = (partid_t) (u64) dev_id; | 614 | partid_t partid = (partid_t) (u64) dev_id; |
618 | struct xpc_partition *part = &xpc_partitions[partid]; | 615 | struct xpc_partition *part = &xpc_partitions[partid]; |
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_provider.c b/arch/ia64/sn/pci/pcibr/pcibr_provider.c index 838c93c9a16a..27dd7df0f446 100644 --- a/arch/ia64/sn/pci/pcibr/pcibr_provider.c +++ b/arch/ia64/sn/pci/pcibr/pcibr_provider.c | |||
@@ -95,7 +95,7 @@ u16 sn_ioboard_to_pci_bus(struct pci_bus *pci_bus) | |||
95 | * bridge sends an error interrupt. | 95 | * bridge sends an error interrupt. |
96 | */ | 96 | */ |
97 | static irqreturn_t | 97 | static irqreturn_t |
98 | pcibr_error_intr_handler(int irq, void *arg, struct pt_regs *regs) | 98 | pcibr_error_intr_handler(int irq, void *arg) |
99 | { | 99 | { |
100 | struct pcibus_info *soft = (struct pcibus_info *)arg; | 100 | struct pcibus_info *soft = (struct pcibus_info *)arg; |
101 | 101 | ||
@@ -138,7 +138,7 @@ pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont | |||
138 | /* | 138 | /* |
139 | * register the bridge's error interrupt handler | 139 | * register the bridge's error interrupt handler |
140 | */ | 140 | */ |
141 | if (request_irq(SGI_PCIASIC_ERROR, (void *)pcibr_error_intr_handler, | 141 | if (request_irq(SGI_PCIASIC_ERROR, pcibr_error_intr_handler, |
142 | IRQF_SHARED, "PCIBR error", (void *)(soft))) { | 142 | IRQF_SHARED, "PCIBR error", (void *)(soft))) { |
143 | printk(KERN_WARNING | 143 | printk(KERN_WARNING |
144 | "pcibr cannot allocate interrupt for error handler\n"); | 144 | "pcibr cannot allocate interrupt for error handler\n"); |
diff --git a/arch/m32r/kernel/irq.c b/arch/m32r/kernel/irq.c index 3841861df6a2..f8d8650383e0 100644 --- a/arch/m32r/kernel/irq.c +++ b/arch/m32r/kernel/irq.c | |||
@@ -77,13 +77,16 @@ skip: | |||
77 | */ | 77 | */ |
78 | asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs) | 78 | asmlinkage unsigned int do_IRQ(int irq, struct pt_regs *regs) |
79 | { | 79 | { |
80 | struct pt_regs *old_regs; | ||
81 | old_regs = set_irq_regs(regs); | ||
80 | irq_enter(); | 82 | irq_enter(); |
81 | 83 | ||
82 | #ifdef CONFIG_DEBUG_STACKOVERFLOW | 84 | #ifdef CONFIG_DEBUG_STACKOVERFLOW |
83 | /* FIXME M32R */ | 85 | /* FIXME M32R */ |
84 | #endif | 86 | #endif |
85 | __do_IRQ(irq, regs); | 87 | __do_IRQ(irq); |
86 | irq_exit(); | 88 | irq_exit(); |
89 | set_irq_regs(old_regs); | ||
87 | 90 | ||
88 | return 1; | 91 | return 1; |
89 | } | 92 | } |
diff --git a/arch/m32r/kernel/smp.c b/arch/m32r/kernel/smp.c index 8b1f6eb76870..722e21f556dc 100644 --- a/arch/m32r/kernel/smp.c +++ b/arch/m32r/kernel/smp.c | |||
@@ -101,7 +101,7 @@ void smp_call_function_interrupt(void); | |||
101 | 101 | ||
102 | void smp_send_timer(void); | 102 | void smp_send_timer(void); |
103 | void smp_ipi_timer_interrupt(struct pt_regs *); | 103 | void smp_ipi_timer_interrupt(struct pt_regs *); |
104 | void smp_local_timer_interrupt(struct pt_regs *); | 104 | void smp_local_timer_interrupt(void); |
105 | 105 | ||
106 | void send_IPI_allbutself(int, int); | 106 | void send_IPI_allbutself(int, int); |
107 | static void send_IPI_mask(cpumask_t, int, int); | 107 | static void send_IPI_mask(cpumask_t, int, int); |
@@ -734,9 +734,12 @@ void smp_send_timer(void) | |||
734 | *==========================================================================*/ | 734 | *==========================================================================*/ |
735 | void smp_ipi_timer_interrupt(struct pt_regs *regs) | 735 | void smp_ipi_timer_interrupt(struct pt_regs *regs) |
736 | { | 736 | { |
737 | struct pt_regs *old_regs; | ||
738 | old_regs = set_irq_regs(regs); | ||
737 | irq_enter(); | 739 | irq_enter(); |
738 | smp_local_timer_interrupt(regs); | 740 | smp_local_timer_interrupt(); |
739 | irq_exit(); | 741 | irq_exit(); |
742 | set_irq_regs(old_regs); | ||
740 | } | 743 | } |
741 | 744 | ||
742 | /*==========================================================================* | 745 | /*==========================================================================* |
@@ -762,9 +765,9 @@ void smp_ipi_timer_interrupt(struct pt_regs *regs) | |||
762 | * ---------- --- -------------------------------------------------------- | 765 | * ---------- --- -------------------------------------------------------- |
763 | * 2003-06-24 hy use per_cpu structure. | 766 | * 2003-06-24 hy use per_cpu structure. |
764 | *==========================================================================*/ | 767 | *==========================================================================*/ |
765 | void smp_local_timer_interrupt(struct pt_regs *regs) | 768 | void smp_local_timer_interrupt(void) |
766 | { | 769 | { |
767 | int user = user_mode(regs); | 770 | int user = user_mode(get_irq_regs()); |
768 | int cpu_id = smp_processor_id(); | 771 | int cpu_id = smp_processor_id(); |
769 | 772 | ||
770 | /* | 773 | /* |
@@ -774,7 +777,7 @@ void smp_local_timer_interrupt(struct pt_regs *regs) | |||
774 | * useful with a profiling multiplier != 1 | 777 | * useful with a profiling multiplier != 1 |
775 | */ | 778 | */ |
776 | 779 | ||
777 | profile_tick(CPU_PROFILING, regs); | 780 | profile_tick(CPU_PROFILING); |
778 | 781 | ||
779 | if (--per_cpu(prof_counter, cpu_id) <= 0) { | 782 | if (--per_cpu(prof_counter, cpu_id) <= 0) { |
780 | /* | 783 | /* |
diff --git a/arch/m32r/kernel/time.c b/arch/m32r/kernel/time.c index d8af155db984..a09038282c78 100644 --- a/arch/m32r/kernel/time.c +++ b/arch/m32r/kernel/time.c | |||
@@ -35,7 +35,7 @@ | |||
35 | 35 | ||
36 | #ifdef CONFIG_SMP | 36 | #ifdef CONFIG_SMP |
37 | extern void send_IPI_allbutself(int, int); | 37 | extern void send_IPI_allbutself(int, int); |
38 | extern void smp_local_timer_interrupt(struct pt_regs *); | 38 | extern void smp_local_timer_interrupt(void); |
39 | #endif | 39 | #endif |
40 | 40 | ||
41 | #define TICK_SIZE (tick_nsec / 1000) | 41 | #define TICK_SIZE (tick_nsec / 1000) |
@@ -188,15 +188,15 @@ static long last_rtc_update = 0; | |||
188 | * timer_interrupt() needs to keep up the real-time clock, | 188 | * timer_interrupt() needs to keep up the real-time clock, |
189 | * as well as call the "do_timer()" routine every clocktick | 189 | * as well as call the "do_timer()" routine every clocktick |
190 | */ | 190 | */ |
191 | irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 191 | irqreturn_t timer_interrupt(int irq, void *dev_id) |
192 | { | 192 | { |
193 | #ifndef CONFIG_SMP | 193 | #ifndef CONFIG_SMP |
194 | profile_tick(CPU_PROFILING, regs); | 194 | profile_tick(CPU_PROFILING); |
195 | #endif | 195 | #endif |
196 | do_timer(1); | 196 | do_timer(1); |
197 | 197 | ||
198 | #ifndef CONFIG_SMP | 198 | #ifndef CONFIG_SMP |
199 | update_process_times(user_mode(regs)); | 199 | update_process_times(user_mode(get_irq_regs())); |
200 | #endif | 200 | #endif |
201 | /* | 201 | /* |
202 | * If we have an externally synchronized Linux clock, then update | 202 | * If we have an externally synchronized Linux clock, then update |
@@ -221,7 +221,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
221 | a hack, so don't look closely for now.. */ | 221 | a hack, so don't look closely for now.. */ |
222 | 222 | ||
223 | #ifdef CONFIG_SMP | 223 | #ifdef CONFIG_SMP |
224 | smp_local_timer_interrupt(regs); | 224 | smp_local_timer_interrupt(); |
225 | smp_send_timer(); | 225 | smp_send_timer(); |
226 | #endif | 226 | #endif |
227 | 227 | ||
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..6f63d62bd7d6 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(irqreturn_t (*handler)(int, void *)); |
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(irqreturn_t (*timer_routine)(int, void *)) |
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..b2eea00796ac 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(irqreturn_t (*handler)(int,void *)); |
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 | irqreturn_t (*timer_handler)(int, void *) = 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(irqreturn_t (*timer_routine)(int, void *)) |
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/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/config.c b/arch/m68k/atari/config.c index b2079252a954..76760eebbbc5 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(irqreturn_t (*)(int, void *)); |
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..5283c73d3f77 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 irqreturn_t (*stdma_isr)(int, void *); |
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(irqreturn_t (*handler)(int, void *), 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..b8fe71cfc62c 100644 --- a/arch/m68k/atari/time.c +++ b/arch/m68k/atari/time.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <asm/atariints.h> | 20 | #include <asm/atariints.h> |
21 | 21 | ||
22 | void __init | 22 | void __init |
23 | atari_sched_init(irqreturn_t (*timer_routine)(int, void *, struct pt_regs *)) | 23 | atari_sched_init(irqreturn_t (*timer_routine)(int, void *)) |
24 | { | 24 | { |
25 | /* set Timer C data Register */ | 25 | /* set Timer C data Register */ |
26 | mfp.tim_dt_c = INT_TICKS; | 26 | mfp.tim_dt_c = INT_TICKS; |
diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c index d1e916ae55a8..df64efc940c9 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(irqreturn_t (*handler)(int, void *)); |
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 irqreturn_t (*tick_handler)(int, void *); |
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 (irqreturn_t (*timer_routine)(int, void *)) |
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..086058fd8383 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 | irqreturn_t (*vector)(int, void *) = 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(irqreturn_t (*vector)(int, void *)) |
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..ca66a039d6f2 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(irqreturn_t (*vector)(int, void *)); |
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/entry.S b/arch/m68k/kernel/entry.S index 9083c8b7659f..34bf7bd126d2 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) |
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c index b33e37fb7b0e..6fa893fc5fd6 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, |
@@ -215,7 +216,7 @@ int setup_irq(unsigned int irq, struct irq_node *node) | |||
215 | } | 216 | } |
216 | 217 | ||
217 | int request_irq(unsigned int irq, | 218 | int request_irq(unsigned int irq, |
218 | irqreturn_t (*handler) (int, void *, struct pt_regs *), | 219 | irqreturn_t (*handler) (int, void *), |
219 | unsigned long flags, const char *devname, void *dev_id) | 220 | unsigned long flags, const char *devname, void *dev_id) |
220 | { | 221 | { |
221 | struct irq_node *node; | 222 | struct irq_node *node; |
@@ -379,18 +380,25 @@ unsigned int irq_canonicalize(unsigned int irq) | |||
379 | 380 | ||
380 | EXPORT_SYMBOL(irq_canonicalize); | 381 | EXPORT_SYMBOL(irq_canonicalize); |
381 | 382 | ||
382 | asmlinkage void m68k_handle_int(unsigned int irq, struct pt_regs *regs) | 383 | asmlinkage void m68k_handle_int(unsigned int irq) |
383 | { | 384 | { |
384 | struct irq_node *node; | 385 | struct irq_node *node; |
385 | |||
386 | kstat_cpu(0).irqs[irq]++; | 386 | kstat_cpu(0).irqs[irq]++; |
387 | node = irq_list[irq]; | 387 | node = irq_list[irq]; |
388 | do { | 388 | do { |
389 | node->handler(irq, node->dev_id, regs); | 389 | node->handler(irq, node->dev_id); |
390 | node = node->next; | 390 | node = node->next; |
391 | } while (node); | 391 | } while (node); |
392 | } | 392 | } |
393 | 393 | ||
394 | asmlinkage void __m68k_handle_int(unsigned int irq, struct pt_regs *regs) | ||
395 | { | ||
396 | struct pt_regs *old_regs; | ||
397 | old_regs = set_irq_regs(regs); | ||
398 | m68k_handle_int(irq); | ||
399 | set_irq_regs(old_regs); | ||
400 | } | ||
401 | |||
394 | asmlinkage void handle_badint(struct pt_regs *regs) | 402 | asmlinkage void handle_badint(struct pt_regs *regs) |
395 | { | 403 | { |
396 | kstat_cpu(0).irqs[0]++; | 404 | kstat_cpu(0).irqs[0]++; |
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c index f2d7ee0ee18c..869c4861346e 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) (irqreturn_t (*handler)(int, void *)) __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/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..029bae65c5d1 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(irqreturn_t (*func)(int, void *)); |
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(irqreturn_t (*vector)(int, void *)) |
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..9b6c80c4bbe2 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(irqreturn_t (*func)(int, void *)) |
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..c864d6415180 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(irqreturn_t (*handler)(int, void *)); |
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 | irqreturn_t (*tick_handler)(int, void *); |
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 (irqreturn_t (*timer_routine)(int, void *)) |
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..2c91cee17093 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(irqreturn_t (*handler)(int, void *)); |
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 irqreturn_t (*tick_handler)(int, void *); |
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 (irqreturn_t (*timer_routine)(int, void *)) |
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..5123f693948f 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(irqreturn_t (*handler)(int, void *)); |
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..4a4ee4dfa6f1 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 irqreturn_t (*q40_timer_routine)(int, void *); |
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 (irqreturn_t (*timer_routine)(int, void *)) |
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..43e4aa3f404a 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(irqreturn_t (*handler)(int, void *)); |
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(irqreturn_t (*timer_routine)(int, void *)) |
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..33eb1ecc888a 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(irqreturn_t (*vector)(int, void *)) |
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..e39079c781d8 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(irqreturn_t (*vector)(int, void *)); |
7 | 7 | ||
8 | struct mostek_dt { | 8 | struct mostek_dt { |
9 | volatile unsigned char csr; | 9 | volatile unsigned char csr; |
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 8a49884bd5ec..731b942a824b 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -1465,10 +1465,8 @@ config MIPS_MT_DISABLED | |||
1465 | the option of an MT-enabled processor this option will be the only | 1465 | the option of an MT-enabled processor this option will be the only |
1466 | option in this menu. | 1466 | option in this menu. |
1467 | 1467 | ||
1468 | config MIPS_MT_SMTC | 1468 | config MIPS_MT_SMP |
1469 | bool "SMTC: Use all TCs on all VPEs for SMP" | 1469 | bool "Use 1 TC on each available VPE for SMP" |
1470 | depends on CPU_MIPS32_R2 | ||
1471 | #depends on CPU_MIPS64_R2 # once there is hardware ... | ||
1472 | depends on SYS_SUPPORTS_MULTITHREADING | 1470 | depends on SYS_SUPPORTS_MULTITHREADING |
1473 | select CPU_MIPSR2_IRQ_VI | 1471 | select CPU_MIPSR2_IRQ_VI |
1474 | select CPU_MIPSR2_SRS | 1472 | select CPU_MIPSR2_SRS |
@@ -1476,11 +1474,13 @@ config MIPS_MT_SMTC | |||
1476 | select SMP | 1474 | select SMP |
1477 | select SYS_SUPPORTS_SMP | 1475 | select SYS_SUPPORTS_SMP |
1478 | help | 1476 | help |
1479 | This is a kernel model which is known a SMTC or lately has been | 1477 | This is a kernel model which is also known a VSMP or lately |
1480 | marketesed into SMVP. | 1478 | has been marketesed into SMVP. |
1481 | 1479 | ||
1482 | config MIPS_MT_SMP | 1480 | config MIPS_MT_SMTC |
1483 | bool "Use 1 TC on each available VPE for SMP" | 1481 | bool "SMTC: Use all TCs on all VPEs for SMP" |
1482 | depends on CPU_MIPS32_R2 | ||
1483 | #depends on CPU_MIPS64_R2 # once there is hardware ... | ||
1484 | depends on SYS_SUPPORTS_MULTITHREADING | 1484 | depends on SYS_SUPPORTS_MULTITHREADING |
1485 | select CPU_MIPSR2_IRQ_VI | 1485 | select CPU_MIPSR2_IRQ_VI |
1486 | select CPU_MIPSR2_SRS | 1486 | select CPU_MIPSR2_SRS |
@@ -1488,8 +1488,8 @@ config MIPS_MT_SMP | |||
1488 | select SMP | 1488 | select SMP |
1489 | select SYS_SUPPORTS_SMP | 1489 | select SYS_SUPPORTS_SMP |
1490 | help | 1490 | help |
1491 | This is a kernel model which is also known a VSMP or lately | 1491 | This is a kernel model which is known a SMTC or lately has been |
1492 | has been marketesed into SMVP. | 1492 | marketesed into SMVP. |
1493 | 1493 | ||
1494 | config MIPS_VPE_LOADER | 1494 | config MIPS_VPE_LOADER |
1495 | bool "VPE loader support." | 1495 | bool "VPE loader support." |
diff --git a/arch/mips/au1000/common/dma.c b/arch/mips/au1000/common/dma.c index fb7c47c1585d..c3019b9c91b1 100644 --- a/arch/mips/au1000/common/dma.c +++ b/arch/mips/au1000/common/dma.c | |||
@@ -160,7 +160,7 @@ void dump_au1000_dma_channel(unsigned int dmanr) | |||
160 | * Requests the DMA done IRQ if irqhandler != NULL. | 160 | * Requests the DMA done IRQ if irqhandler != NULL. |
161 | */ | 161 | */ |
162 | int request_au1000_dma(int dev_id, const char *dev_str, | 162 | int request_au1000_dma(int dev_id, const char *dev_str, |
163 | irqreturn_t (*irqhandler)(int, void *, struct pt_regs *), | 163 | irqreturn_t (*irqhandler)(int, void *), |
164 | unsigned long irqflags, | 164 | unsigned long irqflags, |
165 | void *irq_dev_id) | 165 | void *irq_dev_id) |
166 | { | 166 | { |
diff --git a/arch/mips/au1000/common/irq.c b/arch/mips/au1000/common/irq.c index 316722ee8cf5..b32597e05a69 100644 --- a/arch/mips/au1000/common/irq.c +++ b/arch/mips/au1000/common/irq.c | |||
@@ -67,7 +67,7 @@ | |||
67 | 67 | ||
68 | extern void set_debug_traps(void); | 68 | extern void set_debug_traps(void); |
69 | extern irq_cpustat_t irq_stat [NR_CPUS]; | 69 | extern irq_cpustat_t irq_stat [NR_CPUS]; |
70 | extern void mips_timer_interrupt(struct pt_regs *regs); | 70 | extern void mips_timer_interrupt(void); |
71 | 71 | ||
72 | static void setup_local_irq(unsigned int irq, int type, int int_req); | 72 | static void setup_local_irq(unsigned int irq, int type, int int_req); |
73 | static unsigned int startup_irq(unsigned int irq); | 73 | static unsigned int startup_irq(unsigned int irq); |
@@ -81,10 +81,6 @@ inline void local_disable_irq(unsigned int irq_nr); | |||
81 | 81 | ||
82 | void (*board_init_irq)(void); | 82 | void (*board_init_irq)(void); |
83 | 83 | ||
84 | #ifdef CONFIG_PM | ||
85 | extern irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs); | ||
86 | #endif | ||
87 | |||
88 | static DEFINE_SPINLOCK(irq_lock); | 84 | static DEFINE_SPINLOCK(irq_lock); |
89 | 85 | ||
90 | 86 | ||
@@ -292,7 +288,7 @@ static struct irq_chip level_irq_type = { | |||
292 | }; | 288 | }; |
293 | 289 | ||
294 | #ifdef CONFIG_PM | 290 | #ifdef CONFIG_PM |
295 | void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *)) | 291 | void startup_match20_interrupt(irqreturn_t (*handler)(int, void *)) |
296 | { | 292 | { |
297 | struct irq_desc *desc = &irq_desc[AU1000_TOY_MATCH2_INT]; | 293 | struct irq_desc *desc = &irq_desc[AU1000_TOY_MATCH2_INT]; |
298 | 294 | ||
@@ -501,14 +497,15 @@ void __init arch_init_irq(void) | |||
501 | * intcX_reqX_irqdispatch(). | 497 | * intcX_reqX_irqdispatch(). |
502 | */ | 498 | */ |
503 | 499 | ||
504 | void intc0_req0_irqdispatch(struct pt_regs *regs) | 500 | static void intc0_req0_irqdispatch(void) |
505 | { | 501 | { |
506 | int irq = 0; | 502 | int irq = 0; |
507 | static unsigned long intc0_req0 = 0; | 503 | static unsigned long intc0_req0 = 0; |
508 | 504 | ||
509 | intc0_req0 |= au_readl(IC0_REQ0INT); | 505 | intc0_req0 |= au_readl(IC0_REQ0INT); |
510 | 506 | ||
511 | if (!intc0_req0) return; | 507 | if (!intc0_req0) |
508 | return; | ||
512 | #ifdef AU1000_USB_DEV_REQ_INT | 509 | #ifdef AU1000_USB_DEV_REQ_INT |
513 | /* | 510 | /* |
514 | * Because of the tight timing of SETUP token to reply | 511 | * Because of the tight timing of SETUP token to reply |
@@ -517,28 +514,29 @@ void intc0_req0_irqdispatch(struct pt_regs *regs) | |||
517 | */ | 514 | */ |
518 | if ((intc0_req0 & (1<<AU1000_USB_DEV_REQ_INT))) { | 515 | if ((intc0_req0 & (1<<AU1000_USB_DEV_REQ_INT))) { |
519 | intc0_req0 &= ~(1<<AU1000_USB_DEV_REQ_INT); | 516 | intc0_req0 &= ~(1<<AU1000_USB_DEV_REQ_INT); |
520 | do_IRQ(AU1000_USB_DEV_REQ_INT, regs); | 517 | do_IRQ(AU1000_USB_DEV_REQ_INT); |
521 | return; | 518 | return; |
522 | } | 519 | } |
523 | #endif | 520 | #endif |
524 | irq = au_ffs(intc0_req0) - 1; | 521 | irq = au_ffs(intc0_req0) - 1; |
525 | intc0_req0 &= ~(1<<irq); | 522 | intc0_req0 &= ~(1<<irq); |
526 | do_IRQ(irq, regs); | 523 | do_IRQ(irq); |
527 | } | 524 | } |
528 | 525 | ||
529 | 526 | ||
530 | void intc0_req1_irqdispatch(struct pt_regs *regs) | 527 | static void intc0_req1_irqdispatch(void) |
531 | { | 528 | { |
532 | int irq = 0; | 529 | int irq = 0; |
533 | static unsigned long intc0_req1 = 0; | 530 | static unsigned long intc0_req1 = 0; |
534 | 531 | ||
535 | intc0_req1 |= au_readl(IC0_REQ1INT); | 532 | intc0_req1 |= au_readl(IC0_REQ1INT); |
536 | 533 | ||
537 | if (!intc0_req1) return; | 534 | if (!intc0_req1) |
535 | return; | ||
538 | 536 | ||
539 | irq = au_ffs(intc0_req1) - 1; | 537 | irq = au_ffs(intc0_req1) - 1; |
540 | intc0_req1 &= ~(1<<irq); | 538 | intc0_req1 &= ~(1<<irq); |
541 | do_IRQ(irq, regs); | 539 | do_IRQ(irq); |
542 | } | 540 | } |
543 | 541 | ||
544 | 542 | ||
@@ -546,35 +544,37 @@ void intc0_req1_irqdispatch(struct pt_regs *regs) | |||
546 | * Interrupt Controller 1: | 544 | * Interrupt Controller 1: |
547 | * interrupts 32 - 63 | 545 | * interrupts 32 - 63 |
548 | */ | 546 | */ |
549 | void intc1_req0_irqdispatch(struct pt_regs *regs) | 547 | static void intc1_req0_irqdispatch(void) |
550 | { | 548 | { |
551 | int irq = 0; | 549 | int irq = 0; |
552 | static unsigned long intc1_req0 = 0; | 550 | static unsigned long intc1_req0 = 0; |
553 | 551 | ||
554 | intc1_req0 |= au_readl(IC1_REQ0INT); | 552 | intc1_req0 |= au_readl(IC1_REQ0INT); |
555 | 553 | ||
556 | if (!intc1_req0) return; | 554 | if (!intc1_req0) |
555 | return; | ||
557 | 556 | ||
558 | irq = au_ffs(intc1_req0) - 1; | 557 | irq = au_ffs(intc1_req0) - 1; |
559 | intc1_req0 &= ~(1<<irq); | 558 | intc1_req0 &= ~(1<<irq); |
560 | irq += 32; | 559 | irq += 32; |
561 | do_IRQ(irq, regs); | 560 | do_IRQ(irq); |
562 | } | 561 | } |
563 | 562 | ||
564 | 563 | ||
565 | void intc1_req1_irqdispatch(struct pt_regs *regs) | 564 | static void intc1_req1_irqdispatch(void) |
566 | { | 565 | { |
567 | int irq = 0; | 566 | int irq = 0; |
568 | static unsigned long intc1_req1 = 0; | 567 | static unsigned long intc1_req1 = 0; |
569 | 568 | ||
570 | intc1_req1 |= au_readl(IC1_REQ1INT); | 569 | intc1_req1 |= au_readl(IC1_REQ1INT); |
571 | 570 | ||
572 | if (!intc1_req1) return; | 571 | if (!intc1_req1) |
572 | return; | ||
573 | 573 | ||
574 | irq = au_ffs(intc1_req1) - 1; | 574 | irq = au_ffs(intc1_req1) - 1; |
575 | intc1_req1 &= ~(1<<irq); | 575 | intc1_req1 &= ~(1<<irq); |
576 | irq += 32; | 576 | irq += 32; |
577 | do_IRQ(irq, regs); | 577 | do_IRQ(irq); |
578 | } | 578 | } |
579 | 579 | ||
580 | #ifdef CONFIG_PM | 580 | #ifdef CONFIG_PM |
@@ -660,20 +660,20 @@ restore_au1xxx_intctl(void) | |||
660 | } | 660 | } |
661 | #endif /* CONFIG_PM */ | 661 | #endif /* CONFIG_PM */ |
662 | 662 | ||
663 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 663 | asmlinkage void plat_irq_dispatch(void) |
664 | { | 664 | { |
665 | unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; | 665 | unsigned int pending = read_c0_status() & read_c0_cause() & ST0_IM; |
666 | 666 | ||
667 | if (pending & CAUSEF_IP7) | 667 | if (pending & CAUSEF_IP7) |
668 | mips_timer_interrupt(regs); | 668 | mips_timer_interrupt(); |
669 | else if (pending & CAUSEF_IP2) | 669 | else if (pending & CAUSEF_IP2) |
670 | intc0_req0_irqdispatch(regs); | 670 | intc0_req0_irqdispatch(); |
671 | else if (pending & CAUSEF_IP3) | 671 | else if (pending & CAUSEF_IP3) |
672 | intc0_req1_irqdispatch(regs); | 672 | intc0_req1_irqdispatch(); |
673 | else if (pending & CAUSEF_IP4) | 673 | else if (pending & CAUSEF_IP4) |
674 | intc1_req0_irqdispatch(regs); | 674 | intc1_req0_irqdispatch(); |
675 | else if (pending & CAUSEF_IP5) | 675 | else if (pending & CAUSEF_IP5) |
676 | intc1_req1_irqdispatch(regs); | 676 | intc1_req1_irqdispatch(); |
677 | else | 677 | else |
678 | spurious_interrupt(regs); | 678 | spurious_interrupt(); |
679 | } | 679 | } |
diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c index 0a067f3113a5..dd9c364b4746 100644 --- a/arch/mips/au1000/common/time.c +++ b/arch/mips/au1000/common/time.c | |||
@@ -41,7 +41,6 @@ | |||
41 | 41 | ||
42 | #include <asm/compiler.h> | 42 | #include <asm/compiler.h> |
43 | #include <asm/mipsregs.h> | 43 | #include <asm/mipsregs.h> |
44 | #include <asm/ptrace.h> | ||
45 | #include <asm/time.h> | 44 | #include <asm/time.h> |
46 | #include <asm/div64.h> | 45 | #include <asm/div64.h> |
47 | #include <asm/mach-au1x00/au1000.h> | 46 | #include <asm/mach-au1x00/au1000.h> |
@@ -62,7 +61,7 @@ static unsigned int timerhi = 0, timerlo = 0; | |||
62 | #error "unsupported HZ value! Must be in [100,1000]" | 61 | #error "unsupported HZ value! Must be in [100,1000]" |
63 | #endif | 62 | #endif |
64 | #define MATCH20_INC (328*100/HZ) /* magic number 328 is for HZ=100... */ | 63 | #define MATCH20_INC (328*100/HZ) /* magic number 328 is for HZ=100... */ |
65 | extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 64 | extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *)); |
66 | static unsigned long last_pc0, last_match20; | 65 | static unsigned long last_pc0, last_match20; |
67 | #endif | 66 | #endif |
68 | 67 | ||
@@ -79,7 +78,8 @@ static inline void ack_r4ktimer(unsigned long newval) | |||
79 | * is provably more robust. | 78 | * is provably more robust. |
80 | */ | 79 | */ |
81 | unsigned long wtimer; | 80 | unsigned long wtimer; |
82 | void mips_timer_interrupt(struct pt_regs *regs) | 81 | |
82 | void mips_timer_interrupt(void) | ||
83 | { | 83 | { |
84 | int irq = 63; | 84 | int irq = 63; |
85 | unsigned long count; | 85 | unsigned long count; |
@@ -98,7 +98,7 @@ void mips_timer_interrupt(struct pt_regs *regs) | |||
98 | kstat_this_cpu.irqs[irq]++; | 98 | kstat_this_cpu.irqs[irq]++; |
99 | do_timer(1); | 99 | do_timer(1); |
100 | #ifndef CONFIG_SMP | 100 | #ifndef CONFIG_SMP |
101 | update_process_times(user_mode(regs)); | 101 | update_process_times(user_mode(get_irq_regs())); |
102 | #endif | 102 | #endif |
103 | r4k_cur += r4k_offset; | 103 | r4k_cur += r4k_offset; |
104 | ack_r4ktimer(r4k_cur); | 104 | ack_r4ktimer(r4k_cur); |
@@ -115,7 +115,7 @@ null: | |||
115 | } | 115 | } |
116 | 116 | ||
117 | #ifdef CONFIG_PM | 117 | #ifdef CONFIG_PM |
118 | irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) | 118 | irqreturn_t counter0_irq(int irq, void *dev_id) |
119 | { | 119 | { |
120 | unsigned long pc0; | 120 | unsigned long pc0; |
121 | int time_elapsed; | 121 | int time_elapsed; |
@@ -139,7 +139,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
139 | while (time_elapsed > 0) { | 139 | while (time_elapsed > 0) { |
140 | do_timer(1); | 140 | do_timer(1); |
141 | #ifndef CONFIG_SMP | 141 | #ifndef CONFIG_SMP |
142 | update_process_times(user_mode(regs)); | 142 | update_process_times(user_mode(get_irq_regs())); |
143 | #endif | 143 | #endif |
144 | time_elapsed -= MATCH20_INC; | 144 | time_elapsed -= MATCH20_INC; |
145 | last_match20 += MATCH20_INC; | 145 | last_match20 += MATCH20_INC; |
@@ -158,7 +158,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
158 | jiffie_drift -= 999; | 158 | jiffie_drift -= 999; |
159 | do_timer(1); /* increment jiffies by one */ | 159 | do_timer(1); /* increment jiffies by one */ |
160 | #ifndef CONFIG_SMP | 160 | #ifndef CONFIG_SMP |
161 | update_process_times(user_mode(regs)); | 161 | update_process_times(user_mode(get_irq_regs())); |
162 | #endif | 162 | #endif |
163 | } | 163 | } |
164 | 164 | ||
diff --git a/arch/mips/au1000/common/usbdev.c b/arch/mips/au1000/common/usbdev.c index 63bcb3a95dc7..70dc82e536cd 100644 --- a/arch/mips/au1000/common/usbdev.c +++ b/arch/mips/au1000/common/usbdev.c | |||
@@ -1031,8 +1031,7 @@ process_ep_receive (struct usb_dev* dev, endpoint_t *ep) | |||
1031 | 1031 | ||
1032 | 1032 | ||
1033 | /* This ISR handles the receive complete and suspend events */ | 1033 | /* This ISR handles the receive complete and suspend events */ |
1034 | static void | 1034 | static void req_sus_intr (int irq, void *dev_id) |
1035 | req_sus_intr (int irq, void *dev_id, struct pt_regs *regs) | ||
1036 | { | 1035 | { |
1037 | struct usb_dev *dev = (struct usb_dev *) dev_id; | 1036 | struct usb_dev *dev = (struct usb_dev *) dev_id; |
1038 | u32 status; | 1037 | u32 status; |
@@ -1050,8 +1049,7 @@ req_sus_intr (int irq, void *dev_id, struct pt_regs *regs) | |||
1050 | 1049 | ||
1051 | 1050 | ||
1052 | /* This ISR handles the DMA done events on EP0 */ | 1051 | /* This ISR handles the DMA done events on EP0 */ |
1053 | static void | 1052 | static void dma_done_ep0_intr(int irq, void *dev_id) |
1054 | dma_done_ep0_intr(int irq, void *dev_id, struct pt_regs *regs) | ||
1055 | { | 1053 | { |
1056 | struct usb_dev *dev = (struct usb_dev *) dev_id; | 1054 | struct usb_dev *dev = (struct usb_dev *) dev_id; |
1057 | usbdev_pkt_t* pkt; | 1055 | usbdev_pkt_t* pkt; |
@@ -1094,8 +1092,7 @@ dma_done_ep0_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
1094 | } | 1092 | } |
1095 | 1093 | ||
1096 | /* This ISR handles the DMA done events on endpoints 2,3,4,5 */ | 1094 | /* This ISR handles the DMA done events on endpoints 2,3,4,5 */ |
1097 | static void | 1095 | static void dma_done_ep_intr(int irq, void *dev_id) |
1098 | dma_done_ep_intr(int irq, void *dev_id, struct pt_regs *regs) | ||
1099 | { | 1096 | { |
1100 | struct usb_dev *dev = (struct usb_dev *) dev_id; | 1097 | struct usb_dev *dev = (struct usb_dev *) dev_id; |
1101 | int i; | 1098 | int i; |
diff --git a/arch/mips/au1000/pb1200/irqmap.c b/arch/mips/au1000/pb1200/irqmap.c index f66779f0d4cd..91983ba407c4 100644 --- a/arch/mips/au1000/pb1200/irqmap.c +++ b/arch/mips/au1000/pb1200/irqmap.c | |||
@@ -65,7 +65,7 @@ int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map); | |||
65 | */ | 65 | */ |
66 | static volatile int pb1200_cascade_en=0; | 66 | static volatile int pb1200_cascade_en=0; |
67 | 67 | ||
68 | irqreturn_t pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs) | 68 | irqreturn_t pb1200_cascade_handler( int irq, void *dev_id) |
69 | { | 69 | { |
70 | unsigned short bisr = bcsr->int_status; | 70 | unsigned short bisr = bcsr->int_status; |
71 | int extirq_nr = 0; | 71 | int extirq_nr = 0; |
@@ -76,8 +76,9 @@ irqreturn_t pb1200_cascade_handler( int irq, void *dev_id, struct pt_regs *regs) | |||
76 | { | 76 | { |
77 | extirq_nr = (PB1200_INT_BEGIN-1) + au_ffs(bisr); | 77 | extirq_nr = (PB1200_INT_BEGIN-1) + au_ffs(bisr); |
78 | /* Ack and dispatch IRQ */ | 78 | /* Ack and dispatch IRQ */ |
79 | do_IRQ(extirq_nr,regs); | 79 | do_IRQ(extirq_nr); |
80 | } | 80 | } |
81 | |||
81 | return IRQ_RETVAL(1); | 82 | return IRQ_RETVAL(1); |
82 | } | 83 | } |
83 | 84 | ||
diff --git a/arch/mips/basler/excite/excite_dbg_io.c b/arch/mips/basler/excite/excite_dbg_io.c index c04505afa47f..d289e3a868cf 100644 --- a/arch/mips/basler/excite/excite_dbg_io.c +++ b/arch/mips/basler/excite/excite_dbg_io.c | |||
@@ -112,7 +112,7 @@ int putDebugChar(int data) | |||
112 | } | 112 | } |
113 | 113 | ||
114 | /* KGDB interrupt handler */ | 114 | /* KGDB interrupt handler */ |
115 | asmlinkage void excite_kgdb_inthdl(struct pt_regs *regs) | 115 | asmlinkage void excite_kgdb_inthdl(void) |
116 | { | 116 | { |
117 | if (unlikely( | 117 | if (unlikely( |
118 | ((titan_readl(UAIIR) & 0x7) == 4) | 118 | ((titan_readl(UAIIR) & 0x7) == 4) |
diff --git a/arch/mips/basler/excite/excite_iodev.c b/arch/mips/basler/excite/excite_iodev.c index 10bbb8cfb964..6af0b21ebc32 100644 --- a/arch/mips/basler/excite/excite_iodev.c +++ b/arch/mips/basler/excite/excite_iodev.c | |||
@@ -38,7 +38,7 @@ static int iodev_open(struct inode *, struct file *); | |||
38 | static int iodev_release(struct inode *, struct file *); | 38 | static int iodev_release(struct inode *, struct file *); |
39 | static ssize_t iodev_read(struct file *, char __user *, size_t s, loff_t *); | 39 | static ssize_t iodev_read(struct file *, char __user *, size_t s, loff_t *); |
40 | static unsigned int iodev_poll(struct file *, struct poll_table_struct *); | 40 | static unsigned int iodev_poll(struct file *, struct poll_table_struct *); |
41 | static irqreturn_t iodev_irqhdl(int, void *, struct pt_regs *); | 41 | static irqreturn_t iodev_irqhdl(int, void *); |
42 | 42 | ||
43 | 43 | ||
44 | 44 | ||
@@ -108,16 +108,12 @@ static int __exit iodev_remove(struct device *dev) | |||
108 | return misc_deregister(&miscdev); | 108 | return misc_deregister(&miscdev); |
109 | } | 109 | } |
110 | 110 | ||
111 | |||
112 | |||
113 | static int iodev_open(struct inode *i, struct file *f) | 111 | static int iodev_open(struct inode *i, struct file *f) |
114 | { | 112 | { |
115 | return request_irq(iodev_irq, iodev_irqhdl, IRQF_DISABLED, | 113 | return request_irq(iodev_irq, iodev_irqhdl, IRQF_DISABLED, |
116 | iodev_name, &miscdev); | 114 | iodev_name, &miscdev); |
117 | } | 115 | } |
118 | 116 | ||
119 | |||
120 | |||
121 | static int iodev_release(struct inode *i, struct file *f) | 117 | static int iodev_release(struct inode *i, struct file *f) |
122 | { | 118 | { |
123 | free_irq(iodev_irq, &miscdev); | 119 | free_irq(iodev_irq, &miscdev); |
@@ -148,17 +144,13 @@ static unsigned int iodev_poll(struct file *f, struct poll_table_struct *p) | |||
148 | return POLLOUT | POLLWRNORM; | 144 | return POLLOUT | POLLWRNORM; |
149 | } | 145 | } |
150 | 146 | ||
151 | 147 | static irqreturn_t iodev_irqhdl(int irq, void *ctxt) | |
152 | |||
153 | |||
154 | static irqreturn_t iodev_irqhdl(int irq, void *ctxt, struct pt_regs *regs) | ||
155 | { | 148 | { |
156 | wake_up(&wq); | 149 | wake_up(&wq); |
150 | |||
157 | return IRQ_HANDLED; | 151 | return IRQ_HANDLED; |
158 | } | 152 | } |
159 | 153 | ||
160 | |||
161 | |||
162 | static int __init iodev_init_module(void) | 154 | static int __init iodev_init_module(void) |
163 | { | 155 | { |
164 | return driver_register(&iodev_driver); | 156 | return driver_register(&iodev_driver); |
diff --git a/arch/mips/basler/excite/excite_irq.c b/arch/mips/basler/excite/excite_irq.c index 511ad8730f54..2e2061a286c5 100644 --- a/arch/mips/basler/excite/excite_irq.c +++ b/arch/mips/basler/excite/excite_irq.c | |||
@@ -56,7 +56,7 @@ void __init arch_init_irq(void) | |||
56 | #endif | 56 | #endif |
57 | } | 57 | } |
58 | 58 | ||
59 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 59 | asmlinkage void plat_irq_dispatch(void) |
60 | { | 60 | { |
61 | const u32 | 61 | const u32 |
62 | interrupts = read_c0_cause() >> 8, | 62 | interrupts = read_c0_cause() >> 8, |
@@ -67,7 +67,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
67 | 67 | ||
68 | /* process timer interrupt */ | 68 | /* process timer interrupt */ |
69 | if (pending & (1 << TIMER_IRQ)) { | 69 | if (pending & (1 << TIMER_IRQ)) { |
70 | do_IRQ(TIMER_IRQ, regs); | 70 | do_IRQ(TIMER_IRQ); |
71 | return; | 71 | return; |
72 | } | 72 | } |
73 | 73 | ||
@@ -80,7 +80,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
80 | #else | 80 | #else |
81 | if (pending & (1 << USB_IRQ)) { | 81 | if (pending & (1 << USB_IRQ)) { |
82 | #endif | 82 | #endif |
83 | do_IRQ(USB_IRQ, regs); | 83 | do_IRQ(USB_IRQ); |
84 | return; | 84 | return; |
85 | } | 85 | } |
86 | 86 | ||
@@ -91,9 +91,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
91 | if ((pending & (1 << TITAN_IRQ)) && msgint) { | 91 | if ((pending & (1 << TITAN_IRQ)) && msgint) { |
92 | ocd_writel(msgint, INTP0Clear0 + (TITAN_MSGINT / 0x20 * 0x10)); | 92 | ocd_writel(msgint, INTP0Clear0 + (TITAN_MSGINT / 0x20 * 0x10)); |
93 | #if defined(CONFIG_KGDB) | 93 | #if defined(CONFIG_KGDB) |
94 | excite_kgdb_inthdl(regs); | 94 | excite_kgdb_inthdl(); |
95 | #endif | 95 | #endif |
96 | do_IRQ(TITAN_IRQ, regs); | 96 | do_IRQ(TITAN_IRQ); |
97 | return; | 97 | return; |
98 | } | 98 | } |
99 | 99 | ||
@@ -102,7 +102,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
102 | msgintmask = ocd_readl(INTP0Mask0 + (FPGA0_MSGINT / 0x20 * 0x10)); | 102 | msgintmask = ocd_readl(INTP0Mask0 + (FPGA0_MSGINT / 0x20 * 0x10)); |
103 | msgint = msgintflags & msgintmask & (0x1 << (FPGA0_MSGINT % 0x20)); | 103 | msgint = msgintflags & msgintmask & (0x1 << (FPGA0_MSGINT % 0x20)); |
104 | if ((pending & (1 << FPGA0_IRQ)) && msgint) { | 104 | if ((pending & (1 << FPGA0_IRQ)) && msgint) { |
105 | do_IRQ(FPGA0_IRQ, regs); | 105 | do_IRQ(FPGA0_IRQ); |
106 | return; | 106 | return; |
107 | } | 107 | } |
108 | 108 | ||
@@ -111,7 +111,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
111 | msgintmask = ocd_readl(INTP0Mask0 + (FPGA1_MSGINT / 0x20 * 0x10)); | 111 | msgintmask = ocd_readl(INTP0Mask0 + (FPGA1_MSGINT / 0x20 * 0x10)); |
112 | msgint = msgintflags & msgintmask & (0x1 << (FPGA1_MSGINT % 0x20)); | 112 | msgint = msgintflags & msgintmask & (0x1 << (FPGA1_MSGINT % 0x20)); |
113 | if ((pending & (1 << FPGA1_IRQ)) && msgint) { | 113 | if ((pending & (1 << FPGA1_IRQ)) && msgint) { |
114 | do_IRQ(FPGA1_IRQ, regs); | 114 | do_IRQ(FPGA1_IRQ); |
115 | return; | 115 | return; |
116 | } | 116 | } |
117 | 117 | ||
@@ -120,10 +120,10 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
120 | msgintmask = ocd_readl(INTP0Mask0 + (PHY_MSGINT / 0x20 * 0x10)); | 120 | msgintmask = ocd_readl(INTP0Mask0 + (PHY_MSGINT / 0x20 * 0x10)); |
121 | msgint = msgintflags & msgintmask & (0x1 << (PHY_MSGINT % 0x20)); | 121 | msgint = msgintflags & msgintmask & (0x1 << (PHY_MSGINT % 0x20)); |
122 | if ((pending & (1 << PHY_IRQ)) && msgint) { | 122 | if ((pending & (1 << PHY_IRQ)) && msgint) { |
123 | do_IRQ(PHY_IRQ, regs); | 123 | do_IRQ(PHY_IRQ); |
124 | return; | 124 | return; |
125 | } | 125 | } |
126 | 126 | ||
127 | /* Process spurious interrupts */ | 127 | /* Process spurious interrupts */ |
128 | spurious_interrupt(regs); | 128 | spurious_interrupt(); |
129 | } | 129 | } |
diff --git a/arch/mips/cobalt/irq.c b/arch/mips/cobalt/irq.c index 0b75f4fb7195..82e569d5b02c 100644 --- a/arch/mips/cobalt/irq.c +++ b/arch/mips/cobalt/irq.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <asm/i8259.h> | 16 | #include <asm/i8259.h> |
17 | #include <asm/irq_cpu.h> | 17 | #include <asm/irq_cpu.h> |
18 | #include <asm/gt64120.h> | 18 | #include <asm/gt64120.h> |
19 | #include <asm/ptrace.h> | ||
20 | 19 | ||
21 | #include <asm/mach-cobalt/cobalt.h> | 20 | #include <asm/mach-cobalt/cobalt.h> |
22 | 21 | ||
@@ -42,7 +41,7 @@ | |||
42 | * 15 - IDE1 | 41 | * 15 - IDE1 |
43 | */ | 42 | */ |
44 | 43 | ||
45 | static inline void galileo_irq(struct pt_regs *regs) | 44 | static inline void galileo_irq(void) |
46 | { | 45 | { |
47 | unsigned int mask, pending, devfn; | 46 | unsigned int mask, pending, devfn; |
48 | 47 | ||
@@ -52,7 +51,7 @@ static inline void galileo_irq(struct pt_regs *regs) | |||
52 | if (pending & GALILEO_INTR_T0EXP) { | 51 | if (pending & GALILEO_INTR_T0EXP) { |
53 | 52 | ||
54 | GALILEO_OUTL(~GALILEO_INTR_T0EXP, GT_INTRCAUSE_OFS); | 53 | GALILEO_OUTL(~GALILEO_INTR_T0EXP, GT_INTRCAUSE_OFS); |
55 | do_IRQ(COBALT_GALILEO_IRQ, regs); | 54 | do_IRQ(COBALT_GALILEO_IRQ); |
56 | 55 | ||
57 | } else if (pending & GALILEO_INTR_RETRY_CTR) { | 56 | } else if (pending & GALILEO_INTR_RETRY_CTR) { |
58 | 57 | ||
@@ -68,44 +67,31 @@ static inline void galileo_irq(struct pt_regs *regs) | |||
68 | } | 67 | } |
69 | } | 68 | } |
70 | 69 | ||
71 | static inline void via_pic_irq(struct pt_regs *regs) | 70 | static inline void via_pic_irq(void) |
72 | { | 71 | { |
73 | int irq; | 72 | int irq; |
74 | 73 | ||
75 | irq = i8259_irq(); | 74 | irq = i8259_irq(); |
76 | if (irq >= 0) | 75 | if (irq >= 0) |
77 | do_IRQ(irq, regs); | 76 | do_IRQ(irq); |
78 | } | 77 | } |
79 | 78 | ||
80 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 79 | asmlinkage void plat_irq_dispatch(void) |
81 | { | 80 | { |
82 | unsigned pending; | 81 | unsigned pending = read_c0_status() & read_c0_cause(); |
83 | 82 | ||
84 | pending = read_c0_status() & read_c0_cause(); | 83 | if (pending & CAUSEF_IP2) /* COBALT_GALILEO_IRQ (18) */ |
85 | 84 | galileo_irq(); | |
86 | if (pending & CAUSEF_IP2) /* COBALT_GALILEO_IRQ (18) */ | 85 | else if (pending & CAUSEF_IP6) /* COBALT_VIA_IRQ (22) */ |
87 | 86 | via_pic_irq(); | |
88 | galileo_irq(regs); | 87 | else if (pending & CAUSEF_IP3) /* COBALT_ETH0_IRQ (19) */ |
89 | 88 | do_IRQ(COBALT_CPU_IRQ + 3); | |
90 | else if (pending & CAUSEF_IP6) /* COBALT_VIA_IRQ (22) */ | 89 | else if (pending & CAUSEF_IP4) /* COBALT_ETH1_IRQ (20) */ |
91 | 90 | do_IRQ(COBALT_CPU_IRQ + 4); | |
92 | via_pic_irq(regs); | 91 | else if (pending & CAUSEF_IP5) /* COBALT_SERIAL_IRQ (21) */ |
93 | 92 | do_IRQ(COBALT_CPU_IRQ + 5); | |
94 | else if (pending & CAUSEF_IP3) /* COBALT_ETH0_IRQ (19) */ | 93 | else if (pending & CAUSEF_IP7) /* IRQ 23 */ |
95 | 94 | do_IRQ(COBALT_CPU_IRQ + 7); | |
96 | do_IRQ(COBALT_CPU_IRQ + 3, regs); | ||
97 | |||
98 | else if (pending & CAUSEF_IP4) /* COBALT_ETH1_IRQ (20) */ | ||
99 | |||
100 | do_IRQ(COBALT_CPU_IRQ + 4, regs); | ||
101 | |||
102 | else if (pending & CAUSEF_IP5) /* COBALT_SERIAL_IRQ (21) */ | ||
103 | |||
104 | do_IRQ(COBALT_CPU_IRQ + 5, regs); | ||
105 | |||
106 | else if (pending & CAUSEF_IP7) /* IRQ 23 */ | ||
107 | |||
108 | do_IRQ(COBALT_CPU_IRQ + 7, regs); | ||
109 | } | 95 | } |
110 | 96 | ||
111 | static struct irqaction irq_via = { | 97 | static struct irqaction irq_via = { |
diff --git a/arch/mips/cobalt/setup.c b/arch/mips/cobalt/setup.c index 0b347cffc768..bf9dc72b9720 100644 --- a/arch/mips/cobalt/setup.c +++ b/arch/mips/cobalt/setup.c | |||
@@ -50,8 +50,8 @@ const char *get_system_type(void) | |||
50 | 50 | ||
51 | void __init plat_timer_setup(struct irqaction *irq) | 51 | void __init plat_timer_setup(struct irqaction *irq) |
52 | { | 52 | { |
53 | /* Load timer value for 1KHz (TCLK is 50MHz) */ | 53 | /* Load timer value for HZ (TCLK is 50MHz) */ |
54 | GALILEO_OUTL(50*1000*1000 / 1000, GT_TC0_OFS); | 54 | GALILEO_OUTL(50*1000*1000 / HZ, GT_TC0_OFS); |
55 | 55 | ||
56 | /* Enable timer */ | 56 | /* Enable timer */ |
57 | GALILEO_OUTL(GALILEO_ENTC0 | GALILEO_SELTC0, GT_TC_CONTROL_OFS); | 57 | GALILEO_OUTL(GALILEO_ENTC0 | GALILEO_SELTC0, GT_TC_CONTROL_OFS); |
diff --git a/arch/mips/configs/jazz_defconfig b/arch/mips/configs/jazz_defconfig new file mode 100644 index 000000000000..382083ebea0a --- /dev/null +++ b/arch/mips/configs/jazz_defconfig | |||
@@ -0,0 +1,1404 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.19-rc1 | ||
4 | # Sun Oct 8 19:03:07 2006 | ||
5 | # | ||
6 | CONFIG_MIPS=y | ||
7 | |||
8 | # | ||
9 | # Machine selection | ||
10 | # | ||
11 | # CONFIG_MIPS_MTX1 is not set | ||
12 | # CONFIG_MIPS_BOSPORUS is not set | ||
13 | # CONFIG_MIPS_PB1000 is not set | ||
14 | # CONFIG_MIPS_PB1100 is not set | ||
15 | # CONFIG_MIPS_PB1500 is not set | ||
16 | # CONFIG_MIPS_PB1550 is not set | ||
17 | # CONFIG_MIPS_PB1200 is not set | ||
18 | # CONFIG_MIPS_DB1000 is not set | ||
19 | # CONFIG_MIPS_DB1100 is not set | ||
20 | # CONFIG_MIPS_DB1500 is not set | ||
21 | # CONFIG_MIPS_DB1550 is not set | ||
22 | # CONFIG_MIPS_DB1200 is not set | ||
23 | # CONFIG_MIPS_MIRAGE is not set | ||
24 | # CONFIG_BASLER_EXCITE is not set | ||
25 | # CONFIG_MIPS_COBALT is not set | ||
26 | # CONFIG_MACH_DECSTATION is not set | ||
27 | # CONFIG_MIPS_EV64120 is not set | ||
28 | CONFIG_MACH_JAZZ=y | ||
29 | # CONFIG_LASAT is not set | ||
30 | # CONFIG_MIPS_ATLAS is not set | ||
31 | # CONFIG_MIPS_MALTA is not set | ||
32 | # CONFIG_MIPS_SEAD is not set | ||
33 | # CONFIG_WR_PPMC is not set | ||
34 | # CONFIG_MIPS_SIM is not set | ||
35 | # CONFIG_MOMENCO_JAGUAR_ATX is not set | ||
36 | # CONFIG_MOMENCO_OCELOT is not set | ||
37 | # CONFIG_MOMENCO_OCELOT_3 is not set | ||
38 | # CONFIG_MOMENCO_OCELOT_C is not set | ||
39 | # CONFIG_MOMENCO_OCELOT_G is not set | ||
40 | # CONFIG_MIPS_XXS1500 is not set | ||
41 | # CONFIG_PNX8550_V2PCI is not set | ||
42 | # CONFIG_PNX8550_JBS is not set | ||
43 | # CONFIG_DDB5477 is not set | ||
44 | # CONFIG_MACH_VR41XX is not set | ||
45 | # CONFIG_PMC_YOSEMITE is not set | ||
46 | # CONFIG_QEMU is not set | ||
47 | # CONFIG_MARKEINS is not set | ||
48 | # CONFIG_SGI_IP22 is not set | ||
49 | # CONFIG_SGI_IP27 is not set | ||
50 | # CONFIG_SGI_IP32 is not set | ||
51 | # CONFIG_SIBYTE_BIGSUR is not set | ||
52 | # CONFIG_SIBYTE_SWARM is not set | ||
53 | # CONFIG_SIBYTE_SENTOSA is not set | ||
54 | # CONFIG_SIBYTE_RHONE is not set | ||
55 | # CONFIG_SIBYTE_CARMEL is not set | ||
56 | # CONFIG_SIBYTE_PTSWARM is not set | ||
57 | # CONFIG_SIBYTE_LITTLESUR is not set | ||
58 | # CONFIG_SIBYTE_CRHINE is not set | ||
59 | # CONFIG_SIBYTE_CRHONE is not set | ||
60 | # CONFIG_SNI_RM200_PCI is not set | ||
61 | # CONFIG_TOSHIBA_JMR3927 is not set | ||
62 | # CONFIG_TOSHIBA_RBTX4927 is not set | ||
63 | # CONFIG_TOSHIBA_RBTX4938 is not set | ||
64 | # CONFIG_ACER_PICA_61 is not set | ||
65 | # CONFIG_MIPS_MAGNUM_4000 is not set | ||
66 | CONFIG_OLIVETTI_M700=y | ||
67 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
68 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
69 | CONFIG_GENERIC_HWEIGHT=y | ||
70 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
71 | CONFIG_GENERIC_TIME=y | ||
72 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
73 | CONFIG_ARC=y | ||
74 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
75 | CONFIG_DMA_NONCOHERENT=y | ||
76 | CONFIG_DMA_NEED_PCI_MAP_STATE=y | ||
77 | CONFIG_GENERIC_ISA_DMA=y | ||
78 | CONFIG_I8259=y | ||
79 | # CONFIG_CPU_BIG_ENDIAN is not set | ||
80 | CONFIG_CPU_LITTLE_ENDIAN=y | ||
81 | CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y | ||
82 | CONFIG_ARC32=y | ||
83 | CONFIG_MIPS_L1_CACHE_SHIFT=5 | ||
84 | CONFIG_ARC_MEMORY=y | ||
85 | CONFIG_ARC_PROMLIB=y | ||
86 | |||
87 | # | ||
88 | # CPU selection | ||
89 | # | ||
90 | # CONFIG_CPU_MIPS32_R1 is not set | ||
91 | # CONFIG_CPU_MIPS32_R2 is not set | ||
92 | # CONFIG_CPU_MIPS64_R1 is not set | ||
93 | # CONFIG_CPU_MIPS64_R2 is not set | ||
94 | # CONFIG_CPU_R3000 is not set | ||
95 | # CONFIG_CPU_TX39XX is not set | ||
96 | # CONFIG_CPU_VR41XX is not set | ||
97 | # CONFIG_CPU_R4300 is not set | ||
98 | CONFIG_CPU_R4X00=y | ||
99 | # CONFIG_CPU_TX49XX is not set | ||
100 | # CONFIG_CPU_R5000 is not set | ||
101 | # CONFIG_CPU_R5432 is not set | ||
102 | # CONFIG_CPU_R6000 is not set | ||
103 | # CONFIG_CPU_NEVADA is not set | ||
104 | # CONFIG_CPU_R8000 is not set | ||
105 | # CONFIG_CPU_R10000 is not set | ||
106 | # CONFIG_CPU_RM7000 is not set | ||
107 | # CONFIG_CPU_RM9000 is not set | ||
108 | # CONFIG_CPU_SB1 is not set | ||
109 | CONFIG_SYS_HAS_CPU_R4X00=y | ||
110 | CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y | ||
111 | CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y | ||
112 | CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y | ||
113 | CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y | ||
114 | |||
115 | # | ||
116 | # Kernel type | ||
117 | # | ||
118 | CONFIG_32BIT=y | ||
119 | # CONFIG_64BIT is not set | ||
120 | CONFIG_PAGE_SIZE_4KB=y | ||
121 | # CONFIG_PAGE_SIZE_8KB is not set | ||
122 | # CONFIG_PAGE_SIZE_16KB is not set | ||
123 | # CONFIG_PAGE_SIZE_64KB is not set | ||
124 | CONFIG_MIPS_MT_DISABLED=y | ||
125 | # CONFIG_MIPS_MT_SMP is not set | ||
126 | # CONFIG_MIPS_MT_SMTC is not set | ||
127 | # CONFIG_MIPS_VPE_LOADER is not set | ||
128 | # CONFIG_64BIT_PHYS_ADDR is not set | ||
129 | CONFIG_CPU_HAS_LLSC=y | ||
130 | CONFIG_CPU_HAS_SYNC=y | ||
131 | CONFIG_GENERIC_HARDIRQS=y | ||
132 | CONFIG_GENERIC_IRQ_PROBE=y | ||
133 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
134 | CONFIG_SELECT_MEMORY_MODEL=y | ||
135 | CONFIG_FLATMEM_MANUAL=y | ||
136 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
137 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
138 | CONFIG_FLATMEM=y | ||
139 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
140 | # CONFIG_SPARSEMEM_STATIC is not set | ||
141 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
142 | # CONFIG_RESOURCES_64BIT is not set | ||
143 | # CONFIG_HZ_48 is not set | ||
144 | CONFIG_HZ_100=y | ||
145 | # CONFIG_HZ_128 is not set | ||
146 | # CONFIG_HZ_250 is not set | ||
147 | # CONFIG_HZ_256 is not set | ||
148 | # CONFIG_HZ_1000 is not set | ||
149 | # CONFIG_HZ_1024 is not set | ||
150 | CONFIG_SYS_SUPPORTS_100HZ=y | ||
151 | CONFIG_HZ=100 | ||
152 | # CONFIG_PREEMPT_NONE is not set | ||
153 | CONFIG_PREEMPT_VOLUNTARY=y | ||
154 | # CONFIG_PREEMPT is not set | ||
155 | CONFIG_LOCKDEP_SUPPORT=y | ||
156 | CONFIG_STACKTRACE_SUPPORT=y | ||
157 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
158 | |||
159 | # | ||
160 | # Code maturity level options | ||
161 | # | ||
162 | CONFIG_EXPERIMENTAL=y | ||
163 | CONFIG_BROKEN_ON_SMP=y | ||
164 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
165 | |||
166 | # | ||
167 | # General setup | ||
168 | # | ||
169 | CONFIG_LOCALVERSION="" | ||
170 | CONFIG_LOCALVERSION_AUTO=y | ||
171 | CONFIG_SWAP=y | ||
172 | CONFIG_SYSVIPC=y | ||
173 | # CONFIG_IPC_NS is not set | ||
174 | CONFIG_POSIX_MQUEUE=y | ||
175 | CONFIG_BSD_PROCESS_ACCT=y | ||
176 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
177 | # CONFIG_TASKSTATS is not set | ||
178 | # CONFIG_UTS_NS is not set | ||
179 | # CONFIG_AUDIT is not set | ||
180 | CONFIG_IKCONFIG=y | ||
181 | CONFIG_IKCONFIG_PROC=y | ||
182 | CONFIG_RELAY=y | ||
183 | CONFIG_INITRAMFS_SOURCE="" | ||
184 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
185 | CONFIG_SYSCTL=y | ||
186 | CONFIG_EMBEDDED=y | ||
187 | # CONFIG_SYSCTL_SYSCALL is not set | ||
188 | CONFIG_KALLSYMS=y | ||
189 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
190 | CONFIG_HOTPLUG=y | ||
191 | CONFIG_PRINTK=y | ||
192 | CONFIG_BUG=y | ||
193 | CONFIG_ELF_CORE=y | ||
194 | CONFIG_BASE_FULL=y | ||
195 | CONFIG_FUTEX=y | ||
196 | CONFIG_EPOLL=y | ||
197 | CONFIG_SHMEM=y | ||
198 | CONFIG_SLAB=y | ||
199 | CONFIG_VM_EVENT_COUNTERS=y | ||
200 | CONFIG_RT_MUTEXES=y | ||
201 | # CONFIG_TINY_SHMEM is not set | ||
202 | CONFIG_BASE_SMALL=0 | ||
203 | # CONFIG_SLOB is not set | ||
204 | |||
205 | # | ||
206 | # Loadable module support | ||
207 | # | ||
208 | CONFIG_MODULES=y | ||
209 | CONFIG_MODULE_UNLOAD=y | ||
210 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
211 | CONFIG_MODVERSIONS=y | ||
212 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
213 | CONFIG_KMOD=y | ||
214 | |||
215 | # | ||
216 | # Block layer | ||
217 | # | ||
218 | CONFIG_BLOCK=y | ||
219 | # CONFIG_LBD is not set | ||
220 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
221 | # CONFIG_LSF is not set | ||
222 | |||
223 | # | ||
224 | # IO Schedulers | ||
225 | # | ||
226 | CONFIG_IOSCHED_NOOP=y | ||
227 | CONFIG_IOSCHED_AS=y | ||
228 | CONFIG_IOSCHED_DEADLINE=y | ||
229 | CONFIG_IOSCHED_CFQ=y | ||
230 | CONFIG_DEFAULT_AS=y | ||
231 | # CONFIG_DEFAULT_DEADLINE is not set | ||
232 | # CONFIG_DEFAULT_CFQ is not set | ||
233 | # CONFIG_DEFAULT_NOOP is not set | ||
234 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
235 | |||
236 | # | ||
237 | # Bus options (PCI, PCMCIA, EISA, ISA, TC) | ||
238 | # | ||
239 | CONFIG_ISA=y | ||
240 | CONFIG_MMU=y | ||
241 | CONFIG_I8253=y | ||
242 | |||
243 | # | ||
244 | # PCCARD (PCMCIA/CardBus) support | ||
245 | # | ||
246 | # CONFIG_PCCARD is not set | ||
247 | |||
248 | # | ||
249 | # PCI Hotplug Support | ||
250 | # | ||
251 | |||
252 | # | ||
253 | # Executable file formats | ||
254 | # | ||
255 | CONFIG_BINFMT_ELF=y | ||
256 | CONFIG_BINFMT_MISC=m | ||
257 | CONFIG_TRAD_SIGNALS=y | ||
258 | |||
259 | # | ||
260 | # Networking | ||
261 | # | ||
262 | CONFIG_NET=y | ||
263 | |||
264 | # | ||
265 | # Networking options | ||
266 | # | ||
267 | # CONFIG_NETDEBUG is not set | ||
268 | CONFIG_PACKET=m | ||
269 | CONFIG_PACKET_MMAP=y | ||
270 | CONFIG_UNIX=y | ||
271 | CONFIG_XFRM=y | ||
272 | # CONFIG_XFRM_USER is not set | ||
273 | # CONFIG_XFRM_SUB_POLICY is not set | ||
274 | CONFIG_NET_KEY=m | ||
275 | CONFIG_INET=y | ||
276 | CONFIG_IP_MULTICAST=y | ||
277 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
278 | CONFIG_IP_FIB_HASH=y | ||
279 | # CONFIG_IP_PNP is not set | ||
280 | CONFIG_NET_IPIP=m | ||
281 | CONFIG_NET_IPGRE=m | ||
282 | CONFIG_NET_IPGRE_BROADCAST=y | ||
283 | CONFIG_IP_MROUTE=y | ||
284 | CONFIG_IP_PIMSM_V1=y | ||
285 | CONFIG_IP_PIMSM_V2=y | ||
286 | # CONFIG_ARPD is not set | ||
287 | # CONFIG_SYN_COOKIES is not set | ||
288 | # CONFIG_INET_AH is not set | ||
289 | # CONFIG_INET_ESP is not set | ||
290 | # CONFIG_INET_IPCOMP is not set | ||
291 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
292 | CONFIG_INET_TUNNEL=m | ||
293 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | ||
294 | CONFIG_INET_XFRM_MODE_TUNNEL=m | ||
295 | CONFIG_INET_XFRM_MODE_BEET=y | ||
296 | CONFIG_INET_DIAG=y | ||
297 | CONFIG_INET_TCP_DIAG=y | ||
298 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
299 | CONFIG_TCP_CONG_CUBIC=y | ||
300 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
301 | |||
302 | # | ||
303 | # IP: Virtual Server Configuration | ||
304 | # | ||
305 | # CONFIG_IP_VS is not set | ||
306 | CONFIG_IPV6=m | ||
307 | CONFIG_IPV6_PRIVACY=y | ||
308 | CONFIG_IPV6_ROUTER_PREF=y | ||
309 | CONFIG_IPV6_ROUTE_INFO=y | ||
310 | CONFIG_INET6_AH=m | ||
311 | CONFIG_INET6_ESP=m | ||
312 | CONFIG_INET6_IPCOMP=m | ||
313 | # CONFIG_IPV6_MIP6 is not set | ||
314 | CONFIG_INET6_XFRM_TUNNEL=m | ||
315 | CONFIG_INET6_TUNNEL=m | ||
316 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
317 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
318 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
319 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
320 | CONFIG_IPV6_TUNNEL=m | ||
321 | # CONFIG_IPV6_SUBTREES is not set | ||
322 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
323 | CONFIG_NETWORK_SECMARK=y | ||
324 | CONFIG_NETFILTER=y | ||
325 | # CONFIG_NETFILTER_DEBUG is not set | ||
326 | CONFIG_BRIDGE_NETFILTER=y | ||
327 | |||
328 | # | ||
329 | # Core Netfilter Configuration | ||
330 | # | ||
331 | CONFIG_NETFILTER_NETLINK=m | ||
332 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
333 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
334 | CONFIG_NETFILTER_XTABLES=m | ||
335 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
336 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
337 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | ||
338 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
339 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
340 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
341 | CONFIG_NETFILTER_XT_TARGET_SECMARK=m | ||
342 | # CONFIG_NETFILTER_XT_TARGET_CONNSECMARK is not set | ||
343 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
344 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
345 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
346 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
347 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set | ||
348 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
349 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
350 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
351 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
352 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
353 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
354 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
355 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
356 | CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m | ||
357 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
358 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
359 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
360 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
361 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
362 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
363 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
364 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
365 | |||
366 | # | ||
367 | # IP: Netfilter Configuration | ||
368 | # | ||
369 | CONFIG_IP_NF_CONNTRACK=m | ||
370 | # CONFIG_IP_NF_CT_ACCT is not set | ||
371 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
372 | CONFIG_IP_NF_CONNTRACK_SECMARK=y | ||
373 | CONFIG_IP_NF_CONNTRACK_EVENTS=y | ||
374 | CONFIG_IP_NF_CONNTRACK_NETLINK=m | ||
375 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
376 | CONFIG_IP_NF_FTP=m | ||
377 | CONFIG_IP_NF_IRC=m | ||
378 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
379 | CONFIG_IP_NF_TFTP=m | ||
380 | CONFIG_IP_NF_AMANDA=m | ||
381 | CONFIG_IP_NF_PPTP=m | ||
382 | CONFIG_IP_NF_H323=m | ||
383 | CONFIG_IP_NF_SIP=m | ||
384 | CONFIG_IP_NF_QUEUE=m | ||
385 | CONFIG_IP_NF_IPTABLES=m | ||
386 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
387 | CONFIG_IP_NF_MATCH_TOS=m | ||
388 | CONFIG_IP_NF_MATCH_RECENT=m | ||
389 | CONFIG_IP_NF_MATCH_ECN=m | ||
390 | CONFIG_IP_NF_MATCH_AH=m | ||
391 | CONFIG_IP_NF_MATCH_TTL=m | ||
392 | CONFIG_IP_NF_MATCH_OWNER=m | ||
393 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
394 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
395 | CONFIG_IP_NF_FILTER=m | ||
396 | CONFIG_IP_NF_TARGET_REJECT=m | ||
397 | CONFIG_IP_NF_TARGET_LOG=m | ||
398 | CONFIG_IP_NF_TARGET_ULOG=m | ||
399 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
400 | CONFIG_IP_NF_NAT=m | ||
401 | CONFIG_IP_NF_NAT_NEEDED=y | ||
402 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
403 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
404 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
405 | CONFIG_IP_NF_TARGET_SAME=m | ||
406 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
407 | CONFIG_IP_NF_NAT_IRC=m | ||
408 | CONFIG_IP_NF_NAT_FTP=m | ||
409 | CONFIG_IP_NF_NAT_TFTP=m | ||
410 | CONFIG_IP_NF_NAT_AMANDA=m | ||
411 | CONFIG_IP_NF_NAT_PPTP=m | ||
412 | CONFIG_IP_NF_NAT_H323=m | ||
413 | CONFIG_IP_NF_NAT_SIP=m | ||
414 | CONFIG_IP_NF_MANGLE=m | ||
415 | CONFIG_IP_NF_TARGET_TOS=m | ||
416 | CONFIG_IP_NF_TARGET_ECN=m | ||
417 | CONFIG_IP_NF_TARGET_TTL=m | ||
418 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
419 | CONFIG_IP_NF_RAW=m | ||
420 | CONFIG_IP_NF_ARPTABLES=m | ||
421 | CONFIG_IP_NF_ARPFILTER=m | ||
422 | CONFIG_IP_NF_ARP_MANGLE=m | ||
423 | |||
424 | # | ||
425 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
426 | # | ||
427 | CONFIG_IP6_NF_QUEUE=m | ||
428 | CONFIG_IP6_NF_IPTABLES=m | ||
429 | CONFIG_IP6_NF_MATCH_RT=m | ||
430 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
431 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
432 | CONFIG_IP6_NF_MATCH_HL=m | ||
433 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
434 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
435 | CONFIG_IP6_NF_MATCH_AH=m | ||
436 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
437 | CONFIG_IP6_NF_FILTER=m | ||
438 | CONFIG_IP6_NF_TARGET_LOG=m | ||
439 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
440 | CONFIG_IP6_NF_MANGLE=m | ||
441 | CONFIG_IP6_NF_TARGET_HL=m | ||
442 | CONFIG_IP6_NF_RAW=m | ||
443 | |||
444 | # | ||
445 | # DECnet: Netfilter Configuration | ||
446 | # | ||
447 | CONFIG_DECNET_NF_GRABULATOR=m | ||
448 | |||
449 | # | ||
450 | # Bridge: Netfilter Configuration | ||
451 | # | ||
452 | CONFIG_BRIDGE_NF_EBTABLES=m | ||
453 | CONFIG_BRIDGE_EBT_BROUTE=m | ||
454 | CONFIG_BRIDGE_EBT_T_FILTER=m | ||
455 | CONFIG_BRIDGE_EBT_T_NAT=m | ||
456 | CONFIG_BRIDGE_EBT_802_3=m | ||
457 | CONFIG_BRIDGE_EBT_AMONG=m | ||
458 | CONFIG_BRIDGE_EBT_ARP=m | ||
459 | CONFIG_BRIDGE_EBT_IP=m | ||
460 | CONFIG_BRIDGE_EBT_LIMIT=m | ||
461 | CONFIG_BRIDGE_EBT_MARK=m | ||
462 | CONFIG_BRIDGE_EBT_PKTTYPE=m | ||
463 | CONFIG_BRIDGE_EBT_STP=m | ||
464 | CONFIG_BRIDGE_EBT_VLAN=m | ||
465 | CONFIG_BRIDGE_EBT_ARPREPLY=m | ||
466 | CONFIG_BRIDGE_EBT_DNAT=m | ||
467 | CONFIG_BRIDGE_EBT_MARK_T=m | ||
468 | CONFIG_BRIDGE_EBT_REDIRECT=m | ||
469 | CONFIG_BRIDGE_EBT_SNAT=m | ||
470 | CONFIG_BRIDGE_EBT_LOG=m | ||
471 | CONFIG_BRIDGE_EBT_ULOG=m | ||
472 | |||
473 | # | ||
474 | # DCCP Configuration (EXPERIMENTAL) | ||
475 | # | ||
476 | # CONFIG_IP_DCCP is not set | ||
477 | |||
478 | # | ||
479 | # SCTP Configuration (EXPERIMENTAL) | ||
480 | # | ||
481 | # CONFIG_IP_SCTP is not set | ||
482 | |||
483 | # | ||
484 | # TIPC Configuration (EXPERIMENTAL) | ||
485 | # | ||
486 | # CONFIG_TIPC is not set | ||
487 | # CONFIG_ATM is not set | ||
488 | CONFIG_BRIDGE=m | ||
489 | # CONFIG_VLAN_8021Q is not set | ||
490 | CONFIG_DECNET=m | ||
491 | # CONFIG_DECNET_ROUTER is not set | ||
492 | CONFIG_LLC=m | ||
493 | # CONFIG_LLC2 is not set | ||
494 | # CONFIG_IPX is not set | ||
495 | # CONFIG_ATALK is not set | ||
496 | # CONFIG_X25 is not set | ||
497 | # CONFIG_LAPB is not set | ||
498 | # CONFIG_ECONET is not set | ||
499 | # CONFIG_WAN_ROUTER is not set | ||
500 | |||
501 | # | ||
502 | # QoS and/or fair queueing | ||
503 | # | ||
504 | CONFIG_NET_SCHED=y | ||
505 | CONFIG_NET_SCH_CLK_JIFFIES=y | ||
506 | # CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set | ||
507 | # CONFIG_NET_SCH_CLK_CPU is not set | ||
508 | |||
509 | # | ||
510 | # Queueing/Scheduling | ||
511 | # | ||
512 | CONFIG_NET_SCH_CBQ=m | ||
513 | CONFIG_NET_SCH_HTB=m | ||
514 | CONFIG_NET_SCH_HFSC=m | ||
515 | CONFIG_NET_SCH_PRIO=m | ||
516 | CONFIG_NET_SCH_RED=m | ||
517 | CONFIG_NET_SCH_SFQ=m | ||
518 | CONFIG_NET_SCH_TEQL=m | ||
519 | CONFIG_NET_SCH_TBF=m | ||
520 | CONFIG_NET_SCH_GRED=m | ||
521 | CONFIG_NET_SCH_DSMARK=m | ||
522 | CONFIG_NET_SCH_NETEM=m | ||
523 | CONFIG_NET_SCH_INGRESS=m | ||
524 | |||
525 | # | ||
526 | # Classification | ||
527 | # | ||
528 | CONFIG_NET_CLS=y | ||
529 | CONFIG_NET_CLS_BASIC=m | ||
530 | CONFIG_NET_CLS_TCINDEX=m | ||
531 | CONFIG_NET_CLS_ROUTE4=m | ||
532 | CONFIG_NET_CLS_ROUTE=y | ||
533 | CONFIG_NET_CLS_FW=m | ||
534 | CONFIG_NET_CLS_U32=m | ||
535 | # CONFIG_CLS_U32_PERF is not set | ||
536 | # CONFIG_CLS_U32_MARK is not set | ||
537 | CONFIG_NET_CLS_RSVP=m | ||
538 | CONFIG_NET_CLS_RSVP6=m | ||
539 | # CONFIG_NET_EMATCH is not set | ||
540 | # CONFIG_NET_CLS_ACT is not set | ||
541 | CONFIG_NET_CLS_POLICE=y | ||
542 | # CONFIG_NET_CLS_IND is not set | ||
543 | CONFIG_NET_ESTIMATOR=y | ||
544 | |||
545 | # | ||
546 | # Network testing | ||
547 | # | ||
548 | # CONFIG_NET_PKTGEN is not set | ||
549 | CONFIG_HAMRADIO=y | ||
550 | |||
551 | # | ||
552 | # Packet Radio protocols | ||
553 | # | ||
554 | CONFIG_AX25=m | ||
555 | CONFIG_AX25_DAMA_SLAVE=y | ||
556 | CONFIG_NETROM=m | ||
557 | CONFIG_ROSE=m | ||
558 | |||
559 | # | ||
560 | # AX.25 network device drivers | ||
561 | # | ||
562 | CONFIG_MKISS=m | ||
563 | CONFIG_6PACK=m | ||
564 | CONFIG_BPQETHER=m | ||
565 | # CONFIG_BAYCOM_SER_FDX is not set | ||
566 | # CONFIG_BAYCOM_SER_HDX is not set | ||
567 | # CONFIG_BAYCOM_PAR is not set | ||
568 | # CONFIG_BAYCOM_EPP is not set | ||
569 | # CONFIG_YAM is not set | ||
570 | # CONFIG_IRDA is not set | ||
571 | # CONFIG_BT is not set | ||
572 | CONFIG_IEEE80211=m | ||
573 | # CONFIG_IEEE80211_DEBUG is not set | ||
574 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
575 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
576 | CONFIG_IEEE80211_SOFTMAC=m | ||
577 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
578 | CONFIG_WIRELESS_EXT=y | ||
579 | |||
580 | # | ||
581 | # Device Drivers | ||
582 | # | ||
583 | |||
584 | # | ||
585 | # Generic Driver Options | ||
586 | # | ||
587 | CONFIG_STANDALONE=y | ||
588 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
589 | CONFIG_FW_LOADER=y | ||
590 | # CONFIG_SYS_HYPERVISOR is not set | ||
591 | |||
592 | # | ||
593 | # Connector - unified userspace <-> kernelspace linker | ||
594 | # | ||
595 | CONFIG_CONNECTOR=m | ||
596 | |||
597 | # | ||
598 | # Memory Technology Devices (MTD) | ||
599 | # | ||
600 | # CONFIG_MTD is not set | ||
601 | |||
602 | # | ||
603 | # Parallel port support | ||
604 | # | ||
605 | CONFIG_PARPORT=m | ||
606 | CONFIG_PARPORT_PC=m | ||
607 | # CONFIG_PARPORT_PC_FIFO is not set | ||
608 | # CONFIG_PARPORT_PC_SUPERIO is not set | ||
609 | # CONFIG_PARPORT_GSC is not set | ||
610 | # CONFIG_PARPORT_AX88796 is not set | ||
611 | CONFIG_PARPORT_1284=y | ||
612 | |||
613 | # | ||
614 | # Plug and Play support | ||
615 | # | ||
616 | # CONFIG_PNP is not set | ||
617 | |||
618 | # | ||
619 | # Block devices | ||
620 | # | ||
621 | CONFIG_BLK_DEV_FD=m | ||
622 | CONFIG_PARIDE=m | ||
623 | CONFIG_PARIDE_PARPORT=m | ||
624 | |||
625 | # | ||
626 | # Parallel IDE high-level drivers | ||
627 | # | ||
628 | CONFIG_PARIDE_PD=m | ||
629 | CONFIG_PARIDE_PCD=m | ||
630 | CONFIG_PARIDE_PF=m | ||
631 | CONFIG_PARIDE_PT=m | ||
632 | CONFIG_PARIDE_PG=m | ||
633 | |||
634 | # | ||
635 | # Parallel IDE protocol modules | ||
636 | # | ||
637 | CONFIG_PARIDE_ATEN=m | ||
638 | CONFIG_PARIDE_BPCK=m | ||
639 | CONFIG_PARIDE_BPCK6=m | ||
640 | CONFIG_PARIDE_COMM=m | ||
641 | CONFIG_PARIDE_DSTR=m | ||
642 | CONFIG_PARIDE_FIT2=m | ||
643 | CONFIG_PARIDE_FIT3=m | ||
644 | CONFIG_PARIDE_EPAT=m | ||
645 | # CONFIG_PARIDE_EPATC8 is not set | ||
646 | CONFIG_PARIDE_EPIA=m | ||
647 | CONFIG_PARIDE_FRIQ=m | ||
648 | CONFIG_PARIDE_FRPW=m | ||
649 | CONFIG_PARIDE_KBIC=m | ||
650 | CONFIG_PARIDE_KTTI=m | ||
651 | CONFIG_PARIDE_ON20=m | ||
652 | CONFIG_PARIDE_ON26=m | ||
653 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
654 | CONFIG_BLK_DEV_LOOP=m | ||
655 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
656 | CONFIG_BLK_DEV_NBD=m | ||
657 | CONFIG_BLK_DEV_RAM=m | ||
658 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
659 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
660 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
661 | # CONFIG_BLK_DEV_INITRD is not set | ||
662 | CONFIG_CDROM_PKTCDVD=m | ||
663 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
664 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
665 | CONFIG_ATA_OVER_ETH=m | ||
666 | |||
667 | # | ||
668 | # ATA/ATAPI/MFM/RLL support | ||
669 | # | ||
670 | # CONFIG_IDE is not set | ||
671 | |||
672 | # | ||
673 | # SCSI device support | ||
674 | # | ||
675 | CONFIG_RAID_ATTRS=m | ||
676 | CONFIG_SCSI=y | ||
677 | CONFIG_SCSI_NETLINK=y | ||
678 | CONFIG_SCSI_PROC_FS=y | ||
679 | |||
680 | # | ||
681 | # SCSI support type (disk, tape, CD-ROM) | ||
682 | # | ||
683 | CONFIG_BLK_DEV_SD=y | ||
684 | CONFIG_CHR_DEV_ST=m | ||
685 | # CONFIG_CHR_DEV_OSST is not set | ||
686 | CONFIG_BLK_DEV_SR=m | ||
687 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
688 | # CONFIG_CHR_DEV_SG is not set | ||
689 | # CONFIG_CHR_DEV_SCH is not set | ||
690 | |||
691 | # | ||
692 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
693 | # | ||
694 | # CONFIG_SCSI_MULTI_LUN is not set | ||
695 | CONFIG_SCSI_CONSTANTS=y | ||
696 | # CONFIG_SCSI_LOGGING is not set | ||
697 | |||
698 | # | ||
699 | # SCSI Transports | ||
700 | # | ||
701 | CONFIG_SCSI_SPI_ATTRS=y | ||
702 | CONFIG_SCSI_FC_ATTRS=y | ||
703 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
704 | CONFIG_SCSI_SAS_ATTRS=m | ||
705 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
706 | |||
707 | # | ||
708 | # SCSI low-level drivers | ||
709 | # | ||
710 | CONFIG_ISCSI_TCP=m | ||
711 | # CONFIG_SCSI_AHA152X is not set | ||
712 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
713 | # CONFIG_SCSI_IN2000 is not set | ||
714 | # CONFIG_SCSI_DTC3280 is not set | ||
715 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
716 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | ||
717 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | ||
718 | CONFIG_SCSI_PPA=m | ||
719 | CONFIG_SCSI_IMM=m | ||
720 | # CONFIG_SCSI_IZIP_EPP16 is not set | ||
721 | # CONFIG_SCSI_IZIP_SLOW_CTR is not set | ||
722 | # CONFIG_SCSI_NCR53C406A is not set | ||
723 | # CONFIG_SCSI_PAS16 is not set | ||
724 | # CONFIG_SCSI_PSI240I is not set | ||
725 | # CONFIG_SCSI_QLOGIC_FAS is not set | ||
726 | # CONFIG_SCSI_SYM53C416 is not set | ||
727 | # CONFIG_SCSI_T128 is not set | ||
728 | # CONFIG_SCSI_DEBUG is not set | ||
729 | CONFIG_JAZZ_ESP=y | ||
730 | |||
731 | # | ||
732 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
733 | # | ||
734 | # CONFIG_ATA is not set | ||
735 | |||
736 | # | ||
737 | # Old CD-ROM drivers (not SCSI, not IDE) | ||
738 | # | ||
739 | # CONFIG_CD_NO_IDESCSI is not set | ||
740 | |||
741 | # | ||
742 | # Multi-device support (RAID and LVM) | ||
743 | # | ||
744 | CONFIG_MD=y | ||
745 | CONFIG_BLK_DEV_MD=m | ||
746 | CONFIG_MD_LINEAR=m | ||
747 | CONFIG_MD_RAID0=m | ||
748 | CONFIG_MD_RAID1=m | ||
749 | CONFIG_MD_RAID10=m | ||
750 | CONFIG_MD_RAID456=m | ||
751 | CONFIG_MD_RAID5_RESHAPE=y | ||
752 | CONFIG_MD_MULTIPATH=m | ||
753 | CONFIG_MD_FAULTY=m | ||
754 | CONFIG_BLK_DEV_DM=m | ||
755 | # CONFIG_DM_DEBUG is not set | ||
756 | # CONFIG_DM_CRYPT is not set | ||
757 | CONFIG_DM_SNAPSHOT=m | ||
758 | CONFIG_DM_MIRROR=m | ||
759 | CONFIG_DM_ZERO=m | ||
760 | CONFIG_DM_MULTIPATH=m | ||
761 | CONFIG_DM_MULTIPATH_EMC=m | ||
762 | |||
763 | # | ||
764 | # Fusion MPT device support | ||
765 | # | ||
766 | # CONFIG_FUSION is not set | ||
767 | |||
768 | # | ||
769 | # IEEE 1394 (FireWire) support | ||
770 | # | ||
771 | |||
772 | # | ||
773 | # I2O device support | ||
774 | # | ||
775 | |||
776 | # | ||
777 | # Network device support | ||
778 | # | ||
779 | CONFIG_NETDEVICES=y | ||
780 | CONFIG_DUMMY=m | ||
781 | CONFIG_BONDING=m | ||
782 | CONFIG_EQUALIZER=m | ||
783 | CONFIG_TUN=m | ||
784 | |||
785 | # | ||
786 | # ARCnet devices | ||
787 | # | ||
788 | # CONFIG_ARCNET is not set | ||
789 | |||
790 | # | ||
791 | # PHY device support | ||
792 | # | ||
793 | CONFIG_PHYLIB=m | ||
794 | |||
795 | # | ||
796 | # MII PHY device drivers | ||
797 | # | ||
798 | CONFIG_MARVELL_PHY=m | ||
799 | CONFIG_DAVICOM_PHY=m | ||
800 | CONFIG_QSEMI_PHY=m | ||
801 | CONFIG_LXT_PHY=m | ||
802 | CONFIG_CICADA_PHY=m | ||
803 | CONFIG_VITESSE_PHY=m | ||
804 | CONFIG_SMSC_PHY=m | ||
805 | # CONFIG_FIXED_PHY is not set | ||
806 | |||
807 | # | ||
808 | # Ethernet (10 or 100Mbit) | ||
809 | # | ||
810 | CONFIG_NET_ETHERNET=y | ||
811 | CONFIG_MII=y | ||
812 | CONFIG_MIPS_JAZZ_SONIC=y | ||
813 | # CONFIG_NET_VENDOR_3COM is not set | ||
814 | # CONFIG_NET_VENDOR_SMC is not set | ||
815 | # CONFIG_DM9000 is not set | ||
816 | # CONFIG_NET_VENDOR_RACAL is not set | ||
817 | # CONFIG_AT1700 is not set | ||
818 | # CONFIG_DEPCA is not set | ||
819 | # CONFIG_HP100 is not set | ||
820 | CONFIG_NET_ISA=y | ||
821 | # CONFIG_E2100 is not set | ||
822 | # CONFIG_EWRK3 is not set | ||
823 | # CONFIG_EEXPRESS is not set | ||
824 | # CONFIG_EEXPRESS_PRO is not set | ||
825 | # CONFIG_HPLAN_PLUS is not set | ||
826 | # CONFIG_HPLAN is not set | ||
827 | # CONFIG_LP486E is not set | ||
828 | # CONFIG_ETH16I is not set | ||
829 | CONFIG_NE2000=m | ||
830 | # CONFIG_SEEQ8005 is not set | ||
831 | CONFIG_NET_PCI=y | ||
832 | # CONFIG_AC3200 is not set | ||
833 | # CONFIG_APRICOT is not set | ||
834 | # CONFIG_CS89x0 is not set | ||
835 | # CONFIG_LAN_SAA9730 is not set | ||
836 | # CONFIG_NET_POCKET is not set | ||
837 | |||
838 | # | ||
839 | # Ethernet (1000 Mbit) | ||
840 | # | ||
841 | |||
842 | # | ||
843 | # Ethernet (10000 Mbit) | ||
844 | # | ||
845 | |||
846 | # | ||
847 | # Token Ring devices | ||
848 | # | ||
849 | # CONFIG_TR is not set | ||
850 | |||
851 | # | ||
852 | # Wireless LAN (non-hamradio) | ||
853 | # | ||
854 | # CONFIG_NET_RADIO is not set | ||
855 | |||
856 | # | ||
857 | # Wan interfaces | ||
858 | # | ||
859 | # CONFIG_WAN is not set | ||
860 | CONFIG_PLIP=m | ||
861 | # CONFIG_PPP is not set | ||
862 | # CONFIG_SLIP is not set | ||
863 | # CONFIG_SHAPER is not set | ||
864 | # CONFIG_NETCONSOLE is not set | ||
865 | # CONFIG_NETPOLL is not set | ||
866 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
867 | |||
868 | # | ||
869 | # ISDN subsystem | ||
870 | # | ||
871 | # CONFIG_ISDN is not set | ||
872 | |||
873 | # | ||
874 | # Telephony Support | ||
875 | # | ||
876 | # CONFIG_PHONE is not set | ||
877 | |||
878 | # | ||
879 | # Input device support | ||
880 | # | ||
881 | CONFIG_INPUT=y | ||
882 | CONFIG_INPUT_FF_MEMLESS=m | ||
883 | |||
884 | # | ||
885 | # Userland interfaces | ||
886 | # | ||
887 | CONFIG_INPUT_MOUSEDEV=y | ||
888 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
889 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
890 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
891 | # CONFIG_INPUT_JOYDEV is not set | ||
892 | # CONFIG_INPUT_TSDEV is not set | ||
893 | # CONFIG_INPUT_EVDEV is not set | ||
894 | # CONFIG_INPUT_EVBUG is not set | ||
895 | |||
896 | # | ||
897 | # Input Device Drivers | ||
898 | # | ||
899 | CONFIG_INPUT_KEYBOARD=y | ||
900 | CONFIG_KEYBOARD_ATKBD=y | ||
901 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
902 | # CONFIG_KEYBOARD_LKKBD is not set | ||
903 | # CONFIG_KEYBOARD_XTKBD is not set | ||
904 | # CONFIG_KEYBOARD_NEWTON is not set | ||
905 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
906 | CONFIG_INPUT_MOUSE=y | ||
907 | CONFIG_MOUSE_PS2=y | ||
908 | # CONFIG_MOUSE_SERIAL is not set | ||
909 | # CONFIG_MOUSE_INPORT is not set | ||
910 | # CONFIG_MOUSE_LOGIBM is not set | ||
911 | # CONFIG_MOUSE_PC110PAD is not set | ||
912 | # CONFIG_MOUSE_VSXXXAA is not set | ||
913 | # CONFIG_INPUT_JOYSTICK is not set | ||
914 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
915 | # CONFIG_INPUT_MISC is not set | ||
916 | |||
917 | # | ||
918 | # Hardware I/O ports | ||
919 | # | ||
920 | CONFIG_SERIO=y | ||
921 | CONFIG_SERIO_I8042=y | ||
922 | CONFIG_SERIO_SERPORT=y | ||
923 | CONFIG_SERIO_PARKBD=m | ||
924 | CONFIG_SERIO_LIBPS2=y | ||
925 | CONFIG_SERIO_RAW=m | ||
926 | # CONFIG_GAMEPORT is not set | ||
927 | |||
928 | # | ||
929 | # Character devices | ||
930 | # | ||
931 | CONFIG_VT=y | ||
932 | CONFIG_VT_CONSOLE=y | ||
933 | CONFIG_HW_CONSOLE=y | ||
934 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
935 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
936 | |||
937 | # | ||
938 | # Serial drivers | ||
939 | # | ||
940 | CONFIG_SERIAL_8250=m | ||
941 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
942 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | ||
943 | CONFIG_SERIAL_8250_EXTENDED=y | ||
944 | # CONFIG_SERIAL_8250_MANY_PORTS is not set | ||
945 | CONFIG_SERIAL_8250_SHARE_IRQ=y | ||
946 | CONFIG_SERIAL_8250_DETECT_IRQ=y | ||
947 | CONFIG_SERIAL_8250_RSA=y | ||
948 | |||
949 | # | ||
950 | # Non-8250 serial port support | ||
951 | # | ||
952 | CONFIG_SERIAL_CORE=m | ||
953 | CONFIG_UNIX98_PTYS=y | ||
954 | CONFIG_LEGACY_PTYS=y | ||
955 | CONFIG_LEGACY_PTY_COUNT=256 | ||
956 | CONFIG_PRINTER=m | ||
957 | # CONFIG_LP_CONSOLE is not set | ||
958 | CONFIG_PPDEV=m | ||
959 | CONFIG_TIPAR=m | ||
960 | |||
961 | # | ||
962 | # IPMI | ||
963 | # | ||
964 | # CONFIG_IPMI_HANDLER is not set | ||
965 | |||
966 | # | ||
967 | # Watchdog Cards | ||
968 | # | ||
969 | # CONFIG_WATCHDOG is not set | ||
970 | # CONFIG_HW_RANDOM is not set | ||
971 | CONFIG_RTC=m | ||
972 | # CONFIG_GEN_RTC is not set | ||
973 | # CONFIG_DTLK is not set | ||
974 | # CONFIG_R3964 is not set | ||
975 | |||
976 | # | ||
977 | # Ftape, the floppy tape device driver | ||
978 | # | ||
979 | # CONFIG_RAW_DRIVER is not set | ||
980 | |||
981 | # | ||
982 | # TPM devices | ||
983 | # | ||
984 | # CONFIG_TCG_TPM is not set | ||
985 | # CONFIG_TELCLOCK is not set | ||
986 | |||
987 | # | ||
988 | # I2C support | ||
989 | # | ||
990 | # CONFIG_I2C is not set | ||
991 | |||
992 | # | ||
993 | # SPI support | ||
994 | # | ||
995 | # CONFIG_SPI is not set | ||
996 | # CONFIG_SPI_MASTER is not set | ||
997 | |||
998 | # | ||
999 | # Dallas's 1-wire bus | ||
1000 | # | ||
1001 | CONFIG_W1=m | ||
1002 | CONFIG_W1_CON=y | ||
1003 | |||
1004 | # | ||
1005 | # 1-wire Bus Masters | ||
1006 | # | ||
1007 | |||
1008 | # | ||
1009 | # 1-wire Slaves | ||
1010 | # | ||
1011 | # CONFIG_W1_SLAVE_THERM is not set | ||
1012 | # CONFIG_W1_SLAVE_SMEM is not set | ||
1013 | # CONFIG_W1_SLAVE_DS2433 is not set | ||
1014 | |||
1015 | # | ||
1016 | # Hardware Monitoring support | ||
1017 | # | ||
1018 | # CONFIG_HWMON is not set | ||
1019 | # CONFIG_HWMON_VID is not set | ||
1020 | |||
1021 | # | ||
1022 | # Misc devices | ||
1023 | # | ||
1024 | # CONFIG_TIFM_CORE is not set | ||
1025 | |||
1026 | # | ||
1027 | # Multimedia devices | ||
1028 | # | ||
1029 | # CONFIG_VIDEO_DEV is not set | ||
1030 | |||
1031 | # | ||
1032 | # Digital Video Broadcasting Devices | ||
1033 | # | ||
1034 | # CONFIG_DVB is not set | ||
1035 | |||
1036 | # | ||
1037 | # Graphics support | ||
1038 | # | ||
1039 | # CONFIG_FIRMWARE_EDID is not set | ||
1040 | # CONFIG_FB is not set | ||
1041 | |||
1042 | # | ||
1043 | # Console display driver support | ||
1044 | # | ||
1045 | CONFIG_VGA_CONSOLE=y | ||
1046 | # CONFIG_VGACON_SOFT_SCROLLBACK is not set | ||
1047 | # CONFIG_MDA_CONSOLE is not set | ||
1048 | CONFIG_DUMMY_CONSOLE=y | ||
1049 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
1050 | |||
1051 | # | ||
1052 | # Sound | ||
1053 | # | ||
1054 | # CONFIG_SOUND is not set | ||
1055 | |||
1056 | # | ||
1057 | # USB support | ||
1058 | # | ||
1059 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
1060 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
1061 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
1062 | |||
1063 | # | ||
1064 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
1065 | # | ||
1066 | |||
1067 | # | ||
1068 | # USB Gadget Support | ||
1069 | # | ||
1070 | # CONFIG_USB_GADGET is not set | ||
1071 | |||
1072 | # | ||
1073 | # MMC/SD Card support | ||
1074 | # | ||
1075 | # CONFIG_MMC is not set | ||
1076 | |||
1077 | # | ||
1078 | # LED devices | ||
1079 | # | ||
1080 | # CONFIG_NEW_LEDS is not set | ||
1081 | |||
1082 | # | ||
1083 | # LED drivers | ||
1084 | # | ||
1085 | |||
1086 | # | ||
1087 | # LED Triggers | ||
1088 | # | ||
1089 | |||
1090 | # | ||
1091 | # InfiniBand support | ||
1092 | # | ||
1093 | |||
1094 | # | ||
1095 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
1096 | # | ||
1097 | |||
1098 | # | ||
1099 | # Real Time Clock | ||
1100 | # | ||
1101 | # CONFIG_RTC_CLASS is not set | ||
1102 | |||
1103 | # | ||
1104 | # DMA Engine support | ||
1105 | # | ||
1106 | # CONFIG_DMA_ENGINE is not set | ||
1107 | |||
1108 | # | ||
1109 | # DMA Clients | ||
1110 | # | ||
1111 | |||
1112 | # | ||
1113 | # DMA Devices | ||
1114 | # | ||
1115 | |||
1116 | # | ||
1117 | # File systems | ||
1118 | # | ||
1119 | CONFIG_EXT2_FS=m | ||
1120 | # CONFIG_EXT2_FS_XATTR is not set | ||
1121 | # CONFIG_EXT2_FS_XIP is not set | ||
1122 | CONFIG_EXT3_FS=y | ||
1123 | CONFIG_EXT3_FS_XATTR=y | ||
1124 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
1125 | # CONFIG_EXT3_FS_SECURITY is not set | ||
1126 | CONFIG_JBD=y | ||
1127 | # CONFIG_JBD_DEBUG is not set | ||
1128 | CONFIG_FS_MBCACHE=y | ||
1129 | CONFIG_REISERFS_FS=m | ||
1130 | # CONFIG_REISERFS_CHECK is not set | ||
1131 | # CONFIG_REISERFS_PROC_INFO is not set | ||
1132 | CONFIG_REISERFS_FS_XATTR=y | ||
1133 | CONFIG_REISERFS_FS_POSIX_ACL=y | ||
1134 | CONFIG_REISERFS_FS_SECURITY=y | ||
1135 | # CONFIG_JFS_FS is not set | ||
1136 | CONFIG_FS_POSIX_ACL=y | ||
1137 | CONFIG_XFS_FS=m | ||
1138 | CONFIG_XFS_QUOTA=y | ||
1139 | CONFIG_XFS_SECURITY=y | ||
1140 | # CONFIG_XFS_POSIX_ACL is not set | ||
1141 | # CONFIG_XFS_RT is not set | ||
1142 | # CONFIG_GFS2_FS is not set | ||
1143 | # CONFIG_OCFS2_FS is not set | ||
1144 | CONFIG_MINIX_FS=m | ||
1145 | CONFIG_ROMFS_FS=m | ||
1146 | CONFIG_INOTIFY=y | ||
1147 | CONFIG_INOTIFY_USER=y | ||
1148 | # CONFIG_QUOTA is not set | ||
1149 | CONFIG_QUOTACTL=y | ||
1150 | CONFIG_DNOTIFY=y | ||
1151 | CONFIG_AUTOFS_FS=m | ||
1152 | CONFIG_AUTOFS4_FS=m | ||
1153 | CONFIG_FUSE_FS=m | ||
1154 | |||
1155 | # | ||
1156 | # CD-ROM/DVD Filesystems | ||
1157 | # | ||
1158 | CONFIG_ISO9660_FS=m | ||
1159 | CONFIG_JOLIET=y | ||
1160 | CONFIG_ZISOFS=y | ||
1161 | CONFIG_ZISOFS_FS=m | ||
1162 | CONFIG_UDF_FS=m | ||
1163 | CONFIG_UDF_NLS=y | ||
1164 | |||
1165 | # | ||
1166 | # DOS/FAT/NT Filesystems | ||
1167 | # | ||
1168 | CONFIG_FAT_FS=m | ||
1169 | CONFIG_MSDOS_FS=m | ||
1170 | CONFIG_VFAT_FS=m | ||
1171 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
1172 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
1173 | CONFIG_NTFS_FS=m | ||
1174 | # CONFIG_NTFS_DEBUG is not set | ||
1175 | # CONFIG_NTFS_RW is not set | ||
1176 | |||
1177 | # | ||
1178 | # Pseudo filesystems | ||
1179 | # | ||
1180 | CONFIG_PROC_FS=y | ||
1181 | CONFIG_PROC_KCORE=y | ||
1182 | CONFIG_PROC_SYSCTL=y | ||
1183 | CONFIG_SYSFS=y | ||
1184 | CONFIG_TMPFS=y | ||
1185 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1186 | # CONFIG_HUGETLB_PAGE is not set | ||
1187 | CONFIG_RAMFS=y | ||
1188 | # CONFIG_CONFIGFS_FS is not set | ||
1189 | |||
1190 | # | ||
1191 | # Miscellaneous filesystems | ||
1192 | # | ||
1193 | CONFIG_ADFS_FS=m | ||
1194 | # CONFIG_ADFS_FS_RW is not set | ||
1195 | CONFIG_AFFS_FS=m | ||
1196 | # CONFIG_ECRYPT_FS is not set | ||
1197 | CONFIG_HFS_FS=m | ||
1198 | # CONFIG_HFSPLUS_FS is not set | ||
1199 | CONFIG_BEFS_FS=m | ||
1200 | # CONFIG_BEFS_DEBUG is not set | ||
1201 | CONFIG_BFS_FS=m | ||
1202 | CONFIG_EFS_FS=m | ||
1203 | CONFIG_CRAMFS=m | ||
1204 | CONFIG_VXFS_FS=m | ||
1205 | CONFIG_HPFS_FS=m | ||
1206 | CONFIG_QNX4FS_FS=m | ||
1207 | CONFIG_SYSV_FS=m | ||
1208 | CONFIG_UFS_FS=m | ||
1209 | # CONFIG_UFS_FS_WRITE is not set | ||
1210 | # CONFIG_UFS_DEBUG is not set | ||
1211 | |||
1212 | # | ||
1213 | # Network File Systems | ||
1214 | # | ||
1215 | CONFIG_NFS_FS=m | ||
1216 | CONFIG_NFS_V3=y | ||
1217 | # CONFIG_NFS_V3_ACL is not set | ||
1218 | # CONFIG_NFS_V4 is not set | ||
1219 | # CONFIG_NFS_DIRECTIO is not set | ||
1220 | CONFIG_NFSD=m | ||
1221 | CONFIG_NFSD_V3=y | ||
1222 | # CONFIG_NFSD_V3_ACL is not set | ||
1223 | # CONFIG_NFSD_V4 is not set | ||
1224 | CONFIG_NFSD_TCP=y | ||
1225 | CONFIG_LOCKD=m | ||
1226 | CONFIG_LOCKD_V4=y | ||
1227 | CONFIG_EXPORTFS=m | ||
1228 | CONFIG_NFS_COMMON=y | ||
1229 | CONFIG_SUNRPC=m | ||
1230 | CONFIG_SUNRPC_GSS=m | ||
1231 | CONFIG_RPCSEC_GSS_KRB5=m | ||
1232 | CONFIG_RPCSEC_GSS_SPKM3=m | ||
1233 | CONFIG_SMB_FS=m | ||
1234 | # CONFIG_SMB_NLS_DEFAULT is not set | ||
1235 | CONFIG_CIFS=m | ||
1236 | # CONFIG_CIFS_STATS is not set | ||
1237 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
1238 | # CONFIG_CIFS_XATTR is not set | ||
1239 | # CONFIG_CIFS_DEBUG2 is not set | ||
1240 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
1241 | CONFIG_NCP_FS=m | ||
1242 | CONFIG_NCPFS_PACKET_SIGNING=y | ||
1243 | CONFIG_NCPFS_IOCTL_LOCKING=y | ||
1244 | CONFIG_NCPFS_STRONG=y | ||
1245 | CONFIG_NCPFS_NFS_NS=y | ||
1246 | CONFIG_NCPFS_OS2_NS=y | ||
1247 | CONFIG_NCPFS_SMALLDOS=y | ||
1248 | CONFIG_NCPFS_NLS=y | ||
1249 | CONFIG_NCPFS_EXTRAS=y | ||
1250 | CONFIG_CODA_FS=m | ||
1251 | CONFIG_CODA_FS_OLD_API=y | ||
1252 | CONFIG_AFS_FS=m | ||
1253 | CONFIG_RXRPC=m | ||
1254 | # CONFIG_9P_FS is not set | ||
1255 | |||
1256 | # | ||
1257 | # Partition Types | ||
1258 | # | ||
1259 | CONFIG_PARTITION_ADVANCED=y | ||
1260 | # CONFIG_ACORN_PARTITION is not set | ||
1261 | # CONFIG_OSF_PARTITION is not set | ||
1262 | # CONFIG_AMIGA_PARTITION is not set | ||
1263 | # CONFIG_ATARI_PARTITION is not set | ||
1264 | # CONFIG_MAC_PARTITION is not set | ||
1265 | CONFIG_MSDOS_PARTITION=y | ||
1266 | # CONFIG_BSD_DISKLABEL is not set | ||
1267 | # CONFIG_MINIX_SUBPARTITION is not set | ||
1268 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
1269 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
1270 | # CONFIG_LDM_PARTITION is not set | ||
1271 | # CONFIG_SGI_PARTITION is not set | ||
1272 | # CONFIG_ULTRIX_PARTITION is not set | ||
1273 | # CONFIG_SUN_PARTITION is not set | ||
1274 | # CONFIG_KARMA_PARTITION is not set | ||
1275 | # CONFIG_EFI_PARTITION is not set | ||
1276 | |||
1277 | # | ||
1278 | # Native Language Support | ||
1279 | # | ||
1280 | CONFIG_NLS=m | ||
1281 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1282 | CONFIG_NLS_CODEPAGE_437=m | ||
1283 | CONFIG_NLS_CODEPAGE_737=m | ||
1284 | CONFIG_NLS_CODEPAGE_775=m | ||
1285 | CONFIG_NLS_CODEPAGE_850=m | ||
1286 | CONFIG_NLS_CODEPAGE_852=m | ||
1287 | CONFIG_NLS_CODEPAGE_855=m | ||
1288 | CONFIG_NLS_CODEPAGE_857=m | ||
1289 | CONFIG_NLS_CODEPAGE_860=m | ||
1290 | CONFIG_NLS_CODEPAGE_861=m | ||
1291 | CONFIG_NLS_CODEPAGE_862=m | ||
1292 | CONFIG_NLS_CODEPAGE_863=m | ||
1293 | CONFIG_NLS_CODEPAGE_864=m | ||
1294 | CONFIG_NLS_CODEPAGE_865=m | ||
1295 | CONFIG_NLS_CODEPAGE_866=m | ||
1296 | CONFIG_NLS_CODEPAGE_869=m | ||
1297 | CONFIG_NLS_CODEPAGE_936=m | ||
1298 | CONFIG_NLS_CODEPAGE_950=m | ||
1299 | CONFIG_NLS_CODEPAGE_932=m | ||
1300 | CONFIG_NLS_CODEPAGE_949=m | ||
1301 | CONFIG_NLS_CODEPAGE_874=m | ||
1302 | CONFIG_NLS_ISO8859_8=m | ||
1303 | CONFIG_NLS_CODEPAGE_1250=m | ||
1304 | CONFIG_NLS_CODEPAGE_1251=m | ||
1305 | CONFIG_NLS_ASCII=m | ||
1306 | CONFIG_NLS_ISO8859_1=m | ||
1307 | CONFIG_NLS_ISO8859_2=m | ||
1308 | CONFIG_NLS_ISO8859_3=m | ||
1309 | CONFIG_NLS_ISO8859_4=m | ||
1310 | CONFIG_NLS_ISO8859_5=m | ||
1311 | CONFIG_NLS_ISO8859_6=m | ||
1312 | CONFIG_NLS_ISO8859_7=m | ||
1313 | CONFIG_NLS_ISO8859_9=m | ||
1314 | CONFIG_NLS_ISO8859_13=m | ||
1315 | CONFIG_NLS_ISO8859_14=m | ||
1316 | CONFIG_NLS_ISO8859_15=m | ||
1317 | CONFIG_NLS_KOI8_R=m | ||
1318 | CONFIG_NLS_KOI8_U=m | ||
1319 | CONFIG_NLS_UTF8=m | ||
1320 | |||
1321 | # | ||
1322 | # Distributed Lock Manager | ||
1323 | # | ||
1324 | |||
1325 | # | ||
1326 | # Profiling support | ||
1327 | # | ||
1328 | # CONFIG_PROFILING is not set | ||
1329 | |||
1330 | # | ||
1331 | # Kernel hacking | ||
1332 | # | ||
1333 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
1334 | # CONFIG_PRINTK_TIME is not set | ||
1335 | CONFIG_ENABLE_MUST_CHECK=y | ||
1336 | # CONFIG_MAGIC_SYSRQ is not set | ||
1337 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1338 | # CONFIG_DEBUG_KERNEL is not set | ||
1339 | CONFIG_LOG_BUF_SHIFT=14 | ||
1340 | # CONFIG_DEBUG_FS is not set | ||
1341 | CONFIG_CROSSCOMPILE=y | ||
1342 | CONFIG_CMDLINE="" | ||
1343 | |||
1344 | # | ||
1345 | # Security options | ||
1346 | # | ||
1347 | CONFIG_KEYS=y | ||
1348 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | ||
1349 | # CONFIG_SECURITY is not set | ||
1350 | |||
1351 | # | ||
1352 | # Cryptographic options | ||
1353 | # | ||
1354 | CONFIG_CRYPTO=y | ||
1355 | CONFIG_CRYPTO_ALGAPI=y | ||
1356 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1357 | CONFIG_CRYPTO_HASH=y | ||
1358 | CONFIG_CRYPTO_MANAGER=m | ||
1359 | CONFIG_CRYPTO_HMAC=y | ||
1360 | CONFIG_CRYPTO_NULL=m | ||
1361 | CONFIG_CRYPTO_MD4=m | ||
1362 | CONFIG_CRYPTO_MD5=m | ||
1363 | CONFIG_CRYPTO_SHA1=m | ||
1364 | CONFIG_CRYPTO_SHA256=m | ||
1365 | CONFIG_CRYPTO_SHA512=m | ||
1366 | CONFIG_CRYPTO_WP512=m | ||
1367 | CONFIG_CRYPTO_TGR192=m | ||
1368 | CONFIG_CRYPTO_ECB=m | ||
1369 | CONFIG_CRYPTO_CBC=m | ||
1370 | CONFIG_CRYPTO_DES=m | ||
1371 | CONFIG_CRYPTO_BLOWFISH=m | ||
1372 | CONFIG_CRYPTO_TWOFISH=m | ||
1373 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1374 | CONFIG_CRYPTO_SERPENT=m | ||
1375 | CONFIG_CRYPTO_AES=m | ||
1376 | CONFIG_CRYPTO_CAST5=m | ||
1377 | CONFIG_CRYPTO_CAST6=m | ||
1378 | CONFIG_CRYPTO_TEA=m | ||
1379 | CONFIG_CRYPTO_ARC4=m | ||
1380 | CONFIG_CRYPTO_KHAZAD=m | ||
1381 | CONFIG_CRYPTO_ANUBIS=m | ||
1382 | CONFIG_CRYPTO_DEFLATE=m | ||
1383 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1384 | CONFIG_CRYPTO_CRC32C=m | ||
1385 | # CONFIG_CRYPTO_TEST is not set | ||
1386 | |||
1387 | # | ||
1388 | # Hardware crypto devices | ||
1389 | # | ||
1390 | |||
1391 | # | ||
1392 | # Library routines | ||
1393 | # | ||
1394 | CONFIG_CRC_CCITT=m | ||
1395 | CONFIG_CRC16=m | ||
1396 | CONFIG_CRC32=y | ||
1397 | CONFIG_LIBCRC32C=m | ||
1398 | CONFIG_ZLIB_INFLATE=m | ||
1399 | CONFIG_ZLIB_DEFLATE=m | ||
1400 | CONFIG_TEXTSEARCH=y | ||
1401 | CONFIG_TEXTSEARCH_KMP=m | ||
1402 | CONFIG_TEXTSEARCH_BM=m | ||
1403 | CONFIG_TEXTSEARCH_FSM=m | ||
1404 | CONFIG_PLIST=y | ||
diff --git a/arch/mips/configs/malta_defconfig b/arch/mips/configs/malta_defconfig index aeefe2873e38..101e80347dce 100644 --- a/arch/mips/configs/malta_defconfig +++ b/arch/mips/configs/malta_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-rc1 | 3 | # Linux kernel version: 2.6.19-rc1 |
4 | # Thu Jul 6 10:04:13 2006 | 4 | # Fri Oct 6 17:34:55 2006 |
5 | # | 5 | # |
6 | CONFIG_MIPS=y | 6 | CONFIG_MIPS=y |
7 | 7 | ||
@@ -25,8 +25,6 @@ CONFIG_MIPS=y | |||
25 | # CONFIG_MIPS_COBALT is not set | 25 | # CONFIG_MIPS_COBALT is not set |
26 | # CONFIG_MACH_DECSTATION is not set | 26 | # CONFIG_MACH_DECSTATION is not set |
27 | # CONFIG_MIPS_EV64120 is not set | 27 | # CONFIG_MIPS_EV64120 is not set |
28 | # CONFIG_MIPS_IVR is not set | ||
29 | # CONFIG_MIPS_ITE8172 is not set | ||
30 | # CONFIG_MACH_JAZZ is not set | 28 | # CONFIG_MACH_JAZZ is not set |
31 | # CONFIG_LASAT is not set | 29 | # CONFIG_LASAT is not set |
32 | # CONFIG_MIPS_ATLAS is not set | 30 | # CONFIG_MIPS_ATLAS is not set |
@@ -67,6 +65,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
67 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 65 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
68 | CONFIG_GENERIC_HWEIGHT=y | 66 | CONFIG_GENERIC_HWEIGHT=y |
69 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 67 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
68 | CONFIG_GENERIC_TIME=y | ||
70 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 69 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
71 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | 70 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y |
72 | CONFIG_DMA_NONCOHERENT=y | 71 | CONFIG_DMA_NONCOHERENT=y |
@@ -134,19 +133,19 @@ CONFIG_MIPS_CPU_SCACHE=y | |||
134 | CONFIG_CPU_HAS_PREFETCH=y | 133 | CONFIG_CPU_HAS_PREFETCH=y |
135 | # CONFIG_MIPS_MT_DISABLED is not set | 134 | # CONFIG_MIPS_MT_DISABLED is not set |
136 | # CONFIG_MIPS_MT_SMTC is not set | 135 | # CONFIG_MIPS_MT_SMTC is not set |
137 | # CONFIG_MIPS_MT_SMP is not set | 136 | CONFIG_MIPS_MT_SMP=y |
138 | CONFIG_MIPS_VPE_LOADER=y | 137 | # CONFIG_MIPS_VPE_LOADER is not set |
139 | CONFIG_MIPS_MT=y | 138 | CONFIG_MIPS_MT=y |
140 | CONFIG_SYS_SUPPORTS_MULTITHREADING=y | 139 | CONFIG_SYS_SUPPORTS_MULTITHREADING=y |
141 | CONFIG_MIPS_MT_FPAFF=y | 140 | CONFIG_MIPS_MT_FPAFF=y |
142 | CONFIG_MIPS_VPE_LOADER_TOM=y | ||
143 | CONFIG_MIPS_VPE_APSP_API=y | ||
144 | CONFIG_MIPS_APSP_KSPD=y | ||
145 | # CONFIG_64BIT_PHYS_ADDR is not set | 141 | # CONFIG_64BIT_PHYS_ADDR is not set |
146 | CONFIG_CPU_HAS_LLSC=y | 142 | CONFIG_CPU_HAS_LLSC=y |
143 | CONFIG_CPU_MIPSR2_IRQ_VI=y | ||
144 | CONFIG_CPU_MIPSR2_SRS=y | ||
147 | CONFIG_CPU_HAS_SYNC=y | 145 | CONFIG_CPU_HAS_SYNC=y |
148 | CONFIG_GENERIC_HARDIRQS=y | 146 | CONFIG_GENERIC_HARDIRQS=y |
149 | CONFIG_GENERIC_IRQ_PROBE=y | 147 | CONFIG_GENERIC_IRQ_PROBE=y |
148 | CONFIG_IRQ_PER_CPU=y | ||
150 | CONFIG_CPU_SUPPORTS_HIGHMEM=y | 149 | CONFIG_CPU_SUPPORTS_HIGHMEM=y |
151 | CONFIG_ARCH_FLATMEM_ENABLE=y | 150 | CONFIG_ARCH_FLATMEM_ENABLE=y |
152 | CONFIG_SELECT_MEMORY_MODEL=y | 151 | CONFIG_SELECT_MEMORY_MODEL=y |
@@ -158,6 +157,9 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
158 | # CONFIG_SPARSEMEM_STATIC is not set | 157 | # CONFIG_SPARSEMEM_STATIC is not set |
159 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 158 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
160 | # CONFIG_RESOURCES_64BIT is not set | 159 | # CONFIG_RESOURCES_64BIT is not set |
160 | CONFIG_SMP=y | ||
161 | CONFIG_SYS_SUPPORTS_SMP=y | ||
162 | CONFIG_NR_CPUS=2 | ||
161 | # CONFIG_HZ_48 is not set | 163 | # CONFIG_HZ_48 is not set |
162 | CONFIG_HZ_100=y | 164 | CONFIG_HZ_100=y |
163 | # CONFIG_HZ_128 is not set | 165 | # CONFIG_HZ_128 is not set |
@@ -170,6 +172,7 @@ CONFIG_HZ=100 | |||
170 | CONFIG_PREEMPT_NONE=y | 172 | CONFIG_PREEMPT_NONE=y |
171 | # CONFIG_PREEMPT_VOLUNTARY is not set | 173 | # CONFIG_PREEMPT_VOLUNTARY is not set |
172 | # CONFIG_PREEMPT is not set | 174 | # CONFIG_PREEMPT is not set |
175 | CONFIG_PREEMPT_BKL=y | ||
173 | CONFIG_LOCKDEP_SUPPORT=y | 176 | CONFIG_LOCKDEP_SUPPORT=y |
174 | CONFIG_STACKTRACE_SUPPORT=y | 177 | CONFIG_STACKTRACE_SUPPORT=y |
175 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 178 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
@@ -178,7 +181,7 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | |||
178 | # Code maturity level options | 181 | # Code maturity level options |
179 | # | 182 | # |
180 | CONFIG_EXPERIMENTAL=y | 183 | CONFIG_EXPERIMENTAL=y |
181 | CONFIG_BROKEN_ON_SMP=y | 184 | CONFIG_LOCK_KERNEL=y |
182 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 185 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
183 | 186 | ||
184 | # | 187 | # |
@@ -188,15 +191,20 @@ CONFIG_LOCALVERSION="" | |||
188 | CONFIG_LOCALVERSION_AUTO=y | 191 | CONFIG_LOCALVERSION_AUTO=y |
189 | CONFIG_SWAP=y | 192 | CONFIG_SWAP=y |
190 | CONFIG_SYSVIPC=y | 193 | CONFIG_SYSVIPC=y |
194 | # CONFIG_IPC_NS is not set | ||
191 | # CONFIG_POSIX_MQUEUE is not set | 195 | # CONFIG_POSIX_MQUEUE is not set |
192 | # CONFIG_BSD_PROCESS_ACCT is not set | 196 | # CONFIG_BSD_PROCESS_ACCT is not set |
193 | CONFIG_SYSCTL=y | 197 | # CONFIG_TASKSTATS is not set |
198 | # CONFIG_UTS_NS is not set | ||
194 | # CONFIG_AUDIT is not set | 199 | # CONFIG_AUDIT is not set |
195 | # CONFIG_IKCONFIG is not set | 200 | # CONFIG_IKCONFIG is not set |
201 | # CONFIG_CPUSETS is not set | ||
196 | CONFIG_RELAY=y | 202 | CONFIG_RELAY=y |
197 | CONFIG_INITRAMFS_SOURCE="" | 203 | CONFIG_INITRAMFS_SOURCE="" |
198 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 204 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
205 | CONFIG_SYSCTL=y | ||
199 | CONFIG_EMBEDDED=y | 206 | CONFIG_EMBEDDED=y |
207 | # CONFIG_SYSCTL_SYSCALL is not set | ||
200 | CONFIG_KALLSYMS=y | 208 | CONFIG_KALLSYMS=y |
201 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 209 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
202 | CONFIG_HOTPLUG=y | 210 | CONFIG_HOTPLUG=y |
@@ -204,12 +212,12 @@ CONFIG_PRINTK=y | |||
204 | CONFIG_BUG=y | 212 | CONFIG_BUG=y |
205 | CONFIG_ELF_CORE=y | 213 | CONFIG_ELF_CORE=y |
206 | CONFIG_BASE_FULL=y | 214 | CONFIG_BASE_FULL=y |
207 | CONFIG_RT_MUTEXES=y | ||
208 | CONFIG_FUTEX=y | 215 | CONFIG_FUTEX=y |
209 | CONFIG_EPOLL=y | 216 | CONFIG_EPOLL=y |
210 | CONFIG_SHMEM=y | 217 | CONFIG_SHMEM=y |
211 | CONFIG_SLAB=y | 218 | CONFIG_SLAB=y |
212 | CONFIG_VM_EVENT_COUNTERS=y | 219 | CONFIG_VM_EVENT_COUNTERS=y |
220 | CONFIG_RT_MUTEXES=y | ||
213 | # CONFIG_TINY_SHMEM is not set | 221 | # CONFIG_TINY_SHMEM is not set |
214 | CONFIG_BASE_SMALL=0 | 222 | CONFIG_BASE_SMALL=0 |
215 | # CONFIG_SLOB is not set | 223 | # CONFIG_SLOB is not set |
@@ -223,10 +231,12 @@ CONFIG_MODULE_UNLOAD=y | |||
223 | CONFIG_MODVERSIONS=y | 231 | CONFIG_MODVERSIONS=y |
224 | CONFIG_MODULE_SRCVERSION_ALL=y | 232 | CONFIG_MODULE_SRCVERSION_ALL=y |
225 | CONFIG_KMOD=y | 233 | CONFIG_KMOD=y |
234 | CONFIG_STOP_MACHINE=y | ||
226 | 235 | ||
227 | # | 236 | # |
228 | # Block layer | 237 | # Block layer |
229 | # | 238 | # |
239 | CONFIG_BLOCK=y | ||
230 | # CONFIG_LBD is not set | 240 | # CONFIG_LBD is not set |
231 | # CONFIG_BLK_DEV_IO_TRACE is not set | 241 | # CONFIG_BLK_DEV_IO_TRACE is not set |
232 | # CONFIG_LSF is not set | 242 | # CONFIG_LSF is not set |
@@ -249,6 +259,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
249 | # | 259 | # |
250 | CONFIG_HW_HAS_PCI=y | 260 | CONFIG_HW_HAS_PCI=y |
251 | CONFIG_PCI=y | 261 | CONFIG_PCI=y |
262 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | ||
252 | CONFIG_MMU=y | 263 | CONFIG_MMU=y |
253 | 264 | ||
254 | # | 265 | # |
@@ -282,6 +293,7 @@ CONFIG_PACKET_MMAP=y | |||
282 | CONFIG_UNIX=y | 293 | CONFIG_UNIX=y |
283 | CONFIG_XFRM=y | 294 | CONFIG_XFRM=y |
284 | CONFIG_XFRM_USER=m | 295 | CONFIG_XFRM_USER=m |
296 | # CONFIG_XFRM_SUB_POLICY is not set | ||
285 | CONFIG_NET_KEY=y | 297 | CONFIG_NET_KEY=y |
286 | CONFIG_INET=y | 298 | CONFIG_INET=y |
287 | CONFIG_IP_MULTICAST=y | 299 | CONFIG_IP_MULTICAST=y |
@@ -313,10 +325,12 @@ CONFIG_INET_XFRM_TUNNEL=m | |||
313 | CONFIG_INET_TUNNEL=m | 325 | CONFIG_INET_TUNNEL=m |
314 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 326 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
315 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 327 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
328 | CONFIG_INET_XFRM_MODE_BEET=y | ||
316 | CONFIG_INET_DIAG=y | 329 | CONFIG_INET_DIAG=y |
317 | CONFIG_INET_TCP_DIAG=y | 330 | CONFIG_INET_TCP_DIAG=y |
318 | # CONFIG_TCP_CONG_ADVANCED is not set | 331 | # CONFIG_TCP_CONG_ADVANCED is not set |
319 | CONFIG_TCP_CONG_BIC=y | 332 | CONFIG_TCP_CONG_CUBIC=y |
333 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
320 | 334 | ||
321 | # | 335 | # |
322 | # IP: Virtual Server Configuration | 336 | # IP: Virtual Server Configuration |
@@ -358,11 +372,16 @@ CONFIG_IPV6_ROUTE_INFO=y | |||
358 | CONFIG_INET6_AH=m | 372 | CONFIG_INET6_AH=m |
359 | CONFIG_INET6_ESP=m | 373 | CONFIG_INET6_ESP=m |
360 | CONFIG_INET6_IPCOMP=m | 374 | CONFIG_INET6_IPCOMP=m |
375 | # CONFIG_IPV6_MIP6 is not set | ||
361 | CONFIG_INET6_XFRM_TUNNEL=m | 376 | CONFIG_INET6_XFRM_TUNNEL=m |
362 | CONFIG_INET6_TUNNEL=m | 377 | CONFIG_INET6_TUNNEL=m |
363 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | 378 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m |
364 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | 379 | CONFIG_INET6_XFRM_MODE_TUNNEL=m |
380 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
381 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
365 | CONFIG_IPV6_TUNNEL=m | 382 | CONFIG_IPV6_TUNNEL=m |
383 | # CONFIG_IPV6_SUBTREES is not set | ||
384 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
366 | CONFIG_NETWORK_SECMARK=y | 385 | CONFIG_NETWORK_SECMARK=y |
367 | CONFIG_NETFILTER=y | 386 | CONFIG_NETFILTER=y |
368 | # CONFIG_NETFILTER_DEBUG is not set | 387 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -377,6 +396,7 @@ CONFIG_NETFILTER_NETLINK_LOG=m | |||
377 | CONFIG_NETFILTER_XTABLES=m | 396 | CONFIG_NETFILTER_XTABLES=m |
378 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 397 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
379 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 398 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
399 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | ||
380 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 400 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
381 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 401 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
382 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | 402 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m |
@@ -387,6 +407,7 @@ CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | |||
387 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 407 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
388 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 408 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
389 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | 409 | CONFIG_NETFILTER_XT_MATCH_DCCP=m |
410 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set | ||
390 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 411 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
391 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | 412 | CONFIG_NETFILTER_XT_MATCH_HELPER=m |
392 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | 413 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m |
@@ -429,7 +450,6 @@ CONFIG_IP_NF_MATCH_IPRANGE=m | |||
429 | CONFIG_IP_NF_MATCH_TOS=m | 450 | CONFIG_IP_NF_MATCH_TOS=m |
430 | CONFIG_IP_NF_MATCH_RECENT=m | 451 | CONFIG_IP_NF_MATCH_RECENT=m |
431 | CONFIG_IP_NF_MATCH_ECN=m | 452 | CONFIG_IP_NF_MATCH_ECN=m |
432 | CONFIG_IP_NF_MATCH_DSCP=m | ||
433 | CONFIG_IP_NF_MATCH_AH=m | 453 | CONFIG_IP_NF_MATCH_AH=m |
434 | CONFIG_IP_NF_MATCH_TTL=m | 454 | CONFIG_IP_NF_MATCH_TTL=m |
435 | CONFIG_IP_NF_MATCH_OWNER=m | 455 | CONFIG_IP_NF_MATCH_OWNER=m |
@@ -457,7 +477,6 @@ CONFIG_IP_NF_NAT_SIP=m | |||
457 | CONFIG_IP_NF_MANGLE=m | 477 | CONFIG_IP_NF_MANGLE=m |
458 | CONFIG_IP_NF_TARGET_TOS=m | 478 | CONFIG_IP_NF_TARGET_TOS=m |
459 | CONFIG_IP_NF_TARGET_ECN=m | 479 | CONFIG_IP_NF_TARGET_ECN=m |
460 | CONFIG_IP_NF_TARGET_DSCP=m | ||
461 | CONFIG_IP_NF_TARGET_TTL=m | 480 | CONFIG_IP_NF_TARGET_TTL=m |
462 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 481 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
463 | CONFIG_IP_NF_RAW=m | 482 | CONFIG_IP_NF_RAW=m |
@@ -536,13 +555,12 @@ CONFIG_LLC=m | |||
536 | # CONFIG_LLC2 is not set | 555 | # CONFIG_LLC2 is not set |
537 | # CONFIG_IPX is not set | 556 | # CONFIG_IPX is not set |
538 | CONFIG_ATALK=m | 557 | CONFIG_ATALK=m |
539 | CONFIG_DEV_APPLETALK=y | 558 | CONFIG_DEV_APPLETALK=m |
540 | CONFIG_IPDDP=m | 559 | CONFIG_IPDDP=m |
541 | CONFIG_IPDDP_ENCAP=y | 560 | CONFIG_IPDDP_ENCAP=y |
542 | CONFIG_IPDDP_DECAP=y | 561 | CONFIG_IPDDP_DECAP=y |
543 | # CONFIG_X25 is not set | 562 | # CONFIG_X25 is not set |
544 | # CONFIG_LAPB is not set | 563 | # CONFIG_LAPB is not set |
545 | CONFIG_NET_DIVERT=y | ||
546 | # CONFIG_ECONET is not set | 564 | # CONFIG_ECONET is not set |
547 | # CONFIG_WAN_ROUTER is not set | 565 | # CONFIG_WAN_ROUTER is not set |
548 | 566 | ||
@@ -604,6 +622,7 @@ CONFIG_IEEE80211_CRYPT_CCMP=m | |||
604 | CONFIG_IEEE80211_SOFTMAC=m | 622 | CONFIG_IEEE80211_SOFTMAC=m |
605 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | 623 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set |
606 | CONFIG_WIRELESS_EXT=y | 624 | CONFIG_WIRELESS_EXT=y |
625 | CONFIG_FIB_RULES=y | ||
607 | 626 | ||
608 | # | 627 | # |
609 | # Device Drivers | 628 | # Device Drivers |
@@ -652,6 +671,7 @@ CONFIG_BLK_DEV_NBD=m | |||
652 | CONFIG_BLK_DEV_RAM=y | 671 | CONFIG_BLK_DEV_RAM=y |
653 | CONFIG_BLK_DEV_RAM_COUNT=16 | 672 | CONFIG_BLK_DEV_RAM_COUNT=16 |
654 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 673 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
674 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
655 | # CONFIG_BLK_DEV_INITRD is not set | 675 | # CONFIG_BLK_DEV_INITRD is not set |
656 | CONFIG_CDROM_PKTCDVD=m | 676 | CONFIG_CDROM_PKTCDVD=m |
657 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 677 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
@@ -662,6 +682,7 @@ CONFIG_ATA_OVER_ETH=m | |||
662 | # ATA/ATAPI/MFM/RLL support | 682 | # ATA/ATAPI/MFM/RLL support |
663 | # | 683 | # |
664 | CONFIG_IDE=y | 684 | CONFIG_IDE=y |
685 | CONFIG_IDE_MAX_HWIFS=4 | ||
665 | CONFIG_BLK_DEV_IDE=y | 686 | CONFIG_BLK_DEV_IDE=y |
666 | 687 | ||
667 | # | 688 | # |
@@ -699,6 +720,7 @@ CONFIG_IDEDMA_PCI_AUTO=y | |||
699 | # CONFIG_BLK_DEV_CS5530 is not set | 720 | # CONFIG_BLK_DEV_CS5530 is not set |
700 | # CONFIG_BLK_DEV_HPT34X is not set | 721 | # CONFIG_BLK_DEV_HPT34X is not set |
701 | # CONFIG_BLK_DEV_HPT366 is not set | 722 | # CONFIG_BLK_DEV_HPT366 is not set |
723 | # CONFIG_BLK_DEV_JMICRON is not set | ||
702 | # CONFIG_BLK_DEV_SC1200 is not set | 724 | # CONFIG_BLK_DEV_SC1200 is not set |
703 | CONFIG_BLK_DEV_PIIX=y | 725 | CONFIG_BLK_DEV_PIIX=y |
704 | # CONFIG_BLK_DEV_IT821X is not set | 726 | # CONFIG_BLK_DEV_IT821X is not set |
@@ -721,6 +743,7 @@ CONFIG_IDEDMA_AUTO=y | |||
721 | # | 743 | # |
722 | CONFIG_RAID_ATTRS=m | 744 | CONFIG_RAID_ATTRS=m |
723 | CONFIG_SCSI=m | 745 | CONFIG_SCSI=m |
746 | CONFIG_SCSI_NETLINK=y | ||
724 | CONFIG_SCSI_PROC_FS=y | 747 | CONFIG_SCSI_PROC_FS=y |
725 | 748 | ||
726 | # | 749 | # |
@@ -742,12 +765,13 @@ CONFIG_SCSI_CONSTANTS=y | |||
742 | CONFIG_SCSI_LOGGING=y | 765 | CONFIG_SCSI_LOGGING=y |
743 | 766 | ||
744 | # | 767 | # |
745 | # SCSI Transport Attributes | 768 | # SCSI Transports |
746 | # | 769 | # |
747 | CONFIG_SCSI_SPI_ATTRS=m | 770 | CONFIG_SCSI_SPI_ATTRS=m |
748 | CONFIG_SCSI_FC_ATTRS=m | 771 | CONFIG_SCSI_FC_ATTRS=m |
749 | CONFIG_SCSI_ISCSI_ATTRS=m | 772 | CONFIG_SCSI_ISCSI_ATTRS=m |
750 | CONFIG_SCSI_SAS_ATTRS=m | 773 | CONFIG_SCSI_SAS_ATTRS=m |
774 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
751 | 775 | ||
752 | # | 776 | # |
753 | # SCSI low-level drivers | 777 | # SCSI low-level drivers |
@@ -765,21 +789,23 @@ CONFIG_AIC7XXX_DEBUG_MASK=0 | |||
765 | CONFIG_AIC7XXX_REG_PRETTY_PRINT=y | 789 | CONFIG_AIC7XXX_REG_PRETTY_PRINT=y |
766 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 790 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
767 | # CONFIG_SCSI_AIC79XX is not set | 791 | # CONFIG_SCSI_AIC79XX is not set |
792 | # CONFIG_SCSI_AIC94XX is not set | ||
768 | # CONFIG_SCSI_DPT_I2O is not set | 793 | # CONFIG_SCSI_DPT_I2O is not set |
794 | # CONFIG_SCSI_ARCMSR is not set | ||
769 | # CONFIG_MEGARAID_NEWGEN is not set | 795 | # CONFIG_MEGARAID_NEWGEN is not set |
770 | # CONFIG_MEGARAID_LEGACY is not set | 796 | # CONFIG_MEGARAID_LEGACY is not set |
771 | # CONFIG_MEGARAID_SAS is not set | 797 | # CONFIG_MEGARAID_SAS is not set |
772 | # CONFIG_SCSI_SATA is not set | ||
773 | # CONFIG_SCSI_HPTIOP is not set | 798 | # CONFIG_SCSI_HPTIOP is not set |
774 | # CONFIG_SCSI_DMX3191D is not set | 799 | # CONFIG_SCSI_DMX3191D is not set |
775 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 800 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
776 | # CONFIG_SCSI_IPS is not set | 801 | # CONFIG_SCSI_IPS is not set |
777 | # CONFIG_SCSI_INITIO is not set | 802 | # CONFIG_SCSI_INITIO is not set |
778 | # CONFIG_SCSI_INIA100 is not set | 803 | # CONFIG_SCSI_INIA100 is not set |
804 | # CONFIG_SCSI_STEX is not set | ||
779 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 805 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
780 | # CONFIG_SCSI_IPR is not set | ||
781 | # CONFIG_SCSI_QLOGIC_1280 is not set | 806 | # CONFIG_SCSI_QLOGIC_1280 is not set |
782 | # CONFIG_SCSI_QLA_FC is not set | 807 | # CONFIG_SCSI_QLA_FC is not set |
808 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
783 | # CONFIG_SCSI_LPFC is not set | 809 | # CONFIG_SCSI_LPFC is not set |
784 | # CONFIG_SCSI_DC395x is not set | 810 | # CONFIG_SCSI_DC395x is not set |
785 | # CONFIG_SCSI_DC390T is not set | 811 | # CONFIG_SCSI_DC390T is not set |
@@ -787,6 +813,11 @@ CONFIG_AIC7XXX_REG_PRETTY_PRINT=y | |||
787 | # CONFIG_SCSI_DEBUG is not set | 813 | # CONFIG_SCSI_DEBUG is not set |
788 | 814 | ||
789 | # | 815 | # |
816 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
817 | # | ||
818 | # CONFIG_ATA is not set | ||
819 | |||
820 | # | ||
790 | # Multi-device support (RAID and LVM) | 821 | # Multi-device support (RAID and LVM) |
791 | # | 822 | # |
792 | CONFIG_MD=y | 823 | CONFIG_MD=y |
@@ -800,6 +831,7 @@ CONFIG_MD_RAID5_RESHAPE=y | |||
800 | CONFIG_MD_MULTIPATH=m | 831 | CONFIG_MD_MULTIPATH=m |
801 | CONFIG_MD_FAULTY=m | 832 | CONFIG_MD_FAULTY=m |
802 | CONFIG_BLK_DEV_DM=m | 833 | CONFIG_BLK_DEV_DM=m |
834 | # CONFIG_DM_DEBUG is not set | ||
803 | CONFIG_DM_CRYPT=m | 835 | CONFIG_DM_CRYPT=m |
804 | CONFIG_DM_SNAPSHOT=m | 836 | CONFIG_DM_SNAPSHOT=m |
805 | CONFIG_DM_MIRROR=m | 837 | CONFIG_DM_MIRROR=m |
@@ -854,6 +886,7 @@ CONFIG_LXT_PHY=m | |||
854 | CONFIG_CICADA_PHY=m | 886 | CONFIG_CICADA_PHY=m |
855 | CONFIG_VITESSE_PHY=m | 887 | CONFIG_VITESSE_PHY=m |
856 | CONFIG_SMSC_PHY=m | 888 | CONFIG_SMSC_PHY=m |
889 | # CONFIG_FIXED_PHY is not set | ||
857 | 890 | ||
858 | # | 891 | # |
859 | # Ethernet (10 or 100Mbit) | 892 | # Ethernet (10 or 100Mbit) |
@@ -873,6 +906,7 @@ CONFIG_MII=y | |||
873 | # CONFIG_HP100 is not set | 906 | # CONFIG_HP100 is not set |
874 | CONFIG_NET_PCI=y | 907 | CONFIG_NET_PCI=y |
875 | CONFIG_PCNET32=y | 908 | CONFIG_PCNET32=y |
909 | # CONFIG_PCNET32_NAPI is not set | ||
876 | # CONFIG_AMD8111_ETH is not set | 910 | # CONFIG_AMD8111_ETH is not set |
877 | # CONFIG_ADAPTEC_STARFIRE is not set | 911 | # CONFIG_ADAPTEC_STARFIRE is not set |
878 | # CONFIG_B44 is not set | 912 | # CONFIG_B44 is not set |
@@ -909,6 +943,7 @@ CONFIG_PCNET32=y | |||
909 | # CONFIG_VIA_VELOCITY is not set | 943 | # CONFIG_VIA_VELOCITY is not set |
910 | # CONFIG_TIGON3 is not set | 944 | # CONFIG_TIGON3 is not set |
911 | # CONFIG_BNX2 is not set | 945 | # CONFIG_BNX2 is not set |
946 | # CONFIG_QLA3XXX is not set | ||
912 | 947 | ||
913 | # | 948 | # |
914 | # Ethernet (10000 Mbit) | 949 | # Ethernet (10000 Mbit) |
@@ -956,6 +991,7 @@ CONFIG_PCNET32=y | |||
956 | # Input device support | 991 | # Input device support |
957 | # | 992 | # |
958 | CONFIG_INPUT=y | 993 | CONFIG_INPUT=y |
994 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
959 | 995 | ||
960 | # | 996 | # |
961 | # Userland interfaces | 997 | # Userland interfaces |
@@ -1070,12 +1106,12 @@ CONFIG_RTC=y | |||
1070 | # | 1106 | # |
1071 | # Misc devices | 1107 | # Misc devices |
1072 | # | 1108 | # |
1109 | # CONFIG_TIFM_CORE is not set | ||
1073 | 1110 | ||
1074 | # | 1111 | # |
1075 | # Multimedia devices | 1112 | # Multimedia devices |
1076 | # | 1113 | # |
1077 | # CONFIG_VIDEO_DEV is not set | 1114 | # CONFIG_VIDEO_DEV is not set |
1078 | CONFIG_VIDEO_V4L2=y | ||
1079 | 1115 | ||
1080 | # | 1116 | # |
1081 | # Digital Video Broadcasting Devices | 1117 | # Digital Video Broadcasting Devices |
@@ -1093,6 +1129,7 @@ CONFIG_VIDEO_V4L2=y | |||
1093 | # | 1129 | # |
1094 | # CONFIG_VGA_CONSOLE is not set | 1130 | # CONFIG_VGA_CONSOLE is not set |
1095 | CONFIG_DUMMY_CONSOLE=y | 1131 | CONFIG_DUMMY_CONSOLE=y |
1132 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
1096 | 1133 | ||
1097 | # | 1134 | # |
1098 | # Sound | 1135 | # Sound |
@@ -1191,6 +1228,7 @@ CONFIG_XFS_QUOTA=y | |||
1191 | CONFIG_XFS_SECURITY=y | 1228 | CONFIG_XFS_SECURITY=y |
1192 | CONFIG_XFS_POSIX_ACL=y | 1229 | CONFIG_XFS_POSIX_ACL=y |
1193 | # CONFIG_XFS_RT is not set | 1230 | # CONFIG_XFS_RT is not set |
1231 | # CONFIG_GFS2_FS is not set | ||
1194 | # CONFIG_OCFS2_FS is not set | 1232 | # CONFIG_OCFS2_FS is not set |
1195 | CONFIG_MINIX_FS=m | 1233 | CONFIG_MINIX_FS=m |
1196 | CONFIG_ROMFS_FS=m | 1234 | CONFIG_ROMFS_FS=m |
@@ -1230,8 +1268,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
1230 | # | 1268 | # |
1231 | CONFIG_PROC_FS=y | 1269 | CONFIG_PROC_FS=y |
1232 | CONFIG_PROC_KCORE=y | 1270 | CONFIG_PROC_KCORE=y |
1271 | CONFIG_PROC_SYSCTL=y | ||
1233 | CONFIG_SYSFS=y | 1272 | CONFIG_SYSFS=y |
1234 | CONFIG_TMPFS=y | 1273 | CONFIG_TMPFS=y |
1274 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1235 | # CONFIG_HUGETLB_PAGE is not set | 1275 | # CONFIG_HUGETLB_PAGE is not set |
1236 | CONFIG_RAMFS=y | 1276 | CONFIG_RAMFS=y |
1237 | # CONFIG_CONFIGFS_FS is not set | 1277 | # CONFIG_CONFIGFS_FS is not set |
@@ -1279,7 +1319,6 @@ CONFIG_SUNRPC=y | |||
1279 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1319 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
1280 | # CONFIG_SMB_FS is not set | 1320 | # CONFIG_SMB_FS is not set |
1281 | # CONFIG_CIFS is not set | 1321 | # CONFIG_CIFS is not set |
1282 | # CONFIG_CIFS_DEBUG2 is not set | ||
1283 | # CONFIG_NCP_FS is not set | 1322 | # CONFIG_NCP_FS is not set |
1284 | # CONFIG_CODA_FS is not set | 1323 | # CONFIG_CODA_FS is not set |
1285 | # CONFIG_AFS_FS is not set | 1324 | # CONFIG_AFS_FS is not set |
@@ -1336,6 +1375,11 @@ CONFIG_NLS_KOI8_U=m | |||
1336 | CONFIG_NLS_UTF8=m | 1375 | CONFIG_NLS_UTF8=m |
1337 | 1376 | ||
1338 | # | 1377 | # |
1378 | # Distributed Lock Manager | ||
1379 | # | ||
1380 | # CONFIG_DLM is not set | ||
1381 | |||
1382 | # | ||
1339 | # Profiling support | 1383 | # Profiling support |
1340 | # | 1384 | # |
1341 | # CONFIG_PROFILING is not set | 1385 | # CONFIG_PROFILING is not set |
@@ -1345,10 +1389,11 @@ CONFIG_NLS_UTF8=m | |||
1345 | # | 1389 | # |
1346 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 1390 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
1347 | # CONFIG_PRINTK_TIME is not set | 1391 | # CONFIG_PRINTK_TIME is not set |
1392 | CONFIG_ENABLE_MUST_CHECK=y | ||
1348 | # CONFIG_MAGIC_SYSRQ is not set | 1393 | # CONFIG_MAGIC_SYSRQ is not set |
1349 | # CONFIG_UNUSED_SYMBOLS is not set | 1394 | # CONFIG_UNUSED_SYMBOLS is not set |
1350 | # CONFIG_DEBUG_KERNEL is not set | 1395 | # CONFIG_DEBUG_KERNEL is not set |
1351 | CONFIG_LOG_BUF_SHIFT=14 | 1396 | CONFIG_LOG_BUF_SHIFT=15 |
1352 | # CONFIG_DEBUG_FS is not set | 1397 | # CONFIG_DEBUG_FS is not set |
1353 | CONFIG_CROSSCOMPILE=y | 1398 | CONFIG_CROSSCOMPILE=y |
1354 | CONFIG_CMDLINE="" | 1399 | CONFIG_CMDLINE="" |
@@ -1363,6 +1408,10 @@ CONFIG_CMDLINE="" | |||
1363 | # Cryptographic options | 1408 | # Cryptographic options |
1364 | # | 1409 | # |
1365 | CONFIG_CRYPTO=y | 1410 | CONFIG_CRYPTO=y |
1411 | CONFIG_CRYPTO_ALGAPI=y | ||
1412 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1413 | CONFIG_CRYPTO_HASH=y | ||
1414 | CONFIG_CRYPTO_MANAGER=m | ||
1366 | CONFIG_CRYPTO_HMAC=y | 1415 | CONFIG_CRYPTO_HMAC=y |
1367 | CONFIG_CRYPTO_NULL=m | 1416 | CONFIG_CRYPTO_NULL=m |
1368 | CONFIG_CRYPTO_MD4=m | 1417 | CONFIG_CRYPTO_MD4=m |
@@ -1372,9 +1421,12 @@ CONFIG_CRYPTO_SHA256=m | |||
1372 | CONFIG_CRYPTO_SHA512=m | 1421 | CONFIG_CRYPTO_SHA512=m |
1373 | CONFIG_CRYPTO_WP512=m | 1422 | CONFIG_CRYPTO_WP512=m |
1374 | CONFIG_CRYPTO_TGR192=m | 1423 | CONFIG_CRYPTO_TGR192=m |
1424 | CONFIG_CRYPTO_ECB=m | ||
1425 | CONFIG_CRYPTO_CBC=m | ||
1375 | CONFIG_CRYPTO_DES=m | 1426 | CONFIG_CRYPTO_DES=m |
1376 | CONFIG_CRYPTO_BLOWFISH=m | 1427 | CONFIG_CRYPTO_BLOWFISH=m |
1377 | CONFIG_CRYPTO_TWOFISH=m | 1428 | CONFIG_CRYPTO_TWOFISH=m |
1429 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1378 | CONFIG_CRYPTO_SERPENT=m | 1430 | CONFIG_CRYPTO_SERPENT=m |
1379 | CONFIG_CRYPTO_AES=m | 1431 | CONFIG_CRYPTO_AES=m |
1380 | CONFIG_CRYPTO_CAST5=m | 1432 | CONFIG_CRYPTO_CAST5=m |
diff --git a/arch/mips/ddb5xxx/ddb5477/irq.c b/arch/mips/ddb5xxx/ddb5477/irq.c index 513fc6722d84..a8bd2e66705c 100644 --- a/arch/mips/ddb5xxx/ddb5477/irq.c +++ b/arch/mips/ddb5xxx/ddb5477/irq.c | |||
@@ -153,8 +153,7 @@ u8 i8259_interrupt_ack(void) | |||
153 | * the first level int-handler will jump here if it is a vrc5477 irq | 153 | * the first level int-handler will jump here if it is a vrc5477 irq |
154 | */ | 154 | */ |
155 | #define NUM_5477_IRQS 32 | 155 | #define NUM_5477_IRQS 32 |
156 | static void | 156 | static void vrc5477_irq_dispatch(void) |
157 | vrc5477_irq_dispatch(struct pt_regs *regs) | ||
158 | { | 157 | { |
159 | u32 intStatus; | 158 | u32 intStatus; |
160 | u32 bitmask; | 159 | u32 bitmask; |
@@ -178,7 +177,7 @@ vrc5477_irq_dispatch(struct pt_regs *regs) | |||
178 | /* check for i8259 interrupts */ | 177 | /* check for i8259 interrupts */ |
179 | if (intStatus & (1 << VRC5477_I8259_CASCADE)) { | 178 | if (intStatus & (1 << VRC5477_I8259_CASCADE)) { |
180 | int i8259_irq = i8259_interrupt_ack(); | 179 | int i8259_irq = i8259_interrupt_ack(); |
181 | do_IRQ(I8259_IRQ_BASE + i8259_irq, regs); | 180 | do_IRQ(I8259_IRQ_BASE + i8259_irq); |
182 | return; | 181 | return; |
183 | } | 182 | } |
184 | } | 183 | } |
@@ -186,7 +185,7 @@ vrc5477_irq_dispatch(struct pt_regs *regs) | |||
186 | for (i=0, bitmask=1; i<= NUM_5477_IRQS; bitmask <<=1, i++) { | 185 | for (i=0, bitmask=1; i<= NUM_5477_IRQS; bitmask <<=1, i++) { |
187 | /* do we need to "and" with the int mask? */ | 186 | /* do we need to "and" with the int mask? */ |
188 | if (intStatus & bitmask) { | 187 | if (intStatus & bitmask) { |
189 | do_IRQ(VRC5477_IRQ_BASE + i, regs); | 188 | do_IRQ(VRC5477_IRQ_BASE + i); |
190 | return; | 189 | return; |
191 | } | 190 | } |
192 | } | 191 | } |
@@ -194,18 +193,18 @@ vrc5477_irq_dispatch(struct pt_regs *regs) | |||
194 | 193 | ||
195 | #define VR5477INTS (STATUSF_IP2|STATUSF_IP3|STATUSF_IP4|STATUSF_IP5|STATUSF_IP6) | 194 | #define VR5477INTS (STATUSF_IP2|STATUSF_IP3|STATUSF_IP4|STATUSF_IP5|STATUSF_IP6) |
196 | 195 | ||
197 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 196 | asmlinkage void plat_irq_dispatch(void) |
198 | { | 197 | { |
199 | unsigned int pending = read_c0_cause() & read_c0_status(); | 198 | unsigned int pending = read_c0_cause() & read_c0_status(); |
200 | 199 | ||
201 | if (pending & STATUSF_IP7) | 200 | if (pending & STATUSF_IP7) |
202 | do_IRQ(CPU_IRQ_BASE + 7, regs); | 201 | do_IRQ(CPU_IRQ_BASE + 7); |
203 | else if (pending & VR5477INTS) | 202 | else if (pending & VR5477INTS) |
204 | vrc5477_irq_dispatch(regs); | 203 | vrc5477_irq_dispatch(); |
205 | else if (pending & STATUSF_IP0) | 204 | else if (pending & STATUSF_IP0) |
206 | do_IRQ(CPU_IRQ_BASE, regs); | 205 | do_IRQ(CPU_IRQ_BASE); |
207 | else if (pending & STATUSF_IP1) | 206 | else if (pending & STATUSF_IP1) |
208 | do_IRQ(CPU_IRQ_BASE + 1, regs); | 207 | do_IRQ(CPU_IRQ_BASE + 1); |
209 | else | 208 | else |
210 | spurious_interrupt(regs); | 209 | spurious_interrupt(); |
211 | } | 210 | } |
diff --git a/arch/mips/dec/ecc-berr.c b/arch/mips/dec/ecc-berr.c index cc24c5ed0c05..3e374d05978f 100644 --- a/arch/mips/dec/ecc-berr.c +++ b/arch/mips/dec/ecc-berr.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <asm/addrspace.h> | 24 | #include <asm/addrspace.h> |
25 | #include <asm/bootinfo.h> | 25 | #include <asm/bootinfo.h> |
26 | #include <asm/cpu.h> | 26 | #include <asm/cpu.h> |
27 | #include <asm/irq_regs.h> | ||
27 | #include <asm/processor.h> | 28 | #include <asm/processor.h> |
28 | #include <asm/system.h> | 29 | #include <asm/system.h> |
29 | #include <asm/traps.h> | 30 | #include <asm/traps.h> |
@@ -200,8 +201,10 @@ int dec_ecc_be_handler(struct pt_regs *regs, int is_fixup) | |||
200 | return dec_ecc_be_backend(regs, is_fixup, 0); | 201 | return dec_ecc_be_backend(regs, is_fixup, 0); |
201 | } | 202 | } |
202 | 203 | ||
203 | irqreturn_t dec_ecc_be_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 204 | irqreturn_t dec_ecc_be_interrupt(int irq, void *dev_id) |
204 | { | 205 | { |
206 | struct pt_regs *regs = get_irq_regs(); | ||
207 | |||
205 | int action = dec_ecc_be_backend(regs, 0, 1); | 208 | int action = dec_ecc_be_backend(regs, 0, 1); |
206 | 209 | ||
207 | if (action == MIPS_BE_DISCARD) | 210 | if (action == MIPS_BE_DISCARD) |
diff --git a/arch/mips/dec/int-handler.S b/arch/mips/dec/int-handler.S index 455a65b91cb0..55d60d5e0e86 100644 --- a/arch/mips/dec/int-handler.S +++ b/arch/mips/dec/int-handler.S | |||
@@ -264,8 +264,10 @@ | |||
264 | srlv t3,t1,t2 | 264 | srlv t3,t1,t2 |
265 | 265 | ||
266 | handle_it: | 266 | handle_it: |
267 | LONG_L s0, TI_REGS($28) | ||
268 | LONG_S sp, TI_REGS($28) | ||
267 | jal do_IRQ | 269 | jal do_IRQ |
268 | move a1,sp | 270 | LONG_S s0, TI_REGS($28) |
269 | 271 | ||
270 | j ret_from_irq | 272 | j ret_from_irq |
271 | nop | 273 | nop |
diff --git a/arch/mips/dec/kn01-berr.c b/arch/mips/dec/kn01-berr.c index b9271db9bc76..f19b4617a0a6 100644 --- a/arch/mips/dec/kn01-berr.c +++ b/arch/mips/dec/kn01-berr.c | |||
@@ -150,10 +150,10 @@ int dec_kn01_be_handler(struct pt_regs *regs, int is_fixup) | |||
150 | return dec_kn01_be_backend(regs, is_fixup, 0); | 150 | return dec_kn01_be_backend(regs, is_fixup, 0); |
151 | } | 151 | } |
152 | 152 | ||
153 | irqreturn_t dec_kn01_be_interrupt(int irq, void *dev_id, | 153 | irqreturn_t dec_kn01_be_interrupt(int irq, void *dev_id) |
154 | struct pt_regs *regs) | ||
155 | { | 154 | { |
156 | volatile u16 *csr = (void *)CKSEG1ADDR(KN01_SLOT_BASE + KN01_CSR); | 155 | volatile u16 *csr = (void *)CKSEG1ADDR(KN01_SLOT_BASE + KN01_CSR); |
156 | struct pt_regs *regs = get_irq_regs(); | ||
157 | int action; | 157 | int action; |
158 | 158 | ||
159 | if (!(*csr & KN01_CSR_MEMERR)) | 159 | if (!(*csr & KN01_CSR_MEMERR)) |
diff --git a/arch/mips/dec/kn02xa-berr.c b/arch/mips/dec/kn02xa-berr.c index 6cd3f94f79fe..7a053aadcd3a 100644 --- a/arch/mips/dec/kn02xa-berr.c +++ b/arch/mips/dec/kn02xa-berr.c | |||
@@ -21,6 +21,8 @@ | |||
21 | #include <linux/types.h> | 21 | #include <linux/types.h> |
22 | 22 | ||
23 | #include <asm/addrspace.h> | 23 | #include <asm/addrspace.h> |
24 | #include <asm/irq_regs.h> | ||
25 | #include <asm/ptrace.h> | ||
24 | #include <asm/system.h> | 26 | #include <asm/system.h> |
25 | #include <asm/traps.h> | 27 | #include <asm/traps.h> |
26 | 28 | ||
@@ -104,9 +106,9 @@ int dec_kn02xa_be_handler(struct pt_regs *regs, int is_fixup) | |||
104 | return dec_kn02xa_be_backend(regs, is_fixup, 0); | 106 | return dec_kn02xa_be_backend(regs, is_fixup, 0); |
105 | } | 107 | } |
106 | 108 | ||
107 | irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id, | 109 | irqreturn_t dec_kn02xa_be_interrupt(int irq, void *dev_id) |
108 | struct pt_regs *regs) | ||
109 | { | 110 | { |
111 | struct pt_regs *regs = get_irq_regs(); | ||
110 | int action = dec_kn02xa_be_backend(regs, 0, 1); | 112 | int action = dec_kn02xa_be_backend(regs, 0, 1); |
111 | 113 | ||
112 | if (action == MIPS_BE_DISCARD) | 114 | if (action == MIPS_BE_DISCARD) |
diff --git a/arch/mips/dec/reset.c b/arch/mips/dec/reset.c index f78c6da47921..56397227adb0 100644 --- a/arch/mips/dec/reset.c +++ b/arch/mips/dec/reset.c | |||
@@ -8,7 +8,6 @@ | |||
8 | #include <linux/linkage.h> | 8 | #include <linux/linkage.h> |
9 | 9 | ||
10 | #include <asm/addrspace.h> | 10 | #include <asm/addrspace.h> |
11 | #include <asm/ptrace.h> | ||
12 | 11 | ||
13 | typedef void ATTRIB_NORET (* noret_func_t)(void); | 12 | typedef void ATTRIB_NORET (* noret_func_t)(void); |
14 | 13 | ||
@@ -35,7 +34,7 @@ void ATTRIB_NORET dec_machine_power_off(void) | |||
35 | back_to_prom(); | 34 | back_to_prom(); |
36 | } | 35 | } |
37 | 36 | ||
38 | irqreturn_t dec_intr_halt(int irq, void *dev_id, struct pt_regs *regs) | 37 | irqreturn_t dec_intr_halt(int irq, void *dev_id) |
39 | { | 38 | { |
40 | dec_machine_halt(); | 39 | dec_machine_halt(); |
41 | } | 40 | } |
diff --git a/arch/mips/dec/setup.c b/arch/mips/dec/setup.c index d43241c2f541..6b7481e97bec 100644 --- a/arch/mips/dec/setup.c +++ b/arch/mips/dec/setup.c | |||
@@ -46,7 +46,7 @@ | |||
46 | extern void dec_machine_restart(char *command); | 46 | extern void dec_machine_restart(char *command); |
47 | extern void dec_machine_halt(void); | 47 | extern void dec_machine_halt(void); |
48 | extern void dec_machine_power_off(void); | 48 | extern void dec_machine_power_off(void); |
49 | extern irqreturn_t dec_intr_halt(int irq, void *dev_id, struct pt_regs *regs); | 49 | extern irqreturn_t dec_intr_halt(int irq, void *dev_id); |
50 | 50 | ||
51 | unsigned long dec_kn_slot_base, dec_kn_slot_size; | 51 | unsigned long dec_kn_slot_base, dec_kn_slot_size; |
52 | 52 | ||
diff --git a/arch/mips/emma2rh/common/irq.c b/arch/mips/emma2rh/common/irq.c index 3af57693c84c..c191b3e9d9d9 100644 --- a/arch/mips/emma2rh/common/irq.c +++ b/arch/mips/emma2rh/common/irq.c | |||
@@ -39,7 +39,7 @@ | |||
39 | /* | 39 | /* |
40 | * the first level int-handler will jump here if it is a emma2rh irq | 40 | * the first level int-handler will jump here if it is a emma2rh irq |
41 | */ | 41 | */ |
42 | asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs) | 42 | void emma2rh_irq_dispatch(void) |
43 | { | 43 | { |
44 | u32 intStatus; | 44 | u32 intStatus; |
45 | u32 bitmask; | 45 | u32 bitmask; |
@@ -56,7 +56,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs) | |||
56 | & emma2rh_in32(EMMA2RH_BHIF_SW_INT_EN); | 56 | & emma2rh_in32(EMMA2RH_BHIF_SW_INT_EN); |
57 | for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) { | 57 | for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) { |
58 | if (swIntStatus & bitmask) { | 58 | if (swIntStatus & bitmask) { |
59 | do_IRQ(EMMA2RH_SW_IRQ_BASE + i, regs); | 59 | do_IRQ(EMMA2RH_SW_IRQ_BASE + i); |
60 | return; | 60 | return; |
61 | } | 61 | } |
62 | } | 62 | } |
@@ -65,7 +65,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs) | |||
65 | 65 | ||
66 | for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) { | 66 | for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) { |
67 | if (intStatus & bitmask) { | 67 | if (intStatus & bitmask) { |
68 | do_IRQ(EMMA2RH_IRQ_BASE + i, regs); | 68 | do_IRQ(EMMA2RH_IRQ_BASE + i); |
69 | return; | 69 | return; |
70 | } | 70 | } |
71 | } | 71 | } |
@@ -81,7 +81,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs) | |||
81 | & emma2rh_in32(EMMA2RH_GPIO_INT_MASK); | 81 | & emma2rh_in32(EMMA2RH_GPIO_INT_MASK); |
82 | for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) { | 82 | for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) { |
83 | if (gpioIntStatus & bitmask) { | 83 | if (gpioIntStatus & bitmask) { |
84 | do_IRQ(EMMA2RH_GPIO_IRQ_BASE + i, regs); | 84 | do_IRQ(EMMA2RH_GPIO_IRQ_BASE + i); |
85 | return; | 85 | return; |
86 | } | 86 | } |
87 | } | 87 | } |
@@ -90,7 +90,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs) | |||
90 | 90 | ||
91 | for (i = 32, bitmask = 1; i < 64; i++, bitmask <<= 1) { | 91 | for (i = 32, bitmask = 1; i < 64; i++, bitmask <<= 1) { |
92 | if (intStatus & bitmask) { | 92 | if (intStatus & bitmask) { |
93 | do_IRQ(EMMA2RH_IRQ_BASE + i, regs); | 93 | do_IRQ(EMMA2RH_IRQ_BASE + i); |
94 | return; | 94 | return; |
95 | } | 95 | } |
96 | } | 96 | } |
@@ -100,7 +100,7 @@ asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs) | |||
100 | 100 | ||
101 | for (i = 64, bitmask = 1; i < 96; i++, bitmask <<= 1) { | 101 | for (i = 64, bitmask = 1; i < 96; i++, bitmask <<= 1) { |
102 | if (intStatus & bitmask) { | 102 | if (intStatus & bitmask) { |
103 | do_IRQ(EMMA2RH_IRQ_BASE + i, regs); | 103 | do_IRQ(EMMA2RH_IRQ_BASE + i); |
104 | return; | 104 | return; |
105 | } | 105 | } |
106 | } | 106 | } |
diff --git a/arch/mips/emma2rh/markeins/irq.c b/arch/mips/emma2rh/markeins/irq.c index 2a736be42c8c..c93369cb4115 100644 --- a/arch/mips/emma2rh/markeins/irq.c +++ b/arch/mips/emma2rh/markeins/irq.c | |||
@@ -57,7 +57,7 @@ | |||
57 | extern void emma2rh_sw_irq_init(u32 base); | 57 | extern void emma2rh_sw_irq_init(u32 base); |
58 | extern void emma2rh_gpio_irq_init(u32 base); | 58 | extern void emma2rh_gpio_irq_init(u32 base); |
59 | extern void emma2rh_irq_init(u32 base); | 59 | extern void emma2rh_irq_init(u32 base); |
60 | extern asmlinkage void emma2rh_irq_dispatch(struct pt_regs *regs); | 60 | extern void emma2rh_irq_dispatch(void); |
61 | 61 | ||
62 | static struct irqaction irq_cascade = { | 62 | static struct irqaction irq_cascade = { |
63 | .handler = no_action, | 63 | .handler = no_action, |
@@ -114,20 +114,20 @@ void __init arch_init_irq(void) | |||
114 | setup_irq(CPU_IRQ_BASE + CPU_EMMA2RH_CASCADE, &irq_cascade); | 114 | setup_irq(CPU_IRQ_BASE + CPU_EMMA2RH_CASCADE, &irq_cascade); |
115 | } | 115 | } |
116 | 116 | ||
117 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 117 | asmlinkage void plat_irq_dispatch(void) |
118 | { | 118 | { |
119 | unsigned int pending = read_c0_status() & read_c0_cause(); | 119 | unsigned int pending = read_c0_status() & read_c0_cause(); |
120 | 120 | ||
121 | if (pending & STATUSF_IP7) | 121 | if (pending & STATUSF_IP7) |
122 | do_IRQ(CPU_IRQ_BASE + 7, regs); | 122 | do_IRQ(CPU_IRQ_BASE + 7); |
123 | else if (pending & STATUSF_IP2) | 123 | else if (pending & STATUSF_IP2) |
124 | emma2rh_irq_dispatch(regs); | 124 | emma2rh_irq_dispatch(); |
125 | else if (pending & STATUSF_IP1) | 125 | else if (pending & STATUSF_IP1) |
126 | do_IRQ(CPU_IRQ_BASE + 1, regs); | 126 | do_IRQ(CPU_IRQ_BASE + 1); |
127 | else if (pending & STATUSF_IP0) | 127 | else if (pending & STATUSF_IP0) |
128 | do_IRQ(CPU_IRQ_BASE + 0, regs); | 128 | do_IRQ(CPU_IRQ_BASE + 0); |
129 | else | 129 | else |
130 | spurious_interrupt(regs); | 130 | spurious_interrupt(); |
131 | } | 131 | } |
132 | 132 | ||
133 | 133 | ||
diff --git a/arch/mips/gt64120/common/time.c b/arch/mips/gt64120/common/time.c index 7feca49350d1..c83ae6acd601 100644 --- a/arch/mips/gt64120/common/time.c +++ b/arch/mips/gt64120/common/time.c | |||
@@ -10,7 +10,7 @@ | |||
10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
11 | #include <linux/sched.h> | 11 | #include <linux/sched.h> |
12 | #include <linux/kernel_stat.h> | 12 | #include <linux/kernel_stat.h> |
13 | #include <asm/ptrace.h> | 13 | #include <asm/irq_regs.h> |
14 | #include <asm/gt64120.h> | 14 | #include <asm/gt64120.h> |
15 | 15 | ||
16 | /* | 16 | /* |
@@ -19,7 +19,7 @@ | |||
19 | * differently than other MIPS interrupts. | 19 | * differently than other MIPS interrupts. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | static void gt64120_irq(int irq, void *dev_id, struct pt_regs *regs) | 22 | static irqreturn_t gt64120_irq(int irq, void *dev_id) |
23 | { | 23 | { |
24 | unsigned int irq_src, int_high_src, irq_src_mask, int_high_src_mask; | 24 | unsigned int irq_src, int_high_src, irq_src_mask, int_high_src_mask; |
25 | int handled = 0; | 25 | int handled = 0; |
@@ -36,12 +36,14 @@ static void gt64120_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
36 | irq_src &= ~0x00000800; | 36 | irq_src &= ~0x00000800; |
37 | do_timer(1); | 37 | do_timer(1); |
38 | #ifndef CONFIG_SMP | 38 | #ifndef CONFIG_SMP |
39 | update_process_times(user_mode(regs)); | 39 | update_process_times(user_mode(get_irq_regs())); |
40 | #endif | 40 | #endif |
41 | } | 41 | } |
42 | 42 | ||
43 | GT_WRITE(GT_INTRCAUSE_OFS, 0); | 43 | GT_WRITE(GT_INTRCAUSE_OFS, 0); |
44 | GT_WRITE(GT_HINTRCAUSE_OFS, 0); | 44 | GT_WRITE(GT_HINTRCAUSE_OFS, 0); |
45 | |||
46 | return IRQ_HANDLED; | ||
45 | } | 47 | } |
46 | 48 | ||
47 | /* | 49 | /* |
diff --git a/arch/mips/gt64120/ev64120/irq.c b/arch/mips/gt64120/ev64120/irq.c index 5d939ac58f3f..ed4d82b9a24a 100644 --- a/arch/mips/gt64120/ev64120/irq.c +++ b/arch/mips/gt64120/ev64120/irq.c | |||
@@ -46,22 +46,22 @@ | |||
46 | #include <asm/system.h> | 46 | #include <asm/system.h> |
47 | #include <asm/gt64120.h> | 47 | #include <asm/gt64120.h> |
48 | 48 | ||
49 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 49 | asmlinkage void plat_irq_dispatch(void) |
50 | { | 50 | { |
51 | unsigned int pending = read_c0_status() & read_c0_cause(); | 51 | unsigned int pending = read_c0_status() & read_c0_cause(); |
52 | 52 | ||
53 | if (pending & STATUSF_IP4) /* int2 hardware line (timer) */ | 53 | if (pending & STATUSF_IP4) /* int2 hardware line (timer) */ |
54 | do_IRQ(4, regs); | 54 | do_IRQ(4); |
55 | else if (pending & STATUSF_IP2) /* int0 hardware line */ | 55 | else if (pending & STATUSF_IP2) /* int0 hardware line */ |
56 | do_IRQ(GT_INTA, regs); | 56 | do_IRQ(GT_INTA); |
57 | else if (pending & STATUSF_IP5) /* int3 hardware line */ | 57 | else if (pending & STATUSF_IP5) /* int3 hardware line */ |
58 | do_IRQ(GT_INTD, regs); | 58 | do_IRQ(GT_INTD); |
59 | else if (pending & STATUSF_IP6) /* int4 hardware line */ | 59 | else if (pending & STATUSF_IP6) /* int4 hardware line */ |
60 | do_IRQ(6, regs); | 60 | do_IRQ(6); |
61 | else if (pending & STATUSF_IP7) /* compare int */ | 61 | else if (pending & STATUSF_IP7) /* compare int */ |
62 | do_IRQ(7, regs); | 62 | do_IRQ(7); |
63 | else | 63 | else |
64 | spurious_interrupt(regs); | 64 | spurious_interrupt(); |
65 | } | 65 | } |
66 | 66 | ||
67 | static void disable_ev64120_irq(unsigned int irq_nr) | 67 | static void disable_ev64120_irq(unsigned int irq_nr) |
diff --git a/arch/mips/gt64120/ev64120/setup.c b/arch/mips/gt64120/ev64120/setup.c index 4236da31ecc6..91c2d3f41617 100644 --- a/arch/mips/gt64120/ev64120/setup.c +++ b/arch/mips/gt64120/ev64120/setup.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #include <asm/irq.h> | 42 | #include <asm/irq.h> |
43 | #include <asm/pci.h> | 43 | #include <asm/pci.h> |
44 | #include <asm/processor.h> | 44 | #include <asm/processor.h> |
45 | #include <asm/ptrace.h> | ||
46 | #include <asm/time.h> | 45 | #include <asm/time.h> |
47 | #include <asm/reboot.h> | 46 | #include <asm/reboot.h> |
48 | #include <asm/traps.h> | 47 | #include <asm/traps.h> |
diff --git a/arch/mips/gt64120/momenco_ocelot/irq.c b/arch/mips/gt64120/momenco_ocelot/irq.c index 885f67f32ea3..d9294401ccb0 100644 --- a/arch/mips/gt64120/momenco_ocelot/irq.c +++ b/arch/mips/gt64120/momenco_ocelot/irq.c | |||
@@ -48,22 +48,22 @@ | |||
48 | #include <asm/mipsregs.h> | 48 | #include <asm/mipsregs.h> |
49 | #include <asm/system.h> | 49 | #include <asm/system.h> |
50 | 50 | ||
51 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 51 | asmlinkage void plat_irq_dispatch(void) |
52 | { | 52 | { |
53 | unsigned int pending = read_c0_status() & read_c0_cause(); | 53 | unsigned int pending = read_c0_status() & read_c0_cause(); |
54 | 54 | ||
55 | if (pending & STATUSF_IP2) /* int0 hardware line */ | 55 | if (pending & STATUSF_IP2) /* int0 hardware line */ |
56 | do_IRQ(2, regs); | 56 | do_IRQ(2); |
57 | else if (pending & STATUSF_IP3) /* int1 hardware line */ | 57 | else if (pending & STATUSF_IP3) /* int1 hardware line */ |
58 | do_IRQ(3, regs); | 58 | do_IRQ(3); |
59 | else if (pending & STATUSF_IP4) /* int2 hardware line */ | 59 | else if (pending & STATUSF_IP4) /* int2 hardware line */ |
60 | do_IRQ(4, regs); | 60 | do_IRQ(4); |
61 | else if (pending & STATUSF_IP5) /* int3 hardware line */ | 61 | else if (pending & STATUSF_IP5) /* int3 hardware line */ |
62 | do_IRQ(5, regs); | 62 | do_IRQ(5); |
63 | else if (pending & STATUSF_IP6) /* int4 hardware line */ | 63 | else if (pending & STATUSF_IP6) /* int4 hardware line */ |
64 | do_IRQ(6, regs); | 64 | do_IRQ(6); |
65 | else if (pending & STATUSF_IP7) /* cpu timer */ | 65 | else if (pending & STATUSF_IP7) /* cpu timer */ |
66 | do_IRQ(7, regs); | 66 | do_IRQ(7); |
67 | else { | 67 | else { |
68 | /* | 68 | /* |
69 | * Now look at the extended interrupts | 69 | * Now look at the extended interrupts |
@@ -71,13 +71,13 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
71 | pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; | 71 | pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; |
72 | 72 | ||
73 | if (pending & STATUSF_IP8) /* int6 hardware line */ | 73 | if (pending & STATUSF_IP8) /* int6 hardware line */ |
74 | do_IRQ(8, regs); | 74 | do_IRQ(8); |
75 | else if (pending & STATUSF_IP9) /* int7 hardware line */ | 75 | else if (pending & STATUSF_IP9) /* int7 hardware line */ |
76 | do_IRQ(9, regs); | 76 | do_IRQ(9); |
77 | else if (pending & STATUSF_IP10) /* int8 hardware line */ | 77 | else if (pending & STATUSF_IP10) /* int8 hardware line */ |
78 | do_IRQ(10, regs); | 78 | do_IRQ(10); |
79 | else if (pending & STATUSF_IP11) /* int9 hardware line */ | 79 | else if (pending & STATUSF_IP11) /* int9 hardware line */ |
80 | do_IRQ(11, regs); | 80 | do_IRQ(11); |
81 | } | 81 | } |
82 | } | 82 | } |
83 | 83 | ||
diff --git a/arch/mips/gt64120/momenco_ocelot/setup.c b/arch/mips/gt64120/momenco_ocelot/setup.c index 9804642ecf89..0e5bbee2d5b7 100644 --- a/arch/mips/gt64120/momenco_ocelot/setup.c +++ b/arch/mips/gt64120/momenco_ocelot/setup.c | |||
@@ -56,7 +56,6 @@ | |||
56 | #include <asm/irq.h> | 56 | #include <asm/irq.h> |
57 | #include <asm/pci.h> | 57 | #include <asm/pci.h> |
58 | #include <asm/processor.h> | 58 | #include <asm/processor.h> |
59 | #include <asm/ptrace.h> | ||
60 | #include <asm/reboot.h> | 59 | #include <asm/reboot.h> |
61 | #include <asm/traps.h> | 60 | #include <asm/traps.h> |
62 | #include <linux/bootmem.h> | 61 | #include <linux/bootmem.h> |
diff --git a/arch/mips/gt64120/wrppmc/irq.c b/arch/mips/gt64120/wrppmc/irq.c index 8d75a43ce877..eedfc24e1eae 100644 --- a/arch/mips/gt64120/wrppmc/irq.c +++ b/arch/mips/gt64120/wrppmc/irq.c | |||
@@ -30,18 +30,18 @@ | |||
30 | #include <asm/irq_cpu.h> | 30 | #include <asm/irq_cpu.h> |
31 | #include <asm/gt64120.h> | 31 | #include <asm/gt64120.h> |
32 | 32 | ||
33 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 33 | asmlinkage void plat_irq_dispatch(void) |
34 | { | 34 | { |
35 | unsigned int pending = read_c0_status() & read_c0_cause(); | 35 | unsigned int pending = read_c0_status() & read_c0_cause(); |
36 | 36 | ||
37 | if (pending & STATUSF_IP7) | 37 | if (pending & STATUSF_IP7) |
38 | do_IRQ(WRPPMC_MIPS_TIMER_IRQ, regs); /* CPU Compare/Count internal timer */ | 38 | do_IRQ(WRPPMC_MIPS_TIMER_IRQ); /* CPU Compare/Count internal timer */ |
39 | else if (pending & STATUSF_IP6) | 39 | else if (pending & STATUSF_IP6) |
40 | do_IRQ(WRPPMC_UART16550_IRQ, regs); /* UART 16550 port */ | 40 | do_IRQ(WRPPMC_UART16550_IRQ); /* UART 16550 port */ |
41 | else if (pending & STATUSF_IP3) | 41 | else if (pending & STATUSF_IP3) |
42 | do_IRQ(WRPPMC_PCI_INTA_IRQ, regs); /* PCI INT_A */ | 42 | do_IRQ(WRPPMC_PCI_INTA_IRQ); /* PCI INT_A */ |
43 | else | 43 | else |
44 | spurious_interrupt(regs); | 44 | spurious_interrupt(); |
45 | } | 45 | } |
46 | 46 | ||
47 | /** | 47 | /** |
diff --git a/arch/mips/jazz/irq.c b/arch/mips/jazz/irq.c index eef05093deb4..d5bd6b3a0933 100644 --- a/arch/mips/jazz/irq.c +++ b/arch/mips/jazz/irq.c | |||
@@ -94,26 +94,26 @@ void __init arch_init_irq(void) | |||
94 | change_c0_status(ST0_IM, IE_IRQ4 | IE_IRQ3 | IE_IRQ2 | IE_IRQ1); | 94 | change_c0_status(ST0_IM, IE_IRQ4 | IE_IRQ3 | IE_IRQ2 | IE_IRQ1); |
95 | } | 95 | } |
96 | 96 | ||
97 | static void loc_call(unsigned int irq, struct pt_regs *regs, unsigned int mask) | 97 | static void loc_call(unsigned int irq, unsigned int mask) |
98 | { | 98 | { |
99 | r4030_write_reg16(JAZZ_IO_IRQ_ENABLE, | 99 | r4030_write_reg16(JAZZ_IO_IRQ_ENABLE, |
100 | r4030_read_reg16(JAZZ_IO_IRQ_ENABLE) & mask); | 100 | r4030_read_reg16(JAZZ_IO_IRQ_ENABLE) & mask); |
101 | do_IRQ(irq, regs); | 101 | do_IRQ(irq); |
102 | r4030_write_reg16(JAZZ_IO_IRQ_ENABLE, | 102 | r4030_write_reg16(JAZZ_IO_IRQ_ENABLE, |
103 | r4030_read_reg16(JAZZ_IO_IRQ_ENABLE) | mask); | 103 | r4030_read_reg16(JAZZ_IO_IRQ_ENABLE) | mask); |
104 | } | 104 | } |
105 | 105 | ||
106 | static void ll_local_dev(struct pt_regs *regs) | 106 | static void ll_local_dev(void) |
107 | { | 107 | { |
108 | switch (r4030_read_reg32(JAZZ_IO_IRQ_SOURCE)) { | 108 | switch (r4030_read_reg32(JAZZ_IO_IRQ_SOURCE)) { |
109 | case 0: | 109 | case 0: |
110 | panic("Unimplemented loc_no_irq handler"); | 110 | panic("Unimplemented loc_no_irq handler"); |
111 | break; | 111 | break; |
112 | case 4: | 112 | case 4: |
113 | loc_call(JAZZ_PARALLEL_IRQ, regs, JAZZ_IE_PARALLEL); | 113 | loc_call(JAZZ_PARALLEL_IRQ, JAZZ_IE_PARALLEL); |
114 | break; | 114 | break; |
115 | case 8: | 115 | case 8: |
116 | loc_call(JAZZ_PARALLEL_IRQ, regs, JAZZ_IE_FLOPPY); | 116 | loc_call(JAZZ_PARALLEL_IRQ, JAZZ_IE_FLOPPY); |
117 | break; | 117 | break; |
118 | case 12: | 118 | case 12: |
119 | panic("Unimplemented loc_sound handler"); | 119 | panic("Unimplemented loc_sound handler"); |
@@ -122,27 +122,27 @@ static void ll_local_dev(struct pt_regs *regs) | |||
122 | panic("Unimplemented loc_video handler"); | 122 | panic("Unimplemented loc_video handler"); |
123 | break; | 123 | break; |
124 | case 20: | 124 | case 20: |
125 | loc_call(JAZZ_ETHERNET_IRQ, regs, JAZZ_IE_ETHERNET); | 125 | loc_call(JAZZ_ETHERNET_IRQ, JAZZ_IE_ETHERNET); |
126 | break; | 126 | break; |
127 | case 24: | 127 | case 24: |
128 | loc_call(JAZZ_SCSI_IRQ, regs, JAZZ_IE_SCSI); | 128 | loc_call(JAZZ_SCSI_IRQ, JAZZ_IE_SCSI); |
129 | break; | 129 | break; |
130 | case 28: | 130 | case 28: |
131 | loc_call(JAZZ_KEYBOARD_IRQ, regs, JAZZ_IE_KEYBOARD); | 131 | loc_call(JAZZ_KEYBOARD_IRQ, JAZZ_IE_KEYBOARD); |
132 | break; | 132 | break; |
133 | case 32: | 133 | case 32: |
134 | loc_call(JAZZ_MOUSE_IRQ, regs, JAZZ_IE_MOUSE); | 134 | loc_call(JAZZ_MOUSE_IRQ, JAZZ_IE_MOUSE); |
135 | break; | 135 | break; |
136 | case 36: | 136 | case 36: |
137 | loc_call(JAZZ_SERIAL1_IRQ, regs, JAZZ_IE_SERIAL1); | 137 | loc_call(JAZZ_SERIAL1_IRQ, JAZZ_IE_SERIAL1); |
138 | break; | 138 | break; |
139 | case 40: | 139 | case 40: |
140 | loc_call(JAZZ_SERIAL2_IRQ, regs, JAZZ_IE_SERIAL2); | 140 | loc_call(JAZZ_SERIAL2_IRQ, JAZZ_IE_SERIAL2); |
141 | break; | 141 | break; |
142 | } | 142 | } |
143 | } | 143 | } |
144 | 144 | ||
145 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 145 | asmlinkage void plat_irq_dispatch(void) |
146 | { | 146 | { |
147 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; | 147 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; |
148 | 148 | ||
@@ -150,13 +150,13 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
150 | write_c0_compare(0); | 150 | write_c0_compare(0); |
151 | else if (pending & IE_IRQ4) { | 151 | else if (pending & IE_IRQ4) { |
152 | r4030_read_reg32(JAZZ_TIMER_REGISTER); | 152 | r4030_read_reg32(JAZZ_TIMER_REGISTER); |
153 | do_IRQ(JAZZ_TIMER_IRQ, regs); | 153 | do_IRQ(JAZZ_TIMER_IRQ); |
154 | } else if (pending & IE_IRQ3) | 154 | } else if (pending & IE_IRQ3) |
155 | panic("Unimplemented ISA NMI handler"); | 155 | panic("Unimplemented ISA NMI handler"); |
156 | else if (pending & IE_IRQ2) | 156 | else if (pending & IE_IRQ2) |
157 | do_IRQ(r4030_read_reg32(JAZZ_EISA_IRQ_ACK), regs); | 157 | do_IRQ(r4030_read_reg32(JAZZ_EISA_IRQ_ACK)); |
158 | else if (pending & IE_IRQ1) { | 158 | else if (pending & IE_IRQ1) { |
159 | ll_local_dev(regs); | 159 | ll_local_dev(); |
160 | } else if (unlikely(pending & IE_IRQ0)) | 160 | } else if (unlikely(pending & IE_IRQ0)) |
161 | panic("Unimplemented local_dma handler"); | 161 | panic("Unimplemented local_dma handler"); |
162 | else if (pending & IE_SW1) { | 162 | else if (pending & IE_SW1) { |
diff --git a/arch/mips/jazz/setup.c b/arch/mips/jazz/setup.c index 487a9ea1ef00..6dc4135d6e11 100644 --- a/arch/mips/jazz/setup.c +++ b/arch/mips/jazz/setup.c | |||
@@ -19,12 +19,12 @@ | |||
19 | #include <linux/fb.h> | 19 | #include <linux/fb.h> |
20 | #include <linux/ide.h> | 20 | #include <linux/ide.h> |
21 | #include <linux/pm.h> | 21 | #include <linux/pm.h> |
22 | #include <linux/screen_info.h> | ||
22 | 23 | ||
23 | #include <asm/bootinfo.h> | 24 | #include <asm/bootinfo.h> |
24 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
25 | #include <asm/jazz.h> | 26 | #include <asm/jazz.h> |
26 | #include <asm/jazzdma.h> | 27 | #include <asm/jazzdma.h> |
27 | #include <asm/ptrace.h> | ||
28 | #include <asm/reboot.h> | 28 | #include <asm/reboot.h> |
29 | #include <asm/io.h> | 29 | #include <asm/io.h> |
30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
@@ -45,10 +45,27 @@ void __init plat_time_init(struct irqaction *irq) | |||
45 | } | 45 | } |
46 | 46 | ||
47 | static struct resource jazz_io_resources[] = { | 47 | static struct resource jazz_io_resources[] = { |
48 | { "dma1", 0x00, 0x1f, IORESOURCE_BUSY }, | 48 | { |
49 | { "timer", 0x40, 0x5f, IORESOURCE_BUSY }, | 49 | .start = 0x00, |
50 | { "dma page reg", 0x80, 0x8f, IORESOURCE_BUSY }, | 50 | .end = 0x1f, |
51 | { "dma2", 0xc0, 0xdf, IORESOURCE_BUSY }, | 51 | .name = "dma1", |
52 | .flags = IORESOURCE_BUSY | ||
53 | }, { | ||
54 | .start = 0x40, | ||
55 | .end = 0x5f, | ||
56 | .name = "timer", | ||
57 | .end = IORESOURCE_BUSY | ||
58 | }, { | ||
59 | .start = 0x80, | ||
60 | .end = 0x8f, | ||
61 | .name = "dma page reg", | ||
62 | .flags = IORESOURCE_BUSY | ||
63 | }, { | ||
64 | .start = 0xc0, | ||
65 | .end = 0xdf, | ||
66 | .name = "dma2", | ||
67 | .flags = IORESOURCE_BUSY | ||
68 | } | ||
52 | }; | 69 | }; |
53 | 70 | ||
54 | void __init plat_mem_setup(void) | 71 | void __init plat_mem_setup(void) |
@@ -81,8 +98,6 @@ void __init plat_mem_setup(void) | |||
81 | _machine_halt = jazz_machine_halt; | 98 | _machine_halt = jazz_machine_halt; |
82 | pm_power_off = jazz_machine_power_off; | 99 | pm_power_off = jazz_machine_power_off; |
83 | 100 | ||
84 | #warning "Somebody should check if screen_info is ok for Jazz." | ||
85 | |||
86 | screen_info = (struct screen_info) { | 101 | screen_info = (struct screen_info) { |
87 | 0, 0, /* orig-x, orig-y */ | 102 | 0, 0, /* orig-x, orig-y */ |
88 | 0, /* unused */ | 103 | 0, /* unused */ |
diff --git a/arch/mips/jmr3927/rbhma3100/irq.c b/arch/mips/jmr3927/rbhma3100/irq.c index 722174481467..39a0243bed9a 100644 --- a/arch/mips/jmr3927/rbhma3100/irq.c +++ b/arch/mips/jmr3927/rbhma3100/irq.c | |||
@@ -46,6 +46,7 @@ | |||
46 | #include <linux/smp_lock.h> | 46 | #include <linux/smp_lock.h> |
47 | #include <linux/bitops.h> | 47 | #include <linux/bitops.h> |
48 | 48 | ||
49 | #include <asm/irq_regs.h> | ||
49 | #include <asm/io.h> | 50 | #include <asm/io.h> |
50 | #include <asm/mipsregs.h> | 51 | #include <asm/mipsregs.h> |
51 | #include <asm/system.h> | 52 | #include <asm/system.h> |
@@ -239,45 +240,80 @@ struct tb_irq_space jmr3927_ioc_irqspace = { | |||
239 | .space_id = 0, | 240 | .space_id = 0, |
240 | can_share : 1 | 241 | can_share : 1 |
241 | }; | 242 | }; |
243 | |||
242 | struct tb_irq_space jmr3927_irc_irqspace = { | 244 | struct tb_irq_space jmr3927_irc_irqspace = { |
243 | .next = NULL, | 245 | .next = NULL, |
244 | .start_irqno = JMR3927_IRQ_IRC, | 246 | .start_irqno = JMR3927_IRQ_IRC, |
245 | nr_irqs : JMR3927_NR_IRQ_IRC, | 247 | .nr_irqs = JMR3927_NR_IRQ_IRC, |
246 | .mask_func = mask_irq_irc, | 248 | .mask_func = mask_irq_irc, |
247 | .unmask_func = unmask_irq_irc, | 249 | .unmask_func = unmask_irq_irc, |
248 | .name = "on-chip", | 250 | .name = "on-chip", |
249 | .space_id = 0, | 251 | .space_id = 0, |
250 | can_share : 0 | 252 | .can_share = 0 |
251 | }; | 253 | }; |
252 | 254 | ||
253 | void jmr3927_spurious(struct pt_regs *regs) | 255 | |
256 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND | ||
257 | static int tx_branch_likely_bug_count = 0; | ||
258 | static int have_tx_branch_likely_bug = 0; | ||
259 | |||
260 | static void tx_branch_likely_bug_fixup(void) | ||
261 | { | ||
262 | struct pt_regs *regs = get_irq_regs(); | ||
263 | |||
264 | /* TX39/49-BUG: Under this condition, the insn in delay slot | ||
265 | of the branch likely insn is executed (not nullified) even | ||
266 | the branch condition is false. */ | ||
267 | if (!have_tx_branch_likely_bug) | ||
268 | return; | ||
269 | if ((regs->cp0_epc & 0xfff) == 0xffc && | ||
270 | KSEGX(regs->cp0_epc) != KSEG0 && | ||
271 | KSEGX(regs->cp0_epc) != KSEG1) { | ||
272 | unsigned int insn = *(unsigned int*)(regs->cp0_epc - 4); | ||
273 | /* beql,bnel,blezl,bgtzl */ | ||
274 | /* bltzl,bgezl,blezall,bgezall */ | ||
275 | /* bczfl, bcztl */ | ||
276 | if ((insn & 0xf0000000) == 0x50000000 || | ||
277 | (insn & 0xfc0e0000) == 0x04020000 || | ||
278 | (insn & 0xf3fe0000) == 0x41020000) { | ||
279 | regs->cp0_epc -= 4; | ||
280 | tx_branch_likely_bug_count++; | ||
281 | printk(KERN_INFO | ||
282 | "fix branch-likery bug in %s (insn %08x)\n", | ||
283 | current->comm, insn); | ||
284 | } | ||
285 | } | ||
286 | } | ||
287 | #endif | ||
288 | |||
289 | static void jmr3927_spurious(void) | ||
254 | { | 290 | { |
255 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND | 291 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND |
256 | tx_branch_likely_bug_fixup(regs); | 292 | tx_branch_likely_bug_fixup(); |
257 | #endif | 293 | #endif |
258 | printk(KERN_WARNING "spurious interrupt (cause 0x%lx, pc 0x%lx, ra 0x%lx).\n", | 294 | printk(KERN_WARNING "spurious interrupt (cause 0x%lx, pc 0x%lx, ra 0x%lx).\n", |
259 | regs->cp0_cause, regs->cp0_epc, regs->regs[31]); | 295 | regs->cp0_cause, regs->cp0_epc, regs->regs[31]); |
260 | } | 296 | } |
261 | 297 | ||
262 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 298 | asmlinkage void plat_irq_dispatch(void) |
263 | { | 299 | { |
264 | int irq; | 300 | int irq; |
265 | 301 | ||
266 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND | 302 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND |
267 | tx_branch_likely_bug_fixup(regs); | 303 | tx_branch_likely_bug_fixup(); |
268 | #endif | 304 | #endif |
269 | if ((regs->cp0_cause & CAUSEF_IP7) == 0) { | 305 | if ((regs->cp0_cause & CAUSEF_IP7) == 0) { |
270 | #if 0 | 306 | #if 0 |
271 | jmr3927_spurious(regs); | 307 | jmr3927_spurious(); |
272 | #endif | 308 | #endif |
273 | return; | 309 | return; |
274 | } | 310 | } |
275 | irq = (regs->cp0_cause >> CAUSEB_IP2) & 0x0f; | 311 | irq = (regs->cp0_cause >> CAUSEB_IP2) & 0x0f; |
276 | 312 | ||
277 | do_IRQ(irq + JMR3927_IRQ_IRC, regs); | 313 | do_IRQ(irq + JMR3927_IRQ_IRC); |
278 | } | 314 | } |
279 | 315 | ||
280 | static irqreturn_t jmr3927_ioc_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 316 | static irqreturn_t jmr3927_ioc_interrupt(int irq, void *dev_id) |
281 | { | 317 | { |
282 | unsigned char istat = jmr3927_ioc_reg_in(JMR3927_IOC_INTS2_ADDR); | 318 | unsigned char istat = jmr3927_ioc_reg_in(JMR3927_IOC_INTS2_ADDR); |
283 | int i; | 319 | int i; |
@@ -285,7 +321,7 @@ static irqreturn_t jmr3927_ioc_interrupt(int irq, void *dev_id, struct pt_regs * | |||
285 | for (i = 0; i < JMR3927_NR_IRQ_IOC; i++) { | 321 | for (i = 0; i < JMR3927_NR_IRQ_IOC; i++) { |
286 | if (istat & (1 << i)) { | 322 | if (istat & (1 << i)) { |
287 | irq = JMR3927_IRQ_IOC + i; | 323 | irq = JMR3927_IRQ_IOC + i; |
288 | do_IRQ(irq, regs); | 324 | do_IRQ(irq); |
289 | } | 325 | } |
290 | } | 326 | } |
291 | return IRQ_HANDLED; | 327 | return IRQ_HANDLED; |
@@ -295,7 +331,7 @@ static struct irqaction ioc_action = { | |||
295 | jmr3927_ioc_interrupt, 0, CPU_MASK_NONE, "IOC", NULL, NULL, | 331 | jmr3927_ioc_interrupt, 0, CPU_MASK_NONE, "IOC", NULL, NULL, |
296 | }; | 332 | }; |
297 | 333 | ||
298 | static irqreturn_t jmr3927_isac_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 334 | static irqreturn_t jmr3927_isac_interrupt(int irq, void *dev_id) |
299 | { | 335 | { |
300 | unsigned char istat = jmr3927_isac_reg_in(JMR3927_ISAC_INTS2_ADDR); | 336 | unsigned char istat = jmr3927_isac_reg_in(JMR3927_ISAC_INTS2_ADDR); |
301 | int i; | 337 | int i; |
@@ -303,7 +339,7 @@ static irqreturn_t jmr3927_isac_interrupt(int irq, void *dev_id, struct pt_regs | |||
303 | for (i = 0; i < JMR3927_NR_IRQ_ISAC; i++) { | 339 | for (i = 0; i < JMR3927_NR_IRQ_ISAC; i++) { |
304 | if (istat & (1 << i)) { | 340 | if (istat & (1 << i)) { |
305 | irq = JMR3927_IRQ_ISAC + i; | 341 | irq = JMR3927_IRQ_ISAC + i; |
306 | do_IRQ(irq, regs); | 342 | do_IRQ(irq); |
307 | } | 343 | } |
308 | } | 344 | } |
309 | return IRQ_HANDLED; | 345 | return IRQ_HANDLED; |
@@ -314,7 +350,7 @@ static struct irqaction isac_action = { | |||
314 | }; | 350 | }; |
315 | 351 | ||
316 | 352 | ||
317 | static irqreturn_t jmr3927_isaerr_interrupt(int irq, void * dev_id, struct pt_regs * regs) | 353 | static irqreturn_t jmr3927_isaerr_interrupt(int irq, void *dev_id) |
318 | { | 354 | { |
319 | printk(KERN_WARNING "ISA error interrupt (irq 0x%x).\n", irq); | 355 | printk(KERN_WARNING "ISA error interrupt (irq 0x%x).\n", irq); |
320 | 356 | ||
@@ -324,7 +360,7 @@ static struct irqaction isaerr_action = { | |||
324 | jmr3927_isaerr_interrupt, 0, CPU_MASK_NONE, "ISA error", NULL, NULL, | 360 | jmr3927_isaerr_interrupt, 0, CPU_MASK_NONE, "ISA error", NULL, NULL, |
325 | }; | 361 | }; |
326 | 362 | ||
327 | static irqreturn_t jmr3927_pcierr_interrupt(int irq, void * dev_id, struct pt_regs * regs) | 363 | static irqreturn_t jmr3927_pcierr_interrupt(int irq, void *dev_id) |
328 | { | 364 | { |
329 | printk(KERN_WARNING "PCI error interrupt (irq 0x%x).\n", irq); | 365 | printk(KERN_WARNING "PCI error interrupt (irq 0x%x).\n", irq); |
330 | printk(KERN_WARNING "pcistat:%02x, lbstat:%04lx\n", | 366 | printk(KERN_WARNING "pcistat:%02x, lbstat:%04lx\n", |
@@ -439,33 +475,3 @@ void jmr3927_irq_init(u32 irq_base) | |||
439 | 475 | ||
440 | jmr3927_irq_base = irq_base; | 476 | jmr3927_irq_base = irq_base; |
441 | } | 477 | } |
442 | |||
443 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND | ||
444 | static int tx_branch_likely_bug_count = 0; | ||
445 | static int have_tx_branch_likely_bug = 0; | ||
446 | void tx_branch_likely_bug_fixup(struct pt_regs *regs) | ||
447 | { | ||
448 | /* TX39/49-BUG: Under this condition, the insn in delay slot | ||
449 | of the branch likely insn is executed (not nullified) even | ||
450 | the branch condition is false. */ | ||
451 | if (!have_tx_branch_likely_bug) | ||
452 | return; | ||
453 | if ((regs->cp0_epc & 0xfff) == 0xffc && | ||
454 | KSEGX(regs->cp0_epc) != KSEG0 && | ||
455 | KSEGX(regs->cp0_epc) != KSEG1) { | ||
456 | unsigned int insn = *(unsigned int*)(regs->cp0_epc - 4); | ||
457 | /* beql,bnel,blezl,bgtzl */ | ||
458 | /* bltzl,bgezl,blezall,bgezall */ | ||
459 | /* bczfl, bcztl */ | ||
460 | if ((insn & 0xf0000000) == 0x50000000 || | ||
461 | (insn & 0xfc0e0000) == 0x04020000 || | ||
462 | (insn & 0xf3fe0000) == 0x41020000) { | ||
463 | regs->cp0_epc -= 4; | ||
464 | tx_branch_likely_bug_count++; | ||
465 | printk(KERN_INFO | ||
466 | "fix branch-likery bug in %s (insn %08x)\n", | ||
467 | current->comm, insn); | ||
468 | } | ||
469 | } | ||
470 | } | ||
471 | #endif | ||
diff --git a/arch/mips/kernel/asm-offsets.c b/arch/mips/kernel/asm-offsets.c index ec28077d5ee2..e9ce5b3721af 100644 --- a/arch/mips/kernel/asm-offsets.c +++ b/arch/mips/kernel/asm-offsets.c | |||
@@ -93,11 +93,12 @@ void output_thread_info_defines(void) | |||
93 | offset("#define TI_TASK ", struct thread_info, task); | 93 | offset("#define TI_TASK ", struct thread_info, task); |
94 | offset("#define TI_EXEC_DOMAIN ", struct thread_info, exec_domain); | 94 | offset("#define TI_EXEC_DOMAIN ", struct thread_info, exec_domain); |
95 | offset("#define TI_FLAGS ", struct thread_info, flags); | 95 | offset("#define TI_FLAGS ", struct thread_info, flags); |
96 | offset("#define TI_TP_VALUE ", struct thread_info, tp_value); | ||
96 | offset("#define TI_CPU ", struct thread_info, cpu); | 97 | offset("#define TI_CPU ", struct thread_info, cpu); |
97 | offset("#define TI_PRE_COUNT ", struct thread_info, preempt_count); | 98 | offset("#define TI_PRE_COUNT ", struct thread_info, preempt_count); |
98 | offset("#define TI_ADDR_LIMIT ", struct thread_info, addr_limit); | 99 | offset("#define TI_ADDR_LIMIT ", struct thread_info, addr_limit); |
99 | offset("#define TI_RESTART_BLOCK ", struct thread_info, restart_block); | 100 | offset("#define TI_RESTART_BLOCK ", struct thread_info, restart_block); |
100 | offset("#define TI_TP_VALUE ", struct thread_info, tp_value); | 101 | offset("#define TI_REGS ", struct thread_info, regs); |
101 | constant("#define _THREAD_SIZE_ORDER ", THREAD_SIZE_ORDER); | 102 | constant("#define _THREAD_SIZE_ORDER ", THREAD_SIZE_ORDER); |
102 | constant("#define _THREAD_SIZE ", THREAD_SIZE); | 103 | constant("#define _THREAD_SIZE ", THREAD_SIZE); |
103 | constant("#define _THREAD_MASK ", THREAD_MASK); | 104 | constant("#define _THREAD_MASK ", THREAD_MASK); |
diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S index 766655f35250..e93e43e1f42d 100644 --- a/arch/mips/kernel/entry.S +++ b/arch/mips/kernel/entry.S | |||
@@ -79,7 +79,6 @@ FEXPORT(syscall_exit) | |||
79 | FEXPORT(restore_all) # restore full frame | 79 | FEXPORT(restore_all) # restore full frame |
80 | #ifdef CONFIG_MIPS_MT_SMTC | 80 | #ifdef CONFIG_MIPS_MT_SMTC |
81 | /* Detect and execute deferred IPI "interrupts" */ | 81 | /* Detect and execute deferred IPI "interrupts" */ |
82 | move a0,sp | ||
83 | jal deferred_smtc_ipi | 82 | jal deferred_smtc_ipi |
84 | /* Re-arm any temporarily masked interrupts not explicitly "acked" */ | 83 | /* Re-arm any temporarily masked interrupts not explicitly "acked" */ |
85 | mfc0 v0, CP0_TCSTATUS | 84 | mfc0 v0, CP0_TCSTATUS |
diff --git a/arch/mips/kernel/genex.S b/arch/mips/kernel/genex.S index af6ef2fd8300..50ed77297728 100644 --- a/arch/mips/kernel/genex.S +++ b/arch/mips/kernel/genex.S | |||
@@ -131,9 +131,11 @@ NESTED(handle_int, PT_SIZE, sp) | |||
131 | CLI | 131 | CLI |
132 | TRACE_IRQS_OFF | 132 | TRACE_IRQS_OFF |
133 | 133 | ||
134 | PTR_LA ra, ret_from_irq | 134 | LONG_L s0, TI_REGS($28) |
135 | move a0, sp | 135 | LONG_S sp, TI_REGS($28) |
136 | j plat_irq_dispatch | 136 | jal plat_irq_dispatch |
137 | LONG_S s0, TI_REGS($28) | ||
138 | j ret_from_irq | ||
137 | END(handle_int) | 139 | END(handle_int) |
138 | 140 | ||
139 | __INIT | 141 | __INIT |
@@ -219,9 +221,12 @@ NESTED(except_vec_vi_handler, 0, sp) | |||
219 | #endif /* CONFIG_MIPS_MT_SMTC */ | 221 | #endif /* CONFIG_MIPS_MT_SMTC */ |
220 | CLI | 222 | CLI |
221 | TRACE_IRQS_OFF | 223 | TRACE_IRQS_OFF |
222 | move a0, sp | 224 | |
225 | LONG_L s0, TI_REGS($28) | ||
226 | LONG_S sp, TI_REGS($28) | ||
227 | jalr v0 | ||
228 | LONG_S s0, TI_REGS($28) | ||
223 | PTR_LA ra, ret_from_irq | 229 | PTR_LA ra, ret_from_irq |
224 | jr v0 | ||
225 | END(except_vec_vi_handler) | 230 | END(except_vec_vi_handler) |
226 | 231 | ||
227 | /* | 232 | /* |
diff --git a/arch/mips/kernel/irq-msc01.c b/arch/mips/kernel/irq-msc01.c index 63dfeb41796b..650a80ca3741 100644 --- a/arch/mips/kernel/irq-msc01.c +++ b/arch/mips/kernel/irq-msc01.c | |||
@@ -1,16 +1,17 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2004 MIPS Inc | ||
3 | * Author: chris@mips.com | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | 2 | * This program is free software; you can redistribute it and/or modify it |
6 | * under the terms of the GNU General Public License as published by the | 3 | * under the terms of the GNU General Public License as published by the |
7 | * Free Software Foundation; either version 2 of the License, or (at your | 4 | * Free Software Foundation; either version 2 of the License, or (at your |
8 | * option) any later version. | 5 | * option) any later version. |
6 | * | ||
7 | * Copyright (c) 2004 MIPS Inc | ||
8 | * Author: chris@mips.com | ||
9 | * | ||
10 | * Copyright (C) 2004, 06 Ralf Baechle <ralf@linux-mips.org> | ||
9 | */ | 11 | */ |
10 | #include <linux/module.h> | 12 | #include <linux/module.h> |
11 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
12 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
13 | #include <asm/ptrace.h> | ||
14 | #include <linux/sched.h> | 15 | #include <linux/sched.h> |
15 | #include <linux/kernel_stat.h> | 16 | #include <linux/kernel_stat.h> |
16 | #include <asm/io.h> | 17 | #include <asm/io.h> |
@@ -115,14 +116,14 @@ static void end_msc_irq(unsigned int irq) | |||
115 | /* | 116 | /* |
116 | * Interrupt handler for interrupts coming from SOC-it. | 117 | * Interrupt handler for interrupts coming from SOC-it. |
117 | */ | 118 | */ |
118 | void ll_msc_irq(struct pt_regs *regs) | 119 | void ll_msc_irq(void) |
119 | { | 120 | { |
120 | unsigned int irq; | 121 | unsigned int irq; |
121 | 122 | ||
122 | /* read the interrupt vector register */ | 123 | /* read the interrupt vector register */ |
123 | MSCIC_READ(MSC01_IC_VEC, irq); | 124 | MSCIC_READ(MSC01_IC_VEC, irq); |
124 | if (irq < 64) | 125 | if (irq < 64) |
125 | do_IRQ(irq + irq_base, regs); | 126 | do_IRQ(irq + irq_base); |
126 | else { | 127 | else { |
127 | /* Ignore spurious interrupt */ | 128 | /* Ignore spurious interrupt */ |
128 | } | 129 | } |
diff --git a/arch/mips/kernel/irq-mv6434x.c b/arch/mips/kernel/irq-mv6434x.c index b117e64da64d..37d106202b83 100644 --- a/arch/mips/kernel/irq-mv6434x.c +++ b/arch/mips/kernel/irq-mv6434x.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright 2002 Momentum Computer | 2 | * Copyright 2002 Momentum Computer |
3 | * Author: mdharm@momenco.com | 3 | * Author: mdharm@momenco.com |
4 | * Copyright (C) 2004 Ralf Baechle <ralf@linux-mips.org> | 4 | * Copyright (C) 2004, 06 Ralf Baechle <ralf@linux-mips.org> |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms of the GNU General Public License as published by the | 7 | * under the terms of the GNU General Public License as published by the |
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/mv643xx.h> | 15 | #include <linux/mv643xx.h> |
16 | #include <linux/sched.h> | 16 | #include <linux/sched.h> |
17 | 17 | ||
18 | #include <asm/ptrace.h> | ||
19 | #include <asm/io.h> | 18 | #include <asm/io.h> |
20 | #include <asm/irq.h> | 19 | #include <asm/irq.h> |
21 | #include <asm/marvell.h> | 20 | #include <asm/marvell.h> |
@@ -113,7 +112,7 @@ static void end_mv64340_irq(unsigned int irq) | |||
113 | * Interrupt handler for interrupts coming from the Marvell chip. | 112 | * Interrupt handler for interrupts coming from the Marvell chip. |
114 | * It could be built in ethernet ports etc... | 113 | * It could be built in ethernet ports etc... |
115 | */ | 114 | */ |
116 | void ll_mv64340_irq(struct pt_regs *regs) | 115 | void ll_mv64340_irq(void) |
117 | { | 116 | { |
118 | unsigned int irq_src_low, irq_src_high; | 117 | unsigned int irq_src_low, irq_src_high; |
119 | unsigned int irq_mask_low, irq_mask_high; | 118 | unsigned int irq_mask_low, irq_mask_high; |
@@ -129,9 +128,9 @@ void ll_mv64340_irq(struct pt_regs *regs) | |||
129 | irq_src_high &= irq_mask_high; | 128 | irq_src_high &= irq_mask_high; |
130 | 129 | ||
131 | if (irq_src_low) | 130 | if (irq_src_low) |
132 | do_IRQ(ls1bit32(irq_src_low) + irq_base, regs); | 131 | do_IRQ(ls1bit32(irq_src_low) + irq_base); |
133 | else | 132 | else |
134 | do_IRQ(ls1bit32(irq_src_high) + irq_base + 32, regs); | 133 | do_IRQ(ls1bit32(irq_src_high) + irq_base + 32); |
135 | } | 134 | } |
136 | 135 | ||
137 | #define shutdown_mv64340_irq disable_mv64340_irq | 136 | #define shutdown_mv64340_irq disable_mv64340_irq |
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index a00b0e7ab9b1..dd24434392b6 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c | |||
@@ -53,9 +53,8 @@ unsigned long irq_hwmask[NR_IRQS]; | |||
53 | * SMP cross-CPU interrupts have their own specific | 53 | * SMP cross-CPU interrupts have their own specific |
54 | * handlers). | 54 | * handlers). |
55 | */ | 55 | */ |
56 | asmlinkage unsigned int do_IRQ(unsigned int irq, struct pt_regs *regs) | 56 | asmlinkage unsigned int do_IRQ(unsigned int irq) |
57 | { | 57 | { |
58 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
59 | irq_enter(); | 58 | irq_enter(); |
60 | 59 | ||
61 | __DO_IRQ_SMTC_HOOK(); | 60 | __DO_IRQ_SMTC_HOOK(); |
@@ -63,7 +62,6 @@ asmlinkage unsigned int do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
63 | 62 | ||
64 | irq_exit(); | 63 | irq_exit(); |
65 | 64 | ||
66 | set_irq_regs(old_regs); | ||
67 | return 1; | 65 | return 1; |
68 | } | 66 | } |
69 | 67 | ||
@@ -112,7 +110,7 @@ skip: | |||
112 | return 0; | 110 | return 0; |
113 | } | 111 | } |
114 | 112 | ||
115 | asmlinkage void spurious_interrupt(struct pt_regs *regs) | 113 | asmlinkage void spurious_interrupt(void) |
116 | { | 114 | { |
117 | atomic_inc(&irq_err_count); | 115 | atomic_inc(&irq_err_count); |
118 | } | 116 | } |
diff --git a/arch/mips/kernel/proc.c b/arch/mips/kernel/proc.c index d8beef107902..46ee5a68ab13 100644 --- a/arch/mips/kernel/proc.c +++ b/arch/mips/kernel/proc.c | |||
@@ -89,9 +89,9 @@ static const char *cpu_name[] = { | |||
89 | 89 | ||
90 | static int show_cpuinfo(struct seq_file *m, void *v) | 90 | static int show_cpuinfo(struct seq_file *m, void *v) |
91 | { | 91 | { |
92 | unsigned int version = current_cpu_data.processor_id; | ||
93 | unsigned int fp_vers = current_cpu_data.fpu_id; | ||
94 | unsigned long n = (unsigned long) v - 1; | 92 | unsigned long n = (unsigned long) v - 1; |
93 | unsigned int version = cpu_data[n].processor_id; | ||
94 | unsigned int fp_vers = cpu_data[n].fpu_id; | ||
95 | char fmt [64]; | 95 | char fmt [64]; |
96 | 96 | ||
97 | #ifdef CONFIG_SMP | 97 | #ifdef CONFIG_SMP |
@@ -108,8 +108,8 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
108 | seq_printf(m, "processor\t\t: %ld\n", n); | 108 | seq_printf(m, "processor\t\t: %ld\n", n); |
109 | sprintf(fmt, "cpu model\t\t: %%s V%%d.%%d%s\n", | 109 | sprintf(fmt, "cpu model\t\t: %%s V%%d.%%d%s\n", |
110 | cpu_has_fpu ? " FPU V%d.%d" : ""); | 110 | cpu_has_fpu ? " FPU V%d.%d" : ""); |
111 | seq_printf(m, fmt, cpu_name[current_cpu_data.cputype <= CPU_LAST ? | 111 | seq_printf(m, fmt, cpu_name[cpu_data[n].cputype <= CPU_LAST ? |
112 | current_cpu_data.cputype : CPU_UNKNOWN], | 112 | cpu_data[n].cputype : CPU_UNKNOWN], |
113 | (version >> 4) & 0x0f, version & 0x0f, | 113 | (version >> 4) & 0x0f, version & 0x0f, |
114 | (fp_vers >> 4) & 0x0f, fp_vers & 0x0f); | 114 | (fp_vers >> 4) & 0x0f, fp_vers & 0x0f); |
115 | seq_printf(m, "BogoMIPS\t\t: %lu.%02lu\n", | 115 | seq_printf(m, "BogoMIPS\t\t: %lu.%02lu\n", |
@@ -118,7 +118,7 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
118 | seq_printf(m, "wait instruction\t: %s\n", cpu_wait ? "yes" : "no"); | 118 | seq_printf(m, "wait instruction\t: %s\n", cpu_wait ? "yes" : "no"); |
119 | seq_printf(m, "microsecond timers\t: %s\n", | 119 | seq_printf(m, "microsecond timers\t: %s\n", |
120 | cpu_has_counter ? "yes" : "no"); | 120 | cpu_has_counter ? "yes" : "no"); |
121 | seq_printf(m, "tlb_entries\t\t: %d\n", current_cpu_data.tlbsize); | 121 | seq_printf(m, "tlb_entries\t\t: %d\n", cpu_data[n].tlbsize); |
122 | seq_printf(m, "extra interrupt vector\t: %s\n", | 122 | seq_printf(m, "extra interrupt vector\t: %s\n", |
123 | cpu_has_divec ? "yes" : "no"); | 123 | cpu_has_divec ? "yes" : "no"); |
124 | seq_printf(m, "hardware watchpoint\t: %s\n", | 124 | seq_printf(m, "hardware watchpoint\t: %s\n", |
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c index cdab1b2cd134..8c8c8324f775 100644 --- a/arch/mips/kernel/rtlx.c +++ b/arch/mips/kernel/rtlx.c | |||
@@ -61,16 +61,16 @@ static int sp_stopping = 0; | |||
61 | 61 | ||
62 | extern void *vpe_get_shared(int index); | 62 | extern void *vpe_get_shared(int index); |
63 | 63 | ||
64 | static void rtlx_dispatch(struct pt_regs *regs) | 64 | static void rtlx_dispatch(void) |
65 | { | 65 | { |
66 | do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_RTLX_IRQ, regs); | 66 | do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_RTLX_IRQ); |
67 | } | 67 | } |
68 | 68 | ||
69 | 69 | ||
70 | /* Interrupt handler may be called before rtlx_init has otherwise had | 70 | /* Interrupt handler may be called before rtlx_init has otherwise had |
71 | a chance to run. | 71 | a chance to run. |
72 | */ | 72 | */ |
73 | static irqreturn_t rtlx_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 73 | static irqreturn_t rtlx_interrupt(int irq, void *dev_id) |
74 | { | 74 | { |
75 | int i; | 75 | int i; |
76 | 76 | ||
diff --git a/arch/mips/kernel/smp-mt.c b/arch/mips/kernel/smp-mt.c index 766253c44f3f..3b5f3b632622 100644 --- a/arch/mips/kernel/smp-mt.c +++ b/arch/mips/kernel/smp-mt.c | |||
@@ -106,22 +106,22 @@ void __init sanitize_tlb_entries(void) | |||
106 | clear_c0_mvpcontrol(MVPCONTROL_VPC); | 106 | clear_c0_mvpcontrol(MVPCONTROL_VPC); |
107 | } | 107 | } |
108 | 108 | ||
109 | static void ipi_resched_dispatch (struct pt_regs *regs) | 109 | static void ipi_resched_dispatch(void) |
110 | { | 110 | { |
111 | do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ, regs); | 111 | do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ); |
112 | } | 112 | } |
113 | 113 | ||
114 | static void ipi_call_dispatch (struct pt_regs *regs) | 114 | static void ipi_call_dispatch(void) |
115 | { | 115 | { |
116 | do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_IPI_CALL_IRQ, regs); | 116 | do_IRQ(MIPSCPU_INT_BASE + MIPS_CPU_IPI_CALL_IRQ); |
117 | } | 117 | } |
118 | 118 | ||
119 | irqreturn_t ipi_resched_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 119 | static irqreturn_t ipi_resched_interrupt(int irq, void *dev_id) |
120 | { | 120 | { |
121 | return IRQ_HANDLED; | 121 | return IRQ_HANDLED; |
122 | } | 122 | } |
123 | 123 | ||
124 | irqreturn_t ipi_call_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 124 | static irqreturn_t ipi_call_interrupt(int irq, void *dev_id) |
125 | { | 125 | { |
126 | smp_call_function_interrupt(); | 126 | smp_call_function_interrupt(); |
127 | 127 | ||
@@ -250,8 +250,8 @@ void __init plat_prepare_cpus(unsigned int max_cpus) | |||
250 | { | 250 | { |
251 | /* set up ipi interrupts */ | 251 | /* set up ipi interrupts */ |
252 | if (cpu_has_vint) { | 252 | if (cpu_has_vint) { |
253 | set_vi_handler (MIPS_CPU_IPI_RESCHED_IRQ, ipi_resched_dispatch); | 253 | set_vi_handler(MIPS_CPU_IPI_RESCHED_IRQ, ipi_resched_dispatch); |
254 | set_vi_handler (MIPS_CPU_IPI_CALL_IRQ, ipi_call_dispatch); | 254 | set_vi_handler(MIPS_CPU_IPI_CALL_IRQ, ipi_call_dispatch); |
255 | } | 255 | } |
256 | 256 | ||
257 | cpu_ipi_resched_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ; | 257 | cpu_ipi_resched_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_RESCHED_IRQ; |
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index 604bcc5cb7c8..cc1f7474f7d7 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -82,7 +82,7 @@ struct smtc_ipi_q freeIPIq; | |||
82 | 82 | ||
83 | /* Forward declarations */ | 83 | /* Forward declarations */ |
84 | 84 | ||
85 | void ipi_decode(struct pt_regs *, struct smtc_ipi *); | 85 | void ipi_decode(struct smtc_ipi *); |
86 | void post_direct_ipi(int cpu, struct smtc_ipi *pipi); | 86 | void post_direct_ipi(int cpu, struct smtc_ipi *pipi); |
87 | void setup_cross_vpe_interrupts(void); | 87 | void setup_cross_vpe_interrupts(void); |
88 | void init_smtc_stats(void); | 88 | void init_smtc_stats(void); |
@@ -820,19 +820,19 @@ void post_direct_ipi(int cpu, struct smtc_ipi *pipi) | |||
820 | write_tc_c0_tcrestart(__smtc_ipi_vector); | 820 | write_tc_c0_tcrestart(__smtc_ipi_vector); |
821 | } | 821 | } |
822 | 822 | ||
823 | void ipi_resched_interrupt(struct pt_regs *regs) | 823 | static void ipi_resched_interrupt(void) |
824 | { | 824 | { |
825 | /* Return from interrupt should be enough to cause scheduler check */ | 825 | /* Return from interrupt should be enough to cause scheduler check */ |
826 | } | 826 | } |
827 | 827 | ||
828 | 828 | ||
829 | void ipi_call_interrupt(struct pt_regs *regs) | 829 | static void ipi_call_interrupt(void) |
830 | { | 830 | { |
831 | /* Invoke generic function invocation code in smp.c */ | 831 | /* Invoke generic function invocation code in smp.c */ |
832 | smp_call_function_interrupt(); | 832 | smp_call_function_interrupt(); |
833 | } | 833 | } |
834 | 834 | ||
835 | void ipi_decode(struct pt_regs *regs, struct smtc_ipi *pipi) | 835 | void ipi_decode(struct smtc_ipi *pipi) |
836 | { | 836 | { |
837 | void *arg_copy = pipi->arg; | 837 | void *arg_copy = pipi->arg; |
838 | int type_copy = pipi->type; | 838 | int type_copy = pipi->type; |
@@ -846,15 +846,15 @@ void ipi_decode(struct pt_regs *regs, struct smtc_ipi *pipi) | |||
846 | #ifdef SMTC_IDLE_HOOK_DEBUG | 846 | #ifdef SMTC_IDLE_HOOK_DEBUG |
847 | clock_hang_reported[dest_copy] = 0; | 847 | clock_hang_reported[dest_copy] = 0; |
848 | #endif /* SMTC_IDLE_HOOK_DEBUG */ | 848 | #endif /* SMTC_IDLE_HOOK_DEBUG */ |
849 | local_timer_interrupt(0, NULL, regs); | 849 | local_timer_interrupt(0, NULL); |
850 | break; | 850 | break; |
851 | case LINUX_SMP_IPI: | 851 | case LINUX_SMP_IPI: |
852 | switch ((int)arg_copy) { | 852 | switch ((int)arg_copy) { |
853 | case SMP_RESCHEDULE_YOURSELF: | 853 | case SMP_RESCHEDULE_YOURSELF: |
854 | ipi_resched_interrupt(regs); | 854 | ipi_resched_interrupt(); |
855 | break; | 855 | break; |
856 | case SMP_CALL_FUNCTION: | 856 | case SMP_CALL_FUNCTION: |
857 | ipi_call_interrupt(regs); | 857 | ipi_call_interrupt(); |
858 | break; | 858 | break; |
859 | default: | 859 | default: |
860 | printk("Impossible SMTC IPI Argument 0x%x\n", | 860 | printk("Impossible SMTC IPI Argument 0x%x\n", |
@@ -868,7 +868,7 @@ void ipi_decode(struct pt_regs *regs, struct smtc_ipi *pipi) | |||
868 | } | 868 | } |
869 | } | 869 | } |
870 | 870 | ||
871 | void deferred_smtc_ipi(struct pt_regs *regs) | 871 | void deferred_smtc_ipi(void) |
872 | { | 872 | { |
873 | struct smtc_ipi *pipi; | 873 | struct smtc_ipi *pipi; |
874 | unsigned long flags; | 874 | unsigned long flags; |
@@ -883,7 +883,7 @@ void deferred_smtc_ipi(struct pt_regs *regs) | |||
883 | while((pipi = smtc_ipi_dq(&IPIQ[q])) != NULL) { | 883 | while((pipi = smtc_ipi_dq(&IPIQ[q])) != NULL) { |
884 | /* ipi_decode() should be called with interrupts off */ | 884 | /* ipi_decode() should be called with interrupts off */ |
885 | local_irq_save(flags); | 885 | local_irq_save(flags); |
886 | ipi_decode(regs, pipi); | 886 | ipi_decode(pipi); |
887 | local_irq_restore(flags); | 887 | local_irq_restore(flags); |
888 | } | 888 | } |
889 | } | 889 | } |
@@ -917,7 +917,7 @@ void smtc_timer_broadcast(int vpe) | |||
917 | 917 | ||
918 | static int cpu_ipi_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_IRQ; | 918 | static int cpu_ipi_irq = MIPSCPU_INT_BASE + MIPS_CPU_IPI_IRQ; |
919 | 919 | ||
920 | static irqreturn_t ipi_interrupt(int irq, void *dev_idm, struct pt_regs *regs) | 920 | static irqreturn_t ipi_interrupt(int irq, void *dev_idm) |
921 | { | 921 | { |
922 | int my_vpe = cpu_data[smp_processor_id()].vpe_id; | 922 | int my_vpe = cpu_data[smp_processor_id()].vpe_id; |
923 | int my_tc = cpu_data[smp_processor_id()].tc_id; | 923 | int my_tc = cpu_data[smp_processor_id()].tc_id; |
@@ -978,7 +978,7 @@ static irqreturn_t ipi_interrupt(int irq, void *dev_idm, struct pt_regs *regs) | |||
978 | * with interrupts off | 978 | * with interrupts off |
979 | */ | 979 | */ |
980 | local_irq_save(flags); | 980 | local_irq_save(flags); |
981 | ipi_decode(regs, pipi); | 981 | ipi_decode(pipi); |
982 | local_irq_restore(flags); | 982 | local_irq_restore(flags); |
983 | } | 983 | } |
984 | } | 984 | } |
@@ -987,9 +987,9 @@ static irqreturn_t ipi_interrupt(int irq, void *dev_idm, struct pt_regs *regs) | |||
987 | return IRQ_HANDLED; | 987 | return IRQ_HANDLED; |
988 | } | 988 | } |
989 | 989 | ||
990 | static void ipi_irq_dispatch(struct pt_regs *regs) | 990 | static void ipi_irq_dispatch(void) |
991 | { | 991 | { |
992 | do_IRQ(cpu_ipi_irq, regs); | 992 | do_IRQ(cpu_ipi_irq); |
993 | } | 993 | } |
994 | 994 | ||
995 | static struct irqaction irq_ipi; | 995 | static struct irqaction irq_ipi; |
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index d349eb9e4ffb..debe86c2f691 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c | |||
@@ -324,8 +324,7 @@ static long last_rtc_update; | |||
324 | */ | 324 | */ |
325 | void local_timer_interrupt(int irq, void *dev_id) | 325 | void local_timer_interrupt(int irq, void *dev_id) |
326 | { | 326 | { |
327 | if (current->pid) | 327 | profile_tick(CPU_PROFILING); |
328 | profile_tick(CPU_PROFILING); | ||
329 | update_process_times(user_mode(get_irq_regs())); | 328 | update_process_times(user_mode(get_irq_regs())); |
330 | } | 329 | } |
331 | 330 | ||
@@ -434,9 +433,8 @@ int (*perf_irq)(void) = null_perf_irq; | |||
434 | EXPORT_SYMBOL(null_perf_irq); | 433 | EXPORT_SYMBOL(null_perf_irq); |
435 | EXPORT_SYMBOL(perf_irq); | 434 | EXPORT_SYMBOL(perf_irq); |
436 | 435 | ||
437 | asmlinkage void ll_timer_interrupt(int irq, struct pt_regs *regs) | 436 | asmlinkage void ll_timer_interrupt(int irq) |
438 | { | 437 | { |
439 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
440 | int r2 = cpu_has_mips_r2; | 438 | int r2 = cpu_has_mips_r2; |
441 | 439 | ||
442 | irq_enter(); | 440 | irq_enter(); |
@@ -458,12 +456,10 @@ asmlinkage void ll_timer_interrupt(int irq, struct pt_regs *regs) | |||
458 | 456 | ||
459 | out: | 457 | out: |
460 | irq_exit(); | 458 | irq_exit(); |
461 | set_irq_regs(old_regs); | ||
462 | } | 459 | } |
463 | 460 | ||
464 | asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs) | 461 | asmlinkage void ll_local_timer_interrupt(int irq) |
465 | { | 462 | { |
466 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
467 | irq_enter(); | 463 | irq_enter(); |
468 | if (smp_processor_id() != 0) | 464 | if (smp_processor_id() != 0) |
469 | kstat_this_cpu.irqs[irq]++; | 465 | kstat_this_cpu.irqs[irq]++; |
@@ -472,7 +468,6 @@ asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs) | |||
472 | local_timer_interrupt(irq, NULL); | 468 | local_timer_interrupt(irq, NULL); |
473 | 469 | ||
474 | irq_exit(); | 470 | irq_exit(); |
475 | set_irq_regs(old_regs); | ||
476 | } | 471 | } |
477 | 472 | ||
478 | /* | 473 | /* |
diff --git a/arch/mips/lasat/interrupt.c b/arch/mips/lasat/interrupt.c index 456be8fc961a..a144a002dcc4 100644 --- a/arch/mips/lasat/interrupt.c +++ b/arch/mips/lasat/interrupt.c | |||
@@ -108,14 +108,14 @@ static unsigned long get_int_status_200(void) | |||
108 | return int_status; | 108 | return int_status; |
109 | } | 109 | } |
110 | 110 | ||
111 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 111 | asmlinkage void plat_irq_dispatch(void) |
112 | { | 112 | { |
113 | unsigned long int_status; | 113 | unsigned long int_status; |
114 | unsigned int cause = read_c0_cause(); | 114 | unsigned int cause = read_c0_cause(); |
115 | int irq; | 115 | int irq; |
116 | 116 | ||
117 | if (cause & CAUSEF_IP7) { /* R4000 count / compare IRQ */ | 117 | if (cause & CAUSEF_IP7) { /* R4000 count / compare IRQ */ |
118 | ll_timer_interrupt(7, regs); | 118 | ll_timer_interrupt(7); |
119 | return; | 119 | return; |
120 | } | 120 | } |
121 | 121 | ||
@@ -125,7 +125,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
125 | if (int_status) { | 125 | if (int_status) { |
126 | irq = ls1bit32(int_status); | 126 | irq = ls1bit32(int_status); |
127 | 127 | ||
128 | do_IRQ(irq, regs); | 128 | do_IRQ(irq); |
129 | } | 129 | } |
130 | } | 130 | } |
131 | 131 | ||
diff --git a/arch/mips/mips-boards/atlas/atlas_int.c b/arch/mips/mips-boards/atlas/atlas_int.c index a020a3cb4f4b..be624b8c3b0e 100644 --- a/arch/mips/mips-boards/atlas/atlas_int.c +++ b/arch/mips/mips-boards/atlas/atlas_int.c | |||
@@ -101,7 +101,7 @@ static inline int ls1bit32(unsigned int x) | |||
101 | return b; | 101 | return b; |
102 | } | 102 | } |
103 | 103 | ||
104 | static inline void atlas_hw0_irqdispatch(struct pt_regs *regs) | 104 | static inline void atlas_hw0_irqdispatch(void) |
105 | { | 105 | { |
106 | unsigned long int_status; | 106 | unsigned long int_status; |
107 | int irq; | 107 | int irq; |
@@ -116,7 +116,7 @@ static inline void atlas_hw0_irqdispatch(struct pt_regs *regs) | |||
116 | 116 | ||
117 | DEBUG_INT("atlas_hw0_irqdispatch: irq=%d\n", irq); | 117 | DEBUG_INT("atlas_hw0_irqdispatch: irq=%d\n", irq); |
118 | 118 | ||
119 | do_IRQ(irq, regs); | 119 | do_IRQ(irq); |
120 | } | 120 | } |
121 | 121 | ||
122 | static inline int clz(unsigned long x) | 122 | static inline int clz(unsigned long x) |
@@ -188,7 +188,7 @@ static inline unsigned int irq_ffs(unsigned int pending) | |||
188 | * then we just return, if multiple IRQs are pending then we will just take | 188 | * then we just return, if multiple IRQs are pending then we will just take |
189 | * another exception, big deal. | 189 | * another exception, big deal. |
190 | */ | 190 | */ |
191 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 191 | asmlinkage void plat_irq_dispatch(void) |
192 | { | 192 | { |
193 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; | 193 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; |
194 | int irq; | 194 | int irq; |
@@ -196,11 +196,11 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
196 | irq = irq_ffs(pending); | 196 | irq = irq_ffs(pending); |
197 | 197 | ||
198 | if (irq == MIPSCPU_INT_ATLAS) | 198 | if (irq == MIPSCPU_INT_ATLAS) |
199 | atlas_hw0_irqdispatch(regs); | 199 | atlas_hw0_irqdispatch(); |
200 | else if (irq >= 0) | 200 | else if (irq >= 0) |
201 | do_IRQ(MIPSCPU_INT_BASE + irq, regs); | 201 | do_IRQ(MIPSCPU_INT_BASE + irq); |
202 | else | 202 | else |
203 | spurious_interrupt(regs); | 203 | spurious_interrupt(); |
204 | } | 204 | } |
205 | 205 | ||
206 | static inline void init_atlas_irqs (int base) | 206 | static inline void init_atlas_irqs (int base) |
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c index 8d15861fce61..6f8a9fe7c1e3 100644 --- a/arch/mips/mips-boards/generic/time.c +++ b/arch/mips/mips-boards/generic/time.c | |||
@@ -30,7 +30,6 @@ | |||
30 | 30 | ||
31 | #include <asm/mipsregs.h> | 31 | #include <asm/mipsregs.h> |
32 | #include <asm/mipsmtregs.h> | 32 | #include <asm/mipsmtregs.h> |
33 | #include <asm/ptrace.h> | ||
34 | #include <asm/hardirq.h> | 33 | #include <asm/hardirq.h> |
35 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
36 | #include <asm/div64.h> | 35 | #include <asm/div64.h> |
@@ -82,19 +81,19 @@ static inline void scroll_display_message(void) | |||
82 | } | 81 | } |
83 | } | 82 | } |
84 | 83 | ||
85 | static void mips_timer_dispatch (struct pt_regs *regs) | 84 | static void mips_timer_dispatch(void) |
86 | { | 85 | { |
87 | do_IRQ (mips_cpu_timer_irq, regs); | 86 | do_IRQ(mips_cpu_timer_irq); |
88 | } | 87 | } |
89 | 88 | ||
90 | /* | 89 | /* |
91 | * Redeclare until I get around mopping the timer code insanity on MIPS. | 90 | * Redeclare until I get around mopping the timer code insanity on MIPS. |
92 | */ | 91 | */ |
93 | extern int null_perf_irq(struct pt_regs *regs); | 92 | extern int null_perf_irq(void); |
94 | 93 | ||
95 | extern int (*perf_irq)(struct pt_regs *regs); | 94 | extern int (*perf_irq)(void); |
96 | 95 | ||
97 | irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 96 | irqreturn_t mips_timer_interrupt(int irq, void *dev_id) |
98 | { | 97 | { |
99 | int cpu = smp_processor_id(); | 98 | int cpu = smp_processor_id(); |
100 | 99 | ||
@@ -119,7 +118,7 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
119 | * perf counter overflow, or both. | 118 | * perf counter overflow, or both. |
120 | */ | 119 | */ |
121 | if (read_c0_cause() & (1 << 26)) | 120 | if (read_c0_cause() & (1 << 26)) |
122 | perf_irq(regs); | 121 | perf_irq(); |
123 | 122 | ||
124 | if (read_c0_cause() & (1 << 30)) { | 123 | if (read_c0_cause() & (1 << 30)) { |
125 | /* If timer interrupt, make it de-assert */ | 124 | /* If timer interrupt, make it de-assert */ |
@@ -139,13 +138,13 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
139 | * the tick on VPE 0 to run the full timer_interrupt(). | 138 | * the tick on VPE 0 to run the full timer_interrupt(). |
140 | */ | 139 | */ |
141 | if (cpu_data[cpu].vpe_id == 0) { | 140 | if (cpu_data[cpu].vpe_id == 0) { |
142 | timer_interrupt(irq, NULL, regs); | 141 | timer_interrupt(irq, NULL); |
143 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); | 142 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); |
144 | scroll_display_message(); | 143 | scroll_display_message(); |
145 | } else { | 144 | } else { |
146 | write_c0_compare(read_c0_count() + | 145 | write_c0_compare(read_c0_count() + |
147 | (mips_hpt_frequency/HZ)); | 146 | (mips_hpt_frequency/HZ)); |
148 | local_timer_interrupt(irq, dev_id, regs); | 147 | local_timer_interrupt(irq, dev_id); |
149 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); | 148 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); |
150 | } | 149 | } |
151 | } | 150 | } |
@@ -159,12 +158,12 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
159 | * timer int. | 158 | * timer int. |
160 | */ | 159 | */ |
161 | if (!r2 || (read_c0_cause() & (1 << 26))) | 160 | if (!r2 || (read_c0_cause() & (1 << 26))) |
162 | if (perf_irq(regs)) | 161 | if (perf_irq()) |
163 | goto out; | 162 | goto out; |
164 | 163 | ||
165 | /* we keep interrupt disabled all the time */ | 164 | /* we keep interrupt disabled all the time */ |
166 | if (!r2 || (read_c0_cause() & (1 << 30))) | 165 | if (!r2 || (read_c0_cause() & (1 << 30))) |
167 | timer_interrupt(irq, NULL, regs); | 166 | timer_interrupt(irq, NULL); |
168 | 167 | ||
169 | scroll_display_message(); | 168 | scroll_display_message(); |
170 | } else { | 169 | } else { |
@@ -180,7 +179,7 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
180 | /* | 179 | /* |
181 | * Other CPUs should do profiling and process accounting | 180 | * Other CPUs should do profiling and process accounting |
182 | */ | 181 | */ |
183 | local_timer_interrupt(irq, dev_id, regs); | 182 | local_timer_interrupt(irq, dev_id); |
184 | } | 183 | } |
185 | out: | 184 | out: |
186 | #endif /* CONFIG_MIPS_MT_SMTC */ | 185 | #endif /* CONFIG_MIPS_MT_SMTC */ |
diff --git a/arch/mips/mips-boards/malta/malta_int.c b/arch/mips/mips-boards/malta/malta_int.c index 7cc0ba4f553a..ed221dc7f6ac 100644 --- a/arch/mips/mips-boards/malta/malta_int.c +++ b/arch/mips/mips-boards/malta/malta_int.c | |||
@@ -114,7 +114,7 @@ static inline int get_int(void) | |||
114 | return irq; | 114 | return irq; |
115 | } | 115 | } |
116 | 116 | ||
117 | static void malta_hw0_irqdispatch(struct pt_regs *regs) | 117 | static void malta_hw0_irqdispatch(void) |
118 | { | 118 | { |
119 | int irq; | 119 | int irq; |
120 | 120 | ||
@@ -123,17 +123,21 @@ static void malta_hw0_irqdispatch(struct pt_regs *regs) | |||
123 | return; /* interrupt has already been cleared */ | 123 | return; /* interrupt has already been cleared */ |
124 | } | 124 | } |
125 | 125 | ||
126 | do_IRQ(MALTA_INT_BASE+irq, regs); | 126 | do_IRQ(MALTA_INT_BASE + irq); |
127 | } | 127 | } |
128 | 128 | ||
129 | void corehi_irqdispatch(struct pt_regs *regs) | 129 | static void corehi_irqdispatch(void) |
130 | { | 130 | { |
131 | unsigned int intedge, intsteer, pcicmd, pcibadaddr; | ||
132 | unsigned int pcimstat, intisr, inten, intpol; | ||
131 | unsigned int intrcause,datalo,datahi; | 133 | unsigned int intrcause,datalo,datahi; |
132 | unsigned int pcimstat, intisr, inten, intpol, intedge, intsteer, pcicmd, pcibadaddr; | 134 | struct pt_regs *regs; |
133 | 135 | ||
134 | printk("CoreHI interrupt, shouldn't happen, so we die here!!!\n"); | 136 | printk("CoreHI interrupt, shouldn't happen, so we die here!!!\n"); |
135 | printk("epc : %08lx\nStatus: %08lx\nCause : %08lx\nbadVaddr : %08lx\n" | 137 | printk("epc : %08lx\nStatus: %08lx\n" |
136 | , regs->cp0_epc, regs->cp0_status, regs->cp0_cause, regs->cp0_badvaddr); | 138 | "Cause : %08lx\nbadVaddr : %08lx\n", |
139 | regs->cp0_epc, regs->cp0_status, | ||
140 | regs->cp0_cause, regs->cp0_badvaddr); | ||
137 | 141 | ||
138 | /* Read all the registers and then print them as there is a | 142 | /* Read all the registers and then print them as there is a |
139 | problem with interspersed printk's upsetting the Bonito controller. | 143 | problem with interspersed printk's upsetting the Bonito controller. |
@@ -146,7 +150,7 @@ void corehi_irqdispatch(struct pt_regs *regs) | |||
146 | case MIPS_REVISION_CORID_CORE_FPGA3: | 150 | case MIPS_REVISION_CORID_CORE_FPGA3: |
147 | case MIPS_REVISION_CORID_CORE_24K: | 151 | case MIPS_REVISION_CORID_CORE_24K: |
148 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: | 152 | case MIPS_REVISION_CORID_CORE_EMUL_MSC: |
149 | ll_msc_irq(regs); | 153 | ll_msc_irq(); |
150 | break; | 154 | break; |
151 | case MIPS_REVISION_CORID_QED_RM5261: | 155 | case MIPS_REVISION_CORID_QED_RM5261: |
152 | case MIPS_REVISION_CORID_CORE_LV: | 156 | case MIPS_REVISION_CORID_CORE_LV: |
@@ -255,7 +259,7 @@ static inline unsigned int irq_ffs(unsigned int pending) | |||
255 | * another exception, big deal. | 259 | * another exception, big deal. |
256 | */ | 260 | */ |
257 | 261 | ||
258 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 262 | asmlinkage void plat_irq_dispatch(void) |
259 | { | 263 | { |
260 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; | 264 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; |
261 | int irq; | 265 | int irq; |
@@ -263,11 +267,11 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
263 | irq = irq_ffs(pending); | 267 | irq = irq_ffs(pending); |
264 | 268 | ||
265 | if (irq == MIPSCPU_INT_I8259A) | 269 | if (irq == MIPSCPU_INT_I8259A) |
266 | malta_hw0_irqdispatch(regs); | 270 | malta_hw0_irqdispatch(); |
267 | else if (irq > 0) | 271 | else if (irq > 0) |
268 | do_IRQ(MIPSCPU_INT_BASE + irq, regs); | 272 | do_IRQ(MIPSCPU_INT_BASE + irq); |
269 | else | 273 | else |
270 | spurious_interrupt(regs); | 274 | spurious_interrupt(); |
271 | } | 275 | } |
272 | 276 | ||
273 | static struct irqaction i8259irq = { | 277 | static struct irqaction i8259irq = { |
diff --git a/arch/mips/mips-boards/sead/sead_int.c b/arch/mips/mips-boards/sead/sead_int.c index 9168d934c661..f445fcddfdfd 100644 --- a/arch/mips/mips-boards/sead/sead_int.c +++ b/arch/mips/mips-boards/sead/sead_int.c | |||
@@ -98,7 +98,7 @@ static inline unsigned int irq_ffs(unsigned int pending) | |||
98 | * then we just return, if multiple IRQs are pending then we will just take | 98 | * then we just return, if multiple IRQs are pending then we will just take |
99 | * another exception, big deal. | 99 | * another exception, big deal. |
100 | */ | 100 | */ |
101 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 101 | asmlinkage void plat_irq_dispatch(void) |
102 | { | 102 | { |
103 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; | 103 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; |
104 | int irq; | 104 | int irq; |
@@ -106,7 +106,7 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
106 | irq = irq_ffs(pending); | 106 | irq = irq_ffs(pending); |
107 | 107 | ||
108 | if (irq >= 0) | 108 | if (irq >= 0) |
109 | do_IRQ(MIPSCPU_INT_BASE + irq, regs); | 109 | do_IRQ(MIPSCPU_INT_BASE + irq); |
110 | else | 110 | else |
111 | spurious_interrupt(regs); | 111 | spurious_interrupt(regs); |
112 | } | 112 | } |
diff --git a/arch/mips/mips-boards/sim/sim_int.c b/arch/mips/mips-boards/sim/sim_int.c index 2c15c8efec4e..2ce449dce6f2 100644 --- a/arch/mips/mips-boards/sim/sim_int.c +++ b/arch/mips/mips-boards/sim/sim_int.c | |||
@@ -71,12 +71,7 @@ static inline unsigned int irq_ffs(unsigned int pending) | |||
71 | #endif | 71 | #endif |
72 | } | 72 | } |
73 | 73 | ||
74 | static inline void sim_hw0_irqdispatch(struct pt_regs *regs) | 74 | asmlinkage void plat_irq_dispatch(void) |
75 | { | ||
76 | do_IRQ(2, regs); | ||
77 | } | ||
78 | |||
79 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | ||
80 | { | 75 | { |
81 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; | 76 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; |
82 | int irq; | 77 | int irq; |
@@ -84,9 +79,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
84 | irq = irq_ffs(pending); | 79 | irq = irq_ffs(pending); |
85 | 80 | ||
86 | if (irq > 0) | 81 | if (irq > 0) |
87 | do_IRQ(MIPSCPU_INT_BASE + irq, regs); | 82 | do_IRQ(MIPSCPU_INT_BASE + irq); |
88 | else | 83 | else |
89 | spurious_interrupt(regs); | 84 | spurious_interrupt(); |
90 | } | 85 | } |
91 | 86 | ||
92 | void __init arch_init_irq(void) | 87 | void __init arch_init_irq(void) |
diff --git a/arch/mips/mips-boards/sim/sim_time.c b/arch/mips/mips-boards/sim/sim_time.c index 230929ecd57f..c566b9bd0427 100644 --- a/arch/mips/mips-boards/sim/sim_time.c +++ b/arch/mips/mips-boards/sim/sim_time.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/mc146818rtc.h> | 15 | #include <linux/mc146818rtc.h> |
16 | #include <linux/timex.h> | 16 | #include <linux/timex.h> |
17 | #include <asm/mipsregs.h> | 17 | #include <asm/mipsregs.h> |
18 | #include <asm/ptrace.h> | ||
19 | #include <asm/hardirq.h> | 18 | #include <asm/hardirq.h> |
20 | #include <asm/irq.h> | 19 | #include <asm/irq.h> |
21 | #include <asm/div64.h> | 20 | #include <asm/div64.h> |
@@ -33,7 +32,7 @@ | |||
33 | 32 | ||
34 | unsigned long cpu_khz; | 33 | unsigned long cpu_khz; |
35 | 34 | ||
36 | irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 35 | irqreturn_t sim_timer_interrupt(int irq, void *dev_id) |
37 | { | 36 | { |
38 | #ifdef CONFIG_SMP | 37 | #ifdef CONFIG_SMP |
39 | int cpu = smp_processor_id(); | 38 | int cpu = smp_processor_id(); |
@@ -44,7 +43,7 @@ irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
44 | */ | 43 | */ |
45 | #ifndef CONFIG_MIPS_MT_SMTC | 44 | #ifndef CONFIG_MIPS_MT_SMTC |
46 | if (cpu == 0) { | 45 | if (cpu == 0) { |
47 | timer_interrupt(irq, dev_id, regs); | 46 | timer_interrupt(irq, dev_id); |
48 | } | 47 | } |
49 | else { | 48 | else { |
50 | /* Everyone else needs to reset the timer int here as | 49 | /* Everyone else needs to reset the timer int here as |
@@ -84,7 +83,7 @@ irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
84 | irq_enable_hazard(); | 83 | irq_enable_hazard(); |
85 | evpe(vpflags); | 84 | evpe(vpflags); |
86 | 85 | ||
87 | if(cpu_data[cpu].vpe_id == 0) timer_interrupt(irq, dev_id, regs); | 86 | if(cpu_data[cpu].vpe_id == 0) timer_interrupt(irq, dev_id); |
88 | else write_c0_compare (read_c0_count() + ( mips_hpt_frequency/HZ)); | 87 | else write_c0_compare (read_c0_count() + ( mips_hpt_frequency/HZ)); |
89 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); | 88 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); |
90 | 89 | ||
@@ -93,10 +92,10 @@ irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
93 | /* | 92 | /* |
94 | * every CPU should do profiling and process accounting | 93 | * every CPU should do profiling and process accounting |
95 | */ | 94 | */ |
96 | local_timer_interrupt (irq, dev_id, regs); | 95 | local_timer_interrupt (irq, dev_id); |
97 | return IRQ_HANDLED; | 96 | return IRQ_HANDLED; |
98 | #else | 97 | #else |
99 | return timer_interrupt (irq, dev_id, regs); | 98 | return timer_interrupt (irq, dev_id); |
100 | #endif | 99 | #endif |
101 | } | 100 | } |
102 | 101 | ||
@@ -177,9 +176,9 @@ void __init sim_time_init(void) | |||
177 | 176 | ||
178 | static int mips_cpu_timer_irq; | 177 | static int mips_cpu_timer_irq; |
179 | 178 | ||
180 | static void mips_timer_dispatch (struct pt_regs *regs) | 179 | static void mips_timer_dispatch(void) |
181 | { | 180 | { |
182 | do_IRQ (mips_cpu_timer_irq, regs); | 181 | do_IRQ(mips_cpu_timer_irq); |
183 | } | 182 | } |
184 | 183 | ||
185 | 184 | ||
diff --git a/arch/mips/momentum/jaguar_atx/irq.c b/arch/mips/momentum/jaguar_atx/irq.c index f9067469a656..2efb25aa1aed 100644 --- a/arch/mips/momentum/jaguar_atx/irq.c +++ b/arch/mips/momentum/jaguar_atx/irq.c | |||
@@ -40,33 +40,33 @@ | |||
40 | #include <asm/mipsregs.h> | 40 | #include <asm/mipsregs.h> |
41 | #include <asm/time.h> | 41 | #include <asm/time.h> |
42 | 42 | ||
43 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 43 | asmlinkage void plat_irq_dispatch(void) |
44 | { | 44 | { |
45 | unsigned int pending = read_c0_cause() & read_c0_status(); | 45 | unsigned int pending = read_c0_cause() & read_c0_status(); |
46 | 46 | ||
47 | if (pending & STATUSF_IP0) | 47 | if (pending & STATUSF_IP0) |
48 | do_IRQ(0, regs); | 48 | do_IRQ(0); |
49 | else if (pending & STATUSF_IP1) | 49 | else if (pending & STATUSF_IP1) |
50 | do_IRQ(1, regs); | 50 | do_IRQ(1); |
51 | else if (pending & STATUSF_IP2) | 51 | else if (pending & STATUSF_IP2) |
52 | do_IRQ(2, regs); | 52 | do_IRQ(2); |
53 | else if (pending & STATUSF_IP3) | 53 | else if (pending & STATUSF_IP3) |
54 | do_IRQ(3, regs); | 54 | do_IRQ(3); |
55 | else if (pending & STATUSF_IP4) | 55 | else if (pending & STATUSF_IP4) |
56 | do_IRQ(4, regs); | 56 | do_IRQ(4); |
57 | else if (pending & STATUSF_IP5) | 57 | else if (pending & STATUSF_IP5) |
58 | do_IRQ(5, regs); | 58 | do_IRQ(5); |
59 | else if (pending & STATUSF_IP6) | 59 | else if (pending & STATUSF_IP6) |
60 | do_IRQ(6, regs); | 60 | do_IRQ(6); |
61 | else if (pending & STATUSF_IP7) | 61 | else if (pending & STATUSF_IP7) |
62 | ll_timer_interrupt(7, regs); | 62 | ll_timer_interrupt(7); |
63 | else { | 63 | else { |
64 | /* | 64 | /* |
65 | * Now look at the extended interrupts | 65 | * Now look at the extended interrupts |
66 | */ | 66 | */ |
67 | pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; | 67 | pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; |
68 | if (pending & STATUSF_IP8) | 68 | if (pending & STATUSF_IP8) |
69 | ll_mv64340_irq(regs); | 69 | ll_mv64340_irq(); |
70 | } | 70 | } |
71 | } | 71 | } |
72 | 72 | ||
diff --git a/arch/mips/momentum/jaguar_atx/setup.c b/arch/mips/momentum/jaguar_atx/setup.c index e6fe2992227d..5a510142b978 100644 --- a/arch/mips/momentum/jaguar_atx/setup.c +++ b/arch/mips/momentum/jaguar_atx/setup.c | |||
@@ -62,7 +62,6 @@ | |||
62 | #include <asm/io.h> | 62 | #include <asm/io.h> |
63 | #include <asm/irq.h> | 63 | #include <asm/irq.h> |
64 | #include <asm/processor.h> | 64 | #include <asm/processor.h> |
65 | #include <asm/ptrace.h> | ||
66 | #include <asm/reboot.h> | 65 | #include <asm/reboot.h> |
67 | #include <asm/tlbflush.h> | 66 | #include <asm/tlbflush.h> |
68 | 67 | ||
diff --git a/arch/mips/momentum/ocelot_3/irq.c b/arch/mips/momentum/ocelot_3/irq.c index 793782a9c195..cea0e5deb80e 100644 --- a/arch/mips/momentum/ocelot_3/irq.c +++ b/arch/mips/momentum/ocelot_3/irq.c | |||
@@ -75,26 +75,26 @@ void __init arch_init_irq(void) | |||
75 | 75 | ||
76 | } | 76 | } |
77 | 77 | ||
78 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 78 | asmlinkage void plat_irq_dispatch(void) |
79 | { | 79 | { |
80 | unsigned int pending = read_c0_cause() & read_c0_status(); | 80 | unsigned int pending = read_c0_cause() & read_c0_status(); |
81 | 81 | ||
82 | if (pending & STATUSF_IP0) | 82 | if (pending & STATUSF_IP0) |
83 | do_IRQ(0, regs); | 83 | do_IRQ(0); |
84 | else if (pending & STATUSF_IP1) | 84 | else if (pending & STATUSF_IP1) |
85 | do_IRQ(1, regs); | 85 | do_IRQ(1); |
86 | else if (pending & STATUSF_IP2) | 86 | else if (pending & STATUSF_IP2) |
87 | do_IRQ(2, regs); | 87 | do_IRQ(2); |
88 | else if (pending & STATUSF_IP3) | 88 | else if (pending & STATUSF_IP3) |
89 | do_IRQ(3, regs); | 89 | do_IRQ(3); |
90 | else if (pending & STATUSF_IP4) | 90 | else if (pending & STATUSF_IP4) |
91 | do_IRQ(4, regs); | 91 | do_IRQ(4); |
92 | else if (pending & STATUSF_IP5) | 92 | else if (pending & STATUSF_IP5) |
93 | do_IRQ(5, regs); | 93 | do_IRQ(5); |
94 | else if (pending & STATUSF_IP6) | 94 | else if (pending & STATUSF_IP6) |
95 | do_IRQ(6, regs); | 95 | do_IRQ(6); |
96 | else if (pending & STATUSF_IP7) | 96 | else if (pending & STATUSF_IP7) |
97 | do_IRQ(7, regs); | 97 | do_IRQ(7); |
98 | else { | 98 | else { |
99 | /* | 99 | /* |
100 | * Now look at the extended interrupts | 100 | * Now look at the extended interrupts |
@@ -102,8 +102,8 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
102 | pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; | 102 | pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; |
103 | 103 | ||
104 | if (pending & STATUSF_IP8) | 104 | if (pending & STATUSF_IP8) |
105 | ll_mv64340_irq(regs); | 105 | ll_mv64340_irq(); |
106 | else | 106 | else |
107 | spurious_interrupt(regs); | 107 | spurious_interrupt(); |
108 | } | 108 | } |
109 | } | 109 | } |
diff --git a/arch/mips/momentum/ocelot_3/setup.c b/arch/mips/momentum/ocelot_3/setup.c index 435d0787329e..7d74f8c54129 100644 --- a/arch/mips/momentum/ocelot_3/setup.c +++ b/arch/mips/momentum/ocelot_3/setup.c | |||
@@ -67,7 +67,6 @@ | |||
67 | #include <asm/irq.h> | 67 | #include <asm/irq.h> |
68 | #include <asm/pci.h> | 68 | #include <asm/pci.h> |
69 | #include <asm/processor.h> | 69 | #include <asm/processor.h> |
70 | #include <asm/ptrace.h> | ||
71 | #include <asm/reboot.h> | 70 | #include <asm/reboot.h> |
72 | #include <asm/mc146818rtc.h> | 71 | #include <asm/mc146818rtc.h> |
73 | #include <asm/tlbflush.h> | 72 | #include <asm/tlbflush.h> |
diff --git a/arch/mips/momentum/ocelot_c/cpci-irq.c b/arch/mips/momentum/ocelot_c/cpci-irq.c index a5dc230520df..47e3fa32b075 100644 --- a/arch/mips/momentum/ocelot_c/cpci-irq.c +++ b/arch/mips/momentum/ocelot_c/cpci-irq.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
22 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
23 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
24 | #include <asm/ptrace.h> | ||
25 | #include <linux/sched.h> | 24 | #include <linux/sched.h> |
26 | #include <linux/kernel_stat.h> | 25 | #include <linux/kernel_stat.h> |
27 | #include <asm/io.h> | 26 | #include <asm/io.h> |
@@ -112,7 +111,7 @@ static void end_cpci_irq(unsigned int irq) | |||
112 | * Interrupt handler for interrupts coming from the FPGA chip. | 111 | * Interrupt handler for interrupts coming from the FPGA chip. |
113 | * It could be built in ethernet ports etc... | 112 | * It could be built in ethernet ports etc... |
114 | */ | 113 | */ |
115 | void ll_cpci_irq(struct pt_regs *regs) | 114 | void ll_cpci_irq(void) |
116 | { | 115 | { |
117 | unsigned int irq_src, irq_mask; | 116 | unsigned int irq_src, irq_mask; |
118 | 117 | ||
@@ -123,7 +122,7 @@ void ll_cpci_irq(struct pt_regs *regs) | |||
123 | /* mask for just the interrupts we want */ | 122 | /* mask for just the interrupts we want */ |
124 | irq_src &= ~irq_mask; | 123 | irq_src &= ~irq_mask; |
125 | 124 | ||
126 | do_IRQ(ls1bit8(irq_src) + CPCI_IRQ_BASE, regs); | 125 | do_IRQ(ls1bit8(irq_src) + CPCI_IRQ_BASE); |
127 | } | 126 | } |
128 | 127 | ||
129 | #define shutdown_cpci_irq disable_cpci_irq | 128 | #define shutdown_cpci_irq disable_cpci_irq |
diff --git a/arch/mips/momentum/ocelot_c/irq.c b/arch/mips/momentum/ocelot_c/irq.c index 9d44ae1e156b..ea65223a6d2c 100644 --- a/arch/mips/momentum/ocelot_c/irq.c +++ b/arch/mips/momentum/ocelot_c/irq.c | |||
@@ -59,31 +59,31 @@ static struct irqaction cascade_mv64340 = { | |||
59 | no_action, IRQF_DISABLED, CPU_MASK_NONE, "cascade via MV64340", NULL, NULL | 59 | no_action, IRQF_DISABLED, CPU_MASK_NONE, "cascade via MV64340", NULL, NULL |
60 | }; | 60 | }; |
61 | 61 | ||
62 | extern void ll_uart_irq(struct pt_regs *regs); | 62 | extern void ll_uart_irq(void); |
63 | extern void ll_cpci_irq(struct pt_regs *regs); | 63 | extern void ll_cpci_irq(void); |
64 | 64 | ||
65 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 65 | asmlinkage void plat_irq_dispatch(void) |
66 | { | 66 | { |
67 | unsigned int pending = read_c0_cause() & read_c0_status(); | 67 | unsigned int pending = read_c0_cause() & read_c0_status(); |
68 | 68 | ||
69 | if (pending & STATUSF_IP0) | 69 | if (pending & STATUSF_IP0) |
70 | do_IRQ(0, regs); | 70 | do_IRQ(0); |
71 | else if (pending & STATUSF_IP1) | 71 | else if (pending & STATUSF_IP1) |
72 | do_IRQ(1, regs); | 72 | do_IRQ(1); |
73 | else if (pending & STATUSF_IP2) | 73 | else if (pending & STATUSF_IP2) |
74 | do_IRQ(2, regs); | 74 | do_IRQ(2); |
75 | else if (pending & STATUSF_IP3) | 75 | else if (pending & STATUSF_IP3) |
76 | ll_uart_irq(regs); | 76 | ll_uart_irq(); |
77 | else if (pending & STATUSF_IP4) | 77 | else if (pending & STATUSF_IP4) |
78 | do_IRQ(4, regs); | 78 | do_IRQ(4); |
79 | else if (pending & STATUSF_IP5) | 79 | else if (pending & STATUSF_IP5) |
80 | ll_cpci_irq(regs); | 80 | ll_cpci_irq(); |
81 | else if (pending & STATUSF_IP6) | 81 | else if (pending & STATUSF_IP6) |
82 | ll_mv64340_irq(regs); | 82 | ll_mv64340_irq(); |
83 | else if (pending & STATUSF_IP7) | 83 | else if (pending & STATUSF_IP7) |
84 | do_IRQ(7, regs); | 84 | do_IRQ(7); |
85 | else | 85 | else |
86 | spurious_interrupt(regs); | 86 | spurious_interrupt(); |
87 | } | 87 | } |
88 | 88 | ||
89 | void __init arch_init_irq(void) | 89 | void __init arch_init_irq(void) |
diff --git a/arch/mips/momentum/ocelot_c/setup.c b/arch/mips/momentum/ocelot_c/setup.c index 36f570ecc6fb..9c0c462af650 100644 --- a/arch/mips/momentum/ocelot_c/setup.c +++ b/arch/mips/momentum/ocelot_c/setup.c | |||
@@ -62,7 +62,6 @@ | |||
62 | #include <asm/irq.h> | 62 | #include <asm/irq.h> |
63 | #include <asm/pci.h> | 63 | #include <asm/pci.h> |
64 | #include <asm/processor.h> | 64 | #include <asm/processor.h> |
65 | #include <asm/ptrace.h> | ||
66 | #include <asm/reboot.h> | 65 | #include <asm/reboot.h> |
67 | #include <asm/marvell.h> | 66 | #include <asm/marvell.h> |
68 | #include <linux/bootmem.h> | 67 | #include <linux/bootmem.h> |
diff --git a/arch/mips/momentum/ocelot_c/uart-irq.c b/arch/mips/momentum/ocelot_c/uart-irq.c index 9f33d8f1d826..510257dc205a 100644 --- a/arch/mips/momentum/ocelot_c/uart-irq.c +++ b/arch/mips/momentum/ocelot_c/uart-irq.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
17 | #include <linux/irq.h> | 17 | #include <linux/irq.h> |
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <asm/ptrace.h> | ||
20 | #include <linux/sched.h> | 19 | #include <linux/sched.h> |
21 | #include <linux/kernel_stat.h> | 20 | #include <linux/kernel_stat.h> |
22 | #include <asm/io.h> | 21 | #include <asm/io.h> |
@@ -105,7 +104,7 @@ static void end_uart_irq(unsigned int irq) | |||
105 | /* | 104 | /* |
106 | * Interrupt handler for interrupts coming from the FPGA chip. | 105 | * Interrupt handler for interrupts coming from the FPGA chip. |
107 | */ | 106 | */ |
108 | void ll_uart_irq(struct pt_regs *regs) | 107 | void ll_uart_irq(void) |
109 | { | 108 | { |
110 | unsigned int irq_src, irq_mask; | 109 | unsigned int irq_src, irq_mask; |
111 | 110 | ||
@@ -116,7 +115,7 @@ void ll_uart_irq(struct pt_regs *regs) | |||
116 | /* mask for just the interrupts we want */ | 115 | /* mask for just the interrupts we want */ |
117 | irq_src &= ~irq_mask; | 116 | irq_src &= ~irq_mask; |
118 | 117 | ||
119 | do_IRQ(ls1bit8(irq_src) + 74, regs); | 118 | do_IRQ(ls1bit8(irq_src) + 74); |
120 | } | 119 | } |
121 | 120 | ||
122 | #define shutdown_uart_irq disable_uart_irq | 121 | #define shutdown_uart_irq disable_uart_irq |
diff --git a/arch/mips/momentum/ocelot_g/gt-irq.c b/arch/mips/momentum/ocelot_g/gt-irq.c index 6cd87cf0195a..7b5cc6648f7e 100644 --- a/arch/mips/momentum/ocelot_g/gt-irq.c +++ b/arch/mips/momentum/ocelot_g/gt-irq.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <asm/ptrace.h> | ||
18 | #include <linux/sched.h> | 17 | #include <linux/sched.h> |
19 | #include <linux/kernel_stat.h> | 18 | #include <linux/kernel_stat.h> |
20 | #include <asm/gt64240.h> | 19 | #include <asm/gt64240.h> |
@@ -108,7 +107,7 @@ int disable_galileo_irq(int int_cause, int bit_num) | |||
108 | * we keep this particular structure in the function. | 107 | * we keep this particular structure in the function. |
109 | */ | 108 | */ |
110 | 109 | ||
111 | static irqreturn_t gt64240_p0int_irq(int irq, void *dev, struct pt_regs *regs) | 110 | static irqreturn_t gt64240_p0int_irq(int irq, void *dev) |
112 | { | 111 | { |
113 | uint32_t irq_src, irq_src_mask; | 112 | uint32_t irq_src, irq_src_mask; |
114 | int handled; | 113 | int handled; |
@@ -135,7 +134,7 @@ static irqreturn_t gt64240_p0int_irq(int irq, void *dev, struct pt_regs *regs) | |||
135 | /* handle the timer call */ | 134 | /* handle the timer call */ |
136 | do_timer(1); | 135 | do_timer(1); |
137 | #ifndef CONFIG_SMP | 136 | #ifndef CONFIG_SMP |
138 | update_process_times(user_mode(regs)); | 137 | update_process_times(user_mode(get_irq_regs())); |
139 | #endif | 138 | #endif |
140 | } | 139 | } |
141 | 140 | ||
diff --git a/arch/mips/momentum/ocelot_g/irq.c b/arch/mips/momentum/ocelot_g/irq.c index 7a4a419804f1..da46524e87cb 100644 --- a/arch/mips/momentum/ocelot_g/irq.c +++ b/arch/mips/momentum/ocelot_g/irq.c | |||
@@ -48,22 +48,22 @@ | |||
48 | #include <asm/mipsregs.h> | 48 | #include <asm/mipsregs.h> |
49 | #include <asm/system.h> | 49 | #include <asm/system.h> |
50 | 50 | ||
51 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 51 | asmlinkage void plat_irq_dispatch(void) |
52 | { | 52 | { |
53 | unsigned int pending = read_c0_cause() & read_c0_status(); | 53 | unsigned int pending = read_c0_cause() & read_c0_status(); |
54 | 54 | ||
55 | if (pending & STATUSF_IP2) | 55 | if (pending & STATUSF_IP2) |
56 | do_IRQ(2, regs); | 56 | do_IRQ(2); |
57 | else if (pending & STATUSF_IP3) | 57 | else if (pending & STATUSF_IP3) |
58 | do_IRQ(3, regs); | 58 | do_IRQ(3); |
59 | else if (pending & STATUSF_IP4) | 59 | else if (pending & STATUSF_IP4) |
60 | do_IRQ(4, regs); | 60 | do_IRQ(4); |
61 | else if (pending & STATUSF_IP5) | 61 | else if (pending & STATUSF_IP5) |
62 | do_IRQ(5, regs); | 62 | do_IRQ(5); |
63 | else if (pending & STATUSF_IP6) | 63 | else if (pending & STATUSF_IP6) |
64 | do_IRQ(6, regs); | 64 | do_IRQ(6); |
65 | else if (pending & STATUSF_IP7) | 65 | else if (pending & STATUSF_IP7) |
66 | do_IRQ(7, regs); | 66 | do_IRQ(7); |
67 | else { | 67 | else { |
68 | /* | 68 | /* |
69 | * Now look at the extended interrupts | 69 | * Now look at the extended interrupts |
@@ -71,15 +71,15 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
71 | pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; | 71 | pending = (read_c0_cause() & (read_c0_intcontrol() << 8)) >> 16; |
72 | 72 | ||
73 | if (pending & STATUSF_IP8) | 73 | if (pending & STATUSF_IP8) |
74 | do_IRQ(8, regs); | 74 | do_IRQ(8); |
75 | else if (pending & STATUSF_IP9) | 75 | else if (pending & STATUSF_IP9) |
76 | do_IRQ(9, regs); | 76 | do_IRQ(9); |
77 | else if (pending & STATUSF_IP10) | 77 | else if (pending & STATUSF_IP10) |
78 | do_IRQ(10, regs); | 78 | do_IRQ(10); |
79 | else if (pending & STATUSF_IP11) | 79 | else if (pending & STATUSF_IP11) |
80 | do_IRQ(11, regs); | 80 | do_IRQ(11); |
81 | else | 81 | else |
82 | spurious_interrupt(regs); | 82 | spurious_interrupt(); |
83 | } | 83 | } |
84 | } | 84 | } |
85 | 85 | ||
diff --git a/arch/mips/momentum/ocelot_g/setup.c b/arch/mips/momentum/ocelot_g/setup.c index c580b1de33bc..56ec47039c16 100644 --- a/arch/mips/momentum/ocelot_g/setup.c +++ b/arch/mips/momentum/ocelot_g/setup.c | |||
@@ -58,7 +58,6 @@ | |||
58 | #include <asm/irq.h> | 58 | #include <asm/irq.h> |
59 | #include <asm/pci.h> | 59 | #include <asm/pci.h> |
60 | #include <asm/processor.h> | 60 | #include <asm/processor.h> |
61 | #include <asm/ptrace.h> | ||
62 | #include <asm/reboot.h> | 61 | #include <asm/reboot.h> |
63 | #include <linux/bootmem.h> | 62 | #include <linux/bootmem.h> |
64 | 63 | ||
diff --git a/arch/mips/oprofile/op_impl.h b/arch/mips/oprofile/op_impl.h index 5cfce7d87a4d..354e54496406 100644 --- a/arch/mips/oprofile/op_impl.h +++ b/arch/mips/oprofile/op_impl.h | |||
@@ -12,8 +12,8 @@ | |||
12 | 12 | ||
13 | struct pt_regs; | 13 | struct pt_regs; |
14 | 14 | ||
15 | extern int null_perf_irq(struct pt_regs *regs); | 15 | extern int null_perf_irq(void); |
16 | extern int (*perf_irq)(struct pt_regs *regs); | 16 | extern int (*perf_irq)(void); |
17 | 17 | ||
18 | /* Per-counter configuration as set via oprofilefs. */ | 18 | /* Per-counter configuration as set via oprofilefs. */ |
19 | struct op_counter_config { | 19 | struct op_counter_config { |
diff --git a/arch/mips/oprofile/op_model_mipsxx.c b/arch/mips/oprofile/op_model_mipsxx.c index a175d673540f..dd0aec9c3ce1 100644 --- a/arch/mips/oprofile/op_model_mipsxx.c +++ b/arch/mips/oprofile/op_model_mipsxx.c | |||
@@ -3,12 +3,13 @@ | |||
3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * Copyright (C) 2004, 2005 by Ralf Baechle | 6 | * Copyright (C) 2004, 05, 06 by Ralf Baechle |
7 | * Copyright (C) 2005 by MIPS Technologies, Inc. | 7 | * Copyright (C) 2005 by MIPS Technologies, Inc. |
8 | */ | 8 | */ |
9 | #include <linux/oprofile.h> | 9 | #include <linux/oprofile.h> |
10 | #include <linux/interrupt.h> | 10 | #include <linux/interrupt.h> |
11 | #include <linux/smp.h> | 11 | #include <linux/smp.h> |
12 | #include <asm/irq_regs.h> | ||
12 | 13 | ||
13 | #include "op_impl.h" | 14 | #include "op_impl.h" |
14 | 15 | ||
@@ -170,7 +171,7 @@ static void mipsxx_cpu_stop(void *args) | |||
170 | } | 171 | } |
171 | } | 172 | } |
172 | 173 | ||
173 | static int mipsxx_perfcount_handler(struct pt_regs *regs) | 174 | static int mipsxx_perfcount_handler(void) |
174 | { | 175 | { |
175 | unsigned int counters = op_model_mipsxx_ops.num_counters; | 176 | unsigned int counters = op_model_mipsxx_ops.num_counters; |
176 | unsigned int control; | 177 | unsigned int control; |
@@ -184,7 +185,7 @@ static int mipsxx_perfcount_handler(struct pt_regs *regs) | |||
184 | counter = r_c0_perfcntr ## n(); \ | 185 | counter = r_c0_perfcntr ## n(); \ |
185 | if ((control & M_PERFCTL_INTERRUPT_ENABLE) && \ | 186 | if ((control & M_PERFCTL_INTERRUPT_ENABLE) && \ |
186 | (counter & M_COUNTER_OVERFLOW)) { \ | 187 | (counter & M_COUNTER_OVERFLOW)) { \ |
187 | oprofile_add_sample(regs, n); \ | 188 | oprofile_add_sample(get_irq_regs(), n); \ |
188 | w_c0_perfcntr ## n(reg.counter[n]); \ | 189 | w_c0_perfcntr ## n(reg.counter[n]); \ |
189 | handled = 1; \ | 190 | handled = 1; \ |
190 | } | 191 | } |
diff --git a/arch/mips/pci/pci-ip32.c b/arch/mips/pci/pci-ip32.c index 17c7932cf0ae..618ea7dbc474 100644 --- a/arch/mips/pci/pci-ip32.c +++ b/arch/mips/pci/pci-ip32.c | |||
@@ -22,7 +22,7 @@ | |||
22 | * registered on the bridge error irq. It's conceivable that some of these | 22 | * registered on the bridge error irq. It's conceivable that some of these |
23 | * conditions warrant a panic. Anybody care to say which ones? | 23 | * conditions warrant a panic. Anybody care to say which ones? |
24 | */ | 24 | */ |
25 | static irqreturn_t macepci_error(int irq, void *dev, struct pt_regs *regs) | 25 | static irqreturn_t macepci_error(int irq, void *dev) |
26 | { | 26 | { |
27 | char s; | 27 | char s; |
28 | unsigned int flags = mace->pci.error; | 28 | unsigned int flags = mace->pci.error; |
diff --git a/arch/mips/philips/pnx8550/common/int.c b/arch/mips/philips/pnx8550/common/int.c index 3c93512be1ec..710611615ca2 100644 --- a/arch/mips/philips/pnx8550/common/int.c +++ b/arch/mips/philips/pnx8550/common/int.c | |||
@@ -23,6 +23,7 @@ | |||
23 | * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. | 23 | * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. |
24 | * | 24 | * |
25 | */ | 25 | */ |
26 | #include <linux/compiler.h> | ||
26 | #include <linux/init.h> | 27 | #include <linux/init.h> |
27 | #include <linux/irq.h> | 28 | #include <linux/irq.h> |
28 | #include <linux/sched.h> | 29 | #include <linux/sched.h> |
@@ -52,7 +53,7 @@ static char gic_prio[PNX8550_INT_GIC_TOTINT] = { | |||
52 | 1 // 70 | 53 | 1 // 70 |
53 | }; | 54 | }; |
54 | 55 | ||
55 | static void hw0_irqdispatch(int irq, struct pt_regs *regs) | 56 | static void hw0_irqdispatch(int irq) |
56 | { | 57 | { |
57 | /* find out which interrupt */ | 58 | /* find out which interrupt */ |
58 | irq = PNX8550_GIC_VECTOR_0 >> 3; | 59 | irq = PNX8550_GIC_VECTOR_0 >> 3; |
@@ -61,42 +62,39 @@ static void hw0_irqdispatch(int irq, struct pt_regs *regs) | |||
61 | printk("hw0_irqdispatch: irq 0, spurious interrupt?\n"); | 62 | printk("hw0_irqdispatch: irq 0, spurious interrupt?\n"); |
62 | return; | 63 | return; |
63 | } | 64 | } |
64 | do_IRQ(PNX8550_INT_GIC_MIN + irq, regs); | 65 | do_IRQ(PNX8550_INT_GIC_MIN + irq); |
65 | } | 66 | } |
66 | 67 | ||
67 | 68 | ||
68 | static void timer_irqdispatch(int irq, struct pt_regs *regs) | 69 | static void timer_irqdispatch(int irq) |
69 | { | 70 | { |
70 | irq = (0x01c0 & read_c0_config7()) >> 6; | 71 | irq = (0x01c0 & read_c0_config7()) >> 6; |
71 | 72 | ||
72 | if (irq == 0) { | 73 | if (unlikely(irq == 0)) { |
73 | printk("timer_irqdispatch: irq 0, spurious interrupt?\n"); | 74 | printk("timer_irqdispatch: irq 0, spurious interrupt?\n"); |
74 | return; | 75 | return; |
75 | } | 76 | } |
76 | 77 | ||
77 | if (irq & 0x1) { | 78 | if (irq & 0x1) |
78 | do_IRQ(PNX8550_INT_TIMER1, regs); | 79 | do_IRQ(PNX8550_INT_TIMER1); |
79 | } | 80 | if (irq & 0x2) |
80 | if (irq & 0x2) { | 81 | do_IRQ(PNX8550_INT_TIMER2); |
81 | do_IRQ(PNX8550_INT_TIMER2, regs); | 82 | if (irq & 0x4) |
82 | } | 83 | do_IRQ(PNX8550_INT_TIMER3); |
83 | if (irq & 0x4) { | ||
84 | do_IRQ(PNX8550_INT_TIMER3, regs); | ||
85 | } | ||
86 | } | 84 | } |
87 | 85 | ||
88 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 86 | asmlinkage void plat_irq_dispatch(void) |
89 | { | 87 | { |
90 | unsigned int pending = read_c0_status() & read_c0_cause(); | 88 | unsigned int pending = read_c0_status() & read_c0_cause(); |
91 | 89 | ||
92 | if (pending & STATUSF_IP2) | 90 | if (pending & STATUSF_IP2) |
93 | hw0_irqdispatch(2, regs); | 91 | hw0_irqdispatch(2); |
94 | else if (pending & STATUSF_IP7) { | 92 | else if (pending & STATUSF_IP7) { |
95 | if (read_c0_config7() & 0x01c0) | 93 | if (read_c0_config7() & 0x01c0) |
96 | timer_irqdispatch(7, regs); | 94 | timer_irqdispatch(7); |
97 | } | 95 | } |
98 | 96 | ||
99 | spurious_interrupt(regs); | 97 | spurious_interrupt(); |
100 | } | 98 | } |
101 | 99 | ||
102 | static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask) | 100 | static inline void modify_cp0_intmask(unsigned clr_mask, unsigned set_mask) |
diff --git a/arch/mips/pmc-sierra/yosemite/irq.c b/arch/mips/pmc-sierra/yosemite/irq.c index b91d0aa3b7ed..adb048527e76 100644 --- a/arch/mips/pmc-sierra/yosemite/irq.c +++ b/arch/mips/pmc-sierra/yosemite/irq.c | |||
@@ -56,15 +56,13 @@ | |||
56 | #define HYPERTRANSPORT_INTC 0x7a /* INTC# */ | 56 | #define HYPERTRANSPORT_INTC 0x7a /* INTC# */ |
57 | #define HYPERTRANSPORT_INTD 0x7b /* INTD# */ | 57 | #define HYPERTRANSPORT_INTD 0x7b /* INTD# */ |
58 | 58 | ||
59 | extern void jaguar_mailbox_irq(struct pt_regs *); | ||
60 | |||
61 | /* | 59 | /* |
62 | * Handle hypertransport & SMP interrupts. The interrupt lines are scarce. | 60 | * Handle hypertransport & SMP interrupts. The interrupt lines are scarce. |
63 | * For interprocessor interrupts, the best thing to do is to use the INTMSG | 61 | * For interprocessor interrupts, the best thing to do is to use the INTMSG |
64 | * register. We use the same external interrupt line, i.e. INTB3 and monitor | 62 | * register. We use the same external interrupt line, i.e. INTB3 and monitor |
65 | * another status bit | 63 | * another status bit |
66 | */ | 64 | */ |
67 | asmlinkage void ll_ht_smp_irq_handler(int irq, struct pt_regs *regs) | 65 | static void ll_ht_smp_irq_handler(int irq) |
68 | { | 66 | { |
69 | u32 status = OCD_READ(RM9000x2_OCD_INTP0STATUS4); | 67 | u32 status = OCD_READ(RM9000x2_OCD_INTP0STATUS4); |
70 | 68 | ||
@@ -107,50 +105,35 @@ asmlinkage void ll_ht_smp_irq_handler(int irq, struct pt_regs *regs) | |||
107 | } | 105 | } |
108 | #endif /* CONFIG_HT_LEVEL_TRIGGER */ | 106 | #endif /* CONFIG_HT_LEVEL_TRIGGER */ |
109 | 107 | ||
110 | do_IRQ(irq, regs); | 108 | do_IRQ(irq); |
111 | } | ||
112 | |||
113 | asmlinkage void do_extended_irq(struct pt_regs *regs) | ||
114 | { | ||
115 | unsigned int intcontrol = read_c0_intcontrol(); | ||
116 | unsigned int cause = read_c0_cause(); | ||
117 | unsigned int status = read_c0_status(); | ||
118 | unsigned int pending_sr, pending_ic; | ||
119 | |||
120 | pending_sr = status & cause & 0xff00; | ||
121 | pending_ic = (cause >> 8) & intcontrol & 0xff00; | ||
122 | |||
123 | if (pending_ic & (1 << 13)) | ||
124 | do_IRQ(13, regs); | ||
125 | |||
126 | } | 109 | } |
127 | 110 | ||
128 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 111 | asmlinkage void plat_irq_dispatch(void) |
129 | { | 112 | { |
130 | unsigned int cause = read_c0_cause(); | 113 | unsigned int cause = read_c0_cause(); |
131 | unsigned int status = read_c0_status(); | 114 | unsigned int status = read_c0_status(); |
132 | unsigned int pending = cause & status; | 115 | unsigned int pending = cause & status; |
133 | 116 | ||
134 | if (pending & STATUSF_IP7) { | 117 | if (pending & STATUSF_IP7) { |
135 | do_IRQ(7, regs); | 118 | do_IRQ(7); |
136 | } else if (pending & STATUSF_IP2) { | 119 | } else if (pending & STATUSF_IP2) { |
137 | #ifdef CONFIG_HYPERTRANSPORT | 120 | #ifdef CONFIG_HYPERTRANSPORT |
138 | ll_ht_smp_irq_handler(2, regs); | 121 | ll_ht_smp_irq_handler(2); |
139 | #else | 122 | #else |
140 | do_IRQ(2, regs); | 123 | do_IRQ(2); |
141 | #endif | 124 | #endif |
142 | } else if (pending & STATUSF_IP3) { | 125 | } else if (pending & STATUSF_IP3) { |
143 | do_IRQ(3, regs); | 126 | do_IRQ(3); |
144 | } else if (pending & STATUSF_IP4) { | 127 | } else if (pending & STATUSF_IP4) { |
145 | do_IRQ(4, regs); | 128 | do_IRQ(4); |
146 | } else if (pending & STATUSF_IP5) { | 129 | } else if (pending & STATUSF_IP5) { |
147 | #ifdef CONFIG_SMP | 130 | #ifdef CONFIG_SMP |
148 | titan_mailbox_irq(regs); | 131 | titan_mailbox_irq(); |
149 | #else | 132 | #else |
150 | do_IRQ(5, regs); | 133 | do_IRQ(5); |
151 | #endif | 134 | #endif |
152 | } else if (pending & STATUSF_IP6) { | 135 | } else if (pending & STATUSF_IP6) { |
153 | do_IRQ(4, regs); | 136 | do_IRQ(4); |
154 | } | 137 | } |
155 | } | 138 | } |
156 | 139 | ||
@@ -178,18 +161,3 @@ void __init arch_init_irq(void) | |||
178 | register_gdb_console(); | 161 | register_gdb_console(); |
179 | #endif | 162 | #endif |
180 | } | 163 | } |
181 | |||
182 | #ifdef CONFIG_KGDB | ||
183 | /* | ||
184 | * The 16550 DUART has two ports, but is allocated one IRQ | ||
185 | * for the serial console. Hence, a generic framework for | ||
186 | * serial IRQ routing in place. Currently, just calls the | ||
187 | * do_IRQ fuction. But, going in the future, need to check | ||
188 | * DUART registers for channel A and B, then decide the | ||
189 | * appropriate action | ||
190 | */ | ||
191 | asmlinkage void yosemite_kgdb_irq(int irq, struct pt_regs *regs) | ||
192 | { | ||
193 | do_IRQ(irq, regs); | ||
194 | } | ||
195 | #endif | ||
diff --git a/arch/mips/pmc-sierra/yosemite/setup.c b/arch/mips/pmc-sierra/yosemite/setup.c index 0a6ee8e5eec2..1b9b0d396d3e 100644 --- a/arch/mips/pmc-sierra/yosemite/setup.c +++ b/arch/mips/pmc-sierra/yosemite/setup.c | |||
@@ -46,7 +46,6 @@ | |||
46 | #include <asm/io.h> | 46 | #include <asm/io.h> |
47 | #include <asm/irq.h> | 47 | #include <asm/irq.h> |
48 | #include <asm/processor.h> | 48 | #include <asm/processor.h> |
49 | #include <asm/ptrace.h> | ||
50 | #include <asm/reboot.h> | 49 | #include <asm/reboot.h> |
51 | #include <asm/serial.h> | 50 | #include <asm/serial.h> |
52 | #include <asm/titan_dep.h> | 51 | #include <asm/titan_dep.h> |
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c index c197311e15d3..65fa3a23ea5e 100644 --- a/arch/mips/pmc-sierra/yosemite/smp.c +++ b/arch/mips/pmc-sierra/yosemite/smp.c | |||
@@ -110,7 +110,7 @@ void prom_smp_finish(void) | |||
110 | { | 110 | { |
111 | } | 111 | } |
112 | 112 | ||
113 | asmlinkage void titan_mailbox_irq(struct pt_regs *regs) | 113 | asmlinkage void titan_mailbox_irq(void) |
114 | { | 114 | { |
115 | int cpu = smp_processor_id(); | 115 | int cpu = smp_processor_id(); |
116 | unsigned long status; | 116 | unsigned long status; |
diff --git a/arch/mips/qemu/q-irq.c b/arch/mips/qemu/q-irq.c index 3352374c4c7d..f5ea2fe10f14 100644 --- a/arch/mips/qemu/q-irq.c +++ b/arch/mips/qemu/q-irq.c | |||
@@ -9,19 +9,19 @@ | |||
9 | 9 | ||
10 | extern asmlinkage void qemu_handle_int(void); | 10 | extern asmlinkage void qemu_handle_int(void); |
11 | 11 | ||
12 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 12 | asmlinkage void plat_irq_dispatch(void) |
13 | { | 13 | { |
14 | unsigned int pending = read_c0_status() & read_c0_cause(); | 14 | unsigned int pending = read_c0_status() & read_c0_cause(); |
15 | 15 | ||
16 | if (pending & 0x8000) { | 16 | if (pending & 0x8000) { |
17 | ll_timer_interrupt(Q_COUNT_COMPARE_IRQ, regs); | 17 | ll_timer_interrupt(Q_COUNT_COMPARE_IRQ); |
18 | return; | 18 | return; |
19 | } | 19 | } |
20 | if (pending & 0x0400) { | 20 | if (pending & 0x0400) { |
21 | int irq = i8259_irq(); | 21 | int irq = i8259_irq(); |
22 | 22 | ||
23 | if (likely(irq >= 0)) | 23 | if (likely(irq >= 0)) |
24 | do_IRQ(irq, regs); | 24 | do_IRQ(irq); |
25 | 25 | ||
26 | return; | 26 | return; |
27 | } | 27 | } |
diff --git a/arch/mips/sgi-ip22/ip22-berr.c b/arch/mips/sgi-ip22/ip22-berr.c index a28dc7800072..de6a0cc32fea 100644 --- a/arch/mips/sgi-ip22/ip22-berr.c +++ b/arch/mips/sgi-ip22/ip22-berr.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <asm/system.h> | 12 | #include <asm/system.h> |
13 | #include <asm/traps.h> | 13 | #include <asm/traps.h> |
14 | #include <asm/branch.h> | 14 | #include <asm/branch.h> |
15 | #include <asm/irq_regs.h> | ||
15 | #include <asm/sgi/mc.h> | 16 | #include <asm/sgi/mc.h> |
16 | #include <asm/sgi/hpc3.h> | 17 | #include <asm/sgi/hpc3.h> |
17 | #include <asm/sgi/ioc.h> | 18 | #include <asm/sgi/ioc.h> |
@@ -85,9 +86,10 @@ static void print_buserr(void) | |||
85 | * and then clear the interrupt when this happens. | 86 | * and then clear the interrupt when this happens. |
86 | */ | 87 | */ |
87 | 88 | ||
88 | void ip22_be_interrupt(int irq, struct pt_regs *regs) | 89 | void ip22_be_interrupt(int irq) |
89 | { | 90 | { |
90 | const int field = 2 * sizeof(unsigned long); | 91 | const int field = 2 * sizeof(unsigned long); |
92 | const struct pt_regs *regs = get_irq_regs(); | ||
91 | 93 | ||
92 | save_and_clear_buserr(); | 94 | save_and_clear_buserr(); |
93 | print_buserr(); | 95 | print_buserr(); |
diff --git a/arch/mips/sgi-ip22/ip22-eisa.c b/arch/mips/sgi-ip22/ip22-eisa.c index ee0514a29922..0d18ed47c47a 100644 --- a/arch/mips/sgi-ip22/ip22-eisa.c +++ b/arch/mips/sgi-ip22/ip22-eisa.c | |||
@@ -70,7 +70,7 @@ static char __init *decode_eisa_sig(unsigned long addr) | |||
70 | return sig_str; | 70 | return sig_str; |
71 | } | 71 | } |
72 | 72 | ||
73 | static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs) | 73 | static irqreturn_t ip22_eisa_intr(int irq, void *dev_id) |
74 | { | 74 | { |
75 | u8 eisa_irq; | 75 | u8 eisa_irq; |
76 | u8 dma1, dma2; | 76 | u8 dma1, dma2; |
@@ -80,7 +80,7 @@ static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
80 | dma2 = inb(EISA_DMA2_STATUS); | 80 | dma2 = inb(EISA_DMA2_STATUS); |
81 | 81 | ||
82 | if (eisa_irq < EISA_MAX_IRQ) { | 82 | if (eisa_irq < EISA_MAX_IRQ) { |
83 | do_IRQ(eisa_irq, regs); | 83 | do_IRQ(eisa_irq); |
84 | return IRQ_HANDLED; | 84 | return IRQ_HANDLED; |
85 | } | 85 | } |
86 | 86 | ||
@@ -89,6 +89,7 @@ static irqreturn_t ip22_eisa_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
89 | 89 | ||
90 | outb(0x20, EISA_INT2_CTRL); | 90 | outb(0x20, EISA_INT2_CTRL); |
91 | outb(0x20, EISA_INT1_CTRL); | 91 | outb(0x20, EISA_INT1_CTRL); |
92 | |||
92 | return IRQ_NONE; | 93 | return IRQ_NONE; |
93 | } | 94 | } |
94 | 95 | ||
diff --git a/arch/mips/sgi-ip22/ip22-int.c b/arch/mips/sgi-ip22/ip22-int.c index f66026e5d64b..af518898eaa1 100644 --- a/arch/mips/sgi-ip22/ip22-int.c +++ b/arch/mips/sgi-ip22/ip22-int.c | |||
@@ -222,7 +222,7 @@ static struct irq_chip ip22_local3_irq_type = { | |||
222 | .end = end_local3_irq, | 222 | .end = end_local3_irq, |
223 | }; | 223 | }; |
224 | 224 | ||
225 | static void indy_local0_irqdispatch(struct pt_regs *regs) | 225 | static void indy_local0_irqdispatch(void) |
226 | { | 226 | { |
227 | u8 mask = sgint->istat0 & sgint->imask0; | 227 | u8 mask = sgint->istat0 & sgint->imask0; |
228 | u8 mask2; | 228 | u8 mask2; |
@@ -236,11 +236,10 @@ static void indy_local0_irqdispatch(struct pt_regs *regs) | |||
236 | 236 | ||
237 | /* if irq == 0, then the interrupt has already been cleared */ | 237 | /* if irq == 0, then the interrupt has already been cleared */ |
238 | if (irq) | 238 | if (irq) |
239 | do_IRQ(irq, regs); | 239 | do_IRQ(irq); |
240 | return; | ||
241 | } | 240 | } |
242 | 241 | ||
243 | static void indy_local1_irqdispatch(struct pt_regs *regs) | 242 | static void indy_local1_irqdispatch(void) |
244 | { | 243 | { |
245 | u8 mask = sgint->istat1 & sgint->imask1; | 244 | u8 mask = sgint->istat1 & sgint->imask1; |
246 | u8 mask2; | 245 | u8 mask2; |
@@ -254,19 +253,18 @@ static void indy_local1_irqdispatch(struct pt_regs *regs) | |||
254 | 253 | ||
255 | /* if irq == 0, then the interrupt has already been cleared */ | 254 | /* if irq == 0, then the interrupt has already been cleared */ |
256 | if (irq) | 255 | if (irq) |
257 | do_IRQ(irq, regs); | 256 | do_IRQ(irq); |
258 | return; | ||
259 | } | 257 | } |
260 | 258 | ||
261 | extern void ip22_be_interrupt(int irq, struct pt_regs *regs); | 259 | extern void ip22_be_interrupt(int irq); |
262 | 260 | ||
263 | static void indy_buserror_irq(struct pt_regs *regs) | 261 | static void indy_buserror_irq(void) |
264 | { | 262 | { |
265 | int irq = SGI_BUSERR_IRQ; | 263 | int irq = SGI_BUSERR_IRQ; |
266 | 264 | ||
267 | irq_enter(); | 265 | irq_enter(); |
268 | kstat_this_cpu.irqs[irq]++; | 266 | kstat_this_cpu.irqs[irq]++; |
269 | ip22_be_interrupt(irq, regs); | 267 | ip22_be_interrupt(irq); |
270 | irq_exit(); | 268 | irq_exit(); |
271 | } | 269 | } |
272 | 270 | ||
@@ -305,8 +303,8 @@ static struct irqaction map1_cascade = { | |||
305 | #define SGI_INTERRUPTS SGINT_LOCAL3 | 303 | #define SGI_INTERRUPTS SGINT_LOCAL3 |
306 | #endif | 304 | #endif |
307 | 305 | ||
308 | extern void indy_r4k_timer_interrupt(struct pt_regs *regs); | 306 | extern void indy_r4k_timer_interrupt(void); |
309 | extern void indy_8254timer_irq(struct pt_regs *regs); | 307 | extern void indy_8254timer_irq(void); |
310 | 308 | ||
311 | /* | 309 | /* |
312 | * IRQs on the INDY look basically (barring software IRQs which we don't use | 310 | * IRQs on the INDY look basically (barring software IRQs which we don't use |
@@ -336,7 +334,7 @@ extern void indy_8254timer_irq(struct pt_regs *regs); | |||
336 | * another exception, big deal. | 334 | * another exception, big deal. |
337 | */ | 335 | */ |
338 | 336 | ||
339 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 337 | asmlinkage void plat_irq_dispatch(void) |
340 | { | 338 | { |
341 | unsigned int pending = read_c0_cause(); | 339 | unsigned int pending = read_c0_cause(); |
342 | 340 | ||
@@ -344,15 +342,15 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
344 | * First we check for r4k counter/timer IRQ. | 342 | * First we check for r4k counter/timer IRQ. |
345 | */ | 343 | */ |
346 | if (pending & CAUSEF_IP7) | 344 | if (pending & CAUSEF_IP7) |
347 | indy_r4k_timer_interrupt(regs); | 345 | indy_r4k_timer_interrupt(); |
348 | else if (pending & CAUSEF_IP2) | 346 | else if (pending & CAUSEF_IP2) |
349 | indy_local0_irqdispatch(regs); | 347 | indy_local0_irqdispatch(); |
350 | else if (pending & CAUSEF_IP3) | 348 | else if (pending & CAUSEF_IP3) |
351 | indy_local1_irqdispatch(regs); | 349 | indy_local1_irqdispatch(); |
352 | else if (pending & CAUSEF_IP6) | 350 | else if (pending & CAUSEF_IP6) |
353 | indy_buserror_irq(regs); | 351 | indy_buserror_irq(); |
354 | else if (pending & (CAUSEF_IP4 | CAUSEF_IP5)) | 352 | else if (pending & (CAUSEF_IP4 | CAUSEF_IP5)) |
355 | indy_8254timer_irq(regs); | 353 | indy_8254timer_irq(); |
356 | } | 354 | } |
357 | 355 | ||
358 | extern void mips_cpu_irq_init(unsigned int irq_base); | 356 | extern void mips_cpu_irq_init(unsigned int irq_base); |
diff --git a/arch/mips/sgi-ip22/ip22-time.c b/arch/mips/sgi-ip22/ip22-time.c index 3462b0d98def..205554734099 100644 --- a/arch/mips/sgi-ip22/ip22-time.c +++ b/arch/mips/sgi-ip22/ip22-time.c | |||
@@ -175,7 +175,7 @@ static __init void indy_time_init(void) | |||
175 | } | 175 | } |
176 | 176 | ||
177 | /* Generic SGI handler for (spurious) 8254 interrupts */ | 177 | /* Generic SGI handler for (spurious) 8254 interrupts */ |
178 | void indy_8254timer_irq(struct pt_regs *regs) | 178 | void indy_8254timer_irq(void) |
179 | { | 179 | { |
180 | int irq = SGI_8254_0_IRQ; | 180 | int irq = SGI_8254_0_IRQ; |
181 | ULONG cnt; | 181 | ULONG cnt; |
@@ -189,16 +189,14 @@ void indy_8254timer_irq(struct pt_regs *regs) | |||
189 | irq_exit(); | 189 | irq_exit(); |
190 | } | 190 | } |
191 | 191 | ||
192 | void indy_r4k_timer_interrupt(struct pt_regs *regs) | 192 | void indy_r4k_timer_interrupt(void) |
193 | { | 193 | { |
194 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
195 | int irq = SGI_TIMER_IRQ; | 194 | int irq = SGI_TIMER_IRQ; |
196 | 195 | ||
197 | irq_enter(); | 196 | irq_enter(); |
198 | kstat_this_cpu.irqs[irq]++; | 197 | kstat_this_cpu.irqs[irq]++; |
199 | timer_interrupt(irq, NULL); | 198 | timer_interrupt(irq, NULL); |
200 | irq_exit(); | 199 | irq_exit(); |
201 | set_irq_regs(old_regs); | ||
202 | } | 200 | } |
203 | 201 | ||
204 | void __init plat_timer_setup(struct irqaction *irq) | 202 | void __init plat_timer_setup(struct irqaction *irq) |
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c index 24a85372284f..f01ba1f90770 100644 --- a/arch/mips/sgi-ip27/ip27-irq.c +++ b/arch/mips/sgi-ip27/ip27-irq.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/mipsregs.h> | 30 | #include <asm/mipsregs.h> |
31 | #include <asm/system.h> | 31 | #include <asm/system.h> |
32 | 32 | ||
33 | #include <asm/ptrace.h> | ||
34 | #include <asm/processor.h> | 33 | #include <asm/processor.h> |
35 | #include <asm/pci/bridge.h> | 34 | #include <asm/pci/bridge.h> |
36 | #include <asm/sn/addrs.h> | 35 | #include <asm/sn/addrs.h> |
@@ -129,7 +128,7 @@ static int ms1bit(unsigned long x) | |||
129 | * Kanoj 05.13.00 | 128 | * Kanoj 05.13.00 |
130 | */ | 129 | */ |
131 | 130 | ||
132 | static void ip27_do_irq_mask0(struct pt_regs *regs) | 131 | static void ip27_do_irq_mask0(void) |
133 | { | 132 | { |
134 | int irq, swlevel; | 133 | int irq, swlevel; |
135 | hubreg_t pend0, mask0; | 134 | hubreg_t pend0, mask0; |
@@ -164,13 +163,13 @@ static void ip27_do_irq_mask0(struct pt_regs *regs) | |||
164 | struct slice_data *si = cpu_data[cpu].data; | 163 | struct slice_data *si = cpu_data[cpu].data; |
165 | 164 | ||
166 | irq = si->level_to_irq[swlevel]; | 165 | irq = si->level_to_irq[swlevel]; |
167 | do_IRQ(irq, regs); | 166 | do_IRQ(irq); |
168 | } | 167 | } |
169 | 168 | ||
170 | LOCAL_HUB_L(PI_INT_PEND0); | 169 | LOCAL_HUB_L(PI_INT_PEND0); |
171 | } | 170 | } |
172 | 171 | ||
173 | static void ip27_do_irq_mask1(struct pt_regs *regs) | 172 | static void ip27_do_irq_mask1(void) |
174 | { | 173 | { |
175 | int irq, swlevel; | 174 | int irq, swlevel; |
176 | hubreg_t pend1, mask1; | 175 | hubreg_t pend1, mask1; |
@@ -190,17 +189,17 @@ static void ip27_do_irq_mask1(struct pt_regs *regs) | |||
190 | /* "map" swlevel to irq */ | 189 | /* "map" swlevel to irq */ |
191 | irq = si->level_to_irq[swlevel]; | 190 | irq = si->level_to_irq[swlevel]; |
192 | LOCAL_HUB_CLR_INTR(swlevel); | 191 | LOCAL_HUB_CLR_INTR(swlevel); |
193 | do_IRQ(irq, regs); | 192 | do_IRQ(irq); |
194 | 193 | ||
195 | LOCAL_HUB_L(PI_INT_PEND1); | 194 | LOCAL_HUB_L(PI_INT_PEND1); |
196 | } | 195 | } |
197 | 196 | ||
198 | static void ip27_prof_timer(struct pt_regs *regs) | 197 | static void ip27_prof_timer(void) |
199 | { | 198 | { |
200 | panic("CPU %d got a profiling interrupt", smp_processor_id()); | 199 | panic("CPU %d got a profiling interrupt", smp_processor_id()); |
201 | } | 200 | } |
202 | 201 | ||
203 | static void ip27_hub_error(struct pt_regs *regs) | 202 | static void ip27_hub_error(void) |
204 | { | 203 | { |
205 | panic("CPU %d got a hub error interrupt", smp_processor_id()); | 204 | panic("CPU %d got a hub error interrupt", smp_processor_id()); |
206 | } | 205 | } |
@@ -418,22 +417,22 @@ int __devinit request_bridge_irq(struct bridge_controller *bc) | |||
418 | return irq; | 417 | return irq; |
419 | } | 418 | } |
420 | 419 | ||
421 | extern void ip27_rt_timer_interrupt(struct pt_regs *regs); | 420 | extern void ip27_rt_timer_interrupt(void); |
422 | 421 | ||
423 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 422 | asmlinkage void plat_irq_dispatch(void) |
424 | { | 423 | { |
425 | unsigned long pending = read_c0_cause() & read_c0_status(); | 424 | unsigned long pending = read_c0_cause() & read_c0_status(); |
426 | 425 | ||
427 | if (pending & CAUSEF_IP4) | 426 | if (pending & CAUSEF_IP4) |
428 | ip27_rt_timer_interrupt(regs); | 427 | ip27_rt_timer_interrupt(); |
429 | else if (pending & CAUSEF_IP2) /* PI_INT_PEND_0 or CC_PEND_{A|B} */ | 428 | else if (pending & CAUSEF_IP2) /* PI_INT_PEND_0 or CC_PEND_{A|B} */ |
430 | ip27_do_irq_mask0(regs); | 429 | ip27_do_irq_mask0(); |
431 | else if (pending & CAUSEF_IP3) /* PI_INT_PEND_1 */ | 430 | else if (pending & CAUSEF_IP3) /* PI_INT_PEND_1 */ |
432 | ip27_do_irq_mask1(regs); | 431 | ip27_do_irq_mask1(); |
433 | else if (pending & CAUSEF_IP5) | 432 | else if (pending & CAUSEF_IP5) |
434 | ip27_prof_timer(regs); | 433 | ip27_prof_timer(); |
435 | else if (pending & CAUSEF_IP6) | 434 | else if (pending & CAUSEF_IP6) |
436 | ip27_hub_error(regs); | 435 | ip27_hub_error(); |
437 | } | 436 | } |
438 | 437 | ||
439 | void __init arch_init_irq(void) | 438 | void __init arch_init_irq(void) |
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c index 257ce118e380..4e870fc4469b 100644 --- a/arch/mips/sgi-ip27/ip27-timer.c +++ b/arch/mips/sgi-ip27/ip27-timer.c | |||
@@ -89,7 +89,7 @@ static int set_rtc_mmss(unsigned long nowtime) | |||
89 | 89 | ||
90 | static unsigned int rt_timer_irq; | 90 | static unsigned int rt_timer_irq; |
91 | 91 | ||
92 | void ip27_rt_timer_interrupt(struct pt_regs *regs) | 92 | void ip27_rt_timer_interrupt(void) |
93 | { | 93 | { |
94 | int cpu = smp_processor_id(); | 94 | int cpu = smp_processor_id(); |
95 | int cpuA = cputoslice(cpu) == 0; | 95 | int cpuA = cputoslice(cpu) == 0; |
@@ -111,7 +111,7 @@ again: | |||
111 | if (cpu == 0) | 111 | if (cpu == 0) |
112 | do_timer(1); | 112 | do_timer(1); |
113 | 113 | ||
114 | update_process_times(user_mode(regs)); | 114 | update_process_times(user_mode(get_irq_regs())); |
115 | 115 | ||
116 | /* | 116 | /* |
117 | * If we have an externally synchronized Linux clock, then update | 117 | * If we have an externally synchronized Linux clock, then update |
diff --git a/arch/mips/sgi-ip32/crime.c b/arch/mips/sgi-ip32/crime.c index 41b5eca1148c..bff508704d03 100644 --- a/arch/mips/sgi-ip32/crime.c +++ b/arch/mips/sgi-ip32/crime.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <asm/bootinfo.h> | 14 | #include <asm/bootinfo.h> |
15 | #include <asm/io.h> | 15 | #include <asm/io.h> |
16 | #include <asm/mipsregs.h> | 16 | #include <asm/mipsregs.h> |
17 | #include <asm/ptrace.h> | ||
18 | #include <asm/page.h> | 17 | #include <asm/page.h> |
19 | #include <asm/ip32/crime.h> | 18 | #include <asm/ip32/crime.h> |
20 | #include <asm/ip32/mace.h> | 19 | #include <asm/ip32/mace.h> |
@@ -40,8 +39,7 @@ void __init crime_init(void) | |||
40 | id, rev, field, (unsigned long) CRIME_BASE); | 39 | id, rev, field, (unsigned long) CRIME_BASE); |
41 | } | 40 | } |
42 | 41 | ||
43 | irqreturn_t | 42 | irqreturn_t crime_memerr_intr(unsigned int irq, void *dev_id) |
44 | crime_memerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs) | ||
45 | { | 43 | { |
46 | unsigned long stat, addr; | 44 | unsigned long stat, addr; |
47 | int fatal = 0; | 45 | int fatal = 0; |
@@ -92,8 +90,7 @@ crime_memerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs) | |||
92 | return IRQ_HANDLED; | 90 | return IRQ_HANDLED; |
93 | } | 91 | } |
94 | 92 | ||
95 | irqreturn_t | 93 | irqreturn_t crime_cpuerr_intr(unsigned int irq, void *dev_id) |
96 | crime_cpuerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs) | ||
97 | { | 94 | { |
98 | unsigned long stat = crime->cpu_error_stat & CRIME_CPU_ERROR_MASK; | 95 | unsigned long stat = crime->cpu_error_stat & CRIME_CPU_ERROR_MASK; |
99 | unsigned long addr = crime->cpu_error_addr & CRIME_CPU_ERROR_ADDR_MASK; | 96 | unsigned long addr = crime->cpu_error_addr & CRIME_CPU_ERROR_ADDR_MASK; |
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c index c64a820373de..c9acadd0846b 100644 --- a/arch/mips/sgi-ip32/ip32-irq.c +++ b/arch/mips/sgi-ip32/ip32-irq.c | |||
@@ -120,10 +120,8 @@ static void inline flush_mace_bus(void) | |||
120 | static DEFINE_SPINLOCK(ip32_irq_lock); | 120 | static DEFINE_SPINLOCK(ip32_irq_lock); |
121 | 121 | ||
122 | /* Some initial interrupts to set up */ | 122 | /* Some initial interrupts to set up */ |
123 | extern irqreturn_t crime_memerr_intr (int irq, void *dev_id, | 123 | extern irqreturn_t crime_memerr_intr(int irq, void *dev_id); |
124 | struct pt_regs *regs); | 124 | extern irqreturn_t crime_cpuerr_intr(int irq, void *dev_id); |
125 | extern irqreturn_t crime_cpuerr_intr (int irq, void *dev_id, | ||
126 | struct pt_regs *regs); | ||
127 | 125 | ||
128 | struct irqaction memerr_irq = { crime_memerr_intr, IRQF_DISABLED, | 126 | struct irqaction memerr_irq = { crime_memerr_intr, IRQF_DISABLED, |
129 | CPU_MASK_NONE, "CRIME memory error", NULL, NULL }; | 127 | CPU_MASK_NONE, "CRIME memory error", NULL, NULL }; |
@@ -479,7 +477,7 @@ static struct irq_chip ip32_mace_interrupt = { | |||
479 | .end = end_mace_irq, | 477 | .end = end_mace_irq, |
480 | }; | 478 | }; |
481 | 479 | ||
482 | static void ip32_unknown_interrupt(struct pt_regs *regs) | 480 | static void ip32_unknown_interrupt(void) |
483 | { | 481 | { |
484 | printk ("Unknown interrupt occurred!\n"); | 482 | printk ("Unknown interrupt occurred!\n"); |
485 | printk ("cp0_status: %08x\n", read_c0_status()); | 483 | printk ("cp0_status: %08x\n", read_c0_status()); |
@@ -492,7 +490,7 @@ static void ip32_unknown_interrupt(struct pt_regs *regs) | |||
492 | printk ("MACE PCI control register: %08x\n", mace->pci.control); | 490 | printk ("MACE PCI control register: %08x\n", mace->pci.control); |
493 | 491 | ||
494 | printk("Register dump:\n"); | 492 | printk("Register dump:\n"); |
495 | show_regs(regs); | 493 | show_regs(get_irq_regs()); |
496 | 494 | ||
497 | printk("Please mail this report to linux-mips@linux-mips.org\n"); | 495 | printk("Please mail this report to linux-mips@linux-mips.org\n"); |
498 | printk("Spinning..."); | 496 | printk("Spinning..."); |
@@ -501,7 +499,7 @@ static void ip32_unknown_interrupt(struct pt_regs *regs) | |||
501 | 499 | ||
502 | /* CRIME 1.1 appears to deliver all interrupts to this one pin. */ | 500 | /* CRIME 1.1 appears to deliver all interrupts to this one pin. */ |
503 | /* change this to loop over all edge-triggered irqs, exception masked out ones */ | 501 | /* change this to loop over all edge-triggered irqs, exception masked out ones */ |
504 | static void ip32_irq0(struct pt_regs *regs) | 502 | static void ip32_irq0(void) |
505 | { | 503 | { |
506 | uint64_t crime_int; | 504 | uint64_t crime_int; |
507 | int irq = 0; | 505 | int irq = 0; |
@@ -516,50 +514,50 @@ static void ip32_irq0(struct pt_regs *regs) | |||
516 | } | 514 | } |
517 | irq++; | 515 | irq++; |
518 | DBG("*irq %u*\n", irq); | 516 | DBG("*irq %u*\n", irq); |
519 | do_IRQ(irq, regs); | 517 | do_IRQ(irq); |
520 | } | 518 | } |
521 | 519 | ||
522 | static void ip32_irq1(struct pt_regs *regs) | 520 | static void ip32_irq1(void) |
523 | { | 521 | { |
524 | ip32_unknown_interrupt(regs); | 522 | ip32_unknown_interrupt(); |
525 | } | 523 | } |
526 | 524 | ||
527 | static void ip32_irq2(struct pt_regs *regs) | 525 | static void ip32_irq2(void) |
528 | { | 526 | { |
529 | ip32_unknown_interrupt(regs); | 527 | ip32_unknown_interrupt(); |
530 | } | 528 | } |
531 | 529 | ||
532 | static void ip32_irq3(struct pt_regs *regs) | 530 | static void ip32_irq3(void) |
533 | { | 531 | { |
534 | ip32_unknown_interrupt(regs); | 532 | ip32_unknown_interrupt(); |
535 | } | 533 | } |
536 | 534 | ||
537 | static void ip32_irq4(struct pt_regs *regs) | 535 | static void ip32_irq4(void) |
538 | { | 536 | { |
539 | ip32_unknown_interrupt(regs); | 537 | ip32_unknown_interrupt(); |
540 | } | 538 | } |
541 | 539 | ||
542 | static void ip32_irq5(struct pt_regs *regs) | 540 | static void ip32_irq5(void) |
543 | { | 541 | { |
544 | ll_timer_interrupt(IP32_R4K_TIMER_IRQ, regs); | 542 | ll_timer_interrupt(IP32_R4K_TIMER_IRQ); |
545 | } | 543 | } |
546 | 544 | ||
547 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 545 | asmlinkage void plat_irq_dispatch(void) |
548 | { | 546 | { |
549 | unsigned int pending = read_c0_cause(); | 547 | unsigned int pending = read_c0_cause(); |
550 | 548 | ||
551 | if (likely(pending & IE_IRQ0)) | 549 | if (likely(pending & IE_IRQ0)) |
552 | ip32_irq0(regs); | 550 | ip32_irq0(); |
553 | else if (unlikely(pending & IE_IRQ1)) | 551 | else if (unlikely(pending & IE_IRQ1)) |
554 | ip32_irq1(regs); | 552 | ip32_irq1(); |
555 | else if (unlikely(pending & IE_IRQ2)) | 553 | else if (unlikely(pending & IE_IRQ2)) |
556 | ip32_irq2(regs); | 554 | ip32_irq2(); |
557 | else if (unlikely(pending & IE_IRQ3)) | 555 | else if (unlikely(pending & IE_IRQ3)) |
558 | ip32_irq3(regs); | 556 | ip32_irq3(); |
559 | else if (unlikely(pending & IE_IRQ4)) | 557 | else if (unlikely(pending & IE_IRQ4)) |
560 | ip32_irq4(regs); | 558 | ip32_irq4(); |
561 | else if (likely(pending & IE_IRQ5)) | 559 | else if (likely(pending & IE_IRQ5)) |
562 | ip32_irq5(regs); | 560 | ip32_irq5(); |
563 | } | 561 | } |
564 | 562 | ||
565 | void __init arch_init_irq(void) | 563 | void __init arch_init_irq(void) |
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c index a46b75b23ecb..8b1f41484923 100644 --- a/arch/mips/sibyte/bcm1480/irq.c +++ b/arch/mips/sibyte/bcm1480/irq.c | |||
@@ -25,9 +25,9 @@ | |||
25 | #include <linux/kernel_stat.h> | 25 | #include <linux/kernel_stat.h> |
26 | 26 | ||
27 | #include <asm/errno.h> | 27 | #include <asm/errno.h> |
28 | #include <asm/irq_regs.h> | ||
28 | #include <asm/signal.h> | 29 | #include <asm/signal.h> |
29 | #include <asm/system.h> | 30 | #include <asm/system.h> |
30 | #include <asm/ptrace.h> | ||
31 | #include <asm/io.h> | 31 | #include <asm/io.h> |
32 | 32 | ||
33 | #include <asm/sibyte/bcm1480_regs.h> | 33 | #include <asm/sibyte/bcm1480_regs.h> |
@@ -284,8 +284,7 @@ void __init init_bcm1480_irqs(void) | |||
284 | } | 284 | } |
285 | 285 | ||
286 | 286 | ||
287 | static irqreturn_t bcm1480_dummy_handler(int irq, void *dev_id, | 287 | static irqreturn_t bcm1480_dummy_handler(int irq, void *dev_id) |
288 | struct pt_regs *regs) | ||
289 | { | 288 | { |
290 | return IRQ_NONE; | 289 | return IRQ_NONE; |
291 | } | 290 | } |
@@ -453,7 +452,7 @@ void __init arch_init_irq(void) | |||
453 | #define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) | 452 | #define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) |
454 | #define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) | 453 | #define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) |
455 | 454 | ||
456 | void bcm1480_kgdb_interrupt(struct pt_regs *regs) | 455 | static void bcm1480_kgdb_interrupt(void) |
457 | { | 456 | { |
458 | /* | 457 | /* |
459 | * Clear break-change status (allow some time for the remote | 458 | * Clear break-change status (allow some time for the remote |
@@ -464,16 +463,15 @@ void bcm1480_kgdb_interrupt(struct pt_regs *regs) | |||
464 | mdelay(500); | 463 | mdelay(500); |
465 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | | 464 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | |
466 | M_DUART_RX_EN | M_DUART_TX_EN); | 465 | M_DUART_RX_EN | M_DUART_TX_EN); |
467 | set_async_breakpoint(®s->cp0_epc); | 466 | set_async_breakpoint(&get_irq_regs()->cp0_epc); |
468 | } | 467 | } |
469 | 468 | ||
470 | #endif /* CONFIG_KGDB */ | 469 | #endif /* CONFIG_KGDB */ |
471 | 470 | ||
472 | extern void bcm1480_timer_interrupt(struct pt_regs *regs); | 471 | extern void bcm1480_timer_interrupt(void); |
473 | extern void bcm1480_mailbox_interrupt(struct pt_regs *regs); | 472 | extern void bcm1480_mailbox_interrupt(void); |
474 | extern void bcm1480_kgdb_interrupt(struct pt_regs *regs); | ||
475 | 473 | ||
476 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 474 | asmlinkage void plat_irq_dispatch(void) |
477 | { | 475 | { |
478 | unsigned int pending; | 476 | unsigned int pending; |
479 | 477 | ||
@@ -486,21 +484,21 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
486 | 484 | ||
487 | #ifdef CONFIG_SIBYTE_BCM1480_PROF | 485 | #ifdef CONFIG_SIBYTE_BCM1480_PROF |
488 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ | 486 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ |
489 | sbprof_cpu_intr(exception_epc(regs)); | 487 | sbprof_cpu_intr(); |
490 | else | 488 | else |
491 | #endif | 489 | #endif |
492 | 490 | ||
493 | if (pending & CAUSEF_IP4) | 491 | if (pending & CAUSEF_IP4) |
494 | bcm1480_timer_interrupt(regs); | 492 | bcm1480_timer_interrupt(); |
495 | 493 | ||
496 | #ifdef CONFIG_SMP | 494 | #ifdef CONFIG_SMP |
497 | else if (pending & CAUSEF_IP3) | 495 | else if (pending & CAUSEF_IP3) |
498 | bcm1480_mailbox_interrupt(regs); | 496 | bcm1480_mailbox_interrupt(); |
499 | #endif | 497 | #endif |
500 | 498 | ||
501 | #ifdef CONFIG_KGDB | 499 | #ifdef CONFIG_KGDB |
502 | else if (pending & CAUSEF_IP6) | 500 | else if (pending & CAUSEF_IP6) |
503 | bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */ | 501 | bcm1480_kgdb_interrupt(); /* KGDB (uart 1) */ |
504 | #endif | 502 | #endif |
505 | 503 | ||
506 | else if (pending & CAUSEF_IP2) { | 504 | else if (pending & CAUSEF_IP2) { |
@@ -521,9 +519,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
521 | 519 | ||
522 | if (mask_h) { | 520 | if (mask_h) { |
523 | if (mask_h ^ 1) | 521 | if (mask_h ^ 1) |
524 | do_IRQ(fls64(mask_h) - 1, regs); | 522 | do_IRQ(fls64(mask_h) - 1); |
525 | else | 523 | else |
526 | do_IRQ(63 + fls64(mask_l), regs); | 524 | do_IRQ(63 + fls64(mask_l)); |
527 | } | 525 | } |
528 | } | 526 | } |
529 | } | 527 | } |
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c index 584a4b33faac..6eac36d1b8c8 100644 --- a/arch/mips/sibyte/bcm1480/smp.c +++ b/arch/mips/sibyte/bcm1480/smp.c | |||
@@ -88,7 +88,7 @@ void core_send_ipi(int cpu, unsigned int action) | |||
88 | __raw_writeq((((u64)action)<< 48), mailbox_0_set_regs[cpu]); | 88 | __raw_writeq((((u64)action)<< 48), mailbox_0_set_regs[cpu]); |
89 | } | 89 | } |
90 | 90 | ||
91 | void bcm1480_mailbox_interrupt(struct pt_regs *regs) | 91 | void bcm1480_mailbox_interrupt(void) |
92 | { | 92 | { |
93 | int cpu = smp_processor_id(); | 93 | int cpu = smp_processor_id(); |
94 | unsigned int action; | 94 | unsigned int action; |
diff --git a/arch/mips/sibyte/bcm1480/time.c b/arch/mips/sibyte/bcm1480/time.c index 7e088f6c4a86..bf12af46132e 100644 --- a/arch/mips/sibyte/bcm1480/time.c +++ b/arch/mips/sibyte/bcm1480/time.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <linux/kernel_stat.h> | 31 | #include <linux/kernel_stat.h> |
32 | 32 | ||
33 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
34 | #include <asm/ptrace.h> | ||
35 | #include <asm/addrspace.h> | 34 | #include <asm/addrspace.h> |
36 | #include <asm/time.h> | 35 | #include <asm/time.h> |
37 | #include <asm/io.h> | 36 | #include <asm/io.h> |
@@ -100,10 +99,10 @@ void bcm1480_time_init(void) | |||
100 | 99 | ||
101 | #include <asm/sibyte/sb1250.h> | 100 | #include <asm/sibyte/sb1250.h> |
102 | 101 | ||
103 | void bcm1480_timer_interrupt(struct pt_regs *regs) | 102 | void bcm1480_timer_interrupt(void) |
104 | { | 103 | { |
105 | int cpu = smp_processor_id(); | 104 | int cpu = smp_processor_id(); |
106 | int irq = K_BCM1480_INT_TIMER_0+cpu; | 105 | int irq = K_BCM1480_INT_TIMER_0 + cpu; |
107 | 106 | ||
108 | /* Reset the timer */ | 107 | /* Reset the timer */ |
109 | __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, | 108 | __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, |
@@ -113,13 +112,13 @@ void bcm1480_timer_interrupt(struct pt_regs *regs) | |||
113 | /* | 112 | /* |
114 | * CPU 0 handles the global timer interrupt job | 113 | * CPU 0 handles the global timer interrupt job |
115 | */ | 114 | */ |
116 | ll_timer_interrupt(irq, regs); | 115 | ll_timer_interrupt(irq); |
117 | } | 116 | } |
118 | else { | 117 | else { |
119 | /* | 118 | /* |
120 | * other CPUs should just do profiling and process accounting | 119 | * other CPUs should just do profiling and process accounting |
121 | */ | 120 | */ |
122 | ll_local_timer_interrupt(irq, regs); | 121 | ll_local_timer_interrupt(irq); |
123 | } | 122 | } |
124 | } | 123 | } |
125 | 124 | ||
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index f9bd9f074517..d5d26770daf6 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/errno.h> | 28 | #include <asm/errno.h> |
29 | #include <asm/signal.h> | 29 | #include <asm/signal.h> |
30 | #include <asm/system.h> | 30 | #include <asm/system.h> |
31 | #include <asm/ptrace.h> | ||
32 | #include <asm/io.h> | 31 | #include <asm/io.h> |
33 | 32 | ||
34 | #include <asm/sibyte/sb1250_regs.h> | 33 | #include <asm/sibyte/sb1250_regs.h> |
@@ -254,8 +253,7 @@ void __init init_sb1250_irqs(void) | |||
254 | } | 253 | } |
255 | 254 | ||
256 | 255 | ||
257 | static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id, | 256 | static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id) |
258 | struct pt_regs *regs) | ||
259 | { | 257 | { |
260 | return IRQ_NONE; | 258 | return IRQ_NONE; |
261 | } | 259 | } |
@@ -403,7 +401,7 @@ void __init arch_init_irq(void) | |||
403 | #define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) | 401 | #define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) |
404 | #define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) | 402 | #define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) |
405 | 403 | ||
406 | static void sb1250_kgdb_interrupt(struct pt_regs *regs) | 404 | static void sb1250_kgdb_interrupt(void) |
407 | { | 405 | { |
408 | /* | 406 | /* |
409 | * Clear break-change status (allow some time for the remote | 407 | * Clear break-change status (allow some time for the remote |
@@ -414,16 +412,15 @@ static void sb1250_kgdb_interrupt(struct pt_regs *regs) | |||
414 | mdelay(500); | 412 | mdelay(500); |
415 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | | 413 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | |
416 | M_DUART_RX_EN | M_DUART_TX_EN); | 414 | M_DUART_RX_EN | M_DUART_TX_EN); |
417 | set_async_breakpoint(®s->cp0_epc); | 415 | set_async_breakpoint(&get_irq_regs()->cp0_epc); |
418 | } | 416 | } |
419 | 417 | ||
420 | #endif /* CONFIG_KGDB */ | 418 | #endif /* CONFIG_KGDB */ |
421 | 419 | ||
422 | extern void sb1250_timer_interrupt(struct pt_regs *regs); | 420 | extern void sb1250_timer_interrupt(void); |
423 | extern void sb1250_mailbox_interrupt(struct pt_regs *regs); | 421 | extern void sb1250_mailbox_interrupt(void); |
424 | extern void sb1250_kgdb_interrupt(struct pt_regs *regs); | ||
425 | 422 | ||
426 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 423 | asmlinkage void plat_irq_dispatch(void) |
427 | { | 424 | { |
428 | unsigned int pending; | 425 | unsigned int pending; |
429 | 426 | ||
@@ -446,21 +443,21 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
446 | 443 | ||
447 | #ifdef CONFIG_SIBYTE_SB1250_PROF | 444 | #ifdef CONFIG_SIBYTE_SB1250_PROF |
448 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ | 445 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ |
449 | sbprof_cpu_intr(exception_epc(regs)); | 446 | sbprof_cpu_intr(); |
450 | else | 447 | else |
451 | #endif | 448 | #endif |
452 | 449 | ||
453 | if (pending & CAUSEF_IP4) | 450 | if (pending & CAUSEF_IP4) |
454 | sb1250_timer_interrupt(regs); | 451 | sb1250_timer_interrupt(); |
455 | 452 | ||
456 | #ifdef CONFIG_SMP | 453 | #ifdef CONFIG_SMP |
457 | else if (pending & CAUSEF_IP3) | 454 | else if (pending & CAUSEF_IP3) |
458 | sb1250_mailbox_interrupt(regs); | 455 | sb1250_mailbox_interrupt(); |
459 | #endif | 456 | #endif |
460 | 457 | ||
461 | #ifdef CONFIG_KGDB | 458 | #ifdef CONFIG_KGDB |
462 | else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ | 459 | else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ |
463 | sb1250_kgdb_interrupt(regs); | 460 | sb1250_kgdb_interrupt(); |
464 | #endif | 461 | #endif |
465 | 462 | ||
466 | else if (pending & CAUSEF_IP2) { | 463 | else if (pending & CAUSEF_IP2) { |
@@ -475,9 +472,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
475 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), | 472 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), |
476 | R_IMR_INTERRUPT_STATUS_BASE))); | 473 | R_IMR_INTERRUPT_STATUS_BASE))); |
477 | if (mask) | 474 | if (mask) |
478 | do_IRQ(fls64(mask) - 1, regs); | 475 | do_IRQ(fls64(mask) - 1); |
479 | else | 476 | else |
480 | spurious_interrupt(regs); | 477 | spurious_interrupt(); |
481 | } else | 478 | } else |
482 | spurious_interrupt(regs); | 479 | spurious_interrupt(); |
483 | } | 480 | } |
diff --git a/arch/mips/sibyte/sb1250/smp.c b/arch/mips/sibyte/sb1250/smp.c index f859db02d3c9..c38e1f34460d 100644 --- a/arch/mips/sibyte/sb1250/smp.c +++ b/arch/mips/sibyte/sb1250/smp.c | |||
@@ -76,7 +76,7 @@ void core_send_ipi(int cpu, unsigned int action) | |||
76 | __raw_writeq((((u64)action) << 48), mailbox_set_regs[cpu]); | 76 | __raw_writeq((((u64)action) << 48), mailbox_set_regs[cpu]); |
77 | } | 77 | } |
78 | 78 | ||
79 | void sb1250_mailbox_interrupt(struct pt_regs *regs) | 79 | void sb1250_mailbox_interrupt(void) |
80 | { | 80 | { |
81 | int cpu = smp_processor_id(); | 81 | int cpu = smp_processor_id(); |
82 | unsigned int action; | 82 | unsigned int action; |
diff --git a/arch/mips/sibyte/sb1250/time.c b/arch/mips/sibyte/sb1250/time.c index 4b669dc86ef4..0ccf1796dd78 100644 --- a/arch/mips/sibyte/sb1250/time.c +++ b/arch/mips/sibyte/sb1250/time.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <linux/kernel_stat.h> | 31 | #include <linux/kernel_stat.h> |
32 | 32 | ||
33 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
34 | #include <asm/ptrace.h> | ||
35 | #include <asm/addrspace.h> | 34 | #include <asm/addrspace.h> |
36 | #include <asm/time.h> | 35 | #include <asm/time.h> |
37 | #include <asm/io.h> | 36 | #include <asm/io.h> |
@@ -125,7 +124,7 @@ void sb1250_time_init(void) | |||
125 | */ | 124 | */ |
126 | } | 125 | } |
127 | 126 | ||
128 | void sb1250_timer_interrupt(struct pt_regs *regs) | 127 | void sb1250_timer_interrupt(void) |
129 | { | 128 | { |
130 | int cpu = smp_processor_id(); | 129 | int cpu = smp_processor_id(); |
131 | int irq = K_INT_TIMER_0 + cpu; | 130 | int irq = K_INT_TIMER_0 + cpu; |
@@ -138,13 +137,13 @@ void sb1250_timer_interrupt(struct pt_regs *regs) | |||
138 | /* | 137 | /* |
139 | * CPU 0 handles the global timer interrupt job | 138 | * CPU 0 handles the global timer interrupt job |
140 | */ | 139 | */ |
141 | ll_timer_interrupt(irq, regs); | 140 | ll_timer_interrupt(irq); |
142 | } | 141 | } |
143 | else { | 142 | else { |
144 | /* | 143 | /* |
145 | * other CPUs should just do profiling and process accounting | 144 | * other CPUs should just do profiling and process accounting |
146 | */ | 145 | */ |
147 | ll_local_timer_interrupt(irq, regs); | 146 | ll_local_timer_interrupt(irq); |
148 | } | 147 | } |
149 | } | 148 | } |
150 | 149 | ||
diff --git a/arch/mips/sni/irq.c b/arch/mips/sni/irq.c index cda165f42b6a..48fb74a7aaec 100644 --- a/arch/mips/sni/irq.c +++ b/arch/mips/sni/irq.c | |||
@@ -69,20 +69,20 @@ static struct irq_chip pciasic_irq_type = { | |||
69 | * hwint0 should deal with MP agent, ASIC PCI, EISA NMI and debug | 69 | * hwint0 should deal with MP agent, ASIC PCI, EISA NMI and debug |
70 | * button interrupts. Later ... | 70 | * button interrupts. Later ... |
71 | */ | 71 | */ |
72 | static void pciasic_hwint0(struct pt_regs *regs) | 72 | static void pciasic_hwint0(void) |
73 | { | 73 | { |
74 | panic("Received int0 but no handler yet ..."); | 74 | panic("Received int0 but no handler yet ..."); |
75 | } | 75 | } |
76 | 76 | ||
77 | /* This interrupt was used for the com1 console on the first prototypes. */ | 77 | /* This interrupt was used for the com1 console on the first prototypes. */ |
78 | static void pciasic_hwint2(struct pt_regs *regs) | 78 | static void pciasic_hwint2(void) |
79 | { | 79 | { |
80 | /* I think this shouldn't happen on production machines. */ | 80 | /* I think this shouldn't happen on production machines. */ |
81 | panic("hwint2 and no handler yet"); | 81 | panic("hwint2 and no handler yet"); |
82 | } | 82 | } |
83 | 83 | ||
84 | /* hwint5 is the r4k count / compare interrupt */ | 84 | /* hwint5 is the r4k count / compare interrupt */ |
85 | static void pciasic_hwint5(struct pt_regs *regs) | 85 | static void pciasic_hwint5(void) |
86 | { | 86 | { |
87 | panic("hwint5 and no handler yet"); | 87 | panic("hwint5 and no handler yet"); |
88 | } | 88 | } |
@@ -103,7 +103,7 @@ static unsigned int ls1bit8(unsigned int x) | |||
103 | * | 103 | * |
104 | * The EISA_INT bit in CSITPEND is high active, all others are low active. | 104 | * The EISA_INT bit in CSITPEND is high active, all others are low active. |
105 | */ | 105 | */ |
106 | static void pciasic_hwint1(struct pt_regs *regs) | 106 | static void pciasic_hwint1(void) |
107 | { | 107 | { |
108 | u8 pend = *(volatile char *)PCIMT_CSITPEND; | 108 | u8 pend = *(volatile char *)PCIMT_CSITPEND; |
109 | unsigned long flags; | 109 | unsigned long flags; |
@@ -119,13 +119,13 @@ static void pciasic_hwint1(struct pt_regs *regs) | |||
119 | if (unlikely(irq < 0)) | 119 | if (unlikely(irq < 0)) |
120 | return; | 120 | return; |
121 | 121 | ||
122 | do_IRQ(irq, regs); | 122 | do_IRQ(irq); |
123 | } | 123 | } |
124 | 124 | ||
125 | if (!(pend & IT_SCSI)) { | 125 | if (!(pend & IT_SCSI)) { |
126 | flags = read_c0_status(); | 126 | flags = read_c0_status(); |
127 | clear_c0_status(ST0_IM); | 127 | clear_c0_status(ST0_IM); |
128 | do_IRQ(PCIMT_IRQ_SCSI, regs); | 128 | do_IRQ(PCIMT_IRQ_SCSI); |
129 | write_c0_status(flags); | 129 | write_c0_status(flags); |
130 | } | 130 | } |
131 | } | 131 | } |
@@ -133,7 +133,7 @@ static void pciasic_hwint1(struct pt_regs *regs) | |||
133 | /* | 133 | /* |
134 | * hwint 3 should deal with the PCI A - D interrupts, | 134 | * hwint 3 should deal with the PCI A - D interrupts, |
135 | */ | 135 | */ |
136 | static void pciasic_hwint3(struct pt_regs *regs) | 136 | static void pciasic_hwint3(void) |
137 | { | 137 | { |
138 | u8 pend = *(volatile char *)PCIMT_CSITPEND; | 138 | u8 pend = *(volatile char *)PCIMT_CSITPEND; |
139 | int irq; | 139 | int irq; |
@@ -141,21 +141,21 @@ static void pciasic_hwint3(struct pt_regs *regs) | |||
141 | pend &= (IT_INTA | IT_INTB | IT_INTC | IT_INTD); | 141 | pend &= (IT_INTA | IT_INTB | IT_INTC | IT_INTD); |
142 | clear_c0_status(IE_IRQ3); | 142 | clear_c0_status(IE_IRQ3); |
143 | irq = PCIMT_IRQ_INT2 + ls1bit8(pend); | 143 | irq = PCIMT_IRQ_INT2 + ls1bit8(pend); |
144 | do_IRQ(irq, regs); | 144 | do_IRQ(irq); |
145 | set_c0_status(IE_IRQ3); | 145 | set_c0_status(IE_IRQ3); |
146 | } | 146 | } |
147 | 147 | ||
148 | /* | 148 | /* |
149 | * hwint 4 is used for only the onboard PCnet 32. | 149 | * hwint 4 is used for only the onboard PCnet 32. |
150 | */ | 150 | */ |
151 | static void pciasic_hwint4(struct pt_regs *regs) | 151 | static void pciasic_hwint4(void) |
152 | { | 152 | { |
153 | clear_c0_status(IE_IRQ4); | 153 | clear_c0_status(IE_IRQ4); |
154 | do_IRQ(PCIMT_IRQ_ETHERNET, regs); | 154 | do_IRQ(PCIMT_IRQ_ETHERNET); |
155 | set_c0_status(IE_IRQ4); | 155 | set_c0_status(IE_IRQ4); |
156 | } | 156 | } |
157 | 157 | ||
158 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 158 | asmlinkage void plat_irq_dispatch(void) |
159 | { | 159 | { |
160 | unsigned int pending = read_c0_status() & read_c0_cause(); | 160 | unsigned int pending = read_c0_status() & read_c0_cause(); |
161 | static unsigned char led_cache; | 161 | static unsigned char led_cache; |
@@ -163,17 +163,17 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
163 | *(volatile unsigned char *) PCIMT_CSLED = ++led_cache; | 163 | *(volatile unsigned char *) PCIMT_CSLED = ++led_cache; |
164 | 164 | ||
165 | if (pending & 0x0800) | 165 | if (pending & 0x0800) |
166 | pciasic_hwint1(regs); | 166 | pciasic_hwint1(); |
167 | else if (pending & 0x4000) | 167 | else if (pending & 0x4000) |
168 | pciasic_hwint4(regs); | 168 | pciasic_hwint4(); |
169 | else if (pending & 0x2000) | 169 | else if (pending & 0x2000) |
170 | pciasic_hwint3(regs); | 170 | pciasic_hwint3(); |
171 | else if (pending & 0x1000) | 171 | else if (pending & 0x1000) |
172 | pciasic_hwint2(regs); | 172 | pciasic_hwint2(); |
173 | else if (pending & 0x8000) | 173 | else if (pending & 0x8000) |
174 | pciasic_hwint5(regs); | 174 | pciasic_hwint5(); |
175 | else if (pending & 0x0400) | 175 | else if (pending & 0x0400) |
176 | pciasic_hwint0(regs); | 176 | pciasic_hwint0(); |
177 | } | 177 | } |
178 | 178 | ||
179 | void __init init_pciasic(void) | 179 | void __init init_pciasic(void) |
diff --git a/arch/mips/sni/setup.c b/arch/mips/sni/setup.c index 4e98feb15410..afeb7f13e5b5 100644 --- a/arch/mips/sni/setup.c +++ b/arch/mips/sni/setup.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <asm/irq.h> | 31 | #include <asm/irq.h> |
32 | #include <asm/mc146818-time.h> | 32 | #include <asm/mc146818-time.h> |
33 | #include <asm/processor.h> | 33 | #include <asm/processor.h> |
34 | #include <asm/ptrace.h> | ||
35 | #include <asm/reboot.h> | 34 | #include <asm/reboot.h> |
36 | #include <asm/sni.h> | 35 | #include <asm/sni.h> |
37 | #include <asm/time.h> | 36 | #include <asm/time.h> |
diff --git a/arch/mips/tx4927/common/tx4927_irq.c b/arch/mips/tx4927/common/tx4927_irq.c index cd176f6a06c8..8266a88a3f88 100644 --- a/arch/mips/tx4927/common/tx4927_irq.c +++ b/arch/mips/tx4927/common/tx4927_irq.c | |||
@@ -576,24 +576,24 @@ static int tx4927_irq_nested(void) | |||
576 | return (sw_irq); | 576 | return (sw_irq); |
577 | } | 577 | } |
578 | 578 | ||
579 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 579 | asmlinkage void plat_irq_dispatch(void) |
580 | { | 580 | { |
581 | unsigned int pending = read_c0_status() & read_c0_cause(); | 581 | unsigned int pending = read_c0_status() & read_c0_cause(); |
582 | 582 | ||
583 | if (pending & STATUSF_IP7) /* cpu timer */ | 583 | if (pending & STATUSF_IP7) /* cpu timer */ |
584 | do_IRQ(TX4927_IRQ_CPU_TIMER, regs); | 584 | do_IRQ(TX4927_IRQ_CPU_TIMER); |
585 | else if (pending & STATUSF_IP2) { /* tx4927 pic */ | 585 | else if (pending & STATUSF_IP2) { /* tx4927 pic */ |
586 | unsigned int irq = tx4927_irq_nested(); | 586 | unsigned int irq = tx4927_irq_nested(); |
587 | 587 | ||
588 | if (unlikely(irq == 0)) { | 588 | if (unlikely(irq == 0)) { |
589 | spurious_interrupt(regs); | 589 | spurious_interrupt(); |
590 | return; | 590 | return; |
591 | } | 591 | } |
592 | do_IRQ(irq, regs); | 592 | do_IRQ(irq); |
593 | } else if (pending & STATUSF_IP0) /* user line 0 */ | 593 | } else if (pending & STATUSF_IP0) /* user line 0 */ |
594 | do_IRQ(TX4927_IRQ_USER0, regs); | 594 | do_IRQ(TX4927_IRQ_USER0); |
595 | else if (pending & STATUSF_IP1) /* user line 1 */ | 595 | else if (pending & STATUSF_IP1) /* user line 1 */ |
596 | do_IRQ(TX4927_IRQ_USER1, regs); | 596 | do_IRQ(TX4927_IRQ_USER1); |
597 | else | 597 | else |
598 | spurious_interrupt(regs); | 598 | spurious_interrupt(); |
599 | } | 599 | } |
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c index b0f021f2a6c4..3e24413d4c09 100644 --- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c +++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c | |||
@@ -127,7 +127,6 @@ JP7 is not bus master -- do NOT use -- only 4 pci bus master's allowed -- SouthB | |||
127 | #include <asm/irq.h> | 127 | #include <asm/irq.h> |
128 | #include <asm/pci.h> | 128 | #include <asm/pci.h> |
129 | #include <asm/processor.h> | 129 | #include <asm/processor.h> |
130 | #include <asm/ptrace.h> | ||
131 | #include <asm/reboot.h> | 130 | #include <asm/reboot.h> |
132 | #include <asm/time.h> | 131 | #include <asm/time.h> |
133 | #include <linux/bootmem.h> | 132 | #include <linux/bootmem.h> |
diff --git a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c index f0d70c476005..735cb8778f4c 100644 --- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c +++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c | |||
@@ -58,8 +58,8 @@ | |||
58 | #include <asm/page.h> | 58 | #include <asm/page.h> |
59 | #include <asm/io.h> | 59 | #include <asm/io.h> |
60 | #include <asm/irq.h> | 60 | #include <asm/irq.h> |
61 | #include <asm/irq_regs.h> | ||
61 | #include <asm/processor.h> | 62 | #include <asm/processor.h> |
62 | #include <asm/ptrace.h> | ||
63 | #include <asm/reboot.h> | 63 | #include <asm/reboot.h> |
64 | #include <asm/time.h> | 64 | #include <asm/time.h> |
65 | #include <linux/bootmem.h> | 65 | #include <linux/bootmem.h> |
@@ -160,8 +160,7 @@ int tx4927_pci66 = 0; /* 0:auto */ | |||
160 | char *toshiba_name = ""; | 160 | char *toshiba_name = ""; |
161 | 161 | ||
162 | #ifdef CONFIG_PCI | 162 | #ifdef CONFIG_PCI |
163 | static void tx4927_pcierr_interrupt(int irq, void *dev_id, | 163 | static void tx4927_pcierr_interrupt(int irq, void *dev_id) |
164 | struct pt_regs *regs) | ||
165 | { | 164 | { |
166 | #ifdef CONFIG_BLK_DEV_IDEPCI | 165 | #ifdef CONFIG_BLK_DEV_IDEPCI |
167 | /* ignore MasterAbort for ide probing... */ | 166 | /* ignore MasterAbort for ide probing... */ |
@@ -185,7 +184,7 @@ static void tx4927_pcierr_interrupt(int irq, void *dev_id, | |||
185 | (unsigned long) tx4927_ccfgptr->ccfg, | 184 | (unsigned long) tx4927_ccfgptr->ccfg, |
186 | (unsigned long) (tx4927_ccfgptr->tear >> 32), | 185 | (unsigned long) (tx4927_ccfgptr->tear >> 32), |
187 | (unsigned long) tx4927_ccfgptr->tear); | 186 | (unsigned long) tx4927_ccfgptr->tear); |
188 | show_regs(regs); | 187 | show_regs(get_irq_regs()); |
189 | } | 188 | } |
190 | 189 | ||
191 | void __init toshiba_rbtx4927_pci_irq_init(void) | 190 | void __init toshiba_rbtx4927_pci_irq_init(void) |
diff --git a/arch/mips/tx4938/common/irq.c b/arch/mips/tx4938/common/irq.c index cbfb34221b59..b6024749b8f4 100644 --- a/arch/mips/tx4938/common/irq.c +++ b/arch/mips/tx4938/common/irq.c | |||
@@ -104,8 +104,6 @@ tx4938_irq_cp0_init(void) | |||
104 | irq_desc[i].depth = 1; | 104 | irq_desc[i].depth = 1; |
105 | irq_desc[i].chip = &tx4938_irq_cp0_type; | 105 | irq_desc[i].chip = &tx4938_irq_cp0_type; |
106 | } | 106 | } |
107 | |||
108 | return; | ||
109 | } | 107 | } |
110 | 108 | ||
111 | static unsigned int | 109 | static unsigned int |
@@ -113,7 +111,7 @@ tx4938_irq_cp0_startup(unsigned int irq) | |||
113 | { | 111 | { |
114 | tx4938_irq_cp0_enable(irq); | 112 | tx4938_irq_cp0_enable(irq); |
115 | 113 | ||
116 | return (0); | 114 | return 0; |
117 | } | 115 | } |
118 | 116 | ||
119 | static void | 117 | static void |
@@ -144,16 +142,12 @@ tx4938_irq_cp0_disable(unsigned int irq) | |||
144 | clear_c0_status(tx4938_irq_cp0_mask(irq)); | 142 | clear_c0_status(tx4938_irq_cp0_mask(irq)); |
145 | 143 | ||
146 | spin_unlock_irqrestore(&tx4938_cp0_lock, flags); | 144 | spin_unlock_irqrestore(&tx4938_cp0_lock, flags); |
147 | |||
148 | return; | ||
149 | } | 145 | } |
150 | 146 | ||
151 | static void | 147 | static void |
152 | tx4938_irq_cp0_mask_and_ack(unsigned int irq) | 148 | tx4938_irq_cp0_mask_and_ack(unsigned int irq) |
153 | { | 149 | { |
154 | tx4938_irq_cp0_disable(irq); | 150 | tx4938_irq_cp0_disable(irq); |
155 | |||
156 | return; | ||
157 | } | 151 | } |
158 | 152 | ||
159 | static void | 153 | static void |
@@ -162,8 +156,6 @@ tx4938_irq_cp0_end(unsigned int irq) | |||
162 | if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) { | 156 | if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) { |
163 | tx4938_irq_cp0_enable(irq); | 157 | tx4938_irq_cp0_enable(irq); |
164 | } | 158 | } |
165 | |||
166 | return; | ||
167 | } | 159 | } |
168 | 160 | ||
169 | /**********************************************************************************/ | 161 | /**********************************************************************************/ |
@@ -227,7 +219,7 @@ tx4938_irq_pic_addr(int irq) | |||
227 | } | 219 | } |
228 | } | 220 | } |
229 | 221 | ||
230 | return (0); | 222 | return 0; |
231 | } | 223 | } |
232 | 224 | ||
233 | u32 | 225 | u32 |
@@ -278,7 +270,7 @@ tx4938_irq_pic_mask(int irq) | |||
278 | return (0x00000007); | 270 | return (0x00000007); |
279 | } | 271 | } |
280 | } | 272 | } |
281 | return (0x00000000); | 273 | return 0x00000000; |
282 | } | 274 | } |
283 | 275 | ||
284 | static void | 276 | static void |
@@ -292,8 +284,6 @@ tx4938_irq_pic_modify(unsigned pic_reg, unsigned clr_bits, unsigned set_bits) | |||
292 | TX4938_WR(pic_reg, val); | 284 | TX4938_WR(pic_reg, val); |
293 | mmiowb(); | 285 | mmiowb(); |
294 | TX4938_RD(pic_reg); | 286 | TX4938_RD(pic_reg); |
295 | |||
296 | return; | ||
297 | } | 287 | } |
298 | 288 | ||
299 | static void __init | 289 | static void __init |
@@ -317,8 +307,6 @@ tx4938_irq_pic_init(void) | |||
317 | TX4938_WR(0xff1ff600, TX4938_RD(0xff1ff600) | 0x1); /* irq enable */ | 307 | TX4938_WR(0xff1ff600, TX4938_RD(0xff1ff600) | 0x1); /* irq enable */ |
318 | 308 | ||
319 | spin_unlock_irqrestore(&tx4938_pic_lock, flags); | 309 | spin_unlock_irqrestore(&tx4938_pic_lock, flags); |
320 | |||
321 | return; | ||
322 | } | 310 | } |
323 | 311 | ||
324 | static unsigned int | 312 | static unsigned int |
@@ -326,15 +314,13 @@ tx4938_irq_pic_startup(unsigned int irq) | |||
326 | { | 314 | { |
327 | tx4938_irq_pic_enable(irq); | 315 | tx4938_irq_pic_enable(irq); |
328 | 316 | ||
329 | return (0); | 317 | return 0; |
330 | } | 318 | } |
331 | 319 | ||
332 | static void | 320 | static void |
333 | tx4938_irq_pic_shutdown(unsigned int irq) | 321 | tx4938_irq_pic_shutdown(unsigned int irq) |
334 | { | 322 | { |
335 | tx4938_irq_pic_disable(irq); | 323 | tx4938_irq_pic_disable(irq); |
336 | |||
337 | return; | ||
338 | } | 324 | } |
339 | 325 | ||
340 | static void | 326 | static void |
@@ -348,8 +334,6 @@ tx4938_irq_pic_enable(unsigned int irq) | |||
348 | tx4938_irq_pic_mask(irq)); | 334 | tx4938_irq_pic_mask(irq)); |
349 | 335 | ||
350 | spin_unlock_irqrestore(&tx4938_pic_lock, flags); | 336 | spin_unlock_irqrestore(&tx4938_pic_lock, flags); |
351 | |||
352 | return; | ||
353 | } | 337 | } |
354 | 338 | ||
355 | static void | 339 | static void |
@@ -363,16 +347,12 @@ tx4938_irq_pic_disable(unsigned int irq) | |||
363 | tx4938_irq_pic_mask(irq), 0); | 347 | tx4938_irq_pic_mask(irq), 0); |
364 | 348 | ||
365 | spin_unlock_irqrestore(&tx4938_pic_lock, flags); | 349 | spin_unlock_irqrestore(&tx4938_pic_lock, flags); |
366 | |||
367 | return; | ||
368 | } | 350 | } |
369 | 351 | ||
370 | static void | 352 | static void |
371 | tx4938_irq_pic_mask_and_ack(unsigned int irq) | 353 | tx4938_irq_pic_mask_and_ack(unsigned int irq) |
372 | { | 354 | { |
373 | tx4938_irq_pic_disable(irq); | 355 | tx4938_irq_pic_disable(irq); |
374 | |||
375 | return; | ||
376 | } | 356 | } |
377 | 357 | ||
378 | static void | 358 | static void |
@@ -381,8 +361,6 @@ tx4938_irq_pic_end(unsigned int irq) | |||
381 | if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) { | 361 | if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) { |
382 | tx4938_irq_pic_enable(irq); | 362 | tx4938_irq_pic_enable(irq); |
383 | } | 363 | } |
384 | |||
385 | return; | ||
386 | } | 364 | } |
387 | 365 | ||
388 | /**********************************************************************************/ | 366 | /**********************************************************************************/ |
@@ -394,8 +372,6 @@ tx4938_irq_init(void) | |||
394 | { | 372 | { |
395 | tx4938_irq_cp0_init(); | 373 | tx4938_irq_cp0_init(); |
396 | tx4938_irq_pic_init(); | 374 | tx4938_irq_pic_init(); |
397 | |||
398 | return; | ||
399 | } | 375 | } |
400 | 376 | ||
401 | int | 377 | int |
@@ -417,23 +393,23 @@ tx4938_irq_nested(void) | |||
417 | } | 393 | } |
418 | 394 | ||
419 | wbflush(); | 395 | wbflush(); |
420 | return (sw_irq); | 396 | return sw_irq; |
421 | } | 397 | } |
422 | 398 | ||
423 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 399 | asmlinkage void plat_irq_dispatch(void) |
424 | { | 400 | { |
425 | unsigned int pending = read_c0_cause() & read_c0_status(); | 401 | unsigned int pending = read_c0_cause() & read_c0_status(); |
426 | 402 | ||
427 | if (pending & STATUSF_IP7) | 403 | if (pending & STATUSF_IP7) |
428 | do_IRQ(TX4938_IRQ_CPU_TIMER, regs); | 404 | do_IRQ(TX4938_IRQ_CPU_TIMER); |
429 | else if (pending & STATUSF_IP2) { | 405 | else if (pending & STATUSF_IP2) { |
430 | int irq = tx4938_irq_nested(); | 406 | int irq = tx4938_irq_nested(); |
431 | if (irq) | 407 | if (irq) |
432 | do_IRQ(irq, regs); | 408 | do_IRQ(irq); |
433 | else | 409 | else |
434 | spurious_interrupt(regs); | 410 | spurious_interrupt(); |
435 | } else if (pending & STATUSF_IP1) | 411 | } else if (pending & STATUSF_IP1) |
436 | do_IRQ(TX4938_IRQ_USER1, regs); | 412 | do_IRQ(TX4938_IRQ_USER1); |
437 | else if (pending & STATUSF_IP0) | 413 | else if (pending & STATUSF_IP0) |
438 | do_IRQ(TX4938_IRQ_USER0, regs); | 414 | do_IRQ(TX4938_IRQ_USER0); |
439 | } | 415 | } |
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/irq.c b/arch/mips/tx4938/toshiba_rbtx4938/irq.c index 83f2750825a4..bbb3390e98f7 100644 --- a/arch/mips/tx4938/toshiba_rbtx4938/irq.c +++ b/arch/mips/tx4938/toshiba_rbtx4938/irq.c | |||
@@ -81,7 +81,6 @@ IRQ Device | |||
81 | #include <asm/io.h> | 81 | #include <asm/io.h> |
82 | #include <asm/irq.h> | 82 | #include <asm/irq.h> |
83 | #include <asm/processor.h> | 83 | #include <asm/processor.h> |
84 | #include <asm/ptrace.h> | ||
85 | #include <asm/reboot.h> | 84 | #include <asm/reboot.h> |
86 | #include <asm/time.h> | 85 | #include <asm/time.h> |
87 | #include <linux/bootmem.h> | 86 | #include <linux/bootmem.h> |
diff --git a/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c b/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c index fae3136f462d..b926e6a75c29 100644 --- a/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c +++ b/arch/mips/tx4938/toshiba_rbtx4938/spi_txx9.c | |||
@@ -35,7 +35,8 @@ void __init txx9_spi_init(unsigned long base, int (*cs_func)(int chipid, int on) | |||
35 | } | 35 | } |
36 | 36 | ||
37 | static DECLARE_WAIT_QUEUE_HEAD(txx9_spi_wait); | 37 | static DECLARE_WAIT_QUEUE_HEAD(txx9_spi_wait); |
38 | static void txx9_spi_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 38 | |
39 | static void txx9_spi_interrupt(int irq, void *dev_id) | ||
39 | { | 40 | { |
40 | /* disable rx intr */ | 41 | /* disable rx intr */ |
41 | tx4938_spiptr->cr0 &= ~TXx9_SPCR0_RBSIE; | 42 | tx4938_spiptr->cr0 &= ~TXx9_SPCR0_RBSIE; |
diff --git a/arch/mips/vr41xx/common/icu.c b/arch/mips/vr41xx/common/icu.c index 7a5c31d58378..c215c0d39fae 100644 --- a/arch/mips/vr41xx/common/icu.c +++ b/arch/mips/vr41xx/common/icu.c | |||
@@ -635,7 +635,7 @@ int vr41xx_set_intassign(unsigned int irq, unsigned char intassign) | |||
635 | 635 | ||
636 | EXPORT_SYMBOL(vr41xx_set_intassign); | 636 | EXPORT_SYMBOL(vr41xx_set_intassign); |
637 | 637 | ||
638 | static int icu_get_irq(unsigned int irq, struct pt_regs *regs) | 638 | static int icu_get_irq(unsigned int irq) |
639 | { | 639 | { |
640 | uint16_t pend1, pend2; | 640 | uint16_t pend1, pend2; |
641 | uint16_t mask1, mask2; | 641 | uint16_t mask1, mask2; |
diff --git a/arch/mips/vr41xx/common/irq.c b/arch/mips/vr41xx/common/irq.c index 4733c5344467..397ba94cd7ec 100644 --- a/arch/mips/vr41xx/common/irq.c +++ b/arch/mips/vr41xx/common/irq.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include <asm/vr41xx/irq.h> | 25 | #include <asm/vr41xx/irq.h> |
26 | 26 | ||
27 | typedef struct irq_cascade { | 27 | typedef struct irq_cascade { |
28 | int (*get_irq)(unsigned int, struct pt_regs *); | 28 | int (*get_irq)(unsigned int); |
29 | } irq_cascade_t; | 29 | } irq_cascade_t; |
30 | 30 | ||
31 | static irq_cascade_t irq_cascade[NR_IRQS] __cacheline_aligned; | 31 | static irq_cascade_t irq_cascade[NR_IRQS] __cacheline_aligned; |
@@ -36,7 +36,7 @@ static struct irqaction cascade_irqaction = { | |||
36 | .name = "cascade", | 36 | .name = "cascade", |
37 | }; | 37 | }; |
38 | 38 | ||
39 | int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int, struct pt_regs *)) | 39 | int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int)) |
40 | { | 40 | { |
41 | int retval = 0; | 41 | int retval = 0; |
42 | 42 | ||
@@ -59,7 +59,7 @@ int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int, struct pt_regs *) | |||
59 | 59 | ||
60 | EXPORT_SYMBOL_GPL(cascade_irq); | 60 | EXPORT_SYMBOL_GPL(cascade_irq); |
61 | 61 | ||
62 | static void irq_dispatch(unsigned int irq, struct pt_regs *regs) | 62 | static void irq_dispatch(unsigned int irq) |
63 | { | 63 | { |
64 | irq_cascade_t *cascade; | 64 | irq_cascade_t *cascade; |
65 | struct irq_desc *desc; | 65 | struct irq_desc *desc; |
@@ -74,39 +74,39 @@ static void irq_dispatch(unsigned int irq, struct pt_regs *regs) | |||
74 | unsigned int source_irq = irq; | 74 | unsigned int source_irq = irq; |
75 | desc = irq_desc + source_irq; | 75 | desc = irq_desc + source_irq; |
76 | desc->chip->ack(source_irq); | 76 | desc->chip->ack(source_irq); |
77 | irq = cascade->get_irq(irq, regs); | 77 | irq = cascade->get_irq(irq); |
78 | if (irq < 0) | 78 | if (irq < 0) |
79 | atomic_inc(&irq_err_count); | 79 | atomic_inc(&irq_err_count); |
80 | else | 80 | else |
81 | irq_dispatch(irq, regs); | 81 | irq_dispatch(irq); |
82 | desc->chip->end(source_irq); | 82 | desc->chip->end(source_irq); |
83 | } else | 83 | } else |
84 | do_IRQ(irq, regs); | 84 | do_IRQ(irq); |
85 | } | 85 | } |
86 | 86 | ||
87 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 87 | asmlinkage void plat_irq_dispatch(void) |
88 | { | 88 | { |
89 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; | 89 | unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM; |
90 | 90 | ||
91 | if (pending & CAUSEF_IP7) | 91 | if (pending & CAUSEF_IP7) |
92 | do_IRQ(7, regs); | 92 | do_IRQ(7); |
93 | else if (pending & 0x7800) { | 93 | else if (pending & 0x7800) { |
94 | if (pending & CAUSEF_IP3) | 94 | if (pending & CAUSEF_IP3) |
95 | irq_dispatch(3, regs); | 95 | irq_dispatch(3); |
96 | else if (pending & CAUSEF_IP4) | 96 | else if (pending & CAUSEF_IP4) |
97 | irq_dispatch(4, regs); | 97 | irq_dispatch(4); |
98 | else if (pending & CAUSEF_IP5) | 98 | else if (pending & CAUSEF_IP5) |
99 | irq_dispatch(5, regs); | 99 | irq_dispatch(5); |
100 | else if (pending & CAUSEF_IP6) | 100 | else if (pending & CAUSEF_IP6) |
101 | irq_dispatch(6, regs); | 101 | irq_dispatch(6); |
102 | } else if (pending & CAUSEF_IP2) | 102 | } else if (pending & CAUSEF_IP2) |
103 | irq_dispatch(2, regs); | 103 | irq_dispatch(2); |
104 | else if (pending & CAUSEF_IP0) | 104 | else if (pending & CAUSEF_IP0) |
105 | do_IRQ(0, regs); | 105 | do_IRQ(0); |
106 | else if (pending & CAUSEF_IP1) | 106 | else if (pending & CAUSEF_IP1) |
107 | do_IRQ(1, regs); | 107 | do_IRQ(1); |
108 | else | 108 | else |
109 | spurious_interrupt(regs); | 109 | spurious_interrupt(); |
110 | } | 110 | } |
111 | 111 | ||
112 | void __init arch_init_irq(void) | 112 | void __init arch_init_irq(void) |
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c index 2b257e4f17df..d6c486e9501c 100644 --- a/arch/parisc/kernel/drivers.c +++ b/arch/parisc/kernel/drivers.c | |||
@@ -424,7 +424,7 @@ struct parisc_device * create_tree_node(char id, struct device *parent) | |||
424 | /* make the generic dma mask a pointer to the parisc one */ | 424 | /* make the generic dma mask a pointer to the parisc one */ |
425 | dev->dev.dma_mask = &dev->dma_mask; | 425 | dev->dev.dma_mask = &dev->dma_mask; |
426 | dev->dev.coherent_dma_mask = dev->dma_mask; | 426 | dev->dev.coherent_dma_mask = dev->dma_mask; |
427 | if (!device_register(&dev->dev)) { | 427 | if (device_register(&dev->dev)) { |
428 | kfree(dev); | 428 | kfree(dev); |
429 | return NULL; | 429 | return NULL; |
430 | } | 430 | } |
@@ -853,9 +853,9 @@ static void print_parisc_device(struct parisc_device *dev) | |||
853 | */ | 853 | */ |
854 | void init_parisc_bus(void) | 854 | void init_parisc_bus(void) |
855 | { | 855 | { |
856 | if (!bus_register(&parisc_bus_type)) | 856 | if (bus_register(&parisc_bus_type)) |
857 | panic("Could not register PA-RISC bus type\n"); | 857 | panic("Could not register PA-RISC bus type\n"); |
858 | if (!device_register(&root)) | 858 | if (device_register(&root)) |
859 | panic("Could not register PA-RISC root device\n"); | 859 | panic("Could not register PA-RISC root device\n"); |
860 | get_device(&root); | 860 | get_device(&root); |
861 | } | 861 | } |
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c index c2531ae032cf..9158b707c0dd 100644 --- a/arch/parisc/kernel/firmware.c +++ b/arch/parisc/kernel/firmware.c | |||
@@ -160,13 +160,14 @@ void __init set_firmware_width(void) | |||
160 | { | 160 | { |
161 | #ifdef __LP64__ | 161 | #ifdef __LP64__ |
162 | int retval; | 162 | int retval; |
163 | unsigned long flags; | ||
163 | 164 | ||
164 | spin_lock_irq(&pdc_lock); | 165 | spin_lock_irqsave(&pdc_lock, flags); |
165 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, __pa(pdc_result), 0); | 166 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, __pa(pdc_result), 0); |
166 | convert_to_wide(pdc_result); | 167 | convert_to_wide(pdc_result); |
167 | if(pdc_result[0] != NARROW_FIRMWARE) | 168 | if(pdc_result[0] != NARROW_FIRMWARE) |
168 | parisc_narrow_firmware = 0; | 169 | parisc_narrow_firmware = 0; |
169 | spin_unlock_irq(&pdc_lock); | 170 | spin_unlock_irqrestore(&pdc_lock, flags); |
170 | #endif | 171 | #endif |
171 | } | 172 | } |
172 | 173 | ||
@@ -196,10 +197,11 @@ void pdc_emergency_unlock(void) | |||
196 | int pdc_add_valid(unsigned long address) | 197 | int pdc_add_valid(unsigned long address) |
197 | { | 198 | { |
198 | int retval; | 199 | int retval; |
200 | unsigned long flags; | ||
199 | 201 | ||
200 | spin_lock_irq(&pdc_lock); | 202 | spin_lock_irqsave(&pdc_lock, flags); |
201 | retval = mem_pdc_call(PDC_ADD_VALID, PDC_ADD_VALID_VERIFY, address); | 203 | retval = mem_pdc_call(PDC_ADD_VALID, PDC_ADD_VALID_VERIFY, address); |
202 | spin_unlock_irq(&pdc_lock); | 204 | spin_unlock_irqrestore(&pdc_lock, flags); |
203 | 205 | ||
204 | return retval; | 206 | return retval; |
205 | } | 207 | } |
@@ -216,15 +218,16 @@ EXPORT_SYMBOL(pdc_add_valid); | |||
216 | int __init pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsigned long len) | 218 | int __init pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_info, unsigned long len) |
217 | { | 219 | { |
218 | int retval; | 220 | int retval; |
221 | unsigned long flags; | ||
219 | 222 | ||
220 | spin_lock_irq(&pdc_lock); | 223 | spin_lock_irqsave(&pdc_lock, flags); |
221 | memcpy(&pdc_result, chassis_info, sizeof(*chassis_info)); | 224 | memcpy(&pdc_result, chassis_info, sizeof(*chassis_info)); |
222 | memcpy(&pdc_result2, led_info, len); | 225 | memcpy(&pdc_result2, led_info, len); |
223 | retval = mem_pdc_call(PDC_CHASSIS, PDC_RETURN_CHASSIS_INFO, | 226 | retval = mem_pdc_call(PDC_CHASSIS, PDC_RETURN_CHASSIS_INFO, |
224 | __pa(pdc_result), __pa(pdc_result2), len); | 227 | __pa(pdc_result), __pa(pdc_result2), len); |
225 | memcpy(chassis_info, pdc_result, sizeof(*chassis_info)); | 228 | memcpy(chassis_info, pdc_result, sizeof(*chassis_info)); |
226 | memcpy(led_info, pdc_result2, len); | 229 | memcpy(led_info, pdc_result2, len); |
227 | spin_unlock_irq(&pdc_lock); | 230 | spin_unlock_irqrestore(&pdc_lock, flags); |
228 | 231 | ||
229 | return retval; | 232 | return retval; |
230 | } | 233 | } |
@@ -239,13 +242,14 @@ int __init pdc_chassis_info(struct pdc_chassis_info *chassis_info, void *led_inf | |||
239 | int pdc_pat_chassis_send_log(unsigned long state, unsigned long data) | 242 | int pdc_pat_chassis_send_log(unsigned long state, unsigned long data) |
240 | { | 243 | { |
241 | int retval = 0; | 244 | int retval = 0; |
245 | unsigned long flags; | ||
242 | 246 | ||
243 | if (!is_pdc_pat()) | 247 | if (!is_pdc_pat()) |
244 | return -1; | 248 | return -1; |
245 | 249 | ||
246 | spin_lock_irq(&pdc_lock); | 250 | spin_lock_irqsave(&pdc_lock, flags); |
247 | retval = mem_pdc_call(PDC_PAT_CHASSIS_LOG, PDC_PAT_CHASSIS_WRITE_LOG, __pa(&state), __pa(&data)); | 251 | retval = mem_pdc_call(PDC_PAT_CHASSIS_LOG, PDC_PAT_CHASSIS_WRITE_LOG, __pa(&state), __pa(&data)); |
248 | spin_unlock_irq(&pdc_lock); | 252 | spin_unlock_irqrestore(&pdc_lock, flags); |
249 | 253 | ||
250 | return retval; | 254 | return retval; |
251 | } | 255 | } |
@@ -258,10 +262,11 @@ int pdc_pat_chassis_send_log(unsigned long state, unsigned long data) | |||
258 | int pdc_chassis_disp(unsigned long disp) | 262 | int pdc_chassis_disp(unsigned long disp) |
259 | { | 263 | { |
260 | int retval = 0; | 264 | int retval = 0; |
265 | unsigned long flags; | ||
261 | 266 | ||
262 | spin_lock_irq(&pdc_lock); | 267 | spin_lock_irqsave(&pdc_lock, flags); |
263 | retval = mem_pdc_call(PDC_CHASSIS, PDC_CHASSIS_DISP, disp); | 268 | retval = mem_pdc_call(PDC_CHASSIS, PDC_CHASSIS_DISP, disp); |
264 | spin_unlock_irq(&pdc_lock); | 269 | spin_unlock_irqrestore(&pdc_lock, flags); |
265 | 270 | ||
266 | return retval; | 271 | return retval; |
267 | } | 272 | } |
@@ -273,11 +278,12 @@ int pdc_chassis_disp(unsigned long disp) | |||
273 | int pdc_chassis_warn(unsigned long *warn) | 278 | int pdc_chassis_warn(unsigned long *warn) |
274 | { | 279 | { |
275 | int retval = 0; | 280 | int retval = 0; |
281 | unsigned long flags; | ||
276 | 282 | ||
277 | spin_lock_irq(&pdc_lock); | 283 | spin_lock_irqsave(&pdc_lock, flags); |
278 | retval = mem_pdc_call(PDC_CHASSIS, PDC_CHASSIS_WARN, __pa(pdc_result)); | 284 | retval = mem_pdc_call(PDC_CHASSIS, PDC_CHASSIS_WARN, __pa(pdc_result)); |
279 | *warn = pdc_result[0]; | 285 | *warn = pdc_result[0]; |
280 | spin_unlock_irq(&pdc_lock); | 286 | spin_unlock_irqrestore(&pdc_lock, flags); |
281 | 287 | ||
282 | return retval; | 288 | return retval; |
283 | } | 289 | } |
@@ -292,15 +298,16 @@ int pdc_chassis_warn(unsigned long *warn) | |||
292 | int __init pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info) | 298 | int __init pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info) |
293 | { | 299 | { |
294 | int retval; | 300 | int retval; |
301 | unsigned long flags; | ||
295 | 302 | ||
296 | spin_lock_irq(&pdc_lock); | 303 | spin_lock_irqsave(&pdc_lock, flags); |
297 | retval = mem_pdc_call(PDC_COPROC, PDC_COPROC_CFG, __pa(pdc_result)); | 304 | retval = mem_pdc_call(PDC_COPROC, PDC_COPROC_CFG, __pa(pdc_result)); |
298 | convert_to_wide(pdc_result); | 305 | convert_to_wide(pdc_result); |
299 | pdc_coproc_info->ccr_functional = pdc_result[0]; | 306 | pdc_coproc_info->ccr_functional = pdc_result[0]; |
300 | pdc_coproc_info->ccr_present = pdc_result[1]; | 307 | pdc_coproc_info->ccr_present = pdc_result[1]; |
301 | pdc_coproc_info->revision = pdc_result[17]; | 308 | pdc_coproc_info->revision = pdc_result[17]; |
302 | pdc_coproc_info->model = pdc_result[18]; | 309 | pdc_coproc_info->model = pdc_result[18]; |
303 | spin_unlock_irq(&pdc_lock); | 310 | spin_unlock_irqrestore(&pdc_lock, flags); |
304 | 311 | ||
305 | return retval; | 312 | return retval; |
306 | } | 313 | } |
@@ -320,14 +327,15 @@ int pdc_iodc_read(unsigned long *actcnt, unsigned long hpa, unsigned int index, | |||
320 | void *iodc_data, unsigned int iodc_data_size) | 327 | void *iodc_data, unsigned int iodc_data_size) |
321 | { | 328 | { |
322 | int retval; | 329 | int retval; |
330 | unsigned long flags; | ||
323 | 331 | ||
324 | spin_lock_irq(&pdc_lock); | 332 | spin_lock_irqsave(&pdc_lock, flags); |
325 | retval = mem_pdc_call(PDC_IODC, PDC_IODC_READ, __pa(pdc_result), hpa, | 333 | retval = mem_pdc_call(PDC_IODC, PDC_IODC_READ, __pa(pdc_result), hpa, |
326 | index, __pa(pdc_result2), iodc_data_size); | 334 | index, __pa(pdc_result2), iodc_data_size); |
327 | convert_to_wide(pdc_result); | 335 | convert_to_wide(pdc_result); |
328 | *actcnt = pdc_result[0]; | 336 | *actcnt = pdc_result[0]; |
329 | memcpy(iodc_data, pdc_result2, iodc_data_size); | 337 | memcpy(iodc_data, pdc_result2, iodc_data_size); |
330 | spin_unlock_irq(&pdc_lock); | 338 | spin_unlock_irqrestore(&pdc_lock, flags); |
331 | 339 | ||
332 | return retval; | 340 | return retval; |
333 | } | 341 | } |
@@ -346,14 +354,15 @@ int pdc_system_map_find_mods(struct pdc_system_map_mod_info *pdc_mod_info, | |||
346 | struct pdc_module_path *mod_path, long mod_index) | 354 | struct pdc_module_path *mod_path, long mod_index) |
347 | { | 355 | { |
348 | int retval; | 356 | int retval; |
357 | unsigned long flags; | ||
349 | 358 | ||
350 | spin_lock_irq(&pdc_lock); | 359 | spin_lock_irqsave(&pdc_lock, flags); |
351 | retval = mem_pdc_call(PDC_SYSTEM_MAP, PDC_FIND_MODULE, __pa(pdc_result), | 360 | retval = mem_pdc_call(PDC_SYSTEM_MAP, PDC_FIND_MODULE, __pa(pdc_result), |
352 | __pa(pdc_result2), mod_index); | 361 | __pa(pdc_result2), mod_index); |
353 | convert_to_wide(pdc_result); | 362 | convert_to_wide(pdc_result); |
354 | memcpy(pdc_mod_info, pdc_result, sizeof(*pdc_mod_info)); | 363 | memcpy(pdc_mod_info, pdc_result, sizeof(*pdc_mod_info)); |
355 | memcpy(mod_path, pdc_result2, sizeof(*mod_path)); | 364 | memcpy(mod_path, pdc_result2, sizeof(*mod_path)); |
356 | spin_unlock_irq(&pdc_lock); | 365 | spin_unlock_irqrestore(&pdc_lock, flags); |
357 | 366 | ||
358 | pdc_mod_info->mod_addr = f_extend(pdc_mod_info->mod_addr); | 367 | pdc_mod_info->mod_addr = f_extend(pdc_mod_info->mod_addr); |
359 | return retval; | 368 | return retval; |
@@ -372,13 +381,14 @@ int pdc_system_map_find_addrs(struct pdc_system_map_addr_info *pdc_addr_info, | |||
372 | long mod_index, long addr_index) | 381 | long mod_index, long addr_index) |
373 | { | 382 | { |
374 | int retval; | 383 | int retval; |
384 | unsigned long flags; | ||
375 | 385 | ||
376 | spin_lock_irq(&pdc_lock); | 386 | spin_lock_irqsave(&pdc_lock, flags); |
377 | retval = mem_pdc_call(PDC_SYSTEM_MAP, PDC_FIND_ADDRESS, __pa(pdc_result), | 387 | retval = mem_pdc_call(PDC_SYSTEM_MAP, PDC_FIND_ADDRESS, __pa(pdc_result), |
378 | mod_index, addr_index); | 388 | mod_index, addr_index); |
379 | convert_to_wide(pdc_result); | 389 | convert_to_wide(pdc_result); |
380 | memcpy(pdc_addr_info, pdc_result, sizeof(*pdc_addr_info)); | 390 | memcpy(pdc_addr_info, pdc_result, sizeof(*pdc_addr_info)); |
381 | spin_unlock_irq(&pdc_lock); | 391 | spin_unlock_irqrestore(&pdc_lock, flags); |
382 | 392 | ||
383 | pdc_addr_info->mod_addr = f_extend(pdc_addr_info->mod_addr); | 393 | pdc_addr_info->mod_addr = f_extend(pdc_addr_info->mod_addr); |
384 | return retval; | 394 | return retval; |
@@ -393,12 +403,13 @@ int pdc_system_map_find_addrs(struct pdc_system_map_addr_info *pdc_addr_info, | |||
393 | int pdc_model_info(struct pdc_model *model) | 403 | int pdc_model_info(struct pdc_model *model) |
394 | { | 404 | { |
395 | int retval; | 405 | int retval; |
406 | unsigned long flags; | ||
396 | 407 | ||
397 | spin_lock_irq(&pdc_lock); | 408 | spin_lock_irqsave(&pdc_lock, flags); |
398 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_INFO, __pa(pdc_result), 0); | 409 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_INFO, __pa(pdc_result), 0); |
399 | convert_to_wide(pdc_result); | 410 | convert_to_wide(pdc_result); |
400 | memcpy(model, pdc_result, sizeof(*model)); | 411 | memcpy(model, pdc_result, sizeof(*model)); |
401 | spin_unlock_irq(&pdc_lock); | 412 | spin_unlock_irqrestore(&pdc_lock, flags); |
402 | 413 | ||
403 | return retval; | 414 | return retval; |
404 | } | 415 | } |
@@ -414,8 +425,9 @@ int pdc_model_info(struct pdc_model *model) | |||
414 | int pdc_model_sysmodel(char *name) | 425 | int pdc_model_sysmodel(char *name) |
415 | { | 426 | { |
416 | int retval; | 427 | int retval; |
428 | unsigned long flags; | ||
417 | 429 | ||
418 | spin_lock_irq(&pdc_lock); | 430 | spin_lock_irqsave(&pdc_lock, flags); |
419 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_SYSMODEL, __pa(pdc_result), | 431 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_SYSMODEL, __pa(pdc_result), |
420 | OS_ID_HPUX, __pa(name)); | 432 | OS_ID_HPUX, __pa(name)); |
421 | convert_to_wide(pdc_result); | 433 | convert_to_wide(pdc_result); |
@@ -425,7 +437,7 @@ int pdc_model_sysmodel(char *name) | |||
425 | } else { | 437 | } else { |
426 | name[0] = 0; | 438 | name[0] = 0; |
427 | } | 439 | } |
428 | spin_unlock_irq(&pdc_lock); | 440 | spin_unlock_irqrestore(&pdc_lock, flags); |
429 | 441 | ||
430 | return retval; | 442 | return retval; |
431 | } | 443 | } |
@@ -443,12 +455,13 @@ int pdc_model_sysmodel(char *name) | |||
443 | int pdc_model_versions(unsigned long *versions, int id) | 455 | int pdc_model_versions(unsigned long *versions, int id) |
444 | { | 456 | { |
445 | int retval; | 457 | int retval; |
458 | unsigned long flags; | ||
446 | 459 | ||
447 | spin_lock_irq(&pdc_lock); | 460 | spin_lock_irqsave(&pdc_lock, flags); |
448 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_VERSIONS, __pa(pdc_result), id); | 461 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_VERSIONS, __pa(pdc_result), id); |
449 | convert_to_wide(pdc_result); | 462 | convert_to_wide(pdc_result); |
450 | *versions = pdc_result[0]; | 463 | *versions = pdc_result[0]; |
451 | spin_unlock_irq(&pdc_lock); | 464 | spin_unlock_irqrestore(&pdc_lock, flags); |
452 | 465 | ||
453 | return retval; | 466 | return retval; |
454 | } | 467 | } |
@@ -463,13 +476,14 @@ int pdc_model_versions(unsigned long *versions, int id) | |||
463 | int pdc_model_cpuid(unsigned long *cpu_id) | 476 | int pdc_model_cpuid(unsigned long *cpu_id) |
464 | { | 477 | { |
465 | int retval; | 478 | int retval; |
479 | unsigned long flags; | ||
466 | 480 | ||
467 | spin_lock_irq(&pdc_lock); | 481 | spin_lock_irqsave(&pdc_lock, flags); |
468 | pdc_result[0] = 0; /* preset zero (call may not be implemented!) */ | 482 | pdc_result[0] = 0; /* preset zero (call may not be implemented!) */ |
469 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CPU_ID, __pa(pdc_result), 0); | 483 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CPU_ID, __pa(pdc_result), 0); |
470 | convert_to_wide(pdc_result); | 484 | convert_to_wide(pdc_result); |
471 | *cpu_id = pdc_result[0]; | 485 | *cpu_id = pdc_result[0]; |
472 | spin_unlock_irq(&pdc_lock); | 486 | spin_unlock_irqrestore(&pdc_lock, flags); |
473 | 487 | ||
474 | return retval; | 488 | return retval; |
475 | } | 489 | } |
@@ -484,13 +498,14 @@ int pdc_model_cpuid(unsigned long *cpu_id) | |||
484 | int pdc_model_capabilities(unsigned long *capabilities) | 498 | int pdc_model_capabilities(unsigned long *capabilities) |
485 | { | 499 | { |
486 | int retval; | 500 | int retval; |
501 | unsigned long flags; | ||
487 | 502 | ||
488 | spin_lock_irq(&pdc_lock); | 503 | spin_lock_irqsave(&pdc_lock, flags); |
489 | pdc_result[0] = 0; /* preset zero (call may not be implemented!) */ | 504 | pdc_result[0] = 0; /* preset zero (call may not be implemented!) */ |
490 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, __pa(pdc_result), 0); | 505 | retval = mem_pdc_call(PDC_MODEL, PDC_MODEL_CAPABILITIES, __pa(pdc_result), 0); |
491 | convert_to_wide(pdc_result); | 506 | convert_to_wide(pdc_result); |
492 | *capabilities = pdc_result[0]; | 507 | *capabilities = pdc_result[0]; |
493 | spin_unlock_irq(&pdc_lock); | 508 | spin_unlock_irqrestore(&pdc_lock, flags); |
494 | 509 | ||
495 | return retval; | 510 | return retval; |
496 | } | 511 | } |
@@ -504,12 +519,13 @@ int pdc_model_capabilities(unsigned long *capabilities) | |||
504 | int pdc_cache_info(struct pdc_cache_info *cache_info) | 519 | int pdc_cache_info(struct pdc_cache_info *cache_info) |
505 | { | 520 | { |
506 | int retval; | 521 | int retval; |
522 | unsigned long flags; | ||
507 | 523 | ||
508 | spin_lock_irq(&pdc_lock); | 524 | spin_lock_irqsave(&pdc_lock, flags); |
509 | retval = mem_pdc_call(PDC_CACHE, PDC_CACHE_INFO, __pa(pdc_result), 0); | 525 | retval = mem_pdc_call(PDC_CACHE, PDC_CACHE_INFO, __pa(pdc_result), 0); |
510 | convert_to_wide(pdc_result); | 526 | convert_to_wide(pdc_result); |
511 | memcpy(cache_info, pdc_result, sizeof(*cache_info)); | 527 | memcpy(cache_info, pdc_result, sizeof(*cache_info)); |
512 | spin_unlock_irq(&pdc_lock); | 528 | spin_unlock_irqrestore(&pdc_lock, flags); |
513 | 529 | ||
514 | return retval; | 530 | return retval; |
515 | } | 531 | } |
@@ -523,13 +539,14 @@ int pdc_cache_info(struct pdc_cache_info *cache_info) | |||
523 | int pdc_spaceid_bits(unsigned long *space_bits) | 539 | int pdc_spaceid_bits(unsigned long *space_bits) |
524 | { | 540 | { |
525 | int retval; | 541 | int retval; |
542 | unsigned long flags; | ||
526 | 543 | ||
527 | spin_lock_irq(&pdc_lock); | 544 | spin_lock_irqsave(&pdc_lock, flags); |
528 | pdc_result[0] = 0; | 545 | pdc_result[0] = 0; |
529 | retval = mem_pdc_call(PDC_CACHE, PDC_CACHE_RET_SPID, __pa(pdc_result), 0); | 546 | retval = mem_pdc_call(PDC_CACHE, PDC_CACHE_RET_SPID, __pa(pdc_result), 0); |
530 | convert_to_wide(pdc_result); | 547 | convert_to_wide(pdc_result); |
531 | *space_bits = pdc_result[0]; | 548 | *space_bits = pdc_result[0]; |
532 | spin_unlock_irq(&pdc_lock); | 549 | spin_unlock_irqrestore(&pdc_lock, flags); |
533 | 550 | ||
534 | return retval; | 551 | return retval; |
535 | } | 552 | } |
@@ -544,11 +561,12 @@ int pdc_spaceid_bits(unsigned long *space_bits) | |||
544 | int pdc_btlb_info(struct pdc_btlb_info *btlb) | 561 | int pdc_btlb_info(struct pdc_btlb_info *btlb) |
545 | { | 562 | { |
546 | int retval; | 563 | int retval; |
564 | unsigned long flags; | ||
547 | 565 | ||
548 | spin_lock_irq(&pdc_lock); | 566 | spin_lock_irqsave(&pdc_lock, flags); |
549 | retval = mem_pdc_call(PDC_BLOCK_TLB, PDC_BTLB_INFO, __pa(pdc_result), 0); | 567 | retval = mem_pdc_call(PDC_BLOCK_TLB, PDC_BTLB_INFO, __pa(pdc_result), 0); |
550 | memcpy(btlb, pdc_result, sizeof(*btlb)); | 568 | memcpy(btlb, pdc_result, sizeof(*btlb)); |
551 | spin_unlock_irq(&pdc_lock); | 569 | spin_unlock_irqrestore(&pdc_lock, flags); |
552 | 570 | ||
553 | if(retval < 0) { | 571 | if(retval < 0) { |
554 | btlb->max_size = 0; | 572 | btlb->max_size = 0; |
@@ -572,13 +590,14 @@ int pdc_mem_map_hpa(struct pdc_memory_map *address, | |||
572 | struct pdc_module_path *mod_path) | 590 | struct pdc_module_path *mod_path) |
573 | { | 591 | { |
574 | int retval; | 592 | int retval; |
593 | unsigned long flags; | ||
575 | 594 | ||
576 | spin_lock_irq(&pdc_lock); | 595 | spin_lock_irqsave(&pdc_lock, flags); |
577 | memcpy(pdc_result2, mod_path, sizeof(*mod_path)); | 596 | memcpy(pdc_result2, mod_path, sizeof(*mod_path)); |
578 | retval = mem_pdc_call(PDC_MEM_MAP, PDC_MEM_MAP_HPA, __pa(pdc_result), | 597 | retval = mem_pdc_call(PDC_MEM_MAP, PDC_MEM_MAP_HPA, __pa(pdc_result), |
579 | __pa(pdc_result2)); | 598 | __pa(pdc_result2)); |
580 | memcpy(address, pdc_result, sizeof(*address)); | 599 | memcpy(address, pdc_result, sizeof(*address)); |
581 | spin_unlock_irq(&pdc_lock); | 600 | spin_unlock_irqrestore(&pdc_lock, flags); |
582 | 601 | ||
583 | return retval; | 602 | return retval; |
584 | } | 603 | } |
@@ -594,8 +613,9 @@ int pdc_mem_map_hpa(struct pdc_memory_map *address, | |||
594 | int pdc_lan_station_id(char *lan_addr, unsigned long hpa) | 613 | int pdc_lan_station_id(char *lan_addr, unsigned long hpa) |
595 | { | 614 | { |
596 | int retval; | 615 | int retval; |
616 | unsigned long flags; | ||
597 | 617 | ||
598 | spin_lock_irq(&pdc_lock); | 618 | spin_lock_irqsave(&pdc_lock, flags); |
599 | retval = mem_pdc_call(PDC_LAN_STATION_ID, PDC_LAN_STATION_ID_READ, | 619 | retval = mem_pdc_call(PDC_LAN_STATION_ID, PDC_LAN_STATION_ID_READ, |
600 | __pa(pdc_result), hpa); | 620 | __pa(pdc_result), hpa); |
601 | if (retval < 0) { | 621 | if (retval < 0) { |
@@ -604,7 +624,7 @@ int pdc_lan_station_id(char *lan_addr, unsigned long hpa) | |||
604 | } else { | 624 | } else { |
605 | memcpy(lan_addr, pdc_result, PDC_LAN_STATION_ID_SIZE); | 625 | memcpy(lan_addr, pdc_result, PDC_LAN_STATION_ID_SIZE); |
606 | } | 626 | } |
607 | spin_unlock_irq(&pdc_lock); | 627 | spin_unlock_irqrestore(&pdc_lock, flags); |
608 | 628 | ||
609 | return retval; | 629 | return retval; |
610 | } | 630 | } |
@@ -623,13 +643,14 @@ EXPORT_SYMBOL(pdc_lan_station_id); | |||
623 | int pdc_stable_read(unsigned long staddr, void *memaddr, unsigned long count) | 643 | int pdc_stable_read(unsigned long staddr, void *memaddr, unsigned long count) |
624 | { | 644 | { |
625 | int retval; | 645 | int retval; |
646 | unsigned long flags; | ||
626 | 647 | ||
627 | spin_lock_irq(&pdc_lock); | 648 | spin_lock_irqsave(&pdc_lock, flags); |
628 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_READ, staddr, | 649 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_READ, staddr, |
629 | __pa(pdc_result), count); | 650 | __pa(pdc_result), count); |
630 | convert_to_wide(pdc_result); | 651 | convert_to_wide(pdc_result); |
631 | memcpy(memaddr, pdc_result, count); | 652 | memcpy(memaddr, pdc_result, count); |
632 | spin_unlock_irq(&pdc_lock); | 653 | spin_unlock_irqrestore(&pdc_lock, flags); |
633 | 654 | ||
634 | return retval; | 655 | return retval; |
635 | } | 656 | } |
@@ -648,13 +669,14 @@ EXPORT_SYMBOL(pdc_stable_read); | |||
648 | int pdc_stable_write(unsigned long staddr, void *memaddr, unsigned long count) | 669 | int pdc_stable_write(unsigned long staddr, void *memaddr, unsigned long count) |
649 | { | 670 | { |
650 | int retval; | 671 | int retval; |
672 | unsigned long flags; | ||
651 | 673 | ||
652 | spin_lock_irq(&pdc_lock); | 674 | spin_lock_irqsave(&pdc_lock, flags); |
653 | memcpy(pdc_result, memaddr, count); | 675 | memcpy(pdc_result, memaddr, count); |
654 | convert_to_wide(pdc_result); | 676 | convert_to_wide(pdc_result); |
655 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_WRITE, staddr, | 677 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_WRITE, staddr, |
656 | __pa(pdc_result), count); | 678 | __pa(pdc_result), count); |
657 | spin_unlock_irq(&pdc_lock); | 679 | spin_unlock_irqrestore(&pdc_lock, flags); |
658 | 680 | ||
659 | return retval; | 681 | return retval; |
660 | } | 682 | } |
@@ -672,11 +694,12 @@ EXPORT_SYMBOL(pdc_stable_write); | |||
672 | int pdc_stable_get_size(unsigned long *size) | 694 | int pdc_stable_get_size(unsigned long *size) |
673 | { | 695 | { |
674 | int retval; | 696 | int retval; |
697 | unsigned long flags; | ||
675 | 698 | ||
676 | spin_lock_irq(&pdc_lock); | 699 | spin_lock_irqsave(&pdc_lock, flags); |
677 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_RETURN_SIZE, __pa(pdc_result)); | 700 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_RETURN_SIZE, __pa(pdc_result)); |
678 | *size = pdc_result[0]; | 701 | *size = pdc_result[0]; |
679 | spin_unlock_irq(&pdc_lock); | 702 | spin_unlock_irqrestore(&pdc_lock, flags); |
680 | 703 | ||
681 | return retval; | 704 | return retval; |
682 | } | 705 | } |
@@ -691,10 +714,11 @@ EXPORT_SYMBOL(pdc_stable_get_size); | |||
691 | int pdc_stable_verify_contents(void) | 714 | int pdc_stable_verify_contents(void) |
692 | { | 715 | { |
693 | int retval; | 716 | int retval; |
717 | unsigned long flags; | ||
694 | 718 | ||
695 | spin_lock_irq(&pdc_lock); | 719 | spin_lock_irqsave(&pdc_lock, flags); |
696 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_VERIFY_CONTENTS); | 720 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_VERIFY_CONTENTS); |
697 | spin_unlock_irq(&pdc_lock); | 721 | spin_unlock_irqrestore(&pdc_lock, flags); |
698 | 722 | ||
699 | return retval; | 723 | return retval; |
700 | } | 724 | } |
@@ -709,10 +733,11 @@ EXPORT_SYMBOL(pdc_stable_verify_contents); | |||
709 | int pdc_stable_initialize(void) | 733 | int pdc_stable_initialize(void) |
710 | { | 734 | { |
711 | int retval; | 735 | int retval; |
736 | unsigned long flags; | ||
712 | 737 | ||
713 | spin_lock_irq(&pdc_lock); | 738 | spin_lock_irqsave(&pdc_lock, flags); |
714 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_INITIALIZE); | 739 | retval = mem_pdc_call(PDC_STABLE, PDC_STABLE_INITIALIZE); |
715 | spin_unlock_irq(&pdc_lock); | 740 | spin_unlock_irqrestore(&pdc_lock, flags); |
716 | 741 | ||
717 | return retval; | 742 | return retval; |
718 | } | 743 | } |
@@ -735,8 +760,9 @@ EXPORT_SYMBOL(pdc_stable_initialize); | |||
735 | int pdc_get_initiator(struct hardware_path *hwpath, struct pdc_initiator *initiator) | 760 | int pdc_get_initiator(struct hardware_path *hwpath, struct pdc_initiator *initiator) |
736 | { | 761 | { |
737 | int retval; | 762 | int retval; |
763 | unsigned long flags; | ||
738 | 764 | ||
739 | spin_lock_irq(&pdc_lock); | 765 | spin_lock_irqsave(&pdc_lock, flags); |
740 | 766 | ||
741 | /* BCJ-XXXX series boxes. E.G. "9000/785/C3000" */ | 767 | /* BCJ-XXXX series boxes. E.G. "9000/785/C3000" */ |
742 | #define IS_SPROCKETS() (strlen(boot_cpu_data.pdc.sys_model_name) == 14 && \ | 768 | #define IS_SPROCKETS() (strlen(boot_cpu_data.pdc.sys_model_name) == 14 && \ |
@@ -776,7 +802,8 @@ int pdc_get_initiator(struct hardware_path *hwpath, struct pdc_initiator *initia | |||
776 | } | 802 | } |
777 | 803 | ||
778 | out: | 804 | out: |
779 | spin_unlock_irq(&pdc_lock); | 805 | spin_unlock_irqrestore(&pdc_lock, flags); |
806 | |||
780 | return (retval >= PDC_OK); | 807 | return (retval >= PDC_OK); |
781 | } | 808 | } |
782 | EXPORT_SYMBOL(pdc_get_initiator); | 809 | EXPORT_SYMBOL(pdc_get_initiator); |
@@ -794,13 +821,14 @@ EXPORT_SYMBOL(pdc_get_initiator); | |||
794 | int pdc_pci_irt_size(unsigned long *num_entries, unsigned long hpa) | 821 | int pdc_pci_irt_size(unsigned long *num_entries, unsigned long hpa) |
795 | { | 822 | { |
796 | int retval; | 823 | int retval; |
824 | unsigned long flags; | ||
797 | 825 | ||
798 | spin_lock_irq(&pdc_lock); | 826 | spin_lock_irqsave(&pdc_lock, flags); |
799 | retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_GET_INT_TBL_SIZE, | 827 | retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_GET_INT_TBL_SIZE, |
800 | __pa(pdc_result), hpa); | 828 | __pa(pdc_result), hpa); |
801 | convert_to_wide(pdc_result); | 829 | convert_to_wide(pdc_result); |
802 | *num_entries = pdc_result[0]; | 830 | *num_entries = pdc_result[0]; |
803 | spin_unlock_irq(&pdc_lock); | 831 | spin_unlock_irqrestore(&pdc_lock, flags); |
804 | 832 | ||
805 | return retval; | 833 | return retval; |
806 | } | 834 | } |
@@ -817,14 +845,15 @@ int pdc_pci_irt_size(unsigned long *num_entries, unsigned long hpa) | |||
817 | int pdc_pci_irt(unsigned long num_entries, unsigned long hpa, void *tbl) | 845 | int pdc_pci_irt(unsigned long num_entries, unsigned long hpa, void *tbl) |
818 | { | 846 | { |
819 | int retval; | 847 | int retval; |
848 | unsigned long flags; | ||
820 | 849 | ||
821 | BUG_ON((unsigned long)tbl & 0x7); | 850 | BUG_ON((unsigned long)tbl & 0x7); |
822 | 851 | ||
823 | spin_lock_irq(&pdc_lock); | 852 | spin_lock_irqsave(&pdc_lock, flags); |
824 | pdc_result[0] = num_entries; | 853 | pdc_result[0] = num_entries; |
825 | retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_GET_INT_TBL, | 854 | retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_GET_INT_TBL, |
826 | __pa(pdc_result), hpa, __pa(tbl)); | 855 | __pa(pdc_result), hpa, __pa(tbl)); |
827 | spin_unlock_irq(&pdc_lock); | 856 | spin_unlock_irqrestore(&pdc_lock, flags); |
828 | 857 | ||
829 | return retval; | 858 | return retval; |
830 | } | 859 | } |
@@ -842,12 +871,15 @@ int pdc_pci_irt(unsigned long num_entries, unsigned long hpa, void *tbl) | |||
842 | unsigned int pdc_pci_config_read(void *hpa, unsigned long cfg_addr) | 871 | unsigned int pdc_pci_config_read(void *hpa, unsigned long cfg_addr) |
843 | { | 872 | { |
844 | int retval; | 873 | int retval; |
845 | spin_lock_irq(&pdc_lock); | 874 | unsigned long flags; |
875 | |||
876 | spin_lock_irqsave(&pdc_lock, flags); | ||
846 | pdc_result[0] = 0; | 877 | pdc_result[0] = 0; |
847 | pdc_result[1] = 0; | 878 | pdc_result[1] = 0; |
848 | retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_READ_CONFIG, | 879 | retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_READ_CONFIG, |
849 | __pa(pdc_result), hpa, cfg_addr&~3UL, 4UL); | 880 | __pa(pdc_result), hpa, cfg_addr&~3UL, 4UL); |
850 | spin_unlock_irq(&pdc_lock); | 881 | spin_unlock_irqrestore(&pdc_lock, flags); |
882 | |||
851 | return retval ? ~0 : (unsigned int) pdc_result[0]; | 883 | return retval ? ~0 : (unsigned int) pdc_result[0]; |
852 | } | 884 | } |
853 | 885 | ||
@@ -863,12 +895,15 @@ unsigned int pdc_pci_config_read(void *hpa, unsigned long cfg_addr) | |||
863 | void pdc_pci_config_write(void *hpa, unsigned long cfg_addr, unsigned int val) | 895 | void pdc_pci_config_write(void *hpa, unsigned long cfg_addr, unsigned int val) |
864 | { | 896 | { |
865 | int retval; | 897 | int retval; |
866 | spin_lock_irq(&pdc_lock); | 898 | unsigned long flags; |
899 | |||
900 | spin_lock_irqsave(&pdc_lock, flags); | ||
867 | pdc_result[0] = 0; | 901 | pdc_result[0] = 0; |
868 | retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_WRITE_CONFIG, | 902 | retval = mem_pdc_call(PDC_PCI_INDEX, PDC_PCI_WRITE_CONFIG, |
869 | __pa(pdc_result), hpa, | 903 | __pa(pdc_result), hpa, |
870 | cfg_addr&~3UL, 4UL, (unsigned long) val); | 904 | cfg_addr&~3UL, 4UL, (unsigned long) val); |
871 | spin_unlock_irq(&pdc_lock); | 905 | spin_unlock_irqrestore(&pdc_lock, flags); |
906 | |||
872 | return retval; | 907 | return retval; |
873 | } | 908 | } |
874 | #endif /* UNTESTED CODE */ | 909 | #endif /* UNTESTED CODE */ |
@@ -882,12 +917,13 @@ void pdc_pci_config_write(void *hpa, unsigned long cfg_addr, unsigned int val) | |||
882 | int pdc_tod_read(struct pdc_tod *tod) | 917 | int pdc_tod_read(struct pdc_tod *tod) |
883 | { | 918 | { |
884 | int retval; | 919 | int retval; |
920 | unsigned long flags; | ||
885 | 921 | ||
886 | spin_lock_irq(&pdc_lock); | 922 | spin_lock_irqsave(&pdc_lock, flags); |
887 | retval = mem_pdc_call(PDC_TOD, PDC_TOD_READ, __pa(pdc_result), 0); | 923 | retval = mem_pdc_call(PDC_TOD, PDC_TOD_READ, __pa(pdc_result), 0); |
888 | convert_to_wide(pdc_result); | 924 | convert_to_wide(pdc_result); |
889 | memcpy(tod, pdc_result, sizeof(*tod)); | 925 | memcpy(tod, pdc_result, sizeof(*tod)); |
890 | spin_unlock_irq(&pdc_lock); | 926 | spin_unlock_irqrestore(&pdc_lock, flags); |
891 | 927 | ||
892 | return retval; | 928 | return retval; |
893 | } | 929 | } |
@@ -903,10 +939,11 @@ EXPORT_SYMBOL(pdc_tod_read); | |||
903 | int pdc_tod_set(unsigned long sec, unsigned long usec) | 939 | int pdc_tod_set(unsigned long sec, unsigned long usec) |
904 | { | 940 | { |
905 | int retval; | 941 | int retval; |
942 | unsigned long flags; | ||
906 | 943 | ||
907 | spin_lock_irq(&pdc_lock); | 944 | spin_lock_irqsave(&pdc_lock, flags); |
908 | retval = mem_pdc_call(PDC_TOD, PDC_TOD_WRITE, sec, usec); | 945 | retval = mem_pdc_call(PDC_TOD, PDC_TOD_WRITE, sec, usec); |
909 | spin_unlock_irq(&pdc_lock); | 946 | spin_unlock_irqrestore(&pdc_lock, flags); |
910 | 947 | ||
911 | return retval; | 948 | return retval; |
912 | } | 949 | } |
@@ -917,13 +954,14 @@ int pdc_mem_mem_table(struct pdc_memory_table_raddr *r_addr, | |||
917 | struct pdc_memory_table *tbl, unsigned long entries) | 954 | struct pdc_memory_table *tbl, unsigned long entries) |
918 | { | 955 | { |
919 | int retval; | 956 | int retval; |
957 | unsigned long flags; | ||
920 | 958 | ||
921 | spin_lock_irq(&pdc_lock); | 959 | spin_lock_irqsave(&pdc_lock, flags); |
922 | retval = mem_pdc_call(PDC_MEM, PDC_MEM_TABLE, __pa(pdc_result), __pa(pdc_result2), entries); | 960 | retval = mem_pdc_call(PDC_MEM, PDC_MEM_TABLE, __pa(pdc_result), __pa(pdc_result2), entries); |
923 | convert_to_wide(pdc_result); | 961 | convert_to_wide(pdc_result); |
924 | memcpy(r_addr, pdc_result, sizeof(*r_addr)); | 962 | memcpy(r_addr, pdc_result, sizeof(*r_addr)); |
925 | memcpy(tbl, pdc_result2, entries * sizeof(*tbl)); | 963 | memcpy(tbl, pdc_result2, entries * sizeof(*tbl)); |
926 | spin_unlock_irq(&pdc_lock); | 964 | spin_unlock_irqrestore(&pdc_lock, flags); |
927 | 965 | ||
928 | return retval; | 966 | return retval; |
929 | } | 967 | } |
@@ -936,11 +974,12 @@ int pdc_mem_mem_table(struct pdc_memory_table_raddr *r_addr, | |||
936 | int pdc_do_firm_test_reset(unsigned long ftc_bitmap) | 974 | int pdc_do_firm_test_reset(unsigned long ftc_bitmap) |
937 | { | 975 | { |
938 | int retval; | 976 | int retval; |
977 | unsigned long flags; | ||
939 | 978 | ||
940 | spin_lock_irq(&pdc_lock); | 979 | spin_lock_irqsave(&pdc_lock, flags); |
941 | retval = mem_pdc_call(PDC_BROADCAST_RESET, PDC_DO_FIRM_TEST_RESET, | 980 | retval = mem_pdc_call(PDC_BROADCAST_RESET, PDC_DO_FIRM_TEST_RESET, |
942 | PDC_FIRM_TEST_MAGIC, ftc_bitmap); | 981 | PDC_FIRM_TEST_MAGIC, ftc_bitmap); |
943 | spin_unlock_irq(&pdc_lock); | 982 | spin_unlock_irqrestore(&pdc_lock, flags); |
944 | 983 | ||
945 | return retval; | 984 | return retval; |
946 | } | 985 | } |
@@ -953,10 +992,11 @@ int pdc_do_firm_test_reset(unsigned long ftc_bitmap) | |||
953 | int pdc_do_reset(void) | 992 | int pdc_do_reset(void) |
954 | { | 993 | { |
955 | int retval; | 994 | int retval; |
995 | unsigned long flags; | ||
956 | 996 | ||
957 | spin_lock_irq(&pdc_lock); | 997 | spin_lock_irqsave(&pdc_lock, flags); |
958 | retval = mem_pdc_call(PDC_BROADCAST_RESET, PDC_DO_RESET); | 998 | retval = mem_pdc_call(PDC_BROADCAST_RESET, PDC_DO_RESET); |
959 | spin_unlock_irq(&pdc_lock); | 999 | spin_unlock_irqrestore(&pdc_lock, flags); |
960 | 1000 | ||
961 | return retval; | 1001 | return retval; |
962 | } | 1002 | } |
@@ -970,16 +1010,17 @@ int pdc_do_reset(void) | |||
970 | int __init pdc_soft_power_info(unsigned long *power_reg) | 1010 | int __init pdc_soft_power_info(unsigned long *power_reg) |
971 | { | 1011 | { |
972 | int retval; | 1012 | int retval; |
1013 | unsigned long flags; | ||
973 | 1014 | ||
974 | *power_reg = (unsigned long) (-1); | 1015 | *power_reg = (unsigned long) (-1); |
975 | 1016 | ||
976 | spin_lock_irq(&pdc_lock); | 1017 | spin_lock_irqsave(&pdc_lock, flags); |
977 | retval = mem_pdc_call(PDC_SOFT_POWER, PDC_SOFT_POWER_INFO, __pa(pdc_result), 0); | 1018 | retval = mem_pdc_call(PDC_SOFT_POWER, PDC_SOFT_POWER_INFO, __pa(pdc_result), 0); |
978 | if (retval == PDC_OK) { | 1019 | if (retval == PDC_OK) { |
979 | convert_to_wide(pdc_result); | 1020 | convert_to_wide(pdc_result); |
980 | *power_reg = f_extend(pdc_result[0]); | 1021 | *power_reg = f_extend(pdc_result[0]); |
981 | } | 1022 | } |
982 | spin_unlock_irq(&pdc_lock); | 1023 | spin_unlock_irqrestore(&pdc_lock, flags); |
983 | 1024 | ||
984 | return retval; | 1025 | return retval; |
985 | } | 1026 | } |
@@ -998,9 +1039,12 @@ int __init pdc_soft_power_info(unsigned long *power_reg) | |||
998 | int pdc_soft_power_button(int sw_control) | 1039 | int pdc_soft_power_button(int sw_control) |
999 | { | 1040 | { |
1000 | int retval; | 1041 | int retval; |
1001 | spin_lock_irq(&pdc_lock); | 1042 | unsigned long flags; |
1043 | |||
1044 | spin_lock_irqsave(&pdc_lock, flags); | ||
1002 | retval = mem_pdc_call(PDC_SOFT_POWER, PDC_SOFT_POWER_ENABLE, __pa(pdc_result), sw_control); | 1045 | retval = mem_pdc_call(PDC_SOFT_POWER, PDC_SOFT_POWER_ENABLE, __pa(pdc_result), sw_control); |
1003 | spin_unlock_irq(&pdc_lock); | 1046 | spin_unlock_irqrestore(&pdc_lock, flags); |
1047 | |||
1004 | return retval; | 1048 | return retval; |
1005 | } | 1049 | } |
1006 | 1050 | ||
@@ -1011,9 +1055,11 @@ int pdc_soft_power_button(int sw_control) | |||
1011 | */ | 1055 | */ |
1012 | void pdc_io_reset(void) | 1056 | void pdc_io_reset(void) |
1013 | { | 1057 | { |
1014 | spin_lock_irq(&pdc_lock); | 1058 | unsigned long flags; |
1059 | |||
1060 | spin_lock_irqsave(&pdc_lock, flags); | ||
1015 | mem_pdc_call(PDC_IO, PDC_IO_RESET, 0); | 1061 | mem_pdc_call(PDC_IO, PDC_IO_RESET, 0); |
1016 | spin_unlock_irq(&pdc_lock); | 1062 | spin_unlock_irqrestore(&pdc_lock, flags); |
1017 | } | 1063 | } |
1018 | 1064 | ||
1019 | /* | 1065 | /* |
@@ -1027,9 +1073,11 @@ void pdc_io_reset(void) | |||
1027 | */ | 1073 | */ |
1028 | void pdc_io_reset_devices(void) | 1074 | void pdc_io_reset_devices(void) |
1029 | { | 1075 | { |
1030 | spin_lock_irq(&pdc_lock); | 1076 | unsigned long flags; |
1077 | |||
1078 | spin_lock_irqsave(&pdc_lock, flags); | ||
1031 | mem_pdc_call(PDC_IO, PDC_IO_RESET_DEVICES, 0); | 1079 | mem_pdc_call(PDC_IO, PDC_IO_RESET_DEVICES, 0); |
1032 | spin_unlock_irq(&pdc_lock); | 1080 | spin_unlock_irqrestore(&pdc_lock, flags); |
1033 | } | 1081 | } |
1034 | 1082 | ||
1035 | 1083 | ||
@@ -1146,10 +1194,11 @@ int pdc_sti_call(unsigned long func, unsigned long flags, | |||
1146 | unsigned long glob_cfg) | 1194 | unsigned long glob_cfg) |
1147 | { | 1195 | { |
1148 | int retval; | 1196 | int retval; |
1197 | unsigned long irqflags; | ||
1149 | 1198 | ||
1150 | spin_lock_irq(&pdc_lock); | 1199 | spin_lock_irqsave(&pdc_lock, irqflags); |
1151 | retval = real32_call(func, flags, inptr, outputr, glob_cfg); | 1200 | retval = real32_call(func, flags, inptr, outputr, glob_cfg); |
1152 | spin_unlock_irq(&pdc_lock); | 1201 | spin_unlock_irqrestore(&pdc_lock, irqflags); |
1153 | 1202 | ||
1154 | return retval; | 1203 | return retval; |
1155 | } | 1204 | } |
@@ -1166,11 +1215,12 @@ EXPORT_SYMBOL(pdc_sti_call); | |||
1166 | int pdc_pat_cell_get_number(struct pdc_pat_cell_num *cell_info) | 1215 | int pdc_pat_cell_get_number(struct pdc_pat_cell_num *cell_info) |
1167 | { | 1216 | { |
1168 | int retval; | 1217 | int retval; |
1218 | unsigned long flags; | ||
1169 | 1219 | ||
1170 | spin_lock_irq(&pdc_lock); | 1220 | spin_lock_irqsave(&pdc_lock, flags); |
1171 | retval = mem_pdc_call(PDC_PAT_CELL, PDC_PAT_CELL_GET_NUMBER, __pa(pdc_result)); | 1221 | retval = mem_pdc_call(PDC_PAT_CELL, PDC_PAT_CELL_GET_NUMBER, __pa(pdc_result)); |
1172 | memcpy(cell_info, pdc_result, sizeof(*cell_info)); | 1222 | memcpy(cell_info, pdc_result, sizeof(*cell_info)); |
1173 | spin_unlock_irq(&pdc_lock); | 1223 | spin_unlock_irqrestore(&pdc_lock, flags); |
1174 | 1224 | ||
1175 | return retval; | 1225 | return retval; |
1176 | } | 1226 | } |
@@ -1190,16 +1240,17 @@ int pdc_pat_cell_module(unsigned long *actcnt, unsigned long ploc, unsigned long | |||
1190 | unsigned long view_type, void *mem_addr) | 1240 | unsigned long view_type, void *mem_addr) |
1191 | { | 1241 | { |
1192 | int retval; | 1242 | int retval; |
1243 | unsigned long flags; | ||
1193 | static struct pdc_pat_cell_mod_maddr_block result __attribute__ ((aligned (8))); | 1244 | static struct pdc_pat_cell_mod_maddr_block result __attribute__ ((aligned (8))); |
1194 | 1245 | ||
1195 | spin_lock_irq(&pdc_lock); | 1246 | spin_lock_irqsave(&pdc_lock, flags); |
1196 | retval = mem_pdc_call(PDC_PAT_CELL, PDC_PAT_CELL_MODULE, __pa(pdc_result), | 1247 | retval = mem_pdc_call(PDC_PAT_CELL, PDC_PAT_CELL_MODULE, __pa(pdc_result), |
1197 | ploc, mod, view_type, __pa(&result)); | 1248 | ploc, mod, view_type, __pa(&result)); |
1198 | if(!retval) { | 1249 | if(!retval) { |
1199 | *actcnt = pdc_result[0]; | 1250 | *actcnt = pdc_result[0]; |
1200 | memcpy(mem_addr, &result, *actcnt); | 1251 | memcpy(mem_addr, &result, *actcnt); |
1201 | } | 1252 | } |
1202 | spin_unlock_irq(&pdc_lock); | 1253 | spin_unlock_irqrestore(&pdc_lock, flags); |
1203 | 1254 | ||
1204 | return retval; | 1255 | return retval; |
1205 | } | 1256 | } |
@@ -1214,12 +1265,13 @@ int pdc_pat_cell_module(unsigned long *actcnt, unsigned long ploc, unsigned long | |||
1214 | int pdc_pat_cpu_get_number(struct pdc_pat_cpu_num *cpu_info, void *hpa) | 1265 | int pdc_pat_cpu_get_number(struct pdc_pat_cpu_num *cpu_info, void *hpa) |
1215 | { | 1266 | { |
1216 | int retval; | 1267 | int retval; |
1268 | unsigned long flags; | ||
1217 | 1269 | ||
1218 | spin_lock_irq(&pdc_lock); | 1270 | spin_lock_irqsave(&pdc_lock, flags); |
1219 | retval = mem_pdc_call(PDC_PAT_CPU, PDC_PAT_CPU_GET_NUMBER, | 1271 | retval = mem_pdc_call(PDC_PAT_CPU, PDC_PAT_CPU_GET_NUMBER, |
1220 | __pa(&pdc_result), hpa); | 1272 | __pa(&pdc_result), hpa); |
1221 | memcpy(cpu_info, pdc_result, sizeof(*cpu_info)); | 1273 | memcpy(cpu_info, pdc_result, sizeof(*cpu_info)); |
1222 | spin_unlock_irq(&pdc_lock); | 1274 | spin_unlock_irqrestore(&pdc_lock, flags); |
1223 | 1275 | ||
1224 | return retval; | 1276 | return retval; |
1225 | } | 1277 | } |
@@ -1235,12 +1287,13 @@ int pdc_pat_cpu_get_number(struct pdc_pat_cpu_num *cpu_info, void *hpa) | |||
1235 | int pdc_pat_get_irt_size(unsigned long *num_entries, unsigned long cell_num) | 1287 | int pdc_pat_get_irt_size(unsigned long *num_entries, unsigned long cell_num) |
1236 | { | 1288 | { |
1237 | int retval; | 1289 | int retval; |
1290 | unsigned long flags; | ||
1238 | 1291 | ||
1239 | spin_lock_irq(&pdc_lock); | 1292 | spin_lock_irqsave(&pdc_lock, flags); |
1240 | retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_GET_PCI_ROUTING_TABLE_SIZE, | 1293 | retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_GET_PCI_ROUTING_TABLE_SIZE, |
1241 | __pa(pdc_result), cell_num); | 1294 | __pa(pdc_result), cell_num); |
1242 | *num_entries = pdc_result[0]; | 1295 | *num_entries = pdc_result[0]; |
1243 | spin_unlock_irq(&pdc_lock); | 1296 | spin_unlock_irqrestore(&pdc_lock, flags); |
1244 | 1297 | ||
1245 | return retval; | 1298 | return retval; |
1246 | } | 1299 | } |
@@ -1255,11 +1308,12 @@ int pdc_pat_get_irt_size(unsigned long *num_entries, unsigned long cell_num) | |||
1255 | int pdc_pat_get_irt(void *r_addr, unsigned long cell_num) | 1308 | int pdc_pat_get_irt(void *r_addr, unsigned long cell_num) |
1256 | { | 1309 | { |
1257 | int retval; | 1310 | int retval; |
1311 | unsigned long flags; | ||
1258 | 1312 | ||
1259 | spin_lock_irq(&pdc_lock); | 1313 | spin_lock_irqsave(&pdc_lock, flags); |
1260 | retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_GET_PCI_ROUTING_TABLE, | 1314 | retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_GET_PCI_ROUTING_TABLE, |
1261 | __pa(r_addr), cell_num); | 1315 | __pa(r_addr), cell_num); |
1262 | spin_unlock_irq(&pdc_lock); | 1316 | spin_unlock_irqrestore(&pdc_lock, flags); |
1263 | 1317 | ||
1264 | return retval; | 1318 | return retval; |
1265 | } | 1319 | } |
@@ -1276,13 +1330,14 @@ int pdc_pat_pd_get_addr_map(unsigned long *actual_len, void *mem_addr, | |||
1276 | unsigned long count, unsigned long offset) | 1330 | unsigned long count, unsigned long offset) |
1277 | { | 1331 | { |
1278 | int retval; | 1332 | int retval; |
1333 | unsigned long flags; | ||
1279 | 1334 | ||
1280 | spin_lock_irq(&pdc_lock); | 1335 | spin_lock_irqsave(&pdc_lock, flags); |
1281 | retval = mem_pdc_call(PDC_PAT_PD, PDC_PAT_PD_GET_ADDR_MAP, __pa(pdc_result), | 1336 | retval = mem_pdc_call(PDC_PAT_PD, PDC_PAT_PD_GET_ADDR_MAP, __pa(pdc_result), |
1282 | __pa(pdc_result2), count, offset); | 1337 | __pa(pdc_result2), count, offset); |
1283 | *actual_len = pdc_result[0]; | 1338 | *actual_len = pdc_result[0]; |
1284 | memcpy(mem_addr, pdc_result2, *actual_len); | 1339 | memcpy(mem_addr, pdc_result2, *actual_len); |
1285 | spin_unlock_irq(&pdc_lock); | 1340 | spin_unlock_irqrestore(&pdc_lock, flags); |
1286 | 1341 | ||
1287 | return retval; | 1342 | return retval; |
1288 | } | 1343 | } |
@@ -1297,7 +1352,9 @@ int pdc_pat_pd_get_addr_map(unsigned long *actual_len, void *mem_addr, | |||
1297 | int pdc_pat_io_pci_cfg_read(unsigned long pci_addr, int pci_size, u32 *mem_addr) | 1352 | int pdc_pat_io_pci_cfg_read(unsigned long pci_addr, int pci_size, u32 *mem_addr) |
1298 | { | 1353 | { |
1299 | int retval; | 1354 | int retval; |
1300 | spin_lock_irq(&pdc_lock); | 1355 | unsigned long flags; |
1356 | |||
1357 | spin_lock_irqsave(&pdc_lock, flags); | ||
1301 | retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_PCI_CONFIG_READ, | 1358 | retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_PCI_CONFIG_READ, |
1302 | __pa(pdc_result), pci_addr, pci_size); | 1359 | __pa(pdc_result), pci_addr, pci_size); |
1303 | switch(pci_size) { | 1360 | switch(pci_size) { |
@@ -1305,7 +1362,7 @@ int pdc_pat_io_pci_cfg_read(unsigned long pci_addr, int pci_size, u32 *mem_addr) | |||
1305 | case 2: *(u16 *)mem_addr = (u16) pdc_result[0]; | 1362 | case 2: *(u16 *)mem_addr = (u16) pdc_result[0]; |
1306 | case 4: *(u32 *)mem_addr = (u32) pdc_result[0]; | 1363 | case 4: *(u32 *)mem_addr = (u32) pdc_result[0]; |
1307 | } | 1364 | } |
1308 | spin_unlock_irq(&pdc_lock); | 1365 | spin_unlock_irqrestore(&pdc_lock, flags); |
1309 | 1366 | ||
1310 | return retval; | 1367 | return retval; |
1311 | } | 1368 | } |
@@ -1321,11 +1378,12 @@ int pdc_pat_io_pci_cfg_read(unsigned long pci_addr, int pci_size, u32 *mem_addr) | |||
1321 | int pdc_pat_io_pci_cfg_write(unsigned long pci_addr, int pci_size, u32 val) | 1378 | int pdc_pat_io_pci_cfg_write(unsigned long pci_addr, int pci_size, u32 val) |
1322 | { | 1379 | { |
1323 | int retval; | 1380 | int retval; |
1381 | unsigned long flags; | ||
1324 | 1382 | ||
1325 | spin_lock_irq(&pdc_lock); | 1383 | spin_lock_irqsave(&pdc_lock, flags); |
1326 | retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_PCI_CONFIG_WRITE, | 1384 | retval = mem_pdc_call(PDC_PAT_IO, PDC_PAT_IO_PCI_CONFIG_WRITE, |
1327 | pci_addr, pci_size, val); | 1385 | pci_addr, pci_size, val); |
1328 | spin_unlock_irq(&pdc_lock); | 1386 | spin_unlock_irqrestore(&pdc_lock, flags); |
1329 | 1387 | ||
1330 | return retval; | 1388 | return retval; |
1331 | } | 1389 | } |
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index 9bdd0197ceb7..b39c5b9aff46 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c | |||
@@ -35,8 +35,8 @@ | |||
35 | 35 | ||
36 | #undef PARISC_IRQ_CR16_COUNTS | 36 | #undef PARISC_IRQ_CR16_COUNTS |
37 | 37 | ||
38 | extern irqreturn_t timer_interrupt(int, void *, struct pt_regs *); | 38 | extern irqreturn_t timer_interrupt(int, void *); |
39 | extern irqreturn_t ipi_interrupt(int, void *, struct pt_regs *); | 39 | extern irqreturn_t ipi_interrupt(int, void *); |
40 | 40 | ||
41 | #define EIEM_MASK(irq) (1UL<<(CPU_IRQ_MAX - irq)) | 41 | #define EIEM_MASK(irq) (1UL<<(CPU_IRQ_MAX - irq)) |
42 | 42 | ||
@@ -347,12 +347,14 @@ static inline int eirr_to_irq(unsigned long eirr) | |||
347 | /* ONLY called from entry.S:intr_extint() */ | 347 | /* ONLY called from entry.S:intr_extint() */ |
348 | void do_cpu_irq_mask(struct pt_regs *regs) | 348 | void do_cpu_irq_mask(struct pt_regs *regs) |
349 | { | 349 | { |
350 | struct pt_regs *old_regs; | ||
350 | unsigned long eirr_val; | 351 | unsigned long eirr_val; |
351 | int irq, cpu = smp_processor_id(); | 352 | int irq, cpu = smp_processor_id(); |
352 | #ifdef CONFIG_SMP | 353 | #ifdef CONFIG_SMP |
353 | cpumask_t dest; | 354 | cpumask_t dest; |
354 | #endif | 355 | #endif |
355 | 356 | ||
357 | old_regs = set_irq_regs(regs); | ||
356 | local_irq_disable(); | 358 | local_irq_disable(); |
357 | irq_enter(); | 359 | irq_enter(); |
358 | 360 | ||
@@ -375,10 +377,11 @@ void do_cpu_irq_mask(struct pt_regs *regs) | |||
375 | goto set_out; | 377 | goto set_out; |
376 | } | 378 | } |
377 | #endif | 379 | #endif |
378 | __do_IRQ(irq, regs); | 380 | __do_IRQ(irq); |
379 | 381 | ||
380 | out: | 382 | out: |
381 | irq_exit(); | 383 | irq_exit(); |
384 | set_irq_regs(old_regs); | ||
382 | return; | 385 | return; |
383 | 386 | ||
384 | set_out: | 387 | set_out: |
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index faad338f310e..4a23a97b06cd 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -154,7 +154,7 @@ halt_processor(void) | |||
154 | 154 | ||
155 | 155 | ||
156 | irqreturn_t | 156 | irqreturn_t |
157 | ipi_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 157 | ipi_interrupt(int irq, void *dev_id) |
158 | { | 158 | { |
159 | int this_cpu = smp_processor_id(); | 159 | int this_cpu = smp_processor_id(); |
160 | struct cpuinfo_parisc *p = &cpu_data[this_cpu]; | 160 | struct cpuinfo_parisc *p = &cpu_data[this_cpu]; |
@@ -414,19 +414,6 @@ smp_flush_tlb_all(void) | |||
414 | on_each_cpu(flush_tlb_all_local, NULL, 1, 1); | 414 | on_each_cpu(flush_tlb_all_local, NULL, 1, 1); |
415 | } | 415 | } |
416 | 416 | ||
417 | |||
418 | void | ||
419 | smp_do_timer(struct pt_regs *regs) | ||
420 | { | ||
421 | int cpu = smp_processor_id(); | ||
422 | struct cpuinfo_parisc *data = &cpu_data[cpu]; | ||
423 | |||
424 | if (!--data->prof_counter) { | ||
425 | data->prof_counter = data->prof_multiplier; | ||
426 | update_process_times(user_mode(regs)); | ||
427 | } | ||
428 | } | ||
429 | |||
430 | /* | 417 | /* |
431 | * Called by secondaries to update state and initialize CPU registers. | 418 | * Called by secondaries to update state and initialize CPU registers. |
432 | */ | 419 | */ |
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index 1d58ce0e37ad..bad7d1eb62b9 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
@@ -34,10 +34,6 @@ | |||
34 | 34 | ||
35 | static unsigned long clocktick __read_mostly; /* timer cycles per tick */ | 35 | static unsigned long clocktick __read_mostly; /* timer cycles per tick */ |
36 | 36 | ||
37 | #ifdef CONFIG_SMP | ||
38 | extern void smp_do_timer(struct pt_regs *regs); | ||
39 | #endif | ||
40 | |||
41 | /* | 37 | /* |
42 | * We keep time on PA-RISC Linux by using the Interval Timer which is | 38 | * We keep time on PA-RISC Linux by using the Interval Timer which is |
43 | * a pair of registers; one is read-only and one is write-only; both | 39 | * a pair of registers; one is read-only and one is write-only; both |
@@ -55,21 +51,22 @@ extern void smp_do_timer(struct pt_regs *regs); | |||
55 | * held off for an arbitrarily long period of time by interrupts being | 51 | * held off for an arbitrarily long period of time by interrupts being |
56 | * disabled, so we may miss one or more ticks. | 52 | * disabled, so we may miss one or more ticks. |
57 | */ | 53 | */ |
58 | irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 54 | irqreturn_t timer_interrupt(int irq, void *dev_id) |
59 | { | 55 | { |
60 | unsigned long now; | 56 | unsigned long now; |
61 | unsigned long next_tick; | 57 | unsigned long next_tick; |
62 | unsigned long cycles_elapsed, ticks_elapsed; | 58 | unsigned long cycles_elapsed, ticks_elapsed; |
63 | unsigned long cycles_remainder; | 59 | unsigned long cycles_remainder; |
64 | unsigned int cpu = smp_processor_id(); | 60 | unsigned int cpu = smp_processor_id(); |
61 | struct cpuinfo_parisc *cpuinfo = &cpu_data[cpu]; | ||
65 | 62 | ||
66 | /* gcc can optimize for "read-only" case with a local clocktick */ | 63 | /* gcc can optimize for "read-only" case with a local clocktick */ |
67 | unsigned long cpt = clocktick; | 64 | unsigned long cpt = clocktick; |
68 | 65 | ||
69 | profile_tick(CPU_PROFILING, regs); | 66 | profile_tick(CPU_PROFILING); |
70 | 67 | ||
71 | /* Initialize next_tick to the expected tick time. */ | 68 | /* Initialize next_tick to the expected tick time. */ |
72 | next_tick = cpu_data[cpu].it_value; | 69 | next_tick = cpuinfo->it_value; |
73 | 70 | ||
74 | /* Get current interval timer. | 71 | /* Get current interval timer. |
75 | * CR16 reads as 64 bits in CPU wide mode. | 72 | * CR16 reads as 64 bits in CPU wide mode. |
@@ -120,7 +117,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
120 | */ | 117 | */ |
121 | next_tick = now + cycles_remainder; | 118 | next_tick = now + cycles_remainder; |
122 | 119 | ||
123 | cpu_data[cpu].it_value = next_tick; | 120 | cpuinfo->it_value = next_tick; |
124 | 121 | ||
125 | /* Skip one clocktick on purpose if we are likely to miss next_tick. | 122 | /* Skip one clocktick on purpose if we are likely to miss next_tick. |
126 | * We want to avoid the new next_tick being less than CR16. | 123 | * We want to avoid the new next_tick being less than CR16. |
@@ -131,18 +128,19 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
131 | next_tick += cpt; | 128 | next_tick += cpt; |
132 | 129 | ||
133 | /* Program the IT when to deliver the next interrupt. */ | 130 | /* Program the IT when to deliver the next interrupt. */ |
134 | /* Only bottom 32-bits of next_tick are written to cr16. */ | 131 | /* Only bottom 32-bits of next_tick are written to cr16. */ |
135 | mtctl(next_tick, 16); | 132 | mtctl(next_tick, 16); |
136 | 133 | ||
137 | 134 | ||
138 | /* Done mucking with unreliable delivery of interrupts. | 135 | /* Done mucking with unreliable delivery of interrupts. |
139 | * Go do system house keeping. | 136 | * Go do system house keeping. |
140 | */ | 137 | */ |
141 | #ifdef CONFIG_SMP | 138 | |
142 | smp_do_timer(regs); | 139 | if (!--cpuinfo->prof_counter) { |
143 | #else | 140 | cpuinfo->prof_counter = cpuinfo->prof_multiplier; |
144 | update_process_times(user_mode(regs)); | 141 | update_process_times(user_mode(get_irq_regs())); |
145 | #endif | 142 | } |
143 | |||
146 | if (cpu == 0) { | 144 | if (cpu == 0) { |
147 | write_seqlock(&xtime_lock); | 145 | write_seqlock(&xtime_lock); |
148 | do_timer(ticks_elapsed); | 146 | do_timer(ticks_elapsed); |
@@ -319,13 +317,15 @@ void __init time_init(void) | |||
319 | 317 | ||
320 | start_cpu_itimer(); /* get CPU 0 started */ | 318 | start_cpu_itimer(); /* get CPU 0 started */ |
321 | 319 | ||
322 | if(pdc_tod_read(&tod_data) == 0) { | 320 | if (pdc_tod_read(&tod_data) == 0) { |
323 | write_seqlock_irq(&xtime_lock); | 321 | unsigned long flags; |
322 | |||
323 | write_seqlock_irqsave(&xtime_lock, flags); | ||
324 | xtime.tv_sec = tod_data.tod_sec; | 324 | xtime.tv_sec = tod_data.tod_sec; |
325 | xtime.tv_nsec = tod_data.tod_usec * 1000; | 325 | xtime.tv_nsec = tod_data.tod_usec * 1000; |
326 | set_normalized_timespec(&wall_to_monotonic, | 326 | set_normalized_timespec(&wall_to_monotonic, |
327 | -xtime.tv_sec, -xtime.tv_nsec); | 327 | -xtime.tv_sec, -xtime.tv_nsec); |
328 | write_sequnlock_irq(&xtime_lock); | 328 | write_sequnlock_irqrestore(&xtime_lock, flags); |
329 | } else { | 329 | } else { |
330 | printk(KERN_ERR "Error reading tod clock\n"); | 330 | printk(KERN_ERR "Error reading tod clock\n"); |
331 | xtime.tv_sec = 0; | 331 | xtime.tv_sec = 0; |
diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts new file mode 100644 index 000000000000..27807fc45888 --- /dev/null +++ b/arch/powerpc/boot/dts/mpc8349emitx.dts | |||
@@ -0,0 +1,246 @@ | |||
1 | /* | ||
2 | * MPC8349E-mITX Device Tree Source | ||
3 | * | ||
4 | * Copyright 2006 Freescale Semiconductor Inc. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the | ||
8 | * Free Software Foundation; either version 2 of the License, or (at your | ||
9 | * option) any later version. | ||
10 | */ | ||
11 | / { | ||
12 | model = "MPC8349EMITX"; | ||
13 | compatible = "MPC834xMITX"; | ||
14 | #address-cells = <1>; | ||
15 | #size-cells = <1>; | ||
16 | |||
17 | cpus { | ||
18 | #cpus = <1>; | ||
19 | #address-cells = <1>; | ||
20 | #size-cells = <0>; | ||
21 | |||
22 | PowerPC,8349@0 { | ||
23 | device_type = "cpu"; | ||
24 | reg = <0>; | ||
25 | d-cache-line-size = <20>; | ||
26 | i-cache-line-size = <20>; | ||
27 | d-cache-size = <8000>; | ||
28 | i-cache-size = <8000>; | ||
29 | timebase-frequency = <0>; // from bootloader | ||
30 | bus-frequency = <0>; // from bootloader | ||
31 | clock-frequency = <0>; // from bootloader | ||
32 | 32-bit; | ||
33 | }; | ||
34 | }; | ||
35 | |||
36 | memory { | ||
37 | device_type = "memory"; | ||
38 | reg = <00000000 10000000>; | ||
39 | }; | ||
40 | |||
41 | soc8349@e0000000 { | ||
42 | #address-cells = <1>; | ||
43 | #size-cells = <1>; | ||
44 | #interrupt-cells = <2>; | ||
45 | device_type = "soc"; | ||
46 | ranges = <0 e0000000 00100000>; | ||
47 | reg = <e0000000 00000200>; | ||
48 | bus-frequency = <0>; // from bootloader | ||
49 | |||
50 | wdt@200 { | ||
51 | device_type = "watchdog"; | ||
52 | compatible = "mpc83xx_wdt"; | ||
53 | reg = <200 100>; | ||
54 | }; | ||
55 | |||
56 | i2c@3000 { | ||
57 | device_type = "i2c"; | ||
58 | compatible = "fsl-i2c"; | ||
59 | reg = <3000 100>; | ||
60 | interrupts = <e 8>; | ||
61 | interrupt-parent = <700>; | ||
62 | dfsrr; | ||
63 | }; | ||
64 | |||
65 | i2c@3100 { | ||
66 | device_type = "i2c"; | ||
67 | compatible = "fsl-i2c"; | ||
68 | reg = <3100 100>; | ||
69 | interrupts = <f 8>; | ||
70 | interrupt-parent = <700>; | ||
71 | dfsrr; | ||
72 | }; | ||
73 | |||
74 | spi@7000 { | ||
75 | device_type = "spi"; | ||
76 | compatible = "mpc83xx_spi"; | ||
77 | reg = <7000 1000>; | ||
78 | interrupts = <10 8>; | ||
79 | interrupt-parent = <700>; | ||
80 | mode = <0>; | ||
81 | }; | ||
82 | |||
83 | usb@22000 { | ||
84 | device_type = "usb"; | ||
85 | compatible = "fsl-usb2-mph"; | ||
86 | reg = <22000 1000>; | ||
87 | #address-cells = <1>; | ||
88 | #size-cells = <0>; | ||
89 | interrupt-parent = <700>; | ||
90 | interrupts = <27 2>; | ||
91 | phy_type = "ulpi"; | ||
92 | port1; | ||
93 | }; | ||
94 | |||
95 | usb@23000 { | ||
96 | device_type = "usb"; | ||
97 | compatible = "fsl-usb2-dr"; | ||
98 | reg = <23000 1000>; | ||
99 | #address-cells = <1>; | ||
100 | #size-cells = <0>; | ||
101 | interrupt-parent = <700>; | ||
102 | interrupts = <26 2>; | ||
103 | phy_type = "ulpi"; | ||
104 | }; | ||
105 | |||
106 | mdio@24520 { | ||
107 | device_type = "mdio"; | ||
108 | compatible = "gianfar"; | ||
109 | reg = <24520 20>; | ||
110 | #address-cells = <1>; | ||
111 | #size-cells = <0>; | ||
112 | linux,phandle = <24520>; | ||
113 | |||
114 | /* Vitesse 8201 */ | ||
115 | ethernet-phy@1c { | ||
116 | linux,phandle = <245201c>; | ||
117 | interrupt-parent = <700>; | ||
118 | interrupts = <12 2>; | ||
119 | reg = <1c>; | ||
120 | device_type = "ethernet-phy"; | ||
121 | }; | ||
122 | |||
123 | /* Vitesse 7385 */ | ||
124 | ethernet-phy@1f { | ||
125 | linux,phandle = <245201f>; | ||
126 | interrupt-parent = <700>; | ||
127 | interrupts = <12 2>; | ||
128 | reg = <1f>; | ||
129 | device_type = "ethernet-phy"; | ||
130 | }; | ||
131 | }; | ||
132 | |||
133 | ethernet@24000 { | ||
134 | device_type = "network"; | ||
135 | model = "TSEC"; | ||
136 | compatible = "gianfar"; | ||
137 | reg = <24000 1000>; | ||
138 | address = [ 00 00 00 00 00 00 ]; | ||
139 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
140 | interrupts = <20 8 21 8 22 8>; | ||
141 | interrupt-parent = <700>; | ||
142 | phy-handle = <245201c>; | ||
143 | }; | ||
144 | |||
145 | ethernet@25000 { | ||
146 | #address-cells = <1>; | ||
147 | #size-cells = <0>; | ||
148 | device_type = "network"; | ||
149 | model = "TSEC"; | ||
150 | compatible = "gianfar"; | ||
151 | reg = <25000 1000>; | ||
152 | address = [ 00 00 00 00 00 00 ]; | ||
153 | local-mac-address = [ 00 00 00 00 00 00 ]; | ||
154 | interrupts = <23 8 24 8 25 8>; | ||
155 | interrupt-parent = <700>; | ||
156 | phy-handle = <245201f>; | ||
157 | }; | ||
158 | |||
159 | serial@4500 { | ||
160 | device_type = "serial"; | ||
161 | compatible = "ns16550"; | ||
162 | reg = <4500 100>; | ||
163 | clock-frequency = <0>; // from bootloader | ||
164 | interrupts = <9 8>; | ||
165 | interrupt-parent = <700>; | ||
166 | }; | ||
167 | |||
168 | serial@4600 { | ||
169 | device_type = "serial"; | ||
170 | compatible = "ns16550"; | ||
171 | reg = <4600 100>; | ||
172 | clock-frequency = <0>; // from bootloader | ||
173 | interrupts = <a 8>; | ||
174 | interrupt-parent = <700>; | ||
175 | }; | ||
176 | |||
177 | pci@8500 { | ||
178 | interrupt-map-mask = <f800 0 0 7>; | ||
179 | interrupt-map = < | ||
180 | /* IDSEL 0x10 - SATA */ | ||
181 | 8000 0 0 1 700 16 8 /* SATA_INTA */ | ||
182 | >; | ||
183 | interrupt-parent = <700>; | ||
184 | interrupts = <42 8>; | ||
185 | bus-range = <0 0>; | ||
186 | ranges = <42000000 0 80000000 80000000 0 10000000 | ||
187 | 02000000 0 90000000 90000000 0 10000000 | ||
188 | 01000000 0 00000000 e2000000 0 01000000>; | ||
189 | clock-frequency = <3f940aa>; | ||
190 | #interrupt-cells = <1>; | ||
191 | #size-cells = <2>; | ||
192 | #address-cells = <3>; | ||
193 | reg = <8500 100>; | ||
194 | compatible = "83xx"; | ||
195 | device_type = "pci"; | ||
196 | }; | ||
197 | |||
198 | pci@8600 { | ||
199 | interrupt-map-mask = <f800 0 0 7>; | ||
200 | interrupt-map = < | ||
201 | /* IDSEL 0x0E - MiniPCI Slot */ | ||
202 | 7000 0 0 1 700 15 8 /* PCI_INTA */ | ||
203 | |||
204 | /* IDSEL 0x0F - PCI Slot */ | ||
205 | 7800 0 0 1 700 14 8 /* PCI_INTA */ | ||
206 | 7800 0 0 2 700 15 8 /* PCI_INTB */ | ||
207 | >; | ||
208 | interrupt-parent = <700>; | ||
209 | interrupts = <43 8>; | ||
210 | bus-range = <1 1>; | ||
211 | ranges = <42000000 0 a0000000 a0000000 0 10000000 | ||
212 | 02000000 0 b0000000 b0000000 0 10000000 | ||
213 | 01000000 0 00000000 e3000000 0 01000000>; | ||
214 | clock-frequency = <3f940aa>; | ||
215 | #interrupt-cells = <1>; | ||
216 | #size-cells = <2>; | ||
217 | #address-cells = <3>; | ||
218 | reg = <8600 100>; | ||
219 | compatible = "83xx"; | ||
220 | device_type = "pci"; | ||
221 | }; | ||
222 | |||
223 | crypto@30000 { | ||
224 | device_type = "crypto"; | ||
225 | model = "SEC2"; | ||
226 | compatible = "talitos"; | ||
227 | reg = <30000 10000>; | ||
228 | interrupts = <b 8>; | ||
229 | interrupt-parent = <700>; | ||
230 | num-channels = <4>; | ||
231 | channel-fifo-len = <18>; | ||
232 | exec-units-mask = <0000007e>; | ||
233 | descriptor-types-mask = <01010ebf>; | ||
234 | }; | ||
235 | |||
236 | pic@700 { | ||
237 | linux,phandle = <700>; | ||
238 | interrupt-controller; | ||
239 | #address-cells = <0>; | ||
240 | #interrupt-cells = <2>; | ||
241 | reg = <700 100>; | ||
242 | built-in; | ||
243 | device_type = "ipic"; | ||
244 | }; | ||
245 | }; | ||
246 | }; | ||
diff --git a/arch/powerpc/boot/of.c b/arch/powerpc/boot/of.c index fd99f789a37b..3a71845afc6c 100644 --- a/arch/powerpc/boot/of.c +++ b/arch/powerpc/boot/of.c | |||
@@ -176,12 +176,9 @@ static void *claim(unsigned long virt, unsigned long size, unsigned long align) | |||
176 | static void *of_try_claim(u32 size) | 176 | static void *of_try_claim(u32 size) |
177 | { | 177 | { |
178 | unsigned long addr = 0; | 178 | unsigned long addr = 0; |
179 | static u8 first_time = 1; | ||
180 | 179 | ||
181 | if (first_time) { | 180 | if (claim_base == 0) |
182 | claim_base = _ALIGN_UP((unsigned long)_end, ONE_MB); | 181 | claim_base = _ALIGN_UP((unsigned long)_end, ONE_MB); |
183 | first_time = 0; | ||
184 | } | ||
185 | 182 | ||
186 | for(; claim_base < RAM_END; claim_base += ONE_MB) { | 183 | for(; claim_base < RAM_END; claim_base += ONE_MB) { |
187 | #ifdef DEBUG | 184 | #ifdef DEBUG |
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig index d58f82f836f8..b5005506c2f8 100644 --- a/arch/powerpc/configs/iseries_defconfig +++ b/arch/powerpc/configs/iseries_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-rc6 | 3 | # Linux kernel version: 2.6.19-rc1 |
4 | # Sun Sep 10 10:22:57 2006 | 4 | # Fri Oct 6 13:25:04 2006 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
@@ -22,6 +22,7 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y | |||
22 | CONFIG_PPC_OF=y | 22 | CONFIG_PPC_OF=y |
23 | # CONFIG_PPC_UDBG_16550 is not set | 23 | # CONFIG_PPC_UDBG_16550 is not set |
24 | # CONFIG_GENERIC_TBSYNC is not set | 24 | # CONFIG_GENERIC_TBSYNC is not set |
25 | CONFIG_AUDIT_ARCH=y | ||
25 | # CONFIG_DEFAULT_UIMAGE is not set | 26 | # CONFIG_DEFAULT_UIMAGE is not set |
26 | 27 | ||
27 | # | 28 | # |
@@ -52,10 +53,11 @@ CONFIG_LOCALVERSION="" | |||
52 | CONFIG_LOCALVERSION_AUTO=y | 53 | CONFIG_LOCALVERSION_AUTO=y |
53 | CONFIG_SWAP=y | 54 | CONFIG_SWAP=y |
54 | CONFIG_SYSVIPC=y | 55 | CONFIG_SYSVIPC=y |
56 | # CONFIG_IPC_NS is not set | ||
55 | CONFIG_POSIX_MQUEUE=y | 57 | CONFIG_POSIX_MQUEUE=y |
56 | # CONFIG_BSD_PROCESS_ACCT is not set | 58 | # CONFIG_BSD_PROCESS_ACCT is not set |
57 | # CONFIG_TASKSTATS is not set | 59 | # CONFIG_TASKSTATS is not set |
58 | CONFIG_SYSCTL=y | 60 | # CONFIG_UTS_NS is not set |
59 | CONFIG_AUDIT=y | 61 | CONFIG_AUDIT=y |
60 | CONFIG_AUDITSYSCALL=y | 62 | CONFIG_AUDITSYSCALL=y |
61 | CONFIG_IKCONFIG=y | 63 | CONFIG_IKCONFIG=y |
@@ -64,7 +66,9 @@ CONFIG_IKCONFIG_PROC=y | |||
64 | # CONFIG_RELAY is not set | 66 | # CONFIG_RELAY is not set |
65 | CONFIG_INITRAMFS_SOURCE="" | 67 | CONFIG_INITRAMFS_SOURCE="" |
66 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 68 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
69 | CONFIG_SYSCTL=y | ||
67 | # CONFIG_EMBEDDED is not set | 70 | # CONFIG_EMBEDDED is not set |
71 | # CONFIG_SYSCTL_SYSCALL is not set | ||
68 | CONFIG_KALLSYMS=y | 72 | CONFIG_KALLSYMS=y |
69 | # CONFIG_KALLSYMS_ALL is not set | 73 | # CONFIG_KALLSYMS_ALL is not set |
70 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 74 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -73,12 +77,12 @@ CONFIG_PRINTK=y | |||
73 | CONFIG_BUG=y | 77 | CONFIG_BUG=y |
74 | CONFIG_ELF_CORE=y | 78 | CONFIG_ELF_CORE=y |
75 | CONFIG_BASE_FULL=y | 79 | CONFIG_BASE_FULL=y |
76 | CONFIG_RT_MUTEXES=y | ||
77 | CONFIG_FUTEX=y | 80 | CONFIG_FUTEX=y |
78 | CONFIG_EPOLL=y | 81 | CONFIG_EPOLL=y |
79 | CONFIG_SHMEM=y | 82 | CONFIG_SHMEM=y |
80 | CONFIG_SLAB=y | 83 | CONFIG_SLAB=y |
81 | CONFIG_VM_EVENT_COUNTERS=y | 84 | CONFIG_VM_EVENT_COUNTERS=y |
85 | CONFIG_RT_MUTEXES=y | ||
82 | # CONFIG_TINY_SHMEM is not set | 86 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 87 | CONFIG_BASE_SMALL=0 |
84 | # CONFIG_SLOB is not set | 88 | # CONFIG_SLOB is not set |
@@ -97,6 +101,7 @@ CONFIG_STOP_MACHINE=y | |||
97 | # | 101 | # |
98 | # Block layer | 102 | # Block layer |
99 | # | 103 | # |
104 | CONFIG_BLOCK=y | ||
100 | # CONFIG_BLK_DEV_IO_TRACE is not set | 105 | # CONFIG_BLK_DEV_IO_TRACE is not set |
101 | 106 | ||
102 | # | 107 | # |
@@ -115,13 +120,18 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
115 | # | 120 | # |
116 | # Platform support | 121 | # Platform support |
117 | # | 122 | # |
118 | # CONFIG_PPC_MULTIPLATFORM is not set | 123 | CONFIG_PPC_MULTIPLATFORM=y |
119 | CONFIG_PPC_ISERIES=y | ||
120 | # CONFIG_EMBEDDED6xx is not set | 124 | # CONFIG_EMBEDDED6xx is not set |
121 | # CONFIG_APUS is not set | 125 | # CONFIG_APUS is not set |
126 | # CONFIG_PPC_PSERIES is not set | ||
127 | CONFIG_PPC_ISERIES=y | ||
128 | # CONFIG_PPC_PMAC is not set | ||
129 | # CONFIG_PPC_MAPLE is not set | ||
130 | # CONFIG_PPC_PASEMI is not set | ||
122 | # CONFIG_PPC_CELL is not set | 131 | # CONFIG_PPC_CELL is not set |
123 | # CONFIG_PPC_CELL_NATIVE is not set | 132 | # CONFIG_PPC_CELL_NATIVE is not set |
124 | # CONFIG_UDBG_RTAS_CONSOLE is not set | 133 | # CONFIG_PPC_IBM_CELL_BLADE is not set |
134 | # CONFIG_U3_DART is not set | ||
125 | # CONFIG_PPC_RTAS is not set | 135 | # CONFIG_PPC_RTAS is not set |
126 | # CONFIG_MMIO_NVRAM is not set | 136 | # CONFIG_MMIO_NVRAM is not set |
127 | CONFIG_IBMVIO=y | 137 | CONFIG_IBMVIO=y |
@@ -147,12 +157,15 @@ CONFIG_BINFMT_ELF=y | |||
147 | CONFIG_FORCE_MAX_ZONEORDER=13 | 157 | CONFIG_FORCE_MAX_ZONEORDER=13 |
148 | CONFIG_IOMMU_VMERGE=y | 158 | CONFIG_IOMMU_VMERGE=y |
149 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 159 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
160 | # CONFIG_KEXEC is not set | ||
161 | # CONFIG_CRASH_DUMP is not set | ||
150 | CONFIG_IRQ_ALL_CPUS=y | 162 | CONFIG_IRQ_ALL_CPUS=y |
151 | CONFIG_LPARCFG=y | 163 | CONFIG_LPARCFG=y |
152 | # CONFIG_NUMA is not set | 164 | # CONFIG_NUMA is not set |
153 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | 165 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y |
154 | CONFIG_ARCH_FLATMEM_ENABLE=y | 166 | CONFIG_ARCH_FLATMEM_ENABLE=y |
155 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 167 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
168 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
156 | CONFIG_SELECT_MEMORY_MODEL=y | 169 | CONFIG_SELECT_MEMORY_MODEL=y |
157 | CONFIG_FLATMEM_MANUAL=y | 170 | CONFIG_FLATMEM_MANUAL=y |
158 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 171 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
@@ -179,6 +192,7 @@ CONFIG_GENERIC_ISA_DMA=y | |||
179 | CONFIG_PCI=y | 192 | CONFIG_PCI=y |
180 | CONFIG_PCI_DOMAINS=y | 193 | CONFIG_PCI_DOMAINS=y |
181 | # CONFIG_PCIEPORTBUS is not set | 194 | # CONFIG_PCIEPORTBUS is not set |
195 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | ||
182 | # CONFIG_PCI_DEBUG is not set | 196 | # CONFIG_PCI_DEBUG is not set |
183 | 197 | ||
184 | # | 198 | # |
@@ -206,6 +220,7 @@ CONFIG_PACKET=y | |||
206 | CONFIG_UNIX=y | 220 | CONFIG_UNIX=y |
207 | CONFIG_XFRM=y | 221 | CONFIG_XFRM=y |
208 | CONFIG_XFRM_USER=m | 222 | CONFIG_XFRM_USER=m |
223 | CONFIG_XFRM_SUB_POLICY=y | ||
209 | CONFIG_NET_KEY=m | 224 | CONFIG_NET_KEY=m |
210 | CONFIG_INET=y | 225 | CONFIG_INET=y |
211 | CONFIG_IP_MULTICAST=y | 226 | CONFIG_IP_MULTICAST=y |
@@ -224,10 +239,12 @@ CONFIG_INET_XFRM_TUNNEL=m | |||
224 | CONFIG_INET_TUNNEL=y | 239 | CONFIG_INET_TUNNEL=y |
225 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 240 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
226 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 241 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
242 | CONFIG_INET_XFRM_MODE_BEET=m | ||
227 | CONFIG_INET_DIAG=y | 243 | CONFIG_INET_DIAG=y |
228 | CONFIG_INET_TCP_DIAG=y | 244 | CONFIG_INET_TCP_DIAG=y |
229 | # CONFIG_TCP_CONG_ADVANCED is not set | 245 | # CONFIG_TCP_CONG_ADVANCED is not set |
230 | CONFIG_TCP_CONG_BIC=y | 246 | CONFIG_TCP_CONG_CUBIC=y |
247 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
231 | 248 | ||
232 | # | 249 | # |
233 | # IP: Virtual Server Configuration | 250 | # IP: Virtual Server Configuration |
@@ -247,6 +264,7 @@ CONFIG_NETFILTER=y | |||
247 | CONFIG_NETFILTER_XTABLES=m | 264 | CONFIG_NETFILTER_XTABLES=m |
248 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 265 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
249 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 266 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
267 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
250 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 268 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
251 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 269 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
252 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | 270 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m |
@@ -255,6 +273,7 @@ CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | |||
255 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | 273 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m |
256 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 274 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
257 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set | 275 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set |
276 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
258 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set | 277 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set |
259 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | 278 | CONFIG_NETFILTER_XT_MATCH_HELPER=m |
260 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | 279 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m |
@@ -294,7 +313,6 @@ CONFIG_IP_NF_MATCH_IPRANGE=m | |||
294 | CONFIG_IP_NF_MATCH_TOS=m | 313 | CONFIG_IP_NF_MATCH_TOS=m |
295 | CONFIG_IP_NF_MATCH_RECENT=m | 314 | CONFIG_IP_NF_MATCH_RECENT=m |
296 | CONFIG_IP_NF_MATCH_ECN=m | 315 | CONFIG_IP_NF_MATCH_ECN=m |
297 | CONFIG_IP_NF_MATCH_DSCP=m | ||
298 | # CONFIG_IP_NF_MATCH_AH is not set | 316 | # CONFIG_IP_NF_MATCH_AH is not set |
299 | CONFIG_IP_NF_MATCH_TTL=m | 317 | CONFIG_IP_NF_MATCH_TTL=m |
300 | CONFIG_IP_NF_MATCH_OWNER=m | 318 | CONFIG_IP_NF_MATCH_OWNER=m |
@@ -319,7 +337,6 @@ CONFIG_IP_NF_NAT_AMANDA=m | |||
319 | CONFIG_IP_NF_MANGLE=m | 337 | CONFIG_IP_NF_MANGLE=m |
320 | CONFIG_IP_NF_TARGET_TOS=m | 338 | CONFIG_IP_NF_TARGET_TOS=m |
321 | CONFIG_IP_NF_TARGET_ECN=m | 339 | CONFIG_IP_NF_TARGET_ECN=m |
322 | CONFIG_IP_NF_TARGET_DSCP=m | ||
323 | CONFIG_IP_NF_TARGET_TTL=m | 340 | CONFIG_IP_NF_TARGET_TTL=m |
324 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 341 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
325 | CONFIG_IP_NF_RAW=m | 342 | CONFIG_IP_NF_RAW=m |
@@ -351,7 +368,6 @@ CONFIG_LLC=y | |||
351 | # CONFIG_ATALK is not set | 368 | # CONFIG_ATALK is not set |
352 | # CONFIG_X25 is not set | 369 | # CONFIG_X25 is not set |
353 | # CONFIG_LAPB is not set | 370 | # CONFIG_LAPB is not set |
354 | # CONFIG_NET_DIVERT is not set | ||
355 | # CONFIG_ECONET is not set | 371 | # CONFIG_ECONET is not set |
356 | # CONFIG_WAN_ROUTER is not set | 372 | # CONFIG_WAN_ROUTER is not set |
357 | 373 | ||
@@ -433,6 +449,7 @@ CONFIG_BLK_DEV_INITRD=y | |||
433 | # | 449 | # |
434 | # CONFIG_RAID_ATTRS is not set | 450 | # CONFIG_RAID_ATTRS is not set |
435 | CONFIG_SCSI=y | 451 | CONFIG_SCSI=y |
452 | CONFIG_SCSI_NETLINK=y | ||
436 | CONFIG_SCSI_PROC_FS=y | 453 | CONFIG_SCSI_PROC_FS=y |
437 | 454 | ||
438 | # | 455 | # |
@@ -454,12 +471,14 @@ CONFIG_SCSI_CONSTANTS=y | |||
454 | # CONFIG_SCSI_LOGGING is not set | 471 | # CONFIG_SCSI_LOGGING is not set |
455 | 472 | ||
456 | # | 473 | # |
457 | # SCSI Transport Attributes | 474 | # SCSI Transports |
458 | # | 475 | # |
459 | CONFIG_SCSI_SPI_ATTRS=y | 476 | CONFIG_SCSI_SPI_ATTRS=y |
460 | CONFIG_SCSI_FC_ATTRS=y | 477 | CONFIG_SCSI_FC_ATTRS=y |
461 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 478 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
462 | # CONFIG_SCSI_SAS_ATTRS is not set | 479 | CONFIG_SCSI_SAS_ATTRS=m |
480 | CONFIG_SCSI_SAS_LIBSAS=m | ||
481 | CONFIG_SCSI_SAS_LIBSAS_DEBUG=y | ||
463 | 482 | ||
464 | # | 483 | # |
465 | # SCSI low-level drivers | 484 | # SCSI low-level drivers |
@@ -472,10 +491,11 @@ CONFIG_SCSI_FC_ATTRS=y | |||
472 | # CONFIG_SCSI_AIC7XXX is not set | 491 | # CONFIG_SCSI_AIC7XXX is not set |
473 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 492 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
474 | # CONFIG_SCSI_AIC79XX is not set | 493 | # CONFIG_SCSI_AIC79XX is not set |
494 | # CONFIG_SCSI_AIC94XX is not set | ||
495 | # CONFIG_SCSI_ARCMSR is not set | ||
475 | # CONFIG_MEGARAID_NEWGEN is not set | 496 | # CONFIG_MEGARAID_NEWGEN is not set |
476 | # CONFIG_MEGARAID_LEGACY is not set | 497 | # CONFIG_MEGARAID_LEGACY is not set |
477 | # CONFIG_MEGARAID_SAS is not set | 498 | # CONFIG_MEGARAID_SAS is not set |
478 | # CONFIG_ATA is not set | ||
479 | # CONFIG_SCSI_HPTIOP is not set | 499 | # CONFIG_SCSI_HPTIOP is not set |
480 | # CONFIG_SCSI_BUSLOGIC is not set | 500 | # CONFIG_SCSI_BUSLOGIC is not set |
481 | # CONFIG_SCSI_DMX3191D is not set | 501 | # CONFIG_SCSI_DMX3191D is not set |
@@ -486,16 +506,22 @@ CONFIG_SCSI_FC_ATTRS=y | |||
486 | CONFIG_SCSI_IBMVSCSI=m | 506 | CONFIG_SCSI_IBMVSCSI=m |
487 | # CONFIG_SCSI_INITIO is not set | 507 | # CONFIG_SCSI_INITIO is not set |
488 | # CONFIG_SCSI_INIA100 is not set | 508 | # CONFIG_SCSI_INIA100 is not set |
509 | # CONFIG_SCSI_STEX is not set | ||
489 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 510 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
490 | # CONFIG_SCSI_IPR is not set | ||
491 | # CONFIG_SCSI_QLOGIC_1280 is not set | 511 | # CONFIG_SCSI_QLOGIC_1280 is not set |
492 | # CONFIG_SCSI_QLA_FC is not set | 512 | # CONFIG_SCSI_QLA_FC is not set |
513 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
493 | # CONFIG_SCSI_LPFC is not set | 514 | # CONFIG_SCSI_LPFC is not set |
494 | # CONFIG_SCSI_DC395x is not set | 515 | # CONFIG_SCSI_DC395x is not set |
495 | # CONFIG_SCSI_DC390T is not set | 516 | # CONFIG_SCSI_DC390T is not set |
496 | # CONFIG_SCSI_DEBUG is not set | 517 | # CONFIG_SCSI_DEBUG is not set |
497 | 518 | ||
498 | # | 519 | # |
520 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
521 | # | ||
522 | # CONFIG_ATA is not set | ||
523 | |||
524 | # | ||
499 | # Multi-device support (RAID and LVM) | 525 | # Multi-device support (RAID and LVM) |
500 | # | 526 | # |
501 | CONFIG_MD=y | 527 | CONFIG_MD=y |
@@ -508,6 +534,7 @@ CONFIG_MD_RAID10=m | |||
508 | CONFIG_MD_MULTIPATH=m | 534 | CONFIG_MD_MULTIPATH=m |
509 | CONFIG_MD_FAULTY=m | 535 | CONFIG_MD_FAULTY=m |
510 | CONFIG_BLK_DEV_DM=y | 536 | CONFIG_BLK_DEV_DM=y |
537 | # CONFIG_DM_DEBUG is not set | ||
511 | CONFIG_DM_CRYPT=m | 538 | CONFIG_DM_CRYPT=m |
512 | CONFIG_DM_SNAPSHOT=m | 539 | CONFIG_DM_SNAPSHOT=m |
513 | CONFIG_DM_MIRROR=m | 540 | CONFIG_DM_MIRROR=m |
@@ -573,6 +600,7 @@ CONFIG_MII=y | |||
573 | # CONFIG_HP100 is not set | 600 | # CONFIG_HP100 is not set |
574 | CONFIG_NET_PCI=y | 601 | CONFIG_NET_PCI=y |
575 | CONFIG_PCNET32=y | 602 | CONFIG_PCNET32=y |
603 | CONFIG_PCNET32_NAPI=y | ||
576 | # CONFIG_AMD8111_ETH is not set | 604 | # CONFIG_AMD8111_ETH is not set |
577 | # CONFIG_ADAPTEC_STARFIRE is not set | 605 | # CONFIG_ADAPTEC_STARFIRE is not set |
578 | # CONFIG_B44 is not set | 606 | # CONFIG_B44 is not set |
@@ -610,6 +638,7 @@ CONFIG_E1000=m | |||
610 | # CONFIG_VIA_VELOCITY is not set | 638 | # CONFIG_VIA_VELOCITY is not set |
611 | # CONFIG_TIGON3 is not set | 639 | # CONFIG_TIGON3 is not set |
612 | # CONFIG_BNX2 is not set | 640 | # CONFIG_BNX2 is not set |
641 | # CONFIG_QLA3XXX is not set | ||
613 | 642 | ||
614 | # | 643 | # |
615 | # Ethernet (10000 Mbit) | 644 | # Ethernet (10000 Mbit) |
@@ -649,6 +678,7 @@ CONFIG_PPP_BSDCOMP=m | |||
649 | # CONFIG_PPP_MPPE is not set | 678 | # CONFIG_PPP_MPPE is not set |
650 | CONFIG_PPPOE=m | 679 | CONFIG_PPPOE=m |
651 | # CONFIG_SLIP is not set | 680 | # CONFIG_SLIP is not set |
681 | CONFIG_SLHC=m | ||
652 | # CONFIG_NET_FC is not set | 682 | # CONFIG_NET_FC is not set |
653 | # CONFIG_SHAPER is not set | 683 | # CONFIG_SHAPER is not set |
654 | CONFIG_NETCONSOLE=y | 684 | CONFIG_NETCONSOLE=y |
@@ -671,6 +701,7 @@ CONFIG_NET_POLL_CONTROLLER=y | |||
671 | # Input device support | 701 | # Input device support |
672 | # | 702 | # |
673 | CONFIG_INPUT=y | 703 | CONFIG_INPUT=y |
704 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
674 | 705 | ||
675 | # | 706 | # |
676 | # Userland interfaces | 707 | # Userland interfaces |
@@ -774,12 +805,12 @@ CONFIG_MAX_RAW_DEVS=256 | |||
774 | # | 805 | # |
775 | # Misc devices | 806 | # Misc devices |
776 | # | 807 | # |
808 | # CONFIG_TIFM_CORE is not set | ||
777 | 809 | ||
778 | # | 810 | # |
779 | # Multimedia devices | 811 | # Multimedia devices |
780 | # | 812 | # |
781 | # CONFIG_VIDEO_DEV is not set | 813 | # CONFIG_VIDEO_DEV is not set |
782 | CONFIG_VIDEO_V4L2=y | ||
783 | 814 | ||
784 | # | 815 | # |
785 | # Digital Video Broadcasting Devices | 816 | # Digital Video Broadcasting Devices |
@@ -893,6 +924,9 @@ CONFIG_XFS_FS=m | |||
893 | CONFIG_XFS_SECURITY=y | 924 | CONFIG_XFS_SECURITY=y |
894 | CONFIG_XFS_POSIX_ACL=y | 925 | CONFIG_XFS_POSIX_ACL=y |
895 | # CONFIG_XFS_RT is not set | 926 | # CONFIG_XFS_RT is not set |
927 | CONFIG_GFS2_FS=m | ||
928 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
929 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
896 | # CONFIG_OCFS2_FS is not set | 930 | # CONFIG_OCFS2_FS is not set |
897 | # CONFIG_MINIX_FS is not set | 931 | # CONFIG_MINIX_FS is not set |
898 | # CONFIG_ROMFS_FS is not set | 932 | # CONFIG_ROMFS_FS is not set |
@@ -929,12 +963,14 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
929 | # | 963 | # |
930 | CONFIG_PROC_FS=y | 964 | CONFIG_PROC_FS=y |
931 | CONFIG_PROC_KCORE=y | 965 | CONFIG_PROC_KCORE=y |
966 | CONFIG_PROC_SYSCTL=y | ||
932 | CONFIG_SYSFS=y | 967 | CONFIG_SYSFS=y |
933 | CONFIG_TMPFS=y | 968 | CONFIG_TMPFS=y |
969 | CONFIG_TMPFS_POSIX_ACL=y | ||
934 | # CONFIG_HUGETLBFS is not set | 970 | # CONFIG_HUGETLBFS is not set |
935 | # CONFIG_HUGETLB_PAGE is not set | 971 | # CONFIG_HUGETLB_PAGE is not set |
936 | CONFIG_RAMFS=y | 972 | CONFIG_RAMFS=y |
937 | # CONFIG_CONFIGFS_FS is not set | 973 | CONFIG_CONFIGFS_FS=m |
938 | 974 | ||
939 | # | 975 | # |
940 | # Miscellaneous filesystems | 976 | # Miscellaneous filesystems |
@@ -988,6 +1024,7 @@ CONFIG_CIFS_POSIX=y | |||
988 | # CONFIG_CODA_FS is not set | 1024 | # CONFIG_CODA_FS is not set |
989 | # CONFIG_AFS_FS is not set | 1025 | # CONFIG_AFS_FS is not set |
990 | # CONFIG_9P_FS is not set | 1026 | # CONFIG_9P_FS is not set |
1027 | CONFIG_GENERIC_ACL=y | ||
991 | 1028 | ||
992 | # | 1029 | # |
993 | # Partition Types | 1030 | # Partition Types |
@@ -1040,6 +1077,12 @@ CONFIG_NLS_ISO8859_1=y | |||
1040 | # CONFIG_NLS_UTF8 is not set | 1077 | # CONFIG_NLS_UTF8 is not set |
1041 | 1078 | ||
1042 | # | 1079 | # |
1080 | # Distributed Lock Manager | ||
1081 | # | ||
1082 | CONFIG_DLM=m | ||
1083 | # CONFIG_DLM_DEBUG is not set | ||
1084 | |||
1085 | # | ||
1043 | # iSeries device drivers | 1086 | # iSeries device drivers |
1044 | # | 1087 | # |
1045 | CONFIG_VIOCONS=y | 1088 | CONFIG_VIOCONS=y |
@@ -1073,6 +1116,7 @@ CONFIG_PLIST=y | |||
1073 | # Kernel hacking | 1116 | # Kernel hacking |
1074 | # | 1117 | # |
1075 | # CONFIG_PRINTK_TIME is not set | 1118 | # CONFIG_PRINTK_TIME is not set |
1119 | CONFIG_ENABLE_MUST_CHECK=y | ||
1076 | CONFIG_MAGIC_SYSRQ=y | 1120 | CONFIG_MAGIC_SYSRQ=y |
1077 | # CONFIG_UNUSED_SYMBOLS is not set | 1121 | # CONFIG_UNUSED_SYMBOLS is not set |
1078 | CONFIG_DEBUG_KERNEL=y | 1122 | CONFIG_DEBUG_KERNEL=y |
@@ -1091,6 +1135,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1091 | # CONFIG_DEBUG_INFO is not set | 1135 | # CONFIG_DEBUG_INFO is not set |
1092 | CONFIG_DEBUG_FS=y | 1136 | CONFIG_DEBUG_FS=y |
1093 | # CONFIG_DEBUG_VM is not set | 1137 | # CONFIG_DEBUG_VM is not set |
1138 | # CONFIG_DEBUG_LIST is not set | ||
1094 | # CONFIG_FORCED_INLINING is not set | 1139 | # CONFIG_FORCED_INLINING is not set |
1095 | # CONFIG_RCU_TORTURE_TEST is not set | 1140 | # CONFIG_RCU_TORTURE_TEST is not set |
1096 | CONFIG_DEBUG_STACKOVERFLOW=y | 1141 | CONFIG_DEBUG_STACKOVERFLOW=y |
@@ -1109,6 +1154,10 @@ CONFIG_IRQSTACKS=y | |||
1109 | # Cryptographic options | 1154 | # Cryptographic options |
1110 | # | 1155 | # |
1111 | CONFIG_CRYPTO=y | 1156 | CONFIG_CRYPTO=y |
1157 | CONFIG_CRYPTO_ALGAPI=y | ||
1158 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1159 | CONFIG_CRYPTO_HASH=y | ||
1160 | CONFIG_CRYPTO_MANAGER=m | ||
1112 | CONFIG_CRYPTO_HMAC=y | 1161 | CONFIG_CRYPTO_HMAC=y |
1113 | CONFIG_CRYPTO_NULL=m | 1162 | CONFIG_CRYPTO_NULL=m |
1114 | CONFIG_CRYPTO_MD4=m | 1163 | CONFIG_CRYPTO_MD4=m |
@@ -1118,9 +1167,12 @@ CONFIG_CRYPTO_SHA256=m | |||
1118 | CONFIG_CRYPTO_SHA512=m | 1167 | CONFIG_CRYPTO_SHA512=m |
1119 | CONFIG_CRYPTO_WP512=m | 1168 | CONFIG_CRYPTO_WP512=m |
1120 | CONFIG_CRYPTO_TGR192=m | 1169 | CONFIG_CRYPTO_TGR192=m |
1170 | CONFIG_CRYPTO_ECB=m | ||
1171 | CONFIG_CRYPTO_CBC=m | ||
1121 | CONFIG_CRYPTO_DES=y | 1172 | CONFIG_CRYPTO_DES=y |
1122 | CONFIG_CRYPTO_BLOWFISH=m | 1173 | CONFIG_CRYPTO_BLOWFISH=m |
1123 | CONFIG_CRYPTO_TWOFISH=m | 1174 | CONFIG_CRYPTO_TWOFISH=m |
1175 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1124 | CONFIG_CRYPTO_SERPENT=m | 1176 | CONFIG_CRYPTO_SERPENT=m |
1125 | CONFIG_CRYPTO_AES=m | 1177 | CONFIG_CRYPTO_AES=m |
1126 | CONFIG_CRYPTO_CAST5=m | 1178 | CONFIG_CRYPTO_CAST5=m |
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig index 44175fb7adec..9828663652e9 100644 --- a/arch/powerpc/configs/pseries_defconfig +++ b/arch/powerpc/configs/pseries_defconfig | |||
@@ -506,7 +506,7 @@ CONFIG_SCSI_SAS_ATTRS=m | |||
506 | # CONFIG_MEGARAID_NEWGEN is not set | 506 | # CONFIG_MEGARAID_NEWGEN is not set |
507 | # CONFIG_MEGARAID_LEGACY is not set | 507 | # CONFIG_MEGARAID_LEGACY is not set |
508 | # CONFIG_MEGARAID_SAS is not set | 508 | # CONFIG_MEGARAID_SAS is not set |
509 | # CONFIG_ATA is not set | 509 | CONFIG_ATA=y |
510 | # CONFIG_SCSI_HPTIOP is not set | 510 | # CONFIG_SCSI_HPTIOP is not set |
511 | # CONFIG_SCSI_BUSLOGIC is not set | 511 | # CONFIG_SCSI_BUSLOGIC is not set |
512 | # CONFIG_SCSI_DMX3191D is not set | 512 | # CONFIG_SCSI_DMX3191D is not set |
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c index 124dbcba94a8..da9fe254eb94 100644 --- a/arch/powerpc/kernel/ibmebus.c +++ b/arch/powerpc/kernel/ibmebus.c | |||
@@ -319,7 +319,7 @@ EXPORT_SYMBOL(ibmebus_unregister_driver); | |||
319 | 319 | ||
320 | int ibmebus_request_irq(struct ibmebus_dev *dev, | 320 | int ibmebus_request_irq(struct ibmebus_dev *dev, |
321 | u32 ist, | 321 | u32 ist, |
322 | irqreturn_t (*handler)(int, void*, struct pt_regs *), | 322 | irqreturn_t (*handler)(int, void*), |
323 | unsigned long irq_flags, const char * devname, | 323 | unsigned long irq_flags, const char * devname, |
324 | void *dev_id) | 324 | void *dev_id) |
325 | { | 325 | { |
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c index ba0694071728..f88a2a675d90 100644 --- a/arch/powerpc/kernel/iommu.c +++ b/arch/powerpc/kernel/iommu.c | |||
@@ -75,7 +75,7 @@ static unsigned long iommu_range_alloc(struct iommu_table *tbl, | |||
75 | /* This allocator was derived from x86_64's bit string search */ | 75 | /* This allocator was derived from x86_64's bit string search */ |
76 | 76 | ||
77 | /* Sanity check */ | 77 | /* Sanity check */ |
78 | if (unlikely(npages) == 0) { | 78 | if (unlikely(npages == 0)) { |
79 | if (printk_ratelimit()) | 79 | if (printk_ratelimit()) |
80 | WARN_ON(1); | 80 | WARN_ON(1); |
81 | return DMA_ERROR_CODE; | 81 | return DMA_ERROR_CODE; |
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index 5deaab3090b4..5e37bf14ef2d 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
@@ -217,7 +217,7 @@ void do_IRQ(struct pt_regs *regs) | |||
217 | * The value -2 is for buggy hardware and means that this IRQ | 217 | * The value -2 is for buggy hardware and means that this IRQ |
218 | * has already been handled. -- Tom | 218 | * has already been handled. -- Tom |
219 | */ | 219 | */ |
220 | irq = ppc_md.get_irq(regs); | 220 | irq = ppc_md.get_irq(); |
221 | 221 | ||
222 | if (irq != NO_IRQ && irq != NO_IRQ_IGNORE) { | 222 | if (irq != NO_IRQ && irq != NO_IRQ_IGNORE) { |
223 | #ifdef CONFIG_IRQSTACKS | 223 | #ifdef CONFIG_IRQSTACKS |
@@ -572,8 +572,8 @@ unsigned int irq_create_mapping(struct irq_host *host, | |||
572 | } | 572 | } |
573 | EXPORT_SYMBOL_GPL(irq_create_mapping); | 573 | EXPORT_SYMBOL_GPL(irq_create_mapping); |
574 | 574 | ||
575 | extern unsigned int irq_create_of_mapping(struct device_node *controller, | 575 | unsigned int irq_create_of_mapping(struct device_node *controller, |
576 | u32 *intspec, unsigned int intsize) | 576 | u32 *intspec, unsigned int intsize) |
577 | { | 577 | { |
578 | struct irq_host *host; | 578 | struct irq_host *host; |
579 | irq_hw_number_t hwirq; | 579 | irq_hw_number_t hwirq; |
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index eb913f80bfb1..865b9648d0d5 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
@@ -724,7 +724,7 @@ static int __init early_init_dt_scan_chosen(unsigned long node, | |||
724 | strlcpy(cmd_line, p, min((int)l, COMMAND_LINE_SIZE)); | 724 | strlcpy(cmd_line, p, min((int)l, COMMAND_LINE_SIZE)); |
725 | 725 | ||
726 | #ifdef CONFIG_CMDLINE | 726 | #ifdef CONFIG_CMDLINE |
727 | if (l == 0 || (l == 1 && (*p) == 0)) | 727 | if (p == NULL || l == 0 || (l == 1 && (*p) == 0)) |
728 | strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE); | 728 | strlcpy(cmd_line, CONFIG_CMDLINE, COMMAND_LINE_SIZE); |
729 | #endif /* CONFIG_CMDLINE */ | 729 | #endif /* CONFIG_CMDLINE */ |
730 | 730 | ||
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index d210d0a5006b..5b59bc18dfe7 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c | |||
@@ -706,7 +706,7 @@ void timer_interrupt(struct pt_regs * regs) | |||
706 | 706 | ||
707 | #ifdef CONFIG_PPC_ISERIES | 707 | #ifdef CONFIG_PPC_ISERIES |
708 | if (hvlpevent_is_pending()) | 708 | if (hvlpevent_is_pending()) |
709 | process_hvlpevents(regs); | 709 | process_hvlpevents(); |
710 | #endif | 710 | #endif |
711 | 711 | ||
712 | #ifdef CONFIG_PPC64 | 712 | #ifdef CONFIG_PPC64 |
diff --git a/arch/powerpc/platforms/82xx/mpc82xx_ads.c b/arch/powerpc/platforms/82xx/mpc82xx_ads.c index 4276f087f26e..0cea42a8053d 100644 --- a/arch/powerpc/platforms/82xx/mpc82xx_ads.c +++ b/arch/powerpc/platforms/82xx/mpc82xx_ads.c | |||
@@ -384,8 +384,7 @@ struct hw_interrupt_type m82xx_pci_ic = { | |||
384 | }; | 384 | }; |
385 | 385 | ||
386 | static void | 386 | static void |
387 | m82xx_pci_irq_demux(unsigned int irq, struct irq_desc *desc, | 387 | m82xx_pci_irq_demux(unsigned int irq, struct irq_desc *desc) |
388 | struct pt_regs *regs) | ||
389 | { | 388 | { |
390 | unsigned long stat, mask, pend; | 389 | unsigned long stat, mask, pend; |
391 | int bit; | 390 | int bit; |
@@ -398,7 +397,7 @@ m82xx_pci_irq_demux(unsigned int irq, struct irq_desc *desc, | |||
398 | break; | 397 | break; |
399 | for (bit = 0; pend != 0; ++bit, pend <<= 1) { | 398 | for (bit = 0; pend != 0; ++bit, pend <<= 1) { |
400 | if (pend & 0x80000000) | 399 | if (pend & 0x80000000) |
401 | __do_IRQ(pci_int_base + bit, regs); | 400 | __do_IRQ(pci_int_base + bit); |
402 | } | 401 | } |
403 | } | 402 | } |
404 | } | 403 | } |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c index 8af7126fc6b9..d3e669d69c73 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c | |||
@@ -66,12 +66,11 @@ mpc85xx_pcibios_fixup(void) | |||
66 | 66 | ||
67 | #ifdef CONFIG_CPM2 | 67 | #ifdef CONFIG_CPM2 |
68 | 68 | ||
69 | static void cpm2_cascade(unsigned int irq, struct irq_desc *desc, | 69 | static void cpm2_cascade(unsigned int irq, struct irq_desc *desc) |
70 | struct pt_regs *regs) | ||
71 | { | 70 | { |
72 | int cascade_irq; | 71 | int cascade_irq; |
73 | 72 | ||
74 | while ((cascade_irq = cpm2_get_irq(regs)) >= 0) { | 73 | while ((cascade_irq = cpm2_get_irq()) >= 0) { |
75 | generic_handle_irq(cascade_irq); | 74 | generic_handle_irq(cascade_irq); |
76 | } | 75 | } |
77 | desc->chip->eoi(irq); | 76 | desc->chip->eoi(irq); |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c index b92fc6976a47..953cd5dd3f54 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c | |||
@@ -132,10 +132,9 @@ mpc85xx_cds_pcibios_fixup(void) | |||
132 | 132 | ||
133 | #ifdef CONFIG_PPC_I8259 | 133 | #ifdef CONFIG_PPC_I8259 |
134 | #warning The i8259 PIC support is currently broken | 134 | #warning The i8259 PIC support is currently broken |
135 | static void mpc85xx_8259_cascade(unsigned int irq, struct | 135 | static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc) |
136 | irq_desc *desc, struct pt_regs *regs) | ||
137 | { | 136 | { |
138 | unsigned int cascade_irq = i8259_irq(regs); | 137 | unsigned int cascade_irq = i8259_irq(); |
139 | 138 | ||
140 | if (cascade_irq != NO_IRQ) | 139 | if (cascade_irq != NO_IRQ) |
141 | generic_handle_irq(cascade_irq); | 140 | generic_handle_irq(cascade_irq); |
@@ -150,8 +149,10 @@ void __init mpc85xx_cds_pic_init(void) | |||
150 | struct mpic *mpic; | 149 | struct mpic *mpic; |
151 | struct resource r; | 150 | struct resource r; |
152 | struct device_node *np = NULL; | 151 | struct device_node *np = NULL; |
152 | #ifdef CONFIG_PPC_I8259 | ||
153 | struct device_node *cascade_node = NULL; | 153 | struct device_node *cascade_node = NULL; |
154 | int cascade_irq; | 154 | int cascade_irq; |
155 | #endif | ||
155 | 156 | ||
156 | np = of_find_node_by_type(np, "open-pic"); | 157 | np = of_find_node_by_type(np, "open-pic"); |
157 | 158 | ||
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c index 8218703babde..1a1c226ad4d9 100644 --- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c +++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c | |||
@@ -53,10 +53,9 @@ unsigned long pci_dram_offset = 0; | |||
53 | 53 | ||
54 | 54 | ||
55 | #ifdef CONFIG_PCI | 55 | #ifdef CONFIG_PCI |
56 | static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc, | 56 | static void mpc86xx_8259_cascade(unsigned int irq, struct irq_desc *desc) |
57 | struct pt_regs *regs) | ||
58 | { | 57 | { |
59 | unsigned int cascade_irq = i8259_irq(regs); | 58 | unsigned int cascade_irq = i8259_irq(); |
60 | if (cascade_irq != NO_IRQ) | 59 | if (cascade_irq != NO_IRQ) |
61 | generic_handle_irq(cascade_irq); | 60 | generic_handle_irq(cascade_irq); |
62 | desc->chip->eoi(irq); | 61 | desc->chip->eoi(irq); |
diff --git a/arch/powerpc/platforms/cell/interrupt.c b/arch/powerpc/platforms/cell/interrupt.c index f8768b096f02..a914c12b4060 100644 --- a/arch/powerpc/platforms/cell/interrupt.c +++ b/arch/powerpc/platforms/cell/interrupt.c | |||
@@ -98,8 +98,7 @@ static void iic_ioexc_eoi(unsigned int irq) | |||
98 | { | 98 | { |
99 | } | 99 | } |
100 | 100 | ||
101 | static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc, | 101 | static void iic_ioexc_cascade(unsigned int irq, struct irq_desc *desc) |
102 | struct pt_regs *regs) | ||
103 | { | 102 | { |
104 | struct cbe_iic_regs __iomem *node_iic = (void __iomem *)desc->handler_data; | 103 | struct cbe_iic_regs __iomem *node_iic = (void __iomem *)desc->handler_data; |
105 | unsigned int base = (irq & 0xffffff00) | IIC_IRQ_TYPE_IOEXC; | 104 | unsigned int base = (irq & 0xffffff00) | IIC_IRQ_TYPE_IOEXC; |
@@ -140,7 +139,7 @@ static struct irq_chip iic_ioexc_chip = { | |||
140 | }; | 139 | }; |
141 | 140 | ||
142 | /* Get an IRQ number from the pending state register of the IIC */ | 141 | /* Get an IRQ number from the pending state register of the IIC */ |
143 | static unsigned int iic_get_irq(struct pt_regs *regs) | 142 | static unsigned int iic_get_irq(void) |
144 | { | 143 | { |
145 | struct cbe_iic_pending_bits pending; | 144 | struct cbe_iic_pending_bits pending; |
146 | struct iic *iic; | 145 | struct iic *iic; |
diff --git a/arch/powerpc/platforms/cell/spu_base.c b/arch/powerpc/platforms/cell/spu_base.c index ac5f12662dbb..ccfd0c4db874 100644 --- a/arch/powerpc/platforms/cell/spu_base.c +++ b/arch/powerpc/platforms/cell/spu_base.c | |||
@@ -147,7 +147,7 @@ static int __spu_trap_data_map(struct spu *spu, unsigned long ea, u64 dsisr) | |||
147 | } | 147 | } |
148 | 148 | ||
149 | static irqreturn_t | 149 | static irqreturn_t |
150 | spu_irq_class_0(int irq, void *data, struct pt_regs *regs) | 150 | spu_irq_class_0(int irq, void *data) |
151 | { | 151 | { |
152 | struct spu *spu; | 152 | struct spu *spu; |
153 | 153 | ||
@@ -186,7 +186,7 @@ spu_irq_class_0_bottom(struct spu *spu) | |||
186 | EXPORT_SYMBOL_GPL(spu_irq_class_0_bottom); | 186 | EXPORT_SYMBOL_GPL(spu_irq_class_0_bottom); |
187 | 187 | ||
188 | static irqreturn_t | 188 | static irqreturn_t |
189 | spu_irq_class_1(int irq, void *data, struct pt_regs *regs) | 189 | spu_irq_class_1(int irq, void *data) |
190 | { | 190 | { |
191 | struct spu *spu; | 191 | struct spu *spu; |
192 | unsigned long stat, mask, dar, dsisr; | 192 | unsigned long stat, mask, dar, dsisr; |
@@ -224,7 +224,7 @@ spu_irq_class_1(int irq, void *data, struct pt_regs *regs) | |||
224 | EXPORT_SYMBOL_GPL(spu_irq_class_1_bottom); | 224 | EXPORT_SYMBOL_GPL(spu_irq_class_1_bottom); |
225 | 225 | ||
226 | static irqreturn_t | 226 | static irqreturn_t |
227 | spu_irq_class_2(int irq, void *data, struct pt_regs *regs) | 227 | spu_irq_class_2(int irq, void *data) |
228 | { | 228 | { |
229 | struct spu *spu; | 229 | struct spu *spu; |
230 | unsigned long stat; | 230 | unsigned long stat; |
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c index 35cd7a5f6834..cae3d13229b9 100644 --- a/arch/powerpc/platforms/chrp/setup.c +++ b/arch/powerpc/platforms/chrp/setup.c | |||
@@ -70,7 +70,7 @@ unsigned long event_scan_interval; | |||
70 | * has to include <linux/interrupt.h> (to get irqreturn_t), which | 70 | * has to include <linux/interrupt.h> (to get irqreturn_t), which |
71 | * causes all sorts of problems. -- paulus | 71 | * causes all sorts of problems. -- paulus |
72 | */ | 72 | */ |
73 | extern irqreturn_t xmon_irq(int, void *, struct pt_regs *); | 73 | extern irqreturn_t xmon_irq(int, void *); |
74 | 74 | ||
75 | extern unsigned long loops_per_jiffy; | 75 | extern unsigned long loops_per_jiffy; |
76 | 76 | ||
@@ -335,10 +335,9 @@ chrp_event_scan(unsigned long unused) | |||
335 | jiffies + event_scan_interval); | 335 | jiffies + event_scan_interval); |
336 | } | 336 | } |
337 | 337 | ||
338 | static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc, | 338 | static void chrp_8259_cascade(unsigned int irq, struct irq_desc *desc) |
339 | struct pt_regs *regs) | ||
340 | { | 339 | { |
341 | unsigned int cascade_irq = i8259_irq(regs); | 340 | unsigned int cascade_irq = i8259_irq(); |
342 | if (cascade_irq != NO_IRQ) | 341 | if (cascade_irq != NO_IRQ) |
343 | generic_handle_irq(cascade_irq); | 342 | generic_handle_irq(cascade_irq); |
344 | desc->chip->eoi(irq); | 343 | desc->chip->eoi(irq); |
diff --git a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c index cb6f084844f2..bdb475c65cba 100644 --- a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c +++ b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c | |||
@@ -61,8 +61,7 @@ pci_dram_offset = MPC7448_HPC2_PCI_MEM_OFFSET; | |||
61 | extern int tsi108_setup_pci(struct device_node *dev); | 61 | extern int tsi108_setup_pci(struct device_node *dev); |
62 | extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val); | 62 | extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val); |
63 | extern void tsi108_pci_int_init(void); | 63 | extern void tsi108_pci_int_init(void); |
64 | extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc, | 64 | extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc); |
65 | struct pt_regs *regs); | ||
66 | 65 | ||
67 | int mpc7448_hpc2_exclude_device(u_char bus, u_char devfn) | 66 | int mpc7448_hpc2_exclude_device(u_char bus, u_char devfn) |
68 | { | 67 | { |
@@ -200,7 +199,7 @@ static void __init mpc7448_hpc2_init_IRQ(void) | |||
200 | tsi_pic = of_find_node_by_type(NULL, "open-pic"); | 199 | tsi_pic = of_find_node_by_type(NULL, "open-pic"); |
201 | if (tsi_pic) { | 200 | if (tsi_pic) { |
202 | unsigned int size; | 201 | unsigned int size; |
203 | void *prop = get_property(tsi_pic, "reg", &size); | 202 | const void *prop = get_property(tsi_pic, "reg", &size); |
204 | mpic_paddr = of_translate_address(tsi_pic, prop); | 203 | mpic_paddr = of_translate_address(tsi_pic, prop); |
205 | } | 204 | } |
206 | 205 | ||
diff --git a/arch/powerpc/platforms/iseries/irq.c b/arch/powerpc/platforms/iseries/irq.c index e32446877e78..5225abfafd9b 100644 --- a/arch/powerpc/platforms/iseries/irq.c +++ b/arch/powerpc/platforms/iseries/irq.c | |||
@@ -43,10 +43,7 @@ | |||
43 | #include "irq.h" | 43 | #include "irq.h" |
44 | #include "pci.h" | 44 | #include "pci.h" |
45 | #include "call_pci.h" | 45 | #include "call_pci.h" |
46 | 46 | #include "smp.h" | |
47 | #if defined(CONFIG_SMP) | ||
48 | extern void iSeries_smp_message_recv(struct pt_regs *); | ||
49 | #endif | ||
50 | 47 | ||
51 | #ifdef CONFIG_PCI | 48 | #ifdef CONFIG_PCI |
52 | 49 | ||
@@ -88,7 +85,7 @@ static DEFINE_SPINLOCK(pending_irqs_lock); | |||
88 | static int num_pending_irqs; | 85 | static int num_pending_irqs; |
89 | static int pending_irqs[NR_IRQS]; | 86 | static int pending_irqs[NR_IRQS]; |
90 | 87 | ||
91 | static void int_received(struct pci_event *event, struct pt_regs *regs) | 88 | static void int_received(struct pci_event *event) |
92 | { | 89 | { |
93 | int irq; | 90 | int irq; |
94 | 91 | ||
@@ -146,11 +143,11 @@ static void int_received(struct pci_event *event, struct pt_regs *regs) | |||
146 | } | 143 | } |
147 | } | 144 | } |
148 | 145 | ||
149 | static void pci_event_handler(struct HvLpEvent *event, struct pt_regs *regs) | 146 | static void pci_event_handler(struct HvLpEvent *event) |
150 | { | 147 | { |
151 | if (event && (event->xType == HvLpEvent_Type_PciIo)) { | 148 | if (event && (event->xType == HvLpEvent_Type_PciIo)) { |
152 | if (hvlpevent_is_int(event)) | 149 | if (hvlpevent_is_int(event)) |
153 | int_received((struct pci_event *)event, regs); | 150 | int_received((struct pci_event *)event); |
154 | else | 151 | else |
155 | printk(KERN_ERR | 152 | printk(KERN_ERR |
156 | "pci_event_handler: unexpected ack received\n"); | 153 | "pci_event_handler: unexpected ack received\n"); |
@@ -308,18 +305,18 @@ int __init iSeries_allocate_IRQ(HvBusNumber bus, | |||
308 | /* | 305 | /* |
309 | * Get the next pending IRQ. | 306 | * Get the next pending IRQ. |
310 | */ | 307 | */ |
311 | unsigned int iSeries_get_irq(struct pt_regs *regs) | 308 | unsigned int iSeries_get_irq(void) |
312 | { | 309 | { |
313 | int irq = NO_IRQ_IGNORE; | 310 | int irq = NO_IRQ_IGNORE; |
314 | 311 | ||
315 | #ifdef CONFIG_SMP | 312 | #ifdef CONFIG_SMP |
316 | if (get_lppaca()->int_dword.fields.ipi_cnt) { | 313 | if (get_lppaca()->int_dword.fields.ipi_cnt) { |
317 | get_lppaca()->int_dword.fields.ipi_cnt = 0; | 314 | get_lppaca()->int_dword.fields.ipi_cnt = 0; |
318 | iSeries_smp_message_recv(regs); | 315 | iSeries_smp_message_recv(); |
319 | } | 316 | } |
320 | #endif /* CONFIG_SMP */ | 317 | #endif /* CONFIG_SMP */ |
321 | if (hvlpevent_is_pending()) | 318 | if (hvlpevent_is_pending()) |
322 | process_hvlpevents(regs); | 319 | process_hvlpevents(); |
323 | 320 | ||
324 | #ifdef CONFIG_PCI | 321 | #ifdef CONFIG_PCI |
325 | if (num_pending_irqs) { | 322 | if (num_pending_irqs) { |
diff --git a/arch/powerpc/platforms/iseries/irq.h b/arch/powerpc/platforms/iseries/irq.h index 1ee8985140e5..69f1b437fc7b 100644 --- a/arch/powerpc/platforms/iseries/irq.h +++ b/arch/powerpc/platforms/iseries/irq.h | |||
@@ -4,6 +4,6 @@ | |||
4 | extern void iSeries_init_IRQ(void); | 4 | extern void iSeries_init_IRQ(void); |
5 | extern int iSeries_allocate_IRQ(HvBusNumber, HvSubBusNumber, u32); | 5 | extern int iSeries_allocate_IRQ(HvBusNumber, HvSubBusNumber, u32); |
6 | extern void iSeries_activate_IRQs(void); | 6 | extern void iSeries_activate_IRQs(void); |
7 | extern unsigned int iSeries_get_irq(struct pt_regs *); | 7 | extern unsigned int iSeries_get_irq(void); |
8 | 8 | ||
9 | #endif /* _ISERIES_IRQ_H */ | 9 | #endif /* _ISERIES_IRQ_H */ |
diff --git a/arch/powerpc/platforms/iseries/lpevents.c b/arch/powerpc/platforms/iseries/lpevents.c index 98c1c2440aad..e3e929e1b460 100644 --- a/arch/powerpc/platforms/iseries/lpevents.c +++ b/arch/powerpc/platforms/iseries/lpevents.c | |||
@@ -116,7 +116,7 @@ static void hvlpevent_clear_valid(struct HvLpEvent * event) | |||
116 | hvlpevent_invalidate(event); | 116 | hvlpevent_invalidate(event); |
117 | } | 117 | } |
118 | 118 | ||
119 | void process_hvlpevents(struct pt_regs *regs) | 119 | void process_hvlpevents(void) |
120 | { | 120 | { |
121 | struct HvLpEvent * event; | 121 | struct HvLpEvent * event; |
122 | 122 | ||
@@ -144,7 +144,7 @@ void process_hvlpevents(struct pt_regs *regs) | |||
144 | __get_cpu_var(hvlpevent_counts)[event->xType]++; | 144 | __get_cpu_var(hvlpevent_counts)[event->xType]++; |
145 | if (event->xType < HvLpEvent_Type_NumTypes && | 145 | if (event->xType < HvLpEvent_Type_NumTypes && |
146 | lpEventHandler[event->xType]) | 146 | lpEventHandler[event->xType]) |
147 | lpEventHandler[event->xType](event, regs); | 147 | lpEventHandler[event->xType](event); |
148 | else | 148 | else |
149 | printk(KERN_INFO "Unexpected Lp Event type=%d\n", event->xType ); | 149 | printk(KERN_INFO "Unexpected Lp Event type=%d\n", event->xType ); |
150 | 150 | ||
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c index 1983b640bac1..b5737d68d6c4 100644 --- a/arch/powerpc/platforms/iseries/mf.c +++ b/arch/powerpc/platforms/iseries/mf.c | |||
@@ -513,7 +513,7 @@ static void handle_ack(struct io_mf_lp_event *event) | |||
513 | * parse it enough to know if it is an interrupt or an | 513 | * parse it enough to know if it is an interrupt or an |
514 | * acknowledge. | 514 | * acknowledge. |
515 | */ | 515 | */ |
516 | static void hv_handler(struct HvLpEvent *event, struct pt_regs *regs) | 516 | static void hv_handler(struct HvLpEvent *event) |
517 | { | 517 | { |
518 | if ((event != NULL) && (event->xType == HvLpEvent_Type_MachineFac)) { | 518 | if ((event != NULL) && (event->xType == HvLpEvent_Type_MachineFac)) { |
519 | if (hvlpevent_is_ack(event)) | 519 | if (hvlpevent_is_ack(event)) |
@@ -847,7 +847,7 @@ static int mf_get_boot_rtc(struct rtc_time *tm) | |||
847 | /* We need to poll here as we are not yet taking interrupts */ | 847 | /* We need to poll here as we are not yet taking interrupts */ |
848 | while (rtc_data.busy) { | 848 | while (rtc_data.busy) { |
849 | if (hvlpevent_is_pending()) | 849 | if (hvlpevent_is_pending()) |
850 | process_hvlpevents(NULL); | 850 | process_hvlpevents(); |
851 | } | 851 | } |
852 | return rtc_set_tm(rtc_data.rc, rtc_data.ce_msg.ce_msg, tm); | 852 | return rtc_set_tm(rtc_data.rc, rtc_data.ce_msg.ce_msg, tm); |
853 | } | 853 | } |
diff --git a/arch/powerpc/platforms/iseries/smp.c b/arch/powerpc/platforms/iseries/smp.c index 2eb095edb472..aee5908df700 100644 --- a/arch/powerpc/platforms/iseries/smp.c +++ b/arch/powerpc/platforms/iseries/smp.c | |||
@@ -43,9 +43,11 @@ | |||
43 | #include <asm/cputable.h> | 43 | #include <asm/cputable.h> |
44 | #include <asm/system.h> | 44 | #include <asm/system.h> |
45 | 45 | ||
46 | #include "smp.h" | ||
47 | |||
46 | static unsigned long iSeries_smp_message[NR_CPUS]; | 48 | static unsigned long iSeries_smp_message[NR_CPUS]; |
47 | 49 | ||
48 | void iSeries_smp_message_recv(struct pt_regs *regs) | 50 | void iSeries_smp_message_recv(void) |
49 | { | 51 | { |
50 | int cpu = smp_processor_id(); | 52 | int cpu = smp_processor_id(); |
51 | int msg; | 53 | int msg; |
@@ -55,7 +57,7 @@ void iSeries_smp_message_recv(struct pt_regs *regs) | |||
55 | 57 | ||
56 | for (msg = 0; msg < 4; msg++) | 58 | for (msg = 0; msg < 4; msg++) |
57 | if (test_and_clear_bit(msg, &iSeries_smp_message[cpu])) | 59 | if (test_and_clear_bit(msg, &iSeries_smp_message[cpu])) |
58 | smp_message_recv(msg, regs); | 60 | smp_message_recv(msg); |
59 | } | 61 | } |
60 | 62 | ||
61 | static inline void smp_iSeries_do_message(int cpu, int msg) | 63 | static inline void smp_iSeries_do_message(int cpu, int msg) |
diff --git a/arch/powerpc/platforms/iseries/smp.h b/arch/powerpc/platforms/iseries/smp.h new file mode 100644 index 000000000000..d501f7de01e7 --- /dev/null +++ b/arch/powerpc/platforms/iseries/smp.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef _PLATFORMS_ISERIES_SMP_H | ||
2 | #define _PLATFORMS_ISERIES_SMP_H | ||
3 | |||
4 | extern void iSeries_smp_message_recv(void); | ||
5 | |||
6 | #endif /* _PLATFORMS_ISERIES_SMP_H */ | ||
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c index 9baa4ee82592..04e07e5da0c1 100644 --- a/arch/powerpc/platforms/iseries/viopath.c +++ b/arch/powerpc/platforms/iseries/viopath.c | |||
@@ -378,7 +378,7 @@ void vio_set_hostlp(void) | |||
378 | } | 378 | } |
379 | EXPORT_SYMBOL(vio_set_hostlp); | 379 | EXPORT_SYMBOL(vio_set_hostlp); |
380 | 380 | ||
381 | static void vio_handleEvent(struct HvLpEvent *event, struct pt_regs *regs) | 381 | static void vio_handleEvent(struct HvLpEvent *event) |
382 | { | 382 | { |
383 | HvLpIndex remoteLp; | 383 | HvLpIndex remoteLp; |
384 | int subtype = (event->xSubtype & VIOMAJOR_SUBTYPE_MASK) | 384 | int subtype = (event->xSubtype & VIOMAJOR_SUBTYPE_MASK) |
diff --git a/arch/powerpc/platforms/pasemi/pci.c b/arch/powerpc/platforms/pasemi/pci.c index 4679c5230413..39020c1fa13d 100644 --- a/arch/powerpc/platforms/pasemi/pci.c +++ b/arch/powerpc/platforms/pasemi/pci.c | |||
@@ -35,17 +35,17 @@ | |||
35 | 35 | ||
36 | #define CONFIG_OFFSET_VALID(off) ((off) < 4096) | 36 | #define CONFIG_OFFSET_VALID(off) ((off) < 4096) |
37 | 37 | ||
38 | static unsigned long pa_pxp_cfg_addr(struct pci_controller *hose, | 38 | static void volatile __iomem *pa_pxp_cfg_addr(struct pci_controller *hose, |
39 | u8 bus, u8 devfn, int offset) | 39 | u8 bus, u8 devfn, int offset) |
40 | { | 40 | { |
41 | return ((unsigned long)hose->cfg_data) + PA_PXP_CFA(bus, devfn, offset); | 41 | return hose->cfg_data + PA_PXP_CFA(bus, devfn, offset); |
42 | } | 42 | } |
43 | 43 | ||
44 | static int pa_pxp_read_config(struct pci_bus *bus, unsigned int devfn, | 44 | static int pa_pxp_read_config(struct pci_bus *bus, unsigned int devfn, |
45 | int offset, int len, u32 *val) | 45 | int offset, int len, u32 *val) |
46 | { | 46 | { |
47 | struct pci_controller *hose; | 47 | struct pci_controller *hose; |
48 | unsigned long addr; | 48 | void volatile __iomem *addr; |
49 | 49 | ||
50 | hose = pci_bus_to_host(bus); | 50 | hose = pci_bus_to_host(bus); |
51 | if (!hose) | 51 | if (!hose) |
@@ -62,13 +62,13 @@ static int pa_pxp_read_config(struct pci_bus *bus, unsigned int devfn, | |||
62 | */ | 62 | */ |
63 | switch (len) { | 63 | switch (len) { |
64 | case 1: | 64 | case 1: |
65 | *val = in_8((u8 *)addr); | 65 | *val = in_8(addr); |
66 | break; | 66 | break; |
67 | case 2: | 67 | case 2: |
68 | *val = in_le16((u16 *)addr); | 68 | *val = in_le16(addr); |
69 | break; | 69 | break; |
70 | default: | 70 | default: |
71 | *val = in_le32((u32 *)addr); | 71 | *val = in_le32(addr); |
72 | break; | 72 | break; |
73 | } | 73 | } |
74 | 74 | ||
@@ -79,7 +79,7 @@ static int pa_pxp_write_config(struct pci_bus *bus, unsigned int devfn, | |||
79 | int offset, int len, u32 val) | 79 | int offset, int len, u32 val) |
80 | { | 80 | { |
81 | struct pci_controller *hose; | 81 | struct pci_controller *hose; |
82 | unsigned long addr; | 82 | void volatile __iomem *addr; |
83 | 83 | ||
84 | hose = pci_bus_to_host(bus); | 84 | hose = pci_bus_to_host(bus); |
85 | if (!hose) | 85 | if (!hose) |
@@ -96,16 +96,16 @@ static int pa_pxp_write_config(struct pci_bus *bus, unsigned int devfn, | |||
96 | */ | 96 | */ |
97 | switch (len) { | 97 | switch (len) { |
98 | case 1: | 98 | case 1: |
99 | out_8((u8 *)addr, val); | 99 | out_8(addr, val); |
100 | (void) in_8((u8 *)addr); | 100 | (void) in_8(addr); |
101 | break; | 101 | break; |
102 | case 2: | 102 | case 2: |
103 | out_le16((u16 *)addr, val); | 103 | out_le16(addr, val); |
104 | (void) in_le16((u16 *)addr); | 104 | (void) in_le16(addr); |
105 | break; | 105 | break; |
106 | default: | 106 | default: |
107 | out_le32((u32 *)addr, val); | 107 | out_le32(addr, val); |
108 | (void) in_le32((u32 *)addr); | 108 | (void) in_le32(addr); |
109 | break; | 109 | break; |
110 | } | 110 | } |
111 | return PCIBIOS_SUCCESSFUL; | 111 | return PCIBIOS_SUCCESSFUL; |
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c index 5da677835c00..39db12890214 100644 --- a/arch/powerpc/platforms/powermac/pic.c +++ b/arch/powerpc/platforms/powermac/pic.c | |||
@@ -42,7 +42,7 @@ | |||
42 | * has to include <linux/interrupt.h> (to get irqreturn_t), which | 42 | * has to include <linux/interrupt.h> (to get irqreturn_t), which |
43 | * causes all sorts of problems. -- paulus | 43 | * causes all sorts of problems. -- paulus |
44 | */ | 44 | */ |
45 | extern irqreturn_t xmon_irq(int, void *, struct pt_regs *); | 45 | extern irqreturn_t xmon_irq(int, void *); |
46 | 46 | ||
47 | #ifdef CONFIG_PPC32 | 47 | #ifdef CONFIG_PPC32 |
48 | struct pmac_irq_hw { | 48 | struct pmac_irq_hw { |
@@ -210,7 +210,7 @@ static struct irq_chip pmac_pic = { | |||
210 | .retrigger = pmac_retrigger, | 210 | .retrigger = pmac_retrigger, |
211 | }; | 211 | }; |
212 | 212 | ||
213 | static irqreturn_t gatwick_action(int cpl, void *dev_id, struct pt_regs *regs) | 213 | static irqreturn_t gatwick_action(int cpl, void *dev_id) |
214 | { | 214 | { |
215 | unsigned long flags; | 215 | unsigned long flags; |
216 | int irq, bits; | 216 | int irq, bits; |
@@ -235,18 +235,18 @@ static irqreturn_t gatwick_action(int cpl, void *dev_id, struct pt_regs *regs) | |||
235 | return rc; | 235 | return rc; |
236 | } | 236 | } |
237 | 237 | ||
238 | static unsigned int pmac_pic_get_irq(struct pt_regs *regs) | 238 | static unsigned int pmac_pic_get_irq(void) |
239 | { | 239 | { |
240 | int irq; | 240 | int irq; |
241 | unsigned long bits = 0; | 241 | unsigned long bits = 0; |
242 | unsigned long flags; | 242 | unsigned long flags; |
243 | 243 | ||
244 | #ifdef CONFIG_SMP | 244 | #ifdef CONFIG_SMP |
245 | void psurge_smp_message_recv(struct pt_regs *); | 245 | void psurge_smp_message_recv(void); |
246 | 246 | ||
247 | /* IPI's are a hack on the powersurge -- Cort */ | 247 | /* IPI's are a hack on the powersurge -- Cort */ |
248 | if ( smp_processor_id() != 0 ) { | 248 | if ( smp_processor_id() != 0 ) { |
249 | psurge_smp_message_recv(regs); | 249 | psurge_smp_message_recv(); |
250 | return NO_IRQ_IGNORE; /* ignore, already handled */ | 250 | return NO_IRQ_IGNORE; /* ignore, already handled */ |
251 | } | 251 | } |
252 | #endif /* CONFIG_SMP */ | 252 | #endif /* CONFIG_SMP */ |
@@ -444,7 +444,7 @@ static void pmac_u3_cascade(unsigned int irq, struct irq_desc *desc) | |||
444 | { | 444 | { |
445 | struct mpic *mpic = desc->handler_data; | 445 | struct mpic *mpic = desc->handler_data; |
446 | 446 | ||
447 | unsigned int cascade_irq = mpic_get_one_irq(mpic, get_irq_regs()); | 447 | unsigned int cascade_irq = mpic_get_one_irq(mpic); |
448 | if (cascade_irq != NO_IRQ) | 448 | if (cascade_irq != NO_IRQ) |
449 | generic_handle_irq(cascade_irq); | 449 | generic_handle_irq(cascade_irq); |
450 | desc->chip->eoi(irq); | 450 | desc->chip->eoi(irq); |
diff --git a/arch/powerpc/platforms/powermac/pic.h b/arch/powerpc/platforms/powermac/pic.h index 664103dfeef9..c44c89f5e532 100644 --- a/arch/powerpc/platforms/powermac/pic.h +++ b/arch/powerpc/platforms/powermac/pic.h | |||
@@ -5,7 +5,7 @@ | |||
5 | 5 | ||
6 | extern struct hw_interrupt_type pmac_pic; | 6 | extern struct hw_interrupt_type pmac_pic; |
7 | 7 | ||
8 | void pmac_pic_init(void); | 8 | extern void pmac_pic_init(void); |
9 | int pmac_get_irq(struct pt_regs *regs); | 9 | extern int pmac_get_irq(void); |
10 | 10 | ||
11 | #endif /* __PPC_PLATFORMS_PMAC_PIC_H */ | 11 | #endif /* __PPC_PLATFORMS_PMAC_PIC_H */ |
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c index 1949b657b092..574cd205b302 100644 --- a/arch/powerpc/platforms/powermac/smp.c +++ b/arch/powerpc/platforms/powermac/smp.c | |||
@@ -160,7 +160,7 @@ static inline void psurge_clr_ipi(int cpu) | |||
160 | */ | 160 | */ |
161 | static unsigned long psurge_smp_message[NR_CPUS]; | 161 | static unsigned long psurge_smp_message[NR_CPUS]; |
162 | 162 | ||
163 | void psurge_smp_message_recv(struct pt_regs *regs) | 163 | void psurge_smp_message_recv(void) |
164 | { | 164 | { |
165 | int cpu = smp_processor_id(); | 165 | int cpu = smp_processor_id(); |
166 | int msg; | 166 | int msg; |
@@ -174,12 +174,12 @@ void psurge_smp_message_recv(struct pt_regs *regs) | |||
174 | /* make sure there is a message there */ | 174 | /* make sure there is a message there */ |
175 | for (msg = 0; msg < 4; msg++) | 175 | for (msg = 0; msg < 4; msg++) |
176 | if (test_and_clear_bit(msg, &psurge_smp_message[cpu])) | 176 | if (test_and_clear_bit(msg, &psurge_smp_message[cpu])) |
177 | smp_message_recv(msg, regs); | 177 | smp_message_recv(msg); |
178 | } | 178 | } |
179 | 179 | ||
180 | irqreturn_t psurge_primary_intr(int irq, void *d, struct pt_regs *regs) | 180 | irqreturn_t psurge_primary_intr(int irq, void *d) |
181 | { | 181 | { |
182 | psurge_smp_message_recv(regs); | 182 | psurge_smp_message_recv(); |
183 | return IRQ_HANDLED; | 183 | return IRQ_HANDLED; |
184 | } | 184 | } |
185 | 185 | ||
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c index bbf2e34dc358..d24ba547e53f 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c | |||
@@ -267,7 +267,8 @@ static void iommu_table_setparms(struct pci_controller *phb, | |||
267 | struct iommu_table *tbl) | 267 | struct iommu_table *tbl) |
268 | { | 268 | { |
269 | struct device_node *node; | 269 | struct device_node *node; |
270 | const unsigned long *basep, *sizep; | 270 | const unsigned long *basep; |
271 | const u32 *sizep; | ||
271 | 272 | ||
272 | node = (struct device_node *)phb->arch_data; | 273 | node = (struct device_node *)phb->arch_data; |
273 | 274 | ||
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c index ad9aec2c6fee..89a8119f988d 100644 --- a/arch/powerpc/platforms/pseries/setup.c +++ b/arch/powerpc/platforms/pseries/setup.c | |||
@@ -123,7 +123,7 @@ static void __init fwnmi_init(void) | |||
123 | 123 | ||
124 | void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc) | 124 | void pseries_8259_cascade(unsigned int irq, struct irq_desc *desc) |
125 | { | 125 | { |
126 | unsigned int cascade_irq = i8259_irq(get_irq_regs()); | 126 | unsigned int cascade_irq = i8259_irq(); |
127 | if (cascade_irq != NO_IRQ) | 127 | if (cascade_irq != NO_IRQ) |
128 | generic_handle_irq(cascade_irq); | 128 | generic_handle_irq(cascade_irq); |
129 | desc->chip->eoi(irq); | 129 | desc->chip->eoi(irq); |
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index f6bd2f285153..d071abe78ab1 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c | |||
@@ -308,14 +308,14 @@ static inline unsigned int xics_remap_irq(unsigned int vec) | |||
308 | return NO_IRQ; | 308 | return NO_IRQ; |
309 | } | 309 | } |
310 | 310 | ||
311 | static unsigned int xics_get_irq_direct(struct pt_regs *regs) | 311 | static unsigned int xics_get_irq_direct(void) |
312 | { | 312 | { |
313 | unsigned int cpu = smp_processor_id(); | 313 | unsigned int cpu = smp_processor_id(); |
314 | 314 | ||
315 | return xics_remap_irq(direct_xirr_info_get(cpu)); | 315 | return xics_remap_irq(direct_xirr_info_get(cpu)); |
316 | } | 316 | } |
317 | 317 | ||
318 | static unsigned int xics_get_irq_lpar(struct pt_regs *regs) | 318 | static unsigned int xics_get_irq_lpar(void) |
319 | { | 319 | { |
320 | unsigned int cpu = smp_processor_id(); | 320 | unsigned int cpu = smp_processor_id(); |
321 | 321 | ||
diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c index 28b018994746..767ee6651adc 100644 --- a/arch/powerpc/sysdev/cpm2_pic.c +++ b/arch/powerpc/sysdev/cpm2_pic.c | |||
@@ -147,7 +147,7 @@ static struct irq_chip cpm2_pic = { | |||
147 | .end = cpm2_end_irq, | 147 | .end = cpm2_end_irq, |
148 | }; | 148 | }; |
149 | 149 | ||
150 | unsigned int cpm2_get_irq(struct pt_regs *regs) | 150 | unsigned int cpm2_get_irq(void) |
151 | { | 151 | { |
152 | int irq; | 152 | int irq; |
153 | unsigned long bits; | 153 | unsigned long bits; |
diff --git a/arch/powerpc/sysdev/cpm2_pic.h b/arch/powerpc/sysdev/cpm2_pic.h index 3c513e5a688e..2840616529e4 100644 --- a/arch/powerpc/sysdev/cpm2_pic.h +++ b/arch/powerpc/sysdev/cpm2_pic.h | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | extern intctl_cpm2_t *cpm2_intctl; | 4 | extern intctl_cpm2_t *cpm2_intctl; |
5 | 5 | ||
6 | extern unsigned int cpm2_get_irq(struct pt_regs *regs); | 6 | extern unsigned int cpm2_get_irq(void); |
7 | 7 | ||
8 | extern void cpm2_pic_init(struct device_node*); | 8 | extern void cpm2_pic_init(struct device_node*); |
9 | 9 | ||
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index 7d759f1c26b1..dbe92ae20333 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c | |||
@@ -567,7 +567,7 @@ static int __init fs_enet_of_init(void) | |||
567 | struct resource r[4]; | 567 | struct resource r[4]; |
568 | struct device_node *phy, *mdio; | 568 | struct device_node *phy, *mdio; |
569 | struct fs_platform_info fs_enet_data; | 569 | struct fs_platform_info fs_enet_data; |
570 | const unsigned int *id, *phy_addr, phy_irq; | 570 | const unsigned int *id, *phy_addr, *phy_irq; |
571 | const void *mac_addr; | 571 | const void *mac_addr; |
572 | const phandle *ph; | 572 | const phandle *ph; |
573 | const char *model; | 573 | const char *model; |
@@ -641,7 +641,7 @@ static int __init fs_enet_of_init(void) | |||
641 | 641 | ||
642 | if (strstr(model, "FCC")) { | 642 | if (strstr(model, "FCC")) { |
643 | int fcc_index = *id - 1; | 643 | int fcc_index = *id - 1; |
644 | unsigned char* mdio_bb_prop; | 644 | const unsigned char *mdio_bb_prop; |
645 | 645 | ||
646 | fs_enet_data.dpram_offset = (u32)cpm_dpram_addr(0); | 646 | fs_enet_data.dpram_offset = (u32)cpm_dpram_addr(0); |
647 | fs_enet_data.rx_ring = 32; | 647 | fs_enet_data.rx_ring = 32; |
@@ -708,8 +708,9 @@ static int __init fs_enet_of_init(void) | |||
708 | ret = platform_device_add_data(fs_enet_dev, &fs_enet_data, | 708 | ret = platform_device_add_data(fs_enet_dev, &fs_enet_data, |
709 | sizeof(struct | 709 | sizeof(struct |
710 | fs_platform_info)); | 710 | fs_platform_info)); |
711 | if (ret) | 711 | if (ret) |
712 | goto unreg; | 712 | goto unreg; |
713 | } | ||
713 | } | 714 | } |
714 | return 0; | 715 | return 0; |
715 | 716 | ||
diff --git a/arch/powerpc/sysdev/i8259.c b/arch/powerpc/sysdev/i8259.c index 26a6a3becd66..0450265d73bb 100644 --- a/arch/powerpc/sysdev/i8259.c +++ b/arch/powerpc/sysdev/i8259.c | |||
@@ -34,7 +34,7 @@ static struct irq_host *i8259_host; | |||
34 | * which is called. It should be noted that polling is broken on some | 34 | * which is called. It should be noted that polling is broken on some |
35 | * IBM and Motorola PReP boxes so we must use the int-ack feature on them. | 35 | * IBM and Motorola PReP boxes so we must use the int-ack feature on them. |
36 | */ | 36 | */ |
37 | unsigned int i8259_irq(struct pt_regs *regs) | 37 | unsigned int i8259_irq(void) |
38 | { | 38 | { |
39 | int irq; | 39 | int irq; |
40 | int lock = 0; | 40 | int lock = 0; |
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c index 6ebdae8e6f69..bc4d4a7f9657 100644 --- a/arch/powerpc/sysdev/ipic.c +++ b/arch/powerpc/sysdev/ipic.c | |||
@@ -709,7 +709,7 @@ void ipic_clear_mcp_status(u32 mask) | |||
709 | } | 709 | } |
710 | 710 | ||
711 | /* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ | 711 | /* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ |
712 | unsigned int ipic_get_irq(struct pt_regs *regs) | 712 | unsigned int ipic_get_irq(void) |
713 | { | 713 | { |
714 | int irq; | 714 | int irq; |
715 | 715 | ||
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 195215560fd7..ba4833f57d47 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -1217,7 +1217,7 @@ void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask) | |||
1217 | mpic_physmask(cpu_mask & cpus_addr(cpu_online_map)[0])); | 1217 | mpic_physmask(cpu_mask & cpus_addr(cpu_online_map)[0])); |
1218 | } | 1218 | } |
1219 | 1219 | ||
1220 | unsigned int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs) | 1220 | unsigned int mpic_get_one_irq(struct mpic *mpic) |
1221 | { | 1221 | { |
1222 | u32 src; | 1222 | u32 src; |
1223 | 1223 | ||
@@ -1230,13 +1230,13 @@ unsigned int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs) | |||
1230 | return irq_linear_revmap(mpic->irqhost, src); | 1230 | return irq_linear_revmap(mpic->irqhost, src); |
1231 | } | 1231 | } |
1232 | 1232 | ||
1233 | unsigned int mpic_get_irq(struct pt_regs *regs) | 1233 | unsigned int mpic_get_irq(void) |
1234 | { | 1234 | { |
1235 | struct mpic *mpic = mpic_primary; | 1235 | struct mpic *mpic = mpic_primary; |
1236 | 1236 | ||
1237 | BUG_ON(mpic == NULL); | 1237 | BUG_ON(mpic == NULL); |
1238 | 1238 | ||
1239 | return mpic_get_one_irq(mpic, regs); | 1239 | return mpic_get_one_irq(mpic); |
1240 | } | 1240 | } |
1241 | 1241 | ||
1242 | 1242 | ||
diff --git a/arch/powerpc/sysdev/qe_lib/qe_ic.c b/arch/powerpc/sysdev/qe_lib/qe_ic.c index 0dec010bcbb5..6995f51b9488 100644 --- a/arch/powerpc/sysdev/qe_lib/qe_ic.c +++ b/arch/powerpc/sysdev/qe_lib/qe_ic.c | |||
@@ -300,7 +300,7 @@ static struct irq_host_ops qe_ic_host_ops = { | |||
300 | }; | 300 | }; |
301 | 301 | ||
302 | /* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ | 302 | /* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ |
303 | unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic, struct pt_regs *regs) | 303 | unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic) |
304 | { | 304 | { |
305 | int irq; | 305 | int irq; |
306 | 306 | ||
@@ -316,7 +316,7 @@ unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic, struct pt_regs *regs) | |||
316 | } | 316 | } |
317 | 317 | ||
318 | /* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ | 318 | /* Return an interrupt vector or NO_IRQ if no interrupt is pending. */ |
319 | unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic, struct pt_regs *regs) | 319 | unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic) |
320 | { | 320 | { |
321 | int irq; | 321 | int irq; |
322 | 322 | ||
@@ -333,13 +333,12 @@ unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic, struct pt_regs *regs) | |||
333 | 333 | ||
334 | /* FIXME: We mask all the QE Low interrupts while handling. We should | 334 | /* FIXME: We mask all the QE Low interrupts while handling. We should |
335 | * let other interrupt come in, but BAD interrupts are generated */ | 335 | * let other interrupt come in, but BAD interrupts are generated */ |
336 | void fastcall qe_ic_cascade_low(unsigned int irq, struct irq_desc *desc, | 336 | void fastcall qe_ic_cascade_low(unsigned int irq, struct irq_desc *desc) |
337 | struct pt_regs *regs) | ||
338 | { | 337 | { |
339 | struct qe_ic *qe_ic = desc->handler_data; | 338 | struct qe_ic *qe_ic = desc->handler_data; |
340 | struct irq_chip *chip = irq_desc[irq].chip; | 339 | struct irq_chip *chip = irq_desc[irq].chip; |
341 | 340 | ||
342 | unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic, regs); | 341 | unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic); |
343 | 342 | ||
344 | chip->mask_ack(irq); | 343 | chip->mask_ack(irq); |
345 | if (cascade_irq != NO_IRQ) | 344 | if (cascade_irq != NO_IRQ) |
@@ -349,13 +348,12 @@ void fastcall qe_ic_cascade_low(unsigned int irq, struct irq_desc *desc, | |||
349 | 348 | ||
350 | /* FIXME: We mask all the QE High interrupts while handling. We should | 349 | /* FIXME: We mask all the QE High interrupts while handling. We should |
351 | * let other interrupt come in, but BAD interrupts are generated */ | 350 | * let other interrupt come in, but BAD interrupts are generated */ |
352 | void fastcall qe_ic_cascade_high(unsigned int irq, struct irq_desc *desc, | 351 | void fastcall qe_ic_cascade_high(unsigned int irq, struct irq_desc *desc) |
353 | struct pt_regs *regs) | ||
354 | { | 352 | { |
355 | struct qe_ic *qe_ic = desc->handler_data; | 353 | struct qe_ic *qe_ic = desc->handler_data; |
356 | struct irq_chip *chip = irq_desc[irq].chip; | 354 | struct irq_chip *chip = irq_desc[irq].chip; |
357 | 355 | ||
358 | unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic, regs); | 356 | unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic); |
359 | 357 | ||
360 | chip->mask_ack(irq); | 358 | chip->mask_ack(irq); |
361 | if (cascade_irq != NO_IRQ) | 359 | if (cascade_irq != NO_IRQ) |
diff --git a/arch/powerpc/sysdev/tsi108_pci.c b/arch/powerpc/sysdev/tsi108_pci.c index 14f4a1ab6d18..322f86e93de5 100644 --- a/arch/powerpc/sysdev/tsi108_pci.c +++ b/arch/powerpc/sysdev/tsi108_pci.c | |||
@@ -405,8 +405,7 @@ void __init tsi108_pci_int_init(void) | |||
405 | init_pci_source(); | 405 | init_pci_source(); |
406 | } | 406 | } |
407 | 407 | ||
408 | void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc, | 408 | void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc) |
409 | struct pt_regs *regs) | ||
410 | { | 409 | { |
411 | unsigned int cascade_irq = get_pci_source(); | 410 | unsigned int cascade_irq = get_pci_source(); |
412 | if (cascade_irq != NO_IRQ) | 411 | if (cascade_irq != NO_IRQ) |
diff --git a/arch/ppc/4xx_io/serial_sicc.c b/arch/ppc/4xx_io/serial_sicc.c index 87fe9a89dba7..080a20531f8b 100644 --- a/arch/ppc/4xx_io/serial_sicc.c +++ b/arch/ppc/4xx_io/serial_sicc.c | |||
@@ -441,7 +441,7 @@ siccuart_rx_chars(struct SICC_info *info, struct pt_regs *regs) | |||
441 | #ifdef SUPPORT_SYSRQ | 441 | #ifdef SUPPORT_SYSRQ |
442 | if (info->sysrq) { | 442 | if (info->sysrq) { |
443 | if (ch && time_before(jiffies, info->sysrq)) { | 443 | if (ch && time_before(jiffies, info->sysrq)) { |
444 | handle_sysrq(ch, regs, NULL); | 444 | handle_sysrq(ch, NULL); |
445 | info->sysrq = 0; | 445 | info->sysrq = 0; |
446 | goto ignore_char; | 446 | goto ignore_char; |
447 | } | 447 | } |
diff --git a/arch/ppc/kernel/time.c b/arch/ppc/kernel/time.c index 187388625a76..d4b2cf74da6a 100644 --- a/arch/ppc/kernel/time.c +++ b/arch/ppc/kernel/time.c | |||
@@ -142,7 +142,7 @@ void timer_interrupt(struct pt_regs * regs) | |||
142 | while ((next_dec = tb_ticks_per_jiffy - tb_delta(&jiffy_stamp)) <= 0) { | 142 | while ((next_dec = tb_ticks_per_jiffy - tb_delta(&jiffy_stamp)) <= 0) { |
143 | jiffy_stamp += tb_ticks_per_jiffy; | 143 | jiffy_stamp += tb_ticks_per_jiffy; |
144 | 144 | ||
145 | profile_tick(CPU_PROFILING, regs); | 145 | profile_tick(CPU_PROFILING); |
146 | update_process_times(user_mode(regs)); | 146 | update_process_times(user_mode(regs)); |
147 | 147 | ||
148 | if (smp_processor_id()) | 148 | if (smp_processor_id()) |
diff --git a/arch/ppc/platforms/85xx/mpc8560_ads.c b/arch/ppc/platforms/85xx/mpc8560_ads.c index 94badafe4ef1..14ecec7bbed7 100644 --- a/arch/ppc/platforms/85xx/mpc8560_ads.c +++ b/arch/ppc/platforms/85xx/mpc8560_ads.c | |||
@@ -211,10 +211,10 @@ mpc8560ads_setup_arch(void) | |||
211 | #endif | 211 | #endif |
212 | } | 212 | } |
213 | 213 | ||
214 | static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) | 214 | static irqreturn_t cpm2_cascade(int irq, void *dev_id) |
215 | { | 215 | { |
216 | while ((irq = cpm2_get_irq(regs)) >= 0) | 216 | while ((irq = cpm2_get_irq()) >= 0) |
217 | __do_IRQ(irq, regs); | 217 | __do_IRQ(irq); |
218 | return IRQ_HANDLED; | 218 | return IRQ_HANDLED; |
219 | } | 219 | } |
220 | 220 | ||
diff --git a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c index 75204588a3e7..5ce0f69c1db6 100644 --- a/arch/ppc/platforms/85xx/mpc85xx_cds_common.c +++ b/arch/ppc/platforms/85xx/mpc85xx_cds_common.c | |||
@@ -127,10 +127,10 @@ mpc85xx_cds_show_cpuinfo(struct seq_file *m) | |||
127 | } | 127 | } |
128 | 128 | ||
129 | #ifdef CONFIG_CPM2 | 129 | #ifdef CONFIG_CPM2 |
130 | static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) | 130 | static irqreturn_t cpm2_cascade(int irq, void *dev_id) |
131 | { | 131 | { |
132 | while((irq = cpm2_get_irq(regs)) >= 0) | 132 | while((irq = cpm2_get_irq()) >= 0) |
133 | __do_IRQ(irq, regs); | 133 | __do_IRQ(irq); |
134 | return IRQ_HANDLED; | 134 | return IRQ_HANDLED; |
135 | } | 135 | } |
136 | 136 | ||
diff --git a/arch/ppc/platforms/85xx/stx_gp3.c b/arch/ppc/platforms/85xx/stx_gp3.c index 495aa79bb3a1..4bb18ab27672 100644 --- a/arch/ppc/platforms/85xx/stx_gp3.c +++ b/arch/ppc/platforms/85xx/stx_gp3.c | |||
@@ -156,10 +156,10 @@ gp3_setup_arch(void) | |||
156 | printk ("bi_immr_base = %8.8lx\n", binfo->bi_immr_base); | 156 | printk ("bi_immr_base = %8.8lx\n", binfo->bi_immr_base); |
157 | } | 157 | } |
158 | 158 | ||
159 | static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) | 159 | static irqreturn_t cpm2_cascade(int irq, void *dev_id) |
160 | { | 160 | { |
161 | while ((irq = cpm2_get_irq(regs)) >= 0) | 161 | while ((irq = cpm2_get_irq()) >= 0) |
162 | __do_IRQ(irq, regs); | 162 | __do_IRQ(irq); |
163 | 163 | ||
164 | return IRQ_HANDLED; | 164 | return IRQ_HANDLED; |
165 | } | 165 | } |
diff --git a/arch/ppc/platforms/85xx/tqm85xx.c b/arch/ppc/platforms/85xx/tqm85xx.c index 189ed4175f9f..dd45f2e18449 100644 --- a/arch/ppc/platforms/85xx/tqm85xx.c +++ b/arch/ppc/platforms/85xx/tqm85xx.c | |||
@@ -181,10 +181,10 @@ tqm85xx_setup_arch(void) | |||
181 | } | 181 | } |
182 | 182 | ||
183 | #ifdef CONFIG_MPC8560 | 183 | #ifdef CONFIG_MPC8560 |
184 | static irqreturn_t cpm2_cascade(int irq, void *dev_id, struct pt_regs *regs) | 184 | static irqreturn_t cpm2_cascade(int irq, void *dev_id) |
185 | { | 185 | { |
186 | while ((irq = cpm2_get_irq(regs)) >= 0) | 186 | while ((irq = cpm2_get_irq()) >= 0) |
187 | __do_IRQ(irq, regs); | 187 | __do_IRQ(irq); |
188 | return IRQ_HANDLED; | 188 | return IRQ_HANDLED; |
189 | } | 189 | } |
190 | 190 | ||
diff --git a/arch/ppc/syslib/i8259.c b/arch/ppc/syslib/i8259.c index eb35353af837..a43dda5a8334 100644 --- a/arch/ppc/syslib/i8259.c +++ b/arch/ppc/syslib/i8259.c | |||
@@ -28,7 +28,7 @@ static int i8259_pic_irq_offset; | |||
28 | * which is called. It should be noted that polling is broken on some | 28 | * which is called. It should be noted that polling is broken on some |
29 | * IBM and Motorola PReP boxes so we must use the int-ack feature on them. | 29 | * IBM and Motorola PReP boxes so we must use the int-ack feature on them. |
30 | */ | 30 | */ |
31 | int i8259_irq(struct pt_regs *regs) | 31 | int i8259_irq(void) |
32 | { | 32 | { |
33 | int irq; | 33 | int irq; |
34 | 34 | ||
diff --git a/arch/ppc/syslib/mv64360_pic.c b/arch/ppc/syslib/mv64360_pic.c index 3f6d162f87cf..5104386601ed 100644 --- a/arch/ppc/syslib/mv64360_pic.c +++ b/arch/ppc/syslib/mv64360_pic.c | |||
@@ -380,7 +380,7 @@ mv64360_register_hdlrs(void) | |||
380 | /* Clear old errors and register CPU interface error intr handler */ | 380 | /* Clear old errors and register CPU interface error intr handler */ |
381 | mv64x60_write(&bh, MV64x60_CPU_ERR_CAUSE, 0); | 381 | mv64x60_write(&bh, MV64x60_CPU_ERR_CAUSE, 0); |
382 | if ((rc = request_irq(MV64x60_IRQ_CPU_ERR + mv64360_irq_base, | 382 | if ((rc = request_irq(MV64x60_IRQ_CPU_ERR + mv64360_irq_base, |
383 | mv64360_cpu_error_int_handler, IRQF_DISABLED, CPU_INTR_STR, 0))) | 383 | mv64360_cpu_error_int_handler, IRQF_DISABLED, CPU_INTR_STR, NULL))) |
384 | printk(KERN_WARNING "Can't register cpu error handler: %d", rc); | 384 | printk(KERN_WARNING "Can't register cpu error handler: %d", rc); |
385 | 385 | ||
386 | mv64x60_write(&bh, MV64x60_CPU_ERR_MASK, 0); | 386 | mv64x60_write(&bh, MV64x60_CPU_ERR_MASK, 0); |
@@ -389,7 +389,7 @@ mv64360_register_hdlrs(void) | |||
389 | /* Clear old errors and register internal SRAM error intr handler */ | 389 | /* Clear old errors and register internal SRAM error intr handler */ |
390 | mv64x60_write(&bh, MV64360_SRAM_ERR_CAUSE, 0); | 390 | mv64x60_write(&bh, MV64360_SRAM_ERR_CAUSE, 0); |
391 | if ((rc = request_irq(MV64360_IRQ_SRAM_PAR_ERR + mv64360_irq_base, | 391 | if ((rc = request_irq(MV64360_IRQ_SRAM_PAR_ERR + mv64360_irq_base, |
392 | mv64360_sram_error_int_handler,IRQF_DISABLED,SRAM_INTR_STR, 0))) | 392 | mv64360_sram_error_int_handler,IRQF_DISABLED,SRAM_INTR_STR, NULL))) |
393 | printk(KERN_WARNING "Can't register SRAM error handler: %d",rc); | 393 | printk(KERN_WARNING "Can't register SRAM error handler: %d",rc); |
394 | 394 | ||
395 | /* Clear old errors and register PCI 0 error intr handler */ | 395 | /* Clear old errors and register PCI 0 error intr handler */ |
diff --git a/arch/ppc/syslib/open_pic.c b/arch/ppc/syslib/open_pic.c index aa0b95788705..18ec94733293 100644 --- a/arch/ppc/syslib/open_pic.c +++ b/arch/ppc/syslib/open_pic.c | |||
@@ -45,7 +45,7 @@ static u_int NumSources; | |||
45 | static int open_pic_irq_offset; | 45 | static int open_pic_irq_offset; |
46 | static volatile OpenPIC_Source __iomem *ISR[NR_IRQS]; | 46 | static volatile OpenPIC_Source __iomem *ISR[NR_IRQS]; |
47 | static int openpic_cascade_irq = -1; | 47 | static int openpic_cascade_irq = -1; |
48 | static int (*openpic_cascade_fn)(struct pt_regs *); | 48 | static int (*openpic_cascade_fn)(void); |
49 | 49 | ||
50 | /* Global Operations */ | 50 | /* Global Operations */ |
51 | static void openpic_disable_8259_pass_through(void); | 51 | static void openpic_disable_8259_pass_through(void); |
@@ -54,7 +54,7 @@ static void openpic_set_spurious(u_int vector); | |||
54 | #ifdef CONFIG_SMP | 54 | #ifdef CONFIG_SMP |
55 | /* Interprocessor Interrupts */ | 55 | /* Interprocessor Interrupts */ |
56 | static void openpic_initipi(u_int ipi, u_int pri, u_int vector); | 56 | static void openpic_initipi(u_int ipi, u_int pri, u_int vector); |
57 | static irqreturn_t openpic_ipi_action(int cpl, void *dev_id, struct pt_regs *); | 57 | static irqreturn_t openpic_ipi_action(int cpl, void *dev_id); |
58 | #endif | 58 | #endif |
59 | 59 | ||
60 | /* Timer Interrupts */ | 60 | /* Timer Interrupts */ |
@@ -700,7 +700,7 @@ static struct irqaction openpic_cascade_irqaction = { | |||
700 | 700 | ||
701 | void __init | 701 | void __init |
702 | openpic_hookup_cascade(u_int irq, char *name, | 702 | openpic_hookup_cascade(u_int irq, char *name, |
703 | int (*cascade_fn)(struct pt_regs *)) | 703 | int (*cascade_fn)(void)) |
704 | { | 704 | { |
705 | openpic_cascade_irq = irq; | 705 | openpic_cascade_irq = irq; |
706 | openpic_cascade_fn = cascade_fn; | 706 | openpic_cascade_fn = cascade_fn; |
@@ -857,16 +857,16 @@ static void openpic_end_ipi(unsigned int irq_nr) | |||
857 | { | 857 | { |
858 | } | 858 | } |
859 | 859 | ||
860 | static irqreturn_t openpic_ipi_action(int cpl, void *dev_id, struct pt_regs *regs) | 860 | static irqreturn_t openpic_ipi_action(int cpl, void *dev_id) |
861 | { | 861 | { |
862 | smp_message_recv(cpl-OPENPIC_VEC_IPI-open_pic_irq_offset, regs); | 862 | smp_message_recv(cpl-OPENPIC_VEC_IPI-open_pic_irq_offset); |
863 | return IRQ_HANDLED; | 863 | return IRQ_HANDLED; |
864 | } | 864 | } |
865 | 865 | ||
866 | #endif /* CONFIG_SMP */ | 866 | #endif /* CONFIG_SMP */ |
867 | 867 | ||
868 | int | 868 | int |
869 | openpic_get_irq(struct pt_regs *regs) | 869 | openpic_get_irq(void) |
870 | { | 870 | { |
871 | int irq = openpic_irq(); | 871 | int irq = openpic_irq(); |
872 | 872 | ||
@@ -876,7 +876,7 @@ openpic_get_irq(struct pt_regs *regs) | |||
876 | * This should move to irq.c eventually. -- paulus | 876 | * This should move to irq.c eventually. -- paulus |
877 | */ | 877 | */ |
878 | if (irq == openpic_cascade_irq && openpic_cascade_fn != NULL) { | 878 | if (irq == openpic_cascade_irq && openpic_cascade_fn != NULL) { |
879 | int cirq = openpic_cascade_fn(regs); | 879 | int cirq = openpic_cascade_fn(); |
880 | 880 | ||
881 | /* Allow for the cascade being shared with other devices */ | 881 | /* Allow for the cascade being shared with other devices */ |
882 | if (cirq != -1) { | 882 | if (cirq != -1) { |
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 05bf3cc8530a..66375a5e3d12 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -474,7 +474,7 @@ asmlinkage void illegal_op(struct pt_regs * regs, long interruption_code) | |||
474 | signal = math_emu_b3(opcode, regs); | 474 | signal = math_emu_b3(opcode, regs); |
475 | } else if (opcode[0] == 0xed) { | 475 | } else if (opcode[0] == 0xed) { |
476 | get_user(*((__u32 *) (opcode+2)), | 476 | get_user(*((__u32 *) (opcode+2)), |
477 | (__u32 *)(location+1)); | 477 | (__u32 __user *)(location+1)); |
478 | signal = math_emu_ed(opcode, regs); | 478 | signal = math_emu_ed(opcode, regs); |
479 | } else if (*((__u16 *) opcode) == 0xb299) { | 479 | } else if (*((__u16 *) opcode) == 0xb299) { |
480 | get_user(*((__u16 *) (opcode+2)), location+1); | 480 | get_user(*((__u16 *) (opcode+2)), location+1); |
@@ -499,7 +499,7 @@ asmlinkage void illegal_op(struct pt_regs * regs, long interruption_code) | |||
499 | info.si_signo = signal; | 499 | info.si_signo = signal; |
500 | info.si_errno = 0; | 500 | info.si_errno = 0; |
501 | info.si_code = SEGV_MAPERR; | 501 | info.si_code = SEGV_MAPERR; |
502 | info.si_addr = (void *) location; | 502 | info.si_addr = (void __user *) location; |
503 | do_trap(interruption_code, signal, | 503 | do_trap(interruption_code, signal, |
504 | "user address fault", regs, &info); | 504 | "user address fault", regs, &info); |
505 | } else | 505 | } else |
@@ -520,10 +520,10 @@ asmlinkage void | |||
520 | specification_exception(struct pt_regs * regs, long interruption_code) | 520 | specification_exception(struct pt_regs * regs, long interruption_code) |
521 | { | 521 | { |
522 | __u8 opcode[6]; | 522 | __u8 opcode[6]; |
523 | __u16 *location = NULL; | 523 | __u16 __user *location = NULL; |
524 | int signal = 0; | 524 | int signal = 0; |
525 | 525 | ||
526 | location = (__u16 *) get_check_address(regs); | 526 | location = (__u16 __user *) get_check_address(regs); |
527 | 527 | ||
528 | /* | 528 | /* |
529 | * We got all needed information from the lowcore and can | 529 | * We got all needed information from the lowcore and can |
@@ -632,7 +632,7 @@ asmlinkage void data_exception(struct pt_regs * regs, long interruption_code) | |||
632 | break; | 632 | break; |
633 | case 0xed: | 633 | case 0xed: |
634 | get_user(*((__u32 *) (opcode+2)), | 634 | get_user(*((__u32 *) (opcode+2)), |
635 | (__u32 *)(location+1)); | 635 | (__u32 __user *)(location+1)); |
636 | signal = math_emu_ed(opcode, regs); | 636 | signal = math_emu_ed(opcode, regs); |
637 | break; | 637 | break; |
638 | case 0xb2: | 638 | case 0xb2: |
diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c index 72f0201051a0..ae4dfc89ca52 100644 --- a/arch/sparc/kernel/irq.c +++ b/arch/sparc/kernel/irq.c | |||
@@ -46,6 +46,7 @@ | |||
46 | #include <asm/pgtable.h> | 46 | #include <asm/pgtable.h> |
47 | #include <asm/pcic.h> | 47 | #include <asm/pcic.h> |
48 | #include <asm/cacheflush.h> | 48 | #include <asm/cacheflush.h> |
49 | #include <asm/irq_regs.h> | ||
49 | 50 | ||
50 | #ifdef CONFIG_SMP | 51 | #ifdef CONFIG_SMP |
51 | #define SMP_NOP2 "nop; nop;\n\t" | 52 | #define SMP_NOP2 "nop; nop;\n\t" |
@@ -133,8 +134,8 @@ static void irq_panic(void) | |||
133 | prom_halt(); | 134 | prom_halt(); |
134 | } | 135 | } |
135 | 136 | ||
136 | void (*sparc_init_timers)(irqreturn_t (*)(int, void *,struct pt_regs *)) = | 137 | void (*sparc_init_timers)(irqreturn_t (*)(int, void *)) = |
137 | (void (*)(irqreturn_t (*)(int, void *,struct pt_regs *))) irq_panic; | 138 | (void (*)(irqreturn_t (*)(int, void *))) irq_panic; |
138 | 139 | ||
139 | /* | 140 | /* |
140 | * Dave Redman (djhr@tadpole.co.uk) | 141 | * Dave Redman (djhr@tadpole.co.uk) |
@@ -319,12 +320,14 @@ void unexpected_irq(int irq, void *dev_id, struct pt_regs * regs) | |||
319 | 320 | ||
320 | void handler_irq(int irq, struct pt_regs * regs) | 321 | void handler_irq(int irq, struct pt_regs * regs) |
321 | { | 322 | { |
323 | struct pt_regs *old_regs; | ||
322 | struct irqaction * action; | 324 | struct irqaction * action; |
323 | int cpu = smp_processor_id(); | 325 | int cpu = smp_processor_id(); |
324 | #ifdef CONFIG_SMP | 326 | #ifdef CONFIG_SMP |
325 | extern void smp4m_irq_rotate(int cpu); | 327 | extern void smp4m_irq_rotate(int cpu); |
326 | #endif | 328 | #endif |
327 | 329 | ||
330 | old_regs = set_irq_regs(regs); | ||
328 | irq_enter(); | 331 | irq_enter(); |
329 | disable_pil_irq(irq); | 332 | disable_pil_irq(irq); |
330 | #ifdef CONFIG_SMP | 333 | #ifdef CONFIG_SMP |
@@ -338,27 +341,31 @@ void handler_irq(int irq, struct pt_regs * regs) | |||
338 | do { | 341 | do { |
339 | if (!action || !action->handler) | 342 | if (!action || !action->handler) |
340 | unexpected_irq(irq, NULL, regs); | 343 | unexpected_irq(irq, NULL, regs); |
341 | action->handler(irq, action->dev_id, regs); | 344 | action->handler(irq, action->dev_id); |
342 | action = action->next; | 345 | action = action->next; |
343 | } while (action); | 346 | } while (action); |
344 | sparc_irq[irq].flags &= ~SPARC_IRQ_INPROGRESS; | 347 | sparc_irq[irq].flags &= ~SPARC_IRQ_INPROGRESS; |
345 | enable_pil_irq(irq); | 348 | enable_pil_irq(irq); |
346 | irq_exit(); | 349 | irq_exit(); |
350 | set_irq_regs(old_regs); | ||
347 | } | 351 | } |
348 | 352 | ||
349 | #ifdef CONFIG_BLK_DEV_FD | 353 | #ifdef CONFIG_BLK_DEV_FD |
350 | extern void floppy_interrupt(int irq, void *dev_id, struct pt_regs *regs); | 354 | extern void floppy_interrupt(int irq, void *dev_id) |
351 | 355 | ||
352 | void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs) | 356 | void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs) |
353 | { | 357 | { |
358 | struct pt_regs *old_regs; | ||
354 | int cpu = smp_processor_id(); | 359 | int cpu = smp_processor_id(); |
355 | 360 | ||
361 | old_regs = set_irq_regs(regs); | ||
356 | disable_pil_irq(irq); | 362 | disable_pil_irq(irq); |
357 | irq_enter(); | 363 | irq_enter(); |
358 | kstat_cpu(cpu).irqs[irq]++; | 364 | kstat_cpu(cpu).irqs[irq]++; |
359 | floppy_interrupt(irq, dev_id, regs); | 365 | floppy_interrupt(irq, dev_id); |
360 | irq_exit(); | 366 | irq_exit(); |
361 | enable_pil_irq(irq); | 367 | enable_pil_irq(irq); |
368 | set_irq_regs(old_regs); | ||
362 | // XXX Eek, it's totally changed with preempt_count() and such | 369 | // XXX Eek, it's totally changed with preempt_count() and such |
363 | // if (softirq_pending(cpu)) | 370 | // if (softirq_pending(cpu)) |
364 | // do_softirq(); | 371 | // do_softirq(); |
@@ -369,7 +376,7 @@ void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
369 | * thus no sharing possible. | 376 | * thus no sharing possible. |
370 | */ | 377 | */ |
371 | int request_fast_irq(unsigned int irq, | 378 | int request_fast_irq(unsigned int irq, |
372 | irqreturn_t (*handler)(int, void *, struct pt_regs *), | 379 | irqreturn_t (*handler)(int, void *), |
373 | unsigned long irqflags, const char *devname) | 380 | unsigned long irqflags, const char *devname) |
374 | { | 381 | { |
375 | struct irqaction *action; | 382 | struct irqaction *action; |
@@ -468,7 +475,7 @@ out: | |||
468 | } | 475 | } |
469 | 476 | ||
470 | int request_irq(unsigned int irq, | 477 | int request_irq(unsigned int irq, |
471 | irqreturn_t (*handler)(int, void *, struct pt_regs *), | 478 | irqreturn_t (*handler)(int, void *), |
472 | unsigned long irqflags, const char * devname, void *dev_id) | 479 | unsigned long irqflags, const char * devname, void *dev_id) |
473 | { | 480 | { |
474 | struct irqaction * action, **actionp; | 481 | struct irqaction * action, **actionp; |
@@ -478,7 +485,7 @@ int request_irq(unsigned int irq, | |||
478 | 485 | ||
479 | if (sparc_cpu_model == sun4d) { | 486 | if (sparc_cpu_model == sun4d) { |
480 | extern int sun4d_request_irq(unsigned int, | 487 | extern int sun4d_request_irq(unsigned int, |
481 | irqreturn_t (*)(int, void *, struct pt_regs *), | 488 | irqreturn_t (*)(int, void *), |
482 | unsigned long, const char *, void *); | 489 | unsigned long, const char *, void *); |
483 | return sun4d_request_irq(irq, handler, irqflags, devname, dev_id); | 490 | return sun4d_request_irq(irq, handler, irqflags, devname, dev_id); |
484 | } | 491 | } |
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c index edb6cc665f56..b4e50ae323bf 100644 --- a/arch/sparc/kernel/pcic.c +++ b/arch/sparc/kernel/pcic.c | |||
@@ -708,13 +708,13 @@ static void pcic_clear_clock_irq(void) | |||
708 | pcic_timer_dummy = readl(pcic0.pcic_regs+PCI_SYS_LIMIT); | 708 | pcic_timer_dummy = readl(pcic0.pcic_regs+PCI_SYS_LIMIT); |
709 | } | 709 | } |
710 | 710 | ||
711 | static irqreturn_t pcic_timer_handler (int irq, void *h, struct pt_regs *regs) | 711 | static irqreturn_t pcic_timer_handler (int irq, void *h) |
712 | { | 712 | { |
713 | write_seqlock(&xtime_lock); /* Dummy, to show that we remember */ | 713 | write_seqlock(&xtime_lock); /* Dummy, to show that we remember */ |
714 | pcic_clear_clock_irq(); | 714 | pcic_clear_clock_irq(); |
715 | do_timer(1); | 715 | do_timer(1); |
716 | #ifndef CONFIG_SMP | 716 | #ifndef CONFIG_SMP |
717 | update_process_times(user_mode(regs)); | 717 | update_process_times(user_mode(get_irq_regs())); |
718 | #endif | 718 | #endif |
719 | write_sequnlock(&xtime_lock); | 719 | write_sequnlock(&xtime_lock); |
720 | return IRQ_HANDLED; | 720 | return IRQ_HANDLED; |
diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c index 4d441a554d35..33dadd9f2871 100644 --- a/arch/sparc/kernel/sparc_ksyms.c +++ b/arch/sparc/kernel/sparc_ksyms.c | |||
@@ -87,6 +87,7 @@ extern void ___set_bit(void); | |||
87 | extern void ___clear_bit(void); | 87 | extern void ___clear_bit(void); |
88 | extern void ___change_bit(void); | 88 | extern void ___change_bit(void); |
89 | extern void ___rw_read_enter(void); | 89 | extern void ___rw_read_enter(void); |
90 | extern void ___rw_read_try(void); | ||
90 | extern void ___rw_read_exit(void); | 91 | extern void ___rw_read_exit(void); |
91 | extern void ___rw_write_enter(void); | 92 | extern void ___rw_write_enter(void); |
92 | 93 | ||
@@ -104,8 +105,9 @@ extern unsigned _Urem(unsigned, unsigned); | |||
104 | EXPORT_SYMBOL(sparc_cpu_model); | 105 | EXPORT_SYMBOL(sparc_cpu_model); |
105 | EXPORT_SYMBOL(kernel_thread); | 106 | EXPORT_SYMBOL(kernel_thread); |
106 | #ifdef CONFIG_SMP | 107 | #ifdef CONFIG_SMP |
107 | // XXX find what uses (or used) these. | 108 | // XXX find what uses (or used) these. AV: see asm/spinlock.h |
108 | EXPORT_SYMBOL(___rw_read_enter); | 109 | EXPORT_SYMBOL(___rw_read_enter); |
110 | EXPORT_SYMBOL(___rw_read_try); | ||
109 | EXPORT_SYMBOL(___rw_read_exit); | 111 | EXPORT_SYMBOL(___rw_read_exit); |
110 | EXPORT_SYMBOL(___rw_write_enter); | 112 | EXPORT_SYMBOL(___rw_write_enter); |
111 | #endif | 113 | #endif |
diff --git a/arch/sparc/kernel/sun4c_irq.c b/arch/sparc/kernel/sun4c_irq.c index 4be2c86ea540..2eaa0d085e19 100644 --- a/arch/sparc/kernel/sun4c_irq.c +++ b/arch/sparc/kernel/sun4c_irq.c | |||
@@ -154,7 +154,7 @@ static void sun4c_load_profile_irq(int cpu, unsigned int limit) | |||
154 | /* Errm.. not sure how to do this.. */ | 154 | /* Errm.. not sure how to do this.. */ |
155 | } | 155 | } |
156 | 156 | ||
157 | static void __init sun4c_init_timers(irqreturn_t (*counter_fn)(int, void *, struct pt_regs *)) | 157 | static void __init sun4c_init_timers(irqreturn_t (*counter_fn)(int, void *)) |
158 | { | 158 | { |
159 | int irq; | 159 | int irq; |
160 | 160 | ||
diff --git a/arch/sparc/kernel/sun4d_irq.c b/arch/sparc/kernel/sun4d_irq.c index 74eed9775ac0..836d1562787a 100644 --- a/arch/sparc/kernel/sun4d_irq.c +++ b/arch/sparc/kernel/sun4d_irq.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <asm/sbus.h> | 38 | #include <asm/sbus.h> |
39 | #include <asm/sbi.h> | 39 | #include <asm/sbi.h> |
40 | #include <asm/cacheflush.h> | 40 | #include <asm/cacheflush.h> |
41 | #include <asm/irq_regs.h> | ||
41 | 42 | ||
42 | /* If you trust current SCSI layer to handle different SCSI IRQs, enable this. I don't trust it... -jj */ | 43 | /* If you trust current SCSI layer to handle different SCSI IRQs, enable this. I don't trust it... -jj */ |
43 | /* #define DISTRIBUTE_IRQS */ | 44 | /* #define DISTRIBUTE_IRQS */ |
@@ -198,6 +199,7 @@ extern void unexpected_irq(int, void *, struct pt_regs *); | |||
198 | 199 | ||
199 | void sun4d_handler_irq(int irq, struct pt_regs * regs) | 200 | void sun4d_handler_irq(int irq, struct pt_regs * regs) |
200 | { | 201 | { |
202 | struct pt_regs *old_regs; | ||
201 | struct irqaction * action; | 203 | struct irqaction * action; |
202 | int cpu = smp_processor_id(); | 204 | int cpu = smp_processor_id(); |
203 | /* SBUS IRQ level (1 - 7) */ | 205 | /* SBUS IRQ level (1 - 7) */ |
@@ -208,6 +210,7 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs) | |||
208 | 210 | ||
209 | cc_set_iclr(1 << irq); | 211 | cc_set_iclr(1 << irq); |
210 | 212 | ||
213 | old_regs = set_irq_regs(regs); | ||
211 | irq_enter(); | 214 | irq_enter(); |
212 | kstat_cpu(cpu).irqs[irq]++; | 215 | kstat_cpu(cpu).irqs[irq]++; |
213 | if (!sbusl) { | 216 | if (!sbusl) { |
@@ -215,7 +218,7 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs) | |||
215 | if (!action) | 218 | if (!action) |
216 | unexpected_irq(irq, NULL, regs); | 219 | unexpected_irq(irq, NULL, regs); |
217 | do { | 220 | do { |
218 | action->handler(irq, action->dev_id, regs); | 221 | action->handler(irq, action->dev_id); |
219 | action = action->next; | 222 | action = action->next; |
220 | } while (action); | 223 | } while (action); |
221 | } else { | 224 | } else { |
@@ -242,7 +245,7 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs) | |||
242 | if (!action) | 245 | if (!action) |
243 | unexpected_irq(irq, NULL, regs); | 246 | unexpected_irq(irq, NULL, regs); |
244 | do { | 247 | do { |
245 | action->handler(irq, action->dev_id, regs); | 248 | action->handler(irq, action->dev_id); |
246 | action = action->next; | 249 | action = action->next; |
247 | } while (action); | 250 | } while (action); |
248 | release_sbi(SBI2DEVID(sbino), slot); | 251 | release_sbi(SBI2DEVID(sbino), slot); |
@@ -250,6 +253,7 @@ void sun4d_handler_irq(int irq, struct pt_regs * regs) | |||
250 | } | 253 | } |
251 | } | 254 | } |
252 | irq_exit(); | 255 | irq_exit(); |
256 | set_irq_regs(old_regs); | ||
253 | } | 257 | } |
254 | 258 | ||
255 | unsigned int sun4d_build_irq(struct sbus_dev *sdev, int irq) | 259 | unsigned int sun4d_build_irq(struct sbus_dev *sdev, int irq) |
@@ -272,7 +276,7 @@ unsigned int sun4d_sbint_to_irq(struct sbus_dev *sdev, unsigned int sbint) | |||
272 | } | 276 | } |
273 | 277 | ||
274 | int sun4d_request_irq(unsigned int irq, | 278 | int sun4d_request_irq(unsigned int irq, |
275 | irqreturn_t (*handler)(int, void *, struct pt_regs *), | 279 | irqreturn_t (*handler)(int, void *), |
276 | unsigned long irqflags, const char * devname, void *dev_id) | 280 | unsigned long irqflags, const char * devname, void *dev_id) |
277 | { | 281 | { |
278 | struct irqaction *action, *tmp = NULL, **actionp; | 282 | struct irqaction *action, *tmp = NULL, **actionp; |
@@ -466,7 +470,7 @@ static void sun4d_load_profile_irq(int cpu, unsigned int limit) | |||
466 | bw_set_prof_limit(cpu, limit); | 470 | bw_set_prof_limit(cpu, limit); |
467 | } | 471 | } |
468 | 472 | ||
469 | static void __init sun4d_init_timers(irqreturn_t (*counter_fn)(int, void *, struct pt_regs *)) | 473 | static void __init sun4d_init_timers(irqreturn_t (*counter_fn)(int, void *)) |
470 | { | 474 | { |
471 | int irq; | 475 | int irq; |
472 | int cpu; | 476 | int cpu; |
diff --git a/arch/sparc/kernel/sun4d_smp.c b/arch/sparc/kernel/sun4d_smp.c index 3ff4edd32815..c80ea61e8ba0 100644 --- a/arch/sparc/kernel/sun4d_smp.c +++ b/arch/sparc/kernel/sun4d_smp.c | |||
@@ -23,6 +23,7 @@ | |||
23 | 23 | ||
24 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
25 | #include <asm/atomic.h> | 25 | #include <asm/atomic.h> |
26 | #include <asm/irq_regs.h> | ||
26 | 27 | ||
27 | #include <asm/delay.h> | 28 | #include <asm/delay.h> |
28 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
@@ -369,10 +370,12 @@ void smp4d_message_pass(int target, int msg, unsigned long data, int wait) | |||
369 | 370 | ||
370 | void smp4d_percpu_timer_interrupt(struct pt_regs *regs) | 371 | void smp4d_percpu_timer_interrupt(struct pt_regs *regs) |
371 | { | 372 | { |
373 | struct pt_regs *old_regs; | ||
372 | int cpu = hard_smp4d_processor_id(); | 374 | int cpu = hard_smp4d_processor_id(); |
373 | static int cpu_tick[NR_CPUS]; | 375 | static int cpu_tick[NR_CPUS]; |
374 | static char led_mask[] = { 0xe, 0xd, 0xb, 0x7, 0xb, 0xd }; | 376 | static char led_mask[] = { 0xe, 0xd, 0xb, 0x7, 0xb, 0xd }; |
375 | 377 | ||
378 | old_regs = set_irq_regs(regs); | ||
376 | bw_get_prof_limit(cpu); | 379 | bw_get_prof_limit(cpu); |
377 | bw_clear_intr_mask(0, 1); /* INTR_TABLE[0] & 1 is Profile IRQ */ | 380 | bw_clear_intr_mask(0, 1); /* INTR_TABLE[0] & 1 is Profile IRQ */ |
378 | 381 | ||
@@ -384,7 +387,7 @@ void smp4d_percpu_timer_interrupt(struct pt_regs *regs) | |||
384 | show_leds(cpu); | 387 | show_leds(cpu); |
385 | } | 388 | } |
386 | 389 | ||
387 | profile_tick(CPU_PROFILING, regs); | 390 | profile_tick(CPU_PROFILING); |
388 | 391 | ||
389 | if(!--prof_counter(cpu)) { | 392 | if(!--prof_counter(cpu)) { |
390 | int user = user_mode(regs); | 393 | int user = user_mode(regs); |
@@ -395,6 +398,7 @@ void smp4d_percpu_timer_interrupt(struct pt_regs *regs) | |||
395 | 398 | ||
396 | prof_counter(cpu) = prof_multiplier(cpu); | 399 | prof_counter(cpu) = prof_multiplier(cpu); |
397 | } | 400 | } |
401 | set_irq_regs(old_regs); | ||
398 | } | 402 | } |
399 | 403 | ||
400 | extern unsigned int lvl14_resolution; | 404 | extern unsigned int lvl14_resolution; |
diff --git a/arch/sparc/kernel/sun4m_irq.c b/arch/sparc/kernel/sun4m_irq.c index 7cefa301efea..28bcf8e2c5b3 100644 --- a/arch/sparc/kernel/sun4m_irq.c +++ b/arch/sparc/kernel/sun4m_irq.c | |||
@@ -228,7 +228,7 @@ static void sun4m_load_profile_irq(int cpu, unsigned int limit) | |||
228 | sun4m_timers->cpu_timers[cpu].l14_timer_limit = limit; | 228 | sun4m_timers->cpu_timers[cpu].l14_timer_limit = limit; |
229 | } | 229 | } |
230 | 230 | ||
231 | static void __init sun4m_init_timers(irqreturn_t (*counter_fn)(int, void *, struct pt_regs *)) | 231 | static void __init sun4m_init_timers(irqreturn_t (*counter_fn)(int, void *)) |
232 | { | 232 | { |
233 | int reg_count, irq, cpu; | 233 | int reg_count, irq, cpu; |
234 | struct linux_prom_registers cnt_regs[PROMREG_MAX]; | 234 | struct linux_prom_registers cnt_regs[PROMREG_MAX]; |
diff --git a/arch/sparc/kernel/sun4m_smp.c b/arch/sparc/kernel/sun4m_smp.c index 7d4a649138f6..e2d9c018bd56 100644 --- a/arch/sparc/kernel/sun4m_smp.c +++ b/arch/sparc/kernel/sun4m_smp.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/profile.h> | 19 | #include <linux/profile.h> |
20 | #include <asm/cacheflush.h> | 20 | #include <asm/cacheflush.h> |
21 | #include <asm/tlbflush.h> | 21 | #include <asm/tlbflush.h> |
22 | #include <asm/irq_regs.h> | ||
22 | 23 | ||
23 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
24 | #include <asm/atomic.h> | 25 | #include <asm/atomic.h> |
@@ -353,11 +354,14 @@ void smp4m_cross_call_irq(void) | |||
353 | 354 | ||
354 | void smp4m_percpu_timer_interrupt(struct pt_regs *regs) | 355 | void smp4m_percpu_timer_interrupt(struct pt_regs *regs) |
355 | { | 356 | { |
357 | struct pt_regs *old_regs; | ||
356 | int cpu = smp_processor_id(); | 358 | int cpu = smp_processor_id(); |
357 | 359 | ||
360 | old_regs = set_irq_regs(regs); | ||
361 | |||
358 | clear_profile_irq(cpu); | 362 | clear_profile_irq(cpu); |
359 | 363 | ||
360 | profile_tick(CPU_PROFILING, regs); | 364 | profile_tick(CPU_PROFILING); |
361 | 365 | ||
362 | if(!--prof_counter(cpu)) { | 366 | if(!--prof_counter(cpu)) { |
363 | int user = user_mode(regs); | 367 | int user = user_mode(regs); |
@@ -368,6 +372,7 @@ void smp4m_percpu_timer_interrupt(struct pt_regs *regs) | |||
368 | 372 | ||
369 | prof_counter(cpu) = prof_multiplier(cpu); | 373 | prof_counter(cpu) = prof_multiplier(cpu); |
370 | } | 374 | } |
375 | set_irq_regs(old_regs); | ||
371 | } | 376 | } |
372 | 377 | ||
373 | extern unsigned int lvl14_resolution; | 378 | extern unsigned int lvl14_resolution; |
diff --git a/arch/sparc/kernel/tick14.c b/arch/sparc/kernel/tick14.c index d3b4daac705f..7107d2f0625d 100644 --- a/arch/sparc/kernel/tick14.c +++ b/arch/sparc/kernel/tick14.c | |||
@@ -55,7 +55,7 @@ void install_obp_ticker(void) | |||
55 | linux_lvl14[3] = obp_lvl14[3]; | 55 | linux_lvl14[3] = obp_lvl14[3]; |
56 | } | 56 | } |
57 | 57 | ||
58 | void claim_ticker14(irqreturn_t (*handler)(int, void *, struct pt_regs *), | 58 | void claim_ticker14(irqreturn_t (*handler)(int, void *), |
59 | int irq_nr, unsigned int timeout ) | 59 | int irq_nr, unsigned int timeout ) |
60 | { | 60 | { |
61 | int cpu = smp_processor_id(); | 61 | int cpu = smp_processor_id(); |
diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c index e10dc831944d..7dcd1a16c6e4 100644 --- a/arch/sparc/kernel/time.c +++ b/arch/sparc/kernel/time.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <asm/page.h> | 42 | #include <asm/page.h> |
43 | #include <asm/pcic.h> | 43 | #include <asm/pcic.h> |
44 | #include <asm/of_device.h> | 44 | #include <asm/of_device.h> |
45 | #include <asm/irq_regs.h> | ||
45 | 46 | ||
46 | DEFINE_SPINLOCK(rtc_lock); | 47 | DEFINE_SPINLOCK(rtc_lock); |
47 | enum sparc_clock_type sp_clock_typ; | 48 | enum sparc_clock_type sp_clock_typ; |
@@ -104,13 +105,13 @@ __volatile__ unsigned int *master_l10_limit; | |||
104 | 105 | ||
105 | #define TICK_SIZE (tick_nsec / 1000) | 106 | #define TICK_SIZE (tick_nsec / 1000) |
106 | 107 | ||
107 | irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) | 108 | irqreturn_t timer_interrupt(int irq, void *dev_id) |
108 | { | 109 | { |
109 | /* last time the cmos clock got updated */ | 110 | /* last time the cmos clock got updated */ |
110 | static long last_rtc_update; | 111 | static long last_rtc_update; |
111 | 112 | ||
112 | #ifndef CONFIG_SMP | 113 | #ifndef CONFIG_SMP |
113 | profile_tick(CPU_PROFILING, regs); | 114 | profile_tick(CPU_PROFILING); |
114 | #endif | 115 | #endif |
115 | 116 | ||
116 | /* Protect counter clear so that do_gettimeoffset works */ | 117 | /* Protect counter clear so that do_gettimeoffset works */ |
@@ -128,7 +129,7 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |||
128 | 129 | ||
129 | do_timer(1); | 130 | do_timer(1); |
130 | #ifndef CONFIG_SMP | 131 | #ifndef CONFIG_SMP |
131 | update_process_times(user_mode(regs)); | 132 | update_process_times(user_mode(get_irq_regs())); |
132 | #endif | 133 | #endif |
133 | 134 | ||
134 | 135 | ||
diff --git a/arch/sparc/lib/locks.S b/arch/sparc/lib/locks.S index 95fa48424967..b1df55cb2215 100644 --- a/arch/sparc/lib/locks.S +++ b/arch/sparc/lib/locks.S | |||
@@ -25,6 +25,15 @@ ___rw_read_enter_spin_on_wlock: | |||
25 | ldstub [%g1 + 3], %g2 | 25 | ldstub [%g1 + 3], %g2 |
26 | b ___rw_read_enter_spin_on_wlock | 26 | b ___rw_read_enter_spin_on_wlock |
27 | ldub [%g1 + 3], %g2 | 27 | ldub [%g1 + 3], %g2 |
28 | ___rw_read_try_spin_on_wlock: | ||
29 | andcc %g2, 0xff, %g0 | ||
30 | be,a ___rw_read_try | ||
31 | ldstub [%g1 + 3], %g2 | ||
32 | xnorcc %g2, 0x0, %o0 /* if g2 is ~0, set o0 to 0 and bugger off */ | ||
33 | bne,a ___rw_read_enter_spin_on_wlock | ||
34 | ld [%g1], %g2 | ||
35 | retl | ||
36 | mov %g4, %o7 | ||
28 | ___rw_read_exit_spin_on_wlock: | 37 | ___rw_read_exit_spin_on_wlock: |
29 | orcc %g2, 0x0, %g0 | 38 | orcc %g2, 0x0, %g0 |
30 | be,a ___rw_read_exit | 39 | be,a ___rw_read_exit |
@@ -60,6 +69,17 @@ ___rw_read_exit: | |||
60 | retl | 69 | retl |
61 | mov %g4, %o7 | 70 | mov %g4, %o7 |
62 | 71 | ||
72 | .globl ___rw_read_try | ||
73 | ___rw_read_try: | ||
74 | orcc %g2, 0x0, %g0 | ||
75 | bne ___rw_read_try_spin_on_wlock | ||
76 | ld [%g1], %g2 | ||
77 | add %g2, 1, %g2 | ||
78 | st %g2, [%g1] | ||
79 | set 1, %o1 | ||
80 | retl | ||
81 | mov %g4, %o7 | ||
82 | |||
63 | .globl ___rw_write_enter | 83 | .globl ___rw_write_enter |
64 | ___rw_write_enter: | 84 | ___rw_write_enter: |
65 | orcc %g2, 0x0, %g0 | 85 | orcc %g2, 0x0, %g0 |
diff --git a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c index 8a9b470e1b65..2df25c2b4071 100644 --- a/arch/sparc64/kernel/ebus.c +++ b/arch/sparc64/kernel/ebus.c | |||
@@ -79,7 +79,7 @@ static void __ebus_dma_reset(struct ebus_dma_info *p, int no_drain) | |||
79 | } | 79 | } |
80 | } | 80 | } |
81 | 81 | ||
82 | static irqreturn_t ebus_dma_irq(int irq, void *dev_id, struct pt_regs *regs) | 82 | static irqreturn_t ebus_dma_irq(int irq, void *dev_id) |
83 | { | 83 | { |
84 | struct ebus_dma_info *p = dev_id; | 84 | struct ebus_dma_info *p = dev_id; |
85 | unsigned long flags; | 85 | unsigned long flags; |
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 4e64724cb9ae..d64b1ea848de 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -522,12 +522,13 @@ void ack_bad_irq(unsigned int virt_irq) | |||
522 | } | 522 | } |
523 | 523 | ||
524 | #ifndef CONFIG_SMP | 524 | #ifndef CONFIG_SMP |
525 | extern irqreturn_t timer_interrupt(int, void *, struct pt_regs *); | 525 | extern irqreturn_t timer_interrupt(int, void *); |
526 | 526 | ||
527 | void timer_irq(int irq, struct pt_regs *regs) | 527 | void timer_irq(int irq, struct pt_regs *regs) |
528 | { | 528 | { |
529 | unsigned long clr_mask = 1 << irq; | 529 | unsigned long clr_mask = 1 << irq; |
530 | unsigned long tick_mask = tick_ops->softint_mask; | 530 | unsigned long tick_mask = tick_ops->softint_mask; |
531 | struct pt_regs *old_regs; | ||
531 | 532 | ||
532 | if (get_softint() & tick_mask) { | 533 | if (get_softint() & tick_mask) { |
533 | irq = 0; | 534 | irq = 0; |
@@ -535,21 +536,25 @@ void timer_irq(int irq, struct pt_regs *regs) | |||
535 | } | 536 | } |
536 | clear_softint(clr_mask); | 537 | clear_softint(clr_mask); |
537 | 538 | ||
539 | old_regs = set_irq_regs(regs); | ||
538 | irq_enter(); | 540 | irq_enter(); |
539 | 541 | ||
540 | kstat_this_cpu.irqs[0]++; | 542 | kstat_this_cpu.irqs[0]++; |
541 | timer_interrupt(irq, NULL, regs); | 543 | timer_interrupt(irq, NULL); |
542 | 544 | ||
543 | irq_exit(); | 545 | irq_exit(); |
546 | set_irq_regs(old_regs); | ||
544 | } | 547 | } |
545 | #endif | 548 | #endif |
546 | 549 | ||
547 | void handler_irq(int irq, struct pt_regs *regs) | 550 | void handler_irq(int irq, struct pt_regs *regs) |
548 | { | 551 | { |
549 | struct ino_bucket *bucket; | 552 | struct ino_bucket *bucket; |
553 | struct pt_regs *old_regs; | ||
550 | 554 | ||
551 | clear_softint(1 << irq); | 555 | clear_softint(1 << irq); |
552 | 556 | ||
557 | old_regs = set_irq_regs(regs); | ||
553 | irq_enter(); | 558 | irq_enter(); |
554 | 559 | ||
555 | /* Sliiiick... */ | 560 | /* Sliiiick... */ |
@@ -558,12 +563,13 @@ void handler_irq(int irq, struct pt_regs *regs) | |||
558 | struct ino_bucket *next = __bucket(bucket->irq_chain); | 563 | struct ino_bucket *next = __bucket(bucket->irq_chain); |
559 | 564 | ||
560 | bucket->irq_chain = 0; | 565 | bucket->irq_chain = 0; |
561 | __do_IRQ(bucket->virt_irq, regs); | 566 | __do_IRQ(bucket->virt_irq); |
562 | 567 | ||
563 | bucket = next; | 568 | bucket = next; |
564 | } | 569 | } |
565 | 570 | ||
566 | irq_exit(); | 571 | irq_exit(); |
572 | set_irq_regs(old_regs); | ||
567 | } | 573 | } |
568 | 574 | ||
569 | struct sun5_timer { | 575 | struct sun5_timer { |
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c index 1ec0aab68c08..fda5db223d96 100644 --- a/arch/sparc64/kernel/pci_psycho.c +++ b/arch/sparc64/kernel/pci_psycho.c | |||
@@ -533,7 +533,7 @@ static void psycho_check_iommu_error(struct pci_controller_info *p, | |||
533 | #define PSYCHO_UEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ | 533 | #define PSYCHO_UEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ |
534 | #define PSYCHO_UE_AFAR 0x0038UL | 534 | #define PSYCHO_UE_AFAR 0x0038UL |
535 | 535 | ||
536 | static irqreturn_t psycho_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | 536 | static irqreturn_t psycho_ue_intr(int irq, void *dev_id) |
537 | { | 537 | { |
538 | struct pci_controller_info *p = dev_id; | 538 | struct pci_controller_info *p = dev_id; |
539 | unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_UE_AFSR; | 539 | unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_UE_AFSR; |
@@ -610,7 +610,7 @@ static irqreturn_t psycho_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
610 | #define PSYCHO_CEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ | 610 | #define PSYCHO_CEAFSR_RESV2 0x00000000007fffffUL /* Reserved */ |
611 | #define PSYCHO_CE_AFAR 0x0040UL | 611 | #define PSYCHO_CE_AFAR 0x0040UL |
612 | 612 | ||
613 | static irqreturn_t psycho_ce_intr(int irq, void *dev_id, struct pt_regs *regs) | 613 | static irqreturn_t psycho_ce_intr(int irq, void *dev_id) |
614 | { | 614 | { |
615 | struct pci_controller_info *p = dev_id; | 615 | struct pci_controller_info *p = dev_id; |
616 | unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_CE_AFSR; | 616 | unsigned long afsr_reg = p->pbm_A.controller_regs + PSYCHO_CE_AFSR; |
@@ -735,7 +735,7 @@ static irqreturn_t psycho_pcierr_intr_other(struct pci_pbm_info *pbm, int is_pbm | |||
735 | return ret; | 735 | return ret; |
736 | } | 736 | } |
737 | 737 | ||
738 | static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) | 738 | static irqreturn_t psycho_pcierr_intr(int irq, void *dev_id) |
739 | { | 739 | { |
740 | struct pci_pbm_info *pbm = dev_id; | 740 | struct pci_pbm_info *pbm = dev_id; |
741 | struct pci_controller_info *p = pbm->parent; | 741 | struct pci_controller_info *p = pbm->parent; |
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c index 45891850b90d..6ec569828c29 100644 --- a/arch/sparc64/kernel/pci_sabre.c +++ b/arch/sparc64/kernel/pci_sabre.c | |||
@@ -574,7 +574,7 @@ static void sabre_check_iommu_error(struct pci_controller_info *p, | |||
574 | spin_unlock_irqrestore(&iommu->lock, flags); | 574 | spin_unlock_irqrestore(&iommu->lock, flags); |
575 | } | 575 | } |
576 | 576 | ||
577 | static irqreturn_t sabre_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | 577 | static irqreturn_t sabre_ue_intr(int irq, void *dev_id) |
578 | { | 578 | { |
579 | struct pci_controller_info *p = dev_id; | 579 | struct pci_controller_info *p = dev_id; |
580 | unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_UE_AFSR; | 580 | unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_UE_AFSR; |
@@ -634,7 +634,7 @@ static irqreturn_t sabre_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
634 | return IRQ_HANDLED; | 634 | return IRQ_HANDLED; |
635 | } | 635 | } |
636 | 636 | ||
637 | static irqreturn_t sabre_ce_intr(int irq, void *dev_id, struct pt_regs *regs) | 637 | static irqreturn_t sabre_ce_intr(int irq, void *dev_id) |
638 | { | 638 | { |
639 | struct pci_controller_info *p = dev_id; | 639 | struct pci_controller_info *p = dev_id; |
640 | unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_CE_AFSR; | 640 | unsigned long afsr_reg = p->pbm_A.controller_regs + SABRE_CE_AFSR; |
@@ -726,7 +726,7 @@ static irqreturn_t sabre_pcierr_intr_other(struct pci_controller_info *p) | |||
726 | return ret; | 726 | return ret; |
727 | } | 727 | } |
728 | 728 | ||
729 | static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) | 729 | static irqreturn_t sabre_pcierr_intr(int irq, void *dev_id) |
730 | { | 730 | { |
731 | struct pci_controller_info *p = dev_id; | 731 | struct pci_controller_info *p = dev_id; |
732 | unsigned long afsr_reg, afar_reg; | 732 | unsigned long afsr_reg, afar_reg; |
diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c index 75ade83ecc65..66911b126aed 100644 --- a/arch/sparc64/kernel/pci_schizo.c +++ b/arch/sparc64/kernel/pci_schizo.c | |||
@@ -515,7 +515,7 @@ static void schizo_check_iommu_error(struct pci_controller_info *p, | |||
515 | #define SCHIZO_UEAFSR_MTAG 0x000000000000e000UL /* Safari */ | 515 | #define SCHIZO_UEAFSR_MTAG 0x000000000000e000UL /* Safari */ |
516 | #define SCHIZO_UEAFSR_ECCSYND 0x00000000000001ffUL /* Safari */ | 516 | #define SCHIZO_UEAFSR_ECCSYND 0x00000000000001ffUL /* Safari */ |
517 | 517 | ||
518 | static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | 518 | static irqreturn_t schizo_ue_intr(int irq, void *dev_id) |
519 | { | 519 | { |
520 | struct pci_controller_info *p = dev_id; | 520 | struct pci_controller_info *p = dev_id; |
521 | unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_UE_AFSR; | 521 | unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_UE_AFSR; |
@@ -603,7 +603,7 @@ static irqreturn_t schizo_ue_intr(int irq, void *dev_id, struct pt_regs *regs) | |||
603 | #define SCHIZO_CEAFSR_MTAG 0x000000000000e000UL | 603 | #define SCHIZO_CEAFSR_MTAG 0x000000000000e000UL |
604 | #define SCHIZO_CEAFSR_ECCSYND 0x00000000000001ffUL | 604 | #define SCHIZO_CEAFSR_ECCSYND 0x00000000000001ffUL |
605 | 605 | ||
606 | static irqreturn_t schizo_ce_intr(int irq, void *dev_id, struct pt_regs *regs) | 606 | static irqreturn_t schizo_ce_intr(int irq, void *dev_id) |
607 | { | 607 | { |
608 | struct pci_controller_info *p = dev_id; | 608 | struct pci_controller_info *p = dev_id; |
609 | unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_CE_AFSR; | 609 | unsigned long afsr_reg = p->pbm_B.controller_regs + SCHIZO_CE_AFSR; |
@@ -778,7 +778,7 @@ static irqreturn_t schizo_pcierr_intr_other(struct pci_pbm_info *pbm) | |||
778 | return ret; | 778 | return ret; |
779 | } | 779 | } |
780 | 780 | ||
781 | static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *regs) | 781 | static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id) |
782 | { | 782 | { |
783 | struct pci_pbm_info *pbm = dev_id; | 783 | struct pci_pbm_info *pbm = dev_id; |
784 | struct pci_controller_info *p = pbm->parent; | 784 | struct pci_controller_info *p = pbm->parent; |
@@ -933,7 +933,7 @@ static irqreturn_t schizo_pcierr_intr(int irq, void *dev_id, struct pt_regs *reg | |||
933 | /* We only expect UNMAP errors here. The rest of the Safari errors | 933 | /* We only expect UNMAP errors here. The rest of the Safari errors |
934 | * are marked fatal and thus cause a system reset. | 934 | * are marked fatal and thus cause a system reset. |
935 | */ | 935 | */ |
936 | static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id, struct pt_regs *regs) | 936 | static irqreturn_t schizo_safarierr_intr(int irq, void *dev_id) |
937 | { | 937 | { |
938 | struct pci_controller_info *p = dev_id; | 938 | struct pci_controller_info *p = dev_id; |
939 | u64 errlog; | 939 | u64 errlog; |
diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c index 0b9c70627ce4..699b24b890df 100644 --- a/arch/sparc64/kernel/power.c +++ b/arch/sparc64/kernel/power.c | |||
@@ -35,7 +35,7 @@ static void __iomem *power_reg; | |||
35 | static DECLARE_WAIT_QUEUE_HEAD(powerd_wait); | 35 | static DECLARE_WAIT_QUEUE_HEAD(powerd_wait); |
36 | static int button_pressed; | 36 | static int button_pressed; |
37 | 37 | ||
38 | static irqreturn_t power_handler(int irq, void *dev_id, struct pt_regs *regs) | 38 | static irqreturn_t power_handler(int irq, void *dev_id) |
39 | { | 39 | { |
40 | if (button_pressed == 0) { | 40 | if (button_pressed == 0) { |
41 | button_pressed = 1; | 41 | button_pressed = 1; |
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c index c49a57795743..01d6d869ea2b 100644 --- a/arch/sparc64/kernel/sbus.c +++ b/arch/sparc64/kernel/sbus.c | |||
@@ -839,7 +839,7 @@ unsigned int sbus_build_irq(void *buscookie, unsigned int ino) | |||
839 | #define SYSIO_UEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ | 839 | #define SYSIO_UEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ |
840 | #define SYSIO_UEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ | 840 | #define SYSIO_UEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ |
841 | #define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ | 841 | #define SYSIO_UEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ |
842 | static irqreturn_t sysio_ue_handler(int irq, void *dev_id, struct pt_regs *regs) | 842 | static irqreturn_t sysio_ue_handler(int irq, void *dev_id) |
843 | { | 843 | { |
844 | struct sbus_bus *sbus = dev_id; | 844 | struct sbus_bus *sbus = dev_id; |
845 | struct sbus_iommu *iommu = sbus->iommu; | 845 | struct sbus_iommu *iommu = sbus->iommu; |
@@ -911,7 +911,7 @@ static irqreturn_t sysio_ue_handler(int irq, void *dev_id, struct pt_regs *regs) | |||
911 | #define SYSIO_CEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ | 911 | #define SYSIO_CEAFSR_SIZE 0x00001c0000000000UL /* Bad transfer size 2^SIZE */ |
912 | #define SYSIO_CEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ | 912 | #define SYSIO_CEAFSR_MID 0x000003e000000000UL /* UPA MID causing the fault */ |
913 | #define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ | 913 | #define SYSIO_CEAFSR_RESV2 0x0000001fffffffffUL /* Reserved */ |
914 | static irqreturn_t sysio_ce_handler(int irq, void *dev_id, struct pt_regs *regs) | 914 | static irqreturn_t sysio_ce_handler(int irq, void *dev_id) |
915 | { | 915 | { |
916 | struct sbus_bus *sbus = dev_id; | 916 | struct sbus_bus *sbus = dev_id; |
917 | struct sbus_iommu *iommu = sbus->iommu; | 917 | struct sbus_iommu *iommu = sbus->iommu; |
@@ -988,7 +988,7 @@ static irqreturn_t sysio_ce_handler(int irq, void *dev_id, struct pt_regs *regs) | |||
988 | #define SYSIO_SBAFSR_SIZE 0x00001c0000000000UL /* Size of transfer */ | 988 | #define SYSIO_SBAFSR_SIZE 0x00001c0000000000UL /* Size of transfer */ |
989 | #define SYSIO_SBAFSR_MID 0x000003e000000000UL /* MID causing the error */ | 989 | #define SYSIO_SBAFSR_MID 0x000003e000000000UL /* MID causing the error */ |
990 | #define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */ | 990 | #define SYSIO_SBAFSR_RESV3 0x0000001fffffffffUL /* Reserved */ |
991 | static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id, struct pt_regs *regs) | 991 | static irqreturn_t sysio_sbus_error_handler(int irq, void *dev_id) |
992 | { | 992 | { |
993 | struct sbus_bus *sbus = dev_id; | 993 | struct sbus_bus *sbus = dev_id; |
994 | struct sbus_iommu *iommu = sbus->iommu; | 994 | struct sbus_iommu *iommu = sbus->iommu; |
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index f62bf3a2de1a..cc09d8266414 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <asm/cpudata.h> | 31 | #include <asm/cpudata.h> |
32 | 32 | ||
33 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
34 | #include <asm/irq_regs.h> | ||
34 | #include <asm/page.h> | 35 | #include <asm/page.h> |
35 | #include <asm/pgtable.h> | 36 | #include <asm/pgtable.h> |
36 | #include <asm/oplib.h> | 37 | #include <asm/oplib.h> |
@@ -1187,6 +1188,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs) | |||
1187 | unsigned long compare, tick, pstate; | 1188 | unsigned long compare, tick, pstate; |
1188 | int cpu = smp_processor_id(); | 1189 | int cpu = smp_processor_id(); |
1189 | int user = user_mode(regs); | 1190 | int user = user_mode(regs); |
1191 | struct pt_regs *old_regs; | ||
1190 | 1192 | ||
1191 | /* | 1193 | /* |
1192 | * Check for level 14 softint. | 1194 | * Check for level 14 softint. |
@@ -1203,8 +1205,9 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs) | |||
1203 | clear_softint(tick_mask); | 1205 | clear_softint(tick_mask); |
1204 | } | 1206 | } |
1205 | 1207 | ||
1208 | old_regs = set_irq_regs(regs); | ||
1206 | do { | 1209 | do { |
1207 | profile_tick(CPU_PROFILING, regs); | 1210 | profile_tick(CPU_PROFILING); |
1208 | if (!--prof_counter(cpu)) { | 1211 | if (!--prof_counter(cpu)) { |
1209 | irq_enter(); | 1212 | irq_enter(); |
1210 | 1213 | ||
@@ -1236,6 +1239,7 @@ void smp_percpu_timer_interrupt(struct pt_regs *regs) | |||
1236 | : /* no outputs */ | 1239 | : /* no outputs */ |
1237 | : "r" (pstate)); | 1240 | : "r" (pstate)); |
1238 | } while (time_after_eq(tick, compare)); | 1241 | } while (time_after_eq(tick, compare)); |
1242 | set_irq_regs(old_regs); | ||
1239 | } | 1243 | } |
1240 | 1244 | ||
1241 | static void __init smp_setup_percpu_timer(void) | 1245 | static void __init smp_setup_percpu_timer(void) |
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c index 00f6fc4aaaff..061e1b1fa583 100644 --- a/arch/sparc64/kernel/time.c +++ b/arch/sparc64/kernel/time.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include <asm/cpudata.h> | 45 | #include <asm/cpudata.h> |
46 | #include <asm/uaccess.h> | 46 | #include <asm/uaccess.h> |
47 | #include <asm/prom.h> | 47 | #include <asm/prom.h> |
48 | #include <asm/irq_regs.h> | ||
48 | 49 | ||
49 | DEFINE_SPINLOCK(mostek_lock); | 50 | DEFINE_SPINLOCK(mostek_lock); |
50 | DEFINE_SPINLOCK(rtc_lock); | 51 | DEFINE_SPINLOCK(rtc_lock); |
@@ -452,7 +453,7 @@ static inline void timer_check_rtc(void) | |||
452 | } | 453 | } |
453 | } | 454 | } |
454 | 455 | ||
455 | irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) | 456 | irqreturn_t timer_interrupt(int irq, void *dev_id) |
456 | { | 457 | { |
457 | unsigned long ticks, compare, pstate; | 458 | unsigned long ticks, compare, pstate; |
458 | 459 | ||
@@ -460,8 +461,8 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |||
460 | 461 | ||
461 | do { | 462 | do { |
462 | #ifndef CONFIG_SMP | 463 | #ifndef CONFIG_SMP |
463 | profile_tick(CPU_PROFILING, regs); | 464 | profile_tick(CPU_PROFILING); |
464 | update_process_times(user_mode(regs)); | 465 | update_process_times(user_mode(get_irq_regs())); |
465 | #endif | 466 | #endif |
466 | do_timer(1); | 467 | do_timer(1); |
467 | 468 | ||
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c index cfd9f01fd464..426633e5d6e3 100644 --- a/arch/um/drivers/line.c +++ b/arch/um/drivers/line.c | |||
@@ -20,7 +20,7 @@ | |||
20 | 20 | ||
21 | #define LINE_BUFSIZE 4096 | 21 | #define LINE_BUFSIZE 4096 |
22 | 22 | ||
23 | static irqreturn_t line_interrupt(int irq, void *data, struct pt_regs *unused) | 23 | static irqreturn_t line_interrupt(int irq, void *data) |
24 | { | 24 | { |
25 | struct chan *chan = data; | 25 | struct chan *chan = data; |
26 | struct line *line = chan->line; | 26 | struct line *line = chan->line; |
@@ -364,8 +364,7 @@ void line_unthrottle(struct tty_struct *tty) | |||
364 | reactivate_chan(&line->chan_list, line->driver->read_irq); | 364 | reactivate_chan(&line->chan_list, line->driver->read_irq); |
365 | } | 365 | } |
366 | 366 | ||
367 | static irqreturn_t line_write_interrupt(int irq, void *data, | 367 | static irqreturn_t line_write_interrupt(int irq, void *data) |
368 | struct pt_regs *unused) | ||
369 | { | 368 | { |
370 | struct chan *chan = data; | 369 | struct chan *chan = data; |
371 | struct line *line = chan->line; | 370 | struct line *line = chan->line; |
@@ -712,7 +711,7 @@ struct winch { | |||
712 | struct tty_struct *tty; | 711 | struct tty_struct *tty; |
713 | }; | 712 | }; |
714 | 713 | ||
715 | static irqreturn_t winch_interrupt(int irq, void *data, struct pt_regs *unused) | 714 | static irqreturn_t winch_interrupt(int irq, void *data) |
716 | { | 715 | { |
717 | struct winch *winch = data; | 716 | struct winch *winch = data; |
718 | struct tty_struct *tty; | 717 | struct tty_struct *tty; |
diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c index a67dcbd78de4..d08bd036ccb8 100644 --- a/arch/um/drivers/mconsole_kern.c +++ b/arch/um/drivers/mconsole_kern.c | |||
@@ -74,8 +74,7 @@ static void mc_work_proc(void *unused) | |||
74 | 74 | ||
75 | static DECLARE_WORK(mconsole_work, mc_work_proc, NULL); | 75 | static DECLARE_WORK(mconsole_work, mc_work_proc, NULL); |
76 | 76 | ||
77 | static irqreturn_t mconsole_interrupt(int irq, void *dev_id, | 77 | static irqreturn_t mconsole_interrupt(int irq, void *dev_id) |
78 | struct pt_regs *regs) | ||
79 | { | 78 | { |
80 | /* long to avoid size mismatch warnings from gcc */ | 79 | /* long to avoid size mismatch warnings from gcc */ |
81 | long fd; | 80 | long fd; |
@@ -674,8 +673,9 @@ static void with_console(struct mc_request *req, void (*proc)(void *), | |||
674 | static void sysrq_proc(void *arg) | 673 | static void sysrq_proc(void *arg) |
675 | { | 674 | { |
676 | char *op = arg; | 675 | char *op = arg; |
677 | 676 | struct pt_regs *old_regs = set_irq_regs(¤t->thread.regs); | |
678 | handle_sysrq(*op, ¤t->thread.regs, NULL); | 677 | handle_sysrq(*op, NULL); |
678 | set_irq_regs(old_regs); | ||
679 | } | 679 | } |
680 | 680 | ||
681 | void mconsole_sysrq(struct mc_request *req) | 681 | void mconsole_sysrq(struct mc_request *req) |
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c index c1c5604752fb..ec9eb8bd9432 100644 --- a/arch/um/drivers/net_kern.c +++ b/arch/um/drivers/net_kern.c | |||
@@ -77,7 +77,7 @@ static void uml_dev_close(void* dev) | |||
77 | dev_close( (struct net_device *) dev); | 77 | dev_close( (struct net_device *) dev); |
78 | } | 78 | } |
79 | 79 | ||
80 | irqreturn_t uml_net_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 80 | irqreturn_t uml_net_interrupt(int irq, void *dev_id) |
81 | { | 81 | { |
82 | struct net_device *dev = dev_id; | 82 | struct net_device *dev = dev_id; |
83 | struct uml_net_private *lp = dev->priv; | 83 | struct uml_net_private *lp = dev->priv; |
diff --git a/arch/um/drivers/port_kern.c b/arch/um/drivers/port_kern.c index 73755f37a8a8..ce9f3733f73e 100644 --- a/arch/um/drivers/port_kern.c +++ b/arch/um/drivers/port_kern.c | |||
@@ -47,7 +47,7 @@ struct connection { | |||
47 | struct port_list *port; | 47 | struct port_list *port; |
48 | }; | 48 | }; |
49 | 49 | ||
50 | static irqreturn_t pipe_interrupt(int irq, void *data, struct pt_regs *regs) | 50 | static irqreturn_t pipe_interrupt(int irq, void *data) |
51 | { | 51 | { |
52 | struct connection *conn = data; | 52 | struct connection *conn = data; |
53 | int fd; | 53 | int fd; |
@@ -152,7 +152,7 @@ void port_work_proc(void *unused) | |||
152 | 152 | ||
153 | DECLARE_WORK(port_work, port_work_proc, NULL); | 153 | DECLARE_WORK(port_work, port_work_proc, NULL); |
154 | 154 | ||
155 | static irqreturn_t port_interrupt(int irq, void *data, struct pt_regs *regs) | 155 | static irqreturn_t port_interrupt(int irq, void *data) |
156 | { | 156 | { |
157 | struct port_list *port = data; | 157 | struct port_list *port = data; |
158 | 158 | ||
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index f0b0668458b7..bc458f57921b 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
@@ -524,7 +524,7 @@ static void ubd_handler(void) | |||
524 | do_ubd_request(ubd_queue); | 524 | do_ubd_request(ubd_queue); |
525 | } | 525 | } |
526 | 526 | ||
527 | static irqreturn_t ubd_intr(int irq, void *dev, struct pt_regs *unused) | 527 | static irqreturn_t ubd_intr(int irq, void *dev) |
528 | { | 528 | { |
529 | ubd_handler(); | 529 | ubd_handler(); |
530 | return(IRQ_HANDLED); | 530 | return(IRQ_HANDLED); |
diff --git a/arch/um/drivers/xterm_kern.c b/arch/um/drivers/xterm_kern.c index 6036ec85895a..a4ce7058e10e 100644 --- a/arch/um/drivers/xterm_kern.c +++ b/arch/um/drivers/xterm_kern.c | |||
@@ -21,7 +21,7 @@ struct xterm_wait { | |||
21 | int new_fd; | 21 | int new_fd; |
22 | }; | 22 | }; |
23 | 23 | ||
24 | static irqreturn_t xterm_interrupt(int irq, void *data, struct pt_regs *regs) | 24 | static irqreturn_t xterm_interrupt(int irq, void *data) |
25 | { | 25 | { |
26 | struct xterm_wait *xterm = data; | 26 | struct xterm_wait *xterm = data; |
27 | int fd; | 27 | int fd; |
diff --git a/arch/um/include/irq_kern.h b/arch/um/include/irq_kern.h index c222d56b1494..81beb1841299 100644 --- a/arch/um/include/irq_kern.h +++ b/arch/um/include/irq_kern.h | |||
@@ -10,12 +10,11 @@ | |||
10 | #include "asm/ptrace.h" | 10 | #include "asm/ptrace.h" |
11 | 11 | ||
12 | extern int um_request_irq(unsigned int irq, int fd, int type, | 12 | extern int um_request_irq(unsigned int irq, int fd, int type, |
13 | irqreturn_t (*handler)(int, void *, | 13 | irqreturn_t (*handler)(int, void *), |
14 | struct pt_regs *), | ||
15 | unsigned long irqflags, const char * devname, | 14 | unsigned long irqflags, const char * devname, |
16 | void *dev_id); | 15 | void *dev_id); |
17 | extern int init_aio_irq(int irq, char *name, | 16 | extern int init_aio_irq(int irq, char *name, |
18 | irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 17 | irqreturn_t (*handler)(int, void *)); |
19 | 18 | ||
20 | #endif | 19 | #endif |
21 | 20 | ||
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c index 7c41dabe7a2c..3c01c2bc979a 100644 --- a/arch/um/kernel/irq.c +++ b/arch/um/kernel/irq.c | |||
@@ -355,14 +355,16 @@ void forward_interrupts(int pid) | |||
355 | */ | 355 | */ |
356 | unsigned int do_IRQ(int irq, union uml_pt_regs *regs) | 356 | unsigned int do_IRQ(int irq, union uml_pt_regs *regs) |
357 | { | 357 | { |
358 | irq_enter(); | 358 | struct pt_regs *old_regs = set_irq_regs((struct pt_regs *)regs); |
359 | __do_IRQ(irq); | 359 | irq_enter(); |
360 | irq_exit(); | 360 | __do_IRQ(irq); |
361 | return 1; | 361 | irq_exit(); |
362 | set_irq_regs(old_regs); | ||
363 | return 1; | ||
362 | } | 364 | } |
363 | 365 | ||
364 | int um_request_irq(unsigned int irq, int fd, int type, | 366 | int um_request_irq(unsigned int irq, int fd, int type, |
365 | irqreturn_t (*handler)(int, void *, struct pt_regs *), | 367 | irqreturn_t (*handler)(int, void *), |
366 | unsigned long irqflags, const char * devname, | 368 | unsigned long irqflags, const char * devname, |
367 | void *dev_id) | 369 | void *dev_id) |
368 | { | 370 | { |
@@ -423,8 +425,7 @@ void __init init_IRQ(void) | |||
423 | } | 425 | } |
424 | } | 426 | } |
425 | 427 | ||
426 | int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *, | 428 | int init_aio_irq(int irq, char *name, irqreturn_t (*handler)(int, void *)) |
427 | struct pt_regs *)) | ||
428 | { | 429 | { |
429 | int fds[2], err; | 430 | int fds[2], err; |
430 | 431 | ||
diff --git a/arch/um/kernel/sigio.c b/arch/um/kernel/sigio.c index 0ad755ceb212..2b0ab438301c 100644 --- a/arch/um/kernel/sigio.c +++ b/arch/um/kernel/sigio.c | |||
@@ -17,7 +17,7 @@ | |||
17 | /* Protected by sigio_lock() called from write_sigio_workaround */ | 17 | /* Protected by sigio_lock() called from write_sigio_workaround */ |
18 | static int sigio_irq_fd = -1; | 18 | static int sigio_irq_fd = -1; |
19 | 19 | ||
20 | static irqreturn_t sigio_interrupt(int irq, void *data, struct pt_regs *unused) | 20 | static irqreturn_t sigio_interrupt(int irq, void *data) |
21 | { | 21 | { |
22 | char c; | 22 | char c; |
23 | 23 | ||
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c index a92965f8f9cd..2e354b3ca060 100644 --- a/arch/um/kernel/time.c +++ b/arch/um/kernel/time.c | |||
@@ -86,7 +86,7 @@ static inline unsigned long long get_time(void) | |||
86 | return nsecs; | 86 | return nsecs; |
87 | } | 87 | } |
88 | 88 | ||
89 | irqreturn_t um_timer(int irq, void *dev, struct pt_regs *regs) | 89 | irqreturn_t um_timer(int irq, void *dev) |
90 | { | 90 | { |
91 | unsigned long long nsecs; | 91 | unsigned long long nsecs; |
92 | unsigned long flags; | 92 | unsigned long flags; |
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c index af4a1c71a80d..4d9d5ed942b2 100644 --- a/arch/x86_64/kernel/apic.c +++ b/arch/x86_64/kernel/apic.c | |||
@@ -913,8 +913,10 @@ void smp_local_timer_interrupt(void) | |||
913 | * [ if a single-CPU system runs an SMP kernel then we call the local | 913 | * [ if a single-CPU system runs an SMP kernel then we call the local |
914 | * interrupt as well. Thus we cannot inline the local irq ... ] | 914 | * interrupt as well. Thus we cannot inline the local irq ... ] |
915 | */ | 915 | */ |
916 | void smp_apic_timer_interrupt(void) | 916 | void smp_apic_timer_interrupt(struct pt_regs *regs) |
917 | { | 917 | { |
918 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
919 | |||
918 | /* | 920 | /* |
919 | * the NMI deadlock-detector uses this. | 921 | * the NMI deadlock-detector uses this. |
920 | */ | 922 | */ |
@@ -934,6 +936,7 @@ void smp_apic_timer_interrupt(void) | |||
934 | irq_enter(); | 936 | irq_enter(); |
935 | smp_local_timer_interrupt(); | 937 | smp_local_timer_interrupt(); |
936 | irq_exit(); | 938 | irq_exit(); |
939 | set_irq_regs(old_regs); | ||
937 | } | 940 | } |
938 | 941 | ||
939 | /* | 942 | /* |
diff --git a/arch/x86_64/kernel/genapic_cluster.c b/arch/x86_64/kernel/genapic_cluster.c index cdb90e671b88..73d76308b955 100644 --- a/arch/x86_64/kernel/genapic_cluster.c +++ b/arch/x86_64/kernel/genapic_cluster.c | |||
@@ -63,6 +63,13 @@ static cpumask_t cluster_target_cpus(void) | |||
63 | return cpumask_of_cpu(0); | 63 | return cpumask_of_cpu(0); |
64 | } | 64 | } |
65 | 65 | ||
66 | static cpumask_t cluster_vector_allocation_domain(int cpu) | ||
67 | { | ||
68 | cpumask_t domain = CPU_MASK_NONE; | ||
69 | cpu_set(cpu, domain); | ||
70 | return domain; | ||
71 | } | ||
72 | |||
66 | static void cluster_send_IPI_mask(cpumask_t mask, int vector) | 73 | static void cluster_send_IPI_mask(cpumask_t mask, int vector) |
67 | { | 74 | { |
68 | send_IPI_mask_sequence(mask, vector); | 75 | send_IPI_mask_sequence(mask, vector); |
@@ -119,6 +126,7 @@ struct genapic apic_cluster = { | |||
119 | .int_delivery_mode = dest_Fixed, | 126 | .int_delivery_mode = dest_Fixed, |
120 | .int_dest_mode = (APIC_DEST_PHYSICAL != 0), | 127 | .int_dest_mode = (APIC_DEST_PHYSICAL != 0), |
121 | .target_cpus = cluster_target_cpus, | 128 | .target_cpus = cluster_target_cpus, |
129 | .vector_allocation_domain = cluster_vector_allocation_domain, | ||
122 | .apic_id_registered = cluster_apic_id_registered, | 130 | .apic_id_registered = cluster_apic_id_registered, |
123 | .init_apic_ldr = cluster_init_apic_ldr, | 131 | .init_apic_ldr = cluster_init_apic_ldr, |
124 | .send_IPI_all = cluster_send_IPI_all, | 132 | .send_IPI_all = cluster_send_IPI_all, |
diff --git a/arch/x86_64/kernel/genapic_flat.c b/arch/x86_64/kernel/genapic_flat.c index 50ad153eaac4..0dfc223c1839 100644 --- a/arch/x86_64/kernel/genapic_flat.c +++ b/arch/x86_64/kernel/genapic_flat.c | |||
@@ -22,6 +22,20 @@ static cpumask_t flat_target_cpus(void) | |||
22 | return cpu_online_map; | 22 | return cpu_online_map; |
23 | } | 23 | } |
24 | 24 | ||
25 | static cpumask_t flat_vector_allocation_domain(int cpu) | ||
26 | { | ||
27 | /* Careful. Some cpus do not strictly honor the set of cpus | ||
28 | * specified in the interrupt destination when using lowest | ||
29 | * priority interrupt delivery mode. | ||
30 | * | ||
31 | * In particular there was a hyperthreading cpu observed to | ||
32 | * deliver interrupts to the wrong hyperthread when only one | ||
33 | * hyperthread was specified in the interrupt desitination. | ||
34 | */ | ||
35 | cpumask_t domain = { { [0] = APIC_ALL_CPUS, } }; | ||
36 | return domain; | ||
37 | } | ||
38 | |||
25 | /* | 39 | /* |
26 | * Set up the logical destination ID. | 40 | * Set up the logical destination ID. |
27 | * | 41 | * |
@@ -121,6 +135,7 @@ struct genapic apic_flat = { | |||
121 | .int_delivery_mode = dest_LowestPrio, | 135 | .int_delivery_mode = dest_LowestPrio, |
122 | .int_dest_mode = (APIC_DEST_LOGICAL != 0), | 136 | .int_dest_mode = (APIC_DEST_LOGICAL != 0), |
123 | .target_cpus = flat_target_cpus, | 137 | .target_cpus = flat_target_cpus, |
138 | .vector_allocation_domain = flat_vector_allocation_domain, | ||
124 | .apic_id_registered = flat_apic_id_registered, | 139 | .apic_id_registered = flat_apic_id_registered, |
125 | .init_apic_ldr = flat_init_apic_ldr, | 140 | .init_apic_ldr = flat_init_apic_ldr, |
126 | .send_IPI_all = flat_send_IPI_all, | 141 | .send_IPI_all = flat_send_IPI_all, |
@@ -141,6 +156,14 @@ static cpumask_t physflat_target_cpus(void) | |||
141 | return cpumask_of_cpu(0); | 156 | return cpumask_of_cpu(0); |
142 | } | 157 | } |
143 | 158 | ||
159 | static cpumask_t physflat_vector_allocation_domain(int cpu) | ||
160 | { | ||
161 | cpumask_t domain = CPU_MASK_NONE; | ||
162 | cpu_set(cpu, domain); | ||
163 | return domain; | ||
164 | } | ||
165 | |||
166 | |||
144 | static void physflat_send_IPI_mask(cpumask_t cpumask, int vector) | 167 | static void physflat_send_IPI_mask(cpumask_t cpumask, int vector) |
145 | { | 168 | { |
146 | send_IPI_mask_sequence(cpumask, vector); | 169 | send_IPI_mask_sequence(cpumask, vector); |
@@ -179,6 +202,7 @@ struct genapic apic_physflat = { | |||
179 | .int_delivery_mode = dest_Fixed, | 202 | .int_delivery_mode = dest_Fixed, |
180 | .int_dest_mode = (APIC_DEST_PHYSICAL != 0), | 203 | .int_dest_mode = (APIC_DEST_PHYSICAL != 0), |
181 | .target_cpus = physflat_target_cpus, | 204 | .target_cpus = physflat_target_cpus, |
205 | .vector_allocation_domain = physflat_vector_allocation_domain, | ||
182 | .apic_id_registered = flat_apic_id_registered, | 206 | .apic_id_registered = flat_apic_id_registered, |
183 | .init_apic_ldr = flat_init_apic_ldr,/*not needed, but shouldn't hurt*/ | 207 | .init_apic_ldr = flat_init_apic_ldr,/*not needed, but shouldn't hurt*/ |
184 | .send_IPI_all = physflat_send_IPI_all, | 208 | .send_IPI_all = physflat_send_IPI_all, |
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c index 91728d9d3472..771bcf77daf2 100644 --- a/arch/x86_64/kernel/io_apic.c +++ b/arch/x86_64/kernel/io_apic.c | |||
@@ -47,7 +47,7 @@ | |||
47 | #include <asm/msidef.h> | 47 | #include <asm/msidef.h> |
48 | #include <asm/hypertransport.h> | 48 | #include <asm/hypertransport.h> |
49 | 49 | ||
50 | static int assign_irq_vector(int irq, cpumask_t mask); | 50 | static int assign_irq_vector(int irq, cpumask_t mask, cpumask_t *result); |
51 | 51 | ||
52 | #define __apicdebuginit __init | 52 | #define __apicdebuginit __init |
53 | 53 | ||
@@ -174,12 +174,10 @@ static void set_ioapic_affinity_irq(unsigned int irq, cpumask_t mask) | |||
174 | 174 | ||
175 | cpus_and(mask, tmp, CPU_MASK_ALL); | 175 | cpus_and(mask, tmp, CPU_MASK_ALL); |
176 | 176 | ||
177 | vector = assign_irq_vector(irq, mask); | 177 | vector = assign_irq_vector(irq, mask, &tmp); |
178 | if (vector < 0) | 178 | if (vector < 0) |
179 | return; | 179 | return; |
180 | 180 | ||
181 | cpus_clear(tmp); | ||
182 | cpu_set(vector >> 8, tmp); | ||
183 | dest = cpu_mask_to_apicid(tmp); | 181 | dest = cpu_mask_to_apicid(tmp); |
184 | 182 | ||
185 | /* | 183 | /* |
@@ -188,7 +186,7 @@ static void set_ioapic_affinity_irq(unsigned int irq, cpumask_t mask) | |||
188 | dest = SET_APIC_LOGICAL_ID(dest); | 186 | dest = SET_APIC_LOGICAL_ID(dest); |
189 | 187 | ||
190 | spin_lock_irqsave(&ioapic_lock, flags); | 188 | spin_lock_irqsave(&ioapic_lock, flags); |
191 | __target_IO_APIC_irq(irq, dest, vector & 0xff); | 189 | __target_IO_APIC_irq(irq, dest, vector); |
192 | set_native_irq_info(irq, mask); | 190 | set_native_irq_info(irq, mask); |
193 | spin_unlock_irqrestore(&ioapic_lock, flags); | 191 | spin_unlock_irqrestore(&ioapic_lock, flags); |
194 | } | 192 | } |
@@ -563,9 +561,45 @@ static inline int IO_APIC_irq_trigger(int irq) | |||
563 | } | 561 | } |
564 | 562 | ||
565 | /* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */ | 563 | /* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */ |
566 | unsigned int irq_vector[NR_IRQ_VECTORS] __read_mostly = { FIRST_EXTERNAL_VECTOR, 0 }; | 564 | static u8 irq_vector[NR_IRQ_VECTORS] __read_mostly = { |
565 | [0] = FIRST_EXTERNAL_VECTOR + 0, | ||
566 | [1] = FIRST_EXTERNAL_VECTOR + 1, | ||
567 | [2] = FIRST_EXTERNAL_VECTOR + 2, | ||
568 | [3] = FIRST_EXTERNAL_VECTOR + 3, | ||
569 | [4] = FIRST_EXTERNAL_VECTOR + 4, | ||
570 | [5] = FIRST_EXTERNAL_VECTOR + 5, | ||
571 | [6] = FIRST_EXTERNAL_VECTOR + 6, | ||
572 | [7] = FIRST_EXTERNAL_VECTOR + 7, | ||
573 | [8] = FIRST_EXTERNAL_VECTOR + 8, | ||
574 | [9] = FIRST_EXTERNAL_VECTOR + 9, | ||
575 | [10] = FIRST_EXTERNAL_VECTOR + 10, | ||
576 | [11] = FIRST_EXTERNAL_VECTOR + 11, | ||
577 | [12] = FIRST_EXTERNAL_VECTOR + 12, | ||
578 | [13] = FIRST_EXTERNAL_VECTOR + 13, | ||
579 | [14] = FIRST_EXTERNAL_VECTOR + 14, | ||
580 | [15] = FIRST_EXTERNAL_VECTOR + 15, | ||
581 | }; | ||
582 | |||
583 | static cpumask_t irq_domain[NR_IRQ_VECTORS] __read_mostly = { | ||
584 | [0] = CPU_MASK_ALL, | ||
585 | [1] = CPU_MASK_ALL, | ||
586 | [2] = CPU_MASK_ALL, | ||
587 | [3] = CPU_MASK_ALL, | ||
588 | [4] = CPU_MASK_ALL, | ||
589 | [5] = CPU_MASK_ALL, | ||
590 | [6] = CPU_MASK_ALL, | ||
591 | [7] = CPU_MASK_ALL, | ||
592 | [8] = CPU_MASK_ALL, | ||
593 | [9] = CPU_MASK_ALL, | ||
594 | [10] = CPU_MASK_ALL, | ||
595 | [11] = CPU_MASK_ALL, | ||
596 | [12] = CPU_MASK_ALL, | ||
597 | [13] = CPU_MASK_ALL, | ||
598 | [14] = CPU_MASK_ALL, | ||
599 | [15] = CPU_MASK_ALL, | ||
600 | }; | ||
567 | 601 | ||
568 | static int __assign_irq_vector(int irq, cpumask_t mask) | 602 | static int __assign_irq_vector(int irq, cpumask_t mask, cpumask_t *result) |
569 | { | 603 | { |
570 | /* | 604 | /* |
571 | * NOTE! The local APIC isn't very good at handling | 605 | * NOTE! The local APIC isn't very good at handling |
@@ -587,16 +621,24 @@ static int __assign_irq_vector(int irq, cpumask_t mask) | |||
587 | 621 | ||
588 | BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); | 622 | BUG_ON((unsigned)irq >= NR_IRQ_VECTORS); |
589 | 623 | ||
590 | if (IO_APIC_VECTOR(irq) > 0) | 624 | if (irq_vector[irq] > 0) |
591 | old_vector = IO_APIC_VECTOR(irq); | 625 | old_vector = irq_vector[irq]; |
592 | if ((old_vector > 0) && cpu_isset(old_vector >> 8, mask)) { | 626 | if (old_vector > 0) { |
593 | return old_vector; | 627 | cpus_and(*result, irq_domain[irq], mask); |
628 | if (!cpus_empty(*result)) | ||
629 | return old_vector; | ||
594 | } | 630 | } |
595 | 631 | ||
596 | for_each_cpu_mask(cpu, mask) { | 632 | for_each_cpu_mask(cpu, mask) { |
633 | cpumask_t domain; | ||
634 | int first, new_cpu; | ||
597 | int vector, offset; | 635 | int vector, offset; |
598 | vector = pos[cpu].vector; | 636 | |
599 | offset = pos[cpu].offset; | 637 | domain = vector_allocation_domain(cpu); |
638 | first = first_cpu(domain); | ||
639 | |||
640 | vector = pos[first].vector; | ||
641 | offset = pos[first].offset; | ||
600 | next: | 642 | next: |
601 | vector += 8; | 643 | vector += 8; |
602 | if (vector >= FIRST_SYSTEM_VECTOR) { | 644 | if (vector >= FIRST_SYSTEM_VECTOR) { |
@@ -604,35 +646,40 @@ next: | |||
604 | offset = (offset + 1) % 8; | 646 | offset = (offset + 1) % 8; |
605 | vector = FIRST_DEVICE_VECTOR + offset; | 647 | vector = FIRST_DEVICE_VECTOR + offset; |
606 | } | 648 | } |
607 | if (unlikely(pos[cpu].vector == vector)) | 649 | if (unlikely(pos[first].vector == vector)) |
608 | continue; | 650 | continue; |
609 | if (vector == IA32_SYSCALL_VECTOR) | 651 | if (vector == IA32_SYSCALL_VECTOR) |
610 | goto next; | 652 | goto next; |
611 | if (per_cpu(vector_irq, cpu)[vector] != -1) | 653 | for_each_cpu_mask(new_cpu, domain) |
612 | goto next; | 654 | if (per_cpu(vector_irq, cpu)[vector] != -1) |
655 | goto next; | ||
613 | /* Found one! */ | 656 | /* Found one! */ |
614 | pos[cpu].vector = vector; | 657 | for_each_cpu_mask(new_cpu, domain) { |
615 | pos[cpu].offset = offset; | 658 | pos[cpu].vector = vector; |
659 | pos[cpu].offset = offset; | ||
660 | } | ||
616 | if (old_vector >= 0) { | 661 | if (old_vector >= 0) { |
617 | int old_cpu = old_vector >> 8; | 662 | int old_cpu; |
618 | old_vector &= 0xff; | 663 | for_each_cpu_mask(old_cpu, domain) |
619 | per_cpu(vector_irq, old_cpu)[old_vector] = -1; | 664 | per_cpu(vector_irq, old_cpu)[old_vector] = -1; |
620 | } | 665 | } |
621 | per_cpu(vector_irq, cpu)[vector] = irq; | 666 | for_each_cpu_mask(new_cpu, domain) |
622 | vector |= cpu << 8; | 667 | per_cpu(vector_irq, new_cpu)[vector] = irq; |
623 | IO_APIC_VECTOR(irq) = vector; | 668 | irq_vector[irq] = vector; |
669 | irq_domain[irq] = domain; | ||
670 | cpus_and(*result, domain, mask); | ||
624 | return vector; | 671 | return vector; |
625 | } | 672 | } |
626 | return -ENOSPC; | 673 | return -ENOSPC; |
627 | } | 674 | } |
628 | 675 | ||
629 | static int assign_irq_vector(int irq, cpumask_t mask) | 676 | static int assign_irq_vector(int irq, cpumask_t mask, cpumask_t *result) |
630 | { | 677 | { |
631 | int vector; | 678 | int vector; |
632 | unsigned long flags; | 679 | unsigned long flags; |
633 | 680 | ||
634 | spin_lock_irqsave(&vector_lock, flags); | 681 | spin_lock_irqsave(&vector_lock, flags); |
635 | vector = __assign_irq_vector(irq, mask); | 682 | vector = __assign_irq_vector(irq, mask, result); |
636 | spin_unlock_irqrestore(&vector_lock, flags); | 683 | spin_unlock_irqrestore(&vector_lock, flags); |
637 | return vector; | 684 | return vector; |
638 | } | 685 | } |
@@ -704,14 +751,12 @@ static void __init setup_IO_APIC_irqs(void) | |||
704 | 751 | ||
705 | if (IO_APIC_IRQ(irq)) { | 752 | if (IO_APIC_IRQ(irq)) { |
706 | cpumask_t mask; | 753 | cpumask_t mask; |
707 | vector = assign_irq_vector(irq, TARGET_CPUS); | 754 | vector = assign_irq_vector(irq, TARGET_CPUS, &mask); |
708 | if (vector < 0) | 755 | if (vector < 0) |
709 | continue; | 756 | continue; |
710 | 757 | ||
711 | cpus_clear(mask); | ||
712 | cpu_set(vector >> 8, mask); | ||
713 | entry.dest.logical.logical_dest = cpu_mask_to_apicid(mask); | 758 | entry.dest.logical.logical_dest = cpu_mask_to_apicid(mask); |
714 | entry.vector = vector & 0xff; | 759 | entry.vector = vector; |
715 | 760 | ||
716 | ioapic_register_intr(irq, vector, IOAPIC_AUTO); | 761 | ioapic_register_intr(irq, vector, IOAPIC_AUTO); |
717 | if (!apic && (irq < 16)) | 762 | if (!apic && (irq < 16)) |
@@ -1289,7 +1334,7 @@ static inline void init_IO_APIC_traps(void) | |||
1289 | */ | 1334 | */ |
1290 | for (irq = 0; irq < NR_IRQS ; irq++) { | 1335 | for (irq = 0; irq < NR_IRQS ; irq++) { |
1291 | int tmp = irq; | 1336 | int tmp = irq; |
1292 | if (IO_APIC_IRQ(tmp) && !IO_APIC_VECTOR(tmp)) { | 1337 | if (IO_APIC_IRQ(tmp) && !irq_vector[tmp]) { |
1293 | /* | 1338 | /* |
1294 | * Hmm.. We don't have an entry for this, | 1339 | * Hmm.. We don't have an entry for this, |
1295 | * so default to an old-fashioned 8259 | 1340 | * so default to an old-fashioned 8259 |
@@ -1430,12 +1475,13 @@ static inline void check_timer(void) | |||
1430 | { | 1475 | { |
1431 | int apic1, pin1, apic2, pin2; | 1476 | int apic1, pin1, apic2, pin2; |
1432 | int vector; | 1477 | int vector; |
1478 | cpumask_t mask; | ||
1433 | 1479 | ||
1434 | /* | 1480 | /* |
1435 | * get/set the timer IRQ vector: | 1481 | * get/set the timer IRQ vector: |
1436 | */ | 1482 | */ |
1437 | disable_8259A_irq(0); | 1483 | disable_8259A_irq(0); |
1438 | vector = assign_irq_vector(0, TARGET_CPUS); | 1484 | vector = assign_irq_vector(0, TARGET_CPUS, &mask); |
1439 | 1485 | ||
1440 | /* | 1486 | /* |
1441 | * Subtle, code in do_timer_interrupt() expects an AEOI | 1487 | * Subtle, code in do_timer_interrupt() expects an AEOI |
@@ -1667,6 +1713,7 @@ int create_irq(void) | |||
1667 | int new; | 1713 | int new; |
1668 | int vector = 0; | 1714 | int vector = 0; |
1669 | unsigned long flags; | 1715 | unsigned long flags; |
1716 | cpumask_t mask; | ||
1670 | 1717 | ||
1671 | irq = -ENOSPC; | 1718 | irq = -ENOSPC; |
1672 | spin_lock_irqsave(&vector_lock, flags); | 1719 | spin_lock_irqsave(&vector_lock, flags); |
@@ -1675,7 +1722,7 @@ int create_irq(void) | |||
1675 | continue; | 1722 | continue; |
1676 | if (irq_vector[new] != 0) | 1723 | if (irq_vector[new] != 0) |
1677 | continue; | 1724 | continue; |
1678 | vector = __assign_irq_vector(new, TARGET_CPUS); | 1725 | vector = __assign_irq_vector(new, TARGET_CPUS, &mask); |
1679 | if (likely(vector > 0)) | 1726 | if (likely(vector > 0)) |
1680 | irq = new; | 1727 | irq = new; |
1681 | break; | 1728 | break; |
@@ -1707,13 +1754,10 @@ static int msi_compose_msg(struct pci_dev *pdev, unsigned int irq, struct msi_ms | |||
1707 | { | 1754 | { |
1708 | int vector; | 1755 | int vector; |
1709 | unsigned dest; | 1756 | unsigned dest; |
1757 | cpumask_t tmp; | ||
1710 | 1758 | ||
1711 | vector = assign_irq_vector(irq, TARGET_CPUS); | 1759 | vector = assign_irq_vector(irq, TARGET_CPUS, &tmp); |
1712 | if (vector >= 0) { | 1760 | if (vector >= 0) { |
1713 | cpumask_t tmp; | ||
1714 | |||
1715 | cpus_clear(tmp); | ||
1716 | cpu_set(vector >> 8, tmp); | ||
1717 | dest = cpu_mask_to_apicid(tmp); | 1761 | dest = cpu_mask_to_apicid(tmp); |
1718 | 1762 | ||
1719 | msg->address_hi = MSI_ADDR_BASE_HI; | 1763 | msg->address_hi = MSI_ADDR_BASE_HI; |
@@ -1752,12 +1796,10 @@ static void set_msi_irq_affinity(unsigned int irq, cpumask_t mask) | |||
1752 | 1796 | ||
1753 | cpus_and(mask, tmp, CPU_MASK_ALL); | 1797 | cpus_and(mask, tmp, CPU_MASK_ALL); |
1754 | 1798 | ||
1755 | vector = assign_irq_vector(irq, mask); | 1799 | vector = assign_irq_vector(irq, mask, &tmp); |
1756 | if (vector < 0) | 1800 | if (vector < 0) |
1757 | return; | 1801 | return; |
1758 | 1802 | ||
1759 | cpus_clear(tmp); | ||
1760 | cpu_set(vector >> 8, tmp); | ||
1761 | dest = cpu_mask_to_apicid(tmp); | 1803 | dest = cpu_mask_to_apicid(tmp); |
1762 | 1804 | ||
1763 | read_msi_msg(irq, &msg); | 1805 | read_msi_msg(irq, &msg); |
@@ -1844,12 +1886,10 @@ static void set_ht_irq_affinity(unsigned int irq, cpumask_t mask) | |||
1844 | 1886 | ||
1845 | cpus_and(mask, tmp, CPU_MASK_ALL); | 1887 | cpus_and(mask, tmp, CPU_MASK_ALL); |
1846 | 1888 | ||
1847 | vector = assign_irq_vector(irq, mask); | 1889 | vector = assign_irq_vector(irq, mask, &tmp); |
1848 | if (vector < 0) | 1890 | if (vector < 0) |
1849 | return; | 1891 | return; |
1850 | 1892 | ||
1851 | cpus_clear(tmp); | ||
1852 | cpu_set(vector >> 8, tmp); | ||
1853 | dest = cpu_mask_to_apicid(tmp); | 1893 | dest = cpu_mask_to_apicid(tmp); |
1854 | 1894 | ||
1855 | target_ht_irq(irq, dest, vector & 0xff); | 1895 | target_ht_irq(irq, dest, vector & 0xff); |
@@ -1871,15 +1911,13 @@ static struct hw_interrupt_type ht_irq_chip = { | |||
1871 | int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev) | 1911 | int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev) |
1872 | { | 1912 | { |
1873 | int vector; | 1913 | int vector; |
1914 | cpumask_t tmp; | ||
1874 | 1915 | ||
1875 | vector = assign_irq_vector(irq, TARGET_CPUS); | 1916 | vector = assign_irq_vector(irq, TARGET_CPUS, &tmp); |
1876 | if (vector >= 0) { | 1917 | if (vector >= 0) { |
1877 | u32 low, high; | 1918 | u32 low, high; |
1878 | unsigned dest; | 1919 | unsigned dest; |
1879 | cpumask_t tmp; | ||
1880 | 1920 | ||
1881 | cpus_clear(tmp); | ||
1882 | cpu_set(vector >> 8, tmp); | ||
1883 | dest = cpu_mask_to_apicid(tmp); | 1921 | dest = cpu_mask_to_apicid(tmp); |
1884 | 1922 | ||
1885 | high = HT_IRQ_HIGH_DEST_ID(dest); | 1923 | high = HT_IRQ_HIGH_DEST_ID(dest); |
@@ -1945,13 +1983,10 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int triggering, int p | |||
1945 | add_pin_to_irq(irq, ioapic, pin); | 1983 | add_pin_to_irq(irq, ioapic, pin); |
1946 | 1984 | ||
1947 | 1985 | ||
1948 | vector = assign_irq_vector(irq, TARGET_CPUS); | 1986 | vector = assign_irq_vector(irq, TARGET_CPUS, &mask); |
1949 | if (vector < 0) | 1987 | if (vector < 0) |
1950 | return vector; | 1988 | return vector; |
1951 | 1989 | ||
1952 | cpus_clear(mask); | ||
1953 | cpu_set(vector >> 8, mask); | ||
1954 | |||
1955 | /* | 1990 | /* |
1956 | * Generate a PCI IRQ routing entry and program the IOAPIC accordingly. | 1991 | * Generate a PCI IRQ routing entry and program the IOAPIC accordingly. |
1957 | * Note that we mask (disable) IRQs now -- these get enabled when the | 1992 | * Note that we mask (disable) IRQs now -- these get enabled when the |