aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/mcount.S
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2014-10-07 09:45:10 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2014-10-09 03:14:18 -0400
commit53255c9a4dade6ff2162121430d13aaadb38a69c (patch)
tree1f6514d2397a3a10922abbdda3c59f792147a5c2 /arch/s390/kernel/mcount.S
parenta62bc0739253939d6fce40d51d92412252a9bb55 (diff)
s390/ftrace: remove 31 bit ftrace support
31 bit and 64 bit diverge more and more and it is rather painful to keep both parts running. To make things simpler just remove the 31 bit support which nobody uses anyway. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/mcount.S')
-rw-r--r--arch/s390/kernel/mcount.S87
1 files changed, 50 insertions, 37 deletions
diff --git a/arch/s390/kernel/mcount.S b/arch/s390/kernel/mcount.S
index be6dbd9a81a7..07abe8d464d4 100644
--- a/arch/s390/kernel/mcount.S
+++ b/arch/s390/kernel/mcount.S
@@ -8,60 +8,73 @@
8#include <linux/linkage.h> 8#include <linux/linkage.h>
9#include <asm/asm-offsets.h> 9#include <asm/asm-offsets.h>
10#include <asm/ftrace.h> 10#include <asm/ftrace.h>
11#include <asm/ptrace.h>
11 12
12 .section .kprobes.text, "ax" 13 .section .kprobes.text, "ax"
13 14
14ENTRY(ftrace_stub) 15ENTRY(ftrace_stub)
15 br %r14 16 br %r14
16 17
18#define STACK_FRAME_SIZE (STACK_FRAME_OVERHEAD + __PT_SIZE)
19#define STACK_PTREGS (STACK_FRAME_OVERHEAD)
20#define STACK_PTREGS_GPRS (STACK_PTREGS + __PT_GPRS)
21#define STACK_PTREGS_PSW (STACK_PTREGS + __PT_PSW)
22
17ENTRY(_mcount) 23ENTRY(_mcount)
18 br %r14 24 br %r14
19 25
20ENTRY(ftrace_caller) 26ENTRY(ftrace_caller)
21 stm %r2,%r5,16(%r15) 27 .globl ftrace_regs_caller
22 bras %r1,1f 28 .set ftrace_regs_caller,ftrace_caller
230: .long ftrace_trace_function 29 lgr %r1,%r15
241: st %r14,56(%r15) 30 aghi %r15,-STACK_FRAME_SIZE
25 lr %r0,%r15 31 stg %r1,__SF_BACKCHAIN(%r15)
26 ahi %r15,-96 32 stg %r1,(STACK_PTREGS_GPRS+15*8)(%r15)
27 l %r3,100(%r15) 33 stg %r0,(STACK_PTREGS_PSW+8)(%r15)
28 la %r2,0(%r14) 34 stmg %r2,%r14,(STACK_PTREGS_GPRS+2*8)(%r15)
29 st %r0,__SF_BACKCHAIN(%r15) 35#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
30 la %r3,0(%r3) 36 aghik %r2,%r0,-MCOUNT_INSN_SIZE
31 ahi %r2,-MCOUNT_INSN_SIZE 37 lgrl %r4,function_trace_op
32 l %r14,0b-0b(%r1) 38 lgrl %r1,ftrace_trace_function
33 l %r14,0(%r14) 39#else
34 basr %r14,%r14 40 lgr %r2,%r0
41 aghi %r2,-MCOUNT_INSN_SIZE
42 larl %r4,function_trace_op
43 lg %r4,0(%r4)
44 larl %r1,ftrace_trace_function
45 lg %r1,0(%r1)
46#endif
47 lgr %r3,%r14
48 la %r5,STACK_PTREGS(%r15)
49 basr %r14,%r1
35#ifdef CONFIG_FUNCTION_GRAPH_TRACER 50#ifdef CONFIG_FUNCTION_GRAPH_TRACER
36 l %r2,100(%r15) 51# The j instruction gets runtime patched to a nop instruction.
37 l %r3,152(%r15)
38ENTRY(ftrace_graph_caller)
39# The bras instruction gets runtime patched to call prepare_ftrace_return.
40# See ftrace_enable_ftrace_graph_caller. The patched instruction is: 52# See ftrace_enable_ftrace_graph_caller. The patched instruction is:
41# bras %r14,prepare_ftrace_return 53# j .+4
42 bras %r14,0f 54ENTRY(ftrace_graph_caller)
430: st %r2,100(%r15) 55 j ftrace_graph_caller_end
56 lg %r2,(STACK_PTREGS_GPRS+14*8)(%r15)
57 lg %r3,(STACK_PTREGS_PSW+8)(%r15)
58 brasl %r14,prepare_ftrace_return
59 stg %r2,(STACK_PTREGS_GPRS+14*8)(%r15)
60ftrace_graph_caller_end:
61 .globl ftrace_graph_caller_end
44#endif 62#endif
45 ahi %r15,96 63 lg %r1,(STACK_PTREGS_PSW+8)(%r15)
46 l %r14,56(%r15) 64 lmg %r2,%r15,(STACK_PTREGS_GPRS+2*8)(%r15)
47 lm %r2,%r5,16(%r15) 65 br %r1
48 br %r14
49 66
50#ifdef CONFIG_FUNCTION_GRAPH_TRACER 67#ifdef CONFIG_FUNCTION_GRAPH_TRACER
51 68
52ENTRY(return_to_handler) 69ENTRY(return_to_handler)
53 stm %r2,%r5,16(%r15) 70 stmg %r2,%r5,32(%r15)
54 st %r14,56(%r15) 71 lgr %r1,%r15
55 lr %r0,%r15 72 aghi %r15,-STACK_FRAME_OVERHEAD
56 ahi %r15,-96 73 stg %r1,__SF_BACKCHAIN(%r15)
57 st %r0,__SF_BACKCHAIN(%r15) 74 brasl %r14,ftrace_return_to_handler
58 bras %r1,0f 75 aghi %r15,STACK_FRAME_OVERHEAD
59 .long ftrace_return_to_handler 76 lgr %r14,%r2
600: l %r2,0b-0b(%r1) 77 lmg %r2,%r5,32(%r15)
61 basr %r14,%r2
62 lr %r14,%r2
63 ahi %r15,96
64 lm %r2,%r5,16(%r15)
65 br %r14 78 br %r14
66 79
67#endif 80#endif