CFLAGS_REMOVE_selfmod.o = -pg
 CFLAGS_REMOVE_heartbeat.o = -pg
 CFLAGS_REMOVE_ftrace.o = -pg
+CFLAGS_REMOVE_process.o = -pg
 endif
 
 extra-y := head.o vmlinux.lds
 
                        : "r" (parent), "r" (return_hooker)
        );
 
+       flush_dcache_range((u32)parent, (u32)parent + 4);
+       flush_icache_range((u32)parent, (u32)parent + 4);
+
        if (unlikely(faulted)) {
                ftrace_graph_stop();
                WARN_ON(1);
        if (unlikely(faulted))
                return -EFAULT;
 
+       flush_dcache_range(addr, addr + 4);
+       flush_icache_range(addr, addr + 4);
+
        return 0;
 }
 
        ret += ftrace_modify_code((unsigned long)&ftrace_caller,
                                  MICROBLAZE_NOP);
 
-       /* All changes are done - lets do caches consistent */
-       flush_icache();
        return ret;
 }
 
 
        old_jump = *(unsigned int *)ip; /* save jump over instruction */
        ret = ftrace_modify_code(ip, MICROBLAZE_NOP);
-       flush_icache();
 
        pr_debug("%s: Replace instruction: 0x%x\n", __func__, old_jump);
        return ret;
        unsigned long ip = (unsigned long)(&ftrace_call_graph);
 
        ret = ftrace_modify_code(ip, old_jump);
-       flush_icache();
 
        pr_debug("%s\n", __func__);
        return ret;
 
 # Makefile
 #
 
+ifdef CONFIG_FUNCTION_TRACER
+CFLAGS_REMOVE_ashldi3.o = -pg
+CFLAGS_REMOVE_ashrdi3.o = -pg
+CFLAGS_REMOVE_lshrdi3.o = -pg
+endif
+
 lib-y :=  memset.o
 
 ifeq ($(CONFIG_OPT_LIB_ASM),y)