[Top] [All Lists]

[PATCH] RBTX4927: linux-2.6.24-rc4 hang on boot

Subject: [PATCH] RBTX4927: linux-2.6.24-rc4 hang on boot
From: Frank Rowand <>
Date: Tue, 11 Dec 2007 10:16:27 -0500
Original-recipient: rfc822;
In linux-2.6.24-rc4 the Toshiba RBTX4927 hangs on boot.

The cause is that plat_time_init() from arch/mips/tx4927/common/tx4927_setup.c
does not override the __weak plat_time_init() from arch/mips/kernel/time.c.
This is due to a compiler bug in gcc 4.1.1.  The bug is reported to not exist
in earlier versions of gcc, and to be fixed in 4.1.2.  The problem is that
the __weak plat_time_init() is empty and thus gets optimized out of
existence (thus the linker is never given the option to replace the
__weak function).

For more info on the gcc bug see

The attached patch is one workaround.  Another possible workaround
would be to change the __weak plat_time_init() to be a non-empty

Signed-off-by: Frank Rowand <>

 arch/mips/kernel/Makefile |    4       4 +     0 -     0 !
 1 files changed, 4 insertions(+)

Index: linux-2.6.24-rc4/arch/mips/kernel/Makefile
--- linux-2.6.24-rc4.orig/arch/mips/kernel/Makefile
+++ linux-2.6.24-rc4/arch/mips/kernel/Makefile
@@ -83,6 +83,10 @@ obj-$(CONFIG_EARLY_PRINTK)   += early_prin
 CFLAGS_cpu-bugs64.o    = $(shell if $(CC) $(KBUILD_CFLAGS) -Wa,-mdaddi -c -o 
/dev/null -xc /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi)
+# workaround for,
+# which impacts plat_time_init() for tx4927, gcc 4.1.1
+CFLAGS_time.o                  += -fno-unit-at-a-time
 obj-$(CONFIG_HAVE_STD_PC_SERIAL_PORT)  += 8250-platform.o
 EXTRA_CFLAGS += -Werror

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