diff mbox

[RFC] powerpc/book3e: Fix CPU feature handling on e5500

Message ID 1302067772-32104-1-git-send-email-galak@kernel.crashing.org (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Kumar Gala April 6, 2011, 5:29 a.m. UTC
The CPU_FTRS_POSSIBLE and CPU_FTRS_ALWAYS defines did not encompass
e5500 CPU features when built for 64-bit.  This causes issues with
cpu_has_feature() as it utilizes the POSSIBLE & ALWAYS defines as part
of its check.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
* I'm concerned if its ok to assume 'enum' can handle a 64-bit mask or not.
  I'm assuming this is the reason that we use a #define on __powerpc64__

 arch/powerpc/include/asm/cputable.h |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Comments

Stephen Rothwell April 6, 2011, 5:41 a.m. UTC | #1
Hi Kumar,

On Wed,  6 Apr 2011 00:29:32 -0500 Kumar Gala <galak@kernel.crashing.org> wrote:
>
> * I'm concerned if its ok to assume 'enum' can handle a 64-bit mask or not.
>   I'm assuming this is the reason that we use a #define on __powerpc64__

enums are *ints* and therefore 32 bit.  gcc can cope, but warns about it
(I think). So we must use the #define if any of the included bits are
above 2^32.
Kumar Gala April 6, 2011, 12:26 p.m. UTC | #2
On Apr 6, 2011, at 12:41 AM, Stephen Rothwell wrote:

> Hi Kumar,
> 
> On Wed,  6 Apr 2011 00:29:32 -0500 Kumar Gala <galak@kernel.crashing.org> wrote:
>> 
>> * I'm concerned if its ok to assume 'enum' can handle a 64-bit mask or not.
>>  I'm assuming this is the reason that we use a #define on __powerpc64__
> 
> enums are *ints* and therefore 32 bit.  gcc can cope, but warns about it
> (I think). So we must use the #define if any of the included bits are
> above 2^32.

Thanks, I'll rework the patch to use #define.

- k
diff mbox

Patch

diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h
index be3cdf9..8200e9d 100644
--- a/arch/powerpc/include/asm/cputable.h
+++ b/arch/powerpc/include/asm/cputable.h
@@ -434,7 +434,7 @@  extern const char *powerpc_base_platform;
 	    CPU_FTR_PURR | CPU_FTR_REAL_LE | CPU_FTR_NO_SLBIE_B)
 #define CPU_FTRS_COMPATIBLE	(CPU_FTR_USE_TB | CPU_FTR_PPCAS_ARCH_V2)
 
-#ifdef __powerpc64__
+#if defined(__powerpc64__) && !defined(CONFIG_PPC_BOOK3E)
 #define CPU_FTRS_POSSIBLE	\
 	    (CPU_FTRS_POWER3 | CPU_FTRS_RS64 | CPU_FTRS_POWER4 |	\
 	    CPU_FTRS_PPC970 | CPU_FTRS_POWER5 | CPU_FTRS_POWER6 |	\
@@ -478,7 +478,7 @@  enum {
 };
 #endif /* __powerpc64__ */
 
-#ifdef __powerpc64__
+#if defined(__powerpc64__) && !defined(CONFIG_PPC_BOOK3E)
 #define CPU_FTRS_ALWAYS		\
 	    (CPU_FTRS_POWER3 & CPU_FTRS_RS64 & CPU_FTRS_POWER4 &	\
 	    CPU_FTRS_PPC970 & CPU_FTRS_POWER5 & CPU_FTRS_POWER6 &	\