From: Simon Glass Date: Tue, 23 Jun 2015 21:38:31 +0000 (-0600) Subject: Add a way of checking the position of a structure member X-Git-Tag: v2015.10-rc1~174 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=c9689ca3182b89f1051b11eac2296a627abd4d31;p=u-boot Add a way of checking the position of a structure member U-Boot uses structures for hardware access so it is important that these structures are correct. Add a way of asserting that a structure member is at a particular offset. This can be created using the datasheet for the hardware. This implementation uses Static_assert() since BUILD_BUG_ON() only works within functions. Signed-off-by: Simon Glass --- diff --git a/include/common.h b/include/common.h index 8f4b2ec212..4566bd1111 100644 --- a/include/common.h +++ b/include/common.h @@ -1010,6 +1010,17 @@ int cpu_release(int nr, int argc, char * const argv[]); #define DEFINE_CACHE_ALIGN_BUFFER(type, name, size) \ DEFINE_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN) +/* + * check_member() - Check the offset of a structure member + * + * @structure: Name of structure (e.g. global_data) + * @member: Name of member (e.g. baudrate) + * @offset: Expected offset in bytes + */ +#define check_member(structure, member, offset) _Static_assert( \ + offsetof(struct structure, member) == offset, \ + "`struct " #structure "` offset for `" #member "` is not " #offset) + /* Pull in stuff for the build system */ #ifdef DO_DEPS_ONLY # include