Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit adff90a9 authored by Franck Bui-Huu's avatar Franck Bui-Huu Committed by Ralf Baechle
Browse files

[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: default avatarFranck Bui-Huu <fbuihuu@gmail.com>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 8c67316e
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -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
+20 −3
Original line number Diff line number Diff line
@@ -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)"
+1 −1
Original line number Diff line number Diff line
@@ -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);				\