Subject: Re: [patch 6/6] Walnut zImage wrapper

From: Wolfgang Grandegger <[email-masked]>
Date: Mon, 24 Sep 2007 14:20:36 +0200

Josh Boyer wrote:
> On Mon, 24 Sep 2007 09:49:33 +0200
> Wolfgang Grandegger <[email-masked]> wrote:
>> The addition of treeboot-walnut.c breaks compilation of Linux-2.6 for 
>> the lite5200 using the ppc_6xx toolchain of the ELDK 4.1:
>>
>>    MODPOST vmlinux.o
>> WARNING: vmlinux.o(.text+0x14): Section mismatch: reference to 
>> .init.text:prom_init (between '__start' and '__after_mmu_off')
>> WARNING: vmlinux.o(.text+0x28): Section mismatch: reference to 
>> .init.text:early_init (between '__start' and '__after_mmu_off')
>> WARNING: vmlinux.o(.text+0x340c): Section mismatch: reference to 
>> .init.text:machine_init (between 'start_here' and 'set_context')
>> WARNING: vmlinux.o(.text+0x3414): Section mismatch: reference to 
>> .init.text:MMU_init (between 'start_here' and 'set_context')
>> WARNING: vmlinux.o(.text+0x343e): Section mismatch: reference to 
>> .init.text:start_kernel (between 'start_here' and 'set_context')
>> WARNING: vmlinux.o(.text+0x3442): Section mismatch: reference to 
>> .init.text:start_kernel (between 'start_here' and 'set_context')
>>    GEN     .version
>>    CHK     include/linux/compile.h
>>    UPD     include/linux/compile.h
>>    CC      init/version.o
>>    LD      init/built-in.o
>>    LD      vmlinux
>>    SYSMAP  System.map
>>    BOOTAS  arch/powerpc/boot/string.o
>>    BOOTAS  arch/powerpc/boot/crt0.o
>>    BOOTCC  arch/powerpc/boot/stdio.o
>>    BOOTCC  arch/powerpc/boot/main.o
>>    BOOTCC  arch/powerpc/boot/flatdevtree.o
>>    BOOTCC  arch/powerpc/boot/flatdevtree_misc.o
>>    BOOTCC  arch/powerpc/boot/ns16550.o
>>    BOOTCC  arch/powerpc/boot/serial.o
>>    BOOTCC  arch/powerpc/boot/simple_alloc.o
>>    BOOTAS  arch/powerpc/boot/div64.o
>>    BOOTAS  arch/powerpc/boot/util.o
>>    BOOTCC  arch/powerpc/boot/gunzip_util.o
>>    BOOTCC  arch/powerpc/boot/elf_util.o
>>    BOOTCC  arch/powerpc/boot/inffast.o
>>    BOOTCC  arch/powerpc/boot/inflate.o
>>    BOOTCC  arch/powerpc/boot/inftrees.o
>>    BOOTCC  arch/powerpc/boot/devtree.o
>>    BOOTCC  arch/powerpc/boot/oflib.o
>>    BOOTCC  arch/powerpc/boot/ofconsole.o
>>    BOOTCC  arch/powerpc/boot/4xx.o
>>    BOOTCC  arch/powerpc/boot/ebony.o
>>    BOOTCC  arch/powerpc/boot/mv64x60.o
>>    BOOTCC  arch/powerpc/boot/mpsc.o
>>    BOOTCC  arch/powerpc/boot/mv64x60_i2c.o
>>    BOOTCC  arch/powerpc/boot/cuboot.o
>>    BOOTCC  arch/powerpc/boot/bamboo.o
>>    BOOTAR  arch/powerpc/boot/wrapper.a
>>    BOOTCC  arch/powerpc/boot/of.o
>>    BOOTCC  arch/powerpc/boot/cuboot-83xx.o
>>    BOOTCC  arch/powerpc/boot/cuboot-85xx.o
>>    BOOTCC  arch/powerpc/boot/holly.o
>>    BOOTCC  arch/powerpc/boot/cuboot-ebony.o
>>    BOOTCC  arch/powerpc/boot/treeboot-ebony.o
>>    BOOTCC  arch/powerpc/boot/prpmc2800.o
>>    BOOTAS  arch/powerpc/boot/ps3-head.o
>>    BOOTAS  arch/powerpc/boot/ps3-hvcall.o
>>    BOOTCC  arch/powerpc/boot/ps3.o
>>    BOOTCC  arch/powerpc/boot/treeboot-bamboo.o
>>    BOOTCC  arch/powerpc/boot/cuboot-sequoia.o
>>    BOOTCC  arch/powerpc/boot/treeboot-walnut.o
>> {standard input}: Assembler messages:
>> {standard input}:184: Error: Unrecognized opcode: `mfdcr'
>> {standard input}:185: Error: Unrecognized opcode: `mfdcr'
>> {standard input}:186: Error: Unrecognized opcode: `mfdcr'
>> {standard input}:217: Error: Unrecognized opcode: `mtdcr'
>> make[1]: *** [arch/powerpc/boot/treeboot-walnut.o] Error 1
>> make: *** [uImage] Error 2
>>
>> It looks like the ppc_6xx toolchain does not know the opcode above. I 
>> wonder why files for other PowerPC sub-archs like 4xx are compiled with 
>> the wrong compiler. Have I missed something?
> 
> No, you haven't missed anything.  I need a one line patch to fix it.
> Could you try the patch below to make sure it works for you?

It works for me with one typo corrected (see below).

> 
>> And the WARNING above on "Section mismatch" looks strange as well (still 
>> present in 2.6.23-rc7).
> 
> Those warnings should be gone with Paul's latest tree.  (They will
> remain for 2.6.23.)

OK.

> Pass the correct -mcpu option for treeboot-walnut.o to avoid
> unrecognized opcodes.
> 
> Signed-off-by: Josh Boyer <[email-masked]>
> 
> diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
> index c1582b6..8e6d36b 100644
> --- a/arch/powerpc/boot/Makefile
> +++ b/arch/powerpc/boot/Makefile
> @@ -33,6 +33,7 @@ BOOTCFLAGS    += -I$(obj) -I$(srctree)/$(obj)
>  
>  $(obj)/4xx.o: BOOTCFLAGS += -mcpu=440
>  $(obj)/ebony.o: BOOTCFLAGS += -mcpu=440
> +$(obj)/treeboot-walnut.o: BOOTFLAGS += -mcpu=405
                              ^^^^^^^^^ typo, should be BOOTCFLAGS

Thanks.

Wolfgang.