Subject: Re: Argh! panic on cvs checkout
To: Gavan Fantom <gavan@coolfactor.org>
From: Richard Earnshaw <rearnsha@arm.com>
List: port-arm32
Date: 05/22/2001 13:54:58
> On Mon, 21 May 2001, Gavan Fantom wrote:
> 
> > On Mon, 21 May 2001, Chris Gilbert wrote:
> >
> > > hmm, what revision of SA is it?  If you check dmesg it'll say somewhere (just
> > > to rule out the J/K SA bugs.
> >
> > It claims to be the SA-110 with the STM^ bug.
> 
> OK, on the chip it says SA-110K.
> 
> I've tried it with an ARM710 instead and I can't reproduce this crash any
> more. What is the bug in this revision of the StrongARM, and is a
> work-around possible?

There are two bugs in the early strongarms that affect NetBSD users.  The 
first is a bug with STM of the user register bank when in kernel mode, 
this can (and is) worked around in the kernel and doesn't affect users 
applications at all.

The second bug is a much bigger problem and affects demand-paging.  This 
is caused by having a ldm ..,{...,pc} instruction as the last instruction 
in a page of memory.  The only known solution is to avoid such 
instructions in such locations, and the only practical way to achieve this 
is to patch binaries as the problem comes to light, but this can (in 
theory) corrupt the binary if what looks like an instruction is really 
data (I've never seen this happen in practice though).  There is a program 
that I wrote a while back that will do this for you, it can be downloaded 
from

	ftp://ftp.netbsd.org/pub/NetBSD/arch/arm32/misc

the files you need are  fix4SA110rev2.README and fix4SA110rev2.c

The readme file explains how to use the tool to patch the binaries.

R.