summaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/fpu
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-09-20 21:39:29 +0000
committerRoland McGrath <roland@gnu.org>2002-09-20 21:39:29 +0000
commit1010f17b925bdd26f313e64084bc82f57be9ab03 (patch)
tree2b9fe9ce8da41af109603532949b4d826c5ed0cf /sysdeps/powerpc/fpu
parent9db6ee8d2fa48ade4451c0de80980b7f242c0f17 (diff)
downloadglibc-1010f17b925bdd26f313e64084bc82f57be9ab03.tar.gz
* sysdeps/powerpc/elf/libc-start.c: Use long in place of int for argc
load, so as to work on both 32-bit and 64-bit. Remove unnecessary casts. Align __libc_stack_end to 8 bytes. 2002-09-20 Roland McGrath <roland@redhat.com> * sysdeps/powerpc/fpu/s_lrint.c: Use strong_alias/weak_alias macros instead of asm for lrintf, __lrintf aliases. * sysdeps/powerpc/fpu/s_lrint.c (__lrint): Change union long array to int array for 32-/64-bit compatibility. From Steven Munroe <sjmunroe@us.ibm.com>.
Diffstat (limited to 'sysdeps/powerpc/fpu')
-rw-r--r--sysdeps/powerpc/fpu/s_lrint.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/sysdeps/powerpc/fpu/s_lrint.c b/sysdeps/powerpc/fpu/s_lrint.c
index 75d782ec73..c78fb035bd 100644
--- a/sysdeps/powerpc/fpu/s_lrint.c
+++ b/sysdeps/powerpc/fpu/s_lrint.c
@@ -1,5 +1,5 @@
/* Round floating-point to integer. PowerPC version.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997,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
@@ -17,28 +17,35 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+/* Kludge to avoid decls that will confuse strong_alias below. */
+#define __lrintf XXX__lrintf
+#define __lrintl XXX__lrintl
+#define lrintf XXXlrintf
+#define lrintl XXXlrintl
+
#include "math.h"
+#undef __lrintf
+#undef __lrintl
+#undef lrintf
+#undef lrintl
+
+
long int
__lrint (double x)
{
- union {
+ union
+ {
double d;
- long int ll[2];
+ int ll[2];
} u;
asm ("fctiw %0,%1" : "=f"(u.d) : "f"(x));
return u.ll[1];
}
weak_alias (__lrint, lrint)
-/* This code will also work for a 'float' argument. */
-asm ("\n\
- .globl __lrintf \n\
- .globl lrintf \n\
- .weak lrintf \n\
- .set __lrintf,__lrint \n\
- .set lrintf,__lrint \n\
-");
+strong_alias (__lrint, __lrintf)
+weak_alias (__lrint, lrintf)
#ifdef NO_LONG_DOUBLE
strong_alias (__lrint, __lrintl)