linux-mips
[Top] [All Lists]

Re: [PATCH]: Remove CONFIG_BUILD_ELF64 entirely

To: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Subject: Re: [PATCH]: Remove CONFIG_BUILD_ELF64 entirely
From: Kumba <kumba@gentoo.org>
Date: Sun, 25 Mar 2007 14:33:07 -0400
Cc: linux-mips@linux-mips.org, ths@networkno.de, ralf@linux-mips.org
In-reply-to: <20070326.020705.63742150.anemo@mba.ocn.ne.jp>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <46062400.8080307@gentoo.org> <20070326.011000.75185255.anemo@mba.ocn.ne.jp> <4606AA74.3070907@gentoo.org> <20070326.020705.63742150.anemo@mba.ocn.ne.jp>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Thunderbird 2.0b2 (Windows/20070116)
Atsushi Nemoto wrote:
On Sun, 25 Mar 2007 12:59:32 -0400, Kumba <kumba@gentoo.org> wrote:
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.

Thanks, good news!

And Ralf's number shows that we can use -msym32 even for IP27.
Another good news.

Actually, I just realized I didn't rehash my dhcpd, so it booted the wrong kernel. A kernel built with this patchset won't boot without the following change in include/asm-mips/stackframe.h:

--- include/asm-mips/stackframe.h.orig  2007-03-25 14:22:04.000000000 -0400
+++ include/asm-mips/stackframe.h       2007-03-25 14:22:21.000000000 -0400
@@ -70,7 +70,7 @@
 #else
                MFC0    k0, CP0_CONTEXT
 #endif
-#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
+#if defined(CONFIG_32BIT) || !defined(KBUILD_64BIT_SYM32)
                lui     k1, %hi(kernelsp)
 #else
                lui     k1, %highest(kernelsp)
@@ -95,7 +95,7 @@
                .endm
 #else
                .macro  get_saved_sp    /* Uniprocessor variation */
-#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
+#if defined(CONFIG_32BIT) || !defined(KBUILD_64BIT_SYM32)
                lui     k1, %hi(kernelsp)
 #else
                lui     k1, %highest(kernelsp)




You'll just get a silent hang after ARCS jumps into the kernel. My guess is these systems need the extra asm commands. Perhaps the use of CONFIG_32BIT is incorrect?

Maybe we should use the older form instead, with appropriate change?

--- include/asm-mips/stackframe.h.orig  2007-03-25 14:22:04.000000000 -0400
+++ include/asm-mips/stackframe.h.2     2007-03-25 14:30:01.000000000 -0400
@@ -70,14 +70,14 @@
 #else
                MFC0    k0, CP0_CONTEXT
 #endif
-#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
-               lui     k1, %hi(kernelsp)
-#else
+#if defined(CONFIG_64BIT) || defined(KBUILD_64BIT_SYM32)
                lui     k1, %highest(kernelsp)
                daddiu  k1, %higher(kernelsp)
                dsll    k1, 16
                daddiu  k1, %hi(kernelsp)
                dsll    k1, 16
+#else
+               lui     k1, %hi(kernelsp)
 #endif
                LONG_SRL        k0, PTEBASE_SHIFT
                LONG_ADDU       k1, k0
@@ -95,14 +95,14 @@
                .endm
 #else
                .macro  get_saved_sp    /* Uniprocessor variation */
-#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
-               lui     k1, %hi(kernelsp)
-#else
+#if defined(CONFIG_64BIT) || defined(KBUILD_64BIT_SYM32)
                lui     k1, %highest(kernelsp)
                daddiu  k1, %higher(kernelsp)
                dsll    k1, k1, 16
                daddiu  k1, %hi(kernelsp)
                dsll    k1, k1, 16
+#else
+               lui     k1, %hi(kernelsp)
 #endif
                LONG_L  k1, %lo(kernelsp)(k1)
                .endm



--Kumba

--
Gentoo/MIPS Team Lead

"Such is oft the course of deeds that move the wheels of the world: small hands do them because they must, while the eyes of the great are elsewhere." --Elrond

<Prev in Thread] Current Thread [Next in Thread>