add a modified version of the mips64 patch from #4603
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 18 Apr 2009 17:03:55 +0000 (17:03 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sat, 18 Apr 2009 17:03:55 +0000 (17:03 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15249 3c298f89-4303-0410-b956-a3cf2f4a3e73

19 files changed:
include/kernel.mk
include/site/mips64-linux [new file with mode: 0644]
include/site/mips64-openwrt-linux-gnu [new file with mode: 0644]
include/site/mips64-openwrt-linux-uclibc [new file with mode: 0644]
include/site/mips64el-linux [new file with mode: 0644]
include/site/mips64el-openwrt-linux-gnu [new file with mode: 0644]
include/site/mips64el-openwrt-linux-uclibc [new file with mode: 0644]
include/target.mk
target/Config.in
toolchain/gcc/Makefile
toolchain/glibc/Config.version
toolchain/glibc/Makefile
toolchain/uClibc/Config.in
toolchain/uClibc/config-0.9.29/mips64 [new file with mode: 0644]
toolchain/uClibc/config-0.9.29/mips64el [new file with mode: 0644]
toolchain/uClibc/config-0.9.30/mips64 [new file with mode: 0644]
toolchain/uClibc/config-0.9.30/mips64el [new file with mode: 0644]
toolchain/uClibc/config-nptl/mips64 [new file with mode: 0644]
toolchain/uClibc/config-nptl/mips64el [new file with mode: 0644]

index 8b98369..20377af 100644 (file)
@@ -53,7 +53,7 @@ ifneq (,$(findstring uml,$(BOARD)))
   LINUX_KARCH=um
 else
   ifeq (,$(LINUX_KARCH))
   LINUX_KARCH=um
 else
   ifeq (,$(LINUX_KARCH))
-    LINUX_KARCH=$(strip $(subst i386,x86,$(subst armeb,arm,$(subst mipsel,mips,$(subst sh2,sh,$(subst sh3,sh,$(subst sh4,sh,$(ARCH))))))))
+    LINUX_KARCH=$(strip $(subst i386,x86,$(subst armeb,arm,$(subst mipsel,mips,$(subst mips64,mips,$(subst mips64el,mips,$(subst sh2,sh,$(subst sh3,sh,$(subst sh4,sh,$(ARCH))))))))))
   endif
 endif
 
   endif
 endif
 
diff --git a/include/site/mips64-linux b/include/site/mips64-linux
new file mode 100644 (file)
index 0000000..1541a89
--- /dev/null
@@ -0,0 +1,28 @@
+ac_cv_c_littleendian=${ac_cv_c_littleendian=no}
+ac_cv_c_bigendian=${ac_cv_c_bigendian=yes}
+
+ac_cv_sizeof___int64=8
+ac_cv_sizeof_char=1
+ac_cv_sizeof_int=4
+ac_cv_sizeof_int16_t=2
+ac_cv_sizeof_int32_t=4
+ac_cv_sizeof_int64_t=8
+ac_cv_sizeof_long_int=8
+ac_cv_sizeof_long_long=8
+ac_cv_sizeof_long=8
+ac_cv_sizeof_off_t=8
+ac_cv_sizeof_short_int=2
+ac_cv_sizeof_short=2
+ac_cv_sizeof_size_t=8
+ac_cv_sizeof_ssize_t=8
+ac_cv_sizeof_u_int16_t=2
+ac_cv_sizeof_u_int32_t=4
+ac_cv_sizeof_u_int64_t=8
+ac_cv_sizeof_uint16_t=2
+ac_cv_sizeof_uint32_t=4
+ac_cv_sizeof_uint64_t=8
+ac_cv_sizeof_unsigned_int=4
+ac_cv_sizeof_unsigned_long=8
+ac_cv_sizeof_unsigned_long_long=8
+ac_cv_sizeof_unsigned_short=2
+ac_cv_sizeof_void_p=8
diff --git a/include/site/mips64-openwrt-linux-gnu b/include/site/mips64-openwrt-linux-gnu
new file mode 100644 (file)
index 0000000..b7474d5
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+. $TOPDIR/include/site/mips64-linux
+. $TOPDIR/include/site/linux-gnu
+
diff --git a/include/site/mips64-openwrt-linux-uclibc b/include/site/mips64-openwrt-linux-uclibc
new file mode 100644 (file)
index 0000000..1b1347c
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+. $TOPDIR/include/site/mips64-linux
+. $TOPDIR/include/site/linux-uclibc
+
diff --git a/include/site/mips64el-linux b/include/site/mips64el-linux
new file mode 100644 (file)
index 0000000..41dfc01
--- /dev/null
@@ -0,0 +1,28 @@
+ac_cv_c_littleendian=${ac_cv_c_littleendian=yes}
+ac_cv_c_bigendian=${ac_cv_c_bigendian=no}
+
+ac_cv_sizeof___int64=8
+ac_cv_sizeof_char=1
+ac_cv_sizeof_int=4
+ac_cv_sizeof_int16_t=2
+ac_cv_sizeof_int32_t=4
+ac_cv_sizeof_int64_t=8
+ac_cv_sizeof_long_int=8
+ac_cv_sizeof_long_long=8
+ac_cv_sizeof_long=8
+ac_cv_sizeof_off_t=8
+ac_cv_sizeof_short_int=2
+ac_cv_sizeof_short=2
+ac_cv_sizeof_size_t=8
+ac_cv_sizeof_ssize_t=8
+ac_cv_sizeof_u_int16_t=2
+ac_cv_sizeof_u_int32_t=4
+ac_cv_sizeof_u_int64_t=8
+ac_cv_sizeof_uint16_t=2
+ac_cv_sizeof_uint32_t=4
+ac_cv_sizeof_uint64_t=8
+ac_cv_sizeof_unsigned_int=4
+ac_cv_sizeof_unsigned_long=8
+ac_cv_sizeof_unsigned_long_long=8
+ac_cv_sizeof_unsigned_short=2
+ac_cv_sizeof_void_p=8
diff --git a/include/site/mips64el-openwrt-linux-gnu b/include/site/mips64el-openwrt-linux-gnu
new file mode 100644 (file)
index 0000000..b7474d5
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+. $TOPDIR/include/site/mips64-linux
+. $TOPDIR/include/site/linux-gnu
+
diff --git a/include/site/mips64el-openwrt-linux-uclibc b/include/site/mips64el-openwrt-linux-uclibc
new file mode 100644 (file)
index 0000000..1b1347c
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+. $TOPDIR/include/site/mips64-linux
+. $TOPDIR/include/site/linux-uclibc
+
index 2f62c2a..5484592 100644 (file)
@@ -155,6 +155,8 @@ ifeq ($(DUMP),1)
   DEFAULT_CFLAGS_x86_64=-O2 -pipe -march=athlon64 -funit-at-a-time
   DEFAULT_CFLAGS_mips=-Os -pipe -mips32 -mtune=mips32 -funit-at-a-time
   DEFAULT_CFLAGS_mipsel=$(DEFAULT_CFLAGS_mips)
   DEFAULT_CFLAGS_x86_64=-O2 -pipe -march=athlon64 -funit-at-a-time
   DEFAULT_CFLAGS_mips=-Os -pipe -mips32 -mtune=mips32 -funit-at-a-time
   DEFAULT_CFLAGS_mipsel=$(DEFAULT_CFLAGS_mips)
+  DEFAULT_CFLAGS_mips64=-Os -pipe -mips64 -mtune=mips64 -mabi=64 -funit-at-a-time
+  DEFAULT_CFLAGS_mips64el=$(DEFAULT_CFLAGS_mips64)
   DEFAULT_CFLAGS_arm=-Os -pipe -march=armv5te -mtune=xscale -funit-at-a-time
   DEFAULT_CFLAGS_armeb=$(DEFAULT_CFLAGS_arm)
   DEFAULT_CFLAGS=$(if $(DEFAULT_CFLAGS_$(ARCH)),$(DEFAULT_CFLAGS_$(ARCH)),-Os -pipe -funit-at-a-time)
   DEFAULT_CFLAGS_arm=-Os -pipe -march=armv5te -mtune=xscale -funit-at-a-time
   DEFAULT_CFLAGS_armeb=$(DEFAULT_CFLAGS_arm)
   DEFAULT_CFLAGS=$(if $(DEFAULT_CFLAGS_$(ARCH)),$(DEFAULT_CFLAGS_$(ARCH)),-Os -pipe -funit-at-a-time)
index 6506312..405e169 100644 (file)
@@ -65,6 +65,13 @@ config mips
 config mipsel
        bool
 
 config mipsel
        bool
 
+config mips64
+       select BIG_ENDIAN
+       bool
+
+config mips64el
+       bool
+
 config arm
        bool
 
 config arm
        bool
 
@@ -118,6 +125,8 @@ config ARCH
        default "m68k"    if m68k
        default "mips"    if mips
        default "mipsel"  if mipsel
        default "m68k"    if m68k
        default "mips"    if mips
        default "mipsel"  if mipsel
+       default "mips64"  if mips64
+       default "mips64el" if mips64el
        default "powerpc" if powerpc
        default "sh3"     if sh3
        default "sh3eb"   if sh3eb
        default "powerpc" if powerpc
        default "sh3"     if sh3
        default "sh3eb"   if sh3eb
index 6f2b626..d7170ea 100644 (file)
@@ -73,6 +73,7 @@ GCC_CONFIGURE:= \
                --disable-nls \
                $(SOFT_FLOAT_CONFIG_OPTION) \
                $(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \
                --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
 
 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
        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) \
        );
        (cd $(HOST_BUILD_DIR2); rm -f config.cache; \
                $(GCC_CONFIGURE_STAGE2) \
        );
index d68eeea..1debf0c 100644 (file)
@@ -9,7 +9,7 @@ config GLIBC_VERSION
 config GLIBC_PORTS
        bool
        depends on USE_GLIBC
 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
        default n
index d014cac..054d891 100644 (file)
@@ -57,6 +57,7 @@ GLIBC_CONFIGURE:= \
                --build=$(GNU_HOST_NAME) \
                --host=$(REAL_GNU_TARGET_NAME) \
                --with-headers="$(TOOLCHAIN_DIR)/usr/include" \
                --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)" \
                --disable-debug \
                --disable-profile \
                --enable-add-ons="$(GLIBC_ADD_ONS)" \
index 7083477..523120a 100644 (file)
@@ -13,6 +13,7 @@ choice
 
        config UCLIBC_VERSION_0_9_28
                bool "uClibc 0.9.28"
 
        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"
 
        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 (file)
index 0000000..5ec91ee
--- /dev/null
@@ -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 (file)
index 0000000..0b6f5b4
--- /dev/null
@@ -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 (file)
index 0000000..fa5bee3
--- /dev/null
@@ -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 (file)
index 0000000..1ca764f
--- /dev/null
@@ -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 (file)
index 0000000..fa5bee3
--- /dev/null
@@ -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 (file)
index 0000000..1ca764f
--- /dev/null
@@ -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