m68k: remove unused fpu switch implementation
authorAndreas Schwab <schwab@linux-m68k.org>
Sun, 26 Feb 2012 16:06:00 +0000 (17:06 +0100)
committerAndreas Schwab <schwab@linux-m68k.org>
Sun, 26 Feb 2012 16:06:00 +0000 (17:06 +0100)
ChangeLog.m68k
sysdeps/m68k/m680x0/fpu/Makefile [deleted file]
sysdeps/m68k/m680x0/fpu/switch/68881-sw.h [deleted file]
sysdeps/m68k/m680x0/fpu/switch/Makefile [deleted file]
sysdeps/m68k/m680x0/fpu/switch/bits/mathinline.h [deleted file]
sysdeps/m68k/m680x0/fpu/switch/switch.c [deleted file]

index 7104bd9..3f5d331 100644 (file)
@@ -1,5 +1,8 @@
 2012-02-26  Andreas Schwab  <schwab@linux-m68k.org>
 
+       * sysdeps/m68k/m680x0/fpu/Makefile: Remove.
+       * sysdeps/m68k/m680x0/fpu/switch: Remove directory.
+
        * sysdeps/m68k/m680x0/fpu/k_sinl.c: Replace by empty file.
        * sysdeps/m68k/m680x0/fpu/k_cosl.c: Likewise.
        * sysdeps/m68k/m680x0/fpu/k_tanf.c: Likewise.
