On Wed, Feb 02, 2011 at 02:52:04PM -0800, Andreas Schwab wrote: > Dmitry Torokhov <dtor@xxxxxxxxxx> writes: > > > But why is it aligned on 2-byte boundary and why m64k is not happy with > > module_version_attribute but is happy with kernel_param which is also > > aligned similarly? > > struct kernel_parm doesn't contain internal padding on 32 bit > architectures (it does on 64bit architectures though). > > > If we unroll module_version_attribute it woud look like this: > > > > struct module_version_attribute { > > > > struct module_attribute { > > > > struct attribute { > > const char *name; > > mode_t mode; > > } attr; > > ... > > > > } mattr; > > > > const char *module_name; > > const char *version; > > }; > > > > So I would expect it be aligned on (char *) boundary which should be the > > same as (void *). > > mode_t is a 16 bit type, thus any following member becomes aligned on an > odd 2 byte boundary. Even pointers? I'd expect pointers to be aligned on 4-bytes boundaries? Thanks, Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html