Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=adff90a9333004d5459823665e8bcf6cb9214f79
Commit:     adff90a9333004d5459823665e8bcf6cb9214f79
Parent:     8c67316e706cabc2145d6c8e97f0bd8f2a86d8a1
Author:     Franck Bui-Huu <[EMAIL PROTECTED]>
AuthorDate: Thu Feb 15 12:06:48 2007 +0100
Committer:  Ralf Baechle <[EMAIL PROTECTED]>
CommitDate: Thu Oct 11 23:45:59 2007 +0100

    [MIPS] Automatically set CONFIG_BUILD_ELF64
    
    We do not rely on user anymore to setup this config correctly.
    Instead we make our choice depending on the load address.
    
    If we want to force Kbuild to use ELF64 format whatever
    the load address we can still do:
    
            $ make BUILD_ELF32=no
    
    Signed-off-by: Franck Bui-Huu <[EMAIL PROTECTED]>
    Signed-off-by: Ralf Baechle <[EMAIL PROTECTED]>
---
 arch/mips/Kconfig       |   15 ---------------
 arch/mips/Makefile      |   23 ++++++++++++++++++++---
 include/asm-mips/page.h |    2 +-
 3 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index b09eee2..492f581 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1853,21 +1853,6 @@ source "fs/Kconfig.binfmt"
 config TRAD_SIGNALS
        bool
 
-config BUILD_ELF64
-       bool "Use 64-bit ELF format for building"
-       depends on 64BIT
-       help
-         A 64-bit kernel is usually built using the 64-bit ELF binary object
-         format as it's one that allows arbitrary 64-bit constructs.  For
-         kernels that are loaded within the KSEG compatibility segments the
-         32-bit ELF format can optionally be used resulting in a somewhat
-         smaller binary, but this option is not explicitly supported by the
-         toolchain and since binutils 2.14 it does not even work at all.
-
-         Say Y to use the 64-bit format or N to use the 32-bit one.
-
-         If unsure say Y.
-
 config BINFMT_IRIX
        bool "Include IRIX binary compatibility"
        depends on CPU_BIG_ENDIAN && 32BIT && BROKEN
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index d5d5831..4337c49 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -60,9 +60,6 @@ vmlinux-32            = vmlinux.32
 vmlinux-64             = vmlinux
 
 cflags-y               += -mabi=64
-ifndef CONFIG_BUILD_ELF64
-cflags-y               += $(call cc-option,-msym32)
-endif
 endif
 
 all-$(CONFIG_BOOT_ELF32)       := $(vmlinux-32)
@@ -576,6 +573,26 @@ else
 JIFFIES                        = jiffies_64
 endif
 
+#
+# Automatically detect the build format. By default we choose
+# the elf format according to the load address.
+# We can always force a build with a 64-bits symbol format by
+# passing 'BUILD_ELF32=no' option to the make's command line.
+#
+ifdef CONFIG_64BIT
+  ifndef BUILD_ELF32
+    ifeq ($(shell expr $(load-y) \< 0xffffffff80000000), 0)
+      BUILD_ELF32 = y
+    endif
+  endif
+
+  ifeq ($(BUILD_ELF32), y)
+    cflags-y += -msym32
+  else
+    cflags-y += -DCONFIG_BUILD_ELF64
+  endif
+endif
+
 AFLAGS         += $(cflags-y)
 CFLAGS         += $(cflags-y) \
                        -D"VMLINUX_LOAD_ADDRESS=$(load-y)"
diff --git a/include/asm-mips/page.h b/include/asm-mips/page.h
index e3301e5..b92dd8c 100644
--- a/include/asm-mips/page.h
+++ b/include/asm-mips/page.h
@@ -142,7 +142,7 @@ typedef struct { unsigned long pgprot; } pgprot_t;
 /*
  * __pa()/__va() should be used only during mem init.
  */
-#ifdef CONFIG_64BIT
+#if defined(CONFIG_64BIT) && !defined(CONFIG_BUILD_ELF64)
 #define __pa(x)                                                                
\
 ({                                                                     \
     unsigned long __x = (unsigned long)(x);                            \
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to