From: Florian Fainelli Date: Fri, 5 Apr 2013 12:36:23 +0000 (+0000) Subject: toolchain: allow choosing the MIPS64 user-land ABI X-Git-Tag: reboot~10779 X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=commitdiff_plain;h=e03292226618c68f219f41d745f92172687690dd toolchain: allow choosing the MIPS64 user-land ABI Signed-off-by: Florian Fainelli SVN-Revision: 36205 --- diff --git a/rules.mk b/rules.mk index d9d38374fa..2333f2aaf5 100644 --- a/rules.mk +++ b/rules.mk @@ -73,6 +73,11 @@ endif ifdef CONFIG_HAS_SPE_FPU TARGET_SUFFIX:=$(TARGET_SUFFIX)spe endif +ifdef CONFIG_MIPS64_ABI + ifneq ($(CONFIG_MIPS64_ABI_O32),y) + ARCH_SUFFIX:=$(ARCH_SUFFIX)_$(subst ",,$(CONFIG_MIPS64_ABI)) + endif +endif DL_DIR:=$(if $(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(call qstrip,$(CONFIG_DOWNLOAD_FOLDER)),$(TOPDIR)/dl) BIN_DIR:=$(TOPDIR)/bin/$(BOARD) diff --git a/toolchain/Config.in b/toolchain/Config.in index 8677b87e7e..e32364095b 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -130,6 +130,25 @@ menuconfig EXTRA_TARGET_ARCH both powerpc and powerpc64 binaries, you'll need to specify -m64 here. + + choice + prompt "MIPS64 user-land ABI" if TOOLCHAINOPTS && (mips64 || mips64el) + default MIPS64_ABI_N64 + help + MIPS64 supports 3 different user-land ABIs: o32 (legacy), + n32 and n64. + + config MIPS64_ABI_N64 + bool "n64" + + config MIPS64_ABI_N32 + bool "n32" + + config MIPS64_ABI_O32 + bool "o32" + + endchoice + comment "Binary tools" depends TOOLCHAINOPTS @@ -218,3 +237,11 @@ config TARGET_SUFFIX default "uclibc" if USE_UCLIBC && !(arm || armeb) default "muslgnueabi" if USE_MUSL && (arm || armeb) default "musl" if USE_MUSL && !(arm || armeb) + +config MIPS64_ABI + depends mips64 || mips64el + string + default "64" if MIPS64_ABI_N64 + default "n32" if MIPS64_ABI_N32 + default "32" if MIPS64_ABI_O32 + default "64" diff --git a/toolchain/Makefile b/toolchain/Makefile index 763381a838..581d2b3c60 100644 --- a/toolchain/Makefile +++ b/toolchain/Makefile @@ -64,6 +64,7 @@ ifneq ($(ARCH),) mkdir -p "$$dir"; \ cd "$$dir"; \ ln -nsf lib lib64; \ + ln -nsf lib lib32; \ mkdir -p stamp lib usr/include usr/lib ; \ ); done @grep GCC_VERSION $@ >/dev/null 2>&1 || $(INSTALL_DATA) $(TOPDIR)/toolchain/info.mk $@ diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk index 8305aa9fc1..c6b961735c 100644 --- a/toolchain/gcc/common.mk +++ b/toolchain/gcc/common.mk @@ -113,7 +113,8 @@ GCC_CONFIGURE:= \ --with-host-libstdcxx=-lstdc++ \ $(SOFT_FLOAT_CONFIG_OPTION) \ $(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \ - $(if $(CONFIG_mips64)$(CONFIG_mips64el),--with-arch=mips64 --with-abi=64) \ + $(if $(CONFIG_mips64)$(CONFIG_mips64el),--with-arch=mips64 \ + --with-abi=$(subst ",,$(CONFIG_MIPS64_ABI))) \ --with-gmp=$(TOPDIR)/staging_dir/host \ --with-mpfr=$(TOPDIR)/staging_dir/host \ --disable-decimal-float