Lines Matching refs:ip
44 ftrace_call_replace(unsigned long ip, unsigned long addr, int link) in ftrace_call_replace() argument
51 op = create_branch((unsigned int *)ip, addr, link ? 1 : 0); in ftrace_call_replace()
57 ftrace_modify_code(unsigned long ip, unsigned int old, unsigned int new) in ftrace_modify_code() argument
70 if (probe_kernel_read(&replaced, (void *)ip, MCOUNT_INSN_SIZE)) in ftrace_modify_code()
76 (void *)ip, replaced, old); in ftrace_modify_code()
81 if (patch_instruction((unsigned int *)ip, new)) in ftrace_modify_code()
90 static int test_24bit_addr(unsigned long ip, unsigned long addr) in test_24bit_addr() argument
95 return create_branch((unsigned int *)ip, addr, 0); in test_24bit_addr()
108 static unsigned long find_bl_target(unsigned long ip, unsigned int op) in find_bl_target() argument
117 return ip + (long)offset; in find_bl_target()
127 unsigned long ip = rec->ip; in __ftrace_make_nop() local
131 if (probe_kernel_read(&op, (void *)ip, sizeof(int))) { in __ftrace_make_nop()
143 tramp = find_bl_target(ip, op); in __ftrace_make_nop()
145 pr_devel("ip:%lx jumps to %lx", ip, tramp); in __ftrace_make_nop()
165 if (probe_kernel_read(&op, (void *)(ip - 4), 4)) { in __ftrace_make_nop()
166 pr_err("Fetching instruction at %lx failed.\n", ip - 4); in __ftrace_make_nop()
196 if (probe_kernel_read(&op, (void *)(ip+4), MCOUNT_INSN_SIZE)) { in __ftrace_make_nop()
207 if (patch_instruction((unsigned int *)ip, pop)) { in __ftrace_make_nop()
222 unsigned long ip = rec->ip; in __ftrace_make_nop() local
225 if (probe_kernel_read(&op, (void *)ip, MCOUNT_INSN_SIZE)) in __ftrace_make_nop()
235 tramp = find_bl_target(ip, op); in __ftrace_make_nop()
245 pr_devel("ip:%lx jumps to %lx", ip, tramp); in __ftrace_make_nop()
279 if (patch_instruction((unsigned int *)ip, op)) in __ftrace_make_nop()
287 static unsigned long find_ftrace_tramp(unsigned long ip) in find_ftrace_tramp() argument
298 else if (create_branch((void *)ip, ftrace_tramps[i], 0)) in find_ftrace_tramp()
390 unsigned long tramp, ip = rec->ip; in __ftrace_make_nop_kernel() local
394 if (probe_kernel_read(&op, (void *)ip, sizeof(int))) { in __ftrace_make_nop_kernel()
406 tramp = find_bl_target(ip, op); in __ftrace_make_nop_kernel()
408 pr_devel("ip:%lx jumps to %lx", ip, tramp); in __ftrace_make_nop_kernel()
412 if (!find_ftrace_tramp(ip)) { in __ftrace_make_nop_kernel()
414 (void *)ip); in __ftrace_make_nop_kernel()
419 if (patch_instruction((unsigned int *)ip, PPC_INST_NOP)) { in __ftrace_make_nop_kernel()
430 unsigned long ip = rec->ip; in ftrace_make_nop() local
438 if (test_24bit_addr(ip, addr)) { in ftrace_make_nop()
440 old = ftrace_call_replace(ip, addr, 1); in ftrace_make_nop()
442 return ftrace_modify_code(ip, old, new); in ftrace_make_nop()
443 } else if (core_kernel_text(ip)) in ftrace_make_nop()
484 expected_nop_sequence(void *ip, unsigned int op0, unsigned int op1) in expected_nop_sequence() argument
501 expected_nop_sequence(void *ip, unsigned int op0, unsigned int op1) in expected_nop_sequence() argument
514 void *ip = (void *)rec->ip; local
519 if (probe_kernel_read(op, ip, sizeof(op)))
522 if (!expected_nop_sequence(ip, op[0], op[1])) {
524 ip, op[0], op[1]);
560 if (!create_branch(ip, tramp, BRANCH_SET_LINK)) {
565 if (patch_branch(ip, tramp, BRANCH_SET_LINK)) {
578 unsigned long ip = rec->ip; local
581 if (probe_kernel_read(&op, (void *)ip, MCOUNT_INSN_SIZE))
597 op = create_branch((unsigned int *)ip,
604 pr_devel("write to %lx\n", rec->ip);
606 if (patch_instruction((unsigned int *)ip, op))
617 void *ip = (void *)rec->ip; local
637 if (probe_kernel_read(&op, ip, sizeof(op))) {
638 pr_err("Unable to read ftrace location %p\n", ip);
643 pr_err("Unexpected call sequence at %p: %x\n", ip, op);
647 tramp = find_ftrace_tramp((unsigned long)ip);
649 pr_err("No ftrace trampolines reachable from %ps\n", ip);
653 if (patch_branch(ip, tramp, BRANCH_SET_LINK)) {
663 unsigned long ip = rec->ip; local
671 if (test_24bit_addr(ip, addr)) {
674 new = ftrace_call_replace(ip, addr, 1);
675 return ftrace_modify_code(ip, old, new);
676 } else if (core_kernel_text(ip))
704 unsigned long ip = rec->ip; local
715 if (probe_kernel_read(&op, (void *)ip, sizeof(int))) {
727 tramp = find_bl_target(ip, op);
730 pr_devel("ip:%lx jumps to %lx", ip, tramp);
749 if (test_24bit_addr(ip, addr)) {
751 if (patch_branch((unsigned int *)ip, addr, BRANCH_SET_LINK)) {
779 if (!create_branch((unsigned int *)ip, tramp, BRANCH_SET_LINK)) {
784 if (patch_branch((unsigned int *)ip, tramp, BRANCH_SET_LINK)) {
796 unsigned long ip = rec->ip; local
804 if (test_24bit_addr(ip, addr) && test_24bit_addr(ip, old_addr)) {
806 old = ftrace_call_replace(ip, old_addr, 1);
807 new = ftrace_call_replace(ip, addr, 1);
808 return ftrace_modify_code(ip, old, new);
809 } else if (core_kernel_text(ip)) {
836 unsigned long ip = (unsigned long)(&ftrace_call); local
841 new = ftrace_call_replace(ip, (unsigned long)func, 1);
842 ret = ftrace_modify_code(ip, old, new);
847 ip = (unsigned long)(&ftrace_regs_call);
849 new = ftrace_call_replace(ip, (unsigned long)func, 1);
850 ret = ftrace_modify_code(ip, old, new);
919 unsigned long ip = (unsigned long)(&ftrace_graph_call); local
924 old = ftrace_call_replace(ip, stub, 0);
925 new = ftrace_call_replace(ip, addr, 0);
927 return ftrace_modify_code(ip, old, new);
932 unsigned long ip = (unsigned long)(&ftrace_graph_call); local
937 old = ftrace_call_replace(ip, addr, 0);
938 new = ftrace_call_replace(ip, stub, 0);
940 return ftrace_modify_code(ip, old, new);
947 unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip, argument
960 if (!function_graph_enter(parent, ip, 0, (unsigned long *)sp))