From 56164a5815346ed801c1fd8885023f55c19b29ff Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Sat, 18 Apr 2009 17:03:55 +0000
Subject: add a modified version of the mips64 patch from #4603

SVN-Revision: 15249
---
 toolchain/gcc/Makefile                  |  2 ++
 toolchain/glibc/Config.version          |  6 +++---
 toolchain/glibc/Makefile                |  1 +
 toolchain/uClibc/Config.in              |  1 +
 toolchain/uClibc/config-0.9.29/mips64   | 19 +++++++++++++++++++
 toolchain/uClibc/config-0.9.29/mips64el | 19 +++++++++++++++++++
 toolchain/uClibc/config-0.9.30/mips64   | 17 +++++++++++++++++
 toolchain/uClibc/config-0.9.30/mips64el | 17 +++++++++++++++++
 toolchain/uClibc/config-nptl/mips64     | 17 +++++++++++++++++
 toolchain/uClibc/config-nptl/mips64el   | 17 +++++++++++++++++
 10 files changed, 113 insertions(+), 3 deletions(-)
 create mode 100644 toolchain/uClibc/config-0.9.29/mips64
 create mode 100644 toolchain/uClibc/config-0.9.29/mips64el
 create mode 100644 toolchain/uClibc/config-0.9.30/mips64
 create mode 100644 toolchain/uClibc/config-0.9.30/mips64el
 create mode 100644 toolchain/uClibc/config-nptl/mips64
 create mode 100644 toolchain/uClibc/config-nptl/mips64el

(limited to 'toolchain')

diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile
index 6f2b626f38..d7170ea8ec 100644
--- a/toolchain/gcc/Makefile
+++ b/toolchain/gcc/Makefile
@@ -73,6 +73,7 @@ GCC_CONFIGURE:= \
 		--disable-nls \
 		$(SOFT_FLOAT_CONFIG_OPTION) \
 		$(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \
+		$(if $(CONFIG_mips64)$(CONFIG_mips64el),--with-arch=mips64 --with-abi=64) \
 
 ifneq ($(CONFIG_GCC_VERSION_4_3),)
   GCC_BUILD_TARGET_LIBGCC:=y
@@ -189,6 +190,7 @@ define Stage2/Configure
 	ln -sf ../include $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME)/sys-include
 	rm -rf $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
 	ln -sf ../lib $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
+	$(if $(CONFIG_mips64)$(CONFIG_mips64el),ln -sf ../lib64 $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib64)
 	(cd $(HOST_BUILD_DIR2); rm -f config.cache; \
 		$(GCC_CONFIGURE_STAGE2) \
 	);
diff --git a/toolchain/glibc/Config.version b/toolchain/glibc/Config.version
index d68eeea8a9..1debf0c040 100644
--- a/toolchain/glibc/Config.version
+++ b/toolchain/glibc/Config.version
@@ -9,7 +9,7 @@ config GLIBC_VERSION
 config GLIBC_PORTS
 	bool
 	depends on USE_GLIBC
-	default y  if GLIBC_VERSION_2_3_6 && (arm || armeb || mips || mipsel)
-	default y  if GLIBC_VERSION_2_6_1 && (arm || armeb || mips || mipsel || powerpc)
-	default y  if GLIBC_VERSION_2_7 && (arm || armeb || mips || mipsel || powerpc)
+	default y  if GLIBC_VERSION_2_3_6 && (arm || armeb || mips || mipsel || mips64 || mips64el)
+	default y  if GLIBC_VERSION_2_6_1 && (arm || armeb || mips || mipsel || mips64 || mips64el || powerpc)
+	default y  if GLIBC_VERSION_2_7 && (arm || armeb || mips || mipsel || mips64 || mips64el || powerpc)
 	default n
diff --git a/toolchain/glibc/Makefile b/toolchain/glibc/Makefile
index d014cacded..054d891303 100644
--- a/toolchain/glibc/Makefile
+++ b/toolchain/glibc/Makefile
@@ -57,6 +57,7 @@ GLIBC_CONFIGURE:= \
 		--build=$(GNU_HOST_NAME) \
 		--host=$(REAL_GNU_TARGET_NAME) \
 		--with-headers="$(TOOLCHAIN_DIR)/usr/include" \
