diff options
| author | Mike Frysinger <vapier@gentoo.org> | 2008-03-31 11:02:01 -0400 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2008-04-24 13:18:17 +0200 | 
| commit | 89cdab788f3716b335fefb60b836ebcf975aceab (patch) | |
| tree | 8d315784366d9b3c5ce7ffd39913eb6fb3979a26 /include | |
| parent | 58c5376ba67767ee684069d43e7f747a5d9ae8ed (diff) | |
| download | olio-uboot-2014.01-89cdab788f3716b335fefb60b836ebcf975aceab.tar.xz olio-uboot-2014.01-89cdab788f3716b335fefb60b836ebcf975aceab.zip | |
crc32: use uint32_t rather than unsigned long
The envcrc.c does sizeof(unsigned long) when calculating the crc, but
this is done with the build toolchain instead of the target tool
chain, so if the build is a 64bit system but the target is 32bits,
the size will obviously be wrong. This converts all unsigned long
stuff related to crc32 to uint32_t types. Compile tested only: output
of ./tools/envcrc when run on a 32bit build system matches that of a
64bit build system.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/common.h | 4 | ||||
| -rw-r--r-- | include/environment.h | 11 | 
2 files changed, 10 insertions, 5 deletions
| diff --git a/include/common.h b/include/common.h index 8630780e9..aea181e2a 100644 --- a/include/common.h +++ b/include/common.h @@ -604,8 +604,8 @@ int	sprintf(char * buf, const char *fmt, ...);  int	vsprintf(char *buf, const char *fmt, va_list args);  /* lib_generic/crc32.c */ -ulong crc32 (ulong, const unsigned char *, uint); -ulong crc32_no_comp (ulong, const unsigned char *, uint); +uint32_t crc32 (uint32_t, const unsigned char *, uint); +uint32_t crc32_no_comp (uint32_t, const unsigned char *, uint);  /* common/console.c */  int	console_init_f(void);	/* Before relocation; uses the serial  stuff	*/ diff --git a/include/environment.h b/include/environment.h index af605ab7a..c4f7c33be 100644 --- a/include/environment.h +++ b/include/environment.h @@ -84,18 +84,23 @@  # endif  #endif /* CFG_ENV_IS_IN_NAND */ +#ifdef USE_HOSTCC +# include <stdint.h> +#else +# include <linux/types.h> +#endif  #ifdef CFG_REDUNDAND_ENVIRONMENT -# define ENV_HEADER_SIZE	(sizeof(unsigned long) + 1) +# define ENV_HEADER_SIZE	(sizeof(uint32_t) + 1)  #else -# define ENV_HEADER_SIZE	(sizeof(unsigned long)) +# define ENV_HEADER_SIZE	(sizeof(uint32_t))  #endif  #define ENV_SIZE (CFG_ENV_SIZE - ENV_HEADER_SIZE)  typedef	struct environment_s { -	unsigned long	crc;		/* CRC32 over data bytes	*/ +	uint32_t	crc;		/* CRC32 over data bytes	*/  #ifdef CFG_REDUNDAND_ENVIRONMENT  	unsigned char	flags;		/* active/obsolete flags	*/  #endif |