* configure.in: Add mips64* support.
authoraoliva <aoliva>
Sat, 29 Mar 2003 08:15:27 +0000 (08:15 +0000)
committeraoliva <aoliva>
Sat, 29 Mar 2003 08:15:27 +0000 (08:15 +0000)
* configure: Rebuilt.
* sysdeps/mips/bits/endian.h: Make it bi-endian.
* sysdeps/mips/mipsel/bits/endian.h: Removed.
* sysdeps/mips/mips64/n32/el/bits/endian.h: Removed.
* sysdeps/mips/mips64/n64/el/bits/endian.h: Removed.
* sysdeps/mips/mips32/Makefile (CC): Add -mabi=32.
* sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32.
* sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64.
* sysdeps/mips/Implies: Moved wordsize-32 to...
* sysdeps/mips/mips32/Implies: New file.
* sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO,
ret_NOERRNO): New.
(ret, PSEUDO_END): Moved past END.
(PSEUDO): Moved to...
* sysdeps/unix/mips/mips32/sysdep.h: New file.
* sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO.
* sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise.
* sysdeps/unix/sysv/linux/mips/sysdep.h: Move to...
* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file.
* sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file.

19 files changed:
ChangeLog
configure
configure.in
sysdeps/mips/Implies
sysdeps/mips/bits/endian.h
sysdeps/mips/mips32/Implies [new file with mode: 0644]
sysdeps/mips/mips32/Makefile [new file with mode: 0644]
sysdeps/mips/mips64/n32/Makefile
sysdeps/mips/mips64/n32/el/bits/endian.h [deleted file]
sysdeps/mips/mips64/n64/Makefile
sysdeps/mips/mips64/n64/el/bits/endian.h [deleted file]
sysdeps/mips/mipsel/bits/endian.h [deleted file]
sysdeps/unix/mips/mips32/sysdep.h [new file with mode: 0644]
sysdeps/unix/mips/mips64/n32/sysdep.h
sysdeps/unix/mips/mips64/n64/sysdep.h
sysdeps/unix/mips/sysdep.h
sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/mips/mips32/sysdep.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/mips/sysdep.h [deleted file]

index 973ad45..756e2b1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,27 @@
 2003-03-29  Alexandre Oliva  <aoliva@redhat.com>
 
+       * configure.in: Add mips64* support.
+       * configure: Rebuilt.
+       * sysdeps/mips/bits/endian.h: Make it bi-endian.
+       * sysdeps/mips/mipsel/bits/endian.h: Removed.
+       * sysdeps/mips/mips64/n32/el/bits/endian.h: Removed.
+       * sysdeps/mips/mips64/n64/el/bits/endian.h: Removed.
+       * sysdeps/mips/mips32/Makefile (CC): Add -mabi=32.
+       * sysdeps/mips/mips64/n32/Makefile (CC): Add -mabi=n32.
+       * sysdeps/mips/mips64/n64/Makefile (CC): Add -mabi=64.
+       * sysdeps/mips/Implies: Moved wordsize-32 to...
+       * sysdeps/mips/mips32/Implies: New file.
+       * sysdeps/unix/mips/sysdep.h (PSEUDO_NOERRNO, PSEUDO_END_NOERRNO,
+       ret_NOERRNO): New.
+       (ret, PSEUDO_END): Moved past END.
+       (PSEUDO): Moved to...
+       * sysdeps/unix/mips/mips32/sysdep.h: New file.
+       * sysdeps/unix/mips/mips64/n32/sysdep.h: Removed #undef PSEUDO.
+       * sysdeps/unix/mips/mips64/n64/sysdep.h: Likewise.
+       * sysdeps/unix/sysv/linux/mips/sysdep.h: Move to...
+       * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: New file.
+       * sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h: New file.
+
        * sysdeps/unix/sysv/linux/mips/clone.S (__thread_start):
        Re-introduce ENTRY.
 
index 2105e6c..94a2342 100755 (executable)
--- a/configure
+++ b/configure
@@ -1833,8 +1833,33 @@ m680?0)          base_machine=m68k machine=m68k/$machine ;;
 m68k)          base_machine=m68k machine=m68k/m68020 ;;
 m88???)                base_machine=m88k machine=m88k/$machine ;;
 m88k)          base_machine=m88k machine=m88k/m88100 ;;
