* 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.
* 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
c7da3ff8c5
commit
e077d10d0d
22
ChangeLog
22
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.
|
||||
|
||||
|
37
configure
vendored
37
configure
vendored
@ -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 };
|
||||
|
29
configure.in
29
configure.in
@ -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 ;;
|
||||
|
@ -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
|
||||
|
||||
#define __BYTE_ORDER __BIG_ENDIAN
|
||||
#if __MIPSEB
|
||||
# define __BYTE_ORDER __BIG_ENDIAN
|
||||
#endif
|
||||
#if __MIPSEL
|
||||
# define __BYTE_ORDER __LITTLE_ENDIAN
|
||||
#endif
|
||||
|
2
sysdeps/mips/mips32/Implies
Normal file
2
sysdeps/mips/mips32/Implies
Normal file
@ -0,0 +1,2 @@
|
||||
mips
|
||||
wordsize-32
|
3
sysdeps/mips/mips32/Makefile
Normal file
3
sysdeps/mips/mips32/Makefile
Normal file
@ -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
|
52
sysdeps/unix/mips/mips32/sysdep.h
Normal file
52
sysdeps/unix/mips/mips32/sysdep.h
Normal file
@ -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. */
|
||||
|
36
sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h
Normal file
36
sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h
Normal file
@ -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
Block a user