Subject: Re: arc build failures in -next due to ARCv2 patch

From: Vineet Gupta <[email-masked]>
Date: Sun, 28 Jun 2015 20:46:19 +0530

On Saturday 27 June 2015 07:46 PM, Guenter Roeck wrote:
> Hi Vineet,
> 
> On 06/27/2015 04:42 AM, Vineet Gupta wrote:
>> hi,
>>
>> Sorry for top posting / html - web client access from home.
> Another Microsoft victim ? That is why I dislike sending e-mail
> from my company account.

Now trying personal email - hopefully this comes out ok.

>> Thx for reporting the issue - I have pushed a fix (also attached) which shd cure
>> it (don't have exactly similar oldish gcc at hand).
> 
> Not that old, really, it just isn't configured for ARCv2. Question is if I need two
> separate compilers or if I can configure it to support both v1 and v2.

The compiler itself can support both - however issue is multilib'ing / libgcc. The
elf32 compiler is multilib'ed - but we've been using the uclibc compiler (with
just the right toggles) to build the kernel as well (to avoid having to use 2
toolchains for kernel / user etc).

long story short - ATM, we need 2 different compilers to build legacy ARCompact,
and newer ARCv2.

>> This slipped thru the cracks as newer gcc for legacy ARCompact can still
>> tolerate the new toggles.
> 
> Something like the following would avoid the ifdef in the Makefile and also check
> if the option
> is supported by the compiler.
> 
> config ARC_NO_LL64
>     default y
>     depends on !ARC_HAS_LL64 && ISA_ARCV2
> 
> ...
> 
> cflags-$(CONFIG_ARC_NO_LL64) += $(call cc-option, -mno-ll64)

OK - we can do a future sweep of makefile to change other such ifdefs.
For now please use a simpler fix.

> 
> 
> Your patch uses ${} instead of $() - does the make command accept/understand that ?

/me slaps myself - I mindlessly applied an existing broken pattern to fix this.
That is now fixed as well 2 other makefile constructs which were broken in similar
way.

> 
>> I will get back to you on Monday about how to go about including support for a
>> newer gcc for ARCv2 build test as well.
> Looking forward to it, though I hope I can just built a toolchain for HS38.
> 
> After applying your patch, I get
> 
> arch/arc/kernel/process.c: In function ‘arch_cpu_idle’:
> arch/arc/kernel/process.c:51:26: error: ‘ARCV2_IRQ_DEF_PRIO’ undeclared (first use
> in this function)
>    const int arg = 0x10 | ARCV2_IRQ_DEF_PRIO;
>                 

Yep, sorry for lousy work, there are bits n pieces moved from our internal 3.18 to
4.1-X for upstreaming - hence the wreckage of transition.

Fixed that and 2 commits pushed after verifying both configs build and boot on
simulator.

Thx,
-Vineet

                      ^
> 
> Thanks,
> Guenter
> 
>> Thx,
>> -Vineet
>> ________________________________________
>> From: Guenter Roeck [[email-masked]]
>> Sent: Saturday, June 27, 2015 5:28 AM
>> To: [email-masked]
>> Cc: Vineet Gupta
>> Subject: arc build failures in -next due to ARCv2 patch
>>
>> Hi,
>>
>> my arc test builds in -next now fail with
>>
>> cc1: error: unrecognized command line option "-mno-ll64"
>> make[2]: *** [scripts/mod/empty.o] Error 1
>> make[1]: *** [scripts/mod] Error 2
>> make[1]: *** Waiting for unfinished jobs....
>> cc1: error: unrecognized command line option "-mno-ll64"
>> make[1]: *** [kernel/bounds.s] Error 1
>>
>> due to commit 'ARCv2: Support for ARCv2 ISA and HS38x cores'.
>>
>> This is with gcc 4.8.3 built from buildroot.
>>
>> Do I now need a new compiler / toolchain to build the kernel ?
>> Any chance to make this change compatible to work with older
>> compilers ?
>>
>> Thanks,
>> Guenter
>>
>