linux-mips
[Top] [All Lists]

Re: kernel_thread creation bug?

To: Atsushi Nemoto <anemo@mba.ocn.ne.jp>, Ralf Baechle <ralf@linux-mips.org>
Subject: Re: kernel_thread creation bug?
From: "Maciej W. Rozycki" <macro@linux-mips.org>
Date: Sat, 23 Oct 2004 06:15:25 +0100 (BST)
Cc: linux-mips@linux-mips.org
In-reply-to: <Pine.LNX.4.58L.0410230457000.8265@blysk.ds.pg.gda.pl>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20041022.170758.48799763.nemoto@toshiba-tops.co.jp> <20041022121647.GA27961@linux-mips.org> <20041022.212503.39150495.nemoto@toshiba-tops.co.jp> <Pine.LNX.4.58L.0410230457000.8265@blysk.ds.pg.gda.pl>
Sender: linux-mips-bounce@linux-mips.org
On Sat, 23 Oct 2004, Maciej W. Rozycki wrote:

>  Thanks for tracking down this problem -- I think we want the following
> fix on top of yours to handle the R3k style of exception handling.  I
> don't have a way to test it ATM (I'd appreciate feedback if anyone could
> do that for me), but it should be obvious.
> 
>  Ralf, do you agree?

 We want interrupts to be disabled until rfe, of course.  Here's an
update.  Hopefully no more bugs here...

  Maciej

patch-mips-2.6.9-20041023-kernel_thread-r3k-1
diff -up --recursive --new-file 
linux-mips-2.6.9-20041023.macro/arch/mips/kernel/process.c 
linux-mips-2.6.9-20041023/arch/mips/kernel/process.c
--- linux-mips-2.6.9-20041023.macro/arch/mips/kernel/process.c  Sat Oct 23 
03:30:46 2004
+++ linux-mips-2.6.9-20041023/arch/mips/kernel/process.c        Sat Oct 23 
05:07:59 2004
@@ -175,7 +175,10 @@ long kernel_thread(int (*fn)(void *), vo
        regs.regs[5] = (unsigned long) fn;
        regs.cp0_epc = (unsigned long) kernel_thread_helper;
        regs.cp0_status = read_c0_status();
-#if !(defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX))
+#if defined(CONFIG_CPU_R3000) || defined(CONFIG_CPU_TX39XX)
+       regs.cp0_status &= ~(ST0_KUP | ST0_IEC);
+       regs.cp0_status |= ST0_IEP;
+#else
        regs.cp0_status |= ST0_EXL;
 #endif
 

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