···10381038 * We are in a module using the module's TOC.10391039 * Switch to our TOC to run inside the core kernel.10401040 */10411041- LOAD_REG_IMMEDIATE(r4,ftrace_return_to_handler)10421042- ld r2, 8(r4)10411041+ ld r2, PACATOC(r13)1043104210441043 bl .ftrace_return_to_handler10451044 nop
+7-3
arch/powerpc/kernel/process.c
···10161016#ifdef CONFIG_FUNCTION_GRAPH_TRACER10171017 int curr_frame = current->curr_ret_stack;10181018 extern void return_to_handler(void);10191019- unsigned long addr = (unsigned long)return_to_handler;10191019+ unsigned long rth = (unsigned long)return_to_handler;10201020+ unsigned long mrth = -1;10201021#ifdef CONFIG_PPC6410211021- addr = *(unsigned long*)addr;10221022+ extern void mod_return_to_handler(void);10231023+ rth = *(unsigned long *)rth;10241024+ mrth = (unsigned long)mod_return_to_handler;10251025+ mrth = *(unsigned long *)mrth;10221026#endif10231027#endif10241028···10481044 if (!firstframe || ip != lr) {10491045 printk("["REG"] ["REG"] %pS", sp, ip, (void *)ip);10501046#ifdef CONFIG_FUNCTION_GRAPH_TRACER10511051- if (ip == addr && curr_frame >= 0) {10471047+ if ((ip == rth || ip == mrth) && curr_frame >= 0) {10521048 printk(" (%pS)",10531049 (void *)current->ret_stack[curr_frame].ret);10541050 curr_frame--;