diff options
author | Keir Fraser <keir@xensource.com> | 2007-10-12 13:06:02 +0100 |
---|---|---|
committer | Keir Fraser <keir@xensource.com> | 2007-10-12 13:06:02 +0100 |
commit | 06a73c9f9380bba455cbf1a5502b902d01a5dc3f (patch) | |
tree | 56e70068152a5fb6d4a893a15c3cf4449549d919 /xen/arch/x86/x86_64/entry.S | |
parent | 70c2e55854116bee937026175e54985a73f159fa (diff) | |
download | xen-06a73c9f9380bba455cbf1a5502b902d01a5dc3f.tar.gz xen-06a73c9f9380bba455cbf1a5502b902d01a5dc3f.tar.bz2 xen-06a73c9f9380bba455cbf1a5502b902d01a5dc3f.zip |
xentrace/x86: PV guest tracing extensions.
From: George Dunlap <gdunlap@xensource.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/arch/x86/x86_64/entry.S')
-rw-r--r-- | xen/arch/x86/x86_64/entry.S | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index 30d3bf38ce..ad9e9ceebc 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -148,6 +148,18 @@ ENTRY(syscall_enter) pushq %rax pushq UREGS_rip+8(%rsp) #endif + cmpb $0,tb_init_done(%rip) + je tracing_off + call trace_hypercall + /* Now restore all the registers that trace_hypercall clobbered */ + movq UREGS_rax(%rsp),%rax /* Hypercall # */ + movq UREGS_rdi(%rsp),%rdi /* Arg 1 */ + movq UREGS_rsi(%rsp),%rsi /* Arg 2 */ + movq UREGS_rdx(%rsp),%rdx /* Arg 3 */ + movq UREGS_r10(%rsp),%rcx /* Arg 4 */ + movq UREGS_rdi(%rsp),%r8 /* Arg 5 */ + movq UREGS_rbp(%rsp),%r9 /* Arg 6 */ +tracing_off: leaq hypercall_table(%rip),%r10 PERFC_INCR(PERFC_hypercalls, %rax, %rbx) callq *(%r10,%rax,8) |