mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-04 19:00:09 +00:00
c1301d9a76
2000-01-23 Philip Blundell <philb@gnu.org> Add basic support for RPC over IPv6: * sunrpc/rpc/svc.h (struct SVCXPRT): Use `struct sockaddr_storage' for remote address. (svcudp6_create, svcudp6_bufcreate, svctcp6_create): New prototypes. * sunrpc/rpc/clnt.h (clnttcp6_create, clntudp6_create, clntudp6_bufcreate): New prototypes. * inet/netinet/in.h (bindresport6): Likewise. * sunrpc/Makefile (routines): Add svc_tcp6, svc_udp6, bindrsvprt6. * sunrpc/Versions: Add svcfd6_create, svctcp6_create, svcudp6_create, svcudp6_bufcreate, svcudp6_enablecache, bindresvport6 for GLIBC_2.2. * sunrpc/rpc_main.c: Support `tcp6' and `udp6' transport types. * sunrpc/rpc_svcout.c: Likewise. * sunrpc/svc_tcp.c (rendezvous_request): Use memcpy rather than simple assignment when copying addresses. * sunrpc/svc_udp.c (cache_get): Likewise. * sunrpc/svc_unix.c (rendezvous_request): Likewise. * sunrpc/bindrsvprt6.c, sunrpc/clnt_tcp6.c, sunrpc/clnt_udp6.c, sunrpc/svc_tcp6.c, sunrpc/svc_udp6.c: New files. 2000-01-05 Philip Blundell <philb@gnu.org> * sysdeps/unix/sysv/linux/arm/mmap64.S: Correct check for ENOSYS. 2000-01-23 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/i386/fxstat.c (__fxstat): Pass right parameter to fstat calls. 2000-01-18 Roland McGrath <roland@baalperazim.frob.com> * sysdeps/generic/bits/socket.h (__ss_aligntype, struct sockaddr_storage): Make these like Linux version, replacing old type name `__ss_align'. 2000-01-05 Roland McGrath <roland@baalperazim.frob.com> * sysdeps/generic/lseek64.c (__libc_lseek64): Renamed from __lseek64. (__lseek64, lseek64): Make these weak aliases for __libc_lseek64. * sysdeps/mach/hurd/lseek.c (__libc_lseek): Renamed from __lseek. (__lseek, lseek): Make these weak aliases for __libc_lseek. * sysdeps/mach/hurd/fcntl.c (__libc_fcntl): Renamed from __fcntl. (__fcntl, fcntl): Make these weak aliases for __libc_fcntl. * sysdeps/mach/hurd/open.c (__libc_open): Renamed from __open. (__open, open): Make these weak aliases for __libc_open. * sysdeps/generic/bits/socket.h (enum __socket_type): Remove trailing comma. (anonymous enum for MSG_*): Likewise. (anonymous enum for SO_*): Likewise. 2000-01-23 Ulrich Drepper <drepper@cygnus.com> * string/bits/string2.h: Fix typo (__GNU_SOURCE -> __USE_GNU) (PR libc/1553).
68 lines
2.0 KiB
ArmAsm
68 lines
2.0 KiB
ArmAsm
/* Copyright (C) 2000 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 Library General Public License as
|
|
published by the Free Software Foundation; either version 2 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
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA. */
|
|
|
|
#include <sysdep.h>
|
|
|
|
#define EINVAL 22
|
|
#define ENOSYS 38
|
|
|
|
/* The mmap2 system call takes six arguments, all in registers. */
|
|
.text
|
|
ENTRY (__mmap64)
|
|
#ifdef __NR_mmap2
|
|
stmfd sp!, {r4, r5, lr}
|
|
ldr r5, [sp, $16]
|
|
ldr r4, [sp, $12]
|
|
movs ip, r5, lsl $20 @ check that offset is page-aligned
|
|
bne .Linval
|
|
ldr ip, [sp, $20]
|
|
mov r5, r5, lsr $12
|
|
orr r5, r5, ip, lsl $20 @ compose page offset
|
|
movs ip, ip, lsr $12
|
|
bne .Linval @ check for overflow
|
|
mov ip, r0
|
|
swi SYS_ify (mmap2)
|
|
cmn r0, $4096
|
|
LOADREGS(ccfd, sp!, {r4, r5, pc})
|
|
cmn r0, $(ENOSYS - 1)
|
|
ldmnefd sp!, {r4, r5, lr}
|
|
bne PLTJMP(syscall_error)
|
|
/* The current kernel does not support mmap2. Fall back to plain
|
|
mmap if the offset is small enough. */
|
|
ldr r5, [sp, $20]
|
|
mov r0, ip @ first arg was clobbered
|
|
teq r5, $0
|
|
ldmeqfd sp!, {r4, r5, lr}
|
|
beq PLTJMP(__mmap)
|
|
.Linval:
|
|
mov r0, $-EINVAL
|
|
ldmfd sp!, {r4, r5, lr}
|
|
b PLTJMP(syscall_error)
|
|
#else
|
|
/* The kernel headers do not support mmap2. Fall back to plain
|
|
mmap if the offset is small enough. */
|
|
ldr ip, [sp, $8]
|
|
teq ip, $0
|
|
beq PLTJMP(__mmap)
|
|
mov r0, $-EINVAL
|
|
b PLTJMP(syscall_error)
|
|
#endif
|
|
PSEUDO_END (__mmap64)
|
|
|
|
weak_alias (__mmap64, mmap64)
|