diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2006-10-07 09:16:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-07 13:51:14 -0400 |
commit | 2850bc273776cbb1b510c5828e9e456dffb50a32 (patch) | |
tree | 340bd599b6efde40618ef89de59cbe957269eac2 /arch/m68k/amiga | |
parent | 00079e04fe478cd3c59ae2106ef2fbe779e67024 (diff) |
[PATCH] m68k pt_regs fixes
m68k_handle_int() split in two functions: __m68k_handle_int() takes
pt_regs * and does set_irq_regs(); m68k_handle_int() doesn't get pt_regs
*.
Places where we used to call m68k_handle_int() recursively with the same
pt_regs have simply lost the second argument, the rest is switched to
__m68k_handle_int().
The rest of patch is just dropping pt_regs * where needed.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/m68k/amiga')
-rw-r--r-- | arch/m68k/amiga/amiints.c | 40 | ||||
-rw-r--r-- | arch/m68k/amiga/cia.c | 4 | ||||
-rw-r--r-- | arch/m68k/amiga/config.c | 5 |
3 files changed, 24 insertions, 25 deletions
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, |