linux-next: omap2plus_defconfig not building

Dave Martin dave.martin at linaro.org
Fri Nov 26 07:55:01 EST 2010


On Fri, Nov 26, 2010 at 12:38 PM, Catalin Marinas
<catalin.marinas at arm.com> wrote:
> On Fri, 2010-11-26 at 12:28 +0000, Russell King - ARM Linux wrote:
>> On Fri, Nov 26, 2010 at 12:22:15PM -0000, Will Deacon wrote:
>> > Hi Russell,
>> >
>> > > $ arm-linux-as -v -o /dev/null /dev/null
>> > > GNU assembler version 2.19.1 (arm-linux) using BFD version (GNU Binutils) 2.19.1
>> > > $ arm-linux-as -march=armv6 -mfloat-abi=soft -meabi=5 -march=armv7-a -o /dev/null t.s
>> > > $ arm-linux-as -march=armv6 -mfloat-abi=soft -meabi=5 -o /dev/null t.s
>> > > t.s: Assembler messages:
>> > > t.s:1: Error: selected processor does not support `ldrexb r7,[r6]'
>> > >
>> > > So it looks like someone's changed the behaviour of the assembler so it's
>> > > no longer possible to override the -march= argument from the gcc frontend.
>> > >
>> > > Maybe Will can shed some light on this?
>> >
>> > Well we pass -march=armv6 to GCC and -march=v7-a to the assembler using the -Wa
>> > option. This means that the compiler generates a .arch armv6 directive in the .s
>> > file and the assembler barfs.
>> >
>> > Please can you try this patch?
>>
>> We can't do this - we'll end up running ARMv7 code on ARMv6 CPUs.
>
> An alternative would be to add the '.arch armv7-a' in the inline
> assembly in swp_emulate.c. But that's an ugly workaround and you can't
> revert to the previous .arch unless you add another '.arch armv6' at the
> end of the asm (with lots of #ifdef's).

This is an instance of the general problem that while the assembler is
stateful, it's impossible to query most aspects of its state (such as
the target arch) during assembly...

If we just need to remember default settings so we can restore them,
we can add definitions in CFLAGS or headers to achieve this.

If we added, say, -DARM_RESTORE_BASE_ARCH="\".arch <architecture>\""
to the CFLAGS, inline asm could do something like this:

asm(
        ".arch armv7-a"
        [...]
        ARM_RESTORE_BASE_ASCH
);

any help?

Cheers
---Dave



More information about the linux-arm-kernel mailing list