diff options
212 files changed, 1448 insertions, 1081 deletions
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index 729c475d2269..dba4e70926f5 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c | |||
@@ -129,6 +129,7 @@ unlock: | |||
129 | void | 129 | void |
130 | handle_irq(int irq, struct pt_regs * regs) | 130 | handle_irq(int irq, struct pt_regs * regs) |
131 | { | 131 | { |
132 | struct pt_regs *old_regs; | ||
132 | /* | 133 | /* |
133 | * We ack quickly, we don't want the irq controller | 134 | * We ack quickly, we don't want the irq controller |
134 | * thinking we're snobs just because some other CPU has | 135 | * thinking we're snobs just because some other CPU has |
@@ -149,6 +150,7 @@ handle_irq(int irq, struct pt_regs * regs) | |||
149 | return; | 150 | return; |
150 | } | 151 | } |
151 | 152 | ||
153 | old_regs = set_irq_regs(regs); | ||
152 | irq_enter(); | 154 | irq_enter(); |
153 | /* | 155 | /* |
154 | * __do_IRQ() must be called with IPL_MAX. Note that we do not | 156 | * __do_IRQ() must be called with IPL_MAX. Note that we do not |
@@ -157,6 +159,7 @@ handle_irq(int irq, struct pt_regs * regs) | |||
157 | * at IPL 0. | 159 | * at IPL 0. |
158 | */ | 160 | */ |
159 | local_irq_disable(); | 161 | local_irq_disable(); |
160 | __do_IRQ(irq, regs); | 162 | __do_IRQ(irq); |
161 | irq_exit(); | 163 | irq_exit(); |
164 | set_irq_regs(old_regs); | ||
162 | } | 165 | } |
diff --git a/arch/alpha/kernel/proto.h b/arch/alpha/kernel/proto.h index 21f71287b6f5..408bda25b0b1 100644 --- a/arch/alpha/kernel/proto.h +++ b/arch/alpha/kernel/proto.h | |||
@@ -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 | ||
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/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/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/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/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..db930f9070ef 100644 --- a/arch/m68k/sun3/config.c +++ b/arch/m68k/sun3/config.c | |||
@@ -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..1989d56139c8 100644 --- a/arch/mips/au1000/common/time.c +++ b/arch/mips/au1000/common/time.c | |||
@@ -62,7 +62,7 @@ static unsigned int timerhi = 0, timerlo = 0; | |||
62 | #error "unsupported HZ value! Must be in [100,1000]" | 62 | #error "unsupported HZ value! Must be in [100,1000]" |
63 | #endif | 63 | #endif |
64 | #define MATCH20_INC (328*100/HZ) /* magic number 328 is for HZ=100... */ | 64 | #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 *)); | 65 | extern void startup_match20_interrupt(irqreturn_t (*handler)(int, void *)); |
66 | static unsigned long last_pc0, last_match20; | 66 | static unsigned long last_pc0, last_match20; |
67 | #endif | 67 | #endif |
68 | 68 | ||
@@ -79,7 +79,8 @@ static inline void ack_r4ktimer(unsigned long newval) | |||
79 | * is provably more robust. | 79 | * is provably more robust. |
80 | */ | 80 | */ |
81 | unsigned long wtimer; | 81 | unsigned long wtimer; |
82 | void mips_timer_interrupt(struct pt_regs *regs) | 82 | |
83 | void mips_timer_interrupt(void) | ||
83 | { | 84 | { |
84 | int irq = 63; | 85 | int irq = 63; |
85 | unsigned long count; | 86 | unsigned long count; |
@@ -98,7 +99,7 @@ void mips_timer_interrupt(struct pt_regs *regs) | |||
98 | kstat_this_cpu.irqs[irq]++; | 99 | kstat_this_cpu.irqs[irq]++; |
99 | do_timer(1); | 100 | do_timer(1); |
100 | #ifndef CONFIG_SMP | 101 | #ifndef CONFIG_SMP |
101 | update_process_times(user_mode(regs)); | 102 | update_process_times(user_mode(get_irq_regs())); |
102 | #endif | 103 | #endif |
103 | r4k_cur += r4k_offset; | 104 | r4k_cur += r4k_offset; |
104 | ack_r4ktimer(r4k_cur); | 105 | ack_r4ktimer(r4k_cur); |
@@ -115,7 +116,7 @@ null: | |||
115 | } | 116 | } |
116 | 117 | ||
117 | #ifdef CONFIG_PM | 118 | #ifdef CONFIG_PM |
118 | irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) | 119 | irqreturn_t counter0_irq(int irq, void *dev_id) |
119 | { | 120 | { |
120 | unsigned long pc0; | 121 | unsigned long pc0; |
121 | int time_elapsed; | 122 | int time_elapsed; |
@@ -139,7 +140,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
139 | while (time_elapsed > 0) { | 140 | while (time_elapsed > 0) { |
140 | do_timer(1); | 141 | do_timer(1); |
141 | #ifndef CONFIG_SMP | 142 | #ifndef CONFIG_SMP |
142 | update_process_times(user_mode(regs)); | 143 | update_process_times(user_mode(get_irq_regs())); |
143 | #endif | 144 | #endif |
144 | time_elapsed -= MATCH20_INC; | 145 | time_elapsed -= MATCH20_INC; |
145 | last_match20 += MATCH20_INC; | 146 | last_match20 += MATCH20_INC; |
@@ -158,7 +159,7 @@ irqreturn_t counter0_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
158 | jiffie_drift -= 999; | 159 | jiffie_drift -= 999; |
159 | do_timer(1); /* increment jiffies by one */ | 160 | do_timer(1); /* increment jiffies by one */ |
160 | #ifndef CONFIG_SMP | 161 | #ifndef CONFIG_SMP |
161 | update_process_times(user_mode(regs)); | 162 | update_process_times(user_mode(get_irq_regs())); |
162 | #endif | 163 | #endif |
163 | } | 164 | } |
164 | 165 | ||
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..1117fab19733 100644 --- a/arch/mips/cobalt/irq.c +++ b/arch/mips/cobalt/irq.c | |||
@@ -42,7 +42,7 @@ | |||
42 | * 15 - IDE1 | 42 | * 15 - IDE1 |
43 | */ | 43 | */ |
44 | 44 | ||
45 | static inline void galileo_irq(struct pt_regs *regs) | 45 | static inline void galileo_irq(void) |
46 | { | 46 | { |
47 | unsigned int mask, pending, devfn; | 47 | unsigned int mask, pending, devfn; |
48 | 48 | ||
@@ -52,7 +52,7 @@ static inline void galileo_irq(struct pt_regs *regs) | |||
52 | if (pending & GALILEO_INTR_T0EXP) { | 52 | if (pending & GALILEO_INTR_T0EXP) { |
53 | 53 | ||
54 | GALILEO_OUTL(~GALILEO_INTR_T0EXP, GT_INTRCAUSE_OFS); | 54 | GALILEO_OUTL(~GALILEO_INTR_T0EXP, GT_INTRCAUSE_OFS); |
55 | do_IRQ(COBALT_GALILEO_IRQ, regs); | 55 | do_IRQ(COBALT_GALILEO_IRQ); |
56 | 56 | ||
57 | } else if (pending & GALILEO_INTR_RETRY_CTR) { | 57 | } else if (pending & GALILEO_INTR_RETRY_CTR) { |
58 | 58 | ||
@@ -68,44 +68,31 @@ static inline void galileo_irq(struct pt_regs *regs) | |||
68 | } | 68 | } |
69 | } | 69 | } |
70 | 70 | ||
71 | static inline void via_pic_irq(struct pt_regs *regs) | 71 | static inline void via_pic_irq(void) |
72 | { | 72 | { |
73 | int irq; | 73 | int irq; |
74 | 74 | ||
75 | irq = i8259_irq(); | 75 | irq = i8259_irq(); |
76 | if (irq >= 0) | 76 | if (irq >= 0) |
77 | do_IRQ(irq, regs); | 77 | do_IRQ(irq); |
78 | } | 78 | } |
79 | 79 | ||
80 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 80 | asmlinkage void plat_irq_dispatch(void) |
81 | { | 81 | { |
82 | unsigned pending; | 82 | unsigned pending = read_c0_status() & read_c0_cause(); |
83 | 83 | ||
84 | pending = read_c0_status() & read_c0_cause(); | 84 | if (pending & CAUSEF_IP2) /* COBALT_GALILEO_IRQ (18) */ |
85 | 85 | galileo_irq(); | |
86 | if (pending & CAUSEF_IP2) /* COBALT_GALILEO_IRQ (18) */ | 86 | else if (pending & CAUSEF_IP6) /* COBALT_VIA_IRQ (22) */ |
87 | 87 | via_pic_irq(); | |
88 | galileo_irq(regs); | 88 | else if (pending & CAUSEF_IP3) /* COBALT_ETH0_IRQ (19) */ |
89 | 89 | do_IRQ(COBALT_CPU_IRQ + 3); | |
90 | else if (pending & CAUSEF_IP6) /* COBALT_VIA_IRQ (22) */ | 90 | else if (pending & CAUSEF_IP4) /* COBALT_ETH1_IRQ (20) */ |
91 | 91 | do_IRQ(COBALT_CPU_IRQ + 4); | |
92 | via_pic_irq(regs); | 92 | else if (pending & CAUSEF_IP5) /* COBALT_SERIAL_IRQ (21) */ |
93 | 93 | do_IRQ(COBALT_CPU_IRQ + 5); | |
94 | else if (pending & CAUSEF_IP3) /* COBALT_ETH0_IRQ (19) */ | 94 | else if (pending & CAUSEF_IP7) /* IRQ 23 */ |
95 | 95 | 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 | } | 96 | } |
110 | 97 | ||
111 | static struct irqaction irq_via = { | 98 | 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/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/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/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..b203169f19ce 100644 --- a/arch/mips/gt64120/common/time.c +++ b/arch/mips/gt64120/common/time.c | |||
@@ -10,6 +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/irq_regs.h> | ||
13 | #include <asm/ptrace.h> | 14 | #include <asm/ptrace.h> |
14 | #include <asm/gt64120.h> | 15 | #include <asm/gt64120.h> |
15 | 16 | ||
@@ -19,7 +20,7 @@ | |||
19 | * differently than other MIPS interrupts. | 20 | * differently than other MIPS interrupts. |
20 | */ | 21 | */ |
21 | 22 | ||
22 | static void gt64120_irq(int irq, void *dev_id, struct pt_regs *regs) | 23 | static void gt64120_irq(int irq, void *dev_id) |
23 | { | 24 | { |
24 | unsigned int irq_src, int_high_src, irq_src_mask, int_high_src_mask; | 25 | unsigned int irq_src, int_high_src, irq_src_mask, int_high_src_mask; |
25 | int handled = 0; | 26 | int handled = 0; |
@@ -36,7 +37,7 @@ static void gt64120_irq(int irq, void *dev_id, struct pt_regs *regs) | |||
36 | irq_src &= ~0x00000800; | 37 | irq_src &= ~0x00000800; |
37 | do_timer(1); | 38 | do_timer(1); |
38 | #ifndef CONFIG_SMP | 39 | #ifndef CONFIG_SMP |
39 | update_process_times(user_mode(regs)); | 40 | update_process_times(user_mode(get_irq_regs())); |
40 | #endif | 41 | #endif |
41 | } | 42 | } |
42 | 43 | ||
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/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/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/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..71e8e45f3687 100644 --- a/arch/mips/kernel/irq-msc01.c +++ b/arch/mips/kernel/irq-msc01.c | |||
@@ -115,14 +115,14 @@ static void end_msc_irq(unsigned int irq) | |||
115 | /* | 115 | /* |
116 | * Interrupt handler for interrupts coming from SOC-it. | 116 | * Interrupt handler for interrupts coming from SOC-it. |
117 | */ | 117 | */ |
118 | void ll_msc_irq(struct pt_regs *regs) | 118 | void ll_msc_irq(void) |
119 | { | 119 | { |
120 | unsigned int irq; | 120 | unsigned int irq; |
121 | 121 | ||
122 | /* read the interrupt vector register */ | 122 | /* read the interrupt vector register */ |
123 | MSCIC_READ(MSC01_IC_VEC, irq); | 123 | MSCIC_READ(MSC01_IC_VEC, irq); |
124 | if (irq < 64) | 124 | if (irq < 64) |
125 | do_IRQ(irq + irq_base, regs); | 125 | do_IRQ(irq + irq_base); |
126 | else { | 126 | else { |
127 | /* Ignore spurious interrupt */ | 127 | /* Ignore spurious interrupt */ |
128 | } | 128 | } |
diff --git a/arch/mips/kernel/irq-mv6434x.c b/arch/mips/kernel/irq-mv6434x.c index b117e64da64d..39c94fd8d8ba 100644 --- a/arch/mips/kernel/irq-mv6434x.c +++ b/arch/mips/kernel/irq-mv6434x.c | |||
@@ -113,7 +113,7 @@ static void end_mv64340_irq(unsigned int irq) | |||
113 | * Interrupt handler for interrupts coming from the Marvell chip. | 113 | * Interrupt handler for interrupts coming from the Marvell chip. |
114 | * It could be built in ethernet ports etc... | 114 | * It could be built in ethernet ports etc... |
115 | */ | 115 | */ |
116 | void ll_mv64340_irq(struct pt_regs *regs) | 116 | void ll_mv64340_irq(void) |
117 | { | 117 | { |
118 | unsigned int irq_src_low, irq_src_high; | 118 | unsigned int irq_src_low, irq_src_high; |
119 | unsigned int irq_mask_low, irq_mask_high; | 119 | unsigned int irq_mask_low, irq_mask_high; |
@@ -129,9 +129,9 @@ void ll_mv64340_irq(struct pt_regs *regs) | |||
129 | irq_src_high &= irq_mask_high; | 129 | irq_src_high &= irq_mask_high; |
130 | 130 | ||
131 | if (irq_src_low) | 131 | if (irq_src_low) |
132 | do_IRQ(ls1bit32(irq_src_low) + irq_base, regs); | 132 | do_IRQ(ls1bit32(irq_src_low) + irq_base); |
133 | else | 133 | else |
134 | do_IRQ(ls1bit32(irq_src_high) + irq_base + 32, regs); | 134 | do_IRQ(ls1bit32(irq_src_high) + irq_base + 32); |
135 | } | 135 | } |
136 | 136 | ||
137 | #define shutdown_mv64340_irq disable_mv64340_irq | 137 | #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..d379000162f3 100644 --- a/arch/mips/mips-boards/generic/time.c +++ b/arch/mips/mips-boards/generic/time.c | |||
@@ -82,19 +82,19 @@ static inline void scroll_display_message(void) | |||
82 | } | 82 | } |
83 | } | 83 | } |
84 | 84 | ||
85 | static void mips_timer_dispatch (struct pt_regs *regs) | 85 | static void mips_timer_dispatch(void) |
86 | { | 86 | { |
87 | do_IRQ (mips_cpu_timer_irq, regs); | 87 | do_IRQ(mips_cpu_timer_irq); |
88 | } | 88 | } |
89 | 89 | ||
90 | /* | 90 | /* |
91 | * Redeclare until I get around mopping the timer code insanity on MIPS. | 91 | * Redeclare until I get around mopping the timer code insanity on MIPS. |
92 | */ | 92 | */ |
93 | extern int null_perf_irq(struct pt_regs *regs); | 93 | extern int null_perf_irq(void); |
94 | 94 | ||
95 | extern int (*perf_irq)(struct pt_regs *regs); | 95 | extern int (*perf_irq)(void); |
96 | 96 | ||
97 | irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 97 | irqreturn_t mips_timer_interrupt(int irq, void *dev_id) |
98 | { | 98 | { |
99 | int cpu = smp_processor_id(); | 99 | int cpu = smp_processor_id(); |
100 | 100 | ||
@@ -119,7 +119,7 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
119 | * perf counter overflow, or both. | 119 | * perf counter overflow, or both. |
120 | */ | 120 | */ |
121 | if (read_c0_cause() & (1 << 26)) | 121 | if (read_c0_cause() & (1 << 26)) |
122 | perf_irq(regs); | 122 | perf_irq(); |
123 | 123 | ||
124 | if (read_c0_cause() & (1 << 30)) { | 124 | if (read_c0_cause() & (1 << 30)) { |
125 | /* If timer interrupt, make it de-assert */ | 125 | /* If timer interrupt, make it de-assert */ |
@@ -139,13 +139,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(). | 139 | * the tick on VPE 0 to run the full timer_interrupt(). |
140 | */ | 140 | */ |
141 | if (cpu_data[cpu].vpe_id == 0) { | 141 | if (cpu_data[cpu].vpe_id == 0) { |
142 | timer_interrupt(irq, NULL, regs); | 142 | timer_interrupt(irq, NULL); |
143 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); | 143 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); |
144 | scroll_display_message(); | 144 | scroll_display_message(); |
145 | } else { | 145 | } else { |
146 | write_c0_compare(read_c0_count() + | 146 | write_c0_compare(read_c0_count() + |
147 | (mips_hpt_frequency/HZ)); | 147 | (mips_hpt_frequency/HZ)); |
148 | local_timer_interrupt(irq, dev_id, regs); | 148 | local_timer_interrupt(irq, dev_id); |
149 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); | 149 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); |
150 | } | 150 | } |
151 | } | 151 | } |
@@ -159,12 +159,12 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
159 | * timer int. | 159 | * timer int. |
160 | */ | 160 | */ |
161 | if (!r2 || (read_c0_cause() & (1 << 26))) | 161 | if (!r2 || (read_c0_cause() & (1 << 26))) |
162 | if (perf_irq(regs)) | 162 | if (perf_irq()) |
163 | goto out; | 163 | goto out; |
164 | 164 | ||
165 | /* we keep interrupt disabled all the time */ | 165 | /* we keep interrupt disabled all the time */ |
166 | if (!r2 || (read_c0_cause() & (1 << 30))) | 166 | if (!r2 || (read_c0_cause() & (1 << 30))) |
167 | timer_interrupt(irq, NULL, regs); | 167 | timer_interrupt(irq, NULL); |
168 | 168 | ||
169 | scroll_display_message(); | 169 | scroll_display_message(); |
170 | } else { | 170 | } else { |
@@ -180,7 +180,7 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
180 | /* | 180 | /* |
181 | * Other CPUs should do profiling and process accounting | 181 | * Other CPUs should do profiling and process accounting |
182 | */ | 182 | */ |
183 | local_timer_interrupt(irq, dev_id, regs); | 183 | local_timer_interrupt(irq, dev_id); |
184 | } | 184 | } |
185 | out: | 185 | out: |
186 | #endif /* CONFIG_MIPS_MT_SMTC */ | 186 | #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..acd83a379559 100644 --- a/arch/mips/mips-boards/sim/sim_time.c +++ b/arch/mips/mips-boards/sim/sim_time.c | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | unsigned long cpu_khz; | 34 | unsigned long cpu_khz; |
35 | 35 | ||
36 | irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 36 | irqreturn_t sim_timer_interrupt(int irq, void *dev_id) |
37 | { | 37 | { |
38 | #ifdef CONFIG_SMP | 38 | #ifdef CONFIG_SMP |
39 | int cpu = smp_processor_id(); | 39 | int cpu = smp_processor_id(); |
@@ -44,7 +44,7 @@ irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
44 | */ | 44 | */ |
45 | #ifndef CONFIG_MIPS_MT_SMTC | 45 | #ifndef CONFIG_MIPS_MT_SMTC |
46 | if (cpu == 0) { | 46 | if (cpu == 0) { |
47 | timer_interrupt(irq, dev_id, regs); | 47 | timer_interrupt(irq, dev_id); |
48 | } | 48 | } |
49 | else { | 49 | else { |
50 | /* Everyone else needs to reset the timer int here as | 50 | /* Everyone else needs to reset the timer int here as |
@@ -84,7 +84,7 @@ irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
84 | irq_enable_hazard(); | 84 | irq_enable_hazard(); |
85 | evpe(vpflags); | 85 | evpe(vpflags); |
86 | 86 | ||
87 | if(cpu_data[cpu].vpe_id == 0) timer_interrupt(irq, dev_id, regs); | 87 | if(cpu_data[cpu].vpe_id == 0) timer_interrupt(irq, dev_id); |
88 | else write_c0_compare (read_c0_count() + ( mips_hpt_frequency/HZ)); | 88 | else write_c0_compare (read_c0_count() + ( mips_hpt_frequency/HZ)); |
89 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); | 89 | smtc_timer_broadcast(cpu_data[cpu].vpe_id); |
90 | 90 | ||
@@ -93,10 +93,10 @@ irqreturn_t sim_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
93 | /* | 93 | /* |
94 | * every CPU should do profiling and process accounting | 94 | * every CPU should do profiling and process accounting |
95 | */ | 95 | */ |
96 | local_timer_interrupt (irq, dev_id, regs); | 96 | local_timer_interrupt (irq, dev_id); |
97 | return IRQ_HANDLED; | 97 | return IRQ_HANDLED; |
98 | #else | 98 | #else |
99 | return timer_interrupt (irq, dev_id, regs); | 99 | return timer_interrupt (irq, dev_id); |
100 | #endif | 100 | #endif |
101 | } | 101 | } |
102 | 102 | ||
@@ -177,9 +177,9 @@ void __init sim_time_init(void) | |||
177 | 177 | ||
178 | static int mips_cpu_timer_irq; | 178 | static int mips_cpu_timer_irq; |
179 | 179 | ||
180 | static void mips_timer_dispatch (struct pt_regs *regs) | 180 | static void mips_timer_dispatch(void) |
181 | { | 181 | { |
182 | do_IRQ (mips_cpu_timer_irq, regs); | 182 | do_IRQ(mips_cpu_timer_irq); |
183 | } | 183 | } |
184 | 184 | ||
185 | 185 | ||
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/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_c/cpci-irq.c b/arch/mips/momentum/ocelot_c/cpci-irq.c index a5dc230520df..2fb14bb08e67 100644 --- a/arch/mips/momentum/ocelot_c/cpci-irq.c +++ b/arch/mips/momentum/ocelot_c/cpci-irq.c | |||
@@ -112,7 +112,7 @@ static void end_cpci_irq(unsigned int irq) | |||
112 | * Interrupt handler for interrupts coming from the FPGA chip. | 112 | * Interrupt handler for interrupts coming from the FPGA chip. |
113 | * It could be built in ethernet ports etc... | 113 | * It could be built in ethernet ports etc... |
114 | */ | 114 | */ |
115 | void ll_cpci_irq(struct pt_regs *regs) | 115 | void ll_cpci_irq(void) |
116 | { | 116 | { |
117 | unsigned int irq_src, irq_mask; | 117 | unsigned int irq_src, irq_mask; |
118 | 118 | ||
@@ -123,7 +123,7 @@ void ll_cpci_irq(struct pt_regs *regs) | |||
123 | /* mask for just the interrupts we want */ | 123 | /* mask for just the interrupts we want */ |
124 | irq_src &= ~irq_mask; | 124 | irq_src &= ~irq_mask; |
125 | 125 | ||
126 | do_IRQ(ls1bit8(irq_src) + CPCI_IRQ_BASE, regs); | 126 | do_IRQ(ls1bit8(irq_src) + CPCI_IRQ_BASE); |
127 | } | 127 | } |
128 | 128 | ||
129 | #define shutdown_cpci_irq disable_cpci_irq | 129 | #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..4be7b26e30ef 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(regs); |
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/uart-irq.c b/arch/mips/momentum/ocelot_c/uart-irq.c index 9f33d8f1d826..f8efe2370ffd 100644 --- a/arch/mips/momentum/ocelot_c/uart-irq.c +++ b/arch/mips/momentum/ocelot_c/uart-irq.c | |||
@@ -105,7 +105,7 @@ static void end_uart_irq(unsigned int irq) | |||
105 | /* | 105 | /* |
106 | * Interrupt handler for interrupts coming from the FPGA chip. | 106 | * Interrupt handler for interrupts coming from the FPGA chip. |
107 | */ | 107 | */ |
108 | void ll_uart_irq(struct pt_regs *regs) | 108 | void ll_uart_irq(void) |
109 | { | 109 | { |
110 | unsigned int irq_src, irq_mask; | 110 | unsigned int irq_src, irq_mask; |
111 | 111 | ||
@@ -116,7 +116,7 @@ void ll_uart_irq(struct pt_regs *regs) | |||
116 | /* mask for just the interrupts we want */ | 116 | /* mask for just the interrupts we want */ |
117 | irq_src &= ~irq_mask; | 117 | irq_src &= ~irq_mask; |
118 | 118 | ||
119 | do_IRQ(ls1bit8(irq_src) + 74, regs); | 119 | do_IRQ(ls1bit8(irq_src) + 74); |
120 | } | 120 | } |
121 | 121 | ||
122 | #define shutdown_uart_irq disable_uart_irq | 122 | #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..b8cffa80548f 100644 --- a/arch/mips/momentum/ocelot_g/gt-irq.c +++ b/arch/mips/momentum/ocelot_g/gt-irq.c | |||
@@ -108,7 +108,7 @@ int disable_galileo_irq(int int_cause, int bit_num) | |||
108 | * we keep this particular structure in the function. | 108 | * we keep this particular structure in the function. |
109 | */ | 109 | */ |
110 | 110 | ||
111 | static irqreturn_t gt64240_p0int_irq(int irq, void *dev, struct pt_regs *regs) | 111 | static irqreturn_t gt64240_p0int_irq(int irq, void *dev) |
112 | { | 112 | { |
113 | uint32_t irq_src, irq_src_mask; | 113 | uint32_t irq_src, irq_src_mask; |
114 | int handled; | 114 | int handled; |
@@ -135,7 +135,7 @@ static irqreturn_t gt64240_p0int_irq(int irq, void *dev, struct pt_regs *regs) | |||
135 | /* handle the timer call */ | 135 | /* handle the timer call */ |
136 | do_timer(1); | 136 | do_timer(1); |
137 | #ifndef CONFIG_SMP | 137 | #ifndef CONFIG_SMP |
138 | update_process_times(user_mode(regs)); | 138 | update_process_times(user_mode(get_irq_regs())); |
139 | #endif | 139 | #endif |
140 | } | 140 | } |
141 | 141 | ||
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/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/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..f41587a206e2 100644 --- a/arch/mips/sgi-ip27/ip27-irq.c +++ b/arch/mips/sgi-ip27/ip27-irq.c | |||
@@ -129,7 +129,7 @@ static int ms1bit(unsigned long x) | |||
129 | * Kanoj 05.13.00 | 129 | * Kanoj 05.13.00 |
130 | */ | 130 | */ |
131 | 131 | ||
132 | static void ip27_do_irq_mask0(struct pt_regs *regs) | 132 | static void ip27_do_irq_mask0(void) |
133 | { | 133 | { |
134 | int irq, swlevel; | 134 | int irq, swlevel; |
135 | hubreg_t pend0, mask0; | 135 | hubreg_t pend0, mask0; |
@@ -164,13 +164,13 @@ static void ip27_do_irq_mask0(struct pt_regs *regs) | |||
164 | struct slice_data *si = cpu_data[cpu].data; | 164 | struct slice_data *si = cpu_data[cpu].data; |
165 | 165 | ||
166 | irq = si->level_to_irq[swlevel]; | 166 | irq = si->level_to_irq[swlevel]; |
167 | do_IRQ(irq, regs); | 167 | do_IRQ(irq); |
168 | } | 168 | } |
169 | 169 | ||
170 | LOCAL_HUB_L(PI_INT_PEND0); | 170 | LOCAL_HUB_L(PI_INT_PEND0); |
171 | } | 171 | } |
172 | 172 | ||
173 | static void ip27_do_irq_mask1(struct pt_regs *regs) | 173 | static void ip27_do_irq_mask1(void) |
174 | { | 174 | { |
175 | int irq, swlevel; | 175 | int irq, swlevel; |
176 | hubreg_t pend1, mask1; | 176 | hubreg_t pend1, mask1; |
@@ -190,17 +190,17 @@ static void ip27_do_irq_mask1(struct pt_regs *regs) | |||
190 | /* "map" swlevel to irq */ | 190 | /* "map" swlevel to irq */ |
191 | irq = si->level_to_irq[swlevel]; | 191 | irq = si->level_to_irq[swlevel]; |
192 | LOCAL_HUB_CLR_INTR(swlevel); | 192 | LOCAL_HUB_CLR_INTR(swlevel); |
193 | do_IRQ(irq, regs); | 193 | do_IRQ(irq); |
194 | 194 | ||
195 | LOCAL_HUB_L(PI_INT_PEND1); | 195 | LOCAL_HUB_L(PI_INT_PEND1); |
196 | } | 196 | } |
197 | 197 | ||
198 | static void ip27_prof_timer(struct pt_regs *regs) | 198 | static void ip27_prof_timer(void) |
199 | { | 199 | { |
200 | panic("CPU %d got a profiling interrupt", smp_processor_id()); | 200 | panic("CPU %d got a profiling interrupt", smp_processor_id()); |
201 | } | 201 | } |
202 | 202 | ||
203 | static void ip27_hub_error(struct pt_regs *regs) | 203 | static void ip27_hub_error(void) |
204 | { | 204 | { |
205 | panic("CPU %d got a hub error interrupt", smp_processor_id()); | 205 | panic("CPU %d got a hub error interrupt", smp_processor_id()); |
206 | } | 206 | } |
@@ -418,22 +418,22 @@ int __devinit request_bridge_irq(struct bridge_controller *bc) | |||
418 | return irq; | 418 | return irq; |
419 | } | 419 | } |
420 | 420 | ||
421 | extern void ip27_rt_timer_interrupt(struct pt_regs *regs); | 421 | extern void ip27_rt_timer_interrupt(void); |
422 | 422 | ||
423 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 423 | asmlinkage void plat_irq_dispatch(void) |
424 | { | 424 | { |
425 | unsigned long pending = read_c0_cause() & read_c0_status(); | 425 | unsigned long pending = read_c0_cause() & read_c0_status(); |
426 | 426 | ||
427 | if (pending & CAUSEF_IP4) | 427 | if (pending & CAUSEF_IP4) |
428 | ip27_rt_timer_interrupt(regs); | 428 | ip27_rt_timer_interrupt(); |
429 | else if (pending & CAUSEF_IP2) /* PI_INT_PEND_0 or CC_PEND_{A|B} */ | 429 | else if (pending & CAUSEF_IP2) /* PI_INT_PEND_0 or CC_PEND_{A|B} */ |
430 | ip27_do_irq_mask0(regs); | 430 | ip27_do_irq_mask0(); |
431 | else if (pending & CAUSEF_IP3) /* PI_INT_PEND_1 */ | 431 | else if (pending & CAUSEF_IP3) /* PI_INT_PEND_1 */ |
432 | ip27_do_irq_mask1(regs); | 432 | ip27_do_irq_mask1(); |
433 | else if (pending & CAUSEF_IP5) | 433 | else if (pending & CAUSEF_IP5) |
434 | ip27_prof_timer(regs); | 434 | ip27_prof_timer(); |
435 | else if (pending & CAUSEF_IP6) | 435 | else if (pending & CAUSEF_IP6) |
436 | ip27_hub_error(regs); | 436 | ip27_hub_error(); |
437 | } | 437 | } |
438 | 438 | ||
439 | void __init arch_init_irq(void) | 439 | 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..f1f2c45a6c80 100644 --- a/arch/mips/sgi-ip32/crime.c +++ b/arch/mips/sgi-ip32/crime.c | |||
@@ -40,8 +40,7 @@ void __init crime_init(void) | |||
40 | id, rev, field, (unsigned long) CRIME_BASE); | 40 | id, rev, field, (unsigned long) CRIME_BASE); |
41 | } | 41 | } |
42 | 42 | ||
43 | irqreturn_t | 43 | 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 | { | 44 | { |
46 | unsigned long stat, addr; | 45 | unsigned long stat, addr; |
47 | int fatal = 0; | 46 | int fatal = 0; |
@@ -92,8 +91,7 @@ crime_memerr_intr (unsigned int irq, void *dev_id, struct pt_regs *regs) | |||
92 | return IRQ_HANDLED; | 91 | return IRQ_HANDLED; |
93 | } | 92 | } |
94 | 93 | ||
95 | irqreturn_t | 94 | 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 | { | 95 | { |
98 | unsigned long stat = crime->cpu_error_stat & CRIME_CPU_ERROR_MASK; | 96 | unsigned long stat = crime->cpu_error_stat & CRIME_CPU_ERROR_MASK; |
99 | unsigned long addr = crime->cpu_error_addr & CRIME_CPU_ERROR_ADDR_MASK; | 97 | 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..0c00f676b8b3 100644 --- a/arch/mips/sibyte/bcm1480/irq.c +++ b/arch/mips/sibyte/bcm1480/irq.c | |||
@@ -25,6 +25,7 @@ | |||
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/ptrace.h> |
@@ -284,8 +285,7 @@ void __init init_bcm1480_irqs(void) | |||
284 | } | 285 | } |
285 | 286 | ||
286 | 287 | ||
287 | static irqreturn_t bcm1480_dummy_handler(int irq, void *dev_id, | 288 | static irqreturn_t bcm1480_dummy_handler(int irq, void *dev_id) |
288 | struct pt_regs *regs) | ||
289 | { | 289 | { |
290 | return IRQ_NONE; | 290 | return IRQ_NONE; |
291 | } | 291 | } |
@@ -453,7 +453,7 @@ void __init arch_init_irq(void) | |||
453 | #define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) | 453 | #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))) | 454 | #define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) |
455 | 455 | ||
456 | void bcm1480_kgdb_interrupt(struct pt_regs *regs) | 456 | static void bcm1480_kgdb_interrupt(void) |
457 | { | 457 | { |
458 | /* | 458 | /* |
459 | * Clear break-change status (allow some time for the remote | 459 | * Clear break-change status (allow some time for the remote |
@@ -464,16 +464,15 @@ void bcm1480_kgdb_interrupt(struct pt_regs *regs) | |||
464 | mdelay(500); | 464 | mdelay(500); |
465 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | | 465 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | |
466 | M_DUART_RX_EN | M_DUART_TX_EN); | 466 | M_DUART_RX_EN | M_DUART_TX_EN); |
467 | set_async_breakpoint(®s->cp0_epc); | 467 | set_async_breakpoint(&get_irq_regs()->cp0_epc); |
468 | } | 468 | } |
469 | 469 | ||
470 | #endif /* CONFIG_KGDB */ | 470 | #endif /* CONFIG_KGDB */ |
471 | 471 | ||
472 | extern void bcm1480_timer_interrupt(struct pt_regs *regs); | 472 | extern void bcm1480_timer_interrupt(void); |
473 | extern void bcm1480_mailbox_interrupt(struct pt_regs *regs); | 473 | extern void bcm1480_mailbox_interrupt(void); |
474 | extern void bcm1480_kgdb_interrupt(struct pt_regs *regs); | ||
475 | 474 | ||
476 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 475 | asmlinkage void plat_irq_dispatch(void) |
477 | { | 476 | { |
478 | unsigned int pending; | 477 | unsigned int pending; |
479 | 478 | ||
@@ -486,21 +485,21 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
486 | 485 | ||
487 | #ifdef CONFIG_SIBYTE_BCM1480_PROF | 486 | #ifdef CONFIG_SIBYTE_BCM1480_PROF |
488 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ | 487 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ |
489 | sbprof_cpu_intr(exception_epc(regs)); | 488 | sbprof_cpu_intr(); |
490 | else | 489 | else |
491 | #endif | 490 | #endif |
492 | 491 | ||
493 | if (pending & CAUSEF_IP4) | 492 | if (pending & CAUSEF_IP4) |
494 | bcm1480_timer_interrupt(regs); | 493 | bcm1480_timer_interrupt(); |
495 | 494 | ||
496 | #ifdef CONFIG_SMP | 495 | #ifdef CONFIG_SMP |
497 | else if (pending & CAUSEF_IP3) | 496 | else if (pending & CAUSEF_IP3) |
498 | bcm1480_mailbox_interrupt(regs); | 497 | bcm1480_mailbox_interrupt(); |
499 | #endif | 498 | #endif |
500 | 499 | ||
501 | #ifdef CONFIG_KGDB | 500 | #ifdef CONFIG_KGDB |
502 | else if (pending & CAUSEF_IP6) | 501 | else if (pending & CAUSEF_IP6) |
503 | bcm1480_kgdb_interrupt(regs); /* KGDB (uart 1) */ | 502 | bcm1480_kgdb_interrupt(); /* KGDB (uart 1) */ |
504 | #endif | 503 | #endif |
505 | 504 | ||
506 | else if (pending & CAUSEF_IP2) { | 505 | else if (pending & CAUSEF_IP2) { |
@@ -521,9 +520,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
521 | 520 | ||
522 | if (mask_h) { | 521 | if (mask_h) { |
523 | if (mask_h ^ 1) | 522 | if (mask_h ^ 1) |
524 | do_IRQ(fls64(mask_h) - 1, regs); | 523 | do_IRQ(fls64(mask_h) - 1); |
525 | else | 524 | else |
526 | do_IRQ(63 + fls64(mask_l), regs); | 525 | do_IRQ(63 + fls64(mask_l)); |
527 | } | 526 | } |
528 | } | 527 | } |
529 | } | 528 | } |
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..f228f711dc34 100644 --- a/arch/mips/sibyte/bcm1480/time.c +++ b/arch/mips/sibyte/bcm1480/time.c | |||
@@ -100,10 +100,10 @@ void bcm1480_time_init(void) | |||
100 | 100 | ||
101 | #include <asm/sibyte/sb1250.h> | 101 | #include <asm/sibyte/sb1250.h> |
102 | 102 | ||
103 | void bcm1480_timer_interrupt(struct pt_regs *regs) | 103 | void bcm1480_timer_interrupt(void) |
104 | { | 104 | { |
105 | int cpu = smp_processor_id(); | 105 | int cpu = smp_processor_id(); |
106 | int irq = K_BCM1480_INT_TIMER_0+cpu; | 106 | int irq = K_BCM1480_INT_TIMER_0 + cpu; |
107 | 107 | ||
108 | /* Reset the timer */ | 108 | /* Reset the timer */ |
109 | __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, | 109 | __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, |
@@ -113,13 +113,13 @@ void bcm1480_timer_interrupt(struct pt_regs *regs) | |||
113 | /* | 113 | /* |
114 | * CPU 0 handles the global timer interrupt job | 114 | * CPU 0 handles the global timer interrupt job |
115 | */ | 115 | */ |
116 | ll_timer_interrupt(irq, regs); | 116 | ll_timer_interrupt(irq); |
117 | } | 117 | } |
118 | else { | 118 | else { |
119 | /* | 119 | /* |
120 | * other CPUs should just do profiling and process accounting | 120 | * other CPUs should just do profiling and process accounting |
121 | */ | 121 | */ |
122 | ll_local_timer_interrupt(irq, regs); | 122 | ll_local_timer_interrupt(irq); |
123 | } | 123 | } |
124 | } | 124 | } |
125 | 125 | ||
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index f9bd9f074517..f6d2e19592ea 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -254,8 +254,7 @@ void __init init_sb1250_irqs(void) | |||
254 | } | 254 | } |
255 | 255 | ||
256 | 256 | ||
257 | static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id, | 257 | static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id) |
258 | struct pt_regs *regs) | ||
259 | { | 258 | { |
260 | return IRQ_NONE; | 259 | return IRQ_NONE; |
261 | } | 260 | } |
@@ -403,7 +402,7 @@ void __init arch_init_irq(void) | |||
403 | #define duart_out(reg, val) csr_out32(val, IOADDR(A_DUART_CHANREG(kgdb_port,reg))) | 402 | #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))) | 403 | #define duart_in(reg) csr_in32(IOADDR(A_DUART_CHANREG(kgdb_port,reg))) |
405 | 404 | ||
406 | static void sb1250_kgdb_interrupt(struct pt_regs *regs) | 405 | static void sb1250_kgdb_interrupt(void) |
407 | { | 406 | { |
408 | /* | 407 | /* |
409 | * Clear break-change status (allow some time for the remote | 408 | * Clear break-change status (allow some time for the remote |
@@ -414,16 +413,15 @@ static void sb1250_kgdb_interrupt(struct pt_regs *regs) | |||
414 | mdelay(500); | 413 | mdelay(500); |
415 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | | 414 | duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT | |
416 | M_DUART_RX_EN | M_DUART_TX_EN); | 415 | M_DUART_RX_EN | M_DUART_TX_EN); |
417 | set_async_breakpoint(®s->cp0_epc); | 416 | set_async_breakpoint(&get_irq_regs()->cp0_epc); |
418 | } | 417 | } |
419 | 418 | ||
420 | #endif /* CONFIG_KGDB */ | 419 | #endif /* CONFIG_KGDB */ |
421 | 420 | ||
422 | extern void sb1250_timer_interrupt(struct pt_regs *regs); | 421 | extern void sb1250_timer_interrupt(void); |
423 | extern void sb1250_mailbox_interrupt(struct pt_regs *regs); | 422 | extern void sb1250_mailbox_interrupt(void); |
424 | extern void sb1250_kgdb_interrupt(struct pt_regs *regs); | ||
425 | 423 | ||
426 | asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | 424 | asmlinkage void plat_irq_dispatch(void) |
427 | { | 425 | { |
428 | unsigned int pending; | 426 | unsigned int pending; |
429 | 427 | ||
@@ -446,21 +444,21 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
446 | 444 | ||
447 | #ifdef CONFIG_SIBYTE_SB1250_PROF | 445 | #ifdef CONFIG_SIBYTE_SB1250_PROF |
448 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ | 446 | if (pending & CAUSEF_IP7) /* Cpu performance counter interrupt */ |
449 | sbprof_cpu_intr(exception_epc(regs)); | 447 | sbprof_cpu_intr(); |
450 | else | 448 | else |
451 | #endif | 449 | #endif |
452 | 450 | ||
453 | if (pending & CAUSEF_IP4) | 451 | if (pending & CAUSEF_IP4) |
454 | sb1250_timer_interrupt(regs); | 452 | sb1250_timer_interrupt(); |
455 | 453 | ||
456 | #ifdef CONFIG_SMP | 454 | #ifdef CONFIG_SMP |
457 | else if (pending & CAUSEF_IP3) | 455 | else if (pending & CAUSEF_IP3) |
458 | sb1250_mailbox_interrupt(regs); | 456 | sb1250_mailbox_interrupt(); |
459 | #endif | 457 | #endif |
460 | 458 | ||
461 | #ifdef CONFIG_KGDB | 459 | #ifdef CONFIG_KGDB |
462 | else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ | 460 | else if (pending & CAUSEF_IP6) /* KGDB (uart 1) */ |
463 | sb1250_kgdb_interrupt(regs); | 461 | sb1250_kgdb_interrupt(); |
464 | #endif | 462 | #endif |
465 | 463 | ||
466 | else if (pending & CAUSEF_IP2) { | 464 | else if (pending & CAUSEF_IP2) { |
@@ -475,9 +473,9 @@ asmlinkage void plat_irq_dispatch(struct pt_regs *regs) | |||
475 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), | 473 | mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(), |
476 | R_IMR_INTERRUPT_STATUS_BASE))); | 474 | R_IMR_INTERRUPT_STATUS_BASE))); |
477 | if (mask) | 475 | if (mask) |
478 | do_IRQ(fls64(mask) - 1, regs); | 476 | do_IRQ(fls64(mask) - 1); |
479 | else | 477 | else |
480 | spurious_interrupt(regs); | 478 | spurious_interrupt(); |
481 | } else | 479 | } else |
482 | spurious_interrupt(regs); | 480 | spurious_interrupt(); |
483 | } | 481 | } |
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..0d17aec03dd7 100644 --- a/arch/mips/sibyte/sb1250/time.c +++ b/arch/mips/sibyte/sb1250/time.c | |||
@@ -125,7 +125,7 @@ void sb1250_time_init(void) | |||
125 | */ | 125 | */ |
126 | } | 126 | } |
127 | 127 | ||
128 | void sb1250_timer_interrupt(struct pt_regs *regs) | 128 | void sb1250_timer_interrupt(void) |
129 | { | 129 | { |
130 | int cpu = smp_processor_id(); | 130 | int cpu = smp_processor_id(); |
131 | int irq = K_INT_TIMER_0 + cpu; | 131 | int irq = K_INT_TIMER_0 + cpu; |
@@ -138,13 +138,13 @@ void sb1250_timer_interrupt(struct pt_regs *regs) | |||
138 | /* | 138 | /* |
139 | * CPU 0 handles the global timer interrupt job | 139 | * CPU 0 handles the global timer interrupt job |
140 | */ | 140 | */ |
141 | ll_timer_interrupt(irq, regs); | 141 | ll_timer_interrupt(irq); |
142 | } | 142 | } |
143 | else { | 143 | else { |
144 | /* | 144 | /* |
145 | * other CPUs should just do profiling and process accounting | 145 | * other CPUs should just do profiling and process accounting |
146 | */ | 146 | */ |
147 | ll_local_timer_interrupt(irq, regs); | 147 | ll_local_timer_interrupt(irq); |
148 | } | 148 | } |
149 | } | 149 | } |
150 | 150 | ||
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/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_setup.c b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c index f0d70c476005..bea19098ac28 100644 --- a/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c +++ b/arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c | |||
@@ -58,6 +58,7 @@ | |||
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/ptrace.h> |
63 | #include <asm/reboot.h> | 64 | #include <asm/reboot.h> |
@@ -160,8 +161,7 @@ int tx4927_pci66 = 0; /* 0:auto */ | |||
160 | char *toshiba_name = ""; | 161 | char *toshiba_name = ""; |
161 | 162 | ||
162 | #ifdef CONFIG_PCI | 163 | #ifdef CONFIG_PCI |
163 | static void tx4927_pcierr_interrupt(int irq, void *dev_id, | 164 | static void tx4927_pcierr_interrupt(int irq, void *dev_id) |
164 | struct pt_regs *regs) | ||
165 | { | 165 | { |
166 | #ifdef CONFIG_BLK_DEV_IDEPCI | 166 | #ifdef CONFIG_BLK_DEV_IDEPCI |
167 | /* ignore MasterAbort for ide probing... */ | 167 | /* ignore MasterAbort for ide probing... */ |
@@ -185,7 +185,7 @@ static void tx4927_pcierr_interrupt(int irq, void *dev_id, | |||
185 | (unsigned long) tx4927_ccfgptr->ccfg, | 185 | (unsigned long) tx4927_ccfgptr->ccfg, |
186 | (unsigned long) (tx4927_ccfgptr->tear >> 32), | 186 | (unsigned long) (tx4927_ccfgptr->tear >> 32), |
187 | (unsigned long) tx4927_ccfgptr->tear); | 187 | (unsigned long) tx4927_ccfgptr->tear); |
188 | show_regs(regs); | 188 | show_regs(get_irq_regs()); |
189 | } | 189 | } |
190 | 190 | ||
191 | void __init toshiba_rbtx4927_pci_irq_init(void) | 191 | 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/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/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..829ac18b566c 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 |
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/prom_parse.c b/arch/powerpc/kernel/prom_parse.c index 603dff3ad62a..17fcb4842fe5 100644 --- a/arch/powerpc/kernel/prom_parse.c +++ b/arch/powerpc/kernel/prom_parse.c | |||
@@ -914,6 +914,17 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq) | |||
914 | u8 pin; | 914 | u8 pin; |
915 | int rc; | 915 | int rc; |
916 | 916 | ||
917 | /* We need to first check if the PCI device has a PCI interrupt at all | ||
918 | * since we have cases where the device-node might expose non-PCI | ||
919 | * interrupts, but the device has no PCI interrupt to it | ||
920 | */ | ||
921 | rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin); | ||
922 | if (rc != 0) | ||
923 | return rc; | ||
924 | /* No pin, exit */ | ||
925 | if (pin == 0) | ||
926 | return -ENODEV; | ||
927 | |||
917 | /* Check if we have a device node, if yes, fallback to standard OF | 928 | /* Check if we have a device node, if yes, fallback to standard OF |
918 | * parsing | 929 | * parsing |
919 | */ | 930 | */ |
@@ -925,12 +936,6 @@ int of_irq_map_pci(struct pci_dev *pdev, struct of_irq *out_irq) | |||
925 | * interrupt spec. we assume #interrupt-cells is 1, which is standard | 936 | * interrupt spec. we assume #interrupt-cells is 1, which is standard |
926 | * for PCI. If you do different, then don't use that routine. | 937 | * for PCI. If you do different, then don't use that routine. |
927 | */ | 938 | */ |
928 | rc = pci_read_config_byte(pdev, PCI_INTERRUPT_PIN, &pin); | ||
929 | if (rc != 0) | ||
930 | return rc; | ||
931 | /* No pin, exit */ | ||
932 | if (pin == 0) | ||
933 | return -ENODEV; | ||
934 | 939 | ||
935 | /* Now we walk up the PCI tree */ | 940 | /* Now we walk up the PCI tree */ |
936 | lspec = pin; | 941 | lspec = pin; |
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/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/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/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/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 |
diff --git a/drivers/char/viocons.c b/drivers/char/viocons.c index a362ee9c92dd..6d2e314860df 100644 --- a/drivers/char/viocons.c +++ b/drivers/char/viocons.c | |||
@@ -947,7 +947,7 @@ static void vioHandleData(struct HvLpEvent *event) | |||
947 | */ | 947 | */ |
948 | continue; | 948 | continue; |
949 | } else if (vio_sysrq_pressed) { | 949 | } else if (vio_sysrq_pressed) { |
950 | handle_sysrq(cevent->data[index], NULL, tty); | 950 | handle_sysrq(cevent->data[index], tty); |
951 | vio_sysrq_pressed = 0; | 951 | vio_sysrq_pressed = 0; |
952 | /* | 952 | /* |
953 | * continue because we don't want to add | 953 | * continue because we don't want to add |
diff --git a/drivers/char/vme_scc.c b/drivers/char/vme_scc.c index 0cdbaa70cf9f..d0b94dd1af6d 100644 --- a/drivers/char/vme_scc.c +++ b/drivers/char/vme_scc.c | |||
@@ -593,7 +593,7 @@ static void scc_enable_tx_interrupts(void *ptr) | |||
593 | local_irq_save(flags); | 593 | local_irq_save(flags); |
594 | SCCmod(INT_AND_DMA_REG, 0xff, IDR_TX_INT_ENAB); | 594 | SCCmod(INT_AND_DMA_REG, 0xff, IDR_TX_INT_ENAB); |
595 | /* restart the transmitter */ | 595 | /* restart the transmitter */ |
596 | scc_tx_int (0, port, 0); | 596 | scc_tx_int (0, port); |
597 | local_irq_restore(flags); | 597 | local_irq_restore(flags); |
598 | } | 598 | } |
599 | 599 | ||
diff --git a/drivers/macintosh/adb-iop.c b/drivers/macintosh/adb-iop.c index 1ffee7aaff20..17ef5d3c01b4 100644 --- a/drivers/macintosh/adb-iop.c +++ b/drivers/macintosh/adb-iop.c | |||
@@ -266,7 +266,7 @@ int adb_iop_autopoll(int devs) | |||
266 | void adb_iop_poll(void) | 266 | void adb_iop_poll(void) |
267 | { | 267 | { |
268 | if (adb_iop_state == idle) adb_iop_start(); | 268 | if (adb_iop_state == idle) adb_iop_start(); |
269 | iop_ism_irq(0, (void *) ADB_IOP, NULL); | 269 | iop_ism_irq(0, (void *) ADB_IOP); |
270 | } | 270 | } |
271 | 271 | ||
272 | int adb_iop_reset_bus(void) | 272 | int adb_iop_reset_bus(void) |
diff --git a/drivers/macintosh/via-macii.c b/drivers/macintosh/via-macii.c index ad4bd579f610..5d88d5b0ad99 100644 --- a/drivers/macintosh/via-macii.c +++ b/drivers/macintosh/via-macii.c | |||
@@ -295,7 +295,7 @@ static void macii_poll(void) | |||
295 | unsigned long flags; | 295 | unsigned long flags; |
296 | 296 | ||
297 | local_irq_save(flags); | 297 | local_irq_save(flags); |
298 | if (via[IFR] & SR_INT) macii_interrupt(0, NULL, NULL); | 298 | if (via[IFR] & SR_INT) macii_interrupt(0, NULL); |
299 | local_irq_restore(flags); | 299 | local_irq_restore(flags); |
300 | } | 300 | } |
301 | 301 | ||
diff --git a/drivers/macintosh/via-maciisi.c b/drivers/macintosh/via-maciisi.c index 789ee52086fe..1f0aa5dc9aa5 100644 --- a/drivers/macintosh/via-maciisi.c +++ b/drivers/macintosh/via-maciisi.c | |||
@@ -421,7 +421,7 @@ maciisi_poll(void) | |||
421 | 421 | ||
422 | local_irq_save(flags); | 422 | local_irq_save(flags); |
423 | if (via[IFR] & SR_INT) { | 423 | if (via[IFR] & SR_INT) { |
424 | maciisi_interrupt(0, NULL, NULL); | 424 | maciisi_interrupt(0, NULL); |
425 | } | 425 | } |
426 | else /* avoid calling this function too quickly in a loop */ | 426 | else /* avoid calling this function too quickly in a loop */ |
427 | udelay(ADB_DELAY); | 427 | udelay(ADB_DELAY); |
diff --git a/drivers/macintosh/via-pmu68k.c b/drivers/macintosh/via-pmu68k.c index 98ec915d0409..d9986f3a3fbf 100644 --- a/drivers/macintosh/via-pmu68k.c +++ b/drivers/macintosh/via-pmu68k.c | |||
@@ -221,7 +221,7 @@ pmu_init(void) | |||
221 | } | 221 | } |
222 | if (pmu_state == idle) { | 222 | if (pmu_state == idle) { |
223 | adb_int_pending = 1; | 223 | adb_int_pending = 1; |
224 | pmu_interrupt(0, NULL, NULL); | 224 | pmu_interrupt(0, NULL); |
225 | } | 225 | } |
226 | pmu_poll(); | 226 | pmu_poll(); |
227 | udelay(10); | 227 | udelay(10); |
@@ -562,11 +562,11 @@ pmu_poll(void) | |||
562 | local_irq_save(flags); | 562 | local_irq_save(flags); |
563 | if (via1[IFR] & SR_INT) { | 563 | if (via1[IFR] & SR_INT) { |
564 | via1[IFR] = SR_INT; | 564 | via1[IFR] = SR_INT; |
565 | pmu_interrupt(IRQ_MAC_ADB_SR, NULL, NULL); | 565 | pmu_interrupt(IRQ_MAC_ADB_SR, NULL); |
566 | } | 566 | } |
567 | if (via1[IFR] & CB1_INT) { | 567 | if (via1[IFR] & CB1_INT) { |
568 | via1[IFR] = CB1_INT; | 568 | via1[IFR] = CB1_INT; |
569 | pmu_interrupt(IRQ_MAC_ADB_CL, NULL, NULL); | 569 | pmu_interrupt(IRQ_MAC_ADB_CL, NULL); |
570 | } | 570 | } |
571 | local_irq_restore(flags); | 571 | local_irq_restore(flags); |
572 | } | 572 | } |
diff --git a/drivers/net/7990.c b/drivers/net/7990.c index 8e996b4a34ea..7733697f7776 100644 --- a/drivers/net/7990.c +++ b/drivers/net/7990.c | |||
@@ -674,7 +674,7 @@ void lance_poll(struct net_device *dev) | |||
674 | WRITERAP(lp, LE_CSR0); | 674 | WRITERAP(lp, LE_CSR0); |
675 | WRITERDP(lp, LE_C0_STRT); | 675 | WRITERDP(lp, LE_C0_STRT); |
676 | spin_unlock (&lp->devlock); | 676 | spin_unlock (&lp->devlock); |
677 | lance_interrupt(dev->irq, dev, NULL); | 677 | lance_interrupt(dev->irq, dev); |
678 | } | 678 | } |
679 | #endif | 679 | #endif |
680 | 680 | ||
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c index 506807fa5268..95b6478f55c6 100644 --- a/drivers/net/smc91x.c +++ b/drivers/net/smc91x.c | |||
@@ -1400,7 +1400,7 @@ static irqreturn_t smc_interrupt(int irq, void *dev_id) | |||
1400 | static void smc_poll_controller(struct net_device *dev) | 1400 | static void smc_poll_controller(struct net_device *dev) |
1401 | { | 1401 | { |
1402 | disable_irq(dev->irq); | 1402 | disable_irq(dev->irq); |
1403 | smc_interrupt(dev->irq, dev, NULL); | 1403 | smc_interrupt(dev->irq, dev); |
1404 | enable_irq(dev->irq); | 1404 | enable_irq(dev->irq); |
1405 | } | 1405 | } |
1406 | #endif | 1406 | #endif |
diff --git a/drivers/parport/parport_mfc3.c b/drivers/parport/parport_mfc3.c index 6541cde4df00..e5b0a544de40 100644 --- a/drivers/parport/parport_mfc3.c +++ b/drivers/parport/parport_mfc3.c | |||
@@ -219,7 +219,7 @@ static irqreturn_t mfc3_interrupt(int irq, void *dev_id) | |||
219 | if (this_port[i] != NULL) | 219 | if (this_port[i] != NULL) |
220 | if (pia(this_port[i])->crb & 128) { /* Board caused interrupt */ | 220 | if (pia(this_port[i])->crb & 128) { /* Board caused interrupt */ |
221 | dummy = pia(this_port[i])->pprb; /* clear irq bit */ | 221 | dummy = pia(this_port[i])->pprb; /* clear irq bit */ |
222 | parport_generic_irq(irq, this_port[i], regs); | 222 | parport_generic_irq(irq, this_port[i]); |
223 | } | 223 | } |
224 | return IRQ_HANDLED; | 224 | return IRQ_HANDLED; |
225 | } | 225 | } |
diff --git a/drivers/pcmcia/m32r_pcc.c b/drivers/pcmcia/m32r_pcc.c index 0964fd76bfe3..bbf025874d0c 100644 --- a/drivers/pcmcia/m32r_pcc.c +++ b/drivers/pcmcia/m32r_pcc.c | |||
@@ -395,7 +395,7 @@ static irqreturn_t pcc_interrupt(int irq, void *dev) | |||
395 | 395 | ||
396 | static void pcc_interrupt_wrapper(u_long data) | 396 | static void pcc_interrupt_wrapper(u_long data) |
397 | { | 397 | { |
398 | pcc_interrupt(0, NULL, NULL); | 398 | pcc_interrupt(0, NULL); |
399 | init_timer(&poll_timer); | 399 | init_timer(&poll_timer); |
400 | poll_timer.expires = jiffies + poll_interval; | 400 | poll_timer.expires = jiffies + poll_interval; |
401 | add_timer(&poll_timer); | 401 | add_timer(&poll_timer); |
diff --git a/drivers/serial/m32r_sio.c b/drivers/serial/m32r_sio.c index c85ac1a77608..7656a35f5e2f 100644 --- a/drivers/serial/m32r_sio.c +++ b/drivers/serial/m32r_sio.c | |||
@@ -590,7 +590,7 @@ static void m32r_sio_timeout(unsigned long data) | |||
590 | sts = sio_in(up, SIOSTS); | 590 | sts = sio_in(up, SIOSTS); |
591 | if (sts & 0x5) { | 591 | if (sts & 0x5) { |
592 | spin_lock(&up->port.lock); | 592 | spin_lock(&up->port.lock); |
593 | m32r_sio_handle_port(up, sts, NULL); | 593 | m32r_sio_handle_port(up, sts); |
594 | spin_unlock(&up->port.lock); | 594 | spin_unlock(&up->port.lock); |
595 | } | 595 | } |
596 | 596 | ||
diff --git a/drivers/tc/zs.c b/drivers/tc/zs.c index 7c0fe1dc96a9..792becdfe6f8 100644 --- a/drivers/tc/zs.c +++ b/drivers/tc/zs.c | |||
@@ -389,7 +389,7 @@ static void receive_chars(struct dec_serial *info) | |||
389 | if (ch == 0) | 389 | if (ch == 0) |
390 | continue; | 390 | continue; |
391 | if (time_before(jiffies, break_pressed + HZ * 5)) { | 391 | if (time_before(jiffies, break_pressed + HZ * 5)) { |
392 | handle_sysrq(ch, regs, NULL); | 392 | handle_sysrq(ch, NULL); |
393 | break_pressed = 0; | 393 | break_pressed = 0; |
394 | continue; | 394 | continue; |
395 | } | 395 | } |
diff --git a/fs/nfs/client.c b/fs/nfs/client.c index 6e4e48c5092a..d2533e214255 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c | |||
@@ -330,7 +330,7 @@ found_client: | |||
330 | for (;;) { | 330 | for (;;) { |
331 | set_current_state(TASK_INTERRUPTIBLE); | 331 | set_current_state(TASK_INTERRUPTIBLE); |
332 | if (signal_pending(current) || | 332 | if (signal_pending(current) || |
333 | clp->cl_cons_state > NFS_CS_READY) | 333 | clp->cl_cons_state != NFS_CS_INITING) |
334 | break; | 334 | break; |
335 | schedule(); | 335 | schedule(); |
336 | } | 336 | } |
diff --git a/fs/reiserfs/bitmap.c b/fs/reiserfs/bitmap.c index 1bfae42117ca..e3d466a228d4 100644 --- a/fs/reiserfs/bitmap.c +++ b/fs/reiserfs/bitmap.c | |||
@@ -1304,8 +1304,8 @@ struct buffer_head *reiserfs_read_bitmap_block(struct super_block *sb, | |||
1304 | 1304 | ||
1305 | bh = sb_bread(sb, block); | 1305 | bh = sb_bread(sb, block); |
1306 | if (bh == NULL) | 1306 | if (bh == NULL) |
1307 | reiserfs_warning(sb, "sh-2029: %s: bitmap block (#%lu) " | 1307 | reiserfs_warning(sb, "sh-2029: %s: bitmap block (#%u) " |
1308 | "reading failed", __FUNCTION__, bh->b_blocknr); | 1308 | "reading failed", __FUNCTION__, block); |
1309 | else { | 1309 | else { |
1310 | if (buffer_locked(bh)) { | 1310 | if (buffer_locked(bh)) { |
1311 | PROC_INFO_INC(sb, scan_bitmap.wait); | 1311 | PROC_INFO_INC(sb, scan_bitmap.wait); |
diff --git a/include/asm-alpha/irq_regs.h b/include/asm-alpha/irq_regs.h new file mode 100644 index 000000000000..3dd9c0b70270 --- /dev/null +++ b/include/asm-alpha/irq_regs.h | |||
@@ -0,0 +1 @@ | |||
#include <asm-generic/irq_regs.h> | |||
diff --git a/include/asm-i386/hw_irq.h b/include/asm-i386/hw_irq.h index 8806c7e002a7..0bedbdf5e907 100644 --- a/include/asm-i386/hw_irq.h +++ b/include/asm-i386/hw_irq.h | |||
@@ -26,9 +26,6 @@ | |||
26 | * Interrupt entry/exit code at both C and assembly level | 26 | * Interrupt entry/exit code at both C and assembly level |
27 | */ | 27 | */ |
28 | 28 | ||
29 | extern u8 irq_vector[NR_IRQ_VECTORS]; | ||
30 | #define IO_APIC_VECTOR(irq) (irq_vector[irq]) | ||
31 | |||
32 | extern void (*interrupt[NR_IRQS])(void); | 29 | extern void (*interrupt[NR_IRQS])(void); |
33 | 30 | ||
34 | #ifdef CONFIG_SMP | 31 | #ifdef CONFIG_SMP |
diff --git a/include/asm-m32r/irq_regs.h b/include/asm-m32r/irq_regs.h new file mode 100644 index 000000000000..3dd9c0b70270 --- /dev/null +++ b/include/asm-m32r/irq_regs.h | |||
@@ -0,0 +1 @@ | |||
#include <asm-generic/irq_regs.h> | |||
diff --git a/include/asm-m68k/atari_stdma.h b/include/asm-m68k/atari_stdma.h index b4eadf852738..a6986af7915e 100644 --- a/include/asm-m68k/atari_stdma.h +++ b/include/asm-m68k/atari_stdma.h | |||
@@ -8,8 +8,7 @@ | |||
8 | 8 | ||
9 | /***************************** Prototypes *****************************/ | 9 | /***************************** Prototypes *****************************/ |
10 | 10 | ||
11 | void stdma_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *), | 11 | void stdma_lock(irqreturn_t (*handler)(int, void *), void *data); |
12 | void *data); | ||
13 | void stdma_release( void ); | 12 | void stdma_release( void ); |
14 | int stdma_others_waiting( void ); | 13 | int stdma_others_waiting( void ); |
15 | int stdma_islocked( void ); | 14 | int stdma_islocked( void ); |
diff --git a/include/asm-m68k/floppy.h b/include/asm-m68k/floppy.h index 57f4fdda65ab..45dc908932a3 100644 --- a/include/asm-m68k/floppy.h +++ b/include/asm-m68k/floppy.h | |||
@@ -17,8 +17,7 @@ | |||
17 | 17 | ||
18 | #include <linux/vmalloc.h> | 18 | #include <linux/vmalloc.h> |
19 | 19 | ||
20 | asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id, | 20 | asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id); |
21 | struct pt_regs *regs); | ||
22 | 21 | ||
23 | /* constants... */ | 22 | /* constants... */ |
24 | 23 | ||
@@ -184,8 +183,7 @@ static void fd_disable_dma(void) | |||
184 | 183 | ||
185 | /* this is the only truly Q40 specific function */ | 184 | /* this is the only truly Q40 specific function */ |
186 | 185 | ||
187 | asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id, | 186 | asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id) |
188 | struct pt_regs *regs) | ||
189 | { | 187 | { |
190 | register unsigned char st; | 188 | register unsigned char st; |
191 | 189 | ||
@@ -198,7 +196,7 @@ asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id, | |||
198 | static int dma_wait=0; | 196 | static int dma_wait=0; |
199 | #endif | 197 | #endif |
200 | if(!doing_pdma) { | 198 | if(!doing_pdma) { |
201 | floppy_interrupt(irq, dev_id, regs); | 199 | floppy_interrupt(irq, dev_id); |
202 | return IRQ_HANDLED; | 200 | return IRQ_HANDLED; |
203 | } | 201 | } |
204 | 202 | ||
@@ -246,7 +244,7 @@ asmlinkage irqreturn_t floppy_hardint(int irq, void *dev_id, | |||
246 | dma_wait=0; | 244 | dma_wait=0; |
247 | #endif | 245 | #endif |
248 | doing_pdma = 0; | 246 | doing_pdma = 0; |
249 | floppy_interrupt(irq, dev_id, regs); | 247 | floppy_interrupt(irq, dev_id); |
250 | return IRQ_HANDLED; | 248 | return IRQ_HANDLED; |
251 | } | 249 | } |
252 | #ifdef TRACE_FLPY_INT | 250 | #ifdef TRACE_FLPY_INT |
diff --git a/include/asm-m68k/ide.h b/include/asm-m68k/ide.h index 365f76fb8013..896683a7a1f3 100644 --- a/include/asm-m68k/ide.h +++ b/include/asm-m68k/ide.h | |||
@@ -123,7 +123,7 @@ static __inline__ void ide_release_lock (void) | |||
123 | } | 123 | } |
124 | 124 | ||
125 | static __inline__ void | 125 | static __inline__ void |
126 | ide_get_lock(irqreturn_t (*handler)(int, void *, struct pt_regs *), void *data) | 126 | ide_get_lock(irqreturn_t (*handler)(int, void *), void *data) |
127 | { | 127 | { |
128 | if (MACH_IS_ATARI) { | 128 | if (MACH_IS_ATARI) { |
129 | if (falconide_intr_lock == 0) { | 129 | if (falconide_intr_lock == 0) { |
diff --git a/include/asm-m68k/irq.h b/include/asm-m68k/irq.h index 3257f9881002..4901cb105e2f 100644 --- a/include/asm-m68k/irq.h +++ b/include/asm-m68k/irq.h | |||
@@ -83,7 +83,7 @@ struct pt_regs; | |||
83 | * interrupt source (if it supports chaining). | 83 | * interrupt source (if it supports chaining). |
84 | */ | 84 | */ |
85 | typedef struct irq_node { | 85 | typedef struct irq_node { |
86 | int (*handler)(int, void *, struct pt_regs *); | 86 | int (*handler)(int, void *); |
87 | void *dev_id; | 87 | void *dev_id; |
88 | struct irq_node *next; | 88 | struct irq_node *next; |
89 | unsigned long flags; | 89 | unsigned long flags; |
@@ -93,12 +93,12 @@ typedef struct irq_node { | |||
93 | /* | 93 | /* |
94 | * This structure has only 4 elements for speed reasons | 94 | * This structure has only 4 elements for speed reasons |
95 | */ | 95 | */ |
96 | typedef struct irq_handler { | 96 | struct irq_handler { |
97 | int (*handler)(int, void *, struct pt_regs *); | 97 | int (*handler)(int, void *); |
98 | unsigned long flags; | 98 | unsigned long flags; |
99 | void *dev_id; | 99 | void *dev_id; |
100 | const char *devname; | 100 | const char *devname; |
101 | } irq_handler_t; | 101 | }; |
102 | 102 | ||
103 | struct irq_controller { | 103 | struct irq_controller { |
104 | const char *name; | 104 | const char *name; |
@@ -122,6 +122,7 @@ extern void m68k_setup_user_interrupt(unsigned int vec, unsigned int cnt, | |||
122 | void (*handler)(unsigned int, struct pt_regs *)); | 122 | void (*handler)(unsigned int, struct pt_regs *)); |
123 | extern void m68k_setup_irq_controller(struct irq_controller *, unsigned int, unsigned int); | 123 | extern void m68k_setup_irq_controller(struct irq_controller *, unsigned int, unsigned int); |
124 | 124 | ||
125 | asmlinkage void m68k_handle_int(unsigned int, struct pt_regs *); | 125 | asmlinkage void m68k_handle_int(unsigned int); |
126 | asmlinkage void __m68k_handle_int(unsigned int, struct pt_regs *); | ||
126 | 127 | ||
127 | #endif /* _M68K_IRQ_H_ */ | 128 | #endif /* _M68K_IRQ_H_ */ |
diff --git a/include/asm-m68k/mac_iop.h b/include/asm-m68k/mac_iop.h index b0d2e3473537..a2c7e6fcca38 100644 --- a/include/asm-m68k/mac_iop.h +++ b/include/asm-m68k/mac_iop.h | |||
@@ -143,17 +143,17 @@ struct iop_msg { | |||
143 | int status; /* status of this message */ | 143 | int status; /* status of this message */ |
144 | __u8 message[IOP_MSG_LEN]; /* the message being sent/received */ | 144 | __u8 message[IOP_MSG_LEN]; /* the message being sent/received */ |
145 | __u8 reply[IOP_MSG_LEN]; /* the reply to the message */ | 145 | __u8 reply[IOP_MSG_LEN]; /* the reply to the message */ |
146 | void (*handler)(struct iop_msg *, struct pt_regs *); | 146 | void (*handler)(struct iop_msg *); |
147 | /* function to call when reply recvd */ | 147 | /* function to call when reply recvd */ |
148 | }; | 148 | }; |
149 | 149 | ||
150 | extern int iop_scc_present,iop_ism_present; | 150 | extern int iop_scc_present,iop_ism_present; |
151 | 151 | ||
152 | extern int iop_listen(uint, uint, | 152 | extern int iop_listen(uint, uint, |
153 | void (*handler)(struct iop_msg *, struct pt_regs *), | 153 | void (*handler)(struct iop_msg *), |
154 | const char *); | 154 | const char *); |
155 | extern int iop_send_message(uint, uint, void *, uint, __u8 *, | 155 | extern int iop_send_message(uint, uint, void *, uint, __u8 *, |
156 | void (*)(struct iop_msg *, struct pt_regs *)); | 156 | void (*)(struct iop_msg *)); |
157 | extern void iop_complete_message(struct iop_msg *); | 157 | extern void iop_complete_message(struct iop_msg *); |
158 | extern void iop_upload_code(uint, __u8 *, uint, __u16); | 158 | extern void iop_upload_code(uint, __u8 *, uint, __u16); |
159 | extern void iop_download_code(uint, __u8 *, uint, __u16); | 159 | extern void iop_download_code(uint, __u8 *, uint, __u16); |
diff --git a/include/asm-m68k/machdep.h b/include/asm-m68k/machdep.h index df898f27e434..862afa4c35d8 100644 --- a/include/asm-m68k/machdep.h +++ b/include/asm-m68k/machdep.h | |||
@@ -10,7 +10,7 @@ struct rtc_time; | |||
10 | struct rtc_pll_info; | 10 | struct rtc_pll_info; |
11 | struct buffer_head; | 11 | struct buffer_head; |
12 | 12 | ||
13 | extern void (*mach_sched_init) (irqreturn_t (*handler)(int, void *, struct pt_regs *)); | 13 | extern void (*mach_sched_init) (irqreturn_t (*handler)(int, void *)); |
14 | /* machine dependent irq functions */ | 14 | /* machine dependent irq functions */ |
15 | extern void (*mach_init_IRQ) (void); | 15 | extern void (*mach_init_IRQ) (void); |
16 | extern void (*mach_get_model) (char *model); | 16 | extern void (*mach_get_model) (char *model); |
diff --git a/include/asm-m68k/sun3xflop.h b/include/asm-m68k/sun3xflop.h index ca8cc4113843..32c45f84ac60 100644 --- a/include/asm-m68k/sun3xflop.h +++ b/include/asm-m68k/sun3xflop.h | |||
@@ -111,8 +111,7 @@ static void sun3x_82072_fd_outb(unsigned char value, int port) | |||
111 | } | 111 | } |
112 | 112 | ||
113 | 113 | ||
114 | asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id, | 114 | asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id) |
115 | struct pt_regs * regs) | ||
116 | { | 115 | { |
117 | register unsigned char st; | 116 | register unsigned char st; |
118 | 117 | ||
@@ -125,7 +124,7 @@ asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id, | |||
125 | static int dma_wait=0; | 124 | static int dma_wait=0; |
126 | #endif | 125 | #endif |
127 | if(!doing_pdma) { | 126 | if(!doing_pdma) { |
128 | floppy_interrupt(irq, dev_id, regs); | 127 | floppy_interrupt(irq, dev_id); |
129 | return IRQ_HANDLED; | 128 | return IRQ_HANDLED; |
130 | } | 129 | } |
131 | 130 | ||
@@ -189,7 +188,7 @@ asmlinkage irqreturn_t sun3xflop_hardint(int irq, void *dev_id, | |||
189 | dma_wait=0; | 188 | dma_wait=0; |
190 | #endif | 189 | #endif |
191 | 190 | ||
192 | floppy_interrupt(irq, dev_id, regs); | 191 | floppy_interrupt(irq, dev_id); |
193 | return IRQ_HANDLED; | 192 | return IRQ_HANDLED; |
194 | } | 193 | } |
195 | 194 | ||
diff --git a/include/asm-mips/irq.h b/include/asm-mips/irq.h index d35c61776a02..1a9804c65369 100644 --- a/include/asm-mips/irq.h +++ b/include/asm-mips/irq.h | |||
@@ -26,7 +26,7 @@ static inline int irq_canonicalize(int irq) | |||
26 | 26 | ||
27 | struct pt_regs; | 27 | struct pt_regs; |
28 | 28 | ||
29 | extern asmlinkage unsigned int do_IRQ(unsigned int irq, struct pt_regs *regs); | 29 | extern asmlinkage unsigned int do_IRQ(unsigned int irq); |
30 | 30 | ||
31 | #ifdef CONFIG_MIPS_MT_SMTC | 31 | #ifdef CONFIG_MIPS_MT_SMTC |
32 | /* | 32 | /* |
@@ -55,18 +55,18 @@ do { \ | |||
55 | * Ideally there should be away to get this into kernel/irq/handle.c to | 55 | * Ideally there should be away to get this into kernel/irq/handle.c to |
56 | * avoid the overhead of a call for just a tiny function ... | 56 | * avoid the overhead of a call for just a tiny function ... |
57 | */ | 57 | */ |
58 | #define do_IRQ(irq, regs) \ | 58 | #define do_IRQ(irq) \ |
59 | do { \ | 59 | do { \ |
60 | irq_enter(); \ | 60 | irq_enter(); \ |
61 | __DO_IRQ_SMTC_HOOK(); \ | 61 | __DO_IRQ_SMTC_HOOK(); \ |
62 | __do_IRQ((irq), (regs)); \ | 62 | __do_IRQ((irq)); \ |
63 | irq_exit(); \ | 63 | irq_exit(); \ |
64 | } while (0) | 64 | } while (0) |
65 | 65 | ||
66 | #endif | 66 | #endif |
67 | 67 | ||
68 | extern void arch_init_irq(void); | 68 | extern void arch_init_irq(void); |
69 | extern void spurious_interrupt(struct pt_regs *regs); | 69 | extern void spurious_interrupt(void); |
70 | 70 | ||
71 | #ifdef CONFIG_MIPS_MT_SMTC | 71 | #ifdef CONFIG_MIPS_MT_SMTC |
72 | struct irqaction; | 72 | struct irqaction; |
diff --git a/include/asm-mips/irq_regs.h b/include/asm-mips/irq_regs.h index 3dd9c0b70270..33bd2a06de57 100644 --- a/include/asm-mips/irq_regs.h +++ b/include/asm-mips/irq_regs.h | |||
@@ -1 +1,21 @@ | |||
1 | #include <asm-generic/irq_regs.h> | 1 | /* |
2 | * This program is free software; you can redistribute it and/or | ||
3 | * modify it under the terms of the GNU General Public License | ||
4 | * as published by the Free Software Foundation; either version | ||
5 | * 2 of the License, or (at your option) any later version. | ||
6 | * | ||
7 | * Copyright (C) 2006 Ralf Baechle (ralf@linux-mips.org) | ||
8 | */ | ||
9 | #ifndef __ASM_IRQ_REGS_H | ||
10 | #define __ASM_IRQ_REGS_H | ||
11 | |||
12 | #define ARCH_HAS_OWN_IRQ_REGS | ||
13 | |||
14 | #include <linux/thread_info.h> | ||
15 | |||
16 | static inline struct pt_regs *get_irq_regs(void) | ||
17 | { | ||
18 | return current_thread_info()->regs; | ||
19 | } | ||
20 | |||
21 | #endif /* __ASM_IRQ_REGS_H */ | ||
diff --git a/include/asm-mips/jmr3927/irq.h b/include/asm-mips/jmr3927/irq.h index fe551f33a74f..e3e7ed38da6c 100644 --- a/include/asm-mips/jmr3927/irq.h +++ b/include/asm-mips/jmr3927/irq.h | |||
@@ -45,10 +45,6 @@ extern int | |||
45 | toshibaboards_setup_irq(int irq, struct irqaction * new); | 45 | toshibaboards_setup_irq(int irq, struct irqaction * new); |
46 | 46 | ||
47 | 47 | ||
48 | #ifdef CONFIG_TX_BRANCH_LIKELY_BUG_WORKAROUND | ||
49 | extern void tx_branch_likely_bug_fixup(struct pt_regs *regs); | ||
50 | #endif | ||
51 | |||
52 | extern int (*toshibaboards_gen_iack)(void); | 48 | extern int (*toshibaboards_gen_iack)(void); |
53 | 49 | ||
54 | #endif /* !__ASSEMBLY__ */ | 50 | #endif /* !__ASSEMBLY__ */ |
diff --git a/include/asm-mips/mach-au1x00/au1000_dma.h b/include/asm-mips/mach-au1x00/au1000_dma.h index 810f2fa33444..0493cb0d6175 100644 --- a/include/asm-mips/mach-au1x00/au1000_dma.h +++ b/include/asm-mips/mach-au1x00/au1000_dma.h | |||
@@ -123,8 +123,7 @@ struct dma_chan { | |||
123 | extern struct dma_chan au1000_dma_table[]; | 123 | extern struct dma_chan au1000_dma_table[]; |
124 | extern int request_au1000_dma(int dev_id, | 124 | extern int request_au1000_dma(int dev_id, |
125 | const char *dev_str, | 125 | const char *dev_str, |
126 | irqreturn_t (*irqhandler)(int, void *, | 126 | irqreturn_t (*irqhandler)(int, void *), |
127 | struct pt_regs *), | ||
128 | unsigned long irqflags, | 127 | unsigned long irqflags, |
129 | void *irq_dev_id); | 128 | void *irq_dev_id); |
130 | extern void free_au1000_dma(unsigned int dmanr); | 129 | extern void free_au1000_dma(unsigned int dmanr); |
diff --git a/include/asm-mips/marvell.h b/include/asm-mips/marvell.h index 6bb2125bb053..df94955b098a 100644 --- a/include/asm-mips/marvell.h +++ b/include/asm-mips/marvell.h | |||
@@ -53,6 +53,6 @@ struct mv_pci_controller { | |||
53 | unsigned long config_vreg; | 53 | unsigned long config_vreg; |
54 | }; | 54 | }; |
55 | 55 | ||
56 | extern void ll_mv64340_irq(struct pt_regs *regs); | 56 | extern void ll_mv64340_irq(void); |
57 | 57 | ||
58 | #endif /* __ASM_MIPS_MARVELL_H */ | 58 | #endif /* __ASM_MIPS_MARVELL_H */ |
diff --git a/include/asm-mips/msc01_ic.h b/include/asm-mips/msc01_ic.h index 64f17208d602..aa7ad9a71762 100644 --- a/include/asm-mips/msc01_ic.h +++ b/include/asm-mips/msc01_ic.h | |||
@@ -145,7 +145,7 @@ typedef struct msc_irqmap { | |||
145 | #define MSC01_IRQ_EDGE 1 | 145 | #define MSC01_IRQ_EDGE 1 |
146 | 146 | ||
147 | extern void __init init_msc_irqs(unsigned int base, msc_irqmap_t *imp, int nirq); | 147 | extern void __init init_msc_irqs(unsigned int base, msc_irqmap_t *imp, int nirq); |
148 | extern void ll_msc_irq(struct pt_regs *regs); | 148 | extern void ll_msc_irq(void); |
149 | 149 | ||
150 | #endif /* __ASM_MIPS_BOARDS_MSC01_IC_H */ | 150 | #endif /* __ASM_MIPS_BOARDS_MSC01_IC_H */ |
151 | 151 | ||
diff --git a/include/asm-mips/thread_info.h b/include/asm-mips/thread_info.h index ae8ada5b42a9..e475c45ea263 100644 --- a/include/asm-mips/thread_info.h +++ b/include/asm-mips/thread_info.h | |||
@@ -34,6 +34,7 @@ struct thread_info { | |||
34 | 0-0xFFFFFFFF for kernel-thread | 34 | 0-0xFFFFFFFF for kernel-thread |
35 | */ | 35 | */ |
36 | struct restart_block restart_block; | 36 | struct restart_block restart_block; |
37 | struct pt_regs *regs; | ||
37 | }; | 38 | }; |
38 | 39 | ||
39 | /* | 40 | /* |
diff --git a/include/asm-mips/time.h b/include/asm-mips/time.h index 30f21df39253..28512ba2266e 100644 --- a/include/asm-mips/time.h +++ b/include/asm-mips/time.h | |||
@@ -72,13 +72,13 @@ extern irqreturn_t timer_interrupt(int irq, void *dev_id); | |||
72 | /* | 72 | /* |
73 | * the corresponding low-level timer interrupt routine. | 73 | * the corresponding low-level timer interrupt routine. |
74 | */ | 74 | */ |
75 | extern asmlinkage void ll_timer_interrupt(int irq, struct pt_regs *regs); | 75 | extern asmlinkage void ll_timer_interrupt(int irq); |
76 | 76 | ||
77 | /* | 77 | /* |
78 | * profiling and process accouting is done separately in local_timer_interrupt | 78 | * profiling and process accouting is done separately in local_timer_interrupt |
79 | */ | 79 | */ |
80 | extern void local_timer_interrupt(int irq, void *dev_id); | 80 | extern void local_timer_interrupt(int irq, void *dev_id); |
81 | extern asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs); | 81 | extern asmlinkage void ll_local_timer_interrupt(int irq); |
82 | 82 | ||
83 | /* | 83 | /* |
84 | * board specific routines required by time_init(). | 84 | * board specific routines required by time_init(). |
diff --git a/include/asm-powerpc/i8259.h b/include/asm-powerpc/i8259.h index c80e113052cd..78489fb8d140 100644 --- a/include/asm-powerpc/i8259.h +++ b/include/asm-powerpc/i8259.h | |||
@@ -6,10 +6,10 @@ | |||
6 | 6 | ||
7 | #ifdef CONFIG_PPC_MERGE | 7 | #ifdef CONFIG_PPC_MERGE |
8 | extern void i8259_init(struct device_node *node, unsigned long intack_addr); | 8 | extern void i8259_init(struct device_node *node, unsigned long intack_addr); |
9 | extern unsigned int i8259_irq(struct pt_regs *regs); | 9 | extern unsigned int i8259_irq(void); |
10 | #else | 10 | #else |
11 | extern void i8259_init(unsigned long intack_addr, int offset); | 11 | extern void i8259_init(unsigned long intack_addr, int offset); |
12 | extern int i8259_irq(struct pt_regs *regs); | 12 | extern int i8259_irq(void); |
13 | #endif | 13 | #endif |
14 | 14 | ||
15 | #endif /* __KERNEL__ */ | 15 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-powerpc/ibmebus.h b/include/asm-powerpc/ibmebus.h index 7ab195a27888..9d25f2063b03 100644 --- a/include/asm-powerpc/ibmebus.h +++ b/include/asm-powerpc/ibmebus.h | |||
@@ -65,7 +65,7 @@ void ibmebus_unregister_driver(struct ibmebus_driver *drv); | |||
65 | 65 | ||
66 | int ibmebus_request_irq(struct ibmebus_dev *dev, | 66 | int ibmebus_request_irq(struct ibmebus_dev *dev, |
67 | u32 ist, | 67 | u32 ist, |
68 | irqreturn_t (*handler)(int, void*, struct pt_regs *), | 68 | irqreturn_t (*handler)(int, void*), |
69 | unsigned long irq_flags, const char * devname, | 69 | unsigned long irq_flags, const char * devname, |
70 | void *dev_id); | 70 | void *dev_id); |
71 | void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id); | 71 | void ibmebus_free_irq(struct ibmebus_dev *dev, u32 ist, void *dev_id); |
diff --git a/include/asm-powerpc/ipic.h b/include/asm-powerpc/ipic.h index 1ce09a35906e..9fbb03415860 100644 --- a/include/asm-powerpc/ipic.h +++ b/include/asm-powerpc/ipic.h | |||
@@ -79,12 +79,12 @@ extern void ipic_clear_mcp_status(u32 mask); | |||
79 | 79 | ||
80 | #ifdef CONFIG_PPC_MERGE | 80 | #ifdef CONFIG_PPC_MERGE |
81 | extern void ipic_init(struct device_node *node, unsigned int flags); | 81 | extern void ipic_init(struct device_node *node, unsigned int flags); |
82 | extern unsigned int ipic_get_irq(struct pt_regs *regs); | 82 | extern unsigned int ipic_get_irq(void); |
83 | #else | 83 | #else |
84 | extern void ipic_init(phys_addr_t phys_addr, unsigned int flags, | 84 | extern void ipic_init(phys_addr_t phys_addr, unsigned int flags, |
85 | unsigned int irq_offset, | 85 | unsigned int irq_offset, |
86 | unsigned char *senses, unsigned int senses_count); | 86 | unsigned char *senses, unsigned int senses_count); |
87 | extern int ipic_get_irq(struct pt_regs *regs); | 87 | extern int ipic_get_irq(void); |
88 | #endif | 88 | #endif |
89 | 89 | ||
90 | #endif /* __ASM_IPIC_H__ */ | 90 | #endif /* __ASM_IPIC_H__ */ |
diff --git a/include/asm-powerpc/iseries/hv_lp_event.h b/include/asm-powerpc/iseries/hv_lp_event.h index 4065a4de4935..6ce2ce1e2690 100644 --- a/include/asm-powerpc/iseries/hv_lp_event.h +++ b/include/asm-powerpc/iseries/hv_lp_event.h | |||
@@ -50,7 +50,7 @@ struct HvLpEvent { | |||
50 | u64 xCorrelationToken; /* Unique value for source/type x10-x17 */ | 50 | u64 xCorrelationToken; /* Unique value for source/type x10-x17 */ |
51 | }; | 51 | }; |
52 | 52 | ||
53 | typedef void (*LpEventHandler)(struct HvLpEvent *, struct pt_regs *); | 53 | typedef void (*LpEventHandler)(struct HvLpEvent *); |
54 | 54 | ||
55 | /* Register a handler for an event type - returns 0 on success */ | 55 | /* Register a handler for an event type - returns 0 on success */ |
56 | extern int HvLpEvent_registerHandler(HvLpEvent_Type eventType, | 56 | extern int HvLpEvent_registerHandler(HvLpEvent_Type eventType, |
diff --git a/include/asm-powerpc/iseries/it_lp_queue.h b/include/asm-powerpc/iseries/it_lp_queue.h index 3f6814769295..428278838821 100644 --- a/include/asm-powerpc/iseries/it_lp_queue.h +++ b/include/asm-powerpc/iseries/it_lp_queue.h | |||
@@ -72,7 +72,7 @@ struct hvlpevent_queue { | |||
72 | extern struct hvlpevent_queue hvlpevent_queue; | 72 | extern struct hvlpevent_queue hvlpevent_queue; |
73 | 73 | ||
74 | extern int hvlpevent_is_pending(void); | 74 | extern int hvlpevent_is_pending(void); |
75 | extern void process_hvlpevents(struct pt_regs *); | 75 | extern void process_hvlpevents(void); |
76 | extern void setup_hvlpevent_queue(void); | 76 | extern void setup_hvlpevent_queue(void); |
77 | 77 | ||
78 | #endif /* _ASM_POWERPC_ISERIES_IT_LP_QUEUE_H */ | 78 | #endif /* _ASM_POWERPC_ISERIES_IT_LP_QUEUE_H */ |
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h index c17c13742401..dac90dc341cb 100644 --- a/include/asm-powerpc/machdep.h +++ b/include/asm-powerpc/machdep.h | |||
@@ -97,7 +97,7 @@ struct machdep_calls { | |||
97 | void (*show_percpuinfo)(struct seq_file *m, int i); | 97 | void (*show_percpuinfo)(struct seq_file *m, int i); |
98 | 98 | ||
99 | void (*init_IRQ)(void); | 99 | void (*init_IRQ)(void); |
100 | unsigned int (*get_irq)(struct pt_regs *); | 100 | unsigned int (*get_irq)(void); |
101 | #ifdef CONFIG_KEXEC | 101 | #ifdef CONFIG_KEXEC |
102 | void (*kexec_cpu_down)(int crash_shutdown, int secondary); | 102 | void (*kexec_cpu_down)(int crash_shutdown, int secondary); |
103 | #endif | 103 | #endif |
diff --git a/include/asm-powerpc/mpic.h b/include/asm-powerpc/mpic.h index a9f9604b9eff..ef0a5458d2b2 100644 --- a/include/asm-powerpc/mpic.h +++ b/include/asm-powerpc/mpic.h | |||
@@ -409,9 +409,9 @@ extern void mpic_send_ipi(unsigned int ipi_no, unsigned int cpu_mask); | |||
409 | void smp_mpic_message_pass(int target, int msg); | 409 | void smp_mpic_message_pass(int target, int msg); |
410 | 410 | ||
411 | /* Fetch interrupt from a given mpic */ | 411 | /* Fetch interrupt from a given mpic */ |
412 | extern unsigned int mpic_get_one_irq(struct mpic *mpic, struct pt_regs *regs); | 412 | extern unsigned int mpic_get_one_irq(struct mpic *mpic); |
413 | /* This one gets to the primary mpic */ | 413 | /* This one gets to the primary mpic */ |
414 | extern unsigned int mpic_get_irq(struct pt_regs *regs); | 414 | extern unsigned int mpic_get_irq(void); |
415 | 415 | ||
416 | /* Set the EPIC clock ratio */ | 416 | /* Set the EPIC clock ratio */ |
417 | void mpic_set_clk_ratio(struct mpic *mpic, u32 clock_ratio); | 417 | void mpic_set_clk_ratio(struct mpic *mpic, u32 clock_ratio); |
diff --git a/include/asm-powerpc/reg.h b/include/asm-powerpc/reg.h index 3a9fcc15811b..8fb96811b55d 100644 --- a/include/asm-powerpc/reg.h +++ b/include/asm-powerpc/reg.h | |||
@@ -503,7 +503,7 @@ | |||
503 | 503 | ||
504 | /* | 504 | /* |
505 | * An mtfsf instruction with the L bit set. On CPUs that support this a | 505 | * An mtfsf instruction with the L bit set. On CPUs that support this a |
506 | * full 64bits of FPSCR is restored and on other CPUs it is ignored. | 506 | * full 64bits of FPSCR is restored and on other CPUs the L bit is ignored. |
507 | * | 507 | * |
508 | * Until binutils gets the new form of mtfsf, hardwire the instruction. | 508 | * Until binutils gets the new form of mtfsf, hardwire the instruction. |
509 | */ | 509 | */ |
diff --git a/include/asm-ppc/floppy.h b/include/asm-ppc/floppy.h index d3963ca79ad8..ae316e6d2ca9 100644 --- a/include/asm-ppc/floppy.h +++ b/include/asm-ppc/floppy.h | |||
@@ -38,14 +38,14 @@ static int virtual_dma_mode; | |||
38 | static int doing_vdma; | 38 | static int doing_vdma; |
39 | static struct fd_dma_ops *fd_ops; | 39 | static struct fd_dma_ops *fd_ops; |
40 | 40 | ||
41 | static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs) | 41 | static irqreturn_t floppy_hardint(int irq, void *dev_id) |
42 | { | 42 | { |
43 | unsigned char st; | 43 | unsigned char st; |
44 | int lcount; | 44 | int lcount; |
45 | char *lptr; | 45 | char *lptr; |
46 | 46 | ||
47 | if (!doing_vdma) | 47 | if (!doing_vdma) |
48 | return floppy_interrupt(irq, dev_id, regs); | 48 | return floppy_interrupt(irq, dev_id); |
49 | 49 | ||
50 | 50 | ||
51 | st = 1; | 51 | st = 1; |
@@ -69,7 +69,7 @@ static irqreturn_t floppy_hardint(int irq, void *dev_id, struct pt_regs * regs) | |||
69 | virtual_dma_residue += virtual_dma_count; | 69 | virtual_dma_residue += virtual_dma_count; |
70 | virtual_dma_count=0; | 70 | virtual_dma_count=0; |
71 | doing_vdma = 0; | 71 | doing_vdma = 0; |
72 | floppy_interrupt(irq, dev_id, regs); | 72 | floppy_interrupt(irq, dev_id); |
73 | return IRQ_HANDLED; | 73 | return IRQ_HANDLED; |
74 | } | 74 | } |
75 | return IRQ_HANDLED; | 75 | return IRQ_HANDLED; |
diff --git a/include/asm-ppc/machdep.h b/include/asm-ppc/machdep.h index da7746738aee..293a444a1d77 100644 --- a/include/asm-ppc/machdep.h +++ b/include/asm-ppc/machdep.h | |||
@@ -43,7 +43,7 @@ struct machdep_calls { | |||
43 | /* Optional, may be NULL. */ | 43 | /* Optional, may be NULL. */ |
44 | unsigned int (*irq_canonicalize)(unsigned int irq); | 44 | unsigned int (*irq_canonicalize)(unsigned int irq); |
45 | void (*init_IRQ)(void); | 45 | void (*init_IRQ)(void); |
46 | int (*get_irq)(struct pt_regs *); | 46 | int (*get_irq)(void); |
47 | 47 | ||
48 | /* A general init function, called by ppc_init in init/main.c. | 48 | /* A general init function, called by ppc_init in init/main.c. |
49 | May be NULL. DEPRECATED ! */ | 49 | May be NULL. DEPRECATED ! */ |
diff --git a/include/asm-ppc/open_pic.h b/include/asm-ppc/open_pic.h index a4fe962d9f73..778d5726212c 100644 --- a/include/asm-ppc/open_pic.h +++ b/include/asm-ppc/open_pic.h | |||
@@ -48,12 +48,12 @@ extern void openpic_init(int linux_irq_offset); | |||
48 | extern void openpic_init_nmi_irq(u_int irq); | 48 | extern void openpic_init_nmi_irq(u_int irq); |
49 | extern void openpic_set_irq_priority(u_int irq, u_int pri); | 49 | extern void openpic_set_irq_priority(u_int irq, u_int pri); |
50 | extern void openpic_hookup_cascade(u_int irq, char *name, | 50 | extern void openpic_hookup_cascade(u_int irq, char *name, |
51 | int (*cascade_fn)(struct pt_regs *)); | 51 | int (*cascade_fn)(void)); |
52 | extern u_int openpic_irq(void); | 52 | extern u_int openpic_irq(void); |
53 | extern void openpic_eoi(void); | 53 | extern void openpic_eoi(void); |
54 | extern void openpic_request_IPIs(void); | 54 | extern void openpic_request_IPIs(void); |
55 | extern void do_openpic_setup_cpu(void); | 55 | extern void do_openpic_setup_cpu(void); |
56 | extern int openpic_get_irq(struct pt_regs *regs); | 56 | extern int openpic_get_irq(void); |
57 | extern void openpic_reset_processor_phys(u_int cpumask); | 57 | extern void openpic_reset_processor_phys(u_int cpumask); |
58 | extern void openpic_setup_ISU(int isu_num, unsigned long addr); | 58 | extern void openpic_setup_ISU(int isu_num, unsigned long addr); |
59 | extern void openpic_cause_IPI(u_int ipi, cpumask_t cpumask); | 59 | extern void openpic_cause_IPI(u_int ipi, cpumask_t cpumask); |
@@ -93,6 +93,6 @@ extern void openpic2_init(int linux_irq_offset); | |||
93 | extern void openpic2_init_nmi_irq(u_int irq); | 93 | extern void openpic2_init_nmi_irq(u_int irq); |
94 | extern u_int openpic2_irq(void); | 94 | extern u_int openpic2_irq(void); |
95 | extern void openpic2_eoi(void); | 95 | extern void openpic2_eoi(void); |
96 | extern int openpic2_get_irq(struct pt_regs *regs); | 96 | extern int openpic2_get_irq(void); |
97 | extern void openpic2_setup_ISU(int isu_num, unsigned long addr); | 97 | extern void openpic2_setup_ISU(int isu_num, unsigned long addr); |
98 | #endif /* _PPC_KERNEL_OPEN_PIC_H */ | 98 | #endif /* _PPC_KERNEL_OPEN_PIC_H */ |
diff --git a/include/asm-ppc/smp.h b/include/asm-ppc/smp.h index 0b7fa89589df..e75791ea33a6 100644 --- a/include/asm-ppc/smp.h +++ b/include/asm-ppc/smp.h | |||
@@ -39,7 +39,7 @@ extern struct smp_ops_t *smp_ops; | |||
39 | extern void smp_send_tlb_invalidate(int); | 39 | extern void smp_send_tlb_invalidate(int); |
40 | extern void smp_send_xmon_break(int cpu); | 40 | extern void smp_send_xmon_break(int cpu); |
41 | struct pt_regs; | 41 | struct pt_regs; |
42 | extern void smp_message_recv(int, struct pt_regs *); | 42 | extern void smp_message_recv(int); |
43 | 43 | ||
44 | extern int __cpu_disable(void); | 44 | extern int __cpu_disable(void); |
45 | extern void __cpu_die(unsigned int cpu); | 45 | extern void __cpu_die(unsigned int cpu); |
diff --git a/include/asm-x86_64/genapic.h b/include/asm-x86_64/genapic.h index 81e714665344..a0e9a4b93484 100644 --- a/include/asm-x86_64/genapic.h +++ b/include/asm-x86_64/genapic.h | |||
@@ -18,6 +18,7 @@ struct genapic { | |||
18 | u32 int_dest_mode; | 18 | u32 int_dest_mode; |
19 | int (*apic_id_registered)(void); | 19 | int (*apic_id_registered)(void); |
20 | cpumask_t (*target_cpus)(void); | 20 | cpumask_t (*target_cpus)(void); |
21 | cpumask_t (*vector_allocation_domain)(int cpu); | ||
21 | void (*init_apic_ldr)(void); | 22 | void (*init_apic_ldr)(void); |
22 | /* ipi */ | 23 | /* ipi */ |
23 | void (*send_IPI_mask)(cpumask_t mask, int vector); | 24 | void (*send_IPI_mask)(cpumask_t mask, int vector); |
diff --git a/include/asm-x86_64/hw_irq.h b/include/asm-x86_64/hw_irq.h index 53d0d9fd10d6..792dd52fcd70 100644 --- a/include/asm-x86_64/hw_irq.h +++ b/include/asm-x86_64/hw_irq.h | |||
@@ -74,10 +74,8 @@ | |||
74 | 74 | ||
75 | 75 | ||
76 | #ifndef __ASSEMBLY__ | 76 | #ifndef __ASSEMBLY__ |
77 | extern unsigned int irq_vector[NR_IRQ_VECTORS]; | ||
78 | typedef int vector_irq_t[NR_VECTORS]; | 77 | typedef int vector_irq_t[NR_VECTORS]; |
79 | DECLARE_PER_CPU(vector_irq_t, vector_irq); | 78 | DECLARE_PER_CPU(vector_irq_t, vector_irq); |
80 | #define IO_APIC_VECTOR(irq) (irq_vector[irq]) | ||
81 | 79 | ||
82 | /* | 80 | /* |
83 | * Various low-level irq details needed by irq.c, process.c, | 81 | * Various low-level irq details needed by irq.c, process.c, |
diff --git a/include/asm-x86_64/mach_apic.h b/include/asm-x86_64/mach_apic.h index d33422450c00..7b7115a0c1c9 100644 --- a/include/asm-x86_64/mach_apic.h +++ b/include/asm-x86_64/mach_apic.h | |||
@@ -17,6 +17,7 @@ | |||
17 | #define INT_DELIVERY_MODE (genapic->int_delivery_mode) | 17 | #define INT_DELIVERY_MODE (genapic->int_delivery_mode) |
18 | #define INT_DEST_MODE (genapic->int_dest_mode) | 18 | #define INT_DEST_MODE (genapic->int_dest_mode) |
19 | #define TARGET_CPUS (genapic->target_cpus()) | 19 | #define TARGET_CPUS (genapic->target_cpus()) |
20 | #define vector_allocation_domain (genapic->vector_allocation_domain) | ||
20 | #define apic_id_registered (genapic->apic_id_registered) | 21 | #define apic_id_registered (genapic->apic_id_registered) |
21 | #define init_apic_ldr (genapic->init_apic_ldr) | 22 | #define init_apic_ldr (genapic->init_apic_ldr) |
22 | #define send_IPI_mask (genapic->send_IPI_mask) | 23 | #define send_IPI_mask (genapic->send_IPI_mask) |
diff --git a/kernel/power/user.c b/kernel/power/user.c index 72825c853cd7..93b5dd283dea 100644 --- a/kernel/power/user.c +++ b/kernel/power/user.c | |||
@@ -145,10 +145,10 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp, | |||
145 | error = freeze_processes(); | 145 | error = freeze_processes(); |
146 | if (error) { | 146 | if (error) { |
147 | thaw_processes(); | 147 | thaw_processes(); |
148 | enable_nonboot_cpus(); | ||
148 | error = -EBUSY; | 149 | error = -EBUSY; |
149 | } | 150 | } |
150 | } | 151 | } |
151 | enable_nonboot_cpus(); | ||
152 | up(&pm_sem); | 152 | up(&pm_sem); |
153 | if (!error) | 153 | if (!error) |
154 | data->frozen = 1; | 154 | data->frozen = 1; |
@@ -1328,7 +1328,6 @@ static void init_list(struct kmem_cache *cachep, struct kmem_list3 *list, | |||
1328 | { | 1328 | { |
1329 | struct kmem_list3 *ptr; | 1329 | struct kmem_list3 *ptr; |
1330 | 1330 | ||
1331 | BUG_ON(cachep->nodelists[nodeid] != list); | ||
1332 | ptr = kmalloc_node(sizeof(struct kmem_list3), GFP_KERNEL, nodeid); | 1331 | ptr = kmalloc_node(sizeof(struct kmem_list3), GFP_KERNEL, nodeid); |
1333 | BUG_ON(!ptr); | 1332 | BUG_ON(!ptr); |
1334 | 1333 | ||