aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2006-10-11 09:31:26 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2006-10-11 09:31:26 -0400
commit9d0a57cbdb4976f382eb1c03baee338e467b6592 (patch)
treed224342e631bddc9ccd8b6e2aa89989a9c380182 /arch/s390/kernel
parent53a5fbdc2dff55161a206ed1a1385a8fa8055c34 (diff)
[S390] irq change improvements.
Remove the last few places where a pointer to pt_regs gets passed. Also make sure we call set_irq_regs() before irq_enter() and after irq_exit(). This doesn't fix anything but makes sure s390 looks the same like all other architectures. 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')
-rw-r--r--arch/s390/kernel/s390_ext.c4
-rw-r--r--arch/s390/kernel/vtime.c8
2 files changed, 6 insertions, 6 deletions
diff --git a/arch/s390/kernel/s390_ext.c b/arch/s390/kernel/s390_ext.c
index c49ab8c784d2..4faf96f8a834 100644
--- a/arch/s390/kernel/s390_ext.c
+++ b/arch/s390/kernel/s390_ext.c
@@ -117,8 +117,8 @@ void do_extint(struct pt_regs *regs, unsigned short code)
117 int index; 117 int index;
118 struct pt_regs *old_regs; 118 struct pt_regs *old_regs;
119 119
120 irq_enter();
121 old_regs = set_irq_regs(regs); 120 old_regs = set_irq_regs(regs);
121 irq_enter();
122 asm volatile ("mc 0,0"); 122 asm volatile ("mc 0,0");
123 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) 123 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer)
124 /** 124 /**
@@ -134,8 +134,8 @@ void do_extint(struct pt_regs *regs, unsigned short code)
134 p->handler(code); 134 p->handler(code);
135 } 135 }
136 } 136 }
137 set_irq_regs(old_regs);
138 irq_exit(); 137 irq_exit();
138 set_irq_regs(old_regs);
139} 139}
140 140
141EXPORT_SYMBOL(register_external_interrupt); 141EXPORT_SYMBOL(register_external_interrupt);
diff --git a/arch/s390/kernel/vtime.c b/arch/s390/kernel/vtime.c
index 1d7d3938b2b1..21baaf5496d6 100644
--- a/arch/s390/kernel/vtime.c
+++ b/arch/s390/kernel/vtime.c
@@ -209,11 +209,11 @@ static void list_add_sorted(struct vtimer_list *timer, struct list_head *head)
209 * Do the callback functions of expired vtimer events. 209 * Do the callback functions of expired vtimer events.
210 * Called from within the interrupt handler. 210 * Called from within the interrupt handler.
211 */ 211 */
212static void do_callbacks(struct list_head *cb_list, struct pt_regs *regs) 212static void do_callbacks(struct list_head *cb_list)
213{ 213{
214 struct vtimer_queue *vt_list; 214 struct vtimer_queue *vt_list;
215 struct vtimer_list *event, *tmp; 215 struct vtimer_list *event, *tmp;
216 void (*fn)(unsigned long, struct pt_regs*); 216 void (*fn)(unsigned long);
217 unsigned long data; 217 unsigned long data;
218 218
219 if (list_empty(cb_list)) 219 if (list_empty(cb_list))
@@ -224,7 +224,7 @@ static void do_callbacks(struct list_head *cb_list, struct pt_regs *regs)
224 list_for_each_entry_safe(event, tmp, cb_list, entry) { 224 list_for_each_entry_safe(event, tmp, cb_list, entry) {
225 fn = event->function; 225 fn = event->function;
226 data = event->data; 226 data = event->data;
227 fn(data, regs); 227 fn(data);
228 228
229 if (!event->interval) 229 if (!event->interval)
230 /* delete one shot timer */ 230 /* delete one shot timer */
@@ -275,7 +275,7 @@ static void do_cpu_timer_interrupt(__u16 error_code)
275 list_move_tail(&event->entry, &cb_list); 275 list_move_tail(&event->entry, &cb_list);
276 } 276 }
277 spin_unlock(&vt_list->lock); 277 spin_unlock(&vt_list->lock);
278 do_callbacks(&cb_list, get_irq_regs()); 278 do_callbacks(&cb_list);
279 279
280 /* next event is first in list */ 280 /* next event is first in list */
281 spin_lock(&vt_list->lock); 281 spin_lock(&vt_list->lock);