-mips64*)       base_machine=mips64 machine=mips/mips64/$machine ;;
-mips*)         base_machine=mips machine=mips/$machine ;;
+mips64*)       base_machine=mips64
+               case "$CC $CPPFLAGS $CFLAGS " in
+               *" -mabi=n32 "*) mips_cc_abi=n32 ;;
+               *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
+               *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
+               *) mips_cc_abi=default ;;
+               esac
+               case $config_os in
+               *abin32*) mips_config_abi=n32 ;;
+               *abi64*|*abin64*) mips_config_abi=64 ;;
+               *abi32*|*abio32*) mips_config_abi=32 ;;
+               *) mips_config_abi=$mips_cc_abi ;;
+               esac
+               case $mips_config_abi in
+               default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
+               n32) machine=mips/mips64/n32 ;;
+               64) machine=mips/mips64/n64 ;;
+               32) machine=mips/mips32/kern64 ;;
+               esac
+               machine=$machine/$config_machine
+               if test $mips_config_abi != $mips_cc_abi; then
+                 # This won't make it to config.make, but we want to
+                 # set this in case configure tests depend on it.
+                 CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
+               fi
+               ;;
+mips*)         base_machine=mips machine=mips/mips32/$machine ;;
 powerpc)       base_machine=powerpc machine=powerpc/powerpc32 ;;
 powerpc64)     base_machine=powerpc machine=powerpc/powerpc64 ;;
 s390)           base_machine=s390 machine=s390/s390-32 ;;
@@ -5170,7 +5195,7 @@ if test "${libc_cv_asm_underscores+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 5173 "configure"
+#line 5198 "configure"
 #include "confdefs.h"
 void underscore_test(void) {
 return; }
@@ -5496,7 +5521,7 @@ if test "${libc_cv_gcc_dwarf2_unwind_info+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat > conftest.c <<EOF
-#line 5499 "configure"
+#line 5524 "configure"
 static char *__EH_FRAME_BEGIN__;
 _start ()
 {
@@ -5596,7 +5621,7 @@ if test "${libc_cv_gcc_builtin_expect+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat > conftest.c <<EOF
-#line 5599 "configure"
+#line 5624 "configure"
 int foo (int a)
 {
   a = __builtin_expect (a, 10);
@@ -5664,7 +5689,7 @@ if test "${libc_cv_gcc_subtract_local_labels+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat > conftest.c <<EOF
-#line 5667 "configure"
+#line 5692 "configure"
 int foo (int a)
 {
   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
index 1795a6a..9a08b6c 100644 (file)
@@ -386,8 +386,33 @@ m680?0)            base_machine=m68k machine=m68k/$machine ;;
 m68k)          base_machine=m68k machine=m68k/m68020 ;;
 m88???)                base_machine=m88k machine=m88k/$machine ;;
 m88k)          base_machine=m88k machine=m88k/m88100 ;;
-mips64*)       base_machine=mips64 machine=mips/mips64/$machine ;;
-mips*)         base_machine=mips machine=mips/$machine ;;
+mips64*)       base_machine=mips64
+               case "$CC $CPPFLAGS $CFLAGS " in
+               *" -mabi=n32 "*) mips_cc_abi=n32 ;;
+               *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
+               *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
+               *) mips_cc_abi=default ;;
+               esac
+               case $config_os in
+               *abin32*) mips_config_abi=n32 ;;
+               *abi64*|*abin64*) mips_config_abi=64 ;;
+               *abi32*|*abio32*) mips_config_abi=32 ;;
+               *) mips_config_abi=$mips_cc_abi ;;
+               esac
+               case $mips_config_abi in
+               default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
+               n32) machine=mips/mips64/n32 ;;
+               64) machine=mips/mips64/n64 ;;
+               32) machine=mips/mips32/kern64 ;;
+               esac
+               machine=$machine/$config_machine
+               if test $mips_config_abi != $mips_cc_abi; then
+                 # This won't make it to config.make, but we want to
+                 # set this in case configure tests depend on it.
+                 CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
+               fi
+               ;;
+mips*)         base_machine=mips machine=mips/mips32/$machine ;;
 powerpc)       base_machine=powerpc machine=powerpc/powerpc32 ;;
 powerpc64)     base_machine=powerpc machine=powerpc/powerpc64 ;;
 s390)           base_machine=s390 machine=s390/s390-32 ;;
index 9f60963..8c18cb3 100644 (file)
@@ -1,4 +1,3 @@
-wordsize-32
 # MIPS uses IEEE 754 floating point.
 ieee754/flt-32
 ieee754/dbl-64
index 40321a2..9586104 100644 (file)
@@ -5,4 +5,9 @@
 # error "Never use <bits/endian.h> directly; include <endian.h> instead."
 #endif
 
-#define __BYTE_ORDER __BIG_ENDIAN
+#if __MIPSEB
+# define __BYTE_ORDER __BIG_ENDIAN
+#endif
+#if __MIPSEL
+# define __BYTE_ORDER __LITTLE_ENDIAN
+#endif
diff --git a/sysdeps/mips/mips32/Implies b/sysdeps/mips/mips32/Implies
new file mode 100644 (file)
index 0000000..fab98d7
--- /dev/null
@@ -0,0 +1,2 @@
+mips
+wordsize-32
diff --git a/sysdeps/mips/mips32/Makefile b/sysdeps/mips/mips32/Makefile
new file mode 100644 (file)
index 0000000..dec0b02
--- /dev/null
@@ -0,0 +1,3 @@
+ifeq ($(filter -mabi=32,$(CC)),)
+CC += -mabi=32
+endif
index 26f3857..a84d2a5 100644 (file)
@@ -1,2 +1,6 @@
 # `long double' is a distinct type we support.
 long-double-fcts = yes
