1/* Copyright (C) 2005-2021 Free Software Foundation, Inc.
2
3   This file is part of the GNU C Library.
4
5   The GNU C Library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public License as
7   published by the Free Software Foundation; either version 2.1 of the
8   License, or (at your option) any later version.
9
10   The GNU C Library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with the GNU C Library.  If not, see
17   <https://www.gnu.org/licenses/>.  */
18
19#include <sysdep.h>
20#include <libc-symbols.h>
21
22#ifndef PROF
23
24    .text
25    .globl  _dl_runtime_resolve
26    .type   _dl_runtime_resolve, @function
27    .align  4
28_dl_runtime_resolve:
29    addik r1,r1,-40
30    swi   r5,r1,12
31    swi   r6,r1,16
32    swi   r7,r1,20
33    swi   r8,r1,24
34    swi   r9,r1,28
35    swi   r10,r1,32
36    swi   r15,r1,0
37    addk r5,r0,r4
38    brlid r15, _dl_fixup
39    addk r6,r0,r3; /* delay slot.  */
40    lwi   r10,r1,32
41    lwi   r9,r1,28
42    lwi   r8,r1,24
43    lwi   r7,r1,20
44    lwi   r6,r1,16
45    lwi   r5,r1,12
46    lwi   r15,r1,0
47    brad  r3
48    addik r1,r1,40; /* delay slot.  */
49    .size _dl_runtime_resolve, . - _dl_runtime_resolve
50
51    .text
52    .globl  _dl_runtime_profile
53    .type   _dl_runtime_profile, @function
54    .align  4
55_dl_runtime_profile:
56    addik r1,r1,-40
57    swi   r5,r1,12
58    swi   r6,r1,16
59    swi   r7,r1,20
60    swi   r8,r1,24
61    swi   r9,r1,28
62    swi   r10,r1,32
63    swi   r15,r1,0
64    addk r5,r0,r4
65    brlid r15, _dl_profile_fixup
66    addk r6,r0,r3; /* delay slot.  */
67    lwi   r10,r1,32
68    lwi   r9,r1,28
69    lwi   r8,r1,24
70    lwi   r7,r1,20
71    lwi   r6,r1,16
72    lwi   r5,r1,12
73    lwi   r15,r1,0
74    brad  r3
75    addik r1,r1,40; /* delay slot.  */
76    .size _dl_runtime_profile, . - _dl_runtime_profile
77
78#else
79
80    .text
81    .globl  _dl_runtime_resolve
82    .type   _dl_runtime_resolve, @function
83    .align  4
84_dl_runtime_resolve:
85    addik r1,r1,-40
86    swi   r5,r1,12
87    swi   r6,r1,16
88    swi   r7,r1,20
89    swi   r8,r1,24
90    swi   r9,r1,28
91    swi   r10,r1,32
92    swi   r15,r1,0
93    addk r5,r0,r4
94    brlid r15, fixup
95    addk r6,r0,r3; /* delay slot.  */
96    lwi   r10,r1,32
97    lwi   r9,r1,28
98    lwi   r8,r1,24
99    lwi   r7,r1,20
100    lwi   r6,r1,16
101    lwi   r5,r1,12
102    lwi   r15,r1,0
103    brad  r3
104    addik r1,r1,40; /* delay slot.  */
105    .size _dl_runtime_resolve, . - _dl_runtime_resolve
106    .globl _dl_runtime_profile
107    .set _dl_runtime_profile, _dl_runtime_resolve
108
109#endif
110