linux-mips
[Top] [All Lists]

Re: sti() does not work.

To: linux-mips@oss.sgi.com
Subject: Re: sti() does not work.
From: Thiemo Seufer <ica2_ts@csv.ica.uni-stuttgart.de>
Date: Wed, 4 Jul 2001 12:23:29 +0200
In-reply-to: <84CE342693F11946B9F54B18C1AB837B05CE09@ex2k.pcs.psdc.com>
Sender: owner-linux-mips@oss.sgi.com
User-agent: Mutt/1.3.18i
Steven Liu wrote:
> Hi All:
> 
> I am working on the porting Linux to mips R3000 and  have a problem
> about sti( ) which is called in start_kernel( ).
> 
> As we know, sti() is defined as __sti( ) in the
> include/asm-mips/system.h:
>  
> extern __inline__ void  __sti(void)
> {
>       __asm__ __volatile__(
>               ".set\tnoreorder\n\t"
>               ".set\tnoat\n\t"
>               "mfc0\t$1,$12\n\t"
>               "ori\t$1,0x1f\n\t"
>               "xori\t$1,0x1e\n\t"
>               "mtc0\t$1,$12\n\t"               /* <----- problem  here
> ! */

Here should follow some nop's on a MIPS I system to make sure $12
is written (why is noreorder used here?).

>               ".set\tat\n\t"
>               ".set\treorder"
>               : /* no outputs */
>               : /* no inputs */
>               : "$1", "memory");
> }

HTH,
Thiemo

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