diff options
Diffstat (limited to 'runtime/syscall.h')
-rw-r--r-- | runtime/syscall.h | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/runtime/syscall.h b/runtime/syscall.h index 8416fd1d..24fc7b1c 100644 --- a/runtime/syscall.h +++ b/runtime/syscall.h @@ -236,23 +236,18 @@ __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) +____stp_user_syscall_arg(struct task_struct *task, struct pt_regs *regs, + unsigned int n, unsigned long **cache) { - struct ia64_stap_get_arbsp_param pa; if (n > 5) { _stp_error("syscall arg > 5"); return NULL; } - - pa.ip = regs->cr_iip; - unw_init_running(ia64_stap_get_arbsp, &pa); - if (pa.address == 0) - return NULL; - - return ia64_rse_skip_regs(pa.address, n); - + return __ia64_fetch_register(n + 32, regs, cache); } #endif |