]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Merge from mainline.
authorAndreas Jaeger <aj@suse.de>
Thu, 4 Apr 2002 09:12:36 +0000 (09:12 +0000)
committerAndreas Jaeger <aj@suse.de>
Thu, 4 Apr 2002 09:12:36 +0000 (09:12 +0000)
ChangeLog
sysdeps/unix/sysv/linux/x86_64/gettimeofday.S [moved from sysdeps/unix/sysv/linux/x86_64/gettimeofday.c with 59% similarity]
sysdeps/unix/sysv/linux/x86_64/time.S [moved from sysdeps/unix/sysv/linux/x86_64/time.c with 68% similarity]
sysdeps/x86_64/fpu/e_sqrt.c [new file with mode: 0644]
sysdeps/x86_64/fpu/e_sqrtf.c [new file with mode: 0644]
sysdeps/x86_64/fpu/s_fabs.c [new file with mode: 0644]
sysdeps/x86_64/fpu/s_fabsf.c [new file with mode: 0644]
sysdeps/x86_64/fpu/s_fabsl.S [new file with mode: 0644]

index 289892b5033f407fefab40fcc6caf20b2745ee90..a8b07fef7700ac846d41b5a9a742c45663cb49d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2002-04-04  Andreas Jaeger  <aj@suse.de>
+
+       * sysdeps/x86_64/fpu/e_sqrt.c: New file.
+       * sysdeps/x86_64/fpu/e_sqrtf.c: New file.
+
+       * sysdeps/x86_64/fpu/s_fabs.c: New file.
+       * sysdeps/x86_64/fpu/s_fabsf.c: New file.
+       * sysdeps/x86_64/fpu/s_fabsl.c: New file.
+
+       * sysdeps/unix/sysv/linux/x86_64/time.S: New file.
+
+       * sysdeps/unix/sysv/linux/x86_64/gettimeofday.S: New file.
+
+       * sysdeps/unix/sysv/linux/x86_64/gettimeofday.c: Removed.
+       * sysdeps/unix/sysv/linux/x86_64/time.S: Removed.
+
 2002-04-04  Ulrich Drepper  <drepper@redhat.com>
 
        * misc/dirname.c (dirname): Ignore trailing slashes at end of
similarity index 59%
rename from sysdeps/unix/sysv/linux/x86_64/gettimeofday.c
rename to sysdeps/unix/sysv/linux/x86_64/gettimeofday.S
index c4fcfd900ce0bb8b96174a71698f600917caa549..4978416e0ab7d1d4bd992ff14fb1b5e4c7a7a91c 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 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
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <asm/vsyscall.h>
-#include <time.h>
-#include <sys/time.h>
+#include <sysdep.h>
+#define _ERRNO_H       1
+#include <bits/errno.h>
 
+/* For the calculation see asm/vsyscall.h.  */
+#define VSYSCALL_ADDR_vgettimeofday    0xffffffffff600000
 
-/* Get the current time of day and timezone information,
-   putting it into *TV and *TZ.  If TZ is NULL, *TZ is not filled.
-   Returns 0 on success, -1 on errors.  */
-int
-__gettimeofday (struct timeval *tv, struct timezone *tz)
-{
-  /* We're using a virtual syscall here.  */
-  int (*__vgettimeofday)(struct timeval *, struct timezone *)
-    = (int (*)(struct timeval *, struct timezone *)) VSYSCALL_ADDR (__NR_vgettimeofday);
 
+ENTRY (__gettimeofday)
+       /* Align stack.  */
+       sub     $0x8, %rsp
+       movq    $VSYSCALL_ADDR_vgettimeofday, %rax
+       callq   *%rax
+       /* Check error return.  */
+       cmpl    $-4095, %eax
+       jae     SYSCALL_ERROR_LABEL
 
-  return __vgettimeofday (tv, tz);
-}
+L(pseudo_end):
+       add     $0x8, %rsp
+       ret
+PSEUDO_END(__gettimeofday)
 
 weak_alias (__gettimeofday, gettimeofday)
