* 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.
This commit is contained in:
parent
7f3bcde0d1
commit
ef055a744e
|
@ -1,4 +1,3 @@
|
||||||
wordsize-32
|
|
||||||
# MIPS uses IEEE 754 floating point.
|
# MIPS uses IEEE 754 floating point.
|
||||||
ieee754/flt-32
|
ieee754/flt-32
|
||||||
ieee754/dbl-64
|
ieee754/dbl-64
|
||||||
|
|
|
@ -5,4 +5,9 @@
|
||||||
# error "Never use <bits/endian.h> directly; include <endian.h> instead."
|
# error "Never use <bits/endian.h> directly; include <endian.h> instead."
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __BYTE_ORDER __BIG_ENDIAN
|
#if __MIPSEB
|
||||||
|
# define __BYTE_ORDER __BIG_ENDIAN
|
||||||
|
#endif
|
||||||
|
#if __MIPSEL
|
||||||
|
# define __BYTE_ORDER __LITTLE_ENDIAN
|
||||||
|
#endif
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
mips
|
||||||
|
wordsize-32
|
|
@ -0,0 +1,3 @@
|
||||||
|
ifeq ($(filter -mabi=32,$(CC)),)
|
||||||
|
CC += -mabi=32
|
||||||
|
endif
|
|
@ -1,2 +1,6 @@
|
||||||
# `long double' is a distinct type we support.
|
# `long double' is a distinct type we support.
|
||||||
long-double-fcts = yes
|
long-double-fcts = yes
|
||||||
|
|
||||||
|
ifeq ($(filter -mabi=n32,$(CC)),)
|
||||||
|
CC += -mabi=n32
|
||||||
|
endif
|
||||||
|
|
|
@ -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
|
|
|
@ -1,2 +1,6 @@
|
||||||
# `long double' is a distinct type we support.
|
# `long double' is a distinct type we support.
|
||||||
long-double-fcts = yes
|
long-double-fcts = yes
|
||||||
|
|
||||||
|
ifeq ($(filter -mabi=64,$(CC)),)
|
||||||
|
CC += -mabi=64
|
||||||
|
endif
|
||||||
|
|
|
@ -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
|
|
|
@ -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
|
|
|
@ -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
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
#ifdef __ASSEMBLER__
|
#ifdef __ASSEMBLER__
|
||||||
|
|
||||||
# undef PSEUDO
|
|
||||||
/* Note that while it's better structurally, going back to call __syscall_error
|
/* 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
|
can make things confusing if you're debugging---it looks like it's jumping
|
||||||
backwards into the previous fn. */
|
backwards into the previous fn. */
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
#ifdef __ASSEMBLER__
|
#ifdef __ASSEMBLER__
|
||||||
|
|
||||||
# undef PSEUDO
|
|
||||||
/* Note that while it's better structurally, going back to call __syscall_error
|
/* 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
|
can make things confusing if you're debugging---it looks like it's jumping
|
||||||
backwards into the previous fn. */
|
backwards into the previous fn. */
|
||||||
|
|
|
@ -30,47 +30,27 @@
|
||||||
.ent name,0; \
|
.ent name,0; \
|
||||||
name##:
|
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
|
#undef END
|
||||||
#define END(function) \
|
#define END(function) \
|
||||||
.end function; \
|
.end function; \
|
||||||
.size function,.-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 r0 v0
|
||||||
#define r1 v1
|
#define r1 v1
|
||||||
/* The mips move insn is d,s. */
|
/* The mips move insn is d,s. */
|
||||||
|
|
|
@ -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 */
|
|
@ -1,4 +1,4 @@
|
||||||
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
@ -16,11 +16,11 @@
|
||||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
02111-1307 USA. */
|
02111-1307 USA. */
|
||||||
|
|
||||||
#ifndef _LINUX_MIPS_SYSDEP_H
|
#ifndef _LINUX_MIPS_MIPS32_SYSDEP_H
|
||||||
#define _LINUX_MIPS_SYSDEP_H 1
|
#define _LINUX_MIPS_MIPS32_SYSDEP_H 1
|
||||||
|
|
||||||
/* There is some commonality. */
|
/* 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
|
/* For Linux we can use the system call table in the header file
|
||||||
/usr/include/asm/unistd.h
|
/usr/include/asm/unistd.h
|
||||||
|
@ -279,4 +279,4 @@
|
||||||
|
|
||||||
#endif /* __ASSEMBLER__ */
|
#endif /* __ASSEMBLER__ */
|
||||||
|
|
||||||
#endif /* linux/mips/sysdep.h */
|
#endif /* linux/mips/mips32/sysdep.h */
|
Loading…
Reference in New Issue