Lines Matching refs:ip

45 ftrace_call_replace(unsigned long ip, unsigned long addr, int link)  in ftrace_call_replace()  argument
52 create_branch(&op, (struct ppc_inst *)ip, addr, link ? 1 : 0); in ftrace_call_replace()
58 ftrace_modify_code(unsigned long ip, struct ppc_inst old, struct ppc_inst new) in ftrace_modify_code() argument
71 if (probe_kernel_read_inst(&replaced, (void *)ip)) in ftrace_modify_code()
77 (void *)ip, ppc_inst_as_str(replaced), ppc_inst_as_str(old)); in ftrace_modify_code()
82 if (patch_instruction((struct ppc_inst *)ip, new)) in ftrace_modify_code()
91 static int test_24bit_addr(unsigned long ip, unsigned long addr) in test_24bit_addr() argument
97 return create_branch(&op, (struct ppc_inst *)ip, addr, 0) == 0; in test_24bit_addr()
110 static unsigned long find_bl_target(unsigned long ip, struct ppc_inst op) in find_bl_target() argument
119 return ip + (long)offset; in find_bl_target()
129 unsigned long ip = rec->ip; in __ftrace_make_nop() local
133 if (probe_kernel_read_inst(&op, (void *)ip)) { in __ftrace_make_nop()
145 tramp = find_bl_target(ip, op); in __ftrace_make_nop()
147 pr_devel("ip:%lx jumps to %lx", ip, tramp); in __ftrace_make_nop()
167 if (probe_kernel_read_inst(&op, (void *)(ip - 4))) { in __ftrace_make_nop()
168 pr_err("Fetching instruction at %lx failed.\n", ip - 4); in __ftrace_make_nop()
200 if (probe_kernel_read_inst(&op, (void *)(ip + 4))) { in __ftrace_make_nop()
211 if (patch_instruction((struct ppc_inst *)ip, pop)) { in __ftrace_make_nop()
226 unsigned long ip = rec->ip; in __ftrace_make_nop() local
229 if (copy_from_kernel_nofault(&op, (void *)ip, MCOUNT_INSN_SIZE)) in __ftrace_make_nop()
239 tramp = find_bl_target(ip, op); in __ftrace_make_nop()
249 pr_devel("ip:%lx jumps to %lx", ip, tramp); in __ftrace_make_nop()
283 if (patch_instruction((struct ppc_inst *)ip, op)) in __ftrace_make_nop()
291 static unsigned long find_ftrace_tramp(unsigned long ip) in find_ftrace_tramp() argument
303 else if (create_branch(&instr, (void *)ip, in find_ftrace_tramp()
398 unsigned long tramp, ip = rec->ip; in __ftrace_make_nop_kernel() local
402 if (probe_kernel_read_inst(&op, (void *)ip)) { in __ftrace_make_nop_kernel()
414 tramp = find_bl_target(ip, op); in __ftrace_make_nop_kernel()
416 pr_devel("ip:%lx jumps to %lx", ip, tramp); in __ftrace_make_nop_kernel()
420 if (!find_ftrace_tramp(ip)) { in __ftrace_make_nop_kernel()
422 (void *)ip); in __ftrace_make_nop_kernel()
427 if (patch_instruction((struct ppc_inst *)ip, ppc_inst(PPC_INST_NOP))) { in __ftrace_make_nop_kernel()
438 unsigned long ip = rec->ip; in ftrace_make_nop() local
446 if (test_24bit_addr(ip, addr)) { in ftrace_make_nop()
448 old = ftrace_call_replace(ip, addr, 1); in ftrace_make_nop()
450 return ftrace_modify_code(ip, old, new); in ftrace_make_nop()
451 } else if (core_kernel_text(ip)) in ftrace_make_nop()
492 expected_nop_sequence(void *ip, struct ppc_inst op0, struct ppc_inst op1) in expected_nop_sequence() argument
510 expected_nop_sequence(void *ip, struct ppc_inst op0, struct ppc_inst op1) in expected_nop_sequence() argument
524 void *ip = (void *)rec->ip; local
529 if (probe_kernel_read_inst(op, ip))
532 if (probe_kernel_read_inst(op + 1, ip + 4))
535 if (!expected_nop_sequence(ip, op[0], op[1])) {
537 ip, ppc_inst_as_str(op[0]), ppc_inst_as_str(op[1]));
573 if (create_branch(&instr, ip, tramp, BRANCH_SET_LINK)) {
578 if (patch_branch(ip, tramp, BRANCH_SET_LINK)) {
592 unsigned long ip = rec->ip; local
595 if (probe_kernel_read_inst(&op, (void *)ip))
611 err = create_branch(&op, (struct ppc_inst *)ip,
618 pr_devel("write to %lx\n", rec->ip);
620 if (patch_instruction((struct ppc_inst *)ip, op))
631 void *ip = (void *)rec->ip; local
651 if (probe_kernel_read_inst(&op, ip)) {
652 pr_err("Unable to read ftrace location %p\n", ip);
657 pr_err("Unexpected call sequence at %p: %s\n", ip, ppc_inst_as_str(op));
661 tramp = find_ftrace_tramp((unsigned long)ip);
663 pr_err("No ftrace trampolines reachable from %ps\n", ip);
667 if (patch_branch(ip, tramp, BRANCH_SET_LINK)) {
677 unsigned long ip = rec->ip; local
685 if (test_24bit_addr(ip, addr)) {
688 new = ftrace_call_replace(ip, addr, 1);
689 return ftrace_modify_code(ip, old, new);
690 } else if (core_kernel_text(ip))
718 unsigned long ip = rec->ip; local
729 if (probe_kernel_read_inst(&op, (void *)ip)) {
741 tramp = find_bl_target(ip, op);
744 pr_devel("ip:%lx jumps to %lx", ip, tramp);
763 if (test_24bit_addr(ip, addr)) {
765 if (patch_branch((struct ppc_inst *)ip, addr, BRANCH_SET_LINK)) {
793 if (create_branch(&op, (struct ppc_inst *)ip, tramp, BRANCH_SET_LINK)) {
798 if (patch_branch((struct ppc_inst *)ip, tramp, BRANCH_SET_LINK)) {
810 unsigned long ip = rec->ip; local
818 if (test_24bit_addr(ip, addr) && test_24bit_addr(ip, old_addr)) {
820 old = ftrace_call_replace(ip, old_addr, 1);
821 new = ftrace_call_replace(ip, addr, 1);
822 return ftrace_modify_code(ip, old, new);
823 } else if (core_kernel_text(ip)) {
850 unsigned long ip = (unsigned long)(&ftrace_call); local
855 new = ftrace_call_replace(ip, (unsigned long)func, 1);
856 ret = ftrace_modify_code(ip, old, new);
861 ip = (unsigned long)(&ftrace_regs_call);
863 new = ftrace_call_replace(ip, (unsigned long)func, 1);
864 ret = ftrace_modify_code(ip, old, new);
933 unsigned long ip = (unsigned long)(&ftrace_graph_call); local
938 old = ftrace_call_replace(ip, stub, 0);
939 new = ftrace_call_replace(ip, addr, 0);
941 return ftrace_modify_code(ip, old, new);
946 unsigned long ip = (unsigned long)(&ftrace_graph_call); local
951 old = ftrace_call_replace(ip, addr, 0);
952 new = ftrace_call_replace(ip, stub, 0);
954 return ftrace_modify_code(ip, old, new);
961 unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip, argument
974 if (!function_graph_enter(parent, ip, 0, (unsigned long *)sp))