diff mbox

[v2,03/11] ARM: hwcaps: use shifts instead of hardcoded constants

Message ID 1307536233-30089-4-git-send-email-will.deacon@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Will Deacon June 8, 2011, 12:30 p.m. UTC
The HWCAP numbers are defined as constants, each one being a power of 2.
This has become slightly unwieldy now that we have reached 32k.

This patch changes the HWCAP defines to use (1 << n) instead of coding
the constant directly. The values remain unchanged.

Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 arch/arm/include/asm/hwcap.h |   32 ++++++++++++++++----------------
 1 files changed, 16 insertions(+), 16 deletions(-)

Comments

Sergei Shtylyov June 13, 2011, 1:55 p.m. UTC | #1
Hello.

On 08-06-2011 16:30, Will Deacon wrote:

> The HWCAP numbers are defined as constants, each one being a power of 2.
> This has become slightly unwieldy now that we have reached 32k.

> This patch changes the HWCAP defines to use (1<<  n) instead of coding
> the constant directly. The values remain unchanged.

    Perhaps it's better to use BIT(n) macro instead?

> Signed-off-by: Will Deacon <will.deacon@arm.com>

WBR, Sergei
Will Deacon June 13, 2011, 2:10 p.m. UTC | #2
Sergei,

On Mon, Jun 13, 2011 at 02:55:16PM +0100, Sergei Shtylyov wrote:
> Hello.
> 
> On 08-06-2011 16:30, Will Deacon wrote:
> 
> > The HWCAP numbers are defined as constants, each one being a power of 2.
> > This has become slightly unwieldy now that we have reached 32k.
> 
> > This patch changes the HWCAP defines to use (1<<  n) instead of coding
> > the constant directly. The values remain unchanged.
> 
>     Perhaps it's better to use BIT(n) macro instead?

That has the downside of breaking userspace, unless we export linux/bitops.h
and remove the __KERNEL__ guards around the BIT macro.

Will
Russell King - ARM Linux June 13, 2011, 2:22 p.m. UTC | #3
On Mon, Jun 13, 2011 at 03:10:13PM +0100, Will Deacon wrote:
> Sergei,
> 
> On Mon, Jun 13, 2011 at 02:55:16PM +0100, Sergei Shtylyov wrote:
> > Hello.
> > 
> > On 08-06-2011 16:30, Will Deacon wrote:
> > 
> > > The HWCAP numbers are defined as constants, each one being a power of 2.
> > > This has become slightly unwieldy now that we have reached 32k.
> > 
> > > This patch changes the HWCAP defines to use (1<<  n) instead of coding
> > > the constant directly. The values remain unchanged.
> > 
> >     Perhaps it's better to use BIT(n) macro instead?
> 
> That has the downside of breaking userspace, unless we export linux/bitops.h
> and remove the __KERNEL__ guards around the BIT macro.

And potentially break userspace programs which also have a BIT() macro.
No, we need to keep using plain C for exported definitions.
diff mbox

Patch

diff --git a/arch/arm/include/asm/hwcap.h b/arch/arm/include/asm/hwcap.h
index c1062c3..81512db 100644
--- a/arch/arm/include/asm/hwcap.h
+++ b/arch/arm/include/asm/hwcap.h
@@ -4,22 +4,22 @@ 
 /*
  * HWCAP flags - for elf_hwcap (in kernel) and AT_HWCAP
  */
-#define HWCAP_SWP	1
-#define HWCAP_HALF	2
-#define HWCAP_THUMB	4
-#define HWCAP_26BIT	8	/* Play it safe */
-#define HWCAP_FAST_MULT	16
-#define HWCAP_FPA	32
-#define HWCAP_VFP	64
-#define HWCAP_EDSP	128
-#define HWCAP_JAVA	256
-#define HWCAP_IWMMXT	512
-#define HWCAP_CRUNCH	1024
-#define HWCAP_THUMBEE	2048
-#define HWCAP_NEON	4096
-#define HWCAP_VFPv3	8192
-#define HWCAP_VFPv3D16	16384
-#define HWCAP_TLS	32768
+#define HWCAP_SWP	(1 << 0)
+#define HWCAP_HALF	(1 << 1)
+#define HWCAP_THUMB	(1 << 2)
+#define HWCAP_26BIT	(1 << 3)	/* Play it safe */
+#define HWCAP_FAST_MULT	(1 << 4)
+#define HWCAP_FPA	(1 << 5)
+#define HWCAP_VFP	(1 << 6)
+#define HWCAP_EDSP	(1 << 7)
+#define HWCAP_JAVA	(1 << 8)
+#define HWCAP_IWMMXT	(1 << 9)
+#define HWCAP_CRUNCH	(1 << 10)
+#define HWCAP_THUMBEE	(1 << 11)
+#define HWCAP_NEON	(1 << 12)
+#define HWCAP_VFPv3	(1 << 13)
+#define HWCAP_VFPv3D16	(1 << 14)
+#define HWCAP_TLS	(1 << 15)
 
 #if defined(__KERNEL__) && !defined(__ASSEMBLY__)
 /*