Messages in this thread |  | | Date | Sun, 11 Dec 2022 18:32:32 +0100 | From | Pali Rohár <> | Subject | Re: [PATCH v1 5/5] powerpc/64e: Fix build failure with GCC 12 (unrecognized opcode: `wrteei') |
| |
On Monday 11 July 2022 16:19:33 Christophe Leroy wrote: > With GCC 12, corenet64_smp_defconfig leads to the following build errors: > > CC arch/powerpc/kernel/irq.o > {standard input}: Assembler messages: > {standard input}:3616: Error: unrecognized opcode: `wrteei' > {standard input}:5689: Error: unrecognized opcode: `wrteei' > CC arch/powerpc/kernel/pmc.o > {standard input}: Assembler messages: > {standard input}:42: Error: unrecognized opcode: `mfpmr' > {standard input}:53: Error: unrecognized opcode: `mtpmr' > CC arch/powerpc/kernel/io.o > {standard input}: Assembler messages: > {standard input}:376: Error: unrecognized opcode: `mbar' > ... > CC arch/powerpc/mm/nohash/book3e_hugetlbpage.o > {standard input}: Assembler messages: > {standard input}:291: Error: unrecognized opcode: `tlbsx' > {standard input}:482: Error: unrecognized opcode: `tlbwe' > {standard input}:608: Error: unrecognized opcode: `lbarx' > {standard input}:608: Error: unrecognized opcode: `stbcx.' > > -mpcu=powerpc64 cannot be used anymore for book3e, it must be a booke CPU. > > But then we get: > > CC arch/powerpc/lib/xor_vmx.o > cc1: error: AltiVec not supported in this target > > Altivec is not supported with -mcpu=e5500 so don't allow selection > of altivec when e5500 is selected. > > Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> > --- > arch/powerpc/Makefile | 8 +------- > arch/powerpc/platforms/Kconfig.cputype | 8 ++++---- > 2 files changed, 5 insertions(+), 11 deletions(-) > > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile > index d54e1fe03551..02742facf895 100644 > --- a/arch/powerpc/Makefile > +++ b/arch/powerpc/Makefile > @@ -168,13 +168,7 @@ endif > CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU)) > AFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU)) > > -# Altivec option not allowed with e500mc64 in GCC. > -ifdef CONFIG_ALTIVEC > -E5500_CPU := -mcpu=powerpc64 > -else > -E5500_CPU := $(call cc-option,-mcpu=e500mc64,-mcpu=powerpc64) > -endif > -CFLAGS-$(CONFIG_E5500_CPU) += $(E5500_CPU) > +CFLAGS-$(CONFIG_E5500_CPU) += $(call cc-option,-mcpu=e500mc64,-mcpu=powerpc64) > CFLAGS-$(CONFIG_E6500_CPU) += $(call cc-option,-mcpu=e6500,$(E5500_CPU))
Hello! I think that there is an issue. After removal of E5500_CPU variable few line above, it cannot be used in CFLAGS-$(CONFIG_E6500_CPU) assignment, because it is empty.
> > asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1) > diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype > index 3cc8452b8660..5185d942b455 100644 > --- a/arch/powerpc/platforms/Kconfig.cputype > +++ b/arch/powerpc/platforms/Kconfig.cputype > @@ -126,12 +126,12 @@ choice > > config GENERIC_CPU > bool "Generic (POWER4 and above)" > - depends on PPC64 && !CPU_LITTLE_ENDIAN > - select PPC_64S_HASH_MMU if PPC_BOOK3S_64 > + depends on PPC_BOOK3S_64 && !CPU_LITTLE_ENDIAN > + select PPC_64S_HASH_MMU > > config GENERIC_CPU > bool "Generic (POWER8 and above)" > - depends on PPC64 && CPU_LITTLE_ENDIAN > + depends on PPC_BOOK3S_64 && CPU_LITTLE_ENDIAN > select ARCH_HAS_FAST_MULTIPLIER > select PPC_64S_HASH_MMU > > @@ -358,7 +358,7 @@ config PHYS_64BIT > > config ALTIVEC > bool "AltiVec Support" > - depends on PPC_BOOK3S_32 || PPC_BOOK3S_64 || (PPC_E500MC && PPC64) > + depends on PPC_BOOK3S || (PPC_E500MC && PPC64 && !E5500_CPU) > select PPC_FPU > help > This option enables kernel support for the Altivec extensions to the > -- > 2.36.1 >
|  |