diff options
author | Ian Munsie <imunsie@au1.ibm.com> | 2013-09-22 22:05:11 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-10-11 01:48:56 -0400 |
commit | d72b08017161ab385d4ae080ea415c9eb7ceef83 (patch) | |
tree | c20ece2f9d78bf9e7d01824aec499713053c7120 /arch/powerpc/Makefile | |
parent | 7df697c81587114ad4847598dd2d6061b73f1a12 (diff) |
powerpc: Add ability to build little endian kernels
This patch allows the kbuild system to successfully compile a kernel
for the little endian PowerPC64 architecture. A subsequent patch
will add the CONFIG_CPU_LITTLE_ENDIAN kernel config option which
must be set to build such a kernel.
If cross compiling, CROSS_COMPILE must point to a suitable toolchain
(compiled for the powerpc64le-linux and powerpcle-linux targets).
Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/Makefile')
-rw-r--r-- | arch/powerpc/Makefile | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index debfa2b1c1de..d3c91bf923b7 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
@@ -65,11 +65,29 @@ endif | |||
65 | 65 | ||
66 | UTS_MACHINE := $(OLDARCH) | 66 | UTS_MACHINE := $(OLDARCH) |
67 | 67 | ||
68 | ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y) | ||
69 | override CC += -mlittle-endian | ||
70 | override AS += -mlittle-endian | ||
71 | override LD += -EL | ||
72 | override CROSS32CC += -mlittle-endian | ||
73 | override CROSS32AS += -mlittle-endian | ||
74 | LDEMULATION := lppc | ||
75 | GNUTARGET := powerpcle | ||
76 | MULTIPLEWORD := -mno-multiple | ||
77 | else | ||
78 | override CC += -mbig-endian | ||
79 | override AS += -mbig-endian | ||
80 | override LD += -EB | ||
81 | LDEMULATION := ppc | ||
82 | GNUTARGET := powerpc | ||
83 | MULTIPLEWORD := -mmultiple | ||
84 | endif | ||
85 | |||
68 | ifeq ($(HAS_BIARCH),y) | 86 | ifeq ($(HAS_BIARCH),y) |
69 | override AS += -a$(CONFIG_WORD_SIZE) | 87 | override AS += -a$(CONFIG_WORD_SIZE) |
70 | override LD += -m elf$(CONFIG_WORD_SIZE)ppc | 88 | override LD += -m elf$(CONFIG_WORD_SIZE)$(LDEMULATION) |
71 | override CC += -m$(CONFIG_WORD_SIZE) | 89 | override CC += -m$(CONFIG_WORD_SIZE) |
72 | override AR := GNUTARGET=elf$(CONFIG_WORD_SIZE)-powerpc $(AR) | 90 | override AR := GNUTARGET=elf$(CONFIG_WORD_SIZE)-$(GNUTARGET) $(AR) |
73 | endif | 91 | endif |
74 | 92 | ||
75 | LDFLAGS_vmlinux-y := -Bstatic | 93 | LDFLAGS_vmlinux-y := -Bstatic |
@@ -95,7 +113,7 @@ endif | |||
95 | CFLAGS-$(CONFIG_PPC64) := -mtraceback=no -mcall-aixdesc | 113 | CFLAGS-$(CONFIG_PPC64) := -mtraceback=no -mcall-aixdesc |
96 | CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,-mminimal-toc) | 114 | CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,-mminimal-toc) |
97 | CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions) | 115 | CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions) |
98 | CFLAGS-$(CONFIG_PPC32) := -ffixed-r2 -mmultiple | 116 | CFLAGS-$(CONFIG_PPC32) := -ffixed-r2 $(MULTIPLEWORD) |
99 | 117 | ||
100 | ifeq ($(CONFIG_PPC_BOOK3S_64),y) | 118 | ifeq ($(CONFIG_PPC_BOOK3S_64),y) |
101 | CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,-mtune=power4) | 119 | CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,-mtune=power4) |