* 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.
|
||||
ieee754/flt-32
|
||||
ieee754/dbl-64
|
||||
|
|
|
@ -5,4 +5,9 @@
|
|||
# error "Never use <bits/endian.h> directly; include <endian.h> instead."
|
||||
#endif
|
||||
|
||||
#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-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-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__
|
||||
|
||||
# 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. */
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -30,47 +30,27 @@
|
|||
.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. */
|
||||
|
|
|
@ -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.
|
||||
|
||||
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
|
||||
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
|
||||
|
@ -279,4 +279,4 @@
|
|||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
#endif /* linux/mips/sysdep.h */
|
||||
#endif /* linux/mips/mips32/sysdep.h */
|
Loading…
Reference in New Issue