diff --git a/debian/changelog b/debian/changelog
index 9ac8afa..caa40a5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+gcc-4.7 (4.7.3-4+nmu) unstable; urgency=low
+
+  * Clean patches. 
+
+ -- YunQiang Su <wzssyqa@gmail.com>  Mon, 13 May 2013 20:51:44 +0800
+
 gcc-4.7 (4.7.3-4) unstable; urgency=medium
 
   [ Matthias Klose ]
diff --git a/debian/patches/mips64-default-n64.diff b/debian/patches/mips64-default-n64.diff
new file mode 100644
index 0000000..8ccaddc
--- /dev/null
+++ b/debian/patches/mips64-default-n64.diff
@@ -0,0 +1,39 @@
+diff -ur a/src/gcc/config.gcc b/src/gcc/config.gcc
+--- a/src/gcc/config.gcc	2013-05-13 20:42:22.553651590 +0800
++++ b/src/gcc/config.gcc	2013-05-13 20:47:53.813660830 +0800
+@@ -1772,12 +1772,33 @@
+ 	tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h"
+ 	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+ 	;;
+-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"
+ 	tmake_file="${tmake_file} mips/t-linux64"
+ 	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
+ 	case ${target} in
+-		mips64el-st-linux-gnu)
++		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"
++	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 d5b20f5..66aaee7 100644
--- a/debian/rules.patch
+++ b/debian/rules.patch
@@ -89,6 +89,7 @@ debian_patches += \
 	gcc-target-include-asm \
 	libgcc-backports \
 	ppl-version \
+	mips64-default-n64 \
 
 ifneq (,$(filter $(cloog_backend),ppl-0.11))
   debian_patches += gcc-cloog-dl
diff --git a/debian/rules2 b/debian/rules2
index 0722769..f688923 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -503,6 +503,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)
