aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-02-06 00:33:09 -0500
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2009-02-22 18:48:53 -0500
commit17be5b3ddf71d980f67fc826e49b00cd2afd724d (patch)
tree1b6f06b4c119303ff77bef5f6e213d95cc2e5f63
parent44e1d064b919cb3a56ef67e0f7e244927be8369a (diff)
powerpc, ftrace: fix compile error when modules not configured
Michael Neuling reported a compile bug when dynamic ftrace was configured in and modules were not. This was due to the ftrace code referencing module specific structures. Reported-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r--arch/powerpc/kernel/ftrace.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/ftrace.c b/arch/powerpc/kernel/ftrace.c
index 77a7d186db1c..4112175183d3 100644
--- a/arch/powerpc/kernel/ftrace.c
+++ b/arch/powerpc/kernel/ftrace.c
@@ -113,6 +113,8 @@ static int test_24bit_addr(unsigned long ip, unsigned long addr)
113 return create_branch((unsigned int *)ip, addr, 0); 113 return create_branch((unsigned int *)ip, addr, 0);
114} 114}
115 115
116#ifdef CONFIG_MODULES
117
116static int is_bl_op(unsigned int op) 118static int is_bl_op(unsigned int op)
117{ 119{
118 return (op & 0xfc000003) == 0x48000001; 120 return (op & 0xfc000003) == 0x48000001;
@@ -324,6 +326,7 @@ __ftrace_make_nop(struct module *mod,
324 return 0; 326 return 0;
325} 327}
326#endif /* PPC64 */ 328#endif /* PPC64 */
329#endif /* CONFIG_MODULES */
327 330
328int ftrace_make_nop(struct module *mod, 331int ftrace_make_nop(struct module *mod,
329 struct dyn_ftrace *rec, unsigned long addr) 332 struct dyn_ftrace *rec, unsigned long addr)
@@ -343,6 +346,7 @@ int ftrace_make_nop(struct module *mod,
343 return ftrace_modify_code(ip, old, new); 346 return ftrace_modify_code(ip, old, new);
344 } 347 }
345 348
349#ifdef CONFIG_MODULES
346 /* 350 /*
347 * Out of range jumps are called from modules. 351 * Out of range jumps are called from modules.
348 * We should either already have a pointer to the module 352 * We should either already have a pointer to the module
@@ -367,9 +371,13 @@ int ftrace_make_nop(struct module *mod,
367 mod = rec->arch.mod; 371 mod = rec->arch.mod;
368 372
369 return __ftrace_make_nop(mod, rec, addr); 373 return __ftrace_make_nop(mod, rec, addr);
370 374#else
375 /* We should not get here without modules */
376 return -EINVAL;
377#endif /* CONFIG_MODULES */
371} 378}
372 379
380#ifdef CONFIG_MODULES
373#ifdef CONFIG_PPC64 381#ifdef CONFIG_PPC64
374static int 382static int
375__ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) 383__ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
@@ -458,6 +466,7 @@ __ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
458 return 0; 466 return 0;
459} 467}
460#endif /* CONFIG_PPC64 */ 468#endif /* CONFIG_PPC64 */
469#endif /* CONFIG_MODULES */
461 470
462int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr) 471int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
463{ 472{
@@ -476,6 +485,7 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
476 return ftrace_modify_code(ip, old, new); 485 return ftrace_modify_code(ip, old, new);
477 } 486 }
478 487
488#ifdef CONFIG_MODULES
479 /* 489 /*
480 * Out of range jumps are called from modules. 490 * Out of range jumps are called from modules.
481 * Being that we are converting from nop, it had better 491 * Being that we are converting from nop, it had better
@@ -487,6 +497,10 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
487 } 497 }
488 498
489 return __ftrace_make_call(rec, addr); 499 return __ftrace_make_call(rec, addr);
500#else
501 /* We should not get here without modules */
502 return -EINVAL;
503#endif /* CONFIG_MODULES */
490} 504}
491 505
492int ftrace_update_ftrace_func(ftrace_func_t func) 506int ftrace_update_ftrace_func(ftrace_func_t func)