On Thu, Jan 20, 2011 at 03:28:29AM +0800, Wu Zhangjin wrote: > @@ -91,10 +91,16 @@ int ftrace_make_nop(struct module *mod, > unsigned long ip = rec->ip; > > /* > - * We have compiled module with -mlong-calls, but compiled the kernel > - * without it, we need to cope with them respectively. > + * If ip is in kernel space, no long call, otherwise, long call is > + * needed. > */ Or even better, just check if the destination is in the same 28-bit segment of address space. Something like: if ((src ^ dst) >> 28) { /* out of range of simple R_MIPS_26 relocation */ } That way you no longer rely on a particular address layout - and there are plans to change the address space layout eventually! Ralf