linux-mips
[Top] [All Lists]

Re: [PATCH] fix irq handling of DECstations

To: Ralf Baechle <ralf@linux-mips.org>
Subject: Re: [PATCH] fix irq handling of DECstations
From: Franck Bui-Huu <vagabon.xyz@gmail.com>
Date: Tue, 13 Feb 2007 14:50:18 +0100
Cc: Atsushi Nemoto <anemo@mba.ocn.ne.jp>, linux-mips@linux-mips.org, vagabon.xyz@gmail.com
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:from; b=rGxGpOtKYzbM2C83dHBMMfsrFxCXjI1eggUa04Wola49EeEkUA3JFE5WF3IU/R1P+UZYHYu7a0kbO6Y5qBuzIGwVBc/TpRcWbFjjtzEtTByur7DBc7E5a81xARgStHhsTFg27WejYfv+cefQnxZXq61fztMMZ6q0ok7EFTssCro=
In-reply-to: <20070213022548.GB25323@linux-mips.org>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20070212.234826.59032634.anemo@mba.ocn.ne.jp> <20070213022548.GB25323@linux-mips.org>
Reply-to: Franck <vagabon.xyz@gmail.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Thunderbird 1.5.0.4 (X11/20060614)
Ralf Baechle wrote:
> On Mon, Feb 12, 2007 at 11:48:26PM +0900, Atsushi Nemoto wrote:
> 
>> It looks 2.6.19 or 2.6.20 does not work on DECStations.
> 
> Applied.  Thanks,
> 

Hi Ralf,

Since you applied Atsushi's patch, can you consider the following
one ?

thanks
                Franck

-- >8 --

From: Franck Bui-Huu <fbuihuu@gmail.com>

This patch makes these routines a lot more readable whatever
the value of CONFIG_PREEMPT.

When CONFIG_PREEMPT is not set, it also moves one branch
instruction from ret_from_irq() to ret_from_exception().
Therefore we favour the return from irq case which should be
more common than the other one.

Acked-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
---
 arch/mips/kernel/entry.S |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/arch/mips/kernel/entry.S b/arch/mips/kernel/entry.S
index f10b6a1..c7429b2 100644
--- a/arch/mips/kernel/entry.S
+++ b/arch/mips/kernel/entry.S
@@ -21,24 +21,21 @@
 #endif
 
 #ifndef CONFIG_PREEMPT
-       .macro  preempt_stop
-       local_irq_disable
-       .endm
 #define resume_kernel  restore_all
+#else
+#define __ret_from_irq ret_from_exception
 #endif
 
        .text
        .align  5
-FEXPORT(ret_from_irq)
-       LONG_S  s0, TI_REGS($28)
-#ifdef CONFIG_PREEMPT
+#ifndef CONFIG_PREEMPT
 FEXPORT(ret_from_exception)
-#else
+       local_irq_disable                       # preempt stop
        b       _ret_from_irq
-FEXPORT(ret_from_exception)
-       preempt_stop
 #endif
-FEXPORT(_ret_from_irq)
+FEXPORT(ret_from_irq)
+       LONG_S  s0, TI_REGS($28)
+FEXPORT(__ret_from_irq)
        LONG_L  t0, PT_STATUS(sp)               # returning to kernel mode?
        andi    t0, t0, KU_USER
        beqz    t0, resume_kernel
-- 
1.4.4.3.ge6d4



<Prev in Thread] Current Thread [Next in Thread>