summaryrefslogtreecommitdiffstats
path: root/runtime/syscall.h
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-09-09 20:00:13 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-09-09 20:00:13 -0400
commit23b3bb31858e54b8a10ad570a3bc8ad49487d725 (patch)
tree0096ff3573baefdb7cffc55574266587e0e8283b /runtime/syscall.h
parent5ff217f44e1e069fcfbd59c27866afef35a61c9a (diff)
parent256d22cfb336b4cf0ec5b35bab89ca55ff5ce9ee (diff)
downloadsystemtap-steved-23b3bb31858e54b8a10ad570a3bc8ad49487d725.tar.gz
systemtap-steved-23b3bb31858e54b8a10ad570a3bc8ad49487d725.tar.xz
systemtap-steved-23b3bb31858e54b8a10ad570a3bc8ad49487d725.zip
Merge branch 'master' of ssh://sources.redhat.com/git/systemtap
* 'master' of ssh://sources.redhat.com/git/systemtap: Added tests for utrace-syscall probe context variables. Add $return context variables on per-process-syscall.return probes Add $argN context variables on per-process-syscall probes Add $name context variable support on marker probes Utrace on ia64 fast fetch-register support Add ia64 utrace support Correct this_section_offset calculation in _stp_kallsyms_lookup. tiny grammar fix in NEWS separated Scripts, edited accordingly PR1288: runtime functions for avoiding certain addresses remove test tag added content for Ch1 and 2, to add more later
Diffstat (limited to 'runtime/syscall.h')
-rw-r--r--runtime/syscall.h42
1 files changed, 41 insertions, 1 deletions
diff --git a/runtime/syscall.h b/runtime/syscall.h
index 24e93463..24fc7b1c 100644
--- a/runtime/syscall.h
+++ b/runtime/syscall.h
@@ -66,7 +66,15 @@
#define MUNMAP_SYSCALL_NO(tsk) 91
#define MREMAP_SYSCALL_NO(tsk) 163
#endif
-
+
+#if defined(__ia64__)
+#define MMAP_SYSCALL_NO(tsk) 1151
+#define MMAP2_SYSCALL_NO(tsk) 1172
+#define MPROTECT_SYSCALL_NO(tsk) 1155
+#define MUNMAP_SYSCALL_NO(tsk) 1152
+#define MREMAP_SYSCALL_NO(tsk) 1156
+#endif
+
#if !defined(MMAP_SYSCALL_NO) || !defined(MMAP2_SYSCALL_NO) \
|| !defined(MPROTECT_SYSCALL_NO) || !defined(MUNMAP_SYSCALL_NO) \
|| !defined(MREMAP_SYSCALL_NO)
@@ -95,6 +103,14 @@ __stp_user_syscall_nr(struct pt_regs *regs)
}
#endif
+#if defined(__ia64__)
+static inline unsigned long
+__stp_user_syscall_nr(struct pt_regs *regs)
+{
+ return regs->r15;
+}
+#endif
+
#if defined(__i386__) || defined(__x86_64__)
static inline long *
__stp_user_syscall_return_value(struct task_struct *task, struct pt_regs *regs)
@@ -129,6 +145,14 @@ __stp_user_syscall_return_value(struct task_struct *task, struct pt_regs *regs)
}
#endif
+#if defined(__ia64__)
+static inline long *
+__stp_user_syscall_return_value(struct task_struct *task, struct pt_regs *regs)
+{
+ return &regs->r8;
+}
+#endif
+
#if defined(__i386__) || defined(__x86_64__)
static inline long *
__stp_user_syscall_arg(struct task_struct *task, struct pt_regs *regs,
@@ -211,4 +235,20 @@ __stp_user_syscall_arg(struct task_struct *task, struct pt_regs *regs,
}
#endif
+#if defined(__ia64__)
+#define __stp_user_syscall_arg(task, regs, n) \
+ ____stp_user_syscall_arg(task, regs, n, &c->unwaddr)
+
+static inline long *
+____stp_user_syscall_arg(struct task_struct *task, struct pt_regs *regs,
+ unsigned int n, unsigned long **cache)
+{
+ if (n > 5) {
+ _stp_error("syscall arg > 5");
+ return NULL;
+ }
+ return __ia64_fetch_register(n + 32, regs, cache);
+}
+#endif
+
#endif /* _SYSCALL_H_ */