diff options
author | Bin Meng <bmeng.cn@gmail.com> | 2016-08-25 01:47:18 -0700 |
---|---|---|
committer | Bin Meng <bmeng.cn@gmail.com> | 2016-08-30 09:26:05 +0800 |
commit | 3e6cc35f4e8fb5010421e606cfab0e00d0adacc0 (patch) | |
tree | 7379738a3d284e4331de735c24810e7011cb4a0d | |
parent | 3dc51ab0e15180fa761c8072120c591b4693b3c8 (diff) |
x86: efi: Fix EFI 64-bit payload build warnings
There are lots of warnings when building EFI 64-bit payload.
include/asm-generic/bitops/__fls.h:17:2:
warning: left shift count >= width of type
if (!(word & (~0ul << 32))) {
^
In fact, U-Boot itself as EFI payload is running in 32-bit mode.
So BITS_PER_LONG needs to still be 32, but EFI status codes are
64-bit when booting from 64-bit EFI. Introduce EFI_BITS_PER_LONG
to bridge those status codes with U-Boot's BITS_PER_LONG.
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | arch/x86/include/asm/types.h | 4 | ||||
-rw-r--r-- | include/efi.h | 32 |
2 files changed, 20 insertions, 16 deletions
diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h index 766617f9aa..880dcb488a 100644 --- a/arch/x86/include/asm/types.h +++ b/arch/x86/include/asm/types.h @@ -44,11 +44,7 @@ typedef __INT64_TYPE__ s64; typedef __UINT64_TYPE__ u64; #endif -#ifdef CONFIG_EFI_STUB_64BIT -#define BITS_PER_LONG 64 -#else #define BITS_PER_LONG 32 -#endif /* Dma addresses are 32-bits wide. */ typedef u32 dma_addr_t; diff --git a/include/efi.h b/include/efi.h index 21921f1d4f..83de2d479e 100644 --- a/include/efi.h +++ b/include/efi.h @@ -27,19 +27,27 @@ struct efi_device_path; +#define EFI_BITS_PER_LONG BITS_PER_LONG + +/* With 64-bit EFI stub, EFI_BITS_PER_LONG has to be 64 */ +#ifdef CONFIG_EFI_STUB_64BIT +#undef EFI_BITS_PER_LONG +#define EFI_BITS_PER_LONG 64 +#endif + #define EFI_SUCCESS 0 -#define EFI_LOAD_ERROR (1 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_INVALID_PARAMETER (2 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_UNSUPPORTED (3 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_BAD_BUFFER_SIZE (4 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_BUFFER_TOO_SMALL (5 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_NOT_READY (6 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_DEVICE_ERROR (7 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_WRITE_PROTECTED (8 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_OUT_OF_RESOURCES (9 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_NOT_FOUND (14 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_ACCESS_DENIED (15 | (1UL << (BITS_PER_LONG - 1))) -#define EFI_SECURITY_VIOLATION (26 | (1UL << (BITS_PER_LONG - 1))) +#define EFI_LOAD_ERROR (1 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_INVALID_PARAMETER (2 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_UNSUPPORTED (3 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_BAD_BUFFER_SIZE (4 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_BUFFER_TOO_SMALL (5 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_NOT_READY (6 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_DEVICE_ERROR (7 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_WRITE_PROTECTED (8 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_OUT_OF_RESOURCES (9 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_NOT_FOUND (14 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_ACCESS_DENIED (15 | (1UL << (EFI_BITS_PER_LONG - 1))) +#define EFI_SECURITY_VIOLATION (26 | (1UL << (EFI_BITS_PER_LONG - 1))) typedef unsigned long efi_status_t; typedef u64 efi_physical_addr_t; |