]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
x86: efi: Fix EFI 64-bit payload build warnings
authorBin Meng <bmeng.cn@gmail.com>
Thu, 25 Aug 2016 08:47:18 +0000 (01:47 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 30 Aug 2016 01:26:05 +0000 (09:26 +0800)
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>
arch/x86/include/asm/types.h
include/efi.h

index 766617f9aa3e22a5ac2346acac4312104e7821ff..880dcb488a5df933550ed204636b820ccffb2c35 100644 (file)
@@ -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;
index 21921f1d4f46137731d869bc7bd93529b1c64486..83de2d479e9a98b003c83039acbe8bb6c6d95d54 100644 (file)
 
 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;