Thread (17 messages) flat view 17 messages, 7 authors, 2011-04-28

ARM unaligned MMIO access with attribute((packed))

From: davem@davemloft.net (David Miller)
Date: 2011-02-02 21:59:20
Also in: lkml

From: Russell King - ARM Linux <redacted>
Date: Wed, 2 Feb 2011 21:45:22 +0000
On Wed, Feb 02, 2011 at 01:38:31PM -0800, David Miller wrote:
quoted
From: Russell King - ARM Linux <redacted>
Date: Wed, 2 Feb 2011 16:37:02 +0000
quoted
1. there's no way to tell GCC that the inline assembly is a load
   instruction and therefore it needs to schedule the following
   instructions appropriately.
Just add a dummy '"m" (pointer)' asm input argument to the inline asm
statement.  Just make sure "typeof(pointer)" has a size matching the
size of the load your are performing.
That involves this problematical cast from a packed struct pointer to
an unsigned long pointer, which according to the C standard and GCC
folk is undefined.
It's alignment may be undefined, but it's size definitely is well
defined and that's what matters here.
Practice over the last 15 years on ARM has also shown that this is not
necessary.
Sorry oh big super man, little ole' me is only a kernel newbie.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help