On Sun, 25 Mar 2007 14:33:07 -0400, Kumba <email@example.com> wrote:
> 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
> +++ include/asm-mips/stackframe.h 2007-03-25 14:22:21.000000000 -0400
> @@ -70,7 +70,7 @@
> MFC0 k0, CP0_CONTEXT
> -#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
> +#if defined(CONFIG_32BIT) || !defined(KBUILD_64BIT_SYM32)
> lui k1, %hi(kernelsp)
It looks very strange. "lui k1, %hi(kernelsp)" should be enough for
the -msym32 kernel. What is a version of binutils and gcc you are using?
And could you show me disassembled list of handle_int (or some other
rountines using get_saved_sp) of failed kernel?
If you were using gcc 3.x, does this fix work for you?
#if defined(CONFIG_32BIT) || (defined(KBUILD_64BIT_SYM32) && __GNUC__ >= 4)
lui k1, %hi(kernelsp)