blob: 3c29be4836ed53db58af9f2b8eefefadfb3aa8fc [file] [log] [blame]
Heiko Carstens5d360a72008-12-25 13:38:56 +01001#ifndef _ASM_S390_FTRACE_H
2#define _ASM_S390_FTRACE_H
3
4#ifndef __ASSEMBLY__
Heiko Carstensdfd9f7a2009-06-12 10:26:44 +02005
Heiko Carstens5d360a72008-12-25 13:38:56 +01006extern void _mcount(void);
Heiko Carstensdfd9f7a2009-06-12 10:26:44 +02007
8struct dyn_arch_ftrace { };
9
10#define MCOUNT_ADDR ((long)_mcount)
11
12#ifdef CONFIG_64BIT
Martin Schwidefsky4cc9bed2011-01-05 12:48:11 +010013#define MCOUNT_INSN_SIZE 12
Heiko Carstens88dbd202009-06-12 10:26:46 +020014#define MCOUNT_OFFSET 8
Martin Schwidefsky4cc9bed2011-01-05 12:48:11 +010015#else
16#define MCOUNT_INSN_SIZE 20
17#define MCOUNT_OFFSET 4
Heiko Carstens5d360a72008-12-25 13:38:56 +010018#endif
19
Heiko Carstensdfd9f7a2009-06-12 10:26:44 +020020static inline unsigned long ftrace_call_adjust(unsigned long addr)
21{
22 return addr - MCOUNT_OFFSET;
23}
24
25#endif /* __ASSEMBLY__ */
Heiko Carstens5d360a72008-12-25 13:38:56 +010026#endif /* _ASM_S390_FTRACE_H */