ffmpeg/libavutil
Mans Rullgard adebad07e0 arm: intreadwrite: fix inline asm constraints for gcc 4.6 and later
With a dereferenced type-cast pointer as memory operand, gcc 4.6
and later will sometimes copy the data to a temporary location,
the address of which is used as the operand value, if it thinks
the target address might be misaligned.  Using a pointer to a
packed struct type instead does the right thing.

The 16-bit case is special since the ldrh instruction addressing
modes are limited compared to ldr.  The "Uq" constraint produces a
memory reference suitable for an ldrsb instruction, which supports
the same addressing modes as ldrh.  However, the restrictions appear
to apply only when the operand addresses a single byte.  The memory
reference must thus be split into two operands each targeting one
byte.  Finally, the "Uq" constraint is only available in ARM mode.
The Thumb-2 ldrh instruction supports most addressing modes so the
normal "m" constraint can be used there.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2012-05-02 17:26:38 +01:00
..
2012-04-24 21:28:27 -04:00
2012-04-20 09:43:11 -04:00
2012-04-20 09:43:11 -04:00
2011-05-21 13:48:10 +02:00
2012-01-03 14:25:43 +01:00
2012-01-27 17:19:09 -08:00
2011-11-06 11:53:05 +02:00
2012-02-25 11:49:41 -05:00
2012-02-25 11:49:41 -05:00
2011-12-11 00:32:25 +01:00
2011-10-12 23:39:31 +02:00
2012-04-20 09:43:11 -04:00
2011-07-03 18:19:19 +01:00
2012-01-27 17:19:09 -08:00
2012-01-05 14:48:30 +01:00