diff options
Diffstat (limited to 'sysdeps/hppa/elf')
-rw-r--r-- | sysdeps/hppa/elf/initfini.c | 162 |
1 files changed, 81 insertions, 81 deletions
diff --git a/sysdeps/hppa/elf/initfini.c b/sysdeps/hppa/elf/initfini.c index d325d53787..4275cd53c6 100644 --- a/sysdeps/hppa/elf/initfini.c +++ b/sysdeps/hppa/elf/initfini.c @@ -1,5 +1,5 @@ /* Special .init and .fini section support for HPPA - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2002 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 @@ -39,84 +39,84 @@ making the comparison and indirect call is quite expensive (see the comment in sysdeps/generic/initfini.c). */ -__asm__ (" - -#include \"defs.h\" - -/*@HEADER_ENDS*/ - -/*@_init_PROLOG_BEGINS*/ - .section .init - .align 4 - .globl _init - .type _init,@function -_init: - stw %rp,-20(%sp) - stwm %r4,64(%sp) - stw %r19,-32(%sp) - bl __gmon_start__,%rp - copy %r19,%r4 /* delay slot */ - copy %r4,%r19 -/*@_init_PROLOG_ENDS*/ - -/*@_init_EPILOG_BEGINS*/ - .text - .align 4 - .weak __gmon_start__ - .type __gmon_start__,@function -__gmon_start__: - .proc - .callinfo - .entry - bv,n %r0(%r2) - .exit - .procend - -/* Here is the tail end of _init. We put __gmon_start before this so - that the assembler creates the .PARISC.unwind section for us, ie. - with the right attributes. */ - .section .init - ldw -84(%sp),%rp - copy %r4,%r19 - bv %r0(%rp) -_end_init: - ldwm -64(%sp),%r4 - -/* Our very own unwind info, because the assembler can't handle - functions split into two or more pieces. */ - .section .PARISC.unwind - .extern _init - .word _init, _end_init - .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08 - -/*@_init_EPILOG_ENDS*/ - -/*@_fini_PROLOG_BEGINS*/ - .section .fini - .align 4 - .globl _fini - .type _fini,@function -_fini: - stw %rp,-20(%sp) - stwm %r4,64(%sp) - stw %r19,-32(%sp) - copy %r19,%r4 -/*@_fini_PROLOG_ENDS*/ - -/*@_fini_EPILOG_BEGINS*/ - .section .fini - ldw -84(%sp),%rp - copy %r4,%r19 - bv %r0(%rp) -_end_fini: - ldwm -64(%sp),%r4 - - .section .PARISC.unwind - .extern _fini - .word _fini, _end_fini - .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08 - -/*@_fini_EPILOG_ENDS*/ - -/*@TRAILER_BEGINS*/ +__asm__ ("\ +\n\ +#include \"defs.h\"\n\ +\n\ +/*@HEADER_ENDS*/\n\ +\n\ +/*@_init_PROLOG_BEGINS*/\n\ + .section .init\n\ + .align 4\n\ + .globl _init\n\ + .type _init,@function\n\ +_init:\n\ + stw %rp,-20(%sp)\n\ + stwm %r4,64(%sp)\n\ + stw %r19,-32(%sp)\n\ + bl __gmon_start__,%rp\n\ + copy %r19,%r4 /* delay slot */\n\ + copy %r4,%r19\n\ +/*@_init_PROLOG_ENDS*/\n\ +\n\ +/*@_init_EPILOG_BEGINS*/\n\ + .text\n\ + .align 4\n\ + .weak __gmon_start__\n\ + .type __gmon_start__,@function\n\ +__gmon_start__:\n\ + .proc\n\ + .callinfo\n\ + .entry\n\ + bv,n %r0(%r2)\n\ + .exit\n\ + .procend\n\ +\n\ +/* Here is the tail end of _init. We put __gmon_start before this so\n\ + that the assembler creates the .PARISC.unwind section for us, ie.\n\ + with the right attributes. */\n\ + .section .init\n\ + ldw -84(%sp),%rp\n\ + copy %r4,%r19\n\ + bv %r0(%rp)\n\ +_end_init:\n\ + ldwm -64(%sp),%r4\n\ +\n\ +/* Our very own unwind info, because the assembler can't handle\n\ + functions split into two or more pieces. */\n\ + .section .PARISC.unwind\n\ + .extern _init\n\ + .word _init, _end_init\n\ + .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08\n\ +\n\ +/*@_init_EPILOG_ENDS*/\n\ +\n\ +/*@_fini_PROLOG_BEGINS*/\n\ + .section .fini\n\ + .align 4\n\ + .globl _fini\n\ + .type _fini,@function\n\ +_fini:\n\ + stw %rp,-20(%sp)\n\ + stwm %r4,64(%sp)\n\ + stw %r19,-32(%sp)\n\ + copy %r19,%r4\n\ +/*@_fini_PROLOG_ENDS*/\n\ +\n\ +/*@_fini_EPILOG_BEGINS*/\n\ + .section .fini\n\ + ldw -84(%sp),%rp\n\ + copy %r4,%r19\n\ + bv %r0(%rp)\n\ +_end_fini:\n\ + ldwm -64(%sp),%r4\n\ +\n\ + .section .PARISC.unwind\n\ + .extern _fini\n\ + .word _fini, _end_fini\n\ + .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08\n\ +\n\ +/*@_fini_EPILOG_ENDS*/\n\ +\n\ +/*@TRAILER_BEGINS*/\ "); |