diff options
author | Andrew Morton <akpm@osdl.org> | 2006-12-06 23:39:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 11:39:44 -0500 |
commit | f1a60dbf68061e5a5364cbc723786b355637ffd3 (patch) | |
tree | aa7f94e27e7fe110e2729ef1202b486442d1caa8 | |
parent | a4ed06ad83acc3b7dafc018bc0b27469e787e27d (diff) |
[PATCH] 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. Suse went and shipped
gcc-4.1.0 so we cannot ban it. Add a warning.
Cc: Keith Owens <kaos@ocs.com.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | init/main.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/init/main.c b/init/main.c index 36f608a7cfba..46508300d6b9 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -73,6 +73,10 @@ | |||
73 | #error Sorry, your GCC is too old. It builds incorrect kernels. | 73 | #error Sorry, your GCC is too old. It builds incorrect kernels. |
74 | #endif | 74 | #endif |
75 | 75 | ||
76 | #if __GNUC__ == 4 && __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ == 0 | ||
77 | #warning gcc-4.1.0 is known to miscompile the kernel. A different compiler version is recommended. | ||
78 | #endif | ||
79 | |||
76 | static int init(void *); | 80 | static int init(void *); |
77 | 81 | ||
78 | extern void init_IRQ(void); | 82 | extern void init_IRQ(void); |