Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Jun 2012 17:04:45 -0700
From:      Tim Kientzle <kientzle@freebsd.org>
To:        Warner Losh <wlosh@bsdimp.com>
Cc:        arm@freebsd.org
Subject:   Re: armv6 tree vs. buildkernel
Message-ID:  <1B8D4502-00FF-4836-9055-FDE4F0E1483F@freebsd.org>
In-Reply-To: <9204F891-C26B-4BED-9866-B31281521683@bsdimp.com>
References:  <3F1A5B5F-0787-41CE-8C77-8B1F9A601172@freebsd.org> <31C8D224-72D4-4BE8-8EC3-29B078C7DAC3@bsdimp.com> <C75EE66B-30CE-48C7-8CC2-5DEC9F9D7F24@freebsd.org> <D0A60CD4-E0CF-4D7B-9E87-22D9A12048D1@bsdimp.com> <0078302D-CC33-4B89-87BE-50C77D4855BE@freebsd.org> <9204F891-C26B-4BED-9866-B31281521683@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Jun 23, 2012, at 3:17 PM, Warner Losh wrote:
>=20
> On Jun 23, 2012, at 3:07 PM, Tim Kientzle wrote:
>=20
>> On Jun 23, 2012, at 12:58 PM, Warner Losh wrote:
>>>=20
>>> On Jun 23, 2012, at 12:58 PM, Tim Kientzle wrote:
>>>> On Jun 23, 2012, at 7:35 AM, Warner Losh wrote:
>>>>>=20
>>>>>> 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
>>>>>=20
>>>>> It can't possibly work very well.  We need to get =
TARGET_ARCH=3Darmv6 working instead of continuing these kludges.
>>>>=20
>>>>=20
>>>> Help get me oriented and I'll start grinding through this.
>>>>=20
>>>> What values of TARGET_ARCH should be supported?
>>>=20
>>> arm, armeb, armv6 (and maybe armv6eb if they make those).
>>=20
>> So do you consider the -DARM_ARCH_6  and -D_ARM_ARCH_6
>> defines to be among these "kluges"?
>=20
> 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=3Darm
>> TARGET_ARCH=3Darmv6
>> TARGET_CPUTYPE=3Darmv7
>=20
> Correct.  This is much the same as if someone wants a nahalem tree on =
x86:
>=20
> TARGET=3Di386
> TARGET_ARCH=3Di386
> TARGET_CPUTYPE=3Dnahalem

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1B8D4502-00FF-4836-9055-FDE4F0E1483F>