diff options
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 9ce641b5291f..bd1db508e8af 100644 --- a/arch/s390/kernel/s390_ext.c +++ b/arch/s390/kernel/s390_ext.c | |||
@@ -113,12 +113,15 @@ int unregister_early_external_interrupt(__u16 code, ext_int_handler_t handler, | |||
113 | return 0; | 113 | return 0; |
114 | } | 114 | } |
115 | 115 | ||
116 | void __irq_entry do_extint(struct pt_regs *regs, unsigned short code) | 116 | void __irq_entry do_extint(struct pt_regs *regs, unsigned int ext_int_code, |
117 | unsigned int param32, unsigned long param64) | ||
117 | { | 118 | { |
119 | struct pt_regs *old_regs; | ||
120 | unsigned short code; | ||
118 | ext_int_info_t *p; | 121 | ext_int_info_t *p; |
119 | int index; | 122 | int index; |
120 | struct pt_regs *old_regs; | ||
121 | 123 | ||
124 | code = (unsigned short) ext_int_code; | ||
122 | old_regs = set_irq_regs(regs); | 125 | old_regs = set_irq_regs(regs); |
123 | s390_idle_check(regs, S390_lowcore.int_clock, | 126 | s390_idle_check(regs, S390_lowcore.int_clock, |
124 | S390_lowcore.async_enter_timer); | 127 | S390_lowcore.async_enter_timer); |
@@ -132,7 +135,7 @@ void __irq_entry do_extint(struct pt_regs *regs, unsigned short code) | |||
132 | index = ext_hash(code); | 135 | index = ext_hash(code); |
133 | for (p = ext_int_hash[index]; p; p = p->next) { | 136 | for (p = ext_int_hash[index]; p; p = p->next) { |
134 | if (likely(p->code == code)) | 137 | if (likely(p->code == code)) |
135 | p->handler(code); | 138 | p->handler(ext_int_code, param32, param64); |
136 | } | 139 | } |
137 | irq_exit(); | 140 | irq_exit(); |
138 | set_irq_regs(old_regs); | 141 | set_irq_regs(old_regs); |