+
+ifeq ($(filter -mabi=n32,$(CC)),)
+CC += -mabi=n32
+endif
diff --git a/sysdeps/mips/mips64/n32/el/bits/endian.h b/sysdeps/mips/mips64/n32/el/bits/endian.h
deleted file mode 100644 (file)
index 2241190..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/* The MIPS architecture has selectable endianness.
-   This file is for a machine using little-endian mode.  */
-
-#ifndef _ENDIAN_H
-# error "Never use <bits/endian.h> directly; include <endian.h> instead."
-#endif
-
-#define __BYTE_ORDER __LITTLE_ENDIAN
index 26f3857..a823f32 100644 (file)
@@ -1,2 +1,6 @@
 # `long double' is a distinct type we support.
 long-double-fcts = yes
+
+ifeq ($(filter -mabi=64,$(CC)),)
+CC += -mabi=64
+endif
diff --git a/sysdeps/mips/mips64/n64/el/bits/endian.h b/sysdeps/mips/mips64/n64/el/bits/endian.h
deleted file mode 100644 (file)
index 2241190..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/* The MIPS architecture has selectable endianness.
-   This file is for a machine using little-endian mode.  */
-
-#ifndef _ENDIAN_H
-# error "Never use <bits/endian.h> directly; include <endian.h> instead."
-#endif
-
-#define __BYTE_ORDER __LITTLE_ENDIAN
diff --git a/sysdeps/mips/mipsel/bits/endian.h b/sysdeps/mips/mipsel/bits/endian.h
deleted file mode 100644 (file)
index 2241190..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/* The MIPS architecture has selectable endianness.
-   This file is for a machine using little-endian mode.  */
-
-#ifndef _ENDIAN_H
-# error "Never use <bits/endian.h> directly; include <endian.h> instead."
-#endif
-
-#define __BYTE_ORDER __LITTLE_ENDIAN
diff --git a/sysdeps/unix/mips/mips32/sysdep.h b/sysdeps/unix/mips/mips32/sysdep.h
new file mode 100644 (file)
index 0000000..0b5d118
--- /dev/null
@@ -0,0 +1,52 @@
+/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Brendan Kehoe (brendan@zen.org).
+
+   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 <sysdeps/unix/mips/sysdep.h>
+
+/* Note that while it's better structurally, going back to call __syscall_error
+   can make things confusing if you're debugging---it looks like it's jumping
+   backwards into the previous fn.  */
+#ifdef __PIC__
+#define PSEUDO(name, syscall_name, args) \
+  .align 2;                                                                  \
+  99: la t9,__syscall_error;                                                 \
+  jr t9;                                                                     \
+  ENTRY(name)                                                                \
+  .set noreorder;                                                            \
+  .cpload t9;                                                                \
+  li v0, SYS_ify(syscall_name);                                                      \
+  syscall;                                                                   \
+  .set reorder;                                                                      \
+  bne a3, zero, 99b;                                                         \
+L(syse1):
+#else
+#define PSEUDO(name, syscall_name, args) \
+  .set noreorder;                                                            \
+  .align 2;                                                                  \
+  99: j __syscall_error;                                                     \
+  nop;                                                                       \
+  ENTRY(name)                                                                \
+  .set noreorder;                                                            \
+  li v0, SYS_ify(syscall_name);                                                      \
+  syscall;                                                                   \
+  .set reorder;                                                                      \
+  bne a3, zero, 99b;                                                         \
+L(syse1):
+#endif
index 3564c6b..ec93fad 100644 (file)
@@ -22,7 +22,6 @@
 
 #ifdef __ASSEMBLER__
 
-# undef PSEUDO
 /* Note that while it's better structurally, going back to call __syscall_error
    can make things confusing if you're debugging---it looks like it's jumping
    backwards into the previous fn.  */
index 982d905..502b667 100644 (file)
@@ -22,7 +22,6 @@
 
 #ifdef __ASSEMBLER__
 
-# undef PSEUDO
 /* Note that while it's better structurally, going back to call __syscall_error
    can make things confusing if you're debugging---it looks like it's jumping
    backwards into the previous fn.  */
index 8ba84e2..13a3752 100644 (file)
   .ent name,0;                                                               \
   name##:
 
