diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2008-09-09 20:00:13 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-09-09 20:00:13 -0400 |
commit | 23b3bb31858e54b8a10ad570a3bc8ad49487d725 (patch) | |
tree | 0096ff3573baefdb7cffc55574266587e0e8283b /runtime/syscall.h | |
parent | 5ff217f44e1e069fcfbd59c27866afef35a61c9a (diff) | |
parent | 256d22cfb336b4cf0ec5b35bab89ca55ff5ce9ee (diff) | |
download | systemtap-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.h | 42 |
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 ®s->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_ */ |