diff options
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/ecard.c | 8 | ||||
-rw-r--r-- | arch/arm/kernel/irq.c | 4 | ||||
-rw-r--r-- | arch/arm/kernel/time.c | 6 |
3 files changed, 11 insertions, 7 deletions
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c index 3e14b1348c0b..b27513a0f11e 100644 --- a/arch/arm/kernel/ecard.c +++ b/arch/arm/kernel/ecard.c | |||
@@ -567,7 +567,7 @@ static void ecard_check_lockup(struct irqdesc *desc) | |||
567 | } | 567 | } |
568 | 568 | ||
569 | static void | 569 | static void |
570 | ecard_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) | 570 | ecard_irq_handler(unsigned int irq, struct irqdesc *desc) |
571 | { | 571 | { |
572 | ecard_t *ec; | 572 | ecard_t *ec; |
573 | int called = 0; | 573 | int called = 0; |
@@ -586,7 +586,7 @@ ecard_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) | |||
586 | 586 | ||
587 | if (pending) { | 587 | if (pending) { |
588 | struct irqdesc *d = irq_desc + ec->irq; | 588 | struct irqdesc *d = irq_desc + ec->irq; |
589 | desc_handle_irq(ec->irq, d, regs); | 589 | desc_handle_irq(ec->irq, d); |
590 | called ++; | 590 | called ++; |
591 | } | 591 | } |
592 | } | 592 | } |
@@ -609,7 +609,7 @@ static unsigned char first_set[] = | |||
609 | }; | 609 | }; |
610 | 610 | ||
611 | static void | 611 | static void |
612 | ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) | 612 | ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc) |
613 | { | 613 | { |
614 | const unsigned int statusmask = 15; | 614 | const unsigned int statusmask = 15; |
615 | unsigned int status; | 615 | unsigned int status; |
@@ -633,7 +633,7 @@ ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg | |||
633 | * Serial cards should go in 0/1, ethernet/scsi in 2/3 | 633 | * Serial cards should go in 0/1, ethernet/scsi in 2/3 |
634 | * otherwise you will lose serial data at high speeds! | 634 | * otherwise you will lose serial data at high speeds! |
635 | */ | 635 | */ |
636 | desc_handle_irq(ec->irq, d, regs); | 636 | desc_handle_irq(ec->irq, d); |
637 | } else { | 637 | } else { |
638 | printk(KERN_WARNING "card%d: interrupt from unclaimed " | 638 | printk(KERN_WARNING "card%d: interrupt from unclaimed " |
639 | "card???\n", slot); | 639 | "card???\n", slot); |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 2e1bf830fe11..2c4ff1cbe334 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -111,6 +111,7 @@ static struct irq_desc bad_irq_desc = { | |||
111 | */ | 111 | */ |
112 | asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) | 112 | asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) |
113 | { | 113 | { |
114 | struct pt_regs *old_regs = set_irq_regs(regs); | ||
114 | struct irqdesc *desc = irq_desc + irq; | 115 | struct irqdesc *desc = irq_desc + irq; |
115 | 116 | ||
116 | /* | 117 | /* |
@@ -122,12 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) | |||
122 | 123 | ||
123 | irq_enter(); | 124 | irq_enter(); |
124 | 125 | ||
125 | desc_handle_irq(irq, desc, regs); | 126 | desc_handle_irq(irq, desc); |
126 | 127 | ||
127 | /* AT91 specific workaround */ | 128 | /* AT91 specific workaround */ |
128 | irq_finish(irq); | 129 | irq_finish(irq); |
129 | 130 | ||
130 | irq_exit(); | 131 | irq_exit(); |
132 | set_irq_regs(old_regs); | ||
131 | } | 133 | } |
132 | 134 | ||
133 | void set_irq_flags(unsigned int irq, unsigned int iflags) | 135 | void set_irq_flags(unsigned int irq, unsigned int iflags) |
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index b030320b17c7..c03cab5c4c79 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/profile.h> | 27 | #include <linux/profile.h> |
28 | #include <linux/sysdev.h> | 28 | #include <linux/sysdev.h> |
29 | #include <linux/timer.h> | 29 | #include <linux/timer.h> |
30 | #include <linux/irq.h> | ||
30 | 31 | ||
31 | #include <asm/leds.h> | 32 | #include <asm/leds.h> |
32 | #include <asm/thread_info.h> | 33 | #include <asm/thread_info.h> |
@@ -324,9 +325,10 @@ EXPORT_SYMBOL(restore_time_delta); | |||
324 | /* | 325 | /* |
325 | * Kernel system timer support. | 326 | * Kernel system timer support. |
326 | */ | 327 | */ |
327 | void timer_tick(struct pt_regs *regs) | 328 | void timer_tick(void) |
328 | { | 329 | { |
329 | profile_tick(CPU_PROFILING, regs); | 330 | struct pt_regs *regs = get_irq_regs(); |
331 | profile_tick(CPU_PROFILING); | ||
330 | do_leds(); | 332 | do_leds(); |
331 | do_set_rtc(); | 333 | do_set_rtc(); |
332 | do_timer(1); | 334 | do_timer(1); |