#define _ASM_X86_FTRACE_H
 
 #ifdef CONFIG_FUNCTION_TRACER
-#ifdef CC_USING_FENTRY
-# define MCOUNT_ADDR           ((unsigned long)(__fentry__))
-#else
-# define MCOUNT_ADDR           ((unsigned long)(mcount))
-# define HAVE_FUNCTION_GRAPH_FP_TEST
+#ifndef CC_USING_FENTRY
+# error Compiler does not support fentry?
 #endif
+# define MCOUNT_ADDR           ((unsigned long)(__fentry__))
 #define MCOUNT_INSN_SIZE       5 /* sizeof mcount call */
 
 #ifdef CONFIG_DYNAMIC_FTRACE
 
 #include <asm/ftrace.h>
 #include <asm/nospec-branch.h>
 
-#ifdef CC_USING_FENTRY
 # define function_hook __fentry__
 EXPORT_SYMBOL(__fentry__)
-#else
-# define function_hook mcount
-EXPORT_SYMBOL(mcount)
-#endif
-
-/* mcount uses a frame pointer even if CONFIG_FRAME_POINTER is not set */
-#if !defined(CC_USING_FENTRY) || defined(CONFIG_FRAME_POINTER)
-# define USING_FRAME_POINTER
-#endif
 
-#ifdef USING_FRAME_POINTER
+#ifdef CONFIG_FRAME_POINTER
 # define MCOUNT_FRAME                  1       /* using frame = true  */
 #else
 # define MCOUNT_FRAME                  0       /* using frame = false */
 
 ENTRY(ftrace_caller)
 
-#ifdef USING_FRAME_POINTER
-# ifdef CC_USING_FENTRY
+#ifdef CONFIG_FRAME_POINTER
        /*
         * Frame pointers are of ip followed by bp.
         * Since fentry is an immediate jump, we are left with
        pushl   %ebp
        movl    %esp, %ebp
        pushl   2*4(%esp)                       /* function ip */
-# endif
+
        /* For mcount, the function ip is directly above */
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %edx
        pushl   $0                              /* Pass NULL as regs pointer */
 
-#ifdef USING_FRAME_POINTER
+#ifdef CONFIG_FRAME_POINTER
        /* Load parent ebp into edx */
        movl    4*4(%esp), %edx
 #else
        popl    %edx
        popl    %ecx
        popl    %eax
-#ifdef USING_FRAME_POINTER
+#ifdef CONFIG_FRAME_POINTER
        popl    %ebp
-# ifdef CC_USING_FENTRY
        addl    $4,%esp                         /* skip function ip */
        popl    %ebp                            /* this is the orig bp */
        addl    $4, %esp                        /* skip parent ip */
-# endif
 #endif
 .Lftrace_ret:
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
 
        movl    12*4(%esp), %eax                /* Load ip (1st parameter) */
        subl    $MCOUNT_INSN_SIZE, %eax         /* Adjust ip */
-#ifdef CC_USING_FENTRY
        movl    15*4(%esp), %edx                /* Load parent ip (2nd parameter) */
-#else
-       movl    0x4(%ebp), %edx                 /* Load parent ip (2nd parameter) */
-#endif
        movl    function_trace_op, %ecx         /* Save ftrace_pos in 3rd parameter */
        pushl   %esp                            /* Save pt_regs as 4th parameter */
 
        pushl   %edx
        movl    3*4(%esp), %eax
        /* Even with frame pointers, fentry doesn't have one here */
-#ifdef CC_USING_FENTRY
        lea     4*4(%esp), %edx
        movl    $0, %ecx
-#else
-       lea     0x4(%ebp), %edx
-       movl    (%ebp), %ecx
-#endif
        subl    $MCOUNT_INSN_SIZE, %eax
        call    prepare_ftrace_return
        popl    %edx
 return_to_handler:
        pushl   %eax
        pushl   %edx
-#ifdef CC_USING_FENTRY
        movl    $0, %eax
-#else
-       movl    %ebp, %eax
-#endif
        call    ftrace_return_to_handler
        movl    %eax, %ecx
        popl    %edx
 
        .code64
        .section .entry.text, "ax"
 
-#ifdef CC_USING_FENTRY
 # define function_hook __fentry__
 EXPORT_SYMBOL(__fentry__)
-#else
-# define function_hook mcount
-EXPORT_SYMBOL(mcount)
-#endif
 
 #ifdef CONFIG_FRAME_POINTER
-# ifdef CC_USING_FENTRY
 /* Save parent and function stack frames (rip and rbp) */
 #  define MCOUNT_FRAME_SIZE    (8+16*2)
-# else
-/* Save just function stack frame (rip and rbp) */
-#  define MCOUNT_FRAME_SIZE    (8+16)
-# endif
 #else
 /* No need to save a stack frame */
 # define MCOUNT_FRAME_SIZE     0
         * fentry is called before the stack frame is set up, where as mcount
         * is called afterward.
         */
-#ifdef CC_USING_FENTRY
+
        /* Save the parent pointer (skip orig rbp and our return address) */
        pushq \added+8*2(%rsp)
        pushq %rbp
        movq %rsp, %rbp
        /* Save the return address (now skip orig rbp, rbp and parent) */
        pushq \added+8*3(%rsp)
-#else
-       /* Can't assume that rip is before this (unless added was zero) */
-       pushq \added+8(%rsp)
-#endif
        pushq %rbp
        movq %rsp, %rbp
 #endif /* CONFIG_FRAME_POINTER */
        movq %rdx, RBP(%rsp)
 
        /* Copy the parent address into %rsi (second parameter) */
-#ifdef CC_USING_FENTRY
        movq MCOUNT_REG_SIZE+8+\added(%rsp), %rsi
-#else
-       /* %rdx contains original %rbp */
-       movq 8(%rdx), %rsi
-#endif
 
         /* Move RIP to its proper location */
        movq MCOUNT_REG_SIZE+\added(%rsp), %rdi
        /* Saves rbp into %rdx and fills first parameter  */
        save_mcount_regs
 
-#ifdef CC_USING_FENTRY
        leaq MCOUNT_REG_SIZE+8(%rsp), %rsi
        movq $0, %rdx   /* No framepointers needed */
-#else
-       /* Save address of the return address of traced function */
-       leaq 8(%rdx), %rsi
-       /* ftrace does sanity checks against frame pointers */
-       movq (%rdx), %rdx
-#endif
        call    prepare_ftrace_return
 
        restore_mcount_regs