diff options
Diffstat (limited to 'sysdeps/powerpc/s_copysign.S')
-rw-r--r-- | sysdeps/powerpc/s_copysign.S | 40 |
1 files changed, 15 insertions, 25 deletions
diff --git a/sysdeps/powerpc/s_copysign.S b/sysdeps/powerpc/s_copysign.S index adc7df226a..6d5ba82592 100644 --- a/sysdeps/powerpc/s_copysign.S +++ b/sysdeps/powerpc/s_copysign.S @@ -1,17 +1,17 @@ /* Copy a sign bit between floating-point values. Copyright (C) 1997 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 Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + 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 Library General Public License for more details. - + You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, @@ -20,15 +20,12 @@ /* This has been coded in assembler because GCC makes such a mess of it when it's coded in C. */ - .section ".text" - .align 2 - .globl __copysign - .type __copysign,@function -__copysign: +#include <sysdep.h> + +ENTRY(__copysign) /* double [f1] copysign (double [f1] x, double [f2] y); copysign(x,y) returns a value with the magnitude of x and with the sign bit of y. */ - stwu %r1,-16(%r1) stfd %f2,8(%r1) lwz %r3,8(%r1) @@ -39,22 +36,15 @@ __copysign: blr 0: fnabs %f1,%f1 blr -0: - .size __copysign,0b-__copysign - - .globl copysign - .globl copysignf - .globl __copysignf - .weak copysign - .weak copysignf - .set copysign,__copysign + END (__copysign) + +weak_alias(__copysign,copysign) + /* It turns out that it's safe to use this code even for single-precision. */ - .set __copysignf,__copysign - .set copysignf,__copysign +weak_alias(__copysign,copysignf) +strong_alias(__copysign,__copysignf) + #ifdef NO_LONG_DOUBLE - .globl copysignl - .globl __copysignl - .weak copysignl - .set __copysignl,__copysign - .set copysignl,__copysign +weak_alias(__copysign,copysignl) +strong_alias(__copysign,__copysignl) #endif |