glibc/ports/sysdeps/microblaze/_mcount.S

92 lines
2.2 KiB
ArmAsm

/* 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