--- /dev/null
+++ ./gdb/config/powerpc/ppc64-aix.mh
@@ -0,0 +1,11 @@
+# Host: IBM PowerPC 64 BIT running AIX
+
+NAT_FILE= config/rs6000/nm-rs6000.h
+
+# aix-thread.o is not listed in NATDEPFILES as it is pulled in by configure.
+NATDEPFILES= fork-child.o inf-ptrace64.o rs6000-nat.o \
+             xcoffsolib.o
+
+# When compiled with cc, for debugging, this argument should be passed.
+# We have no idea who our current compiler is though, so we skip it.
+# MH_CFLAGS = -bnodelcsect
--- ./gdb/configure.ac_orig	2013-04-29 17:28:27 +0600
+++ ./gdb/configure.ac	2013-04-29 17:30:43 +0600
@@ -1711,8 +1711,13 @@
                                    gdb_cv_have_aix_thread_debug=no)])
       AC_MSG_RESULT($gdb_cv_have_aix_thread_debug)
       if test $gdb_cv_have_aix_thread_debug = yes; then
-         CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
-         CONFIG_OBS="${CONFIG_OBS} aix-thread.o"
+         if test $host_cpu = powerpc64; then
+            CONFIG_SRCS="${CONFIG_SRCS} aix64-thread.c"
+            CONFIG_OBS="${CONFIG_OBS} aix64-thread.o"
+         else
+            CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
+            CONFIG_OBS="${CONFIG_OBS} aix-thread.o"
+         fi
          LIBS="$LIBS -lpthdebug"
 
          # Older versions of AIX do not provide the declaration for
--- ./gdb/configure_org	2013-04-29 16:51:26 +0600
+++ ./gdb/configure	2013-04-29 17:31:18 +0600
@@ -12031,8 +12031,13 @@
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_have_aix_thread_debug" >&5
 $as_echo "$gdb_cv_have_aix_thread_debug" >&6; }
       if test $gdb_cv_have_aix_thread_debug = yes; then
-         CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
-         CONFIG_OBS="${CONFIG_OBS} aix-thread.o"
+         if test $host_cpu = powerpc64; then
+            CONFIG_SRCS="${CONFIG_SRCS} aix64-thread.c"
+            CONFIG_OBS="${CONFIG_OBS} aix64-thread.o"
+         else
+            CONFIG_SRCS="${CONFIG_SRCS} aix-thread.c"
+            CONFIG_OBS="${CONFIG_OBS} aix-thread.o"
+         fi
          LIBS="$LIBS -lpthdebug"
 
          # Older versions of AIX do not provide the declaration for
--- ./gdb/configure.host_orig	2013-04-29 17:27:35 +0600
+++ ./gdb/configure.host	2013-04-29 17:28:15 +0600
@@ -125,6 +125,8 @@
 
 powerpc-*-aix* | rs6000-*-*)
 			gdb_host=aix ;;
+powerpc64-*-aix*)
+                        gdb_host=ppc64-aix ;;
 powerpc-*-linux*)	gdb_host=linux ;;
 powerpc-*-netbsd* | powerpc-*-knetbsd*-gnu)
 			gdb_host=nbsd ;;
--- ./gdb/configure.tgt_orig	2013-04-29 17:04:48 +0600
+++ ./gdb/configure.tgt	2013-04-29 17:03:19 +0600
@@ -394,7 +394,7 @@
 	gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppcobsd-tdep.o \
 			solib-svr4.o"
 	;;
-powerpc-*-aix* | rs6000-*-*)
+powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
 	# Target: PowerPC running AIX
 	gdb_target_obs="rs6000-tdep.o rs6000-aix-tdep.o xcoffread.o \
 			ppc-sysv-tdep.o solib-svr4.o"
@@ -658,4 +658,6 @@
 *-*-dicos*)	gdb_osabi=GDB_OSABI_DICOS ;;
 *-*-symbianelf*)
 		gdb_osabi=GDB_OSABI_SYMBIAN ;;
+powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
+                gdb_osabi=GDB_OSABI_AIX ;;
 esac
--- ./bfd/configure_orig	2013-04-29 17:24:03 +0600
+++ ./bfd/configure	2013-04-29 17:24:27 +0600
@@ -13992,7 +13992,7 @@
   rs6000-*-lynx*)
   	COREFILE=lynx-core.lo
 	;;
-  rs6000-*-aix[5-9].* | powerpc-*-aix[5-9].*)
+  rs6000-*-aix[5-9].* | powerpc-*-aix[5-9].* | powerpc64-*-aix[5-9].*)
         COREFILE=rs6000-core.lo
 	COREFLAG="$COREFLAG -DAIX_5_CORE -DAIX_CORE_DUMPX_CORE"
 	;;
@@ -14030,6 +14030,7 @@
   rs6000-*-*)		COREFILE=rs6000-core.lo ;;
   powerpc-*-aix4*)	COREFILE=rs6000-core.lo ;;
   powerpc-*-aix*)	COREFILE=rs6000-core.lo ;;
+  powerpc64-*-aix*)	COREFILE=rs6000-core.lo ;;
   powerpc-*-beos*)	;;
   powerpc-*-freebsd* | powerpc-*-kfreebsd*-gnu)
 		        COREFILE='' ;;
@@ -15174,7 +15175,7 @@
     # with the two vector lists in targets.c.  For the same reason,
     # use one entry per line, even though this leads to long lines.
     a_out_adobe_vec)		tb="$tb aout-adobe.lo aout32.lo" ;;
-    aix5coff64_vec)		tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;;
+    aix5coff64_vec)		tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo rs6000-core.lo"; target_size=64 ;;
     aout0_big_vec)		tb="$tb aout0.lo aout32.lo" ;;
     aout_arm_big_vec)		tb="$tb aout-arm.lo aout32.lo" ;;
     aout_arm_little_vec)	tb="$tb aout-arm.lo aout32.lo" ;;
@@ -15455,8 +15456,8 @@
     pmac_xcoff_vec)		tb="$tb coff-rs6000.lo xcofflink.lo" ;;
     ppcboot_vec)		tb="$tb ppcboot.lo" ;;
     riscix_vec)			tb="$tb aout32.lo riscix.lo" ;;
-    rs6000coff64_vec)		tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;;
-    rs6000coff_vec)		tb="$tb coff-rs6000.lo xcofflink.lo" ;;
+    rs6000coff64_vec)		tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo rs6000-core.lo"; target_size=64 ;;
+    rs6000coff_vec)		tb="$tb coff-rs6000.lo xcofflink.lo rs6000-core.lo" ;;
     shcoff_small_vec)		tb="$tb coff-sh.lo cofflink.lo" ;;
     shcoff_vec)			tb="$tb coff-sh.lo cofflink.lo" ;;
     shlcoff_small_vec)		tb="$tb coff-sh.lo cofflink.lo" ;;
