Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jun 2012 16:31:36 -0600
From:      Warner Losh <wlosh@bsdimp.com>
To:        Ian Lepore <freebsd@damnhippie.dyndns.org>
Cc:        arm@freebsd.org
Subject:   Re: Naming mess...
Message-ID:  <3AB368CC-BE8B-4058-A342-763B8C073800@bsdimp.com>
In-Reply-To: <1340921715.1110.100.camel@revolution.hippie.lan>
References:  <FB2E340B-34DD-4CBC-B539-6996E79F37E3@freebsd.org> <1340921715.1110.100.camel@revolution.hippie.lan>

next in thread | previous in thread | raw e-mail | index | archive | help

On Jun 28, 2012, at 4:15 PM, Ian Lepore wrote:

> On Tue, 2012-06-26 at 22:21 -0700, Tim Kientzle wrote:
>> I've been building on Warner's ARMv6 cleanup patches and
>> have them almost ready to commit to the armv6 tree (including
>> the necessary configuration glue for GCC to actually default
>> properly).
>>=20
>> In the process, I've uncovered the following confusing bit of naming:
>>=20
>> __ARM_ARCH_6__
>> _ARM_ARCH_6
>> ARM_ARCH_6
>>=20
>> The above are three symbols defined in different parts
>> of the code with entirely different meanings.  The
>> pattern extends in the obvious way.
>>=20
>> After some tracing, I figured out what they mean today:
>>=20
>>  __ARM_ARCH_6__ is defined by GCC if it is currently targeting a =
processor that is exactly ARMv6.  Two such symbols are never defined at =
the same time.  The patches I'm working on arrange for this to be =
properly set in the armv6 builds.[0]
>>=20
>>  _ARM_ARCH_6 is defined in asm.h (and has been redefined elsewhere, =
but I'm removing those) to indicate that the currently targeted =
processor is _at_least_ ARMv6.  Several such macros can be defined at =
the same time.  These are more useful in practice than the GCC symbols.  =
Unfortunately, besides the poor naming, defining these symbols in asm.h =
means they cannot be used in C code.
>>=20
>>  ARM_ARCH_6 is used within the kernel source to indicate that support =
routines should be included for this class of processor.  Multiple such =
symbols can be defined at the same time if you're building a kernel with =
support for multiple CPUs.
>>=20
>> Here's what I would like to do:
>>=20
>>  * The first is a given and we should leave it alone.  The patches =
I'm cleaning up make this useful in the armv6 tree.
>>=20
>>  * The second I would like to move out of asm.h so it can be used in =
C code.  I would like to rename it to _HAVE_ARMv6_INSTRUCTIONS, which I =
think is clearer.  I have renamed it in my patches but not yet moved it =
to another header.  Suggestions appreciated.
>>=20
>> "NEED_ARM_ARCH_6_SUPPORT" * Someday, I would like to rename the third =
one, though I don't have a concrete proposal yet.  =
("NEED_ARM_ARCH_6_SUPPORT" is expressive but wordy; better suggestions =
appreciated.)
>>=20
>> Cheers,
>>=20
>> Tim
>>=20
>> [0] This page has a nice table: =
https://wiki.edubuntu.org/ARM/Thumb2PortingHowto
>>=20
>=20
> I'm not working with armv6 stuff yet, but I like all of what you
> propose.  I can't help but note that NEED_ARM_ARCH_6_SUPPORT is =
actually
> shorter than _HAVE_ARMv6_INSTRUCTIONS.  If it's just too wordy, maybe
> the "NEED_" part could be left off. =20

#define ARM_ARCH 6

#if ARM_ARCH >=3D 6
...
#endif

Might not be the worst idea...

Warner=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3AB368CC-BE8B-4058-A342-763B8C073800>