Re: [PATCH 15/19] csky: Build infrastructure

From: Arnd Bergmann
Date: Wed Mar 28 2018 - 03:40:56 EST


On Wed, Mar 28, 2018 at 5:49 AM, Guo Ren <ren_guo@xxxxxxxxx> wrote:
> Hi Arnd,
>
> On Tue, Mar 27, 2018 at 09:38:56AM +0200, Arnd Bergmann wrote:
>> Usually the way gcc handles this, either each CPU is a strict superset
>> of another
>> one, so you just need to specify the one with the smallest instruction set,
>> or you have an option like -mcpu=generic that produces the common subset.
>>
> ck807 ck810 ck860 are diffrent architecture, so they can not be strict
> superset and there is no option like '-mcpu=generic' in our gcc and
> binutils.
>
> I know you want one vmlinux which could run on all ck807 ck810 ck860 with
> different dts-setting. But now, may I keep current design for abiv1&abiv2?
>
> In abiv3, we will take your advice seriously.

Ok, thanks for the clarification. Obviously if they are mutually incompatible,
there is no point in using a common kernel, so your current version is
absolutely fine, and this is similar to how we cannot have a common kernel
between ARMv5, ARMv7-A and ARMv7-M, which are all incompatible
at the kernel level.

One more question for my understanding: Are the three types of ck8xx
CPUs mutually incompatible in user space as well, or are the differences
only for the kernel? For the ARM example, ARMv5 and ARMv7
fundamentally require separate kernels, but both can run user space
programs built for ARMv5.

Arnd