On 10/2/15, Laura Abbott <labb...@redhat.com> wrote: > Hi, > > We received a report (https://bugzilla.redhat.com/show_bug.cgi?id=1267395) > of bad assembly > when compiling on powerpc with little endian > > [labbott@labbott-redhat-machine linux_upstream]$ make ARCH=powerpc > CROSS_COMPILE=powerpc64-linux-gnu- > CHK include/config/kernel.release > CHK include/generated/uapi/linux/version.h > CHK include/generated/utsrelease.h > CHK include/generated/bounds.h > CHK include/generated/timeconst.h > CHK include/generated/asm-offsets.h > CALL scripts/checksyscalls.sh > CHK include/generated/compile.h > CALL arch/powerpc/kernel/systbl_chk.sh > AS arch/powerpc/kernel/swsusp_asm64.o > arch/powerpc/kernel/swsusp_asm64.S: Assembler messages: > arch/powerpc/kernel/swsusp_asm64.S:188: Error: missing operand > scripts/Makefile.build:294: recipe for target > 'arch/powerpc/kernel/swsusp_asm64.o' failed > make[1]: *** [arch/powerpc/kernel/swsusp_asm64.o] Error 1 > Makefile:941: recipe for target 'arch/powerpc/kernel' failed > make: *** [arch/powerpc/kernel] Error 2 > > This problem started happening after a binutils update: > > [labbott@labbott-redhat-machine linux_upstream]$ powerpc64-linux-gnu-as > --version > GNU assembler version 2.25.1-1.fc22 > Copyright (C) 2014 Free Software Foundation, Inc. > This program is free software; you may redistribute it under the terms of > the GNU General Public License version 3 or later. > This program has absolutely no warranty. > This assembler was configured for a target of `powerpc64-linux-gnu'. > [labbott@labbott-redhat-machine linux_upstream]$ > > After some discussion with the binutils folks, it turns out that the tlbie > instruction actually requires another operand and binutils was updated to > check for this https://sourceware.org/ml/binutils/2015-05/msg00133.html . > > The code sequence in arch/powerpc/include/asm/ppc_asm.h now needs to be > updated: > > #if !defined(CONFIG_4xx) && !defined(CONFIG_8xx) > #define tlbia \ > li r4,1024; \ > mtctr r4; \ > lis r4,KERNELBASE@h; \ > 0: tlbie r4; \ > addi r4,r4,0x1000; \ > bdnz 0b > #endif > > I don't know enough ppc assembly to properly fix this but I can test.
Could you please test the patch attached? > > Thanks, > Laura > > _______________________________________________ > Linuxppc-dev mailing list > linuxppc-...@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev
diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h index dd0fc18..240557a 100644 --- a/arch/powerpc/include/asm/ppc_asm.h +++ b/arch/powerpc/include/asm/ppc_asm.h @@ -445,7 +445,7 @@ END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,945) li r4,1024; \ mtctr r4; \ lis r4,KERNELBASE@h; \ -0: tlbie r4; \ +0: tlbie r4, 0; \ addi r4,r4,0x1000; \ bdnz 0b #endif