From: Ralf Baechle <ralf@linux-mips.org>
To: Kumba <kumba@gentoo.org>
Cc: Atsushi Nemoto <anemo@mba.ocn.ne.jp>,
linux-mips@linux-mips.org, ths@networkno.de
Subject: Re: [PATCH]: Remove CONFIG_BUILD_ELF64 entirely
Date: Sun, 25 Mar 2007 23:19:19 +0100 [thread overview]
Message-ID: <20070325221919.GA12088@linux-mips.org> (raw)
In-Reply-To: <4606AA74.3070907@gentoo.org>
On Sun, Mar 25, 2007 at 12:59:32PM -0400, Kumba wrote:
> Atsushi Nemoto wrote:
> >I can not see why you handle IP22, IP32, Cobalt as so "special".
> >There are many other platforms which supports 64-bit and uses CKSEG0
> >load address (well, actually all 64-bit platforms except for IP27).
>
> Mainly because, to the best of my knowledge, these are the only three
> systems where things get weird with ckseg0 and this specific Kconfig
> option. Afaik with other systems, they don't need weird hacks like
> stuffing 64bit code into 32bit objects to work best (or at all).
>
>
> >So I think Franck's approach, which enables -msym32 and defines
> >KBUILD_64BIT_SYM32 automatically if load-y was CKSEG0, is better. Are
> >there any problem with his patchset?
>
> I missed the other two additions to this patch, which is probably why it
> didn't work :) Taken as a whole, they also boot my O2 now.
Well, how about this solution that solve the whole thing entirely with
Kconfig?
Ralf
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 0253584..6283fd2 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2072,20 +2072,9 @@ 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 KERNEL_LOADS_IN_CKSEG0
+ bool
+ default y if (SYS_SUPPORTS_32BIT_KERNEL || SGI_IP32 || SGI_IP27) && 64BIT
config BINFMT_IRIX
bool "Include IRIX binary compatibility"
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 92bca6a..d31f2d1 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -60,10 +60,10 @@ vmlinux-32 = vmlinux.32
vmlinux-64 = vmlinux
cflags-y += -mabi=64
-ifdef CONFIG_BUILD_ELF64
-cflags-y += $(call cc-option,-mno-explicit-relocs)
-else
+ifdef CONFIG_KERNEL_LOADS_IN_CKSEG0
cflags-y += $(call cc-option,-msym32)
+else
+cflags-y += $(call cc-option,-mno-explicit-relocs)
endif
endif
diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_defconfig
index 4713a13..abb0b48 100644
--- a/arch/mips/configs/bigsur_defconfig
+++ b/arch/mips/configs/bigsur_defconfig
@@ -279,7 +279,7 @@ CONFIG_MMU=y
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
-# CONFIG_BUILD_ELF64 is not set
+CONFIG_KERNEL_LOADS_IN_CKSEG0=y
CONFIG_MIPS32_COMPAT=y
CONFIG_COMPAT=y
CONFIG_SYSVIPC_COMPAT=y
diff --git a/arch/mips/configs/ip27_defconfig b/arch/mips/configs/ip27_defconfig
index 9ddc3ef..ea625b7 100644
--- a/arch/mips/configs/ip27_defconfig
+++ b/arch/mips/configs/ip27_defconfig
@@ -272,7 +272,7 @@ CONFIG_MMU=y
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
-# CONFIG_BUILD_ELF64 is not set
+CONFIG_KERNEL_LOADS_IN_CKSEG0=y
CONFIG_MIPS32_COMPAT=y
CONFIG_COMPAT=y
CONFIG_SYSVIPC_COMPAT=y
diff --git a/arch/mips/configs/ip32_defconfig b/arch/mips/configs/ip32_defconfig
index 8fc1880..d8b8c8f 100644
--- a/arch/mips/configs/ip32_defconfig
+++ b/arch/mips/configs/ip32_defconfig
@@ -252,7 +252,7 @@ CONFIG_MMU=y
#
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=y
-# CONFIG_BUILD_ELF64 is not set
+CONFIG_KERNEL_LOADS_IN_CKSEG0=y
CONFIG_MIPS32_COMPAT=y
CONFIG_COMPAT=y
CONFIG_SYSVIPC_COMPAT=y
diff --git a/arch/mips/configs/ocelot_c_defconfig b/arch/mips/configs/ocelot_c_defconfig
index 82ff6fc..16b4b63 100644
--- a/arch/mips/configs/ocelot_c_defconfig
+++ b/arch/mips/configs/ocelot_c_defconfig
@@ -250,7 +250,7 @@ CONFIG_MMU=y
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
-# CONFIG_BUILD_ELF64 is not set
+CONFIG_KERNEL_LOADS_IN_CKSEG0=y
CONFIG_MIPS32_COMPAT=y
CONFIG_COMPAT=y
CONFIG_SYSVIPC_COMPAT=y
diff --git a/arch/mips/configs/sb1250-swarm_defconfig b/arch/mips/configs/sb1250-swarm_defconfig
index 6c4f09a..0664e3f 100644
--- a/arch/mips/configs/sb1250-swarm_defconfig
+++ b/arch/mips/configs/sb1250-swarm_defconfig
@@ -281,7 +281,7 @@ CONFIG_MMU=y
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
-# CONFIG_BUILD_ELF64 is not set
+CONFIG_KERNEL_LOADS_IN_CKSEG0=y
CONFIG_MIPS32_COMPAT=y
CONFIG_COMPAT=y
CONFIG_SYSVIPC_COMPAT=y
diff --git a/include/asm-mips/page.h b/include/asm-mips/page.h
index d3fbd83..266542a 100644
--- a/include/asm-mips/page.h
+++ b/include/asm-mips/page.h
@@ -149,7 +149,7 @@ typedef struct { unsigned long pgprot; } pgprot_t;
/*
* __pa()/__va() should be used only during mem init.
*/
-#if defined(CONFIG_64BIT) && !defined(CONFIG_BUILD_ELF64)
+#if defined(CONFIG_64BIT) && defined(CONFIG_KERNEL_LOADS_IN_CKSEG0)
#define __pa_page_offset(x) ((unsigned long)(x) < CKSEG0 ? PAGE_OFFSET : CKSEG0)
#else
#define __pa_page_offset(x) PAGE_OFFSET
diff --git a/include/asm-mips/pgtable-64.h b/include/asm-mips/pgtable-64.h
index 49f5a1a..96c8927 100644
--- a/include/asm-mips/pgtable-64.h
+++ b/include/asm-mips/pgtable-64.h
@@ -104,7 +104,7 @@
#define VMALLOC_START MAP_BASE
#define VMALLOC_END \
(VMALLOC_START + PTRS_PER_PGD * PTRS_PER_PMD * PTRS_PER_PTE * PAGE_SIZE)
-#if defined(CONFIG_MODULES) && !defined(CONFIG_BUILD_ELF64) && \
+#if defined(CONFIG_MODULES) && defined(CONFIG_KERNEL_LOADS_IN_CKSEG0) && \
VMALLOC_START != CKSSEG
/* Load modules into 32bit-compatible segment. */
#define MODULE_START CKSSEG
diff --git a/include/asm-mips/stackframe.h b/include/asm-mips/stackframe.h
index 7afa1fd..9ea32c9 100644
--- a/include/asm-mips/stackframe.h
+++ b/include/asm-mips/stackframe.h
@@ -79,7 +79,7 @@
#else
MFC0 k0, CP0_CONTEXT
#endif
-#if defined(CONFIG_BUILD_ELF64) || (defined(CONFIG_64BIT) && __GNUC__ < 4)
+#if !defined(CONFIG_KERNEL_LOADS_IN_CKSEG0) || (defined(CONFIG_64BIT) && __GNUC__ < 4)
lui k1, %highest(kernelsp)
daddiu k1, %higher(kernelsp)
dsll k1, 16
@@ -104,7 +104,7 @@
.endm
#else
.macro get_saved_sp /* Uniprocessor variation */
-#if defined(CONFIG_BUILD_ELF64) || (defined(CONFIG_64BIT) && __GNUC__ < 4)
+#if !defined(CONFIG_KERNEL_LOADS_IN_CKSEG0) || (defined(CONFIG_64BIT) && __GNUC__ < 4)
lui k1, %highest(kernelsp)
daddiu k1, %higher(kernelsp)
dsll k1, k1, 16
next prev parent reply other threads:[~2007-03-25 22:19 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-04 23:18 Building 64 bit kernel on Cobalt Jim Gifford
2007-03-04 23:27 ` Ralf Baechle
2007-03-08 6:11 ` Jim Gifford
2007-03-08 8:46 ` Jim Gifford
2007-03-08 12:48 ` Franck Bui-Huu
2007-03-08 16:11 ` Jim Gifford
2007-03-13 0:57 ` Jim Gifford
2007-03-13 10:38 ` Franck Bui-Huu
2007-03-13 11:53 ` Ralf Baechle
2007-03-18 21:52 ` Jim Gifford
2007-03-19 1:12 ` Atsushi Nemoto
2007-03-19 5:20 ` Jim Gifford
2007-03-19 6:07 ` Atsushi Nemoto
2007-03-19 10:08 ` Franck Bui-Huu
2007-03-19 10:17 ` Franck Bui-Huu
2007-03-21 17:07 ` Atsushi Nemoto
2007-03-21 19:31 ` Franck Bui-Huu
2007-03-23 13:47 ` Kumba
2007-03-23 15:24 ` Atsushi Nemoto
2007-03-24 3:31 ` Kumba
2007-03-24 14:47 ` Atsushi Nemoto
2007-03-24 23:16 ` Thiemo Seufer
2007-03-25 7:25 ` [PATCH]: Remove CONFIG_BUILD_ELF64 entirely Kumba
2007-03-25 14:45 ` Thiemo Seufer
2007-03-26 11:35 ` Maciej W. Rozycki
2007-03-26 11:56 ` Ralf Baechle
2007-03-26 12:09 ` Maciej W. Rozycki
2007-03-26 12:34 ` Ralf Baechle
2007-03-25 16:10 ` Atsushi Nemoto
2007-03-25 16:40 ` Ralf Baechle
2007-03-26 9:14 ` Franck Bui-Huu
2007-03-26 9:42 ` Thiemo Seufer
2007-03-25 16:59 ` Kumba
2007-03-25 17:07 ` Atsushi Nemoto
2007-03-25 18:33 ` Kumba
2007-03-26 10:36 ` Atsushi Nemoto
2007-03-26 13:48 ` Kumba
2007-03-26 14:43 ` Atsushi Nemoto
2007-03-27 0:51 ` Kumba
2007-03-27 14:53 ` Atsushi Nemoto
2007-03-27 17:54 ` Ilya A. Volynets-Evenbakh
2007-03-28 15:14 ` Atsushi Nemoto
2007-03-27 19:01 ` Thiemo Seufer
2007-03-28 13:26 ` Kumba
2007-03-28 15:24 ` Atsushi Nemoto
2007-03-29 1:50 ` Kumba
2007-03-29 14:53 ` Atsushi Nemoto
2007-03-30 6:18 ` Kumba
2007-03-30 2:20 ` Kumba
2007-02-18 20:00 ` IP32 prom crashes due to __pa() funkiness Kumba
2007-03-01 4:33 ` Kumba
2007-03-01 9:39 ` Franck Bui-Huu
2007-03-10 9:41 ` [PATCH], " peter fuerst
2007-03-17 19:52 ` Kumba
2007-03-17 21:48 ` Arnaud Giersch
2007-03-18 2:04 ` Kumba
2007-03-19 13:53 ` Franck Bui-Huu
2007-03-19 14:07 ` Thiemo Seufer
2007-03-19 14:19 ` Franck Bui-Huu
2007-03-19 14:17 ` Franck Bui-Huu
2007-03-19 14:24 ` Kumba
2007-03-19 14:45 ` Thiemo Seufer
2007-03-19 14:46 ` Atsushi Nemoto
2007-03-19 21:35 ` Franck Bui-Huu
2007-03-20 14:10 ` Kumba
2007-03-23 15:12 ` Franck Bui-Huu
[not found] ` <45FC3923.2080207@gentoo.org>
2007-03-18 9:42 ` peter fuerst
2007-03-18 21:26 ` Kumba
2007-03-18 21:37 ` Kumba
2007-03-18 22:44 ` Kumba
2007-03-19 13:57 ` Franck Bui-Huu
2007-03-30 3:01 ` [PATCH]: Remove CONFIG_BUILD_ELF64 entirely Atsushi Nemoto
2007-03-30 5:35 ` Kumba
2007-03-30 6:09 ` Atsushi Nemoto
2007-09-26 2:08 ` CONFIG_BUILD_ELF64 broken on IP32 since 2.6.20 Atsushi Nemoto
2007-09-26 5:59 ` Martin Michlmayr
2007-09-26 6:19 ` Giuseppe Sacco
2007-09-27 0:24 ` Thiemo Seufer
2007-09-26 9:14 ` Franck Bui-Huu
2007-09-26 14:42 ` Atsushi Nemoto
2007-03-25 22:19 ` Ralf Baechle [this message]
2007-03-26 13:25 ` [PATCH]: Remove CONFIG_BUILD_ELF64 entirely Atsushi Nemoto
2007-03-26 13:54 ` Franck Bui-Huu
2007-03-26 14:48 ` Atsushi Nemoto
2007-03-26 15:31 ` Franck Bui-Huu
2007-03-26 15:45 ` Atsushi Nemoto
2007-03-26 16:07 ` Franck Bui-Huu
2007-03-27 3:12 ` Atsushi Nemoto
2007-03-27 8:01 ` Franck Bui-Huu
2007-03-26 15:56 ` Thiemo Seufer
2007-03-26 9:02 ` Franck Bui-Huu
2007-03-25 15:40 ` Building 64 bit kernel on Cobalt Atsushi Nemoto
-- strict thread matches above, loose matches on Subject: below --
2007-09-25 18:13 CONFIG_BUILD_ELF64 broken on IP32 since 2.6.20 Martin Michlmayr
2007-09-25 18:32 ` sknauert
2007-09-25 18:43 ` Martin Michlmayr
2007-09-25 18:56 ` sknauert
2007-09-26 8:03 ` Franck Bui-Huu
2007-09-26 9:14 ` Martin Michlmayr
2007-09-26 9:54 ` Franck Bui-Huu
2007-09-26 10:24 ` Martin Michlmayr
2007-09-26 11:32 ` Maciej W. Rozycki
2007-09-26 13:34 ` Franck Bui-Huu
2007-09-26 13:46 ` Martin Michlmayr
2007-09-26 14:49 ` Maciej W. Rozycki
2007-09-26 15:34 ` Atsushi Nemoto
2007-09-26 15:47 ` Maciej W. Rozycki
2007-09-27 8:11 ` Franck Bui-Huu
2007-09-27 11:10 ` Maciej W. Rozycki
2007-09-27 13:36 ` Ralf Baechle
2007-09-27 13:47 ` Franck Bui-Huu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070325221919.GA12088@linux-mips.org \
--to=ralf@linux-mips.org \
--cc=anemo@mba.ocn.ne.jp \
--cc=kumba@gentoo.org \
--cc=linux-mips@linux-mips.org \
--cc=ths@networkno.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox