Linux Kernel Issue: MPC8540 Errata (CPU29)

Kumar Gala kumar.gala at freescale.com
Fri Apr 29 09:18:55 EST 2005


All of the suggestions are good ones.. Also, in 2.6 I've recently  
submitted patches that add emulation of these instructions in the  
kernel.

Its odd, but I would have expected a GCC configured for e500 not to  
generate the ld/st string instructions by default, but the -mno-string  
is what we do in the kernel to ensure that.

- kumar

On Apr 28, 2005, at 5:21 PM, Kylo Ginsberg wrote:

> Chiradeep,
>
> I have the same issue with gcc3.4.3 and an e500 target.  You can give
>  gcc the -mno-string to inhibit generation of those load/store string
>  instructions.  I don't know if gcc can be configured such that its
>  default is not to generate those instructions.
>
> Cheers,
>  Kylo
>
> On 4/28/05, Chiradeep Vittal <chiradeep at matissenetworks.com> wrote:
>  > It turns out to be a compiler issue.
> > We're using gcc 3.4.3 with optimization level -Os. The following  
> program will generate the illegal instruction with -Os but not with  
> -O2
>
> >         int main (int argc, char** argv)
>  >         {
>  >           int seq[] = {0, 1, 2};
>  >           return 0;
>  >         }
>  > The reason is that the compiler generates code with the stswi  
> instruction which is not supported by the e500. Here's our compiler  
> configuration:
>
> > Configured with:  
> /home/steve/perforce/sw/opt/crosstool/build/powerpc-8540-linux-gnu/ 
> gcc-3.4.3-glibc-2.3.2/gcc-3.4.3/configure  
> --target=powerpc-8540-linux-gnu --host=i686-host_pc-linux-gnu  
> --prefix=/home/steve/perforce/sw/opt/cross-compile/powerpc-8540-linux- 
> gnu/gcc-3.4.3-glibc-2.3.2 --with-cpu=8540  
> --enable-cxx-flags=-mcpu=8540  
> --with-headers=/home/steve/perforce/sw/opt/cross-compile/powerpc-8540- 
> linux-gnu/gcc-3.4.3-glibc-2.3.2/powerpc-8540-linux-gnu/include  
> --with-local-prefix=/home/steve/perforce/sw/opt/cross-compile/powerpc 
> -8540-linux-gnu/gcc-3.4.3-glibc-2.3.2/powerpc-8540-linux-gnu  
> --disable-nls --enable-threads=posix --enable-symvers=gnu  
> --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared  
> --enable-c99 --enable-long-long
>
> >
> > Any recommendations?
> >
> > Thanks
>  > --
>  > Chiradeep
>  >
> > -----Original Message-----
>  > From: Kumar Gala [mailto:kumar.gala at freescale.com]
>  > Sent: Wednesday, April 27, 2005 11:37 AM
>  > To: Chiradeep Vittal
>  > Cc: linuxppc-embedded at ozlabs.org
> > Subject: Re: Linux Kernel Issue: MPC8540 Errata (CPU29)
> >
> > On Apr 27, 2005, at 12:46 PM, Chiradeep Vittal wrote:
>  >
> > > We're running Linux Kernel 2.4.26 on an 8540 ADS derivative. We're
>  > >  seeing an
> > > "illegal instruction" (SIGILL) exception under some circumstances
>  > > (during a pthread_create call). We were wondering if this could  
> be a
> > > symptom of
>  > > CPU29 and if there is a patch available for CPU29.
>  > >
>  > > "CPU29 L1 instruction cache gets multiple entries for same line  
> after
>  > >  change
>  > > in MSR[IS] bit "
>  > >
>  > > www.freescale.com/files/32bit/doc/errata/MPC8540CE.pdf
> >
> > The way the Linux kernel manages the MMU on e500 it doesn't actually
>  > ever modify MSR[IS] or MSR[DS].  They are always zero so I dont  
> believe
>  > you are hitting this errata.
>  >
> > Are you running with math emulation turned on?  Do you know what the
>  > instruction is that causes the SIGILL?
>  >
> > - kumar
>  >
> > _______________________________________________
> > Linuxppc-embedded mailing list
>  > Linuxppc-embedded at ozlabs.org
> > https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>  >




More information about the Linuxppc-embedded mailing list