Lines Matching refs:ip

46 static ppc_inst_t ftrace_create_branch_inst(unsigned long ip, unsigned long addr, int link)  in ftrace_create_branch_inst()  argument
50 WARN_ON(!is_offset_in_branch_range(addr - ip)); in ftrace_create_branch_inst()
51 create_branch(&op, (u32 *)ip, addr, link ? BRANCH_SET_LINK : 0); in ftrace_create_branch_inst()
56 static inline int ftrace_read_inst(unsigned long ip, ppc_inst_t *op) in ftrace_read_inst() argument
58 if (copy_inst_from_kernel_nofault(op, (void *)ip)) { in ftrace_read_inst()
59 pr_err("0x%lx: fetching instruction failed\n", ip); in ftrace_read_inst()
66 static inline int ftrace_validate_inst(unsigned long ip, ppc_inst_t inst) in ftrace_validate_inst() argument
71 ret = ftrace_read_inst(ip, &op); in ftrace_validate_inst()
74 ip, ppc_inst_as_ulong(inst), ppc_inst_as_ulong(op)); in ftrace_validate_inst()
81 static inline int ftrace_modify_code(unsigned long ip, ppc_inst_t old, ppc_inst_t new) in ftrace_modify_code() argument
83 int ret = ftrace_validate_inst(ip, old); in ftrace_modify_code()
86 ret = patch_instruction((u32 *)ip, new); in ftrace_modify_code()
96 static unsigned long find_ftrace_tramp(unsigned long ip) in find_ftrace_tramp() argument
103 else if (is_offset_in_branch_range(ftrace_tramps[i] - ip)) in find_ftrace_tramp()
111 unsigned long ip = rec->ip; in ftrace_get_call_inst() local
114 if (is_offset_in_branch_range(addr - ip)) { in ftrace_get_call_inst()
123 } else if (core_kernel_text(ip)) { in ftrace_get_call_inst()
125 stub = find_ftrace_tramp(ip); in ftrace_get_call_inst()
127 pr_err("0x%lx: No ftrace stubs reachable\n", ip); in ftrace_get_call_inst()
134 *call_inst = ftrace_create_branch_inst(ip, stub, 1); in ftrace_get_call_inst()
153 if (WARN_ON(!IS_ENABLED(CONFIG_MODULES) || core_kernel_text(rec->ip))) in ftrace_make_call()
161 return ftrace_modify_code(rec->ip, old, new); in ftrace_make_call()
178 unsigned long ip, new_addr, addr; in ftrace_replace_code() local
185 ip = rec->ip; in ftrace_replace_code()
217 ret = ftrace_modify_code(ip, old, new); in ftrace_replace_code()
230 unsigned long addr, ip = rec->ip; in ftrace_init_nop() local
237 ret = ftrace_validate_inst(ip - 4, ppc_inst(PPC_RAW_NOP())); in ftrace_init_nop()
239 ret = ftrace_validate_inst(ip, ppc_inst(PPC_RAW_NOP())); in ftrace_init_nop()
242 ret = ftrace_validate_inst(ip - 8, ppc_inst(PPC_RAW_MFLR(_R0))); in ftrace_init_nop()
244 ret = ftrace_validate_inst(ip - 4, ppc_inst(PPC_RAW_STW(_R0, _R1, 4))); in ftrace_init_nop()
247 ret = ftrace_read_inst(ip - 4, &old); in ftrace_init_nop()
249 ret = ftrace_validate_inst(ip - 8, ppc_inst(PPC_RAW_MFLR(_R0))); in ftrace_init_nop()
250 ret |= ftrace_validate_inst(ip - 4, ppc_inst(PPC_RAW_STD(_R0, _R1, 16))); in ftrace_init_nop()
259 if (!core_kernel_text(ip)) { in ftrace_init_nop()
261 pr_err("0x%lx: No module provided for non-kernel address\n", ip); in ftrace_init_nop()
274 ret = ftrace_modify_code(ip - 4, old, new); in ftrace_init_nop()
275 } else if (is_offset_in_branch_range(addr - ip)) { in ftrace_init_nop()
277 old = ftrace_create_branch_inst(ip, addr, 1); in ftrace_init_nop()
278 ret = ftrace_modify_code(ip, old, new); in ftrace_init_nop()
279 } else if (core_kernel_text(ip) || (IS_ENABLED(CONFIG_MODULES) && mod)) { in ftrace_init_nop()
284 ret = ftrace_read_inst(ip, &old); in ftrace_init_nop()
288 pr_err("0x%lx: expected (bl) != found (%08lx)\n", ip, ppc_inst_as_ulong(old)); in ftrace_init_nop()
291 ret = patch_instruction((u32 *)ip, new); in ftrace_init_nop()
301 unsigned long ip = (unsigned long)(&ftrace_call); in ftrace_update_ftrace_func() local
306 new = ftrace_create_branch_inst(ip, ppc_function_entry(func), 1); in ftrace_update_ftrace_func()
307 ret = ftrace_modify_code(ip, old, new); in ftrace_update_ftrace_func()
311 ip = (unsigned long)(&ftrace_regs_call); in ftrace_update_ftrace_func()
313 new = ftrace_create_branch_inst(ip, ppc_function_entry(func), 1); in ftrace_update_ftrace_func()
314 ret = ftrace_modify_code(ip, old, new); in ftrace_update_ftrace_func()
421 void ftrace_graph_func(unsigned long ip, unsigned long parent_ip, in ftrace_graph_func() argument
433 bit = ftrace_test_recursion_trylock(ip, parent_ip); in ftrace_graph_func()
437 if (!function_graph_enter(parent_ip, ip, 0, (unsigned long *)sp)) in ftrace_graph_func()