diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2006-10-06 10:38:35 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-10-06 10:38:35 -0400 |
commit | 5a489b9846f688db7e69aa7ccb23c53459a9c20e (patch) | |
tree | 1aaf8eb887f23bf65c25a70b50c9c83e5a1d2f31 /arch/s390/kernel/s390_ext.c | |
parent | 7e8ae7bfe8354b1f1b98c5cd29db8965ca1e6391 (diff) |
[S390] irq change build fixes.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
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 c1b383537fec..c49ab8c784d2 100644 --- a/arch/s390/kernel/s390_ext.c +++ b/arch/s390/kernel/s390_ext.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include <asm/lowcore.h> | 17 | #include <asm/lowcore.h> |
18 | #include <asm/s390_ext.h> | 18 | #include <asm/s390_ext.h> |
19 | #include <asm/irq_regs.h> | ||
19 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
20 | 21 | ||
21 | /* | 22 | /* |
@@ -114,26 +115,28 @@ void do_extint(struct pt_regs *regs, unsigned short code) | |||
114 | { | 115 | { |
115 | ext_int_info_t *p; | 116 | ext_int_info_t *p; |
116 | int index; | 117 | int index; |
118 | struct pt_regs *old_regs; | ||
117 | 119 | ||
118 | irq_enter(); | 120 | irq_enter(); |
121 | old_regs = set_irq_regs(regs); | ||
119 | asm volatile ("mc 0,0"); | 122 | asm volatile ("mc 0,0"); |
120 | if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) | 123 | if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) |
121 | /** | 124 | /** |
122 | * Make sure that the i/o interrupt did not "overtake" | 125 | * Make sure that the i/o interrupt did not "overtake" |
123 | * the last HZ timer interrupt. | 126 | * the last HZ timer interrupt. |
124 | */ | 127 | */ |
125 | account_ticks(regs); | 128 | account_ticks(); |
126 | kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++; | 129 | kstat_cpu(smp_processor_id()).irqs[EXTERNAL_INTERRUPT]++; |
127 | index = ext_hash(code); | 130 | index = ext_hash(code); |
128 | for (p = ext_int_hash[index]; p; p = p->next) { | 131 | for (p = ext_int_hash[index]; p; p = p->next) { |
129 | if (likely(p->code == code)) { | 132 | if (likely(p->code == code)) { |
130 | if (likely(p->handler)) | 133 | if (likely(p->handler)) |
131 | p->handler(regs, code); | 134 | p->handler(code); |
132 | } | 135 | } |
133 | } | 136 | } |
137 | set_irq_regs(old_regs); | ||
134 | irq_exit(); | 138 | irq_exit(); |
135 | } | 139 | } |
136 | 140 | ||
137 | EXPORT_SYMBOL(register_external_interrupt); | 141 | EXPORT_SYMBOL(register_external_interrupt); |
138 | EXPORT_SYMBOL(unregister_external_interrupt); | 142 | EXPORT_SYMBOL(unregister_external_interrupt); |
139 | |||