similarity index 68%
rename from sysdeps/unix/sysv/linux/x86_64/time.c
rename to sysdeps/unix/sysv/linux/x86_64/time.S
index 2cb748cfa5c264bb996cf40d277ad2cdb0ace569..ecd939372a2c471d4628d57d7466b3c6d2929590 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 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
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#include <asm/vsyscall.h>
-#include <time.h>
-#include <sys/time.h>
+#include <sysdep.h>
+#define _ERRNO_H       1
+#include <bits/errno.h>
+
+/* For the calculation see asm/vsyscall.h.  */
+#define VSYSCALL_ADDR_vtime    0xffffffffff600400
+
 
 /* Return the current time as a `time_t' and also put it in *T if T is
    not NULL.  Time is represented as seconds from Jan 1 00:00:00 1970.  */
-time_t
-time (time_t *t)
-{
-  /* We're using a virtual syscall here.  */
-  time_t (*__vtime)(time_t * time)
-    = (time_t (*)(time_t *)) VSYSCALL_ADDR (__NR_vtime);
-
-  return __vtime (t);
-}
+
+ENTRY (time)
+       /* Align stack.  */
+       sub     $0x8, %rsp
+       movq    $VSYSCALL_ADDR_vtime, %rax
+       callq   *%rax
+       /* Check error return.  */
+       cmpl    $-4095, %eax
+       jae     SYSCALL_ERROR_LABEL
+
+L(pseudo_end):
+       add     $0x8, %rsp
+       ret
+PSEUDO_END(time)
diff --git a/sysdeps/x86_64/fpu/e_sqrt.c b/sysdeps/x86_64/fpu/e_sqrt.c
new file mode 100644 (file)
index 0000000..d588a8b
--- /dev/null
@@ -0,0 +1,30 @@
+/* Square root of floating point number.
+   Copyright (C) 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
+   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.
+
+   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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <math_private.h>
+
+double
+__ieee754_sqrt (double x)
+{
+  double res;
+
+  asm ("sqrtsd %0, %1" : "=x" (res) : "x" (x));
+
+  return res;
+}
diff --git a/sysdeps/x86_64/fpu/e_sqrtf.c b/sysdeps/x86_64/fpu/e_sqrtf.c
new file mode 100644 (file)
index 0000000..f7801f0
--- /dev/null
@@ -0,0 +1,30 @@
+/* Square root of floating point number.
+   Copyright (C) 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
+   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.
+
+   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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <math_private.h>
+
+float
+__ieee754_sqrtf (float x)
+{
+  float res;
+
+  asm ("sqrtss %0, %1" : "=x" (res) : "x" (x));
+
+  return res;
+}
diff --git a/sysdeps/x86_64/fpu/s_fabs.c b/sysdeps/x86_64/fpu/s_fabs.c
new file mode 100644 (file)
index 0000000..e5f70b7
--- /dev/null
@@ -0,0 +1,27 @@
+/* Absolute value of floating point number.
+   Copyright (C) 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
+   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.
+
+   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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <math.h>
+
+double
+__fabs (double x)
+{
+  return __builtin_fabs (x);
+}
+weak_alias (__fabs, fabs)
diff --git a/sysdeps/x86_64/fpu/s_fabsf.c b/sysdeps/x86_64/fpu/s_fabsf.c
new file mode 100644 (file)
index 0000000..5e58c11
--- /dev/null
@@ -0,0 +1,27 @@
+/* Absolute value of floating point number.
+   Copyright (C) 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
+   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.
+
+   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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <math.h>
+
+float
+__fabsf (float x)
+{
+  return __builtin_fabsf (x);
+}
+weak_alias (__fabsf, fabsf)
diff --git a/sysdeps/x86_64/fpu/s_fabsl.S b/sysdeps/x86_64/fpu/s_fabsl.S
new file mode 100644 (file)
index 0000000..3bee0f2
--- /dev/null
@@ -0,0 +1,28 @@
+/* Absolute value of floating point number.
+   Copyright (C) 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
+   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.
+
+   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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+
+       .text
+ENTRY(__fabsl)
+       fldt    8(%rsp)
+       fabs
+       ret
+END(__fabsl)
+weak_alias (__fabsl, fabsl)