-/* Note that while it's better structurally, going back to call __syscall_error
-   can make things confusing if you're debugging---it looks like it's jumping
-   backwards into the previous fn.  */
-#ifdef __PIC__
-#define PSEUDO(name, syscall_name, args) \
-  .align 2;                                                                  \
-  99: la t9,__syscall_error;                                                 \
-  jr t9;                                                                     \
-  ENTRY(name)                                                                \
-  .set noreorder;                                                            \
-  .cpload t9;                                                                \
-  li v0, SYS_ify(syscall_name);                                                      \
-  syscall;                                                                   \
-  .set reorder;                                                                      \
-  bne a3, zero, 99b;                                                         \
-L(syse1):
-#else
-#define PSEUDO(name, syscall_name, args) \
-  .set noreorder;                                                            \
-  .align 2;                                                                  \
-  99: j __syscall_error;                                                     \
-  nop;                                                                       \
-  ENTRY(name)                                                                \
-  .set noreorder;                                                            \
-  li v0, SYS_ify(syscall_name);                                                      \
-  syscall;                                                                   \
-  .set reorder;                                                                      \
-  bne a3, zero, 99b;                                                         \
-L(syse1):
-#endif
-
-#undef PSEUDO_END
-#define PSEUDO_END(sym) .end sym
-
-#define ret    j ra ; nop
-
 #undef END
 #define        END(function)                                   \
                .end    function;                       \
                .size   function,.-function
 
