Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e71e99c2 authored by Steven Rostedt's avatar Steven Rostedt Committed by Ingo Molnar
Browse files

x86, function-graph: only save return values on x86_64



Impact: speed up

The return to handler portion of the function graph tracer should only
need to save the return values. The caller already saved off the
registers that the callee can modify. The returning function already
saved the registers it modified. When we call our own trace function
it too will save the registers that the callee must restore.

There's no reason to save off anything more that the registers used
to return the values.

Note, I did a complete kernel build with this modification and the
function graph tracer running on x86_64.

Signed-off-by: default avatarSteven Rostedt <srostedt@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 2062501a
Loading
Loading
Loading
Loading
+3 −16
Original line number Diff line number Diff line
@@ -147,27 +147,14 @@ END(ftrace_graph_caller)
GLOBAL(return_to_handler)
	subq  $80, %rsp

	/* Save the return values */
	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 %r10, 56(%rsp)
	movq %r11, 64(%rsp)
	movq %rdx, 8(%rsp)

	call ftrace_return_to_handler

	movq %rax, 72(%rsp)
	movq 64(%rsp), %r11
	movq 56(%rsp), %r10
	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 8(%rsp), %rdx
	movq (%rsp), %rax
	addq $72, %rsp
	retq