Erik (All interested),
Per the ARM - Architecture Reference Manual (pg. A2-26, 2001, Issue E) can be UNPREDICTABLE and should therefore be avoided.
*** From the aforementioned document:
The architecturally defined behavior of a load/store instruction which generates an unaligned access is one of the following:
- It is UNPREDICTABLE
- It ignores the low-order address bits that make the access unaligned. This means it effectively uses teh formula (address AND 0xFFFFFFFE) for a halfword access, and uses the formula (address AND 0xFFFFFFFC) for a word access.
- It ignores the low-order address bits that make the access unaligned for the memory access itself, but then uses those low-order bits to control a rotation of the loaded data. (This behavior applies only to the LDR and SWP instructions).
Which of these three options applies to a load/store instruction depends on which instruction it is, and is documented on the instruction pages.
Essentially, avoid packing structures like the plague. The common reason for packing that I have come across is when implementing a protocol. In such a case it would be best to leave the structure unpacked and manually create the outgoing buffer in its packed form (the reverse would be necessary for incoming buffers).