diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-06 09:13:53 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-06 09:13:53 -0700 |
commit | da104a83692cf07434ab3b20bf10093bdbc3f97e (patch) | |
tree | 6343600c318c600f0dcdf71406bf7d993823afd4 /arch/s390/kernel/s390_ext.c | |
parent | 96e1a87392293cf895ea99ab70758453897c7bbf (diff) | |
parent | dc64bef5439c8e1fafea225054da4d8882c9d10c (diff) | |
download | kernel_samsung_smdk4412-da104a83692cf07434ab3b20bf10093bdbc3f97e.zip kernel_samsung_smdk4412-da104a83692cf07434ab3b20bf10093bdbc3f97e.tar.gz kernel_samsung_smdk4412-da104a83692cf07434ab3b20bf10093bdbc3f97e.tar.bz2 |
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] Use CONFIG_GENERIC_TIME and define TOD clock source.
[PATCH] sysrq: irq change build fix.
[S390] irq change build fixes.
[S390] cio: 0 is a valid chpid.
[S390] monwriter buffer limit.
[S390] ap bus poll thread priority.
Diffstat (limited to 'arch/s390/kernel/s390_ext.c')
-rw-r--r-- | arch/s390/kernel/s390_ext.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/s390/kernel/s390_ext.c b/arch/s390/kernel/s390_ext.c index c1b3835..c49ab8c 100644 --- a/arch/s390/kernel/s390_ext.c +++ b/arch/s390/kernel/s390_ext.c @@ -16,6 +16,7 @@ #include <asm/lowcore.h> #include <asm/s390_ext.h> +#include <asm/irq_regs.h> #include <asm/irq.h> /* @@ -114,26 +115,28 @@ void do_extint(struct pt_regs *regs, unsigned short code) { ext_int_info_t *p; int index; + struct pt_regs *old_regs; irq_enter(); + old_regs = set_irq_regs(regs); asm volatile ("mc 0,0"); if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) /** * Make sure that the i/o interrupt did not "overtake" * the last HZ timer interrupt. */ - account_ticks(regs); + account_ticks(); kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++; index = ext_hash(code); for (p = ext_int_hash[index]; p; p = p->next) { if (likely(p->code == code)) { if (likely(p->handler)) - p->handler(regs, code); + p->handler(code); } } + set_irq_regs(old_regs); irq_exit(); } EXPORT_SYMBOL(register_external_interrupt); EXPORT_SYMBOL(unregister_external_interrupt); - |