mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-31 15:01:09 +00:00
* sysdeps/mips/mips64/Implies: Move wordsize-64 to... * sysdeps/mips/mips64/n64/Implies: New file. * sysdeps/mips/mips64/n64/Makefile: New file. * sysdeps/mips/mips64/n64/el/bits/endian.h: New file. * sysdeps/mips/mips64/n32/Implies: New file. * sysdeps/mips/mips64/n32/Makefile: New file. * sysdeps/mips/mips64/n32/el/bits/endian.h: New file. * sysdeps/unix/mips/mips64/n32/sysdep.h: New file. * sysdeps/unix/mips/mips64/n64/sysdep.h: New file. * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: New file. * sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: New file. * sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h: New file. * sysdeps/unix/sysv/linux/mips/mips64/llseek.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/recv.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/send.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/syscall.S: New file. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: New file. * sysdeps/unix/sysv/linux/mips/mips64/umount.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: New file.
* sysdeps/mips/mips64/Implies: Move wordsize-64 to... * sysdeps/mips/mips64/n64/Implies: New file. * sysdeps/mips/mips64/n64/Makefile: New file. * sysdeps/mips/mips64/n64/el/bits/endian.h: New file. * sysdeps/mips/mips64/n32/Implies: New file. * sysdeps/mips/mips64/n32/Makefile: New file. * sysdeps/mips/mips64/n32/el/bits/endian.h: New file. * sysdeps/unix/mips/mips64/n32/sysdep.h: New file. * sysdeps/unix/mips/mips64/n64/sysdep.h: New file. * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: New file. * sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: New file. * sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h: New file. * sysdeps/unix/sysv/linux/mips/mips64/llseek.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/recv.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/send.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/syscall.S: New file. * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: New file. * sysdeps/unix/sysv/linux/mips/mips64/umount.c: New file. * sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: New file.
This commit is contained in:
parent
fc32835abb
commit
5a0e429dd8
21
ChangeLog
21
ChangeLog
@ -1,5 +1,26 @@
|
|||||||
2003-03-17 Alexandre Oliva <aoliva@redhat.com>
|
2003-03-17 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/mips/mips64/Implies: Move wordsize-64 to...
|
||||||
|
* sysdeps/mips/mips64/n64/Implies: New file.
|
||||||
|
* sysdeps/mips/mips64/n64/Makefile: New file.
|
||||||
|
* sysdeps/mips/mips64/n64/el/bits/endian.h: New file.
|
||||||
|
* sysdeps/mips/mips64/n32/Implies: New file.
|
||||||
|
* sysdeps/mips/mips64/n32/Makefile: New file.
|
||||||
|
* sysdeps/mips/mips64/n32/el/bits/endian.h: New file.
|
||||||
|
* sysdeps/unix/mips/mips64/n32/sysdep.h: New file.
|
||||||
|
* sysdeps/unix/mips/mips64/n64/sysdep.h: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/llseek.c: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/recv.c: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/send.c: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/syscall.S: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/syscalls.list: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/umount.c: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S: New file.
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/configure.in (libc_cv_slibdir): Use
|
* sysdeps/unix/sysv/linux/configure.in (libc_cv_slibdir): Use
|
||||||
lib64 for mips64/n64 and lib32 for mips64/n32.
|
lib64 for mips64/n64 and lib32 for mips64/n32.
|
||||||
(ldd_rewrite_script): Needed for all mips64 configurations.
|
(ldd_rewrite_script): Needed for all mips64 configurations.
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
wordsize-64
|
|
||||||
# MIPS uses IEEE 754 floating point.
|
# MIPS uses IEEE 754 floating point.
|
||||||
ieee754/flt-32
|
ieee754/flt-32
|
||||||
ieee754/dbl-64
|
ieee754/dbl-64
|
||||||
|
4
sysdeps/mips/mips64/n32/Implies
Normal file
4
sysdeps/mips/mips64/n32/Implies
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
mips/mips64
|
||||||
|
mips
|
||||||
|
wordsize-32
|
||||||
|
ieee754/ldbl-128
|
2
sysdeps/mips/mips64/n32/Makefile
Normal file
2
sysdeps/mips/mips64/n32/Makefile
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# `long double' is a distinct type we support.
|
||||||
|
long-double-fcts = yes
|
8
sysdeps/mips/mips64/n32/el/bits/endian.h
Normal file
8
sysdeps/mips/mips64/n32/el/bits/endian.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* 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
|
4
sysdeps/mips/mips64/n64/Implies
Normal file
4
sysdeps/mips/mips64/n64/Implies
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
mips/mips64
|
||||||
|
mips
|
||||||
|
wordsize-64
|
||||||
|
ieee754/ldbl-128
|
2
sysdeps/mips/mips64/n64/Makefile
Normal file
2
sysdeps/mips/mips64/n64/Makefile
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# `long double' is a distinct type we support.
|
||||||
|
long-double-fcts = yes
|
8
sysdeps/mips/mips64/n64/el/bits/endian.h
Normal file
8
sysdeps/mips/mips64/n64/el/bits/endian.h
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* 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
|
58
sysdeps/unix/mips/mips64/n32/sysdep.h
Normal file
58
sysdeps/unix/mips/mips64/n32/sysdep.h
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Alexandre Oliva <aoliva@redhat.com>.
|
||||||
|
|
||||||
|
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>
|
||||||
|
|
||||||
|
#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 __PIC__
|
||||||
|
#define PSEUDO(name, syscall_name, args) \
|
||||||
|
.align 2; \
|
||||||
|
99:; \
|
||||||
|
.set noat; \
|
||||||
|
.cpsetup t9, $1, name; \
|
||||||
|
.set at; \
|
||||||
|
la t9,__syscall_error; \
|
||||||
|
.cpreturn; \
|
||||||
|
jr t9; \
|
||||||
|
ENTRY(name) \
|
||||||
|
li v0, SYS_ify(syscall_name); \
|
||||||
|
syscall; \
|
||||||
|
bne a3, zero, 99b; \
|
||||||
|
L(syse1):
|
||||||
|
#else
|
||||||
|
#define PSEUDO(name, syscall_name, args) \
|
||||||
|
.set noreorder; \
|
||||||
|
.align 2; \
|
||||||
|
99: j __syscall_error; \
|
||||||
|
ENTRY(name) \
|
||||||
|
.set noreorder; \
|
||||||
|
li v0, SYS_ify(syscall_name); \
|
||||||
|
syscall; \
|
||||||
|
.set reorder; \
|
||||||
|
bne a3, zero, 99b; \
|
||||||
|
L(syse1):
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
58
sysdeps/unix/mips/mips64/n64/sysdep.h
Normal file
58
sysdeps/unix/mips/mips64/n64/sysdep.h
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
Contributed by Alexandre Oliva <aoliva@redhat.com>.
|
||||||
|
|
||||||
|
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>
|
||||||
|
|
||||||
|
#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 __PIC__
|
||||||
|
#define PSEUDO(name, syscall_name, args) \
|
||||||
|
.align 2; \
|
||||||
|
99:; \
|
||||||
|
.set noat; \
|
||||||
|
.cpsetup t9, $1, name; \
|
||||||
|
.set at; \
|
||||||
|
dla t9,__syscall_error; \
|
||||||
|
.cpreturn; \
|
||||||
|
jr t9; \
|
||||||
|
ENTRY(name) \
|
||||||
|
li v0, SYS_ify(syscall_name); \
|
||||||
|
syscall; \
|
||||||
|
bne a3, zero, 99b; \
|
||||||
|
L(syse1):
|
||||||
|
#else
|
||||||
|
#define PSEUDO(name, syscall_name, args) \
|
||||||
|
.set noreorder; \
|
||||||
|
.align 2; \
|
||||||
|
99: j __syscall_error; \
|
||||||
|
ENTRY(name) \
|
||||||
|
.set noreorder; \
|
||||||
|
li v0, SYS_ify(syscall_name); \
|
||||||
|
syscall; \
|
||||||
|
.set reorder; \
|
||||||
|
bne a3, zero, 99b; \
|
||||||
|
L(syse1):
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
26
sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h
Normal file
26
sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/* Copyright (C) 2001, 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. */
|
||||||
|
|
||||||
|
#include <sysdeps/generic/ldconfig.h>
|
||||||
|
|
||||||
|
#define SYSDEP_KNOWN_INTERPRETER_NAMES \
|
||||||
|
{ "/lib32/ld.so.1", FLAG_ELF_LIBC6 }, \
|
||||||
|
{ "/lib64/ld.so.1", FLAG_ELF_LIBC6 },
|
||||||
|
#define SYSDEP_KNOWN_LIBRARY_NAMES \
|
||||||
|
{ "libc.so.6", FLAG_ELF_LIBC6 }, \
|
||||||
|
{ "libm.so.6", FLAG_ELF_LIBC6 },
|
1
sysdeps/unix/sysv/linux/mips/mips64/llseek.c
Normal file
1
sysdeps/unix/sysv/linux/mips/mips64/llseek.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
/* lseek() is 64-bit capable already. */
|
263
sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
Normal file
263
sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
/* 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_SYSDEP_H
|
||||||
|
#define _LINUX_MIPS_SYSDEP_H 1
|
||||||
|
|
||||||
|
/* There is some commonality. */
|
||||||
|
#include <sysdeps/unix/mips/mips64/n32/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_N32_##syscall_name
|
||||||
|
#else
|
||||||
|
# define SYS_ify(syscall_name) __NR_N32_/**/syscall_name
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
#if 0 /* untested */
|
||||||
|
/* 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 long __v0 asm("$2"); \
|
||||||
|
register long long __a0 asm("$4") = (long long) arg1; \
|
||||||
|
register long 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 long __v0 asm("$2"); \
|
||||||
|
register long long __a0 asm("$4") = (long long) arg1; \
|
||||||
|
register long long __a1 asm("$5") = (long long) arg2; \
|
||||||
|
register long 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 long __v0 asm("$2"); \
|
||||||
|
register long long __a0 asm("$4") = (long long) arg1; \
|
||||||
|
register long long __a1 asm("$5") = (long long) arg2; \
|
||||||
|
register long long __a2 asm("$6") = (long long) arg3; \
|
||||||
|
register long 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 long __v0 asm("$2"); \
|
||||||
|
register long long __a0 asm("$4") = (long long) arg1; \
|
||||||
|
register long long __a1 asm("$5") = (long long) arg2; \
|
||||||
|
register long long __a2 asm("$6") = (long long) arg3; \
|
||||||
|
register long long __a3 asm("$7") = (long 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 long __v0 asm("$2"); \
|
||||||
|
register long long __a0 asm("$4") = (long long) arg1; \
|
||||||
|
register long long __a1 asm("$5") = (long long) arg2; \
|
||||||
|
register long long __a2 asm("$6") = (long long) arg3; \
|
||||||
|
register long long __a3 asm("$7") = (long long) arg4; \
|
||||||
|
register long long __a4 asm("$8") = (long long) arg5; \
|
||||||
|
__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)), \
|
||||||
|
"r" (__a4) \
|
||||||
|
: __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 long __v0 asm("$2"); \
|
||||||
|
register long long __a0 asm("$4") = (long long) arg1; \
|
||||||
|
register long long __a1 asm("$5") = (long long) arg2; \
|
||||||
|
register long long __a2 asm("$6") = (long long) arg3; \
|
||||||
|
register long long __a3 asm("$7") = (long long) arg4; \
|
||||||
|
register long long __a4 asm("$8") = (long long) arg5; \
|
||||||
|
register long long __a5 asm("$9") = (long long) arg6; \
|
||||||
|
__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)), \
|
||||||
|
"r" (__a5), "r" (__a6) \
|
||||||
|
: __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 long __v0 asm("$2"); \
|
||||||
|
register long long __a0 asm("$4") = (long long) arg1; \
|
||||||
|
register long long __a1 asm("$5") = (long long) arg2; \
|
||||||
|
register long long __a2 asm("$6") = (long long) arg3; \
|
||||||
|
register long long __a3 asm("$7") = (long long) arg4; \
|
||||||
|
register long long __a4 asm("$8") = (long long) arg5; \
|
||||||
|
register long long __a5 asm("$9") = (long long) arg6; \
|
||||||
|
register long long __a6 asm("$10") = (long long) arg7; \
|
||||||
|
__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)), \
|
||||||
|
"r" (__a5), "r" (__a6), "r" (__a7) \
|
||||||
|
: __SYSCALL_CLOBBERS); \
|
||||||
|
err = __a3; \
|
||||||
|
_sys_result = __v0; \
|
||||||
|
} \
|
||||||
|
_sys_result; \
|
||||||
|
})
|
||||||
|
|
||||||
|
#define __SYSCALL_CLOBBERS "$1", "$3", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
|
||||||
|
#endif /* untested */
|
||||||
|
#endif /* __ASSEMBLER__ */
|
||||||
|
|
||||||
|
#endif /* linux/mips/sysdep.h */
|
1
sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c
Normal file
1
sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
/* glob64 is in glob.c */
|
43
sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S
Normal file
43
sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/* Copyright 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. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
#include <sys/asm.h>
|
||||||
|
|
||||||
|
/* Sign-extend the ioctl number, since the kernel wants it as a
|
||||||
|
sign-extended 32-bit value, but our prototype is that of a long. */
|
||||||
|
|
||||||
|
.text
|
||||||
|
ENTRY (__ioctl)
|
||||||
|
li v0, __NR_ioctl
|
||||||
|
dsll a1,a1,32
|
||||||
|
dsra a1,a1,32
|
||||||
|
syscall /* Do the system call. */
|
||||||
|
bne a3, zero, L(error)
|
||||||
|
ret
|
||||||
|
|
||||||
|
L(error):
|
||||||
|
.cpsetup t9, a0, __ioctl
|
||||||
|
PTR_LA t9,__syscall_error
|
||||||
|
.cprestore
|
||||||
|
jr t9
|
||||||
|
|
||||||
|
PSEUDO_END (__ioctl)
|
||||||
|
|
||||||
|
weak_alias (__ioctl, ioctl)
|
263
sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
Normal file
263
sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
/* 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_SYSDEP_H
|
||||||
|
#define _LINUX_MIPS_SYSDEP_H 1
|
||||||
|
|
||||||
|
/* There is some commonality. */
|
||||||
|
#include <sysdeps/unix/mips/mips64/n64/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_N64_##syscall_name
|
||||||
|
#else
|
||||||
|
# define SYS_ify(syscall_name) __NR_N64_/**/syscall_name
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
#if 0 /* untested */
|
||||||
|
/* 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; \
|
||||||
|
register long __a4 asm("$8") = (long) arg5; \
|
||||||
|
__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)), \
|
||||||
|
"r" (__a4) \
|
||||||
|
: __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; \
|
||||||
|
register long __a4 asm("$8") = (long) arg5; \
|
||||||
|
register long __a5 asm("$9") = (long) arg6; \
|
||||||
|
__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)), \
|
||||||
|
"r" (__a5), "r" (__a6) \
|
||||||
|
: __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; \
|
||||||
|
register long __a4 asm("$8") = (long) arg5; \
|
||||||
|
register long __a5 asm("$9") = (long) arg6; \
|
||||||
|
register long __a6 asm("$10") = (long) arg7; \
|
||||||
|
__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)), \
|
||||||
|
"r" (__a5), "r" (__a6), "r" (__a7) \
|
||||||
|
: __SYSCALL_CLOBBERS); \
|
||||||
|
err = __a3; \
|
||||||
|
_sys_result = __v0; \
|
||||||
|
} \
|
||||||
|
_sys_result; \
|
||||||
|
})
|
||||||
|
|
||||||
|
#define __SYSCALL_CLOBBERS "$1", "$3", "$11", "$12", "$13", "$14", "$15", "$24", "$25"
|
||||||
|
#endif /* untested */
|
||||||
|
#endif /* __ASSEMBLER__ */
|
||||||
|
|
||||||
|
#endif /* linux/mips/sysdep.h */
|
1
sysdeps/unix/sysv/linux/mips/mips64/recv.c
Normal file
1
sysdeps/unix/sysv/linux/mips/mips64/recv.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/unix/sysv/linux/x86_64/recv.c>
|
1
sysdeps/unix/sysv/linux/mips/mips64/send.c
Normal file
1
sysdeps/unix/sysv/linux/mips/mips64/send.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/unix/sysv/linux/x86_64/send.c>
|
53
sysdeps/unix/sysv/linux/mips/mips64/syscall.S
Normal file
53
sysdeps/unix/sysv/linux/mips/mips64/syscall.S
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/* Copyright (C) 2001, 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. */
|
||||||
|
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
|
#include <sys/asm.h>
|
||||||
|
|
||||||
|
/* Please consult the file sysdeps/unix/sysv/linux/x86-64/sysdep.h for
|
||||||
|
more information about the value -4095 used below. */
|
||||||
|
|
||||||
|
/* Usage: long syscall (syscall_number, arg1, arg2, arg3, arg4, arg5)
|
||||||
|
We need to do some arg shifting, the syscall_number will be in
|
||||||
|
rax. */
|
||||||
|
|
||||||
|
|
||||||
|
.text
|
||||||
|
ENTRY (syscall)
|
||||||
|
move v0, a0 /* Syscall number -> v0 */
|
||||||
|
move a0, a1 /* shift arg1 - arg7. */
|
||||||
|
move a1, a2
|
||||||
|
move a2, a3
|
||||||
|
move a3, a4
|
||||||
|
move a4, a5
|
||||||
|
move a5, a6
|
||||||
|
move a6, a7
|
||||||
|
|
||||||
|
syscall /* Do the system call. */
|
||||||
|
bne a3, zero, L(error)
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
L(error):
|
||||||
|
.cpsetup t9, a0, syscall
|
||||||
|
PTR_LA t9,__syscall_error
|
||||||
|
.cprestore
|
||||||
|
jr t9
|
||||||
|
|
||||||
|
PSEUDO_END (syscall)
|
20
sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
Normal file
20
sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# File name Caller Syscall name Args Strong name Weak names
|
||||||
|
|
||||||
|
lseek - lseek i:iii __libc_lseek __lseek lseek __llseek llseek __libc_lseek64 __lseek64 lseek64
|
||||||
|
|
||||||
|
# proper socket implementations:
|
||||||
|
recvfrom - recvfrom i:ibniBN __libc_recvfrom __recvfrom recvfrom __syscall_recvfrom
|
||||||
|
sendto - sendto i:ibnibn __libc_sendto __sendto sendto __syscall_sendto
|
||||||
|
|
||||||
|
# semaphore and shm system calls
|
||||||
|
msgctl - msgctl i:iip __msgctl msgctl
|
||||||
|
msgget - msgget i:ii __msgget msgget
|
||||||
|
msgrcv - msgrcv i:ibnii __msgrcv msgrcv
|
||||||
|
msgsnd - msgsnd i:ibni __msgsnd msgsnd
|
||||||
|
shmat - shmat i:ipi __shmat shmat
|
||||||
|
shmctl - shmctl i:iip __shmctl shmctl
|
||||||
|
shmdt - shmdt i:s __shmdt shmdt
|
||||||
|
shmget - shmget i:iii __shmget shmget
|
||||||
|
semop - semop i:ipi __semop semop
|
||||||
|
semget - semget i:iii __semget semget
|
||||||
|
semctl - semctl i:iiii __semctl semctl
|
1
sysdeps/unix/sysv/linux/mips/mips64/umount.c
Normal file
1
sysdeps/unix/sysv/linux/mips/mips64/umount.c
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include <sysdeps/unix/sysv/linux/hppa/umount.c>
|
Loading…
Reference in New Issue
Block a user