[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>
This commit is contained in:
Родитель
53a5fbdc2d
Коммит
9d0a57cbdb
|
@ -109,7 +109,7 @@ static LIST_HEAD(appldata_ops_list);
|
|||
*
|
||||
* schedule work and reschedule timer
|
||||
*/
|
||||
static void appldata_timer_function(unsigned long data, struct pt_regs *regs)
|
||||
static void appldata_timer_function(unsigned long data)
|
||||
{
|
||||
P_DEBUG(" -= Timer =-\n");
|
||||
P_DEBUG("CPU: %i, expire_count: %i\n", smp_processor_id(),
|
||||
|
|
|
@ -117,8 +117,8 @@ void do_extint(struct pt_regs *regs, unsigned short code)
|
|||
int index;
|
||||
struct pt_regs *old_regs;
|
||||
|
||||
irq_enter();
|
||||
old_regs = set_irq_regs(regs);
|
||||
irq_enter();
|
||||
asm volatile ("mc 0,0");
|
||||
if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer)
|
||||
/**
|
||||
|
@ -134,8 +134,8 @@ void do_extint(struct pt_regs *regs, unsigned short code)
|
|||
p->handler(code);
|
||||
}
|
||||
}
|
||||
set_irq_regs(old_regs);
|
||||
irq_exit();
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(register_external_interrupt);
|
||||
|
|
|
@ -209,11 +209,11 @@ static void list_add_sorted(struct vtimer_list *timer, struct list_head *head)
|
|||
* Do the callback functions of expired vtimer events.
|
||||
* Called from within the interrupt handler.
|
||||
*/
|
||||
static void do_callbacks(struct list_head *cb_list, struct pt_regs *regs)
|
||||
static void do_callbacks(struct list_head *cb_list)
|
||||
{
|
||||
struct vtimer_queue *vt_list;
|
||||
struct vtimer_list *event, *tmp;
|
||||
void (*fn)(unsigned long, struct pt_regs*);
|
||||
void (*fn)(unsigned long);
|
||||
unsigned long data;
|
||||
|
||||
if (list_empty(cb_list))
|
||||
|
@ -224,7 +224,7 @@ static void do_callbacks(struct list_head *cb_list, struct pt_regs *regs)
|
|||
list_for_each_entry_safe(event, tmp, cb_list, entry) {
|
||||
fn = event->function;
|
||||
data = event->data;
|
||||
fn(data, regs);
|
||||
fn(data);
|
||||
|
||||
if (!event->interval)
|
||||
/* delete one shot timer */
|
||||
|
@ -275,7 +275,7 @@ static void do_cpu_timer_interrupt(__u16 error_code)
|
|||
list_move_tail(&event->entry, &cb_list);
|
||||
}
|
||||
spin_unlock(&vt_list->lock);
|
||||
do_callbacks(&cb_list, get_irq_regs());
|
||||
do_callbacks(&cb_list);
|
||||
|
||||
/* next event is first in list */
|
||||
spin_lock(&vt_list->lock);
|
||||
|
|
|
@ -609,8 +609,8 @@ do_IRQ (struct pt_regs *regs)
|
|||
struct irb *irb;
|
||||
struct pt_regs *old_regs;
|
||||
|
||||
irq_enter ();
|
||||
old_regs = set_irq_regs(regs);
|
||||
irq_enter();
|
||||
asm volatile ("mc 0,0");
|
||||
if (S390_lowcore.int_clock >= S390_lowcore.jiffy_timer)
|
||||
/**
|
||||
|
@ -655,8 +655,8 @@ do_IRQ (struct pt_regs *regs)
|
|||
* out of the sie which costs more cycles than it saves.
|
||||
*/
|
||||
} while (!MACHINE_IS_VM && tpi (NULL) != 0);
|
||||
irq_exit();
|
||||
set_irq_regs(old_regs);
|
||||
irq_exit ();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CCW_CONSOLE
|
||||
|
|
|
@ -26,7 +26,7 @@ struct vtimer_list {
|
|||
spinlock_t lock;
|
||||
unsigned long magic;
|
||||
|
||||
void (*function)(unsigned long, struct pt_regs*);
|
||||
void (*function)(unsigned long);
|
||||
unsigned long data;
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче