aboutsummaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--arch/s390/appldata/appldata_base.c2
-rw-r--r--arch/s390/kernel/s390_ext.c4
-rw-r--r--arch/s390/kernel/vtime.c8
-rw-r--r--drivers/s390/cio/cio.c4
-rw-r--r--include/asm-s390/timer.h2
5 files changed, 10 insertions, 10 deletions
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c
index 2b1e6c9a6e0e..45c9fa7d7545 100644
--- a/arch/s390/appldata/appldata_base.c
+++ b/arch/s390/appldata/appldata_base.c
@@ -109,7 +109,7 @@ static LIST_HEAD(appldata_ops_list);
109 * 109 *
110 * schedule work and reschedule timer 110 * schedule work and reschedule timer
111 */ 111 */
112static void appldata_timer_function(unsigned long data, struct pt_regs *regs) 112static void appldata_timer_function(unsigned long data)
113{ 113{
114 P_DEBUG(" -= Timer =-\n"); 114 P_DEBUG(" -= Timer =-\n");
115 P_DEBUG("CPU: %i, expire_count: %i\n", smp_processor_id(), 115 P_DEBUG("CPU: %i, expire_count: %i\n", smp_processor_id(),
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);
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index f18b1623cad7..8936e460a807 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -609,8 +609,8 @@ do_IRQ (struct pt_regs *regs)
609 struct irb *irb; 609 struct irb *irb;
610 struct pt_regs *old_regs; 610 struct pt_regs *old_regs;
611 611
612 irq_enter ();
613 old_regs = set_irq_regs(regs); 612 old_regs = set_irq_regs(regs);
613 irq_enter();
614 asm volatile ("mc 0,0"); 614 asm volatile ("mc 0,0");
615 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer) 615 if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer)
616 /** 616 /**
@@ -655,8 +655,8 @@ do_IRQ (struct pt_regs *regs)
655 * out of the sie which costs more cycles than it saves. 655 * out of the sie which costs more cycles than it saves.
656 */ 656 */
657 } while (!MACHINE_IS_VM && tpi (NULL) != 0); 657 } while (!MACHINE_IS_VM && tpi (NULL) != 0);
658 irq_exit();
658 set_irq_regs(old_regs); 659 set_irq_regs(old_regs);
659 irq_exit ();
660} 660}
661 661
662#ifdef CONFIG_CCW_CONSOLE 662#ifdef CONFIG_CCW_CONSOLE
diff --git a/include/asm-s390/timer.h b/include/asm-s390/timer.h
index fcd6c256a2d1..30e5cbe570f2 100644
--- a/include/asm-s390/timer.h
+++ b/include/asm-s390/timer.h
@@ -26,7 +26,7 @@ struct vtimer_list {
26 spinlock_t lock; 26 spinlock_t lock;
27 unsigned long magic; 27 unsigned long magic;
28 28
29 void (*function)(unsigned long, struct pt_regs*); 29 void (*function)(unsigned long);
30 unsigned long data; 30 unsigned long data;
31}; 31};
32 32