The `too much stuff, just check the ChangeLog' update
diff --git a/syscall.c b/syscall.c
index 47bf16d..29a805e 100644
--- a/syscall.c
+++ b/syscall.c
@@ -775,7 +775,8 @@
scno = tcp->status.PR_WHAT;
#endif /* !HAVE_PR_SYSCALL */
#endif
- tcp->scno = scno;
+ if (!(tcp->flags & TCB_INSYSCALL))
+ tcp->scno = scno;
return 1;
}
@@ -1074,10 +1075,14 @@
}
#elif defined (IA64)
{
- unsigned long *bsp, i;
+ unsigned long *bsp, cfm, i;
if (upeek(pid, PT_AR_BSP, (long *) &bsp) < 0)
return -1;
+ if (upeek(pid, PT_CFM, (long *) &cfm) < 0)
+ return -1;
+
+ bsp = ia64_rse_skip_regs(bsp, -(cfm & 0x7f));
tcp->u_nargs = sysent[tcp->scno].nargs;
for (i = 0; i < tcp->u_nargs; ++i) {