Subject: Re: Compiling the kernel
To: None <richard.earnshaw@arm.com>
From: Mark Brinicombe <mark@causality.com>
List: port-arm32
Date: 02/18/1998 00:04:21
On Mon, 16 Feb 1998, Richard Earnshaw wrote:

> > That's a SFMFD (store floating point multiple) instruction.  Do you have
> > the ARMFPE enabled in your kernel configuration?  If not, then that would
> > probably explain why this is failing.
> 
> Well, nearly.  Actually it is
>       0x00000000: 0xeca0420c  .B.. : >  sfm      f4,4,[r0],#0x30
> 
> Now the strange thing about this is that the compiler never emits an SFM 
> with anything other than SP as the base register (and it always uses it in 
> the SFMFD form, and only then when told to generate FP issue 3 
> instructions), so I've no idea how you come to be executing such an 
> instruction, unless it is a bit of hand-written assembler somewhere.

You guessed it ;-) This instruction occurs in a bit of hand written
assembly in libc. It actually occurs in the _setjmp() function.
You will find all the binaries that were dying were ones that use setjmp /
longjmp.
Enabling the FPE will fix this.
Newer builds of libc do not do use this instuction is a soft-float build
is done.

Cheers,
				Mark