On Wed, Nov 02, 2011 at 04:54:51PM +0000, Jonathan A. Kollasch wrote: > Module Name: src > Committed By: jakllsch > Date: Wed Nov 2 16:54:51 UTC 2011 > > Modified Files: > src/sys/dev/ic: ahcisatareg.h > > Log Message: > Additionally apply __aligned(8) to all __packed hardware data structures. > (The hardware actually requires much larger alignment on these structures > (128 to 1024 bytes), but 8 is big enough for the compiler to generate more > efficient code on strict alignment architectures.)
If these structures only have the odd field that needs non-native alignments (eg 32bit on 16bit alignment or 64bit on 32bit alignment) then it can be achieved by applying __aligned() to that single field. That also allows the compiler to generate larger-than-byte accesses on strict alignment systems. See the mbr definition in (IIRC) disklabel.h and the 64bit types in amd64's compat32 for examples. David -- David Laight: da...@l8s.co.uk