Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Jun 2012 22:21:30 -0700
From:      Tim Kientzle <kientzle@freebsd.org>
To:        arm@freebsd.org
Subject:   Naming mess...
Message-ID:  <FB2E340B-34DD-4CBC-B539-6996E79F37E3@freebsd.org>

next in thread | raw e-mail | index | archive | help
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).

In the process, I've uncovered the following confusing bit of naming:

__ARM_ARCH_6__
_ARM_ARCH_6
ARM_ARCH_6

The above are three symbols defined in different parts
of the code with entirely different meanings.  The
pattern extends in the obvious way.

After some tracing, I figured out what they mean today:

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

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

  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.

Here's what I would like to do:

  * The first is a given and we should leave it alone.  The patches I'm =
cleaning up make this useful in the armv6 tree.

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

  * 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.)

Cheers,

Tim

[0] This page has a nice table: =
https://wiki.edubuntu.org/ARM/Thumb2PortingHowto




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FB2E340B-34DD-4CBC-B539-6996E79F37E3>