summaryrefslogtreecommitdiff
path: root/ports/sysdeps/hppa/start.S
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@systemhalted.org>2014-04-29 03:08:48 -0400
committerCarlos O'Donell <carlos@systemhalted.org>2014-04-29 04:20:39 -0400
commit5abebba403181de898bbea4ee1bcce5f088c663b (patch)
tree0c4a8eac85e1f2db87621b524bfcbdeb24c2c8f9 /ports/sysdeps/hppa/start.S
parent4e4a58f4ee45cea6f3083af8f12d3834bb999555 (diff)
downloadglibc-5abebba403181de898bbea4ee1bcce5f088c663b.tar.gz
Relocate hppa from ports to libc.
Diffstat (limited to 'ports/sysdeps/hppa/start.S')
-rw-r--r--ports/sysdeps/hppa/start.S143
1 files changed, 0 insertions, 143 deletions
diff --git a/ports/sysdeps/hppa/start.S b/ports/sysdeps/hppa/start.S
deleted file mode 100644
index 0998270afd..0000000000
--- a/ports/sysdeps/hppa/start.S
+++ /dev/null
@@ -1,143 +0,0 @@
-/* ELF startup code for HPPA.
- Copyright (C) 2002-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/>. */
-
- .import main, code
- .import $global$, data
- .import __libc_start_main, code
- .import __libc_csu_fini, code
- .import __libc_csu_init, code
-
- /* Have the linker create plabel words so we get PLABEL32
- relocs and not 21/14. The use of 21/14 relocs is only
- supported in the latest dynamic linker. */
- .section .rodata
- .align 4
-.Lpmain:
- .word P%main
-.Lp__libc_start_main:
- .word P%__libc_start_main
-.Lp__libc_csu_fini:
- .word P%__libc_csu_fini
-.Lp__libc_csu_init:
- .word P%__libc_csu_init
-
- .text
- .align 4
- .globl _start
- .export _start, ENTRY
- .type _start,@function
-_start:
- /* At entry to the function we have:
-
- r26 - Unused
- r25 - argc
- r24 - argv
- r23 - False _dl_fini plabel address
-
- This function is called from the lower half of RTLD_START.
-
- The call to __libc_start_main expects:
-
- 1. r26 - Application main
- 2. r25 - argc
- 3. r24 - argv
- 4. r23 - __libc_csu_init
- 5. sp-52 - __libc_csu_fini
- 6. sp-56 - rtld_fini
- 7. sp-60 - stackend */
-
- .proc
- .callinfo
- /* Clear previous-sp. */
- stw %r0, -4(%sp)
- /* Setup the stack and frame. */
- stw %rp, -20(%sp)
- ldo 64(%sp), %sp
- stw %sp, -4(%sp)
- stw %r19, -32(%sp)
-
- /* argc and argv should be in 25 and 24 (2nd and 3rd argument) */
- /* void (*rtld_fini) (void) (6th argument) */
- stw %r23, -56(%sp)
- /* Need to setup 1, 4, 5, and 7th arguments */
-
-#if SHARED
- /* load main (1st argument) */
- addil LT'.Lpmain, %r19
- ldw RT'.Lpmain(%r1), %r26
- ldw 0(%r26),%r26
- /* void (*init) (void) (4th argument) */
- addil LT'.Lp__libc_csu_init, %r19
- ldw RT'.Lp__libc_csu_init(%r1), %r23
- ldw 0(%r23), %r23
- /* void (*fini) (void) (5th argument) */
- addil LT'.Lp__libc_csu_fini, %r19
- ldw RT'.Lp__libc_csu_fini(%r1), %r22
- ldw 0(%r22), %r22
-#else
- /* load main (1st argument) */
- ldil LR'.Lpmain, %r26
- ldw RR'.Lpmain(%r26), %r26
- /* void (*init) (void) (4th argument) */
- ldil LR'.Lp__libc_csu_init, %r23
- ldw RR'.Lp__libc_csu_init(%r23), %r23
- /* void (*fini) (void) (5th argument) */
- ldil LR'.Lp__libc_csu_fini, %r22
- ldw RR'.Lp__libc_csu_fini(%r22), %r22
-#endif
- /* Store 5th argument */
- stw %r22, -52(%sp)
- /* void *stack_end (7th argument) */
- stw %sp, -60(%sp)
-
- /* load global */
- ldil L%$global$, %dp
- ldo R%$global$(%dp), %dp
-
- bl __libc_start_main,%r2
- nop
- /* die horribly if it returned (it shouldn't) */
- iitlbp %r0,(%sr0,%r0)
- nop
-
- .procend
-
-/* Define a symbol for the first piece of initialized data. */
- .data
- .globl __data_start
-__data_start:
- .long 0
- .weak data_start
- data_start = __data_start