the performance is not affected. Currently, this feature
          only works with EABI compilers. If unsure say Y.
 
-config OLD_MCOUNT
-       bool
-       depends on FUNCTION_TRACER && FRAME_POINTER
-       default y
-
 config DEBUG_USER
        bool "Verbose user fault messages"
        help
 
 
 #ifdef CONFIG_DYNAMIC_FTRACE
 struct dyn_arch_ftrace {
-#ifdef CONFIG_OLD_MCOUNT
-       bool    old_mcount;
-#endif
 };
 
 static inline unsigned long ftrace_call_adjust(unsigned long addr)
 
 #endif
 
 #ifdef CONFIG_FUNCTION_TRACER
-#ifdef CONFIG_OLD_MCOUNT
-EXPORT_SYMBOL(mcount);
-#endif
 EXPORT_SYMBOL(__gnu_mcount_nc);
 #endif
 
 
  * start of every function.  In mcount, apart from the function's address (in
  * lr), we need to get hold of the function's caller's address.
  *
- * Older GCCs (pre-4.4) inserted a call to a routine called mcount like this:
- *
- *     bl      mcount
- *
- * These versions have the limitation that in order for the mcount routine to
- * be able to determine the function's caller's address, an APCS-style frame
- * pointer (which is set up with something like the code below) is required.
- *
- *     mov     ip, sp
- *     push    {fp, ip, lr, pc}
- *     sub     fp, ip, #4
- *
- * With EABI, these frame pointers are not available unless -mapcs-frame is
- * specified, and if building as Thumb-2, not even then.
- *
- * Newer GCCs (4.4+) solve this problem by introducing a new version of mcount,
- * with call sites like:
+ * Newer GCCs (4.4+) solve this problem by using a version of mcount with call
+ * sites like:
  *
  *     push    {lr}
  *     bl      __gnu_mcount_nc
  * allows it to be clobbered in subroutines and doesn't use it to hold
  * parameters.)
  *
- * When using dynamic ftrace, we patch out the mcount call by a "mov r0, r0"
- * for the mcount case, and a "pop {lr}" for the __gnu_mcount_nc case (see
- * arch/arm/kernel/ftrace.c).
+ * When using dynamic ftrace, we patch out the mcount call by a "pop {lr}"
+ * instead of the __gnu_mcount_nc call (see arch/arm/kernel/ftrace.c).
  */
 
-#ifndef CONFIG_OLD_MCOUNT
-#if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4))
-#error Ftrace requires CONFIG_FRAME_POINTER=y with GCC older than 4.4.0.
-#endif
-#endif
-
 .macro mcount_adjust_addr rd, rn
        bic     \rd, \rn, #1            @ clear the Thumb bit if present
        sub     \rd, \rd, #MCOUNT_INSN_SIZE
        mcount_exit
 .endm
 
-#ifdef CONFIG_OLD_MCOUNT
-/*
- * mcount
- */
-
-.macro mcount_enter
-       stmdb   sp!, {r0-r3, lr}
-.endm
-
-.macro mcount_get_lr reg
-       ldr     \reg, [fp, #-4]
-.endm
-
-.macro mcount_exit
-       ldr     lr, [fp, #-4]
-       ldmia   sp!, {r0-r3, pc}
-.endm
-
-ENTRY(mcount)
-#ifdef CONFIG_DYNAMIC_FTRACE
-       stmdb   sp!, {lr}
-       ldr     lr, [fp, #-4]
-       ldmia   sp!, {pc}
-#else
-       __mcount _old
-#endif
-ENDPROC(mcount)
-
-#ifdef CONFIG_DYNAMIC_FTRACE
-ENTRY(ftrace_caller_old)
-       __ftrace_caller _old
-ENDPROC(ftrace_caller_old)
-#endif
-
-#ifdef CONFIG_FUNCTION_GRAPH_TRACER
-ENTRY(ftrace_graph_caller_old)
-       __ftrace_graph_caller
-ENDPROC(ftrace_graph_caller_old)
-#endif
-
-.purgem mcount_enter
-.purgem mcount_get_lr
-.purgem mcount_exit
-#endif
-
 /*
  * __gnu_mcount_nc
  */
 
        stop_machine(__ftrace_modify_code, &command, NULL);
 }
 
-#ifdef CONFIG_OLD_MCOUNT
-#define OLD_MCOUNT_ADDR        ((unsigned long) mcount)
-#define OLD_FTRACE_ADDR ((unsigned long) ftrace_caller_old)
-
-#define        OLD_NOP         0xe1a00000      /* mov r0, r0 */
-
-static unsigned long ftrace_nop_replace(struct dyn_ftrace *rec)
-{
-       return rec->arch.old_mcount ? OLD_NOP : NOP;
-}
-
-static unsigned long adjust_address(struct dyn_ftrace *rec, unsigned long addr)
-{
-       if (!rec->arch.old_mcount)
-               return addr;
-
-       if (addr == MCOUNT_ADDR)
-               addr = OLD_MCOUNT_ADDR;
-       else if (addr == FTRACE_ADDR)
-               addr = OLD_FTRACE_ADDR;
-
-       return addr;
-}
-#else
 static unsigned long ftrace_nop_replace(struct dyn_ftrace *rec)
 {
        return NOP;
 {
        return addr;
 }
-#endif
 
 int ftrace_arch_code_modify_prepare(void)
 {
        }
 #endif
 
-#ifdef CONFIG_OLD_MCOUNT
-       if (!ret) {
-               pc = (unsigned long)&ftrace_call_old;
-               new = ftrace_call_replace(pc, (unsigned long)func);
-
-               ret = ftrace_modify_code(pc, 0, new, false);
-       }
-#endif
-
        return ret;
 }
 
        new = ftrace_nop_replace(rec);
        ret = ftrace_modify_code(ip, old, new, true);
 
-#ifdef CONFIG_OLD_MCOUNT
-       if (ret == -EINVAL && addr == MCOUNT_ADDR) {
-               rec->arch.old_mcount = true;
-
-               old = ftrace_call_replace(ip, adjust_address(rec, addr));
-               new = ftrace_nop_replace(rec);
-               ret = ftrace_modify_code(ip, old, new, true);
-       }
-#endif
-
        return ret;
 }
 
 #endif
 
 
-#ifdef CONFIG_OLD_MCOUNT
-       if (!ret)
-               ret = __ftrace_modify_caller(&ftrace_graph_call_old,
-                                            ftrace_graph_caller_old,
-                                            enable);
-#endif
-
        return ret;
 }