This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: arm-elf multilib issues


> > Almost certainly not. As far as I'm concerned arm-elf is obsolete, and in
> > maintenance only mode. You should be using arm-eabi.
> 
> I'm possibly (probably?) wrong, but as far as I know, it forces alignment
> of 64-bit datum (namely, doubles and long longs) to 8 byte boundaries,
> which does not make sense on small 32-bit cores with 32-bit buses and no
> caches (e.g. practically all ARM7TDMI based chips). Memory is a scarce
> resource on those and wasting bytes for alignment with no performance
> benefit is something that makes arm-eabi less attractive. Also, as far as
> I know passing such datums to functions might cause some headache due to
> the 64-bit datums being even-register aligned when passing them to
> functions, effectively forcing arguments to be passed on the stack
> unnecessarily (memory access is rather expensive on a cache-less
> ARM7TDMI). If you have to write assembly routines that take long long or
> double arguments among other types, that forces you to shuffle registers
> and fetch data from the stack. You lose code space, data space and CPU
> cycles with absolutely nothing in return.

Meh. Badly written code on antique hardware.
I realise this sounds harsh, but in all seriousness if you take a bit of care 
(and common sense) you should get the alignment for free in pretty much all 
cases, and it can make a huge difference on ARMv5te cores.

If you're being really pedantic then old-abi targets tend to pad all 
structures to a word boundary. I'd expect this to have much more detrimental 
overall effect than alignment of doubleword quantities, which in my experience 
are pretty rare to start with.

Paul


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]