summaryrefslogtreecommitdiffstats
path: root/runtime/loc2c-runtime.h
diff options
context:
space:
mode:
authorddomingo <ddomingo@redhat.com>2008-09-03 09:44:45 +1000
committerddomingo <ddomingo@redhat.com>2008-09-03 09:44:45 +1000
commit404939a6c4f982062116f05aa22f7dff0b0ce24e (patch)
tree53015ff483f6ed2d1e9cdabc9289358ade12a0e3 /runtime/loc2c-runtime.h
parentaac23edfa124a016581871770af84d10efc38239 (diff)
parentf02dd36464a34542d5f853d8643cc473af59c5b2 (diff)
downloadsystemtap-steved-404939a6c4f982062116f05aa22f7dff0b0ce24e.tar.gz
systemtap-steved-404939a6c4f982062116f05aa22f7dff0b0ce24e.tar.xz
systemtap-steved-404939a6c4f982062116f05aa22f7dff0b0ce24e.zip
Merge branch 'master' of ssh://sources.redhat.com/git/systemtap
Diffstat (limited to 'runtime/loc2c-runtime.h')
-rw-r--r--runtime/loc2c-runtime.h7
1 files changed, 2 insertions, 5 deletions
diff --git a/runtime/loc2c-runtime.h b/runtime/loc2c-runtime.h
index 215676ee..1247da51 100644
--- a/runtime/loc2c-runtime.h
+++ b/runtime/loc2c-runtime.h
@@ -113,16 +113,13 @@
kernel mode, it is not saved in the trap frame (struct pt_regs).
The `esp' (and `xss') fields are valid only for a user-mode trap.
For a kernel mode trap, the interrupted state's esp is actually an
- address inside where the `struct pt_regs' on the kernel trap stack points.
-
- For now we assume all traps are from kprobes in kernel-mode code.
- For extra paranoia, could do BUG_ON((regs->xcs & 3) == 3). */
+ address inside where the `struct pt_regs' on the kernel trap stack points. */
#define dwarf_register_0(regs) regs->eax
#define dwarf_register_1(regs) regs->ecx
#define dwarf_register_2(regs) regs->edx
#define dwarf_register_3(regs) regs->ebx
-#define dwarf_register_4(regs) ((long) &regs->esp)
+#define dwarf_register_4(regs) (user_mode(regs) ? regs->esp : (long)&regs->esp)
#define dwarf_register_5(regs) regs->ebp
#define dwarf_register_6(regs) regs->esi
#define dwarf_register_7(regs) regs->edi