+		$(if $(CONFIG_mips64)$(CONFIG_mips64el), --enable-kernel="2.6.0") \
 		--disable-debug \
 		--disable-profile \
 		--enable-add-ons="$(GLIBC_ADD_ONS)" \
diff --git a/toolchain/uClibc/Config.in b/toolchain/uClibc/Config.in
index 70834770f2..523120a454 100644
--- a/toolchain/uClibc/Config.in
+++ b/toolchain/uClibc/Config.in
@@ -13,6 +13,7 @@ choice
 
 	config UCLIBC_VERSION_0_9_28
 		bool "uClibc 0.9.28"
+		depends !(mips64 || mips64el)
 
 	config UCLIBC_VERSION_0_9_29
 		bool "uClibc 0.9.29"
diff --git a/toolchain/uClibc/config-0.9.29/mips64 b/toolchain/uClibc/config-0.9.29/mips64
new file mode 100644
index 0000000000..5ec91eea20
--- /dev/null
+++ b/toolchain/uClibc/config-0.9.29/mips64
@@ -0,0 +1,19 @@
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+# ARCH_LITTLE_ENDIAN is not set
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+DL_FINI_CRT_COMPAT=y
+KERNEL_HEADERS="."
+KERNEL_SOURCE="."
+TARGET_ARCH="mips"
+TARGET_mips=y
diff --git a/toolchain/uClibc/config-0.9.29/mips64el b/toolchain/uClibc/config-0.9.29/mips64el
new file mode 100644
index 0000000000..0b6f5b4e1f
--- /dev/null
+++ b/toolchain/uClibc/config-0.9.29/mips64el
@@ -0,0 +1,19 @@
+ARCH_ANY_ENDIAN=y
+# ARCH_BIG_ENDIAN is not set
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+DL_FINI_CRT_COMPAT=y
+KERNEL_HEADERS="."
+KERNEL_SOURCE="."
+TARGET_ARCH="mips"
+TARGET_mips=y
diff --git a/toolchain/uClibc/config-0.9.30/mips64 b/toolchain/uClibc/config-0.9.30/mips64
new file mode 100644
index 0000000000..fa5bee3aa5
--- /dev/null
+++ b/toolchain/uClibc/config-0.9.30/mips64
@@ -0,0 +1,17 @@
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-0.9.30/mips64el b/toolchain/uClibc/config-0.9.30/mips64el
new file mode 100644
index 0000000000..1ca764f6e2
--- /dev/null
+++ b/toolchain/uClibc/config-0.9.30/mips64el
@@ -0,0 +1,17 @@
+ARCH_ANY_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-nptl/mips64 b/toolchain/uClibc/config-nptl/mips64
new file mode 100644
index 0000000000..fa5bee3aa5
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/mips64
@@ -0,0 +1,17 @@
+ARCH_ANY_ENDIAN=y
+ARCH_BIG_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_WANTS_BIG_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
diff --git a/toolchain/uClibc/config-nptl/mips64el b/toolchain/uClibc/config-nptl/mips64el
new file mode 100644
index 0000000000..1ca764f6e2
--- /dev/null
+++ b/toolchain/uClibc/config-nptl/mips64el
@@ -0,0 +1,17 @@
+ARCH_ANY_ENDIAN=y
+ARCH_CFLAGS="-mno-split-addresses"
+ARCH_LITTLE_ENDIAN=y
+ARCH_WANTS_LITTLE_ENDIAN=y
+# CONFIG_MIPS_ISA_1 is not set
+# CONFIG_MIPS_ISA_2 is not set
+# CONFIG_MIPS_ISA_3 is not set
+# CONFIG_MIPS_ISA_4 is not set
+# CONFIG_MIPS_ISA_MIPS32 is not set
+# CONFIG_MIPS_ISA_MIPS32R2 is not set
+CONFIG_MIPS_ISA_MIPS64=y
+# CONFIG_MIPS_N32_ABI is not set
+CONFIG_MIPS_N64_ABI=y
+# CONFIG_MIPS_O32_ABI is not set
+TARGET_ARCH="mips"
+TARGET_mips=y
+UCLIBC_HAS_FPU=y
-- 
cgit v1.2.3