aboutsummaryrefslogtreecommitdiffstats
path: root/arch/frv
diff options
context:
space:
mode:
Diffstat (limited to 'arch/frv')
-rw-r--r--arch/frv/include/asm/Kbuild2
-rw-r--r--arch/frv/include/asm/processor.h19
-rw-r--r--arch/frv/include/asm/scatterlist.h6
-rw-r--r--arch/frv/kernel/irq-mb93091.c8
-rw-r--r--arch/frv/kernel/irq-mb93093.c1
-rw-r--r--arch/frv/kernel/irq-mb93493.c4
-rw-r--r--arch/frv/kernel/setup.c2
-rw-r--r--arch/frv/kernel/signal.c112
-rw-r--r--arch/frv/kernel/time.c1
9 files changed, 52 insertions, 103 deletions
diff --git a/arch/frv/include/asm/Kbuild b/arch/frv/include/asm/Kbuild
index 87b95eb8aee5..3caf05cabfc5 100644
--- a/arch/frv/include/asm/Kbuild
+++ b/arch/frv/include/asm/Kbuild
@@ -3,6 +3,8 @@ generic-y += clkdev.h
3generic-y += cputime.h 3generic-y += cputime.h
4generic-y += exec.h 4generic-y += exec.h
5generic-y += hash.h 5generic-y += hash.h
6generic-y += irq_work.h
6generic-y += mcs_spinlock.h 7generic-y += mcs_spinlock.h
7generic-y += preempt.h 8generic-y += preempt.h
9generic-y += scatterlist.h
8generic-y += trace_clock.h 10generic-y += trace_clock.h
diff --git a/arch/frv/include/asm/processor.h b/arch/frv/include/asm/processor.h
index a34f309e5801..ae8d423e79d9 100644
--- a/arch/frv/include/asm/processor.h
+++ b/arch/frv/include/asm/processor.h
@@ -35,22 +35,6 @@
35struct task_struct; 35struct task_struct;
36 36
37/* 37/*
38 * CPU type and hardware bug flags. Kept separately for each CPU.
39 */
40struct cpuinfo_frv {
41#ifdef CONFIG_MMU
42 unsigned long *pgd_quick;
43 unsigned long *pte_quick;
44 unsigned long pgtable_cache_sz;
45#endif
46} __cacheline_aligned;
47
48extern struct cpuinfo_frv __nongprelbss boot_cpu_data;
49
50#define cpu_data (&boot_cpu_data)
51#define current_cpu_data boot_cpu_data
52
53/*
54 * Bus types 38 * Bus types
55 */ 39 */
56#define EISA_bus 0 40#define EISA_bus 0
@@ -129,7 +113,8 @@ unsigned long get_wchan(struct task_struct *p);
129#define KSTK_EIP(tsk) ((tsk)->thread.frame0->pc) 113#define KSTK_EIP(tsk) ((tsk)->thread.frame0->pc)
130#define KSTK_ESP(tsk) ((tsk)->thread.frame0->sp) 114#define KSTK_ESP(tsk) ((tsk)->thread.frame0->sp)
131 115
132#define cpu_relax() barrier() 116#define cpu_relax() barrier()
117#define cpu_relax_lowlatency() cpu_relax()
133 118
134/* data cache prefetch */ 119/* data cache prefetch */
135#define ARCH_HAS_PREFETCH 120#define ARCH_HAS_PREFETCH
diff --git a/arch/frv/include/asm/scatterlist.h b/arch/frv/include/asm/scatterlist.h
deleted file mode 100644
index 0e5eb3018468..000000000000
--- a/arch/frv/include/asm/scatterlist.h
+++ /dev/null
@@ -1,6 +0,0 @@
1#ifndef _ASM_SCATTERLIST_H
2#define _ASM_SCATTERLIST_H
3
4#include <asm-generic/scatterlist.h>
5
6#endif /* !_ASM_SCATTERLIST_H */
diff --git a/arch/frv/kernel/irq-mb93091.c b/arch/frv/kernel/irq-mb93091.c
index 2cc327a1ca44..091b2839be90 100644
--- a/arch/frv/kernel/irq-mb93091.c
+++ b/arch/frv/kernel/irq-mb93091.c
@@ -107,25 +107,25 @@ static irqreturn_t fpga_interrupt(int irq, void *_mask)
107static struct irqaction fpga_irq[4] = { 107static struct irqaction fpga_irq[4] = {
108 [0] = { 108 [0] = {
109 .handler = fpga_interrupt, 109 .handler = fpga_interrupt,
110 .flags = IRQF_DISABLED | IRQF_SHARED, 110 .flags = IRQF_SHARED,
111 .name = "fpga.0", 111 .name = "fpga.0",
112 .dev_id = (void *) 0x0028UL, 112 .dev_id = (void *) 0x0028UL,
113 }, 113 },
114 [1] = { 114 [1] = {
115 .handler = fpga_interrupt, 115 .handler = fpga_interrupt,
116 .flags = IRQF_DISABLED | IRQF_SHARED, 116 .flags = IRQF_SHARED,
117 .name = "fpga.1", 117 .name = "fpga.1",
118 .dev_id = (void *) 0x0050UL, 118 .dev_id = (void *) 0x0050UL,
119 }, 119 },
120 [2] = { 120 [2] = {
121 .handler = fpga_interrupt, 121 .handler = fpga_interrupt,
122 .flags = IRQF_DISABLED | IRQF_SHARED, 122 .flags = IRQF_SHARED,
123 .name = "fpga.2", 123 .name = "fpga.2",
124 .dev_id = (void *) 0x1c00UL, 124 .dev_id = (void *) 0x1c00UL,
125 }, 125 },
126 [3] = { 126 [3] = {
127 .handler = fpga_interrupt, 127 .handler = fpga_interrupt,
128 .flags = IRQF_DISABLED | IRQF_SHARED, 128 .flags = IRQF_SHARED,
129 .name = "fpga.3", 129 .name = "fpga.3",
130 .dev_id = (void *) 0x6386UL, 130 .dev_id = (void *) 0x6386UL,
131 } 131 }
diff --git a/arch/frv/kernel/irq-mb93093.c b/arch/frv/kernel/irq-mb93093.c
index 95e4eb4f1f38..1f3015cf80f5 100644
--- a/arch/frv/kernel/irq-mb93093.c
+++ b/arch/frv/kernel/irq-mb93093.c
@@ -105,7 +105,6 @@ static irqreturn_t fpga_interrupt(int irq, void *_mask)
105static struct irqaction fpga_irq[1] = { 105static struct irqaction fpga_irq[1] = {
106 [0] = { 106 [0] = {
107 .handler = fpga_interrupt, 107 .handler = fpga_interrupt,
108 .flags = IRQF_DISABLED,
109 .name = "fpga.0", 108 .name = "fpga.0",
110 .dev_id = (void *) 0x0700UL, 109 .dev_id = (void *) 0x0700UL,
111 } 110 }
diff --git a/arch/frv/kernel/irq-mb93493.c b/arch/frv/kernel/irq-mb93493.c
index ba648da0932d..8ca5aa4ff595 100644
--- a/arch/frv/kernel/irq-mb93493.c
+++ b/arch/frv/kernel/irq-mb93493.c
@@ -118,13 +118,13 @@ static irqreturn_t mb93493_interrupt(int irq, void *_piqsr)
118static struct irqaction mb93493_irq[2] = { 118static struct irqaction mb93493_irq[2] = {
119 [0] = { 119 [0] = {
120 .handler = mb93493_interrupt, 120 .handler = mb93493_interrupt,
121 .flags = IRQF_DISABLED | IRQF_SHARED, 121 .flags = IRQF_SHARED,
122 .name = "mb93493.0", 122 .name = "mb93493.0",
123 .dev_id = (void *) __addr_MB93493_IQSR(0), 123 .dev_id = (void *) __addr_MB93493_IQSR(0),
124 }, 124 },
125 [1] = { 125 [1] = {
126 .handler = mb93493_interrupt, 126 .handler = mb93493_interrupt,
127 .flags = IRQF_DISABLED | IRQF_SHARED, 127 .flags = IRQF_SHARED,
128 .name = "mb93493.1", 128 .name = "mb93493.1",
129 .dev_id = (void *) __addr_MB93493_IQSR(1), 129 .dev_id = (void *) __addr_MB93493_IQSR(1),
130 } 130 }
diff --git a/arch/frv/kernel/setup.c b/arch/frv/kernel/setup.c
index 9f3a7a62d787..9f4a9a607dbe 100644
--- a/arch/frv/kernel/setup.c
+++ b/arch/frv/kernel/setup.c
@@ -104,8 +104,6 @@ unsigned long __nongprelbss dma_coherent_mem_end;
104unsigned long __initdata __sdram_old_base; 104unsigned long __initdata __sdram_old_base;
105unsigned long __initdata num_mappedpages; 105unsigned long __initdata num_mappedpages;
106 106
107struct cpuinfo_frv __nongprelbss boot_cpu_data;
108
109char __initdata command_line[COMMAND_LINE_SIZE]; 107char __initdata command_line[COMMAND_LINE_SIZE];
110char __initdata redboot_command_line[COMMAND_LINE_SIZE]; 108char __initdata redboot_command_line[COMMAND_LINE_SIZE];
111 109
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c
index d822700d4f15..dc3d59de0870 100644
--- a/arch/frv/kernel/signal.c
+++ b/arch/frv/kernel/signal.c
@@ -158,19 +158,10 @@ static int setup_sigcontext(struct sigcontext __user *sc, unsigned long mask)
158/* 158/*
159 * Determine which stack to use.. 159 * Determine which stack to use..
160 */ 160 */
161static inline void __user *get_sigframe(struct k_sigaction *ka, 161static inline void __user *get_sigframe(struct ksignal *ksig,
162 size_t frame_size) 162 size_t frame_size)
163{ 163{
164 unsigned long sp; 164 unsigned long sp = sigsp(__frame->sp, ksig);
165
166 /* Default to using normal stack */
167 sp = __frame->sp;
168
169 /* This is the X/Open sanctioned signal stack switching. */
170 if (ka->sa.sa_flags & SA_ONSTACK) {
171 if (! sas_ss_flags(sp))
172 sp = current->sas_ss_sp + current->sas_ss_size;
173 }
174 165
175 return (void __user *) ((sp - frame_size) & ~7UL); 166 return (void __user *) ((sp - frame_size) & ~7UL);
176 167
@@ -180,17 +171,17 @@ static inline void __user *get_sigframe(struct k_sigaction *ka,
180/* 171/*
181 * 172 *
182 */ 173 */
183static int setup_frame(int sig, struct k_sigaction *ka, sigset_t *set) 174static int setup_frame(struct ksignal *ksig, sigset_t *set)
184{ 175{
185 struct sigframe __user *frame; 176 struct sigframe __user *frame;
186 int rsig; 177 int rsig, sig = ksig->sig;
187 178
188 set_fs(USER_DS); 179 set_fs(USER_DS);
189 180
190 frame = get_sigframe(ka, sizeof(*frame)); 181 frame = get_sigframe(ksig, sizeof(*frame));
191 182
192 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 183 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
193 goto give_sigsegv; 184 return -EFAULT;
194 185
195 rsig = sig; 186 rsig = sig;
196 if (sig < 32 && 187 if (sig < 32 &&
@@ -199,22 +190,22 @@ static int setup_frame(int sig, struct k_sigaction *ka, sigset_t *set)
199 rsig = __current_thread_info->exec_domain->signal_invmap[sig]; 190 rsig = __current_thread_info->exec_domain->signal_invmap[sig];
200 191
201 if (__put_user(rsig, &frame->sig) < 0) 192 if (__put_user(rsig, &frame->sig) < 0)
202 goto give_sigsegv; 193 return -EFAULT;
203 194
204 if (setup_sigcontext(&frame->sc, set->sig[0])) 195 if (setup_sigcontext(&frame->sc, set->sig[0]))
205 goto give_sigsegv; 196 return -EFAULT;
206 197
207 if (_NSIG_WORDS > 1) { 198 if (_NSIG_WORDS > 1) {
208 if (__copy_to_user(frame->extramask, &set->sig[1], 199 if (__copy_to_user(frame->extramask, &set->sig[1],
209 sizeof(frame->extramask))) 200 sizeof(frame->extramask)))
210 goto give_sigsegv; 201 return -EFAULT;
211 } 202 }
212 203
213 /* Set up to return from userspace. If provided, use a stub 204 /* Set up to return from userspace. If provided, use a stub
214 * already in userspace. */ 205 * already in userspace. */
215 if (ka->sa.sa_flags & SA_RESTORER) { 206 if (ksig->ka.sa.sa_flags & SA_RESTORER) {
216 if (__put_user(ka->sa.sa_restorer, &frame->pretcode) < 0) 207 if (__put_user(ksig->ka.sa.sa_restorer, &frame->pretcode) < 0)
217 goto give_sigsegv; 208 return -EFAULT;
218 } 209 }
219 else { 210 else {
220 /* Set up the following code on the stack: 211 /* Set up the following code on the stack:
@@ -224,7 +215,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, sigset_t *set)
224 if (__put_user((__sigrestore_t)frame->retcode, &frame->pretcode) || 215 if (__put_user((__sigrestore_t)frame->retcode, &frame->pretcode) ||
225 __put_user(0x8efc0000|__NR_sigreturn, &frame->retcode[0]) || 216 __put_user(0x8efc0000|__NR_sigreturn, &frame->retcode[0]) ||
226 __put_user(0xc0700000, &frame->retcode[1])) 217 __put_user(0xc0700000, &frame->retcode[1]))
227 goto give_sigsegv; 218 return -EFAULT;
228 219
229 flush_icache_range((unsigned long) frame->retcode, 220 flush_icache_range((unsigned long) frame->retcode,
230 (unsigned long) (frame->retcode + 2)); 221 (unsigned long) (frame->retcode + 2));
@@ -233,14 +224,14 @@ static int setup_frame(int sig, struct k_sigaction *ka, sigset_t *set)
233 /* Set up registers for the signal handler */ 224 /* Set up registers for the signal handler */
234 if (current->personality & FDPIC_FUNCPTRS) { 225 if (current->personality & FDPIC_FUNCPTRS) {
235 struct fdpic_func_descriptor __user *funcptr = 226 struct fdpic_func_descriptor __user *funcptr =
236 (struct fdpic_func_descriptor __user *) ka->sa.sa_handler; 227 (struct fdpic_func_descriptor __user *) ksig->ka.sa.sa_handler;
237 struct fdpic_func_descriptor desc; 228 struct fdpic_func_descriptor desc;
238 if (copy_from_user(&desc, funcptr, sizeof(desc))) 229 if (copy_from_user(&desc, funcptr, sizeof(desc)))
239 goto give_sigsegv; 230 return -EFAULT;
240 __frame->pc = desc.text; 231 __frame->pc = desc.text;
241 __frame->gr15 = desc.GOT; 232 __frame->gr15 = desc.GOT;
242 } else { 233 } else {
243 __frame->pc = (unsigned long) ka->sa.sa_handler; 234 __frame->pc = (unsigned long) ksig->ka.sa.sa_handler;
244 __frame->gr15 = 0; 235 __frame->gr15 = 0;
245 } 236 }
246 237
@@ -255,29 +246,23 @@ static int setup_frame(int sig, struct k_sigaction *ka, sigset_t *set)
255#endif 246#endif
256 247
257 return 0; 248 return 0;
258
259give_sigsegv:
260 force_sigsegv(sig, current);
261 return -EFAULT;
262
263} /* end setup_frame() */ 249} /* end setup_frame() */
264 250
265/*****************************************************************************/ 251/*****************************************************************************/
266/* 252/*
267 * 253 *
268 */ 254 */
269static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, 255static int setup_rt_frame(struct ksignal *ksig, sigset_t *set)
270 sigset_t *set)
271{ 256{
272 struct rt_sigframe __user *frame; 257 struct rt_sigframe __user *frame;
273 int rsig; 258 int rsig, sig = ksig->sig;
274 259
275 set_fs(USER_DS); 260 set_fs(USER_DS);
276 261
277 frame = get_sigframe(ka, sizeof(*frame)); 262 frame = get_sigframe(ksig, sizeof(*frame));
278 263
279 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame))) 264 if (!access_ok(VERIFY_WRITE, frame, sizeof(*frame)))
280 goto give_sigsegv; 265 return -EFAULT;
281 266
282 rsig = sig; 267 rsig = sig;
283 if (sig < 32 && 268 if (sig < 32 &&
@@ -288,28 +273,28 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
288 if (__put_user(rsig, &frame->sig) || 273 if (__put_user(rsig, &frame->sig) ||
289 __put_user(&frame->info, &frame->pinfo) || 274 __put_user(&frame->info, &frame->pinfo) ||
290 __put_user(&frame->uc, &frame->puc)) 275 __put_user(&frame->uc, &frame->puc))
291 goto give_sigsegv; 276 return -EFAULT;
292 277
293 if (copy_siginfo_to_user(&frame->info, info)) 278 if (copy_siginfo_to_user(&frame->info, &ksig->info))
294 goto give_sigsegv; 279 return -EFAULT;
295 280
296 /* Create the ucontext. */ 281 /* Create the ucontext. */
297 if (__put_user(0, &frame->uc.uc_flags) || 282 if (__put_user(0, &frame->uc.uc_flags) ||
298 __put_user(NULL, &frame->uc.uc_link) || 283 __put_user(NULL, &frame->uc.uc_link) ||
299 __save_altstack(&frame->uc.uc_stack, __frame->sp)) 284 __save_altstack(&frame->uc.uc_stack, __frame->sp))
300 goto give_sigsegv; 285 return -EFAULT;
301 286
302 if (setup_sigcontext(&frame->uc.uc_mcontext, set->sig[0])) 287 if (setup_sigcontext(&frame->uc.uc_mcontext, set->sig[0]))
303 goto give_sigsegv; 288 return -EFAULT;
304 289
305 if (__copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set))) 290 if (__copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)))
306 goto give_sigsegv; 291 return -EFAULT;
307 292
308 /* Set up to return from userspace. If provided, use a stub 293 /* Set up to return from userspace. If provided, use a stub
309 * already in userspace. */ 294 * already in userspace. */
310 if (ka->sa.sa_flags & SA_RESTORER) { 295 if (ksig->ka.sa.sa_flags & SA_RESTORER) {
311 if (__put_user(ka->sa.sa_restorer, &frame->pretcode)) 296 if (__put_user(ksig->ka.sa.sa_restorer, &frame->pretcode))
312 goto give_sigsegv; 297 return -EFAULT;
313 } 298 }
314 else { 299 else {
315 /* Set up the following code on the stack: 300 /* Set up the following code on the stack:
@@ -319,7 +304,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
319 if (__put_user((__sigrestore_t)frame->retcode, &frame->pretcode) || 304 if (__put_user((__sigrestore_t)frame->retcode, &frame->pretcode) ||
320 __put_user(0x8efc0000|__NR_rt_sigreturn, &frame->retcode[0]) || 305 __put_user(0x8efc0000|__NR_rt_sigreturn, &frame->retcode[0]) ||
321 __put_user(0xc0700000, &frame->retcode[1])) 306 __put_user(0xc0700000, &frame->retcode[1]))
322 goto give_sigsegv; 307 return -EFAULT;
323 308
324 flush_icache_range((unsigned long) frame->retcode, 309 flush_icache_range((unsigned long) frame->retcode,
325 (unsigned long) (frame->retcode + 2)); 310 (unsigned long) (frame->retcode + 2));
@@ -328,14 +313,14 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
328 /* Set up registers for signal handler */ 313 /* Set up registers for signal handler */
329 if (current->personality & FDPIC_FUNCPTRS) { 314 if (current->personality & FDPIC_FUNCPTRS) {
330 struct fdpic_func_descriptor __user *funcptr = 315 struct fdpic_func_descriptor __user *funcptr =
331 (struct fdpic_func_descriptor __user *) ka->sa.sa_handler; 316 (struct fdpic_func_descriptor __user *) ksig->ka.sa.sa_handler;
332 struct fdpic_func_descriptor desc; 317 struct fdpic_func_descriptor desc;
333 if (copy_from_user(&desc, funcptr, sizeof(desc))) 318 if (copy_from_user(&desc, funcptr, sizeof(desc)))
334 goto give_sigsegv; 319 return -EFAULT;
335 __frame->pc = desc.text; 320 __frame->pc = desc.text;
336 __frame->gr15 = desc.GOT; 321 __frame->gr15 = desc.GOT;
337 } else { 322 } else {
338 __frame->pc = (unsigned long) ka->sa.sa_handler; 323 __frame->pc = (unsigned long) ksig->ka.sa.sa_handler;
339 __frame->gr15 = 0; 324 __frame->gr15 = 0;
340 } 325 }
341 326
@@ -349,21 +334,15 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
349 sig, current->comm, current->pid, frame, __frame->pc, 334 sig, current->comm, current->pid, frame, __frame->pc,
350 frame->pretcode); 335 frame->pretcode);
351#endif 336#endif
352
353 return 0; 337 return 0;
354 338
355give_sigsegv:
356 force_sigsegv(sig, current);
357 return -EFAULT;
358
359} /* end setup_rt_frame() */ 339} /* end setup_rt_frame() */
360 340
361/*****************************************************************************/ 341/*****************************************************************************/
362/* 342/*
363 * OK, we're invoking a handler 343 * OK, we're invoking a handler
364 */ 344 */
365static void handle_signal(unsigned long sig, siginfo_t *info, 345static void handle_signal(struct ksignal *ksig)
366 struct k_sigaction *ka)
367{ 346{
368 sigset_t *oldset = sigmask_to_save(); 347 sigset_t *oldset = sigmask_to_save();
369 int ret; 348 int ret;
@@ -378,7 +357,7 @@ static void handle_signal(unsigned long sig, siginfo_t *info,
378 break; 357 break;
379 358
380 case -ERESTARTSYS: 359 case -ERESTARTSYS:
381 if (!(ka->sa.sa_flags & SA_RESTART)) { 360 if (!(ksig->ka.sa.sa_flags & SA_RESTART)) {
382 __frame->gr8 = -EINTR; 361 __frame->gr8 = -EINTR;
383 break; 362 break;
384 } 363 }
@@ -392,16 +371,12 @@ static void handle_signal(unsigned long sig, siginfo_t *info,
392 } 371 }
393 372
394 /* Set up the stack frame */ 373 /* Set up the stack frame */
395 if (ka->sa.sa_flags & SA_SIGINFO) 374 if (ksig->ka.sa.sa_flags & SA_SIGINFO)
396 ret = setup_rt_frame(sig, ka, info, oldset); 375 ret = setup_rt_frame(ksig, oldset);
397 else 376 else
398 ret = setup_frame(sig, ka, oldset); 377 ret = setup_frame(ksig, oldset);
399
400 if (ret)
401 return;
402 378
403 signal_delivered(sig, info, ka, __frame, 379 signal_setup_done(ret, ksig, test_thread_flag(TIF_SINGLESTEP));
404 test_thread_flag(TIF_SINGLESTEP));
405} /* end handle_signal() */ 380} /* end handle_signal() */
406 381
407/*****************************************************************************/ 382/*****************************************************************************/
@@ -412,13 +387,10 @@ static void handle_signal(unsigned long sig, siginfo_t *info,
412 */ 387 */
413static void do_signal(void) 388static void do_signal(void)
414{ 389{
415 struct k_sigaction ka; 390 struct ksignal ksig;
416 siginfo_t info;
417 int signr;
418 391
419 signr = get_signal_to_deliver(&info, &ka, __frame, NULL); 392 if (get_signal(&ksig)) {
420 if (signr > 0) { 393 handle_signal(&ksig);
421 handle_signal(signr, &info, &ka);
422 return; 394 return;
423 } 395 }
424 396
diff --git a/arch/frv/kernel/time.c b/arch/frv/kernel/time.c
index b457de496b70..332e00bf9d06 100644
--- a/arch/frv/kernel/time.c
+++ b/arch/frv/kernel/time.c
@@ -44,7 +44,6 @@ static irqreturn_t timer_interrupt(int irq, void *dummy);
44 44
45static struct irqaction timer_irq = { 45static struct irqaction timer_irq = {
46 .handler = timer_interrupt, 46 .handler = timer_interrupt,
47 .flags = IRQF_DISABLED,
48 .name = "timer", 47 .name = "timer",
49}; 48};
50 49