1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-08 17:42:12 +03:00
2001-04-29  Ben Collins  <bcollins@debian.org>

	* sysdeps/sparc/sparc64/dl-machine.h: Fix multiline strings
	warnings.
	* sysdeps/sparc/sparc64/soft-fp/qp_add.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_cmp.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_cmpe.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_div.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_dtoq.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_feq.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_fge.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_fgt.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_fle.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_flt.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_fne.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_mul.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_qtod.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_qtos.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_qtox.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_qtox.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_sqrt.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_stoq.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_sub.c: Likewise.
	* sysdeps/sparc/sparc64/soft-fp/sfp-machine.h: Likewise.
This commit is contained in:
Andreas Jaeger
2001-04-30 06:48:37 +00:00
parent 354fa0497f
commit ba77ce24a6
24 changed files with 294 additions and 266 deletions

View File

@@ -481,53 +481,53 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
/* This code is used in dl-runtime.c to call the `fixup' function
and then redirect to the address it returns. */
#define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \
asm ("\
.text
.globl " #tramp_name "_0
.type " #tramp_name "_0, @function
.align 32
" #tramp_name "_0:
! sethi %hi(1047552), %l2 - Done in .PLT0
ldx [%l6 + 32 + 8], %o0
sub %g1, %l6, %l0
xor %l2, -1016, %l2
sethi %hi(5120), %l3 ! 160 * 32
add %l0, %l2, %l0
sethi %hi(32768), %l4
udivx %l0, %l3, %l3
sllx %l3, 2, %l1
add %l1, %l3, %l1
sllx %l1, 10, %l2
sub %l4, 4, %l4 ! No thanks to Sun for not obeying their own ABI
sllx %l1, 5, %l1
sub %l0, %l2, %l0
udivx %l0, 24, %l0
add %l0, %l4, %l0
add %l1, %l0, %l1
add %l1, %l1, %l0
add %l0, %l1, %l0
mov %i7, %o2
call " #fixup_name "
sllx %l0, 3, %o1
jmp %o0
restore
.size " #tramp_name "_0, . - " #tramp_name "_0
.globl " #tramp_name "_1
.type " #tramp_name "_1, @function
.align 32
" #tramp_name "_1:
! srlx %g1, 12, %o1 - Done in .PLT1
ldx [%l6 + 8], %o0
add %o1, %o1, %o3
sub %o1, 96, %o1 ! No thanks to Sun for not obeying their own ABI
mov %i7, %o2
call " #fixup_name "
add %o1, %o3, %o1
jmp %o0
restore
.size " #tramp_name "_1, . - " #tramp_name "_1
.previous");
asm ("\n" \
" .text\n" \
" .globl " #tramp_name "_0\n" \
" .type " #tramp_name "_0, @function\n" \
" .align 32\n" \
"\t" #tramp_name "_0:\n" \
" ! sethi %hi(1047552), %l2 - Done in .PLT0\n" \
" ldx [%l6 + 32 + 8], %o0\n" \
" sub %g1, %l6, %l0\n" \
" xor %l2, -1016, %l2\n" \
" sethi %hi(5120), %l3 ! 160 * 32\n" \
" add %l0, %l2, %l0\n" \
" sethi %hi(32768), %l4\n" \
" udivx %l0, %l3, %l3\n" \
" sllx %l3, 2, %l1\n" \
" add %l1, %l3, %l1\n" \
" sllx %l1, 10, %l2\n" \
" sub %l4, 4, %l4 ! No thanks to Sun for not obeying their own ABI\n" \
" sllx %l1, 5, %l1\n" \
" sub %l0, %l2, %l0\n" \
" udivx %l0, 24, %l0\n" \
" add %l0, %l4, %l0\n" \
" add %l1, %l0, %l1\n" \
" add %l1, %l1, %l0\n" \
" add %l0, %l1, %l0\n" \
" mov %i7, %o2\n" \
" call " #fixup_name "\n" \
" sllx %l0, 3, %o1\n" \
" jmp %o0\n" \
" restore\n" \
" .size " #tramp_name "_0, . - " #tramp_name "_0\n" \
"\n" \
" .globl " #tramp_name "_1\n" \
" .type " #tramp_name "_1, @function\n" \
" .align 32\n" \
"\t" #tramp_name "_1:\n" \
" ! srlx %g1, 12, %o1 - Done in .PLT1\n" \
" ldx [%l6 + 8], %o0\n" \
" add %o1, %o1, %o3\n" \
" sub %o1, 96, %o1 ! No thanks to Sun for not obeying their own ABI\n" \
" mov %i7, %o2\n" \
" call " #fixup_name "\n" \
" add %o1, %o3, %o1\n" \
" jmp %o0\n" \
" restore\n" \
" .size " #tramp_name "_1, . - " #tramp_name "_1\n" \
" .previous\n");
#ifndef PROF
#define ELF_MACHINE_RUNTIME_TRAMPOLINE \
@@ -549,94 +549,94 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
#define __S1(x) #x
#define __S(x) __S1(x)
#define RTLD_START __asm__ ( "\
.text
.global _start
.type _start, @function
.align 32
_start:
/* Make room for functions to drop their arguments on the stack. */
sub %sp, 6*8, %sp
/* Pass pointer to argument block to _dl_start. */
call _dl_start
add %sp," __S(STACK_BIAS) "+22*8,%o0
/* FALLTHRU */
.size _start, .-_start
.global _dl_start_user
.type _dl_start_user, @function
_dl_start_user:
/* Load the GOT register. */
1: call 11f
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
11: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
/* Store the highest stack address. */
sethi %hi(__libc_stack_end), %g5
add %l7, %o7, %l7
or %g5, %lo(__libc_stack_end), %g5
/* Save the user entry point address in %l0. */
mov %o0, %l0
ldx [%l7 + %g5], %l1
sethi %hi(_dl_skip_args), %g5
add %sp, 6*8, %l2
/* See if we were run as a command with the executable file name as an
extra leading argument. If so, we must shift things around since we
must keep the stack doubleword aligned. */
or %g5, %lo(_dl_skip_args), %g5
stx %l2, [%l1]
ldx [%l7 + %g5], %i0
ld [%i0], %i0
brz,pt %i0, 2f
ldx [%sp + " __S(STACK_BIAS) " + 22*8], %i5
/* Find out how far to shift. */
sethi %hi(_dl_argv), %l4
sub %i5, %i0, %i5
or %l4, %lo(_dl_argv), %l4
sllx %i0, 3, %l6
ldx [%l7 + %l4], %l4
stx %i5, [%sp + " __S(STACK_BIAS) " + 22*8]
add %sp, " __S(STACK_BIAS) " + 23*8, %i1
add %i1, %l6, %i2
ldx [%l4], %l5
/* Copy down argv. */
12: ldx [%i2], %i3
add %i2, 8, %i2
stx %i3, [%i1]
brnz,pt %i3, 12b
add %i1, 8, %i1
sub %l5, %l6, %l5
/* Copy down envp. */
13: ldx [%i2], %i3
add %i2, 8, %i2
stx %i3, [%i1]
brnz,pt %i3, 13b
add %i1, 8, %i1
/* Copy down auxiliary table. */
14: ldx [%i2], %i3
ldx [%i2 + 8], %i4
add %i2, 16, %i2
stx %i3, [%i1]
stx %i4, [%i1 + 8]
brnz,pt %i3, 14b
add %i1, 16, %i1
stx %l5, [%l4]
/* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */
2: sethi %hi(_dl_loaded), %o0
add %sp, " __S(STACK_BIAS) " + 23*8, %o2
orcc %o0, %lo(_dl_loaded), %o0
sllx %i5, 3, %o3
ldx [%l7 + %o0], %o0
add %o3, 8, %o3
mov %i5, %o1
add %o2, %o3, %o3
call _dl_init
ldx [%o0], %o0
/* Pass our finalizer function to the user in %g1. */
sethi %hi(_dl_fini), %g1
or %g1, %lo(_dl_fini), %g1
ldx [%l7 + %g1], %g1
/* Jump to the user's entry point and deallocate the extra stack we got. */
jmp %l0
add %sp, 6*8, %sp
.size _dl_start_user, . - _dl_start_user
.previous");
#define RTLD_START __asm__ ( "\n" \
" .text\n" \
" .global _start\n" \
" .type _start, @function\n" \
" .align 32\n" \
"_start:\n" \
" /* Make room for functions to drop their arguments on the stack. */\n" \
" sub %sp, 6*8, %sp\n" \
" /* Pass pointer to argument block to _dl_start. */\n" \
" call _dl_start\n" \
" add %sp," __S(STACK_BIAS) "+22*8,%o0\n" \
" /* FALLTHRU */\n" \
" .size _start, .-_start\n" \
"\n" \
" .global _dl_start_user\n" \
" .type _dl_start_user, @function\n" \
"_dl_start_user:\n" \
" /* Load the GOT register. */\n" \
"1: call 11f\n" \
" sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n" \
"11: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n" \
" /* Store the highest stack address. */\n" \
" sethi %hi(__libc_stack_end), %g5\n" \
" add %l7, %o7, %l7\n" \
" or %g5, %lo(__libc_stack_end), %g5\n" \
" /* Save the user entry point address in %l0. */\n" \
" mov %o0, %l0\n" \
" ldx [%l7 + %g5], %l1\n" \
" sethi %hi(_dl_skip_args), %g5\n" \
" add %sp, 6*8, %l2\n" \
" /* See if we were run as a command with the executable file name as an\n" \
" extra leading argument. If so, we must shift things around since we\n" \
" must keep the stack doubleword aligned. */\n" \
" or %g5, %lo(_dl_skip_args), %g5\n" \
" stx %l2, [%l1]\n" \
" ldx [%l7 + %g5], %i0\n" \
" ld [%i0], %i0\n" \
" brz,pt %i0, 2f\n" \
" ldx [%sp + " __S(STACK_BIAS) " + 22*8], %i5\n" \
" /* Find out how far to shift. */\n" \
" sethi %hi(_dl_argv), %l4\n" \
" sub %i5, %i0, %i5\n" \
" or %l4, %lo(_dl_argv), %l4\n" \
" sllx %i0, 3, %l6\n" \
" ldx [%l7 + %l4], %l4\n" \
" stx %i5, [%sp + " __S(STACK_BIAS) " + 22*8]\n" \
" add %sp, " __S(STACK_BIAS) " + 23*8, %i1\n" \
" add %i1, %l6, %i2\n" \
" ldx [%l4], %l5\n" \
" /* Copy down argv. */\n" \
"12: ldx [%i2], %i3\n" \
" add %i2, 8, %i2\n" \
" stx %i3, [%i1]\n" \
" brnz,pt %i3, 12b\n" \
" add %i1, 8, %i1\n" \
" sub %l5, %l6, %l5\n" \
" /* Copy down envp. */\n" \
"13: ldx [%i2], %i3\n" \
" add %i2, 8, %i2\n" \
" stx %i3, [%i1]\n" \
" brnz,pt %i3, 13b\n" \
" add %i1, 8, %i1\n" \
" /* Copy down auxiliary table. */\n" \
"14: ldx [%i2], %i3\n" \
" ldx [%i2 + 8], %i4\n" \
" add %i2, 16, %i2\n" \
" stx %i3, [%i1]\n" \
" stx %i4, [%i1 + 8]\n" \
" brnz,pt %i3, 14b\n" \
" add %i1, 16, %i1\n" \
" stx %l5, [%l4]\n" \
" /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */\n" \
"2: sethi %hi(_dl_loaded), %o0\n" \
" add %sp, " __S(STACK_BIAS) " + 23*8, %o2\n" \
" orcc %o0, %lo(_dl_loaded), %o0\n" \
" sllx %i5, 3, %o3\n" \
" ldx [%l7 + %o0], %o0\n" \
" add %o3, 8, %o3\n" \
" mov %i5, %o1\n" \
" add %o2, %o3, %o3\n" \
" call _dl_init\n" \
" ldx [%o0], %o0\n" \
" /* Pass our finalizer function to the user in %g1. */\n" \
" sethi %hi(_dl_fini), %g1\n" \
" or %g1, %lo(_dl_fini), %g1\n" \
" ldx [%l7 + %g1], %g1\n" \
" /* Jump to the user's entry point and deallocate the extra stack we got. */\n" \
" jmp %l0\n" \
" add %sp, 6*8, %sp\n" \
" .size _dl_start_user, . - _dl_start_user\n" \
" .previous\n");