linux-mips
[Top] [All Lists]

Re: Q about ST0_UX

To: Jason Gunthorpe <jgg@debian.org>
Subject: Re: Q about ST0_UX
From: Ralf Baechle <ralf@oss.sgi.com>
Date: Wed, 9 Jan 2002 09:30:40 -0200
Cc: linux-mips@oss.sgi.com
In-reply-to: <Pine.LNX.3.96.1020109000346.9606F-100000@wakko.deltatee.com>; from jgg@debian.org on Wed, Jan 09, 2002 at 12:08:47AM -0700
References: <Pine.LNX.3.96.1020109000346.9606F-100000@wakko.deltatee.com>
Sender: owner-linux-mips@oss.sgi.com
User-agent: Mutt/1.2.5i
On Wed, Jan 09, 2002 at 12:08:47AM -0700, Jason Gunthorpe wrote:

> I just noticed that in setup.c there is this little bit:
> 
>         s = read_32bit_cp0_register(CP0_STATUS);
>         s &= ~(ST0_CU1|ST0_CU2|ST0_CU3|ST0_KX|ST0_SX|ST0_FR);
>         s |= ST0_CU0;
>         write_32bit_cp0_register(CP0_STATUS, s);
> 
> And it doesn't mask off ST0_UX - is this an oversight? With my RM7K the
> kernel is called with ST0_UX set, and since it doesn't clear it the XTLB
> handler is called - which faults things..

On all firmware I've made the 32-bit kernel run on it is invoked with UX
cleared so I just didn't bother to clear it myself.

> So, would this patch be appropriate in general:
> 
> --- setup.c     2001/12/02 11:34:38     1.96
> +++ setup.c     2002/01/09 08:05:43
> @@ -558,7 +558,7 @@
>  
>         /* Disable coprocessors and set FPU for 16 FPRs */
>         s = read_32bit_cp0_register(CP0_STATUS);
> -       s &= ~(ST0_CU1|ST0_CU2|ST0_CU3|ST0_KX|ST0_SX|ST0_FR);
> +       s &= ~(ST0_CU1|ST0_CU2|ST0_CU3|ST0_UX|ST0_KX|ST0_SX|ST0_FR);
>         s |= ST0_CU0;
>         write_32bit_cp0_register(CP0_STATUS, s);
> 
> or is it better to make the xtlb handler work in the 32 bit case?

No, your patch is the right thing.  Enabeling UX would also permit the
use of 64-bit instructions and that wouldn't work on the 32-bit kernel.

  Ralf

<Prev in Thread] Current Thread [Next in Thread>
  • Q about ST0_UX, Jason Gunthorpe
    • Re: Q about ST0_UX, Ralf Baechle <=