From: Vignesh R Date: Tue, 5 Feb 2019 05:59:11 +0000 (+0530) Subject: bitops: Fix GENMASK definition for Sandbox X-Git-Tag: v2019.04-rc1~2^2~18 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e519c616061db4a388bb3ed765eab8c61a9571bc;p=oweals%2Fu-boot.git bitops: Fix GENMASK definition for Sandbox In arch/sandbox/include/asm/types.h we have Therefore for 32 bit Sandbox build BITS_PER_LONG turns out to be 32 as CONFIG_PHYS64 is not set This messes up the current logic of GENMASK macro due to mismatch b/w size of unsigned long (64 bit) and that of BITS_PER_LONG. Fix this by using CONFIG_SANDBOX_BITS_PER_LONG which is set to 64/32 based on the host machine on which its being compiled. Without this patch: GENMASK(14,0) => 0x7fffffffffff After this patch: GENMASK(14,0) => 0x7fff Signed-off-by: Vignesh R Reviewed-by: Simon Glass --- diff --git a/include/linux/bitops.h b/include/linux/bitops.h index a47f6d17bb..259df43fb0 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h @@ -21,8 +21,13 @@ * position @h. For example * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000. */ +#ifdef CONFIG_SANDBOX +#define GENMASK(h, l) \ + (((~0UL) << (l)) & (~0UL >> (CONFIG_SANDBOX_BITS_PER_LONG - 1 - (h)))) +#else #define GENMASK(h, l) \ (((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) +#endif #define GENMASK_ULL(h, l) \ (((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))