[PATCH] powerpc: Fix -mcpu= options for SPE-only compiler

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE2776d

4 messages, 2 authors, 2018-12-29 · open the first message on its own page

[PATCH] powerpc: Fix -mcpu= options for SPE-only compiler

From: Ben Hutchings <hidden>
Date: 2018-12-26 14:35:55

GCC for Debian's "powerpcspe" architecture only supports 32-bit
SPE targets, and using -mcpu=powerpc or -mcpu=powerpc64 is a fatal
error.

* Change the test for a biarch compiler to pass both the -m32 and -m64
  options, so that it doesn't catch 32-bit-only compilers
* Add an ifdef CONFIG_PPC64 around the 64-bit CPU option definitions

Signed-off-by: Ben Hutchings <redacted>
---
 arch/powerpc/Makefile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 488c9edffa58..c2e815863500 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -12,7 +12,7 @@
 # Rewritten by Cort Dougan and Paul Mackerras
 #
 
-HAS_BIARCH	:= $(call cc-option-yn, -m32)
+HAS_BIARCH	:= $(call cc-option-yn, -m32 -m64)
 
 # Set default 32 bits cross compilers for vdso and boot wrapper
 CROSS32_COMPILE ?=
@@ -166,6 +166,7 @@ CFLAGS-$(CONFIG_PPC32)	+= $(call cc-option, $(MULTIPLEWORD))
 
 CFLAGS-$(CONFIG_PPC32)	+= $(call cc-option,-mno-readonly-in-sdata)
 
+ifdef CONFIG_PPC64
 ifdef CONFIG_PPC_BOOK3S_64
 ifdef CONFIG_CPU_LITTLE_ENDIAN
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8
@@ -177,6 +178,7 @@ endif
 else
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
 endif
+endif
 
 ifdef CONFIG_FUNCTION_TRACER
 CC_FLAGS_FTRACE := -pg

Re: [PATCH] powerpc: Fix -mcpu= options for SPE-only compiler

From: Segher Boessenkool <hidden>
Date: 2018-12-26 23:49:02

Hi!

On Wed, Dec 26, 2018 at 02:15:11PM +0000, Ben Hutchings wrote:
GCC for Debian's "powerpcspe" architecture only supports 32-bit
SPE targets, and using -mcpu=powerpc or -mcpu=powerpc64 is a fatal
error.
I don't see where your patch touches -mcpu=powerpc, and I don't see how
it would make a difference either?
quoted hunk
+ifdef CONFIG_PPC64
 ifdef CONFIG_PPC_BOOK3S_64
 ifdef CONFIG_CPU_LITTLE_ENDIAN
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8
@@ -177,6 +178,7 @@ endif
 else
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
 endif
+endif
How can CONFIG_PPC_BOOK3S_64 be true while CONFIG_PPC64 is fals?  That
does not make a lot of sense.


Segher

Re: [PATCH] powerpc: Fix -mcpu= options for SPE-only compiler

From: Ben Hutchings <hidden>
Date: 2018-12-27 02:34:15

On Wed, 2018-12-26 at 17:45 -0600, Segher Boessenkool wrote:
Hi!

On Wed, Dec 26, 2018 at 02:15:11PM +0000, Ben Hutchings wrote:
quoted
GCC for Debian's "powerpcspe" architecture only supports 32-bit
SPE targets, and using -mcpu=powerpc or -mcpu=powerpc64 is a fatal
error.
I don't see where your patch touches -mcpu=powerpc, and I don't see how
it would make a difference either?
Look at the assignments that are conditional on HAS_BIARCH.
quoted
+ifdef CONFIG_PPC64
 ifdef CONFIG_PPC_BOOK3S_64
 ifdef CONFIG_CPU_LITTLE_ENDIAN
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8
@@ -177,6 +178,7 @@ endif
 else
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
 endif
+endif
How can CONFIG_PPC_BOOK3S_64 be true while CONFIG_PPC64 is fals?  That
does not make a lot of sense.
But there is an "else" part here.

Ben.

-- 
Ben Hutchings
Life is what happens to you while you're busy making other plans.
                                                          - John Lennon

Re: [PATCH] powerpc: Fix -mcpu= options for SPE-only compiler

From: Segher Boessenkool <hidden>
Date: 2018-12-29 12:43:29

On Thu, Dec 27, 2018 at 02:32:07AM +0000, Ben Hutchings wrote:
On Wed, 2018-12-26 at 17:45 -0600, Segher Boessenkool wrote:
quoted
Hi!

On Wed, Dec 26, 2018 at 02:15:11PM +0000, Ben Hutchings wrote:
quoted
GCC for Debian's "powerpcspe" architecture only supports 32-bit
SPE targets, and using -mcpu=powerpc or -mcpu=powerpc64 is a fatal
error.
I don't see where your patch touches -mcpu=powerpc, and I don't see how
it would make a difference either?
[ I now see that error fwiw.  Yuck. ]
Look at the assignments that are conditional on HAS_BIARCH.
Sure, you change how HAS_BIARCH is set.  That has more effects than just
not using -mcpu=powerpc (which is fine, but the message is confusing).
quoted
quoted
+ifdef CONFIG_PPC64
 ifdef CONFIG_PPC_BOOK3S_64
 ifdef CONFIG_CPU_LITTLE_ENDIAN
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8
@@ -177,6 +178,7 @@ endif
 else
 CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
 endif
+endif
How can CONFIG_PPC_BOOK3S_64 be true while CONFIG_PPC64 is fals?  That
does not make a lot of sense.
But there is an "else" part here.
Yeah I see.  It would be better to have fewer nested conditionals here
instead of more...


Segher
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help