diff --git a/debian/patches/mips64-default-n64.diff b/debian/patches/mips64-default-n64.diff
new file mode 100644
index 0000000..4566c5d
--- /dev/null
+++ b/debian/patches/mips64-default-n64.diff
@@ -0,0 +1,37 @@
+diff -ur a/src/gcc/config.gcc b/src/gcc/config.gcc
+--- a/src/gcc/config.gcc	2013-05-13 17:06:45.113290727 +0800
++++ b/src/gcc/config.gcc	2013-05-13 17:23:43.645319137 +0800
+@@ -1794,11 +1794,32 @@
+ 	gas=yes
+ 	test x$with_llsc != x || with_llsc=yes
+ 	;;
+-mips64*-*-linux* | mipsisa64*-*-linux*)
++mips64*-*-linux*-*n32* | mipsisa64*-*-linux*-*n32*)
+ 	tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h"
+ 	tmake_file="${tmake_file} mips/t-linux64"
+ 	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
+ 	case ${target} in
++		mips64el-st-linux-gnu*)
++			tm_file="${tm_file} mips/st.h"
++			tmake_file="${tmake_file} mips/t-st"
++			;;
++		mips64octeon*-*-linux*)
++			tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
++			target_cpu_default=MASK_SOFT_FLOAT_ABI
++			;;
++		mipsisa64r2*-*-linux*)
++			tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
++			;;
++	esac
++	gnu_ld=yes
++	gas=yes
++	test x$with_llsc != x || with_llsc=yes
++	;;
++mips64*-*-linux* | mipsisa64*-*-linux*)
++	tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/gnu-user64.h mips/linux64.h mips/linux-common.h"
++	tmake_file="${tmake_file} mips/t-linux64"
++	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_64"
++	case ${target} in
+ 		mips64el-st-linux-gnu)
+ 			tm_file="${tm_file} mips/st.h"
+ 			tmake_file="${tmake_file} mips/t-st"
diff --git a/debian/rules.patch b/debian/rules.patch
index dbdf362..196b2e9 100644
--- a/debian/rules.patch
+++ b/debian/rules.patch
@@ -78,6 +78,7 @@ debian_patches += \
 	libgo-revert-timeout-exp \
 	arm-sanitizer \
 	aarch64-libjava \
+	mips64-default-n64 \
 
 #	$(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \
 #	libstdc++-nothumb-check \
diff --git a/debian/rules2 b/debian/rules2
index 45281f8..5b62683 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -497,6 +497,17 @@ ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE)))
   endif
 endif
 
+ifneq (,$(findstring mips64el-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-64=mips64r2 --with-tune-64=loongson3a --disable-multilib
+endif
+
+ifneq (,$(findstring mips64-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-64=mips64r2 --with-tune-64=octeon+ --disable-multilib
+endif
+
+
 ifneq (,$(findstring s390-linux,$(DEB_TARGET_GNU_TYPE)))
   ifeq ($(multilib),yes)
     ifeq ($(biarch64),yes)
