armv6 tree vs. buildkernel

Tim Kientzle kientzle at freebsd.org
Sun Jun 24 00:04:49 UTC 2012


On Jun 23, 2012, at 3:17 PM, Warner Losh wrote:
> 
> 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 :).

Ah, yes.  Of course.  That's the other piece I was missing.

I found a list of the standard defines for GCC; I'll compare this to the current
headers and see if I can fix up any mismatches.  At a cursory glance, it looks like
we're pretty close already.

BTW, I like the way the Chromium folks handled these:

http://www.mail-archive.com/v8-dev@googlegroups.com/msg11102.html

That's a lot clearer than the _ARM_ARCH_6, etc, that we're
currently defining (apparently for the same purpose) in
sys/arm/includes/asm.h.

The current xdev arm/arm GCC seems to default to ARMv4:
$ arm-freebsd-gcc -E -dM /tmp/foo.h  | grep -i arm
#define __ARMEL__ 1
#define __ARM_ARCH_4__ 1
#define __arm__ 1

I'll try your patches; I presume they support an arm/armv6 xdev that defaults to ARMv6.


>> 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

Thanks.  That clarifies a lot.

What is the relation between our ARCH and CPUTYPE and GCC's -march and -mcpu options?  Based on the above, it looks like our ARM CPUTYPE should map to GCC's -march:

http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html


Tim



More information about the freebsd-arm mailing list