/* This code is used in dl-runtime.c to call the `fixup' function and then redirect to the address it returns. */ /* We assume that R3 contain relocation offset and R4 contains link_map (_DYNAMIC). This must be consistent with the JUMP_SLOT layout generated by binutils. */ /* Based on glibc 2.3.6, dl-machine.h */ /* 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, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ .text .align 4 .globl _dl_linux_resolver .globl _dl_linux_resolve .type _dl_linux_resolve,@function _dl_linux_resolve: addik r1,r1,-40 swi r5,r1,12 swi r6,r1,16 swi r7,r1,20 swi r8,r1,24 swi r9,r1,28 swi r10,r1,32 swi r15,r1,0 addk r5,r0,r4 brlid r15, _dl_linux_resolver addk r6,r0,r3; /* delay slot */ lwi r10,r1,32 lwi r9,r1,28 lwi r8,r1,24 lwi r7,r1,20 lwi r6,r1,16 lwi r5,r1,12 lwi r15,r1,0 brad r3 addik r1,r1,40; /* delay slot */ .size _dl_linux_resolve, . - _dl_linux_resolve