linux-mips
[Top] [All Lists]

Re: [PATCH] TX49 MFC0 bug workaround

To: ralf@linux-mips.org
Subject: Re: [PATCH] TX49 MFC0 bug workaround
From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Date: Fri, 03 Feb 2006 02:04:28 +0900 (JST)
Cc: macro@linux-mips.org, linux-mips@linux-mips.org
In-reply-to: <20060202165656.GC17352@linux-mips.org>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20060203.013401.41198517.anemo@mba.ocn.ne.jp> <Pine.LNX.4.64N.0602021636380.11727@blysk.ds.pg.gda.pl> <20060202165656.GC17352@linux-mips.org>
Sender: linux-mips-bounce@linux-mips.org
>>>>> On Thu, 2 Feb 2006 16:56:56 +0000, Ralf Baechle <ralf@linux-mips.org> 
>>>>> said:

>> Hmm, wouldn't that "nop" alternative be simpler?

ralf> Simpler maybe - but this variant has zero runtime overhead.

Yes.  I do not want do add extra cycles.

However, It can be more readable since we can safely mask bit[5:1] (as
local_irq_enable() does).  Like this:

__asm__ (
        "       .macro  local_irq_disable\n"
        "       .set    push                                            \n"
        "       .set    noat                                            \n"
#ifdef CONFIG_CPU_MIPSR2
        "       di                                                      \n"
#else
        "       mfc0    $1,$12                                          \n"
        "       ori     $1,0x1f                                         \n"
        "       xori    $1,0x1f                                         \n"
        "       .set    noreorder                                       \n"
        "       mtc0    $1,$12                                          \n"
#endif
        "       irq_disable_hazard                                      \n"
        "       .set    pop                                             \n"
        "       .endm                                                   \n");


Is this preferred?  We can get rid of all TX49XX_MFC0_WAR on this way.

---
Atsushi Nemoto

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