From: Cody P Schafer Date: Tue, 13 May 2014 05:28:21 +0000 (-0700) Subject: powerpc: add powerpc64 and powerpc64le support X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7e674dfa4f43c414c62a5aee387c1097c2ed21fe;p=buildroot.git powerpc: add powerpc64 and powerpc64le support This enables powerpc64 and powerpc64le. Currently, le needs at least glibc 2.19 and gcc 4.9.0. For gdb, 7.7.1 works (added in an earlier patch). [Peter: also disallow gcc 4.8 for ppc64le] Signed-off-by: Cody P Schafer Signed-off-by: Peter Korsgaard --- diff --git a/Makefile b/Makefile index 7363ee538f..2ee5c81cd0 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ export HOSTARCH := $(shell uname -m | \ -e s/sun4u/sparc64/ \ -e s/arm.*/arm/ \ -e s/sa110/arm/ \ - -e s/ppc64/powerpc/ \ + -e s/ppc64/powerpc64/ \ -e s/ppc/powerpc/ \ -e s/macppc/powerpc/\ -e s/sh.*/sh/) diff --git a/arch/Config.in b/arch/Config.in index 2114dd8423..1f60f81e4b 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -140,6 +140,16 @@ config BR2_powerpc bool "PowerPC" help PowerPC is a RISC architecture created by Apple-IBM-Motorola alliance. + Big endian. + http://www.power.org/ + http://en.wikipedia.org/wiki/Powerpc + +config BR2_powerpc64 + bool "PowerPC64 (big endian)" + select BR2_ARCH_IS_64 + help + PowerPC is a RISC architecture created by Apple-IBM-Motorola alliance. + Big endian. http://www.power.org/ http://en.wikipedia.org/wiki/Powerpc @@ -148,6 +158,7 @@ config BR2_powerpc64le select BR2_ARCH_IS_64 help PowerPC is a RISC architecture created by Apple-IBM-Motorola alliance. + Little endian. http://www.power.org/ http://en.wikipedia.org/wiki/Powerpc @@ -329,7 +340,7 @@ if BR2_nios2 source "arch/Config.in.nios2" endif -if BR2_powerpc || BR2_powerpc64le +if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le source "arch/Config.in.powerpc" endif diff --git a/arch/Config.in.powerpc b/arch/Config.in.powerpc index c8a21b5fcf..e444cb8e26 100644 --- a/arch/Config.in.powerpc +++ b/arch/Config.in.powerpc @@ -150,10 +150,11 @@ config BR2_POWERPC_SOFT_FLOAT config BR2_ARCH default "powerpc" if BR2_powerpc + default "powerpc64" if BR2_powerpc64 default "powerpc64le" if BR2_powerpc64le config BR2_ENDIAN - default "BIG" if BR2_powerpc + default "BIG" if BR2_powerpc || BR2_powerpc64 default "LITTLE" if BR2_powerpc64le config BR2_GCC_TARGET_TUNE diff --git a/linux/Config.in b/linux/Config.in index cc1127ade0..9732bb95fe 100644 --- a/linux/Config.in +++ b/linux/Config.in @@ -184,7 +184,8 @@ config BR2_LINUX_KERNEL_BZIMAGE config BR2_LINUX_KERNEL_ZIMAGE bool "zImage" - depends on BR2_arm || BR2_armeb || BR2_powerpc || BR2_sparc || \ + depends on BR2_arm || BR2_armeb || BR2_powerpc || \ + BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \ BR2_sh || BR2_sh64 || BR2_xtensa config BR2_LINUX_KERNEL_APPENDED_ZIMAGE diff --git a/package/Makefile.in b/package/Makefile.in index 2fc3aa7e0f..0233506c79 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -321,7 +321,7 @@ endif ifeq ($(BR2_m68k),y) BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no endif -ifeq ($(BR2_powerpc)$(BR2_ENDIAN),yBIG) +ifeq ($(BR2_powerpc)$(BR2_powerpc64)$(BR2_powerpc64le),y) BR2_AC_CV_TRAP_CHECK=ac_cv_lbl_unaligned_fail=no endif diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host index ff25248095..fd2c5e8e98 100644 --- a/package/gcc/Config.in.host +++ b/package/gcc/Config.in.host @@ -20,14 +20,14 @@ choice bool "gcc 4.2.2-avr32-2.1.5" config BR2_GCC_VERSION_4_3_X - depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_cortex_a5 && !BR2_cortex_a7 && !BR2_cortex_a8 && !BR2_cortex_a9 && !BR2_cortex_a12 && !BR2_cortex_a15 && !BR2_x86_corei7 && !BR2_x86_atom && !BR2_x86_jaguar && !BR2_powerpc_e300c2 && !BR2_powerpc_e300c3 && !BR2_powerpc_e500mc && !BR2_powerpc_464 && !BR2_powerpc_464fp && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 && !BR2_pj4 + depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_cortex_a5 && !BR2_cortex_a7 && !BR2_cortex_a8 && !BR2_cortex_a9 && !BR2_cortex_a12 && !BR2_cortex_a15 && !BR2_x86_corei7 && !BR2_x86_atom && !BR2_x86_jaguar && !BR2_powerpc_e300c2 && !BR2_powerpc_e300c3 && !BR2_powerpc_e500mc && !BR2_powerpc_464 && !BR2_powerpc_464fp && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 && !BR2_pj4 && !BR2_powerpc64le depends on !BR2_ARM_EABIHF bool "gcc 4.3.x" # musl patches only for gcc 4.7+ depends on !BR2_TOOLCHAIN_BUILDROOT_MUSL config BR2_GCC_VERSION_4_4_X - depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_cortex_a5 && !BR2_cortex_a7 && !BR2_cortex_a12 && !BR2_cortex_a15 && !BR2_x86_corei7 && !BR2_x86_atom && !BR2_x86_jaguar && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 && !BR2_pj4 + depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_cortex_a5 && !BR2_cortex_a7 && !BR2_cortex_a12 && !BR2_cortex_a15 && !BR2_x86_corei7 && !BR2_x86_atom && !BR2_x86_jaguar && !BR2_powerpc_476 && !BR2_powerpc_476fp && !BR2_fa526 && !BR2_pj4 && !BR2_powerpc64le bool "gcc 4.4.x" # ARM EABIhf support appeared in gcc 4.6 depends on !BR2_ARM_EABIHF @@ -37,7 +37,7 @@ choice depends on !BR2_TOOLCHAIN_BUILDROOT_MUSL config BR2_GCC_VERSION_4_5_X - depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_cortex_a7 && !BR2_cortex_a12 && !BR2_cortex_a15 && !BR2_x86_corei7 && !BR2_x86_jaguar && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_fa526 && !BR2_pj4 + depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_cortex_a7 && !BR2_cortex_a12 && !BR2_cortex_a15 && !BR2_x86_corei7 && !BR2_x86_jaguar && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_fa526 && !BR2_pj4 && !BR2_powerpc64le select BR2_GCC_NEEDS_MPC # ARM EABIhf support appeared in gcc 4.6 depends on !BR2_ARM_EABIHF @@ -46,19 +46,19 @@ choice bool "gcc 4.5.x" config BR2_GCC_VERSION_4_6_X - depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_cortex_a7 && !BR2_cortex_a12 && !BR2_x86_jaguar && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_pj4 + depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_cortex_a7 && !BR2_cortex_a12 && !BR2_x86_jaguar && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_pj4 && !BR2_powerpc64le select BR2_GCC_NEEDS_MPC # musl patches only for gcc 4.7+ depends on !BR2_TOOLCHAIN_BUILDROOT_MUSL bool "gcc 4.6.x" config BR2_GCC_VERSION_4_7_X - depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_cortex_a12 && !BR2_x86_jaguar && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_pj4 + depends on !BR2_microblaze && !BR2_aarch64 && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_cortex_a12 && !BR2_x86_jaguar && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_pj4 && !BR2_powerpc64le select BR2_GCC_NEEDS_MPC bool "gcc 4.7.x" config BR2_GCC_VERSION_4_8_X - depends on !BR2_microblaze && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_cortex_a12 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 + depends on !BR2_microblaze && !BR2_arc && !BR2_avr32 && !BR2_bfin && !BR2_cortex_a12 && !BR2_sparc_sparchfleon && !BR2_sparc_sparchfleonv8 && !BR2_sparc_sparcsfleon && !BR2_sparc_sparcsfleonv8 && !BR2_powerpc64le select BR2_GCC_NEEDS_MPC bool "gcc 4.8.x" diff --git a/package/glibc/Config.in b/package/glibc/Config.in index b690565766..d1ad3de47a 100644 --- a/package/glibc/Config.in +++ b/package/glibc/Config.in @@ -2,20 +2,21 @@ if BR2_TOOLCHAIN_BUILDROOT_GLIBC choice prompt "glibc version" - default BR2_GLIBC_VERSION_2_19 if BR2_powerpc64le default BR2_GLIBC_VERSION_2_18 # Architectures supported in mainline glibc depends on BR2_arm || BR2_armeb || BR2_aarch64 || \ BR2_i386 || BR2_mips || BR2_mipsel || \ BR2_mips64 || BR2_mips64el || BR2_powerpc || \ - BR2_powerpc64le || BR2_sh || BR2_sh64 || \ - BR2_sparc || BR2_x86_64 || BR2_microblaze + BR2_powerpc64 || BR2_powerpc64le || BR2_sh || \ + BR2_sh64 || BR2_sparc || BR2_x86_64 || \\ + BR2_microblaze config BR2_GLIBC_VERSION_2_18 - bool "2.18" + bool "2.18" + depends on !BR2_powerpc64le config BR2_GLIBC_VERSION_2_19 - bool "2.19" + bool "2.19" endchoice diff --git a/package/libatomic_ops/Config.in b/package/libatomic_ops/Config.in index f0a55a49dc..fe1efd4f2a 100644 --- a/package/libatomic_ops/Config.in +++ b/package/libatomic_ops/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS bool - default y if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || BR2_sparc || BR2_powerpc || BR2_x86_64 + default y if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_i386 || BR2_sparc || BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || BR2_x86_64 config BR2_PACKAGE_LIBATOMIC_OPS bool "libatomic_ops" diff --git a/package/openssl/openssl.mk b/package/openssl/openssl.mk index 52abb46daf..87bc2efcd4 100644 --- a/package/openssl/openssl.mk +++ b/package/openssl/openssl.mk @@ -42,6 +42,12 @@ ifeq ($(BR2_powerpc_401)$(BR2_powerpc_403)$(BR2_powerpc_405)$(BR2_powerpc_405fp) OPENSSL_TARGET_ARCH = ppc endif endif +ifeq ($(ARCH),powerpc64) + OPENSSL_TARGET_ARCH = ppc64 +endif +ifeq ($(ARCH),powerpc64le) + OPENSSL_TARGET_ARCH = ppc64le +endif ifeq ($(ARCH),x86_64) OPENSSL_TARGET_ARCH = x86_64 endif diff --git a/package/systemd/Config.in b/package/systemd/Config.in index f10637af70..25665339d6 100644 --- a/package/systemd/Config.in +++ b/package/systemd/Config.in @@ -2,7 +2,8 @@ config BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS bool # see src/shared/architecture.h default y if BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || \ - BR2_mipsel || BR2_powerpc || BR2_sh4 || BR2_sh4eb || \ + BR2_mipsel || BR2_powerpc || BR2_powerpc64 || \ + BR2_powerpc64le || BR2_sh4 || BR2_sh4eb || \ BR2_sh4a || BR2_sh4aeb || BR2_sparc || BR2_x86_64 || \ BR2_aarch64 || BR2_m68k diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in index e19de4c331..0a96e757b4 100644 --- a/toolchain/toolchain-buildroot/Config.in +++ b/toolchain/toolchain-buildroot/Config.in @@ -45,7 +45,7 @@ config BR2_TOOLCHAIN_BUILDROOT_EGLIBC BR2_i386 || BR2_mips || BR2_mipsel || \ BR2_mips64 || BR2_mips64el || BR2_powerpc || \ BR2_sh || BR2_sh64 || BR2_sparc || \ - BR2_x86_64 || BR2_microblaze + BR2_x86_64 || BR2_microblaze || BR2_powerpc64 depends on BR2_USE_MMU depends on !BR2_PREFER_STATIC_LIB select BR2_TOOLCHAIN_USES_GLIBC @@ -62,8 +62,9 @@ config BR2_TOOLCHAIN_BUILDROOT_GLIBC depends on BR2_arm || BR2_armeb || BR2_aarch64 || \ BR2_i386 || BR2_mips || BR2_mipsel || \ BR2_mips64 || BR2_mips64el || BR2_powerpc || \ - BR2_powerpc64le || BR2_sh || BR2_sh64 || \ - BR2_sparc || BR2_x86_64 || BR2_microblaze + BR2_powerpc64 || BR2_powerpc64le || BR2_sh || \ + BR2_sh64 || BR2_sparc || BR2_x86_64 || \ + BR2_microblaze depends on BR2_USE_MMU depends on !BR2_PREFER_STATIC_LIB select BR2_TOOLCHAIN_USES_GLIBC