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-03-09 22:02:49 +01:00
2012-04-24 21:28:27 -04:00
2012-04-24 23:38:54 -04:00
2011-03-16 21:54:39 +01:00
2011-04-07 02:54:12 +02:00
2012-02-23 19:36:16 +01:00
2012-04-24 21:28:27 -04:00
2012-01-21 14:54:31 +01:00

Libav README
------------

1) Documentation
----------------

* Read the documentation in the doc/ directory.

2) Licensing
------------

* See the LICENSE file.
Description
No description provided
Readme 173 MiB
Languages
C 92.1%
Assembly 6%
Makefile 1.2%
C++ 0.3%
Objective-C 0.2%
Other 0.1%