Il 04/04/2013 16:37, Peter Maydell ha scritto: >> Regarding the others, none of them are in target-generic places, and >> > none of them affect m68k (ARM only uses non-standard alignment for llong): >> > >> > - linux-user/mips64/syscall.h is correct with target_ulong, and in >> > general MIPS is best left as it is (it often uses uint32_t/uint64_t or >> > target_long/ulong explicitly so that n32 is handled correctly). > Hmm, is this really right? target_ulong before this patch would > have had an explicit alignment attribute, and it no longer does. > So if you're running a mips64 guest on an m68k host then you'll > now get structs with the natural m68k alignment rather than the > desired mips64 alignment...
Note that target_ulong and abi_ulong would have different sizes. Better to get alignment wrong on m68k, than size wrong on all platforms. :) Also I think this should not be a problem. These structures have no holes in them, the padding is always written down explicitly and they are accessed (or should be) via copy_from/to_user. > (I can entirely believe that we get this wrong in a lot of > places, and that in theory just about anything in a target_ > struct needs an alignment specifier.) Yes, or more simply just use abi_* types. It doesn't help that potential problems would only show up on m68k. Paolo