sparc64: Add function graph tracer support.
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -26,22 +26,42 @@ mcount:
|
||||
#else
|
||||
sethi %hi(function_trace_stop), %g1
|
||||
lduw [%g1 + %lo(function_trace_stop)], %g2
|
||||
brnz,pn %g2, 1f
|
||||
brnz,pn %g2, 2f
|
||||
sethi %hi(ftrace_trace_function), %g1
|
||||
sethi %hi(ftrace_stub), %g2
|
||||
ldx [%g1 + %lo(ftrace_trace_function)], %g1
|
||||
or %g2, %lo(ftrace_stub), %g2
|
||||
cmp %g1, %g2
|
||||
be,pn %icc, 1f
|
||||
mov %i7, %g2
|
||||
mov %i7, %g3
|
||||
save %sp, -128, %sp
|
||||
mov %g2, %o1
|
||||
mov %g3, %o1
|
||||
jmpl %g1, %o7
|
||||
mov %i7, %o0
|
||||
ret
|
||||
restore
|
||||
/* not reached */
|
||||
1:
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
sethi %hi(ftrace_graph_return), %g1
|
||||
ldx [%g1 + %lo(ftrace_graph_return)], %g3
|
||||
cmp %g2, %g3
|
||||
bne,pn %xcc, 5f
|
||||
sethi %hi(ftrace_graph_entry_stub), %g2
|
||||
sethi %hi(ftrace_graph_entry), %g1
|
||||
or %g2, %lo(ftrace_graph_entry_stub), %g2
|
||||
ldx [%g1 + %lo(ftrace_graph_entry)], %g1
|
||||
cmp %g1, %g2
|
||||
be,pt %xcc, 2f
|
||||
nop
|
||||
5: mov %i7, %g2
|
||||
mov %fp, %g3
|
||||
save %sp, -128, %sp
|
||||
mov %g2, %l0
|
||||
ba,pt %xcc, ftrace_graph_caller
|
||||
mov %g3, %l1
|
||||
#endif
|
||||
2:
|
||||
#endif
|
||||
#endif
|
||||
retl
|
||||
@@ -62,18 +82,48 @@ ftrace_stub:
|
||||
ftrace_caller:
|
||||
sethi %hi(function_trace_stop), %g1
|
||||
mov %i7, %g2
|
||||
lduw [%g1 + %lo(function_trace_stop)], %g3
|
||||
brnz,pn %g3, ftrace_stub
|
||||
nop
|
||||
lduw [%g1 + %lo(function_trace_stop)], %g1
|
||||
brnz,pn %g1, ftrace_stub
|
||||
mov %fp, %g3
|
||||
save %sp, -128, %sp
|
||||
mov %g2, %o1
|
||||
mov %g2, %l0
|
||||
mov %g3, %l1
|
||||
.globl ftrace_call
|
||||
ftrace_call:
|
||||
call ftrace_stub
|
||||
mov %i7, %o0
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
.globl ftrace_graph_call
|
||||
ftrace_graph_call:
|
||||
call ftrace_stub
|
||||
nop
|
||||
#endif
|
||||
ret
|
||||
restore
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
.size ftrace_graph_call,.-ftrace_graph_call
|
||||
#endif
|
||||
.size ftrace_call,.-ftrace_call
|
||||
.size ftrace_caller,.-ftrace_caller
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||
ENTRY(ftrace_graph_caller)
|
||||
mov %l0, %o0
|
||||
mov %i7, %o1
|
||||
call prepare_ftrace_return
|
||||
mov %l1, %o2
|
||||
ret
|
||||
restore %o0, -8, %i7
|
||||
END(ftrace_graph_caller)
|
||||
|
||||
ENTRY(return_to_handler)
|
||||
save %sp, -128, %sp
|
||||
call ftrace_return_to_handler
|
||||
mov %fp, %o0
|
||||
jmpl %o0 + 8, %g0
|
||||
restore
|
||||
END(return_to_handler)
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user