Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
x86
include
asm
ftrace.h
Go to the documentation of this file.
1
#ifndef _ASM_X86_FTRACE_H
2
#define _ASM_X86_FTRACE_H
3
4
#ifdef __ASSEMBLY__
5
6
/* skip is set if the stack was already partially adjusted */
7
.macro MCOUNT_SAVE_FRAME
skip
=0
8
/*
9
* We add enough stack to save all regs.
10
*/
11
subq $(
SS
+8-\skip), %
rsp
12
movq %
rax
,
RAX
(%
rsp
)
13
movq %
rcx
,
RCX
(%
rsp
)
14
movq %
rdx
,
RDX
(%
rsp
)
15
movq %
rsi
,
RSI
(%
rsp
)
16
movq %
rdi
,
RDI
(%
rsp
)
17
movq %
r8
,
R8
(%
rsp
)
18
movq %
r9
,
R9
(%
rsp
)
19
/* Move RIP to its proper location */
20
movq
SS
+8(%
rsp
), %rdx
21
movq %rdx,
RIP
(%rsp)
22
.endm
23
24
.macro MCOUNT_RESTORE_FRAME
skip
=0
25
movq
R9
(%rsp), %r9
26
movq
R8
(%rsp), %r8
27
movq
RDI
(%rsp), %rdi
28
movq
RSI
(%rsp), %rsi
29
movq
RDX
(%rsp), %rdx
30
movq
RCX
(%rsp), %rcx
31
movq
RAX
(%rsp), %
rax
32
addq $(
SS
+8-\
skip
), %rsp
33
.endm
34
35
#endif
36
37
#ifdef CONFIG_FUNCTION_TRACER
38
#ifdef CC_USING_FENTRY
39
# define MCOUNT_ADDR ((long)(__fentry__))
40
#else
41
# define MCOUNT_ADDR ((long)(mcount))
42
#endif
43
#define MCOUNT_INSN_SIZE 5
/* sizeof mcount call */
44
45
#ifdef CONFIG_DYNAMIC_FTRACE
46
#define ARCH_SUPPORTS_FTRACE_OPS 1
47
#define ARCH_SUPPORTS_FTRACE_SAVE_REGS
48
#endif
49
50
#ifndef __ASSEMBLY__
51
extern
void
mcount
(
void
);
52
extern
atomic_t
modifying_ftrace_code;
53
extern
void
__fentry__(
void
);
54
55
static
inline
unsigned
long
ftrace_call_adjust(
unsigned
long
addr
)
56
{
57
/*
58
* addr is the address of the mcount call instruction.
59
* recordmcount does the necessary offset calculation.
60
*/
61
return
addr
;
62
}
63
64
#ifdef CONFIG_DYNAMIC_FTRACE
65
66
struct
dyn_arch_ftrace
{
67
/* No extra data needed for x86 */
68
};
69
70
int
ftrace_int3_handler(
struct
pt_regs
*
regs
);
71
72
#endif
/* CONFIG_DYNAMIC_FTRACE */
73
#endif
/* __ASSEMBLY__ */
74
#endif
/* CONFIG_FUNCTION_TRACER */
75
76
#endif
/* _ASM_X86_FTRACE_H */
Generated on Thu Jan 10 2013 12:49:38 for Linux Kernel by
1.8.2