diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2006-10-11 09:31:26 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-10-11 09:31:26 -0400 |
commit | 9d0a57cbdb4976f382eb1c03baee338e467b6592 (patch) | |
tree | d224342e631bddc9ccd8b6e2aa89989a9c380182 | |
parent | 53a5fbdc2dff55161a206ed1a1385a8fa8055c34 (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.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/s390_ext.c | 4 | ||||
-rw-r--r-- | arch/s390/kernel/vtime.c | 8 | ||||
-rw-r--r-- | drivers/s390/cio/cio.c | 4 | ||||
-rw-r--r-- | include/asm-s390/timer.h | 2 |
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 | */ |
112 | static void appldata_timer_function(unsigned long data, struct pt_regs *regs) | 112 | static 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 | ||
141 | EXPORT_SYMBOL(register_external_interrupt); | 141 | EXPORT_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 | */ |
212 | static void do_callbacks(struct list_head *cb_list, struct pt_regs *regs) | 212 | static 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 | ||