diff options
author | kevinrs <kevinrs> | 2005-09-24 00:01:01 +0000 |
---|---|---|
committer | kevinrs <kevinrs> | 2005-09-24 00:01:01 +0000 |
commit | a22ea9ad0815615ce00663c20b3e6d83fe6396fe (patch) | |
tree | f9ffbf323d76bdb36ca8ec02aef95ab33de85769 | |
parent | fbb24b89ec28da5754719732edec3f2dc5bc773e (diff) | |
download | systemtap-steved-a22ea9ad0815615ce00663c20b3e6d83fe6396fe.tar.gz systemtap-steved-a22ea9ad0815615ce00663c20b3e6d83fe6396fe.tar.xz systemtap-steved-a22ea9ad0815615ce00663c20b3e6d83fe6396fe.zip |
Arch agnostic function to get at return vals until $retval built-in is working.
-rw-r--r-- | tapset/return.stp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tapset/return.stp b/tapset/return.stp new file mode 100644 index 00000000..c6d0f48c --- /dev/null +++ b/tapset/return.stp @@ -0,0 +1,20 @@ +function retval:long() %{ + + if (CONTEXT && CONTEXT->regs) { +#if defined (__i386__) + THIS->__retvalue = CONTEXT->regs->eax; +#elif defined (__x86_64__) + THIS->__retvalue = CONTEXT->regs->rax; +#elif defined (__powerpc64__) + THIS->__retvalue = CONTEXT->regs->gpr[3]; +#elif defined (__ia64__) + THIS->__retvalue = CONTEXT->regs->r8; +#elif defined (__sparc64__) + THIS->__retvalue = CONTEXT->regs->u_regs[UREG_RETPC]; +#else + THIS->__retvalue = -1; +#endif + } + else + THIS->__retvalue = -1; +%} |