1 /* PLT trampolines. m68k version.
2 Copyright (C) 2005, 2011, 2012 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
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
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
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.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, write to the Free
17 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
23 .globl _dl_runtime_resolve
24 .type _dl_runtime_resolve, @function
27 cfi_adjust_cfa_offset (8)
28 | Save %a0 (struct return address) and %a1.
30 cfi_adjust_cfa_offset (4)
32 cfi_adjust_cfa_offset (4)
33 | Call the real address resolver.
35 | Restore register %a0 and %a1.
37 cfi_adjust_cfa_offset (-4)
39 cfi_adjust_cfa_offset (-4)
42 cfi_adjust_cfa_offset (-8)
46 cfi_adjust_cfa_offset (4)
52 .size _dl_runtime_resolve, . - _dl_runtime_resolve
55 .globl _dl_runtime_profile
56 .type _dl_runtime_profile, @function
59 cfi_adjust_cfa_offset (8)
61 cfi_adjust_cfa_offset (4)
63 cfi_adjust_cfa_offset (4)
65 cfi_adjust_cfa_offset (4)
67 cfi_adjust_cfa_offset (4)
68 | Push parameters for _dl_profile_fixup
70 cfi_adjust_cfa_offset (4)
72 cfi_adjust_cfa_offset (4)
73 move.l 32(%sp), -(%sp)
74 cfi_adjust_cfa_offset (4)
75 move.l 32(%sp), -(%sp)
76 cfi_adjust_cfa_offset (4)
77 move.l 32(%sp), -(%sp)
78 cfi_adjust_cfa_offset (4)
80 cfi_adjust_cfa_offset (8)
81 | Call the real address resolver.
82 jbsr _dl_profile_fixup
85 cfi_adjust_cfa_offset (-28)
89 cfi_adjust_cfa_offset (-4)
90 | Restore register %a0 and %a1.
92 cfi_adjust_cfa_offset (-4)
94 cfi_adjust_cfa_offset (-4)
96 cfi_adjust_cfa_offset (-12)
100 cfi_adjust_cfa_offset (4)
116 cfi_adjust_cfa_offset (20)
118 cfi_adjust_cfa_offset (24)
121 cfi_rel_offset (%a2, 0)
125 | Round framesize up to longword alignment
130 cfi_def_cfa_register (%a2)
134 1: move.l (%a0)+, (%a1)+
141 1: move.l (%a1)+, (%a0)+
145 %a2+24 return address
152 %sp copied stack frame
166 cfi_def_cfa_register (%sp)
168 cfi_adjust_cfa_offset (4)
180 cfi_adjust_cfa_offset (8)
183 cfi_adjust_cfa_offset (12)
186 cfi_adjust_cfa_offset (4)
188 cfi_adjust_cfa_offset (4)
190 cfi_adjust_cfa_offset (4)
192 cfi_adjust_cfa_offset (4)
195 cfi_adjust_cfa_offset (4)
196 move.l 40(%sp), -(%sp)
197 cfi_adjust_cfa_offset (4)
198 move.l 40(%sp), -(%sp)
199 cfi_adjust_cfa_offset (4)
202 cfi_adjust_cfa_offset (4)
203 move.l 44(%sp), -(%sp)
204 cfi_adjust_cfa_offset (4)
205 move.l 44(%sp), -(%sp)
206 cfi_adjust_cfa_offset (4)
208 jbsr _dl_call_pltexit
210 cfi_adjust_cfa_offset (-16)
212 cfi_adjust_cfa_offset (-4)
214 cfi_adjust_cfa_offset (-4)
216 cfi_adjust_cfa_offset (-4)
219 cfi_adjust_cfa_offset (-8)
222 cfi_adjust_cfa_offset (-12)
225 cfi_adjust_cfa_offset (-20)
228 .size _dl_runtime_profile, . - _dl_runtime_profile