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, see
17 <http://www.gnu.org/licenses/>. */
22 .globl _dl_runtime_resolve
23 .type _dl_runtime_resolve, @function
26 cfi_adjust_cfa_offset (8)
27 | Save %a0 (struct return address) and %a1.
29 cfi_adjust_cfa_offset (4)
31 cfi_adjust_cfa_offset (4)
32 | Call the real address resolver.
34 | Restore register %a0 and %a1.
36 cfi_adjust_cfa_offset (-4)
38 cfi_adjust_cfa_offset (-4)
41 cfi_adjust_cfa_offset (-8)
45 cfi_adjust_cfa_offset (4)
51 .size _dl_runtime_resolve, . - _dl_runtime_resolve
54 .globl _dl_runtime_profile
55 .type _dl_runtime_profile, @function
58 cfi_adjust_cfa_offset (8)
60 cfi_adjust_cfa_offset (4)
62 cfi_adjust_cfa_offset (4)
64 cfi_adjust_cfa_offset (4)
66 cfi_adjust_cfa_offset (4)
67 | Push parameters for _dl_profile_fixup
69 cfi_adjust_cfa_offset (4)
71 cfi_adjust_cfa_offset (4)
72 move.l 32(%sp), -(%sp)
73 cfi_adjust_cfa_offset (4)
74 move.l 32(%sp), -(%sp)
75 cfi_adjust_cfa_offset (4)
76 move.l 32(%sp), -(%sp)
77 cfi_adjust_cfa_offset (4)
79 cfi_adjust_cfa_offset (8)
80 | Call the real address resolver.
81 jbsr _dl_profile_fixup
84 cfi_adjust_cfa_offset (-28)
88 cfi_adjust_cfa_offset (-4)
89 | Restore register %a0 and %a1.
91 cfi_adjust_cfa_offset (-4)
93 cfi_adjust_cfa_offset (-4)
95 cfi_adjust_cfa_offset (-12)
99 cfi_adjust_cfa_offset (4)
115 cfi_adjust_cfa_offset (20)
117 cfi_adjust_cfa_offset (24)
120 cfi_rel_offset (%a2, 0)
124 | Round framesize up to longword alignment
129 cfi_def_cfa_register (%a2)
133 1: move.l (%a0)+, (%a1)+
140 1: move.l (%a1)+, (%a0)+
144 %a2+24 return address
151 %sp copied stack frame
165 cfi_def_cfa_register (%sp)
167 cfi_adjust_cfa_offset (4)
179 cfi_adjust_cfa_offset (8)
182 cfi_adjust_cfa_offset (12)
185 cfi_adjust_cfa_offset (4)
187 cfi_adjust_cfa_offset (4)
189 cfi_adjust_cfa_offset (4)
191 cfi_adjust_cfa_offset (4)
194 cfi_adjust_cfa_offset (4)
195 move.l 40(%sp), -(%sp)
196 cfi_adjust_cfa_offset (4)
197 move.l 40(%sp), -(%sp)
198 cfi_adjust_cfa_offset (4)
201 cfi_adjust_cfa_offset (4)
202 move.l 44(%sp), -(%sp)
203 cfi_adjust_cfa_offset (4)
204 move.l 44(%sp), -(%sp)
205 cfi_adjust_cfa_offset (4)
207 jbsr _dl_call_pltexit
209 cfi_adjust_cfa_offset (-16)
211 cfi_adjust_cfa_offset (-4)
213 cfi_adjust_cfa_offset (-4)
215 cfi_adjust_cfa_offset (-4)
218 cfi_adjust_cfa_offset (-8)
221 cfi_adjust_cfa_offset (-12)
224 cfi_adjust_cfa_offset (-20)
227 .size _dl_runtime_profile, . - _dl_runtime_profile