ffmpeg/libavutil/arm
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
..
bswap.h bswap: make generic implementation more compiler-friendly 2011-12-12 12:14:14 +00:00
cpu.c ARM: allow runtime masking of CPU features 2012-04-22 12:30:45 +01:00
cpu.h ARM: allow runtime masking of CPU features 2012-04-22 12:30:45 +01:00
intmath.h ARM: allow building in Thumb2 mode 2011-06-23 07:31:54 +01:00
intreadwrite.h arm: intreadwrite: fix inline asm constraints for gcc 4.6 and later 2012-05-02 17:26:38 +01:00
Makefile ARM: allow runtime masking of CPU features 2012-04-22 12:30:45 +01:00
timer.h Replace FFmpeg with Libav in licence headers 2011-03-19 13:33:20 +00:00