2008-06-02 21:22:36

by Joe Korty

[permalink] [raw]
Subject: Fix for asm warning in head_32.S

On Mon, May 19, 2008 at 04:10:02PM -0700, Linus Torvalds wrote:
> It also causes these warnings on 32-bit PAE:
>
> AS arch/x86/kernel/head_32.o
> arch/x86/kernel/head_32.S: Assembler messages:
> arch/x86/kernel/head_32.S:225: Warning: left operand is a bignum; integer 0 assumed
> arch/x86/kernel/head_32.S:609: Warning: left operand is a bignum; integer 0 assumed
>
> and I do not see why (the end result seems to be identical).



Fix head_32.S gcc bignum warnings when CONFIG_PAE=y.

arch/x86/kernel/head_32.S: Assembler messages:
arch/x86/kernel/head_32.S:225: Warning: left operand is a bignum; integer 0 assumed
arch/x86/kernel/head_32.S:609: Warning: left operand is a bignum; integer 0 assumed

The assembler was stumbling over the 64-bit constant 0x100000000 in the
KPMDS #define.

Testing: a cmp(1) on head_32.o before and after shows the binary is unchanged.

Signed-off-by: Joe Korty <[email protected]

Index: a/arch/x86/kernel/head_32.S
===================================================================
--- a.orig/arch/x86/kernel/head_32.S 2008-06-02 16:51:20.000000000 -0400
+++ a/arch/x86/kernel/head_32.S 2008-06-02 16:54:05.000000000 -0400
@@ -189,7 +189,7 @@
* this stage.
*/

-#define KPMDS ((0x100000000-__PAGE_OFFSET) >> 30) /* Number of kernel PMDs */
+#define KPMDS (((-__PAGE_OFFSET) >> 30) & 3) /* Number of kernel PMDs */

xorl %ebx,%ebx /* %ebx is kept at zero */