diff options
Diffstat (limited to 'sysdeps/microblaze/_mcount.S')
-rw-r--r-- | sysdeps/microblaze/_mcount.S | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/sysdeps/microblaze/_mcount.S b/sysdeps/microblaze/_mcount.S new file mode 100644 index 0000000000..b3be87e35d --- /dev/null +++ b/sysdeps/microblaze/_mcount.S @@ -0,0 +1,91 @@ +/* Copyright (C) 1997-2014 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + + .global _mcount + .type _mcount, @function +_mcount: + # Save regs. + addik r1, r1,-4 * 24 + swi r31, r1, 4 * 23 + swi r30, r1, 4 * 22 + swi r29, r1, 4 * 21 + swi r28, r1, 4 * 20 + swi r27, r1, 4 * 19 + swi r26, r1, 4 * 18 + swi r25, r1, 4 * 17 + swi r24, r1, 4 * 16 + swi r23, r1, 4 * 15 + swi r22, r1, 4 * 14 + swi r21, r1, 4 * 13 + swi r20, r1, 4 * 12 + swi r19, r1, 4 * 11 + swi r15, r1, 4 * 10 + swi r12, r1, 4 * 9 + swi r11, r1, 4 * 8 + swi r10, r1, 4 * 7 + swi r8, r1, 4 * 6 + swi r7, r1, 4 * 5 + swi r6, r1, 4 * 4 + swi r5, r1, 4 * 3 + swi r4, r1, 4 * 2 + swi r3, r1, 4 * 1 + swi r2, r1, 4 * 0 + +#ifdef SHARED + mfs r20,rpc + addik r20,r20,_GLOBAL_OFFSET_TABLE_+8 + addk r6, r0, r15 # callee is in r15. + brlid r15, __mcount_internal@PLT + lwi r5, r1, 4 * 24 # caller is on the stack. +#else + # Pass from/to in r5 and r6. + addk r6, r0, r15 # callee is in r15. + bralid r15, __mcount_internal + lwi r5, r1, 4 * 24 # caller is on the stack. +#endif + + # Reload regs + lwi r31, r1, 4 * 23 + lwi r30, r1, 4 * 22 + lwi r29, r1, 4 * 21 + lwi r28, r1, 4 * 20 + lwi r27, r1, 4 * 19 + lwi r26, r1, 4 * 18 + lwi r25, r1, 4 * 17 + lwi r24, r1, 4 * 16 + lwi r23, r1, 4 * 15 + lwi r22, r1, 4 * 14 + lwi r21, r1, 4 * 13 + lwi r20, r1, 4 * 12 + lwi r19, r1, 4 * 11 + lwi r15, r1, 4 * 10 + lwi r12, r1, 4 * 9 + lwi r11, r1, 4 * 8 + lwi r10, r1, 4 * 7 + lwi r8, r1, 4 * 6 + lwi r7, r1, 4 * 5 + lwi r6, r1, 4 * 4 + lwi r5, r1, 4 * 3 + lwi r4, r1, 4 * 2 + lwi r3, r1, 4 * 1 + lwi r2, r1, 4 * 0 + + rtsd r15, 8 + addik r1, r1, 4 * 24 + + .size _mcount, . - _mcount |