--- /dev/null
+From 04c17341b42699a5859a8afa05e64ba08a4e5235 Mon Sep 17 00:00:00 2001
+From: Borislav Petkov <bp@alien8.de>
+Date: Fri, 19 Jun 2015 13:49:06 +0200
+Subject: x86/boot: Fix overflow warning with 32-bit binutils
+
+From: Borislav Petkov <bp@alien8.de>
+
+commit 04c17341b42699a5859a8afa05e64ba08a4e5235 upstream.
+
+When building the kernel with 32-bit binutils built with support
+only for the i386 target, we get the following warning:
+
+ arch/x86/kernel/head_32.S:66: Warning: shift count out of range (32 is not between 0 and 31)
+
+The problem is that in that case, binutils' internal type
+representation is 32-bit wide and the shift range overflows.
+
+In order to fix this, manipulate the shift expression which
+creates the 4GiB constant to not overflow the shift count.
+
+Suggested-by: Michael Matz <matz@suse.de>
+Reported-and-tested-by: Enrico Mioso <mrkiko.rs@gmail.com>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Cc: Borislav Petkov <bp@alien8.de>
+Cc: H. Peter Anvin <hpa@zytor.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kernel/head_32.S | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+--- a/arch/x86/kernel/head_32.S
++++ b/arch/x86/kernel/head_32.S
+@@ -62,9 +62,16 @@
+ #define PAGE_TABLE_SIZE(pages) ((pages) / PTRS_PER_PGD)
+ #endif
+
+-/* Number of possible pages in the lowmem region */
+-LOWMEM_PAGES = (((1<<32) - __PAGE_OFFSET) >> PAGE_SHIFT)
+-
++/*
++ * Number of possible pages in the lowmem region.
++ *
++ * We shift 2 by 31 instead of 1 by 32 to the left in order to avoid a
++ * gas warning about overflowing shift count when gas has been compiled
++ * with only a host target support using a 32-bit type for internal
++ * representation.
++ */
++LOWMEM_PAGES = (((2<<31) - __PAGE_OFFSET) >> PAGE_SHIFT)
++
+ /* Enough space to fit pagetables for the low memory linear map */
+ MAPPING_BEYOND_END = PAGE_TABLE_SIZE(LOWMEM_PAGES) << PAGE_SHIFT
+