systemtap v1.5 doesn't provide complete support for ARM.
This patch implements the arm version of aux_syscalls.

--- /dev/null
+++ tapset/arm/aux_syscalls.stp
@@ -0,0 +1,26 @@
+# arch-specific requests of ptrace ___________________________
+#
+function _arch_ptrace_argstr(request, pid, addr, data)
+{
+       if (request == %{ PTRACE_GETREGS %})
+               // TODO: Retrieve *data in .return
+               return sprintf ("PTRACE_GETREGS, %d, data=%p", pid, data)
+       if (request == %{ PTRACE_SETREGS %})
+               // TODO: Retrieve *data here
+               return sprintf ("PTRACE_SETREGS, %d, data=%p", pid, data)
+       if (request == %{ PTRACE_GETFPREGS %})
+               // TODO: Retrieve *data in .return
+               return sprintf ("PTRACE_GETFPREGS, %d, data=%p", pid, data)
+       if (request == %{ PTRACE_SETFPREGS %})
+               // TODO: Retrieve *data here
+               return sprintf ("PTRACE_SETFPREGS, %d, data=%p", pid, data)
+       if (request == %{ PTRACE_SINGLESTEP %})
+               // TODO: Retrieve *data here
+               return sprintf ("PTRACE_SINGLESTEP, %d, data=%p", pid, data)
+       return sprintf("unknown ptrace request: %d, %d, data=%p", request, pid, data);
+}
+
+function _ptrace_return_arch_prctl_addr(request, addr, data)
+{
+       return 0
+}
