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>