Lines Matching refs:rec
139 struct dyn_ftrace *rec, unsigned long addr) in ftrace_make_nop() argument
142 unsigned long ip = rec->ip; in ftrace_make_nop()
156 return ftrace_modify_code_direct(rec->ip, old, new); in ftrace_make_nop()
165 int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) in ftrace_make_call() argument
168 unsigned long ip = rec->ip; in ftrace_make_call()
174 return ftrace_modify_code_direct(rec->ip, old, new); in ftrace_make_call()
222 int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_addr, in ftrace_modify_call() argument
330 static int add_brk_on_call(struct dyn_ftrace *rec, unsigned long addr) in add_brk_on_call() argument
333 unsigned long ip = rec->ip; in add_brk_on_call()
337 return add_break(rec->ip, old); in add_brk_on_call()
341 static int add_brk_on_nop(struct dyn_ftrace *rec) in add_brk_on_nop() argument
347 return add_break(rec->ip, old); in add_brk_on_nop()
350 static int add_breakpoints(struct dyn_ftrace *rec, int enable) in add_breakpoints() argument
355 ftrace_addr = ftrace_get_addr_curr(rec); in add_breakpoints()
357 ret = ftrace_test_record(rec, enable); in add_breakpoints()
365 return add_brk_on_nop(rec); in add_breakpoints()
370 return add_brk_on_call(rec, ftrace_addr); in add_breakpoints()
383 static int remove_breakpoint(struct dyn_ftrace *rec) in remove_breakpoint() argument
389 unsigned long ip = rec->ip; in remove_breakpoint()
412 ftrace_addr = ftrace_get_addr_new(rec); in remove_breakpoint()
419 ftrace_addr = ftrace_get_addr_curr(rec); in remove_breakpoint()
440 static int add_update_call(struct dyn_ftrace *rec, unsigned long addr) in add_update_call() argument
442 unsigned long ip = rec->ip; in add_update_call()
449 static int add_update_nop(struct dyn_ftrace *rec) in add_update_nop() argument
451 unsigned long ip = rec->ip; in add_update_nop()
458 static int add_update(struct dyn_ftrace *rec, int enable) in add_update() argument
463 ret = ftrace_test_record(rec, enable); in add_update()
465 ftrace_addr = ftrace_get_addr_new(rec); in add_update()
474 return add_update_call(rec, ftrace_addr); in add_update()
478 return add_update_nop(rec); in add_update()
484 static int finish_update_call(struct dyn_ftrace *rec, unsigned long addr) in finish_update_call() argument
486 unsigned long ip = rec->ip; in finish_update_call()
494 static int finish_update_nop(struct dyn_ftrace *rec) in finish_update_nop() argument
496 unsigned long ip = rec->ip; in finish_update_nop()
504 static int finish_update(struct dyn_ftrace *rec, int enable) in finish_update() argument
509 ret = ftrace_update_record(rec, enable); in finish_update()
511 ftrace_addr = ftrace_get_addr_new(rec); in finish_update()
520 return finish_update_call(rec, ftrace_addr); in finish_update()
524 return finish_update_nop(rec); in finish_update()
556 struct dyn_ftrace *rec; in ftrace_replace_code() local
562 rec = ftrace_rec_iter_record(iter); in ftrace_replace_code()
564 ret = add_breakpoints(rec, enable); in ftrace_replace_code()
576 rec = ftrace_rec_iter_record(iter); in ftrace_replace_code()
578 ret = add_update(rec, enable); in ftrace_replace_code()
590 rec = ftrace_rec_iter_record(iter); in ftrace_replace_code()
592 ret = finish_update(rec, enable); in ftrace_replace_code()
604 ftrace_bug(ret, rec); in ftrace_replace_code()
606 rec = ftrace_rec_iter_record(iter); in ftrace_replace_code()
611 if (remove_breakpoint(rec)) in ftrace_replace_code()
906 static void *static_tramp_func(struct ftrace_ops *ops, struct dyn_ftrace *rec) in static_tramp_func() argument
909 bool save_regs = rec->flags & FTRACE_FL_REGS_EN; in static_tramp_func()
934 void *arch_ftrace_trampoline_func(struct ftrace_ops *ops, struct dyn_ftrace *rec) in arch_ftrace_trampoline_func() argument
940 return static_tramp_func(ops, rec); in arch_ftrace_trampoline_func()