aboutsummaryrefslogtreecommitdiff
path: root/init/main.c
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2007-05-22 23:50:21 +0200
committerAdrian Bunk <bunk@stusta.de>2007-05-22 23:50:21 +0200
commit4eedb20374aadf2e4c8781a47a349b8897a43074 (patch)
treea9728c77c2812a62fd6ad10b51d1a3a28cd7bcc7 /init/main.c
parentfae1f6d365ea6ca7b736291970a1aaf56f8e3ed7 (diff)
gcc-4.1.0 is bust
Keith says Compiling 2.6.19-rc6 with gcc version 4.1.0 (SUSE Linux), wait_hpet_tick is optimized away to a never ending loop and the kernel hangs on boot in timer setup. 0000001a <wait_hpet_tick>: 1a: 55 push %ebp 1b: 89 e5 mov %esp,%ebp 1d: eb fe jmp 1d <wait_hpet_tick+0x3> This is not a problem with gcc 3.3.5. Adding barrier() calls to wait_hpet_tick does not help, making the variables volatile does. And the consensus is that gcc-4.1.0 is busted. Adrian Bunk: Changed from a #warning to an #error for 2.6.16. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Adrian Bunk <bunk@stusta.de>
Diffstat (limited to 'init/main.c')
-rw-r--r--init/main.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/init/main.c b/init/main.c
index 5edd3013d81..847397be23a 100644
--- a/init/main.c
+++ b/init/main.c
@@ -71,6 +71,10 @@
#error Sorry, your GCC is too old. It builds incorrect kernels.
#endif
+#if __GNUC__ == 4 && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 0
+#error gcc-4.1.0 is known to miscompile the kernel. A different compiler version is recommended.
+#endif
+
static int init(void *);
extern void init_IRQ(void);