| /* |
| * linux/arch/blackfin/mcount.S |
| * |
| * Copyright (C) 2006 Analog Devices Inc. |
| * |
| * 2007/04/12 Save index, length, modify and base registers. --rpm |
| */ |
| |
| #include <linux/linkage.h> |
| #include <asm/blackfin.h> |
| |
| .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) |