diff options
Diffstat (limited to 'ports/sysdeps/m68k/dl-trampoline.S')
-rw-r--r-- | ports/sysdeps/m68k/dl-trampoline.S | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/ports/sysdeps/m68k/dl-trampoline.S b/ports/sysdeps/m68k/dl-trampoline.S deleted file mode 100644 index 1c1bbf301b..0000000000 --- a/ports/sysdeps/m68k/dl-trampoline.S +++ /dev/null @@ -1,222 +0,0 @@ -/* PLT trampolines. m68k version. - Copyright (C) 2005-2014 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - 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, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> - -#if !defined (__mcoldfire__) -# define FMOVE fmove.x -# define FPSPACE 12 -#elif defined (__mcffpu__) -# define FMOVE fmove.d -# define FPSPACE 8 -#else -# define FPSPACE 0 -#endif - - .text - .globl _dl_runtime_resolve - .type _dl_runtime_resolve, @function -_dl_runtime_resolve: - cfi_startproc - cfi_adjust_cfa_offset (8) - | Save %a0 (struct return address) and %a1. - move.l %a0, -(%sp) - cfi_adjust_cfa_offset (4) - move.l %a1, -(%sp) - cfi_adjust_cfa_offset (4) - | Call the real address resolver. - jbsr _dl_fixup - | Restore register %a0 and %a1. - move.l (%sp)+, %a1 - cfi_adjust_cfa_offset (-4) - move.l (%sp)+, %a0 - cfi_adjust_cfa_offset (-4) - | Pop parameters - addq.l #8, %sp - cfi_adjust_cfa_offset (-8) - | Call real function. -#ifdef __mcoldfire__ - move.l %d0,-(%sp) - cfi_adjust_cfa_offset (4) - rts -#else - jmp (%d0) -#endif - cfi_endproc - .size _dl_runtime_resolve, . - _dl_runtime_resolve - - .text - .globl _dl_runtime_profile - .type _dl_runtime_profile, @function -_dl_runtime_profile: - cfi_startproc - cfi_adjust_cfa_offset (8) - pea 8(%sp) - cfi_adjust_cfa_offset (4) - move.l %a1, -(%sp) - cfi_adjust_cfa_offset (4) - move.l %a0, -(%sp) - cfi_adjust_cfa_offset (4) - pea -1.w - cfi_adjust_cfa_offset (4) - | Push parameters for _dl_profile_fixup - pea (%sp) - cfi_adjust_cfa_offset (4) - pea 8(%sp) - cfi_adjust_cfa_offset (4) - move.l 32(%sp), -(%sp) - cfi_adjust_cfa_offset (4) - move.l 32(%sp), -(%sp) - cfi_adjust_cfa_offset (4) - move.l 32(%sp), -(%sp) - cfi_adjust_cfa_offset (4) - subq.l #8, %sp - cfi_adjust_cfa_offset (8) - | Call the real address resolver. - jbsr _dl_profile_fixup - | Pop parameters - lea 28(%sp), %sp - cfi_adjust_cfa_offset (-28) - move.l (%sp), %d1 - jpl 1f - addq.l #4, %sp - cfi_adjust_cfa_offset (-4) - | Restore register %a0 and %a1. - move.l (%sp)+, %a0 - cfi_adjust_cfa_offset (-4) - move.l (%sp)+, %a1 - cfi_adjust_cfa_offset (-4) - lea 12(%sp), %sp - cfi_adjust_cfa_offset (-12) - | Call real function. -#ifdef __mcoldfire__ - move.l %d0,-(%sp) - cfi_adjust_cfa_offset (4) - rts -#else - jmp (%d0) -#endif - - /* - +24 return address - +20 PLT1 - +16 PLT2 - +12 %sp - +8 %a1 - +4 %a0 - %sp free - */ -#ifdef __mcoldfire__ - cfi_adjust_cfa_offset (20) -#else - cfi_adjust_cfa_offset (24) -#endif -1: move.l %a2, (%sp) - cfi_rel_offset (%a2, 0) - move.l %sp, %a2 - move.l %sp, %a0 - lea 28(%sp), %a1 - | Round framesize up to longword alignment - addq.l #3, %d1 - and.l #-3, %d1 - sub.l %d1, %a0 - move.l %a0, %sp - cfi_def_cfa_register (%a2) -#ifdef __mcoldfire__ - tst.l %d1 - beq 2f -1: move.l (%a1)+, (%a0)+ - subq.l #4,%d1 - bne 1b -2: -#else - lsr.l #2,%d1 - jra 2f -1: move.l (%a1)+, (%a0)+ -2: dbra %d1,1b -#endif - /* - %a2+24 return address - %a2+20 PLT1 - %a2+16 PLT2 - %a2+12 %sp - %a2+8 %a1 - %a2+4 %a0 - %a2 %a2 - %sp copied stack frame - */ - - move.l 4(%a2), %a0 - move.l 8(%a2), %a1 -#ifdef __mcoldfire__ - pea 2f(%pc) - move.l %d0,-(%sp) - rts -2: -#else - jsr (%d0) -#endif - move.l %a2, %sp - cfi_def_cfa_register (%sp) - move.l (%sp)+, %a2 - cfi_adjust_cfa_offset (4) - cfi_restore (%a2) - /* - +20 return address - +16 PLT1 - +12 PLT2 - +8 %sp - +4 %a1 - %sp %a0 - */ -#ifdef FMOVE - FMOVE %fp0, -(%sp) - cfi_adjust_cfa_offset (FPSPACE) -#endif - move.l %a0, -(%sp) - cfi_adjust_cfa_offset (4) - move.l %d1, -(%sp) - cfi_adjust_cfa_offset (4) - move.l %d0, -(%sp) - cfi_adjust_cfa_offset (4) - pea (%sp) - cfi_adjust_cfa_offset (4) - pea (16+FPSPACE)(%sp) - cfi_adjust_cfa_offset (4) - move.l (32+FPSPACE)(%sp), -(%sp) - cfi_adjust_cfa_offset (4) - move.l (32+FPSPACE)(%sp), -(%sp) - cfi_adjust_cfa_offset (4) - jbsr _dl_call_pltexit - lea 16(%sp), %sp - cfi_adjust_cfa_offset (-16) - move.l (%sp)+, %d0 - cfi_adjust_cfa_offset (-4) - move.l (%sp)+, %d1 - cfi_adjust_cfa_offset (-4) - move.l (%sp)+, %a0 - cfi_adjust_cfa_offset (-4) -#ifdef FMOVE - FMOVE (%sp)+, %fp0 - cfi_adjust_cfa_offset (-FPSPACE) -#endif - lea 20(%sp), %sp - cfi_adjust_cfa_offset (-20) - rts - cfi_endproc - .size _dl_runtime_profile, . - _dl_runtime_profile |