Subject: Re: 'program cc1 got fatal signal 11'
To: Neil A. Carson <neil@causality.com>
From: David Brownlee <abs@anim.dreamworks.com>
List: port-arm32
Date: 04/28/1998 02:33:55
On Tue, 28 Apr 1998, Neil A. Carson wrote:
> Kim G. S. OEyhus wrote:
>
> > The LDM instruction is not really necessary. It can be replaced with
> > multiple single load instructions. So, change gcc to do that,
> > recompile NetBSD, and release it. Let there be a flag so
> > people have the option of choosing. What do you say?
>
> Well I don't know actually, my reaction would be to no way do this but
> hell it is the "port master"'s decision not mine. May he speak.
>
One option might be to hack the linker to adjust the code
for any LDM that might be on a page boundary. False positives
are not so much a problem, as long as it does get them all.
Ugly, but possibly effective.
How much of a performance hit would avoiding all LDMs be?
Unless it is significant it would seem sensible to provide an
easy compile time switch to enable/disable the use of 'LDM'.
I believe gcc has similar workarounds for other chips.
Personally I would default this to on - I consider it more
important that the default work everywhere, than be faster on
some machines and broken on others, but I am certainly not in
any position to make any decisions here :)
Hmm, another thought - write all LDMs as LDM followed by NOP, then
post process the output to swap any LDM/NOP pairs where the LDM
is at the end of a page? (or on an address that could be at the
end of a page). Not incredibly attractive, but less ugly than
the first idea, and it should still be a compile option which
can be disabled by people who will never have to use the problem
chips....
David/absolute
-=- I know its not the right thing, and I know its not the good thing -=-