summaryrefslogtreecommitdiff
path: root/include/efi.h
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2016-08-25 08:47:18 (GMT)
committerBin Meng <bmeng.cn@gmail.com>2016-08-30 01:26:05 (GMT)
commit3e6cc35f4e8fb5010421e606cfab0e00d0adacc0 (patch)
tree7379738a3d284e4331de735c24810e7011cb4a0d /include/efi.h
parent3dc51ab0e15180fa761c8072120c591b4693b3c8 (diff)
downloadu-boot-fsl-qoriq-3e6cc35f4e8fb5010421e606cfab0e00d0adacc0.tar.xz
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>
Diffstat (limited to 'include/efi.h')
-rw-r--r--include/efi.h32
1 files changed, 20 insertions, 12 deletions
diff --git a/include/efi.h b/include/efi.h
index 21921f1..83de2d4 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;