diff options
Diffstat (limited to 'arch/x86/kernel/irq_32.c')
| -rw-r--r-- | arch/x86/kernel/irq_32.c | 19 | 
1 files changed, 7 insertions, 12 deletions
| diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c index c80cf6699678..38da8f29a9c8 100644 --- a/arch/x86/kernel/irq_32.c +++ b/arch/x86/kernel/irq_32.c @@ -68,11 +68,10 @@ static inline void *current_stack(void)  	return (void *)(current_stack_pointer() & ~(THREAD_SIZE - 1));  } -static inline int -execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq) +static inline int execute_on_irq_stack(int overflow, struct irq_desc *desc)  {  	struct irq_stack *curstk, *irqstk; -	u32 *isp, *prev_esp, arg1, arg2; +	u32 *isp, *prev_esp, arg1;  	curstk = (struct irq_stack *) current_stack();  	irqstk = __this_cpu_read(hardirq_stack); @@ -98,8 +97,8 @@ execute_on_irq_stack(int overflow, struct irq_desc *desc, int irq)  	asm volatile("xchgl	%%ebx,%%esp	\n"  		     "call	*%%edi		\n"  		     "movl	%%ebx,%%esp	\n" -		     : "=a" (arg1), "=d" (arg2), "=b" (isp) -		     :  "0" (irq),   "1" (desc),  "2" (isp), +		     : "=a" (arg1), "=b" (isp) +		     :  "0" (desc),   "1" (isp),  			"D" (desc->handle_irq)  		     : "memory", "cc", "ecx");  	return 1; @@ -150,19 +149,15 @@ void do_softirq_own_stack(void)  bool handle_irq(struct irq_desc *desc, struct pt_regs *regs)  { -	unsigned int irq; -	int overflow; - -	overflow = check_stack_overflow(); +	int overflow = check_stack_overflow();  	if (IS_ERR_OR_NULL(desc))  		return false; -	irq = irq_desc_get_irq(desc); -	if (user_mode(regs) || !execute_on_irq_stack(overflow, desc, irq)) { +	if (user_mode(regs) || !execute_on_irq_stack(overflow, desc)) {  		if (unlikely(overflow))  			print_stack_overflow(); -		generic_handle_irq_desc(irq, desc); +		generic_handle_irq_desc(desc);  	}  	return true; |