* 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.
-wordsize-32
# MIPS uses IEEE 754 floating point.
ieee754/flt-32
ieee754/dbl-64
# 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
--- /dev/null
+mips
+wordsize-32
--- /dev/null
+ifeq ($(filter -mabi=32,$(CC)),)
+CC += -mabi=32
+endif
# `long double' is a distinct type we support.
long-double-fcts = yes
+
+ifeq ($(filter -mabi=n32,$(CC)),)
+CC += -mabi=n32
+endif
+++ /dev/null
-/* 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
# `long double' is a distinct type we support.
long-double-fcts = yes
+
+ifeq ($(filter -mabi=64,$(CC)),)
+CC += -mabi=64
+endif
+++ /dev/null
-/* 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
+++ /dev/null
-/* 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
--- /dev/null
+/* 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
#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. */
#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. */
.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. */
--- /dev/null
+/* 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 */
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* 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
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#ifndef _LINUX_MIPS_SYSDEP_H
-#define _LINUX_MIPS_SYSDEP_H 1
+#ifndef _LINUX_MIPS_MIPS32_SYSDEP_H
+#define _LINUX_MIPS_MIPS32_SYSDEP_H 1
/* There is some commonality. */
-#include <sysdeps/unix/mips/sysdep.h>
+#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
#endif /* __ASSEMBLER__ */
-#endif /* linux/mips/sysdep.h */
+#endif /* linux/mips/mips32/sysdep.h */