On Sun, Aug 21, 2011 at 7:54 PM, Nicolas Pitre <nicolas.pi...@linaro.org> wrote:
> On Sun, 21 Aug 2011, John Rigby wrote:
>
>> I'm having trouble building the Thumb2 kernel on, I actually believe
>> this same code worked some time ago before a toolchain update.  There
>> are actually two problems described below.  I get past the first with
>> a config change but don't know how to fix the second one.
>>
> [...]
>>   AS      arch/arm/boot/compressed/head.o
>> arch/arm/boot/compressed/head.S: Assembler messages:
>> arch/arm/boot/compressed/head.S:127: Error: selected processor does
>> not support requested special purpose register -- `mrs r2,cpsr'
>> arch/arm/boot/compressed/head.S:134: Error: selected processor does
>> not support requested special purpose register -- `mrs r2,cpsr'
>> arch/arm/boot/compressed/head.S:136: Error: selected processor does
>> not support requested special purpose register -- `msr cpsr_c,r2'
>> make[2]: *** [arch/arm/boot/compressed/head.o] Error 1
>> make[1]: *** [arch/arm/boot/compressed/vmlinux] Error 2
>> make: *** [uImage] Error 2
>>
>> Here is my gcc version:
>>
>> $ arm-linux-gnueabi-gcc --version
>> arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.6.1-5ubuntu2~ppa1) 4.6.1
>> Copyright (C) 2011 Free Software Foundation, Inc.
>> This is free software; see the source for copying conditions.  There is NO
>> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>>
>> And as version:
>> GNU assembler (GNU Binutils for Ubuntu) 2.21.52.20110707
>> Copyright 2011 Free Software Foundation, Inc.
>> This program is free software; you may redistribute it under the terms of
>> the GNU General Public License version 3 or later.
>> This program has absolutely no warranty.
>> This assembler was configured for a target of `arm-linux-gnueabi'.
>
> Looks to me like your assembler is broken, or gcc is not properly
> telling it about the actual architecture in use.
>
> To confirm, please try this:
>
>        echo -e ".arch armv7-a\n.thumb\nmrs r2, cpsr" | \
>        arm-linux-gnueabi-as - -o /dev/null
>
> If that works then your assembler is fine.  In that case the following
> should fail:
>
>        echo -e ".thumb\nmrs r2, cpsr" | \
>        arm-linux-gnueabi-gcc -march=armv7-a -x assembler -o /dev/null -c -
>
> If for some reasons this works too, then the kernel build might be
> wrong.  In that case, see the output of:
>
>        make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- V=1 \
>        arch/arm/boot/compressed/head.o
>
> I have:
> arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.5.2-8ubuntu3) 4.5.2
> GNU assembler (GNU Binutils for Ubuntu) 2.21.0.20110327
> And that works for me just fine.
>
>
Thanks for the info, just before reading your response I found this
problem in GNU assembler when you say -march=all:

http://sourceware.org/bugzilla/show_bug.cgi?id=12698

I have a workaround now by setting in -march=armv7-a in
arch/arm/boot/compressed/Makefile instead of -march=all.

Meanwhile Ricardo is working on a fix to binutils in a ppa.

--john

_______________________________________________
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev

Reply via email to