Lines Matching refs:rec
153 struct dyn_ftrace *rec, unsigned long addr) in ftrace_make_nop() argument
156 unsigned long ip = rec->ip; in ftrace_make_nop()
170 return ftrace_modify_code_direct(rec->ip, old, new); in ftrace_make_nop()
179 int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) in ftrace_make_call() argument
182 unsigned long ip = rec->ip; in ftrace_make_call()
188 return ftrace_modify_code_direct(rec->ip, old, new); in ftrace_make_call()
236 int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_addr, in ftrace_modify_call() argument
356 static int add_brk_on_call(struct dyn_ftrace *rec, unsigned long addr) in add_brk_on_call() argument
359 unsigned long ip = rec->ip; in add_brk_on_call()
363 return add_break(rec->ip, old); in add_brk_on_call()
367 static int add_brk_on_nop(struct dyn_ftrace *rec) in add_brk_on_nop() argument
373 return add_break(rec->ip, old); in add_brk_on_nop()
376 static int add_breakpoints(struct dyn_ftrace *rec, bool enable) in add_breakpoints() argument
381 ftrace_addr = ftrace_get_addr_curr(rec); in add_breakpoints()
383 ret = ftrace_test_record(rec, enable); in add_breakpoints()
391 return add_brk_on_nop(rec); in add_breakpoints()
396 return add_brk_on_call(rec, ftrace_addr); in add_breakpoints()
409 static int remove_breakpoint(struct dyn_ftrace *rec) in remove_breakpoint() argument
415 unsigned long ip = rec->ip; in remove_breakpoint()
438 ftrace_addr = ftrace_get_addr_new(rec); in remove_breakpoint()
445 ftrace_addr = ftrace_get_addr_curr(rec); in remove_breakpoint()
466 static int add_update_call(struct dyn_ftrace *rec, unsigned long addr) in add_update_call() argument
468 unsigned long ip = rec->ip; in add_update_call()
475 static int add_update_nop(struct dyn_ftrace *rec) in add_update_nop() argument
477 unsigned long ip = rec->ip; in add_update_nop()
484 static int add_update(struct dyn_ftrace *rec, bool enable) in add_update() argument
489 ret = ftrace_test_record(rec, enable); in add_update()
491 ftrace_addr = ftrace_get_addr_new(rec); in add_update()
500 return add_update_call(rec, ftrace_addr); in add_update()
504 return add_update_nop(rec); in add_update()
510 static int finish_update_call(struct dyn_ftrace *rec, unsigned long addr) in finish_update_call() argument
512 unsigned long ip = rec->ip; in finish_update_call()
520 static int finish_update_nop(struct dyn_ftrace *rec) in finish_update_nop() argument
522 unsigned long ip = rec->ip; in finish_update_nop()
530 static int finish_update(struct dyn_ftrace *rec, bool enable) in finish_update() argument
535 ret = ftrace_update_record(rec, enable); in finish_update()
537 ftrace_addr = ftrace_get_addr_new(rec); in finish_update()
546 return finish_update_call(rec, ftrace_addr); in finish_update()
550 return finish_update_nop(rec); in finish_update()
582 struct dyn_ftrace *rec; in ftrace_replace_code() local
588 rec = ftrace_rec_iter_record(iter); in ftrace_replace_code()
590 ret = add_breakpoints(rec, enable); in ftrace_replace_code()
602 rec = ftrace_rec_iter_record(iter); in ftrace_replace_code()
604 ret = add_update(rec, enable); in ftrace_replace_code()
616 rec = ftrace_rec_iter_record(iter); in ftrace_replace_code()
618 ret = finish_update(rec, enable); in ftrace_replace_code()
630 ftrace_bug(ret, rec); in ftrace_replace_code()
632 rec = ftrace_rec_iter_record(iter); in ftrace_replace_code()
637 if (remove_breakpoint(rec)) in ftrace_replace_code()
927 static void *static_tramp_func(struct ftrace_ops *ops, struct dyn_ftrace *rec) in static_tramp_func() argument
930 bool save_regs = rec->flags & FTRACE_FL_REGS_EN; in static_tramp_func()
955 void *arch_ftrace_trampoline_func(struct ftrace_ops *ops, struct dyn_ftrace *rec) in arch_ftrace_trampoline_func() argument
961 return static_tramp_func(ops, rec); in arch_ftrace_trampoline_func()