Messages in this thread | | | Date | Fri, 8 Aug 2008 21:30:33 -0400 (EDT) | From | Steven Rostedt <> | Subject | Re: [PATCH 0/5] ftrace: to kill a daemon |
| |
On Sat, 9 Aug 2008, Andi Kleen wrote:
> > I wish we had a true 5 byte nop. The alternative is a jmp 0, which is > > measurable. This is replacing mcount from a kernel compile with the -pg > > Scary usage. How much is the difference? > > BTW a good way to get most of that back would be to not use frame > pointers if you have them enabled ;-) Unfortunately recently > the "select FRAME_POINTER"s keep creeping all over so far too many kernels > suffer from this slow mode now :-/
Funny, CONFIG_FTRACE happens to select that. Now the question is, would mcount work without it?
i386: ENTRY(mcount) pushl %eax pushl %ecx pushl %edx movl 0xc(%esp), %eax movl 0x4(%ebp), %edx <-- we record the parent ip here subl $MCOUNT_INSN_SIZE, %eax
call *ftrace_trace_function
popl %edx popl %ecx popl %eax ret
x86_64: ENTRY(mcount) subq $0x38, %rsp movq %rax, (%rsp) movq %rcx, 8(%rsp) movq %rdx, 16(%rsp) movq %rsi, 24(%rsp) movq %rdi, 32(%rsp) movq %r8, 40(%rsp) movq %r9, 48(%rsp)
movq 0x38(%rsp), %rdi movq 8(%rbp), %rsi <-- we record the parent pointer here subq $MCOUNT_INSN_SIZE, %rdi
call *ftrace_trace_function
movq 48(%rsp), %r9 movq 40(%rsp), %r8 movq 32(%rsp), %rdi movq 24(%rsp), %rsi movq 16(%rsp), %rdx movq 8(%rsp), %rcx movq (%rsp), %rax addq $0x38, %rsp retq
-- Steve
| |