armv6 tree vs. buildkernel

Warner Losh wlosh at bsdimp.com
Sat Jun 23 22:17:25 UTC 2012


On Jun 23, 2012, at 3:07 PM, Tim Kientzle wrote:

> 
> On Jun 23, 2012, at 12:58 PM, Warner Losh wrote:
> 
>> 
>> On Jun 23, 2012, at 12:58 PM, Tim Kientzle wrote:
>>> On Jun 23, 2012, at 7:35 AM, Warner Losh wrote:
>>>> 
>>>>> P.S.  How is CPUTYPE/TARGET_CPUTYPE supposed to be inferred for regular "buildworld"?
>>>>> The only option I can find is to set it explicitly in /etc/src.conf
>>>> 
>>>> It can't possibly work very well.  We need to get TARGET_ARCH=armv6 working instead of continuing these kludges.
>>> 
>>> 
>>> Help get me oriented and I'll start grinding through this.
>>> 
>>> What values of TARGET_ARCH should be supported?
>> 
>> arm, armeb, armv6 (and maybe armv6eb if they make those).
> 
> So do you consider the -DARM_ARCH_6  and -D_ARM_ARCH_6
> defines to be among these "kluges"?

Yes.  The compilers built when we're doing armv6 should have them defined.  I believe they are standard.  If not, we should migrate tot he standard defines.  There was some churn in Mips land because of this (some of which I fixed, some of which I caused :).

> How should the C source identify the architecture and
> customize itself?

I'm not sure I understand this question.

> I'm trying to get a clearer picture of how this *should*
> work before I start roto-tilling a lot of code.

Excellent idea.

>>> Right now, there are ARCH values of arm and armeb.
>>> Should there be armv6eb?  armv7?
>> 
>> There should be no armv7, since armv6 means v6 and later.  At some point there will be an arm64, I suppose too.
> 
> So if someone wants an armv7 tree, they should have
>  TARGET=arm
>  TARGET_ARCH=armv6
>  TARGET_CPUTYPE=armv7

Correct.  This is much the same as if someone wants a nahalem tree on x86:

TARGET=i386
TARGET_ARCH=i386
TARGET_CPUTYPE=nahalem

or

TARGET=amd64
TARGET_ARCH=amd64
TARGET_CPUTYPE=nahalem

to pick which base you are compiling against, and then which optimizations you wish to build for.

>>> I'm also unclear on the distinction between make's MACHINE_ARCH
>>> and uname -p; are these supposed to be the same?  If so, shouldn't
>>> make be using a sysctl instead of a hard-coded value?
>> 
>> I thought it already did.  That might not be a bad idea.  MACHINE_ARCH and uname -p should be identical.  If they aren't, that's a bug.
> 
> Ah.  That helps.  (This certainly isn't true in the current
> make source and I can't find where this assumption
> is documented.)

I'm not sure it is.  Note that there's a planned migration to bmake soonish.

>> I posted patches here before to do all (most?) of MACHINE_ARCH=armv6.  Have you tried them on the armv6 branch?  I've not had a chance to port them over yet.
> 
> I've seen some oblique references to those patches but
> haven't tracked them down to study yet.
> 
> Is this r234548 in users/imp?

Yes, that's one of the two intermingled patches.

Warner


More information about the freebsd-arm mailing list