/*
 * Copyright (C) 2008 Imagination Technologies Ltd.
 * Licensed under the GPL
 *
 */

#include <asm/ftrace.h>

	.text
#ifdef CONFIG_DYNAMIC_FTRACE
	.global	_mcount_wrapper
	.type	_mcount_wrapper,function
_mcount_wrapper:
	MOV	PC,D0.4

	.global _ftrace_caller
	.type	_ftrace_caller,function
_ftrace_caller:
	MOVT    D0Re0,#HI(_function_trace_stop)
	ADD	D0Re0,D0Re0,#LO(_function_trace_stop)
	GETD	D0Re0,[D0Re0]
	CMP	D0Re0,#0
	BEQ	$Lcall_stub
	MOV	PC,D0.4
$Lcall_stub:
	MSETL   [A0StP], D0Ar6, D0Ar4, D0Ar2, D0.4
	MOV     D1Ar1, D0.4
	MOV     D0Ar2, D1RtP
	SUB	D1Ar1,D1Ar1,#MCOUNT_INSN_SIZE

	.global _ftrace_call
_ftrace_call:
	MOVT	D1RtP,#HI(_ftrace_stub)
	CALL	D1RtP,#LO(_ftrace_stub)
	GETL    D0.4,  D1RtP, [A0StP++#(-8)]
	GETL    D0Ar2, D1Ar1, [A0StP++#(-8)]
	GETL    D0Ar4, D1Ar3, [A0StP++#(-8)]
	GETL    D0Ar6, D1Ar5, [A0StP++#(-8)]
	MOV     PC, D0.4
#else

	.global	_mcount_wrapper
	.type	_mcount_wrapper,function
_mcount_wrapper:
	MOVT    D0Re0,#HI(_function_trace_stop)
	ADD	D0Re0,D0Re0,#LO(_function_trace_stop)
	GETD	D0Re0,[D0Re0]
	CMP	D0Re0,#0
	BEQ	$Lcall_mcount
	MOV	PC,D0.4
$Lcall_mcount:
	MSETL   [A0StP], D0Ar6, D0Ar4, D0Ar2, D0.4
	MOV     D1Ar1, D0.4
	MOV     D0Ar2, D1RtP
	MOVT    D0Re0,#HI(_ftrace_trace_function)
	ADD	D0Re0,D0Re0,#LO(_ftrace_trace_function)
	GET	D1Ar3,[D0Re0]
	MOVT	D1Re0,#HI(_ftrace_stub)
	ADD	D1Re0,D1Re0,#LO(_ftrace_stub)
	CMP	D1Ar3,D1Re0
	BEQ	$Ltrace_exit
	MOV	D1RtP,D1Ar3
	SUB	D1Ar1,D1Ar1,#MCOUNT_INSN_SIZE
	SWAP	PC,D1RtP
$Ltrace_exit:
	GETL    D0.4,  D1RtP, [A0StP++#(-8)]
	GETL    D0Ar2, D1Ar1, [A0StP++#(-8)]
	GETL    D0Ar4, D1Ar3, [A0StP++#(-8)]
	GETL    D0Ar6, D1Ar5, [A0StP++#(-8)]
	MOV     PC, D0.4

#endif	/* CONFIG_DYNAMIC_FTRACE */

	.global _ftrace_stub
_ftrace_stub:
	MOV 	PC,D1RtP
