lkml.org 
[lkml]   [2017]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.9 10/52] powerpc: Fix compiling a BE kernel with a powerpc64le toolchain
    Date
    From: Nicholas Piggin <npiggin@gmail.com>

    [ Upstream commit 4dc831aa88132f835cefe876aa0206977c4d7710 ]

    GCC can compile with either endian, but the default ABI version is set
    based on the default endianness of the toolchain. Alan Modra says:

    you need both -mbig and -mabi=elfv1 to make a powerpc64le gcc
    generate powerpc64 code

    The opposite is true for powerpc64 when generating -mlittle it
    requires -mabi=elfv2 to generate v2 ABI, which we were already doing.

    This change adds ABI annotations together with endianness for all cases,
    LE and BE. This fixes the case of building a BE kernel with a toolchain
    that is LE by default.

    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Tested-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    ---
    arch/powerpc/Makefile | 11 ++++++++++-
    1 file changed, 10 insertions(+), 1 deletion(-)

    diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
    index 617dece67924..a60c9c6e5cc1 100644
    --- a/arch/powerpc/Makefile
    +++ b/arch/powerpc/Makefile
    @@ -72,8 +72,15 @@ GNUTARGET := powerpc
    MULTIPLEWORD := -mmultiple
    endif

    -cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian)
    +ifdef CONFIG_PPC64
    +cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1)
    +cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mcall-aixdesc)
    +aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1)
    +aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mabi=elfv2
    +endif
    +
    cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian
    +cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian)
    ifneq ($(cc-name),clang)
    cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mno-strict-align
    endif
    @@ -113,7 +120,9 @@ ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y)
    CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2,$(call cc-option,-mcall-aixdesc))
    AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2)
    else
    +CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
    CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcall-aixdesc)
    +AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
    endif
    CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,$(call cc-option,-mminimal-toc))
    CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions)
    --
    2.11.0
    \
     
     \ /
      Last update: 2017-11-29 18:47    [W:2.520 / U:0.396 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site