diff --git a/sysdeps/m68k/m680x0/fpu/Makefile b/sysdeps/m68k/m680x0/fpu/Makefile
deleted file mode 100644 (file)
index 42db638..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-ifeq   ($(subdir),math)
-ifndef math-twiddled
-
-# Avoid twiddling in generic/Makefile.
-math-twiddled := t
-
-endif
-
-bsdmath_dirs := $(bsdmath_dirs) mc68881
-
-endif
diff --git a/sysdeps/m68k/m680x0/fpu/switch/68881-sw.h b/sysdeps/m68k/m680x0/fpu/switch/68881-sw.h
deleted file mode 100644 (file)
index c5a0f71..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/* Copyright (C) 1991, 1992, 1997, 2000 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.  */
-
-#ifndef        _68881_SWITCH_H
-
-#define        _68881_SWITCH_H 1
-#include <sys/cdefs.h>
-
-/* This is the format of the data at the code label for a function which
-   wants to switch depending on whether or not a 68881 is present.
-
-   Initially, `insn' is a `jsr' instruction, and `target' is __68881_switch.
-   The first time such a function is called, __68881_switch determines whether
-   or not a 68881 is present, and modifies the function accordingly.
-   Then `insn' is a `jmp' instruction, and `target' is the value of `fpu'
-   if there is 68881, or the value of `soft' if not.  */
-
-struct switch_caller
-  {
-    unsigned short int insn;   /* The `jsr' or `jmp' instruction.  */
-    void *target;              /* The target of the instruction.  */
-    void *soft;                        /* The address of the soft function.  */
-    void *fpu;                 /* The address of the 68881 function.  */
-  };
-
-/* These are opcodes (values for `insn', above) for `jmp' and `jsr'
-   instructions, respectively, to 32-bit absolute addresses.  */
-#define        JMP     0x4ef9
-#define        JSR     0x4eb9
-
-
-/* Function to determine whether or not a 68881 is available,
-   and modify its caller (which must be a `struct switch_caller', above,
-   in data space) to use the appropriate version.  */
-extern void __68881_switch (int __dummy) __THROW;
-
-
-/* Define FUNCTION as a `struct switch_caller' which will call
-   `__FUNCTION_68881' if a 68881 is present, and `__FUNCTION_soft' if not.
-#define        switching_function(FUNCTION)                                          \
-  struct switch_caller FUNCTION =                                            \
-    {                                                                        \
-      JSR, (__ptr_t) __68881_switch,                                         \
-      __CONCAT(__CONCAT(__,FUNCTION),_soft),                                 \
-      __CONCAT(__CONCAT(__,FUNCTION),_68881)                                 \
-    }
-
-
-#endif /* 68881-switch.h  */
diff --git a/sysdeps/m68k/m680x0/fpu/switch/Makefile b/sysdeps/m68k/m680x0/fpu/switch/Makefile
deleted file mode 100644 (file)
index c041071..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 1991, 1992, 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 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.
-
-ifeq ($(subdir),math)
-
-sysdep_routines := $(sysdep_routines) switch
-
-# Find all the sources that have 68881 versions.
-+68881-sources := \
-  $(notdir $(wildcard $(addprefix $(filter %/fpu,$(sysdirs)),$(sources))))
-
-# Sysdep directories other than fpu and fpu/switch (this one).
-+non68881-dirs := $(filter-out %/fpu %/fpu/switch,$(+sysdep_dirs))
-
-# Get a non-68881 version of the target.
-+non68881-version = $(firstword $(wildcard $(addsuffix /$@,$(+non68881-dirs))))
-
-# Directory containing 68881 sources.
-+68881-dir := $(filter %/fpu,$(+sysdep_dirs))
-
-# For all the files that have 68881 versions and don't exist already in
-# the source directory (math), automatically make ones that switch between
-# 68881 and soft versions.
-$(addprefix $(objpfx), \
-           $(filter-out $(wildcard $(+68881-sources)),$(+68881-sources))):
-       (echo '#include <68881-sw.h>'           ;\
-        echo '#define $* __$*_68881'           ;\
-        echo '#include <$(+68881-dir)/$@>'     ;\
-        echo '#undef $*'                       ;\
-        echo '#define $* __$*_soft'            ;\
-        echo '#include <$(non68881-version)>'  ;\
-        echo '#undef $*'                       ;\
-        echo 'switching_function($*);') > $@-tmp
-       mv $@-tmp $@
-
-endif
diff --git a/sysdeps/m68k/m680x0/fpu/switch/bits/mathinline.h b/sysdeps/m68k/m680x0/fpu/switch/bits/mathinline.h
deleted file mode 100644 (file)
index c0f6966..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/* We don't want any inlines when we might not have a 68881.  */
diff --git a/sysdeps/m68k/m680x0/fpu/switch/switch.c b/sysdeps/m68k/m680x0/fpu/switch/switch.c
deleted file mode 100644 (file)
index e055817..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright (C) 1991, 1992, 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 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 <signal.h>
-#include <68881-sw.h>
-
-
-/* The signal that is sent when a 68881 instruction
-   is executed and there is no 68881.  */
-#ifndef        TRAPSIG
-#define        TRAPSIG SIGILL
-#endif
-
-/* Zero if no 68881, one if we have a 68881, or -1 if we don't know yet.  */
-static int have_fpu = -1;
-
-
-/* Signal handler for the trap that happens if we don't have a 68881.  */
-static void
-trap (sig)
-     int sig;
-{
-  have_fpu = 0;
-}
-
-/* This function is called by functions that want to switch.
-   The calling function must be a `struct switch_caller' in data space.
-   It determines whether a 68881 is present, and modifies its caller
-   to be a static jump to either the 68881 version or the soft version.
-   It then returns into the function it has chosen to do the work.  */
-void
-__68881_switch (dummy)
-     int dummy;
-{
-  void **return_address_location = &((void **) &dummy)[-1];
-  struct switch_caller *const caller
-    = (struct switch_caller *) (((short int *) *return_address_location) - 1);
-
-  if (have_fpu < 0)
-    {
-      /* Figure out whether or not we have a 68881.  */
-      __sighandler_t handler = signal (TRAPSIG, trap);
-      if (handler == SIG_ERR)
-       /* We can't figure it out, so assume we don't have a 68881.
-          This assumption will never cause us any problems other than
-          lost performance, while the reverse assumption could cause
-          the program to crash.  */
-       have_fpu = 0;
-      else
-       {
-         /* We set `have_fpu' to nonzero, and then execute a 68881
-            no-op instruction.  If we have a 68881, this will do nothing.
-            If we don't have one, this will trap and the signal handler
-            will clear `have_fpu'.  */
-         have_fpu = 1;
-         asm ("fnop");
-
-         /* Restore the old signal handler.  */
-         (void) signal (TRAPSIG, handler);
-       }
-    }
-
-  /* Modify the caller to be a jump to the appropriate address.  */
-  caller->insn = JMP;
-  caller->target = have_fpu ? caller->fpu : caller->soft;
-
-  /* Make the address we will return to be the target we have chosen.
-     Our return will match the `jsr' done by the caller we have
-     just modified, and it will be just as if that had instead
-     been a `jmp' to the new target.  */
-  *return_address_location = caller->target;
-}