162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci * arch/xtensa/include/asm/ftrace.h
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public
562306a36Sopenharmony_ci * License.  See the file "COPYING" in the main directory of this archive
662306a36Sopenharmony_ci * for more details.
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci * Copyright (C) 2013 Tensilica Inc.
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci#ifndef _XTENSA_FTRACE_H
1162306a36Sopenharmony_ci#define _XTENSA_FTRACE_H
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include <asm/processor.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#ifndef __ASSEMBLY__
1662306a36Sopenharmony_ciextern unsigned long return_address(unsigned level);
1762306a36Sopenharmony_ci#define ftrace_return_address(n) return_address(n)
1862306a36Sopenharmony_ci#endif /* __ASSEMBLY__ */
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#ifdef CONFIG_FUNCTION_TRACER
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#define MCOUNT_ADDR ((unsigned long)(_mcount))
2362306a36Sopenharmony_ci#define MCOUNT_INSN_SIZE 3
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci#ifndef __ASSEMBLY__
2662306a36Sopenharmony_ciextern void _mcount(void);
2762306a36Sopenharmony_ci#define mcount _mcount
2862306a36Sopenharmony_ci#endif /* __ASSEMBLY__ */
2962306a36Sopenharmony_ci#endif /* CONFIG_FUNCTION_TRACER */
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#endif /* _XTENSA_FTRACE_H */
32