Steve Langasek <[EMAIL PROTECTED]> writes: > On Sun, Nov 05, 2006 at 01:56:28PM +0100, maximilian attems wrote: >> {standard input}:372: Error: macro requires $at register while noat in effect >> make[5]: *** [arch/alpha/kernel/core_cia.o] Error 1 >> make[4]: *** [arch/alpha/kernel] Error 2 > > Taking a look at the assembler output for core_cia, this is due to use of > the ldbu, ldwu, stb, and stw instructions in asm-alpha/compiler.h, which are > instructions specific to ev56 and above. They are also guarded in the > source by an #if !defined(__alpha_bwx__). It looks like the difference is > in the assembler between gcc-4.0 and gcc-4.1; specifically, gcc-4.1 emits a > '.arch ev5' directive, where gcc-4.0 does not.
I made a patch against gcc to suppress gcc outputting .arch directives that don't do anything useful except triggering this error, and it went in in 4.1.1ds2-17. Unfortunately, I thought an .ev4 directive would be the problem, while it seems to be .ev5. This updated patch instead of alpha-no-ev4-directive.patch should help: --- gcc/config/alpha/alpha.c.orig 2006-11-06 09:59:12.000000000 +0100 +++ gcc/config/alpha/alpha.c 2006-11-06 09:59:06.000000000 +0100 @@ -9353,7 +9353,7 @@ fputs ("\t.set nomacro\n", asm_out_file); if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) { - const char *arch; + const char *arch = NULL; if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX) arch = "ev6"; @@ -9361,12 +9361,9 @@ arch = "pca56"; else if (TARGET_BWX) arch = "ev56"; - else if (alpha_cpu == PROCESSOR_EV5) - arch = "ev5"; - else - arch = "ev4"; - fprintf (asm_out_file, "\t.arch %s\n", arch); + if (arch) + fprintf (asm_out_file, "\t.arch %s\n", arch); } } #endif > Since the errors from the assembler really indicate that these instructions > are not supported by the ev5 (gcc-4.0 has the same problem assembling the > gcc-4.1 output as gcc-4.1 itself does, due to the .arch ev5 declaration), > and this kernel code hasn't changed recently that I see, it seems to be the > case that ev5 processors are already unsupported by the current kernel in > etch. Given that no one has complained about this to date (at least that > I'm aware of), is it time to explicitly bump the baseline on alpha to ev56 > for etch? I'm not opposed to this, in fact I was planning to suggest this for etch+1. However, this particular problem should be reasonably easy to fix, so if anybody speaks up for ev5, we should give it a try... -- Falk -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]