Subject: Re: Possible bug in arm32 strongarm optimisations.
To: David Brownlee <abs@netbsd.org>
From: Richard Earnshaw <rearnsha@arm.com>
List: port-arm32
Date: 10/30/2000 11:51:43
> On Thu, 26 Oct 2000, Mike Pumford wrote:
> 
> > > On Thu, 26 Oct 2000, David Brownlee wrote:
> > >
> > > 	Just a thought on this - how much of a gain would it be for
> > > 	StrongARM RiscPC machines to be able to use the non halfword
> > > 	StrongARM instructions? Would there be any sense in adding another
> > > 	-march or similar option to gcc?
> > >
> > I think that is what -march=armv3m means. It allows the use of the
> > enhanced multiply instructions but inhibits the halfword load/store
> > instructions. The -mtune=strongarm option enables the instruction
> > reordering to reduce result register dependencies.
> >
> 	That looks pretty consistent with a quick browse of
> 	dist/gcc/config/arm/arm.[ch] :)
> 
>   {"armv3m",    PROCESSOR_NONE, (FL_CO_PROC | FL_FAST_MULT | FL_MODE32
>                                  | FL_MODE26)},
> 
>   {"strongarm", PROCESSOR_STARM, (FL_FAST_MULT | FL_MODE32 | FL_MODE26
>                                   | FL_ARCH4)},
> 
> 	Hmm... -marmv3m also implies FL_CO_PROC, which by default will
> 	compile for an FPE. Kernel code is always compiled soft-float,
> 	does the same apply for NetBSD/arm32 userland?

NetBSD always uses soft-float, so the co-proc flag won't affect anything.

> 
> 	Are there any other interesting armv4 instructions?

The only thing that you lose between -march=armv3m and -march=armv4 that 
would be of value on a SA+RPC is ldrsb.  Given that adding this would only 
have minimal affect on normal user code, there seems little point in 
adding a special option just to work around the RPCs obsolete bus 
architecture.

R.