> > 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