1/* 2 * arch/xtensa/kernel/mcount.S 3 * 4 * Xtensa specific mcount support 5 * 6 * This file is subject to the terms and conditions of the GNU General Public 7 * License. See the file "COPYING" in the main directory of this archive 8 * for more details. 9 * 10 * Copyright (C) 2013 Tensilica Inc. 11 */ 12 13#include <linux/linkage.h> 14#include <asm/asmmacro.h> 15#include <asm/ftrace.h> 16 17/* 18 * Entry condition: 19 * 20 * a2: a0 of the caller 21 */ 22 23ENTRY(_mcount) 24 25 abi_entry_default 26 27 movi a4, ftrace_trace_function 28 l32i a4, a4, 0 29 movi a3, ftrace_stub 30 bne a3, a4, 1f 31 abi_ret_default 32 331: xor a7, a2, a1 34 movi a3, 0x3fffffff 35 and a7, a7, a3 36 xor a7, a7, a1 37 38 xor a6, a0, a1 39 and a6, a6, a3 40 xor a6, a6, a1 41 addi a6, a6, -MCOUNT_INSN_SIZE 42 callx4 a4 43 44 abi_ret_default 45 46ENDPROC(_mcount) 47 48ENTRY(ftrace_stub) 49 abi_entry_default 50 abi_ret_default 51ENDPROC(ftrace_stub) 52