From owner-freebsd-arm@FreeBSD.ORG Wed Jun 27 05:21:32 2012 Return-Path: Delivered-To: arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D97661065670 for ; Wed, 27 Jun 2012 05:21:32 +0000 (UTC) (envelope-from kientzle@freebsd.org) Received: from monday.kientzle.com (99-115-135-74.uvs.sntcca.sbcglobal.net [99.115.135.74]) by mx1.freebsd.org (Postfix) with ESMTP id 60B8C8FC08 for ; Wed, 27 Jun 2012 05:21:32 +0000 (UTC) Received: (from root@localhost) by monday.kientzle.com (8.14.4/8.14.4) id q5R5LV5w040673 for arm@freebsd.org; Wed, 27 Jun 2012 05:21:31 GMT (envelope-from kientzle@freebsd.org) Received: from [192.168.2.143] (CiscoE3000 [192.168.1.65]) by kientzle.com with SMTP id yeuhp7kvpqjp8ka8kev7ij2qu2; for arm@freebsd.org; Wed, 27 Jun 2012 05:21:31 +0000 (UTC) (envelope-from kientzle@freebsd.org) From: Tim Kientzle Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Date: Tue, 26 Jun 2012 22:21:30 -0700 Message-Id: To: arm@freebsd.org Mime-Version: 1.0 (Apple Message framework v1278) X-Mailer: Apple Mail (2.1278) Cc: Subject: Naming mess... X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the StrongARM Processor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jun 2012 05:21:32 -0000 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