This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


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: ldrb vs ldrh in gcc-3.4.4 (ARM)


On Wed, 2005-08-17 at 15:16, Duane Ellis wrote:
> > ----- Message from Steven Scholz <steven.scholz@imc-berlin.de> on 
> 
> 
> > I noticed that gcc-3.4.4 for ARM is using byte wise loading instructions 
> 
> 
> Seems that GCC is trying to deal with un-aligned access issues.
> 
> GCC-ARM has a "--malignment-traps" option. I wonder if it some how
> turned on by default. (Or something like that, my gcc-info is old
> perhaps it has changed)

No,  it's because very old ARM cores (up to the arm6, and early arm7
devices -- but not the arm7tdmi) had no instructions to load or store
16-bit objects.  You had to synthesize them from other instructions. 
For loads, this could be done by using an unaligned 32-bit load which
had 'interesting properties'.  However, once 16-bit loads were added, it
became possible to configure the CPU to trap those unaligned 32-bit
loads and take a kernel fault.  That meant a change in code generation
strategy.

The very latest arm cores (architecture ARMv6) now have support for more
conventional unaligned accesses, so support for the old unaligned access
model has been removed (in effect, -malignment-traps is unconditionally
on now).

R.

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


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