123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- /*
- * Copyright (c) 2012, Chris Andrews. All rights reserved.
- */
-
- /*
- * Stub functions containing DTrace tracepoints for probes and
- * is-enabled probes. These functions are copied for each probe
- * dynamically created.
- *
- */
- .text
-
- .align 4, 0x90
- .globl usdt_tracepoint_isenabled
- .globl _usdt_tracepoint_isenabled
- .globl usdt_tracepoint_probe
- .globl _usdt_tracepoint_probe
- .globl usdt_tracepoint_end
- .globl _usdt_tracepoint_end
- .globl usdt_probe_args
- .globl _usdt_probe_args
-
- usdt_tracepoint_isenabled:
- _usdt_tracepoint_isenabled:
- pushq %rbp
- movq %rsp, %rbp
- addq $1, %rax
- xorq %rax, %rax
- nop
- nop
- leave
- ret
- usdt_tracepoint_probe:
- _usdt_tracepoint_probe:
- nop
- nop
- nop
- nop
- nop
- addq %r14,%rsp
- popq %rbx
- popq %r14
- popq %r13
- popq %r12
- leave
- usdt_tracepoint_end:
- _usdt_tracepoint_end:
- ret
-
- /*
- * Probe argument marshalling, x86_64 style
- *
- */
-
- usdt_probe_args:
- _usdt_probe_args:
- pushq %rbp
- movq %rsp,%rbp
- pushq %r12
- pushq %r13
- pushq %r14
- pushq %rbx
-
- movq %rdi,%r12
- movq %rsi,%rbx
- movq %rdx,%r11
- movq $0,%r14
-
- test %rbx,%rbx
- je fire
- movq (%r11),%rdi
- dec %rbx
- test %rbx,%rbx
- je fire
- addq $8,%r11
- movq (%r11),%rsi
- dec %rbx
- test %rbx,%rbx
- je fire
- addq $8,%r11
- movq (%r11),%rdx
- dec %rbx
- test %rbx,%rbx
- je fire
- addq $8,%r11
- movq (%r11),%rcx
- dec %rbx
- test %rbx,%rbx
- je fire
- addq $8,%r11
- movq (%r11),%r8
- dec %rbx
- test %rbx,%rbx
- je fire
- addq $8,%r11
- movq (%r11),%r9
-
- movq %rbx,%r13
- morestack:
- dec %rbx
- test %rbx,%rbx
- je args
- subq $16,%rsp
- addq $16,%r14
- dec %rbx
- test %rbx,%rbx
- je args
- jmp morestack
-
- args:
- movq %r13,%rbx
- movq $0,%r13
- moreargs:
- dec %rbx
- test %rbx,%rbx
- je fire
- addq $8,%r11
- movq (%r11),%rax
- movq %rax,(%rsp,%r13)
- addq $8,%r13
- jmp moreargs
-
- fire: jmp *%r12
|