1/* PLT trampolines. C-SKY ABIV2 version. 2 Copyright (C) 2018-2022 Free Software Foundation, Inc. 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 7 License as published by the Free Software Foundation; either 8 version 2.1 of the 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/* This function is not called directly. It is jumped when attempting to 20 use a symbol that has not yet been resolved. 21 22 .plt*: 23 subi r0, 32 24 stw r2, (r0, 0) 25 stw r3, (r0, 4) 26 lrw r3, #offset 27 ldw r2, (gb, 8) 28 jmp r2 29 */ 30 31#include <sysdep.h> 32 33 .globl _dl_runtime_resolve; 34 .type _dl_runtime_resolve,@function; 35 .align 4; 36_dl_runtime_resolve: 37 subi sp, 20 38 stm a0-a3, (sp) 39 stw lr, (sp, 16) 40 /* a0 = id, a1 = offset(do it in plt*). */ 41 ldw a0, (gb, 4) 42 movi a1, 12 43 mult a1, t1 44 bsr _dl_fixup 45 mov t0, a0 46 ldw lr, (sp, 16) 47 ldm a0-a3, (sp) 48 addi sp, 20 49 jmp t0 50 .size _dl_runtime_resolve,.-_dl_runtime_resolve 51