+#define ret    j ra ; nop
+
+#define PSEUDO_END(sym) .end sym; .size sym,.-sym
+
+#define PSEUDO_NOERRNO(name, syscall_name, args)       \
+  .align 2;                                            \
+  ENTRY(name)                                          \
+  .set noreorder;                                      \
+  li v0, SYS_ify(syscall_name);                                \
+  syscall
+
+#undef PSEUDO_END_NOERRNO
+#define PSEUDO_END_NOERRNO(sym) .end sym; .size sym,.-sym
+
+#define ret_NOERRNO ret
+
 #define r0     v0
 #define r1     v1
 /* The mips move insn is d,s.  */
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h
new file mode 100644 (file)
index 0000000..b0316b6
--- /dev/null
@@ -0,0 +1,36 @@
+/* Copyright (C) 2000, 2002, 2003 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 _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H
+#define _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H 1
+
+/* There is some commonality.  */
+#include <sysdeps/unix/sysv/linux/mips/mips32/sysdep.h>
+
+/* For Linux we can use the system call table in the header file
+       /usr/include/asm/unistd.h
+   of the kernel.  But these symbols do not follow the SYS_* syntax
+   so we have to redefine the `SYS_ify' macro here.  */
+#undef SYS_ify
+#ifdef __STDC__
+# define SYS_ify(syscall_name) __NR_O32_##syscall_name
+#else
+# define SYS_ify(syscall_name) __NR_O32_/**/syscall_name
+#endif
+
+#endif /* linux/mips/mips32/kern64/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h
new file mode 100644 (file)
index 0000000..1f56671
--- /dev/null
@@ -0,0 +1,282 @@
+/* Copyright (C) 2000, 2002, 2003 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 _LINUX_MIPS_MIPS32_SYSDEP_H
+#define _LINUX_MIPS_MIPS32_SYSDEP_H 1
+
+/* There is some commonality.  */
+#include <sysdeps/unix/mips/mips32/sysdep.h>
+
+/* For Linux we can use the system call table in the header file
+       /usr/include/asm/unistd.h
+   of the kernel.  But these symbols do not follow the SYS_* syntax
+   so we have to redefine the `SYS_ify' macro here.  */
+#undef SYS_ify
+#ifdef __STDC__
+# define SYS_ify(syscall_name) __NR_##syscall_name
+#else
+# define SYS_ify(syscall_name) __NR_/**/syscall_name
+#endif
+
+#ifdef __ASSEMBLER__
+
+/* We don't want the label for the error handler to be visible in the symbol
+   table when we define it here.  */
+#ifdef __PIC__
+# define SYSCALL_ERROR_LABEL 99b
+#endif
+
+#else   /* ! __ASSEMBLER__ */
+
+/* Define a macro which expands into the inline wrapper code for a system
+   call.  */
+#undef INLINE_SYSCALL
+#define INLINE_SYSCALL(name, nr, args...)                               \
+  ({ INTERNAL_SYSCALL_DECL(err);                                       \
+     long result_var = INTERNAL_SYSCALL (name, err, nr, args);         \
+     if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) )                 \
+       {                                                                \
+         __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err));       \
+         result_var = -1L;                                             \
+       }                                                                \
+     result_var; })
+
+#undef INTERNAL_SYSCALL_DECL
+#define INTERNAL_SYSCALL_DECL(err) long err
+
+#undef INTERNAL_SYSCALL_ERROR_P
+#define INTERNAL_SYSCALL_ERROR_P(val, err)   ((long) (err))
+
+#undef INTERNAL_SYSCALL_ERRNO
+#define INTERNAL_SYSCALL_ERRNO(val, err)     (val)
+
+#undef INTERNAL_SYSCALL
+#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
+
+#define internal_syscall0(name, err, dummy...)                                 \
+({                                                                     \
+       long _sys_result;                                               \
+                                                                       \
+       {                                                               \
+       register long __v0 asm("$2");                                   \
+       register long __a3 asm("$7");                                   \
+       __asm__ volatile (                                              \
+       ".set\tnoreorder\n\t"                                           \
+       "li\t$2, %2\t\t\t# " #name "\n\t"                               \
+       "syscall\n\t"                                                   \
+       ".set reorder"                                                  \
+       : "=r" (__v0), "=r" (__a3)                                      \
+       : "i" (SYS_ify(name))                                           \
+       : __SYSCALL_CLOBBERS);                                          \
+       err = __a3;                                                     \
+       _sys_result = __v0;                                             \
+       }                                                               \
+       _sys_result;                                                    \
+})
+
+#define internal_syscall1(name, err, arg1)                             \
+({                                                                     \
+       long _sys_result;                                               \
+                                                                       \
+       {                                                               \
+       register long __v0 asm("$2");                                   \
+       register long __a0 asm("$4") = (long) arg1;                     \
+       register long __a3 asm("$7");                                   \
+       __asm__ volatile (                                              \
+       ".set\tnoreorder\n\t"                                           \
+       "li\t$2, %3\t\t\t# " #name "\n\t"                               \
+       "syscall\n\t"                                                   \
+       ".set reorder"                                                  \
+       : "=r" (__v0), "=r" (__a3)                                      \
+       : "r" (__a0), "i" (SYS_ify(name))                               \
+       : __SYSCALL_CLOBBERS);                                          \
+       err = __a3;                                                     \
+       _sys_result = __v0;                                             \
+       }                                                               \
+       _sys_result;                                                    \
+})
+
+#define internal_syscall2(name, err, arg1, arg2)                       \
+({                                                                     \
+       long _sys_result;                                               \
+                                                                       \
+       {                                                               \
+       register long __v0 asm("$2");                                   \
+       register long __a0 asm("$4") = (long) arg1;                     \
+       register long __a1 asm("$5") = (long) arg2;                     \
+       register long __a3 asm("$7");                                   \
+       __asm__ volatile (                                              \
+       ".set\tnoreorder\n\t"                                           \
+       "li\t$2, %4\t\t\t# " #name "\n\t"                               \
+       "syscall\n\t"                                                   \
+       ".set\treorder"                                                 \
+       : "=r" (__v0), "=r" (__a3)                                      \
+       : "r" (__a0), "r" (__a1), "i" (SYS_ify(name))                   \
+       : __SYSCALL_CLOBBERS);                                          \
+       err = __a3;                                                     \
+       _sys_result = __v0;                                             \
+       }                                                               \
+       _sys_result;                                                    \
+})
+
+#define internal_syscall3(name, err, arg1, arg2, arg3)                         \
+({                                                                     \
+       long _sys_result;                                               \
+                                                                       \
+       {                                                               \
+       register long __v0 asm("$2");                                   \
+       register long __a0 asm("$4") = (long) arg1;                     \
+       register long __a1 asm("$5") = (long) arg2;                     \
+       register long __a2 asm("$6") = (long) arg3;                     \
+       register long __a3 asm("$7");                                   \
+       __asm__ volatile (                                              \
+       ".set\tnoreorder\n\t"                                           \
+       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
+       "syscall\n\t"                                                   \
+       ".set\treorder"                                                 \
+       : "=r" (__v0), "=r" (__a3)                                      \
+       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name))       \
+       : __SYSCALL_CLOBBERS);                                          \
+       err = __a3;                                                     \
+       _sys_result = __v0;                                             \
+       }                                                               \
+       _sys_result;                                                    \
+})
+
+#define internal_syscall4(name, err, arg1, arg2, arg3, arg4)           \
+({                                                                     \
+       long _sys_result;                                               \
+                                                                       \
+       {                                                               \
+       register long __v0 asm("$2");                                   \
+       register long __a0 asm("$4") = (long) arg1;                     \
+       register long __a1 asm("$5") = (long) arg2;                     \
+       register long __a2 asm("$6") = (long) arg3;                     \
+       register long __a3 asm("$7") = (long) arg4;                     \
+       __asm__ volatile (                                              \
+       ".set\tnoreorder\n\t"                                           \
+       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
+       "syscall\n\t"                                                   \
+       ".set\treorder"                                                 \
+       : "=r" (__v0), "+r" (__a3)                                      \
+       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name))       \
+       : __SYSCALL_CLOBBERS);                                          \
+       err = __a3;                                                     \
+       _sys_result = __v0;                                             \
+       }                                                               \
+       _sys_result;                                                    \
+})
+
+#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5)     \
+({                                                                     \
+       long _sys_result;                                               \
+                                                                       \
+       {                                                               \
+       register long __v0 asm("$2");                                   \
+       register long __a0 asm("$4") = (long) arg1;                     \
+       register long __a1 asm("$5") = (long) arg2;                     \
+       register long __a2 asm("$6") = (long) arg3;                     \
+       register long __a3 asm("$7") = (long) arg4;                     \
+       __asm__ volatile (                                              \
+       ".set\tnoreorder\n\t"                                           \
+       "lw\t$2, %6\n\t"                                                \
+       "subu\t$29, 32\n\t"                                             \
+       "sw\t$2, 16($29)\n\t"                                           \
+       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
+       "syscall\n\t"                                                   \
+       "addiu\t$29, 32\n\t"                                            \
+       ".set\treorder"                                                 \
+       : "=r" (__v0), "+r" (__a3)                                      \
+       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)),      \
+         "m" ((long)arg5)                                              \
+       : __SYSCALL_CLOBBERS);                                          \
+       err = __a3;                                                     \
+       _sys_result = __v0;                                             \
+       }                                                               \
+       _sys_result;                                                    \
+})
+
+#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
+({                                                                     \
+       long _sys_result;                                               \
+                                                                       \
+       {                                                               \
+       register long __v0 asm("$2");                                   \
+       register long __a0 asm("$4") = (long) arg1;                     \
+       register long __a1 asm("$5") = (long) arg2;                     \
+       register long __a2 asm("$6") = (long) arg3;                     \
+       register long __a3 asm("$7") = (long) arg4;                     \
+       __asm__ volatile (                                              \
+       ".set\tnoreorder\n\t"                                           \
+       "lw\t$2, %6\n\t"                                                \
+       "lw\t$8, %7\n\t"                                                \
+       "subu\t$29, 32\n\t"                                             \
+       "sw\t$2, 16($29)\n\t"                                           \
+       "sw\t$8, 20($29)\n\t"                                           \
+       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
+       "syscall\n\t"                                                   \
+       "addiu\t$29, 32\n\t"                                            \
+       ".set\treorder"                                                 \
+       : "=r" (__v0), "+r" (__a3)                                      \
+       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)),      \
+         "m" ((long)arg5), "m" ((long)arg6)                            \
+       : __SYSCALL_CLOBBERS);                                          \
+       err = __a3;                                                     \
+       _sys_result = __v0;                                             \
+       }                                                               \
+       _sys_result;                                                    \
+})
+
+#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
+({                                                                     \
+       long _sys_result;                                               \
+                                                                       \
+       {                                                               \
+       register long __v0 asm("$2");                                   \
+       register long __a0 asm("$4") = (long) arg1;                     \
+       register long __a1 asm("$5") = (long) arg2;                     \
+       register long __a2 asm("$6") = (long) arg3;                     \
+       register long __a3 asm("$7") = (long) arg4;                     \
+       __asm__ volatile (                                              \
+       ".set\tnoreorder\n\t"                                           \
+       "lw\t$2, %6\n\t"                                                \
+       "lw\t$8, %7\n\t"                                                \
+       "lw\t$9, %8\n\t"                                                \
+       "subu\t$29, 32\n\t"                                             \
+       "sw\t$2, 16($29)\n\t"                                           \
+       "sw\t$8, 20($29)\n\t"                                           \
+       "sw\t$9, 24($29)\n\t"                                           \
+       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
+       "syscall\n\t"                                                   \
+       "addiu\t$29, 32\n\t"                                            \
+       ".set\treorder"                                                 \
+       : "=r" (__v0), "+r" (__a3)                                      \
+       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)),      \
+         "m" ((long)arg5), "m" ((long)arg6), "m" ((long)arg7)          \
+       : __SYSCALL_CLOBBERS);                                          \
+       err = __a3;                                                     \
+       _sys_result = __v0;                                             \
+       }                                                               \
+       _sys_result;                                                    \
+})
+
+#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
+
+#endif /* __ASSEMBLER__ */
+
+#endif /* linux/mips/mips32/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sysdep.h b/sysdeps/unix/sysv/linux/mips/sysdep.h
deleted file mode 100644 (file)
index 710479a..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-/* Copyright (C) 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 _LINUX_MIPS_SYSDEP_H
-#define _LINUX_MIPS_SYSDEP_H 1
-
-/* There is some commonality.  */
-#include <sysdeps/unix/mips/sysdep.h>
-
-/* For Linux we can use the system call table in the header file
-       /usr/include/asm/unistd.h
-   of the kernel.  But these symbols do not follow the SYS_* syntax
-   so we have to redefine the `SYS_ify' macro here.  */
-#undef SYS_ify
-#ifdef __STDC__
-# define SYS_ify(syscall_name) __NR_##syscall_name
-#else
-# define SYS_ify(syscall_name) __NR_/**/syscall_name
-#endif
-
-#ifdef __ASSEMBLER__
-
-/* We don't want the label for the error handler to be visible in the symbol
-   table when we define it here.  */
-#ifdef __PIC__
-# define SYSCALL_ERROR_LABEL 99b
-#endif
-
-#else   /* ! __ASSEMBLER__ */
-
-/* Define a macro which expands into the inline wrapper code for a system
-   call.  */
-#undef INLINE_SYSCALL
-#define INLINE_SYSCALL(name, nr, args...)                               \
-  ({ INTERNAL_SYSCALL_DECL(err);                                       \
-     long result_var = INTERNAL_SYSCALL (name, err, nr, args);         \
-     if ( INTERNAL_SYSCALL_ERROR_P (result_var, err) )                 \
-       {                                                                \
-         __set_errno (INTERNAL_SYSCALL_ERRNO (result_var, err));       \
-         result_var = -1L;                                             \
-       }                                                                \
-     result_var; })
-
-#undef INTERNAL_SYSCALL_DECL
-#define INTERNAL_SYSCALL_DECL(err) long err
-
-#undef INTERNAL_SYSCALL_ERROR_P
-#define INTERNAL_SYSCALL_ERROR_P(val, err)   ((long) (err))
-
-#undef INTERNAL_SYSCALL_ERRNO
-#define INTERNAL_SYSCALL_ERRNO(val, err)     (val)
-
-#undef INTERNAL_SYSCALL
-#define INTERNAL_SYSCALL(name, err, nr, args...) internal_syscall##nr(name, err, args)
-
-#define internal_syscall0(name, err, dummy...)                                 \
-({                                                                     \
-       long _sys_result;                                               \
-                                                                       \
-       {                                                               \
-       register long __v0 asm("$2");                                   \
-       register long __a3 asm("$7");                                   \
-       __asm__ volatile (                                              \
-       ".set\tnoreorder\n\t"                                           \
-       "li\t$2, %2\t\t\t# " #name "\n\t"                               \
-       "syscall\n\t"                                                   \
-       ".set reorder"                                                  \
-       : "=r" (__v0), "=r" (__a3)                                      \
-       : "i" (SYS_ify(name))                                           \
-       : __SYSCALL_CLOBBERS);                                          \
-       err = __a3;                                                     \
-       _sys_result = __v0;                                             \
-       }                                                               \
-       _sys_result;                                                    \
-})
-
-#define internal_syscall1(name, err, arg1)                             \
-({                                                                     \
-       long _sys_result;                                               \
-                                                                       \
-       {                                                               \
-       register long __v0 asm("$2");                                   \
-       register long __a0 asm("$4") = (long) arg1;                     \
-       register long __a3 asm("$7");                                   \
-       __asm__ volatile (                                              \
-       ".set\tnoreorder\n\t"                                           \
-       "li\t$2, %3\t\t\t# " #name "\n\t"                               \
-       "syscall\n\t"                                                   \
-       ".set reorder"                                                  \
-       : "=r" (__v0), "=r" (__a3)                                      \
-       : "r" (__a0), "i" (SYS_ify(name))                               \
-       : __SYSCALL_CLOBBERS);                                          \
-       err = __a3;                                                     \
-       _sys_result = __v0;                                             \
-       }                                                               \
-       _sys_result;                                                    \
-})
-
-#define internal_syscall2(name, err, arg1, arg2)                       \
-({                                                                     \
-       long _sys_result;                                               \
-                                                                       \
-       {                                                               \
-       register long __v0 asm("$2");                                   \
-       register long __a0 asm("$4") = (long) arg1;                     \
-       register long __a1 asm("$5") = (long) arg2;                     \
-       register long __a3 asm("$7");                                   \
-       __asm__ volatile (                                              \
-       ".set\tnoreorder\n\t"                                           \
-       "li\t$2, %4\t\t\t# " #name "\n\t"                               \
-       "syscall\n\t"                                                   \
-       ".set\treorder"                                                 \
-       : "=r" (__v0), "=r" (__a3)                                      \
-       : "r" (__a0), "r" (__a1), "i" (SYS_ify(name))                   \
-       : __SYSCALL_CLOBBERS);                                          \
-       err = __a3;                                                     \
-       _sys_result = __v0;                                             \
-       }                                                               \
-       _sys_result;                                                    \
-})
-
-#define internal_syscall3(name, err, arg1, arg2, arg3)                         \
-({                                                                     \
-       long _sys_result;                                               \
-                                                                       \
-       {                                                               \
-       register long __v0 asm("$2");                                   \
-       register long __a0 asm("$4") = (long) arg1;                     \
-       register long __a1 asm("$5") = (long) arg2;                     \
-       register long __a2 asm("$6") = (long) arg3;                     \
-       register long __a3 asm("$7");                                   \
-       __asm__ volatile (                                              \
-       ".set\tnoreorder\n\t"                                           \
-       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
-       "syscall\n\t"                                                   \
-       ".set\treorder"                                                 \
-       : "=r" (__v0), "=r" (__a3)                                      \
-       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name))       \
-       : __SYSCALL_CLOBBERS);                                          \
-       err = __a3;                                                     \
-       _sys_result = __v0;                                             \
-       }                                                               \
-       _sys_result;                                                    \
-})
-
-#define internal_syscall4(name, err, arg1, arg2, arg3, arg4)           \
-({                                                                     \
-       long _sys_result;                                               \
-                                                                       \
-       {                                                               \
-       register long __v0 asm("$2");                                   \
-       register long __a0 asm("$4") = (long) arg1;                     \
-       register long __a1 asm("$5") = (long) arg2;                     \
-       register long __a2 asm("$6") = (long) arg3;                     \
-       register long __a3 asm("$7") = (long) arg4;                     \
-       __asm__ volatile (                                              \
-       ".set\tnoreorder\n\t"                                           \
-       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
-       "syscall\n\t"                                                   \
-       ".set\treorder"                                                 \
-       : "=r" (__v0), "+r" (__a3)                                      \
-       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name))       \
-       : __SYSCALL_CLOBBERS);                                          \
-       err = __a3;                                                     \
-       _sys_result = __v0;                                             \
-       }                                                               \
-       _sys_result;                                                    \
-})
-
-#define internal_syscall5(name, err, arg1, arg2, arg3, arg4, arg5)     \
-({                                                                     \
-       long _sys_result;                                               \
-                                                                       \
-       {                                                               \
-       register long __v0 asm("$2");                                   \
-       register long __a0 asm("$4") = (long) arg1;                     \
-       register long __a1 asm("$5") = (long) arg2;                     \
-       register long __a2 asm("$6") = (long) arg3;                     \
-       register long __a3 asm("$7") = (long) arg4;                     \
-       __asm__ volatile (                                              \
-       ".set\tnoreorder\n\t"                                           \
-       "lw\t$2, %6\n\t"                                                \
-       "subu\t$29, 32\n\t"                                             \
-       "sw\t$2, 16($29)\n\t"                                           \
-       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
-       "syscall\n\t"                                                   \
-       "addiu\t$29, 32\n\t"                                            \
-       ".set\treorder"                                                 \
-       : "=r" (__v0), "+r" (__a3)                                      \
-       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)),      \
-         "m" ((long)arg5)                                              \
-       : __SYSCALL_CLOBBERS);                                          \
-       err = __a3;                                                     \
-       _sys_result = __v0;                                             \
-       }                                                               \
-       _sys_result;                                                    \
-})
-
-#define internal_syscall6(name, err, arg1, arg2, arg3, arg4, arg5, arg6)\
-({                                                                     \
-       long _sys_result;                                               \
-                                                                       \
-       {                                                               \
-       register long __v0 asm("$2");                                   \
-       register long __a0 asm("$4") = (long) arg1;                     \
-       register long __a1 asm("$5") = (long) arg2;                     \
-       register long __a2 asm("$6") = (long) arg3;                     \
-       register long __a3 asm("$7") = (long) arg4;                     \
-       __asm__ volatile (                                              \
-       ".set\tnoreorder\n\t"                                           \
-       "lw\t$2, %6\n\t"                                                \
-       "lw\t$8, %7\n\t"                                                \
-       "subu\t$29, 32\n\t"                                             \
-       "sw\t$2, 16($29)\n\t"                                           \
-       "sw\t$8, 20($29)\n\t"                                           \
-       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
-       "syscall\n\t"                                                   \
-       "addiu\t$29, 32\n\t"                                            \
-       ".set\treorder"                                                 \
-       : "=r" (__v0), "+r" (__a3)                                      \
-       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)),      \
-         "m" ((long)arg5), "m" ((long)arg6)                            \
-       : __SYSCALL_CLOBBERS);                                          \
-       err = __a3;                                                     \
-       _sys_result = __v0;                                             \
-       }                                                               \
-       _sys_result;                                                    \
-})
-
-#define internal_syscall7(name, err, arg1, arg2, arg3, arg4, arg5, arg6, arg7)\
-({                                                                     \
-       long _sys_result;                                               \
-                                                                       \
-       {                                                               \
-       register long __v0 asm("$2");                                   \
-       register long __a0 asm("$4") = (long) arg1;                     \
-       register long __a1 asm("$5") = (long) arg2;                     \
-       register long __a2 asm("$6") = (long) arg3;                     \
-       register long __a3 asm("$7") = (long) arg4;                     \
-       __asm__ volatile (                                              \
-       ".set\tnoreorder\n\t"                                           \
-       "lw\t$2, %6\n\t"                                                \
-       "lw\t$8, %7\n\t"                                                \
-       "lw\t$9, %8\n\t"                                                \
-       "subu\t$29, 32\n\t"                                             \
-       "sw\t$2, 16($29)\n\t"                                           \
-       "sw\t$8, 20($29)\n\t"                                           \
-       "sw\t$9, 24($29)\n\t"                                           \
-       "li\t$2, %5\t\t\t# " #name "\n\t"                               \
-       "syscall\n\t"                                                   \
-       "addiu\t$29, 32\n\t"                                            \
-       ".set\treorder"                                                 \
-       : "=r" (__v0), "+r" (__a3)                                      \
-       : "r" (__a0), "r" (__a1), "r" (__a2), "i" (SYS_ify(name)),      \
-         "m" ((long)arg5), "m" ((long)arg6), "m" ((long)arg7)          \
-       : __SYSCALL_CLOBBERS);                                          \
-       err = __a3;                                                     \
-       _sys_result = __v0;                                             \
-       }                                                               \
-       _sys_result;                                                    \
-})
-
-#define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
-
-#endif /* __ASSEMBLER__ */
-
-#endif /* linux/mips/sysdep.h */