/* * linux/arch/blackfin/mcount.S * * Copyright (C) 2006 Analog Devices Inc. * * 2007/04/12 Save index, length, modify and base registers. --rpm */ #include #include .text .align 4 /* just in case */ ENTRY(__mcount) [--sp] = i0; [--sp] = i1; [--sp] = i2; [--sp] = i3; [--sp] = l0; [--sp] = l1; [--sp] = l2; [--sp] = l3; [--sp] = m0; [--sp] = m1; [--sp] = m2; [--sp] = m3; [--sp] = b0; [--sp] = b1; [--sp] = b2; [--sp] = b3; [--sp] = ( r7:0, p5:0 ); [--sp] = ASTAT; p1.L = _ipipe_trace_enable; p1.H = _ipipe_trace_enable; r7 = [p1]; CC = r7 == 0; if CC jump out; link 0x10; r0 = 0x0; [sp + 0xc] = r0; /* v */ r0 = 0x0; /* type: IPIPE_TRACE_FN */ r1 = rets; p0 = [fp]; /* p0: Prior FP */ r2 = [p0 + 4]; /* r2: Prior RETS */ call ___ipipe_trace; unlink; out: ASTAT = [sp++]; ( r7:0, p5:0 ) = [sp++]; b3 = [sp++]; b2 = [sp++]; b1 = [sp++]; b0 = [sp++]; m3 = [sp++]; m2 = [sp++]; m1 = [sp++]; m0 = [sp++]; l3 = [sp++]; l2 = [sp++]; l1 = [sp++]; l0 = [sp++]; i3 = [sp++]; i2 = [sp++]; i1 = [sp++]; i0 = [sp++]; rts; ENDPROC(__mcount)