diff --git a/NEWS b/NEWS
index 6a6b491a16c15c080d58c5791335f276e026c7ea..af51778dc51995fa5df414ab884ba35a5716fda1 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,7 @@ documents those changes that are of interest to users and admins.
     responding in a timely fashion) then send a registration RPC
     to slurmctld
  -- Add "slurm_" prefix to slurm's hostlist_ function man pages.
+ -- More AIX support added.
 
 * Changes in SLURM 0.3.1
 ========================
diff --git a/auxdir/Makefile.am b/auxdir/Makefile.am
index 605caddb5e50866afc3f6795fde30e567a3c84d9..917a22d47db4cc76ff4c1926c2c489a599b5fb7f 100644
--- a/auxdir/Makefile.am
+++ b/auxdir/Makefile.am
@@ -12,6 +12,7 @@ EXTRA_DIST = \
     x_ac_debug.m4 \
     x_ac_elan.m4 \
     x_ac_gpl_licensed.m4 \
+    x_ac_ptrace.m4 \
     x_ac_readline.m4 \
     x_ac_setproctitle.m4 \
     x_ac_slurm_ssl.m4 
diff --git a/auxdir/x_ac_ptrace.m4 b/auxdir/x_ac_ptrace.m4
new file mode 100644
index 0000000000000000000000000000000000000000..c952656ebdd763ec67da25212d421d78dcbc5776
--- /dev/null
+++ b/auxdir/x_ac_ptrace.m4
@@ -0,0 +1,26 @@
+##*****************************************************************************
+#  $Id$
+##*****************************************************************************
+#  AUTHOR:
+#    Morris Jette <jette1@llnl.gov>
+#
+#  SYNOPSIS:
+#    X_AC_PTRACE
+#
+#  DESCRIPTION:
+#    Test argument count of ptrace function.
+#
+#  WARNINGS:
+#    This macro must be placed after AC_PROG_CC or equivalent.
+##*****************************************************************************
+
+AC_DEFUN([X_AC_PTRACE], [
+  AC_TRY_COMPILE(
+   [#include <sys/reg.h>
+    #include <sys/ptrace.h>
+    #include <sys/ldr.h>], 
+   [ptrace(PT_TRACE_ME,0,0,0,0);],
+   [AC_DEFINE(PTRACE_FIVE_ARGS, 1,
+             [Define to 1 if ptrace takes five arguments.])])
+])
+
diff --git a/configure.ac b/configure.ac
index bea8f763a3ed8c9f8223d8abc27b8e8ab0d01604..749e7e8f3257823837bfc1ef3d6646a41e4f4eae 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,6 +58,9 @@ dnl check to see if glibc's program_invocation_short_name is available:
 dnl
 X_AC_SLURM_PROGRAM_INVOCATION_SHORT_NAME
 
+dnl Check if ptrace takes four or five arguments
+dnl
+X_AC_PTRACE
 
 dnl Checks for types.
 dnl
diff --git a/src/slurmd/smgr.c b/src/slurmd/smgr.c
index b0c51aaa9af7549b3e27047fd9dc7abf556cf399..604bac3503deae19153599df1ab5e4d39e68e142 100644
--- a/src/slurmd/smgr.c
+++ b/src/slurmd/smgr.c
@@ -562,7 +562,11 @@ _pdebug_trace_process(slurmd_job_t *job, pid_t pid)
 		waitpid(pid, &status, WUNTRACED);
 		if (kill(pid, SIGSTOP) < 0)
 			error("kill(%lu): %m", (unsigned long) pid);
+#ifdef PTRACE_FIVE_ARGS
+		if (ptrace(PTRACE_DETACH, (long) pid, NULL, 0, NULL))
+#else
 		if (ptrace(PTRACE_DETACH, (long) pid, NULL, NULL))
+#endif
 			error("ptrace(%lu): %m", (unsigned long) pid);
 	}
 }
@@ -577,6 +581,10 @@ _pdebug_stop_current(slurmd_job_t *job)
 	 * Stop the task on exec for TotalView to connect 
 	 */
 	if ( (job->task_flags & TASK_PARALLEL_DEBUG)
+#ifdef PTRACE_FIVE_ARGS
+	     && (ptrace(PTRACE_TRACEME, 0, NULL, 0, NULL) < 0) )
+#else
 	     && (ptrace(PTRACE_TRACEME, 0, NULL, NULL) < 0) )
+#endif
 		error("ptrace: %m");
 }