1/* 2 * linux/arch/blackfin/mcount.S 3 * 4 * Copyright (C) 2006 Analog Devices Inc. 5 * 6 * 2007/04/12 Save index, length, modify and base registers. --rpm 7 */ 8 9#include <linux/linkage.h> 10#include <asm/blackfin.h> 11 12.text 13 14.align 4 /* just in case */ 15 16ENTRY(__mcount) 17 [--sp] = i0; 18 [--sp] = i1; 19 [--sp] = i2; 20 [--sp] = i3; 21 [--sp] = l0; 22 [--sp] = l1; 23 [--sp] = l2; 24 [--sp] = l3; 25 [--sp] = m0; 26 [--sp] = m1; 27 [--sp] = m2; 28 [--sp] = m3; 29 [--sp] = b0; 30 [--sp] = b1; 31 [--sp] = b2; 32 [--sp] = b3; 33 [--sp] = ( r7:0, p5:0 ); 34 [--sp] = ASTAT; 35 36 p1.L = _ipipe_trace_enable; 37 p1.H = _ipipe_trace_enable; 38 r7 = [p1]; 39 CC = r7 == 0; 40 if CC jump out; 41 link 0x10; 42 r0 = 0x0; 43 [sp + 0xc] = r0; /* v */ 44 r0 = 0x0; /* type: IPIPE_TRACE_FN */ 45 r1 = rets; 46 p0 = [fp]; /* p0: Prior FP */ 47 r2 = [p0 + 4]; /* r2: Prior RETS */ 48 call ___ipipe_trace; 49 unlink; 50out: 51 ASTAT = [sp++]; 52 ( r7:0, p5:0 ) = [sp++]; 53 b3 = [sp++]; 54 b2 = [sp++]; 55 b1 = [sp++]; 56 b0 = [sp++]; 57 m3 = [sp++]; 58 m2 = [sp++]; 59 m1 = [sp++]; 60 m0 = [sp++]; 61 l3 = [sp++]; 62 l2 = [sp++]; 63 l1 = [sp++]; 64 l0 = [sp++]; 65 i3 = [sp++]; 66 i2 = [sp++]; 67 i1 = [sp++]; 68 i0 = [sp++]; 69 rts; 70ENDPROC(__mcount) 71