aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/kernel/irq.c3
-rw-r--r--arch/x86_64/kernel/apic.c5
2 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index e999b11de2c6..2c4ff1cbe334 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -111,6 +111,7 @@ static struct irq_desc bad_irq_desc = {
111 */ 111 */
112asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs) 112asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
113{ 113{
114 struct pt_regs *old_regs = set_irq_regs(regs);
114 struct irqdesc *desc = irq_desc + irq; 115 struct irqdesc *desc = irq_desc + irq;
115 116
116 /* 117 /*
@@ -122,13 +123,13 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
122 123
123 irq_enter(); 124 irq_enter();
124 125
125 set_irq_regs(regs);
126 desc_handle_irq(irq, desc); 126 desc_handle_irq(irq, desc);
127 127
128 /* AT91 specific workaround */ 128 /* AT91 specific workaround */
129 irq_finish(irq); 129 irq_finish(irq);
130 130
131 irq_exit(); 131 irq_exit();
132 set_irq_regs(old_regs);
132} 133}
133 134
134void set_irq_flags(unsigned int irq, unsigned int iflags) 135void set_irq_flags(unsigned int irq, unsigned int iflags)
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c
index af4a1c71a80d..4d9d5ed942b2 100644
--- a/arch/x86_64/kernel/apic.c
+++ b/arch/x86_64/kernel/apic.c
@@ -913,8 +913,10 @@ void smp_local_timer_interrupt(void)
913 * [ if a single-CPU system runs an SMP kernel then we call the local 913 * [ if a single-CPU system runs an SMP kernel then we call the local
914 * interrupt as well. Thus we cannot inline the local irq ... ] 914 * interrupt as well. Thus we cannot inline the local irq ... ]
915 */ 915 */
916void smp_apic_timer_interrupt(void) 916void smp_apic_timer_interrupt(struct pt_regs *regs)
917{ 917{
918 struct pt_regs *old_regs = set_irq_regs(regs);
919
918 /* 920 /*
919 * the NMI deadlock-detector uses this. 921 * the NMI deadlock-detector uses this.
920 */ 922 */
@@ -934,6 +936,7 @@ void smp_apic_timer_interrupt(void)
934 irq_enter(); 936 irq_enter();
935 smp_local_timer_interrupt(); 937 smp_local_timer_interrupt();
936 irq_exit(); 938 irq_exit();
939 set_irq_regs(old_regs);
937} 940}
938 941
939/* 942/*