mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 02:05:33 +00:00
x86: entry_64 - introduce FTRACE_ frame macro v2
Impact: clean up Itroduce MCOUNT_SAVE/RESTORE_FRAME which allow us to save a number of lines on source level. Also fix a comment in ftrace.h. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
66896a85cf
commit
d680fe4477
@ -1,6 +1,33 @@
|
|||||||
#ifndef _ASM_X86_FTRACE_H
|
#ifndef _ASM_X86_FTRACE_H
|
||||||
#define _ASM_X86_FTRACE_H
|
#define _ASM_X86_FTRACE_H
|
||||||
|
|
||||||
|
#ifdef __ASSEMBLY__
|
||||||
|
|
||||||
|
.macro MCOUNT_SAVE_FRAME
|
||||||
|
/* taken from glibc */
|
||||||
|
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)
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro MCOUNT_RESTORE_FRAME
|
||||||
|
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
|
||||||
|
.endm
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_FUNCTION_TRACER
|
#ifdef CONFIG_FUNCTION_TRACER
|
||||||
#define MCOUNT_ADDR ((long)(mcount))
|
#define MCOUNT_ADDR ((long)(mcount))
|
||||||
#define MCOUNT_INSN_SIZE 5 /* sizeof mcount call */
|
#define MCOUNT_INSN_SIZE 5 /* sizeof mcount call */
|
||||||
@ -46,7 +73,7 @@ struct ftrace_ret_stack {
|
|||||||
/*
|
/*
|
||||||
* Primary handler of a function return.
|
* Primary handler of a function return.
|
||||||
* It relays on ftrace_return_to_handler.
|
* It relays on ftrace_return_to_handler.
|
||||||
* Defined in entry32.S
|
* Defined in entry_32/64.S
|
||||||
*/
|
*/
|
||||||
extern void return_to_handler(void);
|
extern void return_to_handler(void);
|
||||||
|
|
||||||
|
@ -71,15 +71,7 @@ ENTRY(ftrace_caller)
|
|||||||
cmpl $0, function_trace_stop
|
cmpl $0, function_trace_stop
|
||||||
jne ftrace_stub
|
jne ftrace_stub
|
||||||
|
|
||||||
/* taken from glibc */
|
MCOUNT_SAVE_FRAME
|
||||||
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 0x38(%rsp), %rdi
|
||||||
movq 8(%rbp), %rsi
|
movq 8(%rbp), %rsi
|
||||||
@ -89,14 +81,7 @@ ENTRY(ftrace_caller)
|
|||||||
ftrace_call:
|
ftrace_call:
|
||||||
call ftrace_stub
|
call ftrace_stub
|
||||||
|
|
||||||
movq 48(%rsp), %r9
|
MCOUNT_RESTORE_FRAME
|
||||||
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
|
|
||||||
|
|
||||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||||
.globl ftrace_graph_call
|
.globl ftrace_graph_call
|
||||||
@ -130,15 +115,7 @@ ftrace_stub:
|
|||||||
retq
|
retq
|
||||||
|
|
||||||
trace:
|
trace:
|
||||||
/* taken from glibc */
|
MCOUNT_SAVE_FRAME
|
||||||
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 0x38(%rsp), %rdi
|
||||||
movq 8(%rbp), %rsi
|
movq 8(%rbp), %rsi
|
||||||
@ -146,14 +123,7 @@ trace:
|
|||||||
|
|
||||||
call *ftrace_trace_function
|
call *ftrace_trace_function
|
||||||
|
|
||||||
movq 48(%rsp), %r9
|
MCOUNT_RESTORE_FRAME
|
||||||
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
|
|
||||||
|
|
||||||
jmp ftrace_stub
|
jmp ftrace_stub
|
||||||
END(mcount)
|
END(mcount)
|
||||||
@ -165,14 +135,7 @@ ENTRY(ftrace_graph_caller)
|
|||||||
cmpl $0, function_trace_stop
|
cmpl $0, function_trace_stop
|
||||||
jne ftrace_stub
|
jne ftrace_stub
|
||||||
|
|
||||||
subq $0x38, %rsp
|
MCOUNT_SAVE_FRAME
|
||||||
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)
|
|
||||||
|
|
||||||
leaq 8(%rbp), %rdi
|
leaq 8(%rbp), %rdi
|
||||||
movq 0x38(%rsp), %rsi
|
movq 0x38(%rsp), %rsi
|
||||||
@ -180,14 +143,8 @@ ENTRY(ftrace_graph_caller)
|
|||||||
|
|
||||||
call prepare_ftrace_return
|
call prepare_ftrace_return
|
||||||
|
|
||||||
movq 48(%rsp), %r9
|
MCOUNT_RESTORE_FRAME
|
||||||
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
|
retq
|
||||||
END(ftrace_graph_caller)
|
END(ftrace_graph_caller)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user