summaryrefslogtreecommitdiff
path: root/gcc/config/ia64/crtend.asm
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/ia64/crtend.asm')
-rw-r--r--gcc/config/ia64/crtend.asm121
1 files changed, 0 insertions, 121 deletions
diff --git a/gcc/config/ia64/crtend.asm b/gcc/config/ia64/crtend.asm
deleted file mode 100644
index a904af9cfd9..00000000000
--- a/gcc/config/ia64/crtend.asm
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Copyright (C) 2000, 2001, 2003, 2005, 2009 Free Software Foundation, Inc.
- Contributed by Jes Sorensen, <Jes.Sorensen@cern.ch>
-
- This file is part of GCC.
-
- GCC is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GCC 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 General Public License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include "auto-host.h"
-
-.section .ctors,"aw","progbits"
- .align 8
-__CTOR_END__:
- data8 0
-
-.section .dtors,"aw","progbits"
- .align 8
-__DTOR_END__:
- data8 0
-
-.section .jcr,"aw","progbits"
- .align 8
-__JCR_END__:
- data8 0
-
-#ifdef HAVE_INITFINI_ARRAY
- .global __do_global_ctors_aux
- .hidden __do_global_ctors_aux
-#else /* !HAVE_INITFINI_ARRAY */
-/*
- * Fragment of the ELF _init routine that invokes our dtor cleanup.
- *
- * We make the call by indirection, because in large programs the
- * .fini and .init sections are not in range of the destination, and
- * we cannot allow the linker to insert a stub at the end of this
- * fragment of the _fini function. Further, Itanium does not implement
- * the long branch instructions, and we do not wish every program to
- * trap to the kernel for emulation.
- *
- * Note that we require __do_global_ctors_aux to preserve the GP,
- * so that the next fragment in .fini gets the right value.
- */
-.section .init,"ax","progbits"
- { .mlx
- movl r2 = @pcrel(__do_global_ctors_aux - 16)
- }
- { .mii
- mov r3 = ip
- ;;
- add r2 = r2, r3
- ;;
- }
- { .mib
- mov b6 = r2
- br.call.sptk.many b0 = b6
- ;;
- }
-#endif /* !HAVE_INITFINI_ARRAY */
-
-.text
- .align 32
- .proc __do_global_ctors_aux
-__do_global_ctors_aux:
- .prologue
- /*
- for (loc0 = __CTOR_END__-1; *p != -1; --p)
- (*p) ();
- */
- .save ar.pfs, r34
- alloc loc2 = ar.pfs, 0, 5, 0, 0
- movl loc0 = @gprel(__CTOR_END__ - 8)
- ;;
-
- add loc0 = loc0, gp
- ;;
- ld8 loc3 = [loc0], -8
- .save rp, loc1
- mov loc1 = rp
- .body
- ;;
-
- cmp.eq p6, p0 = -1, loc3
- mov loc4 = gp
-(p6) br.cond.spnt.few .exit
-
-.loop: ld8 r15 = [loc3], 8
- ;;
- ld8 gp = [loc3]
- mov b6 = r15
-
- ld8 loc3 = [loc0], -8
- nop 0
- br.call.sptk.many rp = b6
- ;;
-
- cmp.ne p6, p0 = -1, loc3
- nop 0
-(p6) br.cond.sptk.few .loop
-
-.exit: mov gp = loc3
- mov rp = loc1
- mov ar.pfs = loc2
-
- br.ret.sptk.many rp
- .endp __do_global_ctors_aux