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