diff options
Diffstat (limited to 'arch/mips/kernel/ftrace.c')
| -rw-r--r-- | arch/mips/kernel/ftrace.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/mips/kernel/ftrace.c b/arch/mips/kernel/ftrace.c index 94ca2b018af..feb8021a305 100644 --- a/arch/mips/kernel/ftrace.c +++ b/arch/mips/kernel/ftrace.c @@ -23,6 +23,7 @@  #define JAL 0x0c000000		/* jump & link: ip --> ra, jump to target */  #define ADDR_MASK 0x03ffffff	/*  op_code|addr : 31...26|25 ....0 */ +#define JUMP_RANGE_MASK ((1UL << 28) - 1)  #define INSN_NOP 0x00000000	/* nop */  #define INSN_JAL(addr)	\ @@ -44,12 +45,12 @@ static inline void ftrace_dyn_arch_init_insns(void)  	/* jal (ftrace_caller + 8), jump over the first two instruction */  	buf = (u32 *)&insn_jal_ftrace_caller; -	uasm_i_jal(&buf, (FTRACE_ADDR + 8)); +	uasm_i_jal(&buf, (FTRACE_ADDR + 8) & JUMP_RANGE_MASK);  #ifdef CONFIG_FUNCTION_GRAPH_TRACER  	/* j ftrace_graph_caller */  	buf = (u32 *)&insn_j_ftrace_graph_caller; -	uasm_i_j(&buf, (unsigned long)ftrace_graph_caller); +	uasm_i_j(&buf, (unsigned long)ftrace_graph_caller & JUMP_RANGE_MASK);  #endif  }  |