diff options
Diffstat (limited to 'ports/sysdeps/ia64/crti.S')
-rw-r--r-- | ports/sysdeps/ia64/crti.S | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/ports/sysdeps/ia64/crti.S b/ports/sysdeps/ia64/crti.S deleted file mode 100644 index 0615ddecf7..0000000000 --- a/ports/sysdeps/ia64/crti.S +++ /dev/null @@ -1,160 +0,0 @@ -/* Special .init and .fini section support for IA64. - Copyright (C) 2000-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. - - In addition to the permissions in the GNU Lesser General Public - License, the Free Software Foundation gives you unlimited - permission to link the compiled version of this file with other - programs, and to distribute those programs without any restriction - coming from the use of this file. (The GNU Lesser General Public - License restrictions do apply in other respects; for example, they - cover modification of the file, and distribution when not linked - into another program.) - - Note that people who make modified versions of this file are not - obligated to grant this special exception for their modified - versions; it is their choice whether to do so. The GNU Lesser - General Public License gives permission to release a modified - version without this exception; this exception also makes it - possible to release a modified version which carries forward this - exception. - - 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/>. */ - -/* crti.S puts a function prologue at the beginning of the .init and - .fini sections and defines global symbols for those addresses, so - they can be called as functions. The symbols _init and _fini are - magic and cause the linker to emit DT_INIT and DT_FINI. */ - -#include <libc-symbols.h> -#include <sysdep.h> -#undef ret - -#ifndef PREINIT_FUNCTION -# define PREINIT_FUNCTION __gmon_start__ -#endif - -#ifndef PREINIT_FUNCTION_WEAK -# define PREINIT_FUNCTION_WEAK 1 -#endif - -#if PREINIT_FUNCTION_WEAK - weak_extern (PREINIT_FUNCTION) -#else - .hidden PREINIT_FUNCTION -#endif - -/* If we have working .init_array support, we want to keep the .init - section empty (apart from the mandatory prologue/epilogue. This - ensures that the default unwind conventions (return-pointer in b0, - frame state in ar.pfs, etc.) will do the Right Thing. To ensure - an empty .init section, we register gmon_initializer() via the - .init_array. - - --davidm 02/10/29 */ - -#if PREINIT_FUNCTION_WEAK -/* This blob of assembly code is one simple C function: - -static void -__attribute__ ((used)) -gmon_initializer (void) -{ - extern void weak_function __gmon_start__ (void); - - if (__gmon_start__) - (*__gmon_start__)(); -} - */ - .text - .align 64 - .proc gmon_initializer# -gmon_initializer: - .prologue 12, 32 - .mmi - .save ar.pfs, r33 - alloc r33 = ar.pfs, 0, 3, 0, 0 - addl r14 = @ltoff(@fptr(PREINIT_FUNCTION#)), gp - .save rp, r32 - mov r32 = b0 - .mmi - mov r34 = r1 - .body - ;; - ld8 r14 = [r14] - nop 0 - ;; - .mib - cmp.eq p6, p7 = 0, r14 - nop 0 - (p6) br.cond.spnt .L1 - ;; - .mib - nop 0 - nop 0 - br.call.sptk.many b0 = PREINIT_FUNCTION# - ;; - .mmi - mov r1 = r34 - nop 0 - nop 0 -.L1: - .mii - nop 0 - mov ar.pfs = r33 - nop 0 - ;; - .mib - nop 0 - mov b0 = r32 - br.ret.sptk.many b0 - .endp gmon_initializer# -# undef PREINIT_FUNCTION -# define PREINIT_FUNCTION gmon_initializer -#endif - .section .init_array, "aw" - data8 @fptr(PREINIT_FUNCTION) - - .section .init,"ax",@progbits - .global _init# - .proc _init# -_init: - .prologue - .save ar.pfs, r34 - alloc r34 = ar.pfs, 0, 3, 0, 0 - .vframe r32 - mov r32 = r12 - .save rp, r33 - mov r33 = b0 - .body - adds r12 = -16, r12 - ;; /* see gmon_initializer() above */ - .endp _init# - - .section .fini,"ax",@progbits - .global _fini# - .proc _fini# -_fini: - .prologue - .save ar.pfs, r34 - alloc r34 = ar.pfs, 0, 3, 0, 0 - .vframe r32 - mov r32 = r12 - .save rp, r33 - mov r33 = b0 - .body - adds r12 = -16, r12 - ;; - .endp _fini# |