mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Ancient files moved to ports repository
This commit is contained in:
@ -1,5 +0,0 @@
|
||||
clone.S
|
||||
setresuid.c
|
||||
setresgid.c
|
||||
setfsuid.c
|
||||
setfsgid.c
|
@ -1,106 +0,0 @@
|
||||
/* This file is needed by libio to define various configuration parameters.
|
||||
These are always the same in the GNU C library. */
|
||||
|
||||
/* We have to keep a separate copy for CRIS, because we don't use thunks,
|
||||
and libstdc++-v2 (which we currently use) cares. The C++ ABI is
|
||||
changed totally with GCC 3.0, where we should not need a separate file. */
|
||||
|
||||
#ifndef _G_config_h
|
||||
#define _G_config_h 1
|
||||
|
||||
/* Define types for libio in terms of the standard internal type names. */
|
||||
|
||||
#include <bits/types.h>
|
||||
#define __need_size_t
|
||||
#define __need_wchar_t
|
||||
#define __need_wint_t
|
||||
#define __need_NULL
|
||||
#include <stddef.h>
|
||||
#ifndef _WINT_T
|
||||
/* Integral type unchanged by default argument promotions that can
|
||||
hold any value corresponding to members of the extended character
|
||||
set, as well as at least one value that does not correspond to any
|
||||
member of the extended character set. */
|
||||
# define _WINT_T
|
||||
typedef unsigned int wint_t;
|
||||
#endif
|
||||
#define __need_mbstate_t
|
||||
#include <wchar.h>
|
||||
#define _G_size_t size_t
|
||||
typedef struct
|
||||
{
|
||||
__off_t __pos;
|
||||
__mbstate_t __state;
|
||||
} _G_fpos_t;
|
||||
typedef struct
|
||||
{
|
||||
__off64_t __pos;
|
||||
__mbstate_t __state;
|
||||
} _G_fpos64_t;
|
||||
#define _G_ssize_t __ssize_t
|
||||
#define _G_off_t __off_t
|
||||
#define _G_off64_t __off64_t
|
||||
#define _G_pid_t __pid_t
|
||||
#define _G_uid_t __uid_t
|
||||
#define _G_wchar_t wchar_t
|
||||
#define _G_wint_t wint_t
|
||||
#define _G_stat64 stat64
|
||||
#include <gconv.h>
|
||||
typedef union
|
||||
{
|
||||
struct __gconv_info __cd;
|
||||
struct
|
||||
{
|
||||
struct __gconv_info __cd;
|
||||
struct __gconv_step_data __data;
|
||||
} __combined;
|
||||
} _G_iconv_t;
|
||||
|
||||
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
|
||||
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
|
||||
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
|
||||
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
|
||||
|
||||
#define _G_HAVE_BOOL 1
|
||||
|
||||
|
||||
/* These library features are always available in the GNU C library. */
|
||||
#define _G_HAVE_ATEXIT 1
|
||||
#define _G_HAVE_SYS_CDEFS 1
|
||||
#define _G_HAVE_SYS_WAIT 1
|
||||
#define _G_NEED_STDARG_H 1
|
||||
#define _G_va_list __gnuc_va_list
|
||||
|
||||
#define _G_HAVE_PRINTF_FP 1
|
||||
#define _G_HAVE_MMAP 1
|
||||
#define _G_HAVE_LONG_DOUBLE_IO 1
|
||||
#define _G_HAVE_IO_FILE_OPEN 1
|
||||
#define _G_HAVE_IO_GETLINE_INFO 1
|
||||
|
||||
#define _G_IO_IO_FILE_VERSION 0x20001
|
||||
|
||||
#define _G_OPEN64 __open64
|
||||
#define _G_LSEEK64 __lseek64
|
||||
#define _G_MMAP64 __mmap64
|
||||
#define _G_FSTAT64(fd,buf) __fxstat64 (_STAT_VER, fd, buf)
|
||||
|
||||
/* This is defined by <bits/stat.h> if `st_blksize' exists. */
|
||||
#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE)
|
||||
|
||||
#define _G_BUFSIZ 8192
|
||||
|
||||
/* These are the vtbl details for ELF. */
|
||||
#define _G_NAMES_HAVE_UNDERSCORE 0
|
||||
#define _G_VTABLE_LABEL_HAS_LENGTH 1
|
||||
#undef _G_USING_THUNKS
|
||||
#define _G_VTABLE_LABEL_PREFIX "_vt."
|
||||
#define _G_VTABLE_LABEL_PREFIX_ID _vt.
|
||||
|
||||
|
||||
#if defined __cplusplus || defined __STDC__
|
||||
# define _G_ARGS(ARGLIST) ARGLIST
|
||||
#else
|
||||
# define _G_ARGS(ARGLIST) ()
|
||||
#endif
|
||||
|
||||
#endif /* _G_config.h */
|
@ -1,189 +0,0 @@
|
||||
/* O_*, F_*, FD_* bit values for Linux.
|
||||
Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2004
|
||||
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 _FCNTL_H
|
||||
# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
|
||||
#endif
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
|
||||
located on an ext2 file system */
|
||||
#define O_ACCMODE 0003
|
||||
#define O_RDONLY 00
|
||||
#define O_WRONLY 01
|
||||
#define O_RDWR 02
|
||||
#define O_CREAT 0100 /* not fcntl */
|
||||
#define O_EXCL 0200 /* not fcntl */
|
||||
#define O_NOCTTY 0400 /* not fcntl */
|
||||
#define O_TRUNC 01000 /* not fcntl */
|
||||
#define O_APPEND 02000
|
||||
#define O_NONBLOCK 04000
|
||||
#define O_NDELAY O_NONBLOCK
|
||||
#define O_SYNC 010000
|
||||
#define O_FSYNC O_SYNC
|
||||
#define O_ASYNC 020000
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define O_DIRECT 040000 /* Direct disk access. */
|
||||
# define O_DIRECTORY 0200000 /* Must be a directory. */
|
||||
# define O_NOFOLLOW 0400000 /* Do not follow links. */
|
||||
# define O_NOATIME 01000000 /* Do not set atime. */
|
||||
#endif
|
||||
|
||||
/* For now Linux has synchronisity options for data and read operations.
|
||||
We define the symbols here but let them do the same as O_SYNC since
|
||||
this is a superset. */
|
||||
#if defined __USE_POSIX199309 || defined __USE_UNIX98
|
||||
# define O_DSYNC O_SYNC /* Synchronize data. */
|
||||
# define O_RSYNC O_SYNC /* Synchronize read operations. */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
# define O_LARGEFILE 0100000
|
||||
#endif
|
||||
|
||||
/* Values for the second argument to `fcntl'. */
|
||||
#define F_DUPFD 0 /* Duplicate file descriptor. */
|
||||
#define F_GETFD 1 /* Get file descriptor flags. */
|
||||
#define F_SETFD 2 /* Set file descriptor flags. */
|
||||
#define F_GETFL 3 /* Get file status flags. */
|
||||
#define F_SETFL 4 /* Set file status flags. */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
# define F_GETLK 5 /* Get record locking info. */
|
||||
# define F_SETLK 6 /* Set record locking info (non-blocking). */
|
||||
# define F_SETLKW 7 /* Set record locking info (blocking). */
|
||||
#else
|
||||
# define F_GETLK F_GETLK64 /* Get record locking info. */
|
||||
# define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/
|
||||
# define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */
|
||||
#endif
|
||||
#define F_GETLK64 12 /* Get record locking info. */
|
||||
#define F_SETLK64 13 /* Set record locking info (non-blocking). */
|
||||
#define F_SETLKW64 14 /* Set record locking info (blocking). */
|
||||
|
||||
#if defined __USE_BSD || defined __USE_UNIX98
|
||||
# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
|
||||
# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define F_SETSIG 10 /* Set number of signal to be sent. */
|
||||
# define F_GETSIG 11 /* Get number of signal to be sent. */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define F_SETLEASE 1024 /* Set a lease. */
|
||||
# define F_GETLEASE 1025 /* Enquire what lease is active. */
|
||||
# define F_NOTIFY 1026 /* Request notfications on a directory. */
|
||||
#endif
|
||||
|
||||
/* For F_[GET|SET]FL. */
|
||||
#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
|
||||
|
||||
/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */
|
||||
#define F_RDLCK 0 /* Read lock. */
|
||||
#define F_WRLCK 1 /* Write lock. */
|
||||
#define F_UNLCK 2 /* Remove lock. */
|
||||
|
||||
/* For old implementation of bsd flock(). */
|
||||
#define F_EXLCK 4 /* or 3 */
|
||||
#define F_SHLCK 8 /* or 4 */
|
||||
|
||||
#ifdef __USE_BSD
|
||||
/* Operations for bsd flock(), also used by the kernel implementation. */
|
||||
# define LOCK_SH 1 /* shared lock */
|
||||
# define LOCK_EX 2 /* exclusive lock */
|
||||
# define LOCK_NB 4 /* or'd with one of the above to prevent
|
||||
blocking */
|
||||
# define LOCK_UN 8 /* remove lock */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
# define LOCK_MAND 32 /* This is a mandatory flock: */
|
||||
# define LOCK_READ 64 /* ... which allows concurrent read operations. */
|
||||
# define LOCK_WRITE 128 /* ... which allows concurrent write operations. */
|
||||
# define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */
|
||||
#endif
|
||||
|
||||
#ifdef __USE_GNU
|
||||
/* Types of directory notifications that may be requested with F_NOTIFY. */
|
||||
# define DN_ACCESS 0x00000001 /* File accessed. */
|
||||
# define DN_MODIFY 0x00000002 /* File modified. */
|
||||
# define DN_CREATE 0x00000004 /* File created. */
|
||||
# define DN_DELETE 0x00000008 /* File removed. */
|
||||
# define DN_RENAME 0x00000010 /* File renamed. */
|
||||
# define DN_ATTRIB 0x00000020 /* File changed attibutes. */
|
||||
# define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */
|
||||
#endif
|
||||
|
||||
struct flock
|
||||
{
|
||||
short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
|
||||
short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
|
||||
#ifndef __USE_FILE_OFFSET64
|
||||
__off_t l_start; /* Offset where the lock begins. */
|
||||
__off_t l_len; /* Size of the locked area; zero means until EOF. */
|
||||
#else
|
||||
__off64_t l_start; /* Offset where the lock begins. */
|
||||
__off64_t l_len; /* Size of the locked area; zero means until EOF. */
|
||||
#endif
|
||||
__pid_t l_pid; /* Process holding the lock. */
|
||||
};
|
||||
|
||||
#ifdef __USE_LARGEFILE64
|
||||
struct flock64
|
||||
{
|
||||
short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
|
||||
short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
|
||||
__off64_t l_start; /* Offset where the lock begins. */
|
||||
__off64_t l_len; /* Size of the locked area; zero means until EOF. */
|
||||
__pid_t l_pid; /* Process holding the lock. */
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Define some more compatibility macros to be backward compatible with
|
||||
BSD systems which did not managed to hide these kernel macros. */
|
||||
#ifdef __USE_BSD
|
||||
# define FAPPEND O_APPEND
|
||||
# define FFSYNC O_FSYNC
|
||||
# define FASYNC O_ASYNC
|
||||
# define FNONBLOCK O_NONBLOCK
|
||||
# define FNDELAY O_NDELAY
|
||||
#endif /* Use BSD. */
|
||||
|
||||
/* Advise to `posix_fadvise'. */
|
||||
#ifdef __USE_XOPEN2K
|
||||
# define POSIX_FADV_NORMAL 0 /* No further special treatment. */
|
||||
# define POSIX_FADV_RANDOM 1 /* Expect random page references. */
|
||||
# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */
|
||||
# define POSIX_FADV_WILLNEED 3 /* Will need these pages. */
|
||||
# define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */
|
||||
# define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Provide kernel hint to read ahead. */
|
||||
extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
|
||||
__THROW;
|
||||
|
||||
__END_DECLS
|
@ -1,97 +0,0 @@
|
||||
/* Definitions for POSIX memory map interface. Linux/CRIS version.
|
||||
Copyright (C) 1997, 2000, 2001, 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 _SYS_MMAN_H
|
||||
# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
|
||||
#endif
|
||||
|
||||
/* The following definitions basically come from the kernel headers.
|
||||
But the kernel header is not namespace clean. */
|
||||
|
||||
|
||||
/* Protections are chosen from these bits, OR'd together. The
|
||||
implementation does not necessarily support PROT_EXEC or PROT_WRITE
|
||||
without PROT_READ. The only guarantees are that no writing will be
|
||||
allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
|
||||
|
||||
#define PROT_READ 0x1 /* Page can be read. */
|
||||
#define PROT_WRITE 0x2 /* Page can be written. */
|
||||
#define PROT_EXEC 0x4 /* Page can be executed. */
|
||||
#define PROT_NONE 0x0 /* Page can not be accessed. */
|
||||
#define PROT_GROWSDOWN 0x01000000 /* Extend change to start of
|
||||
growsdown vma (mprotect only). */
|
||||
#define PROT_GROWSUP 0x02000000 /* Extend change to start of
|
||||
growsup vma (mprotect only). */
|
||||
|
||||
/* Sharing types (must choose one and only one of these). */
|
||||
#define MAP_SHARED 0x01 /* Share changes. */
|
||||
#define MAP_PRIVATE 0x02 /* Changes are private. */
|
||||
#ifdef __USE_MISC
|
||||
# define MAP_TYPE 0x0f /* Mask for type of mapping. */
|
||||
#endif
|
||||
|
||||
/* Other flags. */
|
||||
#define MAP_FIXED 0x10 /* Interpret addr exactly. */
|
||||
#ifdef __USE_MISC
|
||||
# define MAP_FILE 0
|
||||
# define MAP_ANONYMOUS 0x20 /* Don't use a file. */
|
||||
# define MAP_ANON MAP_ANONYMOUS
|
||||
#endif
|
||||
|
||||
/* These are Linux-specific. */
|
||||
#ifdef __USE_MISC
|
||||
# define MAP_GROWSDOWN 0x0100 /* Stack-like segment. */
|
||||
# define MAP_DENYWRITE 0x0800 /* ETXTBSY */
|
||||
# define MAP_EXECUTABLE 0x1000 /* Mark it as an executable. */
|
||||
# define MAP_LOCKED 0x2000 /* Lock the mapping. */
|
||||
# define MAP_NORESERVE 0x4000 /* Don't check for reservations. */
|
||||
#endif
|
||||
|
||||
/* Flags to `msync'. */
|
||||
#define MS_ASYNC 1 /* Sync memory asynchronously. */
|
||||
#define MS_SYNC 4 /* Synchronous memory sync. */
|
||||
#define MS_INVALIDATE 2 /* Invalidate the caches. */
|
||||
|
||||
/* Flags for `mlockall'. */
|
||||
#define MCL_CURRENT 1 /* Lock all currently mapped pages. */
|
||||
#define MCL_FUTURE 2 /* Lock all additions to address
|
||||
space. */
|
||||
|
||||
/* Flags for `mremap'. */
|
||||
#ifdef __USE_GNU
|
||||
# define MREMAP_MAYMOVE 1
|
||||
#endif
|
||||
|
||||
/* Advice to `madvise'. */
|
||||
#ifdef __USE_BSD
|
||||
# define MADV_NORMAL 0 /* No further special treatment. */
|
||||
# define MADV_RANDOM 1 /* Expect random page references. */
|
||||
# define MADV_SEQUENTIAL 2 /* Expect sequential page references. */
|
||||
# define MADV_WILLNEED 3 /* Will need these pages. */
|
||||
# define MADV_DONTNEED 4 /* Don't need these pages. */
|
||||
#endif
|
||||
|
||||
/* The POSIX people had to invent similar names for the same things. */
|
||||
#ifdef __USE_XOPEN2K
|
||||
# define POSIX_MADV_NORMAL 0 /* No further special treatment. */
|
||||
# define POSIX_MADV_RANDOM 1 /* Expect random page references. */
|
||||
# define POSIX_MADV_SEQUENTIAL 2 /* Expect sequential page references. */
|
||||
# define POSIX_MADV_WILLNEED 3 /* Will need these pages. */
|
||||
# define POSIX_MADV_DONTNEED 4 /* Don't need these pages. */
|
||||
#endif
|
@ -1,44 +0,0 @@
|
||||
/* brk system call for Linux/CRIS.
|
||||
Copyright (C) 1995, 1996, 2001 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 <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sysdep.h>
|
||||
|
||||
/* This must be initialized data because commons can't have aliases. */
|
||||
void *__curbrk = 0;
|
||||
|
||||
int
|
||||
__brk (void *addr)
|
||||
{
|
||||
unsigned char *newbrk;
|
||||
|
||||
newbrk = (unsigned char *) INLINE_SYSCALL (brk, 1, addr);
|
||||
|
||||
__curbrk = newbrk;
|
||||
|
||||
if (newbrk < (unsigned char *) addr)
|
||||
{
|
||||
__set_errno (ENOMEM);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
weak_alias (__brk, brk)
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/m68k/chown.c>
|
@ -1,88 +0,0 @@
|
||||
/* Copyright (C) 2001 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>
|
||||
#define _ERRNO_H 1
|
||||
#include <bits/errno.h>
|
||||
|
||||
/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
.text
|
||||
ENTRY (__clone)
|
||||
/* Sanity check arguments: No NULL function pointers. Allow a NULL
|
||||
stack pointer though; it makes the kernel allocate stack. */
|
||||
test.d r10
|
||||
beq 1f
|
||||
nop
|
||||
|
||||
/* We need to muck with a few registers. */
|
||||
movem r1,[sp=sp-8]
|
||||
|
||||
/* Save the function pointer and argument. We can't save them
|
||||
onto the new stack since it can be NULL. */
|
||||
move.d r10,r0
|
||||
move.d r13,r1
|
||||
|
||||
/* Move the other arguments into place for the system call. */
|
||||
move.d r11,r10
|
||||
move.d r12,r11
|
||||
|
||||
/* Do the system call. */
|
||||
movu.w SYS_ify (clone),r9
|
||||
break 13
|
||||
test.d r10
|
||||
beq .Lthread_start
|
||||
nop
|
||||
|
||||
/* Jump to error handler if we get (unsigned) -4096 .. 0xffffffff. */
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
movem [sp+],r1
|
||||
|
||||
/* In parent, successful return. (Avoid using "ret" - it's a macro.) */
|
||||
Ret
|
||||
nop
|
||||
|
||||
.Lthread_start:
|
||||
/* Terminate frame pointers here. */
|
||||
moveq 0,r8
|
||||
|
||||
/* I've told you once. */
|
||||
move.d r1,r10
|
||||
jsr r0
|
||||
|
||||
SETUP_PIC
|
||||
PLTCALL (_exit)
|
||||
|
||||
/* Die horribly. */
|
||||
test.d [6809]
|
||||
|
||||
/* Stop the unstoppable. */
|
||||
9:
|
||||
ba 9b
|
||||
nop
|
||||
|
||||
/* Local error handler. */
|
||||
1:
|
||||
movs.w -EINVAL,r10
|
||||
/* Drop through into the ordinary error handler. */
|
||||
PSEUDO_END (__clone)
|
||||
|
||||
weak_alias (__clone, clone)
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/fchown.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/fcntl.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/fxstat.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getegid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/geteuid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getgid.c>
|
@ -1,2 +0,0 @@
|
||||
/* We also have to rewrite the kernel gid_t to the user land type. */
|
||||
#include <sysdeps/unix/sysv/linux/i386/getgroups.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getresgid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getresuid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getrlimit.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getrlimit64.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/getuid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/lchown.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/lockf64.c>
|
@ -1,2 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/lxstat.c>
|
||||
|
@ -1,68 +0,0 @@
|
||||
/* Copyright (C) 1995, 96, 97, 98, 99, 2000, 2001 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 "kernel-features.h"
|
||||
|
||||
#include <asm/errno.h>
|
||||
|
||||
/* Rather than dragging in yet another kernel file, <asm/page.h>, we
|
||||
define it here. Provide for easy override. */
|
||||
#ifndef PAGE_SHIFT
|
||||
#define PAGE_SHIFT 13
|
||||
#endif
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
/* This is __ptr_t
|
||||
__mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset) */
|
||||
|
||||
ENTRY (__mmap)
|
||||
|
||||
/* Only accept a offset (and address) being a multiple of PAGE_SIZE,
|
||||
since we only pass the page part in the system call. */
|
||||
move.d [sp+4],r9
|
||||
btstq (PAGE_SHIFT - 1),r9
|
||||
bne 1f
|
||||
btstq (PAGE_SHIFT - 1),r10
|
||||
|
||||
bne 1f
|
||||
lsrq PAGE_SHIFT,r9
|
||||
|
||||
move [sp],mof
|
||||
move srp,[sp]
|
||||
move r9,srp
|
||||
|
||||
movu.b SYS_ify (mmap2),r9
|
||||
break 13
|
||||
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
move [sp],srp
|
||||
|
||||
Ret
|
||||
nop
|
||||
|
||||
/* Local error handler. */
|
||||
1:
|
||||
movs.w -EINVAL,r10
|
||||
/* Drop through into the ordinary error handler. */
|
||||
PSEUDO_END (__mmap)
|
||||
|
||||
weak_alias (__mmap, mmap)
|
@ -1,91 +0,0 @@
|
||||
/* Copyright (C) 2001 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 "kernel-features.h"
|
||||
|
||||
#include <asm/errno.h>
|
||||
|
||||
/* Rather than dragging in yet another kernel file, <asm/page.h>, we
|
||||
define it here. Provide for easy override. */
|
||||
#ifndef PAGE_SHIFT
|
||||
#define PAGE_SHIFT 13
|
||||
#endif
|
||||
|
||||
/* This is: __ptr_t
|
||||
__mmap64 (__ptr_t addr, size_t len, int prot, int flags, int fd,
|
||||
off64_t offset); */
|
||||
|
||||
/* This was done in C, but the resulting code didn't look anywhere near
|
||||
nice, and mmap64 is important enough to have fast code. Rather than
|
||||
fixing (the generic bits in) gcc, we make sure not to depend on it by
|
||||
writing code that GCC cannot reasonably generate. */
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
ENTRY (__mmap64)
|
||||
|
||||
move [sp],mof
|
||||
move.d [sp+4],r9
|
||||
|
||||
/* Only accept an offset being a multiple of PAGE_SIZE, ditto address. */
|
||||
btstq (PAGE_SHIFT - 1),r9
|
||||
bne 1f
|
||||
lsrq PAGE_SHIFT,r9
|
||||
|
||||
btstq (PAGE_SHIFT - 1),r10
|
||||
bne 1f
|
||||
move.d r9,[sp]
|
||||
|
||||
/* We have to store the adjusted part somewhere we can "or" from.
|
||||
No registers available, so let's re-use the incoming low-part
|
||||
parameter location. */
|
||||
move.d [sp+8],r9
|
||||
|
||||
swapwbr r9
|
||||
/* Check if the highest bits (now the lowest bits) are zero. They
|
||||
must be, since we're actually calling a system function
|
||||
specifying the size in *pages* in a single dword. Thus you can
|
||||
mmap64 PAGE_SIZE * 4 Gbyte. */
|
||||
btstq (PAGE_SHIFT - 1),r9
|
||||
bne 1f
|
||||
swapwbr r9
|
||||
|
||||
lslq (32 - PAGE_SHIFT),r9
|
||||
or.d [sp],r9
|
||||
move srp,[sp]
|
||||
move r9,srp
|
||||
|
||||
movu.b SYS_ify (mmap2),r9
|
||||
break 13
|
||||
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
move [sp],srp
|
||||
|
||||
Ret
|
||||
nop
|
||||
|
||||
/* Local error handler. */
|
||||
1:
|
||||
movs.w -EINVAL,r10
|
||||
/* Drop through into the ordinary error handler. */
|
||||
PSEUDO_END (__mmap64)
|
||||
|
||||
weak_alias (__mmap64, mmap64)
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/msgctl.c>
|
@ -1,26 +0,0 @@
|
||||
/* Low-level statistical profiling support function. Linux/CRIS version.
|
||||
Copyright (C) 2001 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 <signal.h>
|
||||
|
||||
static void
|
||||
profil_counter (int signo, struct sigcontext *scp)
|
||||
{
|
||||
profil_count ((void *) scp->regs.irp);
|
||||
}
|
@ -1,117 +0,0 @@
|
||||
/* Dump registers.
|
||||
Copyright (C) 1998, 2001 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 <stddef.h>
|
||||
#include <sys/uio.h>
|
||||
#include <stdio-common/_itoa.h>
|
||||
|
||||
/* We will print the register dump in this format:
|
||||
|
||||
R0: XXXXXXXX R1: XXXXXXXX R2: XXXXXXXX R3: XXXXXXXX
|
||||
R4: XXXXXXXX R5: XXXXXXXX R6: XXXXXXXX R7: XXXXXXXX
|
||||
R8: XXXXXXXX R9: XXXXXXXX R10: XXXXXXXX R11: XXXXXXXX
|
||||
R12: XXXXXXXX R13: XXXXXXXX SP: XXXXXXXX PC: XXXXXXXX
|
||||
DCCR: XXXXXXXX SRP: XXXXXXXX */
|
||||
|
||||
static void
|
||||
hexvalue (unsigned long int value, char *buf, size_t len)
|
||||
{
|
||||
char *cp = _itoa_word (value, buf + len, 16, 0);
|
||||
while (cp > buf)
|
||||
*--cp = '0';
|
||||
}
|
||||
|
||||
static void register_dump (int fd, struct sigcontext *ctx)
|
||||
{
|
||||
char regs[18][8];
|
||||
struct iovec iov[36], *next_iov = iov;
|
||||
struct pt_regs *rx = &ctx->regs;
|
||||
|
||||
#define ADD_STRING(str) \
|
||||
next_iov->iov_base = (char *) (str); \
|
||||
next_iov->iov_len = strlen (str); \
|
||||
++next_iov
|
||||
#define ADD_MEM(str, len) \
|
||||
next_iov->iov_base = (str); \
|
||||
next_iov->iov_len = (len); \
|
||||
++next_iov
|
||||
|
||||
/* Generate strings of register contents. */
|
||||
hexvalue (rx->r0, regs[0], 8);
|
||||
hexvalue (rx->r1, regs[1], 8);
|
||||
hexvalue (rx->r2, regs[2], 8);
|
||||
hexvalue (rx->r3, regs[3], 8);
|
||||
hexvalue (rx->r4, regs[4], 8);
|
||||
hexvalue (rx->r5, regs[5], 8);
|
||||
hexvalue (rx->r6, regs[6], 8);
|
||||
hexvalue (rx->r7, regs[7], 8);
|
||||
hexvalue (rx->r8, regs[8], 8);
|
||||
hexvalue (rx->r9, regs[9], 8);
|
||||
hexvalue (rx->r10, regs[10], 8);
|
||||
hexvalue (rx->r11, regs[11], 8);
|
||||
hexvalue (rx->r12, regs[12], 8);
|
||||
hexvalue (rx->r13, regs[13], 8);
|
||||
hexvalue (ctx->usp, regs[14], 8);
|
||||
hexvalue (rx->irp, regs[17], 8);
|
||||
hexvalue (rx->dccr, regs[15], 8);
|
||||
hexvalue (rx->srp, regs[16], 8);
|
||||
|
||||
/* Generate the output. */
|
||||
ADD_STRING ("Register dump:\n\n R0: ");
|
||||
ADD_MEM (regs[0], 8);
|
||||
ADD_STRING (" R1: ");
|
||||
ADD_MEM (regs[1], 8);
|
||||
ADD_STRING (" R2: ");
|
||||
ADD_MEM (regs[2], 8);
|
||||
ADD_STRING (" R3: ");
|
||||
ADD_MEM (regs[3], 8);
|
||||
ADD_STRING ("\n R4: ");
|
||||
ADD_MEM (regs[4], 8);
|
||||
ADD_STRING (" R5: ");
|
||||
ADD_MEM (regs[5], 8);
|
||||
ADD_STRING (" R6: ");
|
||||
ADD_MEM (regs[6], 8);
|
||||
ADD_STRING (" R7: ");
|
||||
ADD_MEM (regs[7], 8);
|
||||
ADD_STRING ("\n R8: ");
|
||||
ADD_MEM (regs[8], 8);
|
||||
ADD_STRING (" R9: ");
|
||||
ADD_MEM (regs[9], 8);
|
||||
ADD_STRING (" R10: ");
|
||||
ADD_MEM (regs[10], 8);
|
||||
ADD_STRING (" R11: ");
|
||||
ADD_MEM (regs[11], 8);
|
||||
ADD_STRING ("\n R12: ");
|
||||
ADD_MEM (regs[12], 8);
|
||||
ADD_STRING (" R13: ");
|
||||
ADD_MEM (regs[13], 8);
|
||||
ADD_STRING (" SP: ");
|
||||
ADD_MEM (regs[14], 8);
|
||||
ADD_STRING (" PC: ");
|
||||
ADD_MEM (regs[17], 8);
|
||||
ADD_STRING ("\nDCCR: ");
|
||||
ADD_MEM (regs[15], 8);
|
||||
ADD_STRING (" SRP: ");
|
||||
ADD_MEM (regs[16], 4);
|
||||
|
||||
/* Write the stuff out. */
|
||||
writev (fd, iov, next_iov - iov);
|
||||
}
|
||||
|
||||
#define REGISTER_DUMP register_dump (fd, ctx)
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/semctl.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setegid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/seteuid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setfsgid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setfsuid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setgid.c>
|
@ -1,2 +0,0 @@
|
||||
/* We also have to rewrite the kernel gid_t to the user land type. */
|
||||
#include <sysdeps/unix/sysv/linux/i386/setgroups.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setregid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setresgid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setresuid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setreuid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setrlimit.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/setuid.c>
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/shmctl.c>
|
@ -1,96 +0,0 @@
|
||||
/* Copyright (C) 1995, 1996, 1997, 1999, 2001 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 <socketcall.h>
|
||||
|
||||
#define P(a, b) P2(a, b)
|
||||
#define P2(a, b) a##b
|
||||
|
||||
/* The socket-oriented system calls are handled unusally in Linux.
|
||||
They are all gated through the single `socketcall' system call number.
|
||||
`socketcall' takes two arguments: the first is the subcode, specifying
|
||||
which socket function is being called; and the second is a pointer to
|
||||
the arguments to the specific function.
|
||||
|
||||
The .S files for the other calls just #define socket and #include this.
|
||||
They also #define a 'number-of-arguments' word in NARGS, which
|
||||
defaults to 3. */
|
||||
|
||||
#ifndef NARGS
|
||||
#ifdef socket
|
||||
#error NARGS not defined
|
||||
#endif
|
||||
#define NARGS 3
|
||||
#endif
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
#ifndef __socket
|
||||
#define __socket P(__,socket)
|
||||
#endif
|
||||
|
||||
ENTRY(__socket)
|
||||
subq NARGS*4,sp
|
||||
|
||||
#if NARGS >= 2
|
||||
move.d sp,r9
|
||||
move.d r10,[r9+]
|
||||
#else
|
||||
move.d r10,[sp]
|
||||
#endif
|
||||
#if NARGS >= 2
|
||||
move.d r11,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 3
|
||||
move.d r12,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 4
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 5
|
||||
move.d [sp+NARGS*4],r13
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 6
|
||||
move.d [sp+NARGS*4+4],r13
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 7
|
||||
move.d [sp+NARGS*4+8],r13
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 8
|
||||
move.d [sp+NARGS*4+12],r13
|
||||
move.d r13,[r9+]
|
||||
#endif
|
||||
#if NARGS >= 9
|
||||
#error Too many arguments!
|
||||
#endif
|
||||
moveq P(SOCKOP_,socket),r10
|
||||
move.d sp,r11
|
||||
movu.w SYS_ify(socketcall),r9
|
||||
break 13
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
addq NARGS*4,sp
|
||||
Ret
|
||||
nop
|
||||
PSEUDO_END (__socket)
|
||||
|
||||
weak_alias (__socket, socket)
|
@ -1,56 +0,0 @@
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001 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 _SYS_UCONTEXT_H
|
||||
#define _SYS_UCONTEXT_H 1
|
||||
|
||||
#include <features.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <bits/sigcontext.h>
|
||||
|
||||
|
||||
/* Type for general register. */
|
||||
typedef long int greg_t;
|
||||
|
||||
/* Number of general registers. */
|
||||
#define NGREG 20
|
||||
|
||||
/* Container for all general registers. */
|
||||
typedef greg_t gregset_t[NGREG];
|
||||
|
||||
/* A placeholder type for floating-point register. */
|
||||
typedef long int fpreg_t;
|
||||
|
||||
/* A placeholder; CRIS does not have any fp regs. */
|
||||
typedef unsigned long fpregset_t;
|
||||
|
||||
/* A machine context is exactly a sigcontext. */
|
||||
typedef struct sigcontext mcontext_t;
|
||||
|
||||
/* Userlevel context. */
|
||||
typedef struct ucontext
|
||||
{
|
||||
unsigned long int uc_flags;
|
||||
struct ucontext *uc_link;
|
||||
stack_t uc_stack;
|
||||
mcontext_t uc_mcontext;
|
||||
__sigset_t uc_sigmask;
|
||||
} ucontext_t;
|
||||
|
||||
#endif /* sys/ucontext.h */
|
@ -1,40 +0,0 @@
|
||||
/* Copyright (C) 2001 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>
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
/* Make syscall (callno, ...) into a system call. */
|
||||
|
||||
ENTRY (syscall)
|
||||
move.d r10,r9
|
||||
move.d r11,r10
|
||||
move.d r12,r11
|
||||
move.d r13,r12
|
||||
move.d [sp],r13
|
||||
move srp,[sp]
|
||||
move [sp+4],mof
|
||||
move [sp+8],srp
|
||||
break 13
|
||||
cmps.w -4096,r10
|
||||
bhs 0f
|
||||
move [sp],srp
|
||||
Ret
|
||||
nop
|
||||
PSEUDO_END (syscall)
|
@ -1,66 +0,0 @@
|
||||
/* Copyright (C) 2001 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>
|
||||
|
||||
/* The syscall stubs jump here when they detect an error, bot for PIC and
|
||||
non-PIC. */
|
||||
|
||||
.syntax no_register_prefix
|
||||
|
||||
ENTRY (__syscall_error)
|
||||
neg.d r10,r10
|
||||
|
||||
#ifdef _LIBC_REENTRANT
|
||||
push r10
|
||||
push srp
|
||||
|
||||
/* Note that __syscall_error is only visible within this library,
|
||||
and no-one passes it on as a pointer, so can assume that R0 (GOT
|
||||
pointer) is correctly set up. */
|
||||
PLTCALL (__errno_location)
|
||||
|
||||
pop srp
|
||||
pop r11
|
||||
move.d r11,[r10]
|
||||
|
||||
#else /* not _LIBC_REENTRANT */
|
||||
# ifdef __PIC__
|
||||
move.d [r0+C_SYMBOL_NAME(errno:GOT)],r9
|
||||
move.d r10,[r9]
|
||||
# else
|
||||
move.d r10,[C_SYMBOL_NAME(errno)]
|
||||
# endif
|
||||
#endif /* _LIBC_REENTRANT */
|
||||
|
||||
#ifdef __PIC__
|
||||
/* PIC callers are supposed to have R0 on stack, ready for us to restore.
|
||||
Callers are only allowed from within this DSO, so the GOT in r0 is the
|
||||
one we want to use.
|
||||
|
||||
(Don't use "ret" - it's a macro). */
|
||||
|
||||
moveq -1,r10
|
||||
Ret
|
||||
pop r0
|
||||
#else
|
||||
Ret
|
||||
moveq -1,r10
|
||||
#endif
|
||||
|
||||
END (__syscall_error)
|
@ -1,226 +0,0 @@
|
||||
/* Assembler macros for CRIS.
|
||||
Copyright (C) 1999, 2001, 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 <asm/unistd.h>
|
||||
#include <sysdeps/cris/sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include "config.h"
|
||||
|
||||
#undef SYS_ify
|
||||
#define SYS_ify(syscall_name) (__NR_##syscall_name)
|
||||
|
||||
|
||||
#ifdef __ASSEMBLER__
|
||||
|
||||
/* 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
|
||||
#define SYS_ify(syscall_name) __NR_##syscall_name
|
||||
|
||||
/* ELF-like local names start with `.L'. */
|
||||
#undef L
|
||||
#define L(name) .L##name
|
||||
|
||||
/* Linux uses a negative return value to indicate syscall errors,
|
||||
unlike most Unices, which use the condition codes' carry flag.
|
||||
|
||||
Since version 2.1 the return value of a system call might be
|
||||
negative even if the call succeeded. E.g., the `lseek' system call
|
||||
might return a large offset. Therefore we must not anymore test
|
||||
for < 0, but test for a real error by making sure the value in %eax
|
||||
is a real error number. Linus said he will make sure the no syscall
|
||||
returns a value in -1 .. -4095 as a valid result so we can safely
|
||||
test with -4095. */
|
||||
|
||||
/* Syscall wrappers consist of
|
||||
#include <sysdep.h>
|
||||
PSEUDO (...)
|
||||
ret
|
||||
PSEUDO_END (...)
|
||||
|
||||
which expand to the following. */
|
||||
|
||||
/* Linux takes system call arguments in registers:
|
||||
syscall number R9
|
||||
arg 1 R10
|
||||
arg 2 R11
|
||||
arg 3 R12
|
||||
arg 4 R13
|
||||
arg 5 MOF
|
||||
arg 6 SRP
|
||||
|
||||
The compiler calls us by the C convention:
|
||||
syscall number in the DO_CALL macro
|
||||
arg 1 R10
|
||||
arg 2 R11
|
||||
arg 3 R12
|
||||
arg 4 R13
|
||||
arg 5 [SP]
|
||||
arg 6 [SP + 4]
|
||||
*/
|
||||
|
||||
/* Note that we use "bhs", since we want to match
|
||||
(unsigned) -4096 .. 0xffffffff. Using "ble" would match
|
||||
-4096 .. -2**31. */
|
||||
#define PSEUDO(name, syscall_name, args) \
|
||||
ENTRY (name) @ \
|
||||
DOARGS_##args @ \
|
||||
movu.w SYS_ify (syscall_name),$r9 @ \
|
||||
break 13 @ \
|
||||
cmps.w -4096,$r10 @ \
|
||||
bhs 0f @ \
|
||||
nop @ \
|
||||
UNDOARGS_return_##args
|
||||
|
||||
/* Ouch! We have to remember not to use "ret" in assembly-code.
|
||||
("Luckily", mnemonics are case-insensitive.)
|
||||
Note that we assume usage is exactly:
|
||||
PSEUDO (...)
|
||||
ret
|
||||
PSEUDO_END (...)
|
||||
so we can put all payload into PSEUDO (except for error handling). */
|
||||
|
||||
#define ret
|
||||
|
||||
#define PSEUDO_END(name) \
|
||||
0: @ \
|
||||
SETUP_PIC @ \
|
||||
PLTJUMP (syscall_error) @ \
|
||||
END (name)
|
||||
|
||||
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||
ENTRY (name) @ \
|
||||
DOARGS_##args @ \
|
||||
movu.w SYS_ify (syscall_name),$r9 @ \
|
||||
break 13 @ \
|
||||
UNDOARGS_return_##args
|
||||
|
||||
#define ret_NOERRNO
|
||||
|
||||
#define PSEUDO_END_NOERRNO(name) \
|
||||
END (name)
|
||||
|
||||
#define DOARGS_0
|
||||
#define DOARGS_1
|
||||
#define DOARGS_2
|
||||
#define DOARGS_3
|
||||
#define DOARGS_4
|
||||
#define DOARGS_5 \
|
||||
move [$sp],$mof
|
||||
|
||||
/* To avoid allocating stack-space, we re-use the arg 5 (MOF) entry by
|
||||
storing SRP into it. If called with too-few arguments, we will crash,
|
||||
but that will happen in the general case too. */
|
||||
#define DOARGS_6 \
|
||||
DOARGS_5 @ \
|
||||
move $srp,[$sp] @ \
|
||||
move [$sp+4],$srp
|
||||
|
||||
#define UNDOARGS_return_0 \
|
||||
Ret @ \
|
||||
nop
|
||||
|
||||
#define UNDOARGS_return_1 UNDOARGS_return_0
|
||||
#define UNDOARGS_return_2 UNDOARGS_return_0
|
||||
#define UNDOARGS_return_3 UNDOARGS_return_0
|
||||
#define UNDOARGS_return_4 UNDOARGS_return_0
|
||||
#define UNDOARGS_return_5 UNDOARGS_return_0
|
||||
|
||||
/* We assume the following code will be "ret" and "PSEUDO_END". */
|
||||
#define UNDOARGS_return_return_6 \
|
||||
jump [$sp]
|
||||
|
||||
#else /* not __ASSEMBLER__ */
|
||||
|
||||
#undef INLINE_SYSCALL
|
||||
#define INLINE_SYSCALL(name, nr, args...) \
|
||||
({ \
|
||||
unsigned long __sys_res; \
|
||||
register unsigned long __res asm ("r10"); \
|
||||
LOAD_ARGS_c_##nr (args) \
|
||||
register unsigned long __callno asm ("r9") \
|
||||
= SYS_ify (name); \
|
||||
asm volatile (LOAD_ARGS_asm_##nr (args) \
|
||||
"break 13" \
|
||||
: "=r" (__res) \
|
||||
: ASM_ARGS_##nr (args) \
|
||||
: ASM_CLOBBER_##nr); \
|
||||
__sys_res = __res; \
|
||||
\
|
||||
if (__sys_res >= (unsigned long) -4096) \
|
||||
{ \
|
||||
__set_errno (- __sys_res); \
|
||||
__sys_res = (unsigned long) -1; \
|
||||
} \
|
||||
(long int) __sys_res; \
|
||||
})
|
||||
|
||||
#define LOAD_ARGS_c_0()
|
||||
#define LOAD_ARGS_asm_0()
|
||||
#define ASM_CLOBBER_0 "memory"
|
||||
#define ASM_ARGS_0() "r" (__callno)
|
||||
|
||||
#define LOAD_ARGS_c_1(r10) \
|
||||
LOAD_ARGS_c_0() \
|
||||
register unsigned long __r10 __asm__ ("r10") = (unsigned long) (r10);
|
||||
#define LOAD_ARGS_asm_1(r10) LOAD_ARGS_asm_0 ()
|
||||
#define ASM_CLOBBER_1 ASM_CLOBBER_0
|
||||
#define ASM_ARGS_1(r10) ASM_ARGS_0 (), "0" (__r10)
|
||||
|
||||
#define LOAD_ARGS_c_2(r10, r11) \
|
||||
LOAD_ARGS_c_1(r10) \
|
||||
register unsigned long __r11 __asm__ ("r11") = (unsigned long) (r11);
|
||||
#define LOAD_ARGS_asm_2(r10, r11) LOAD_ARGS_asm_1 (r10)
|
||||
#define ASM_CLOBBER_2 ASM_CLOBBER_1
|
||||
#define ASM_ARGS_2(r10, r11) ASM_ARGS_1 (r10), "r" (__r11)
|
||||
|
||||
#define LOAD_ARGS_c_3(r10, r11, r12) \
|
||||
LOAD_ARGS_c_2(r10, r11) \
|
||||
register unsigned long __r12 __asm__ ("r12") = (unsigned long) (r12);
|
||||
#define LOAD_ARGS_asm_3(r10, r11, r12) LOAD_ARGS_asm_2 (r10, r11)
|
||||
#define ASM_CLOBBER_3 ASM_CLOBBER_2
|
||||
#define ASM_ARGS_3(r10, r11, r12) ASM_ARGS_2 (r10, r11), "r" (__r12)
|
||||
|
||||
#define LOAD_ARGS_c_4(r10, r11, r12, r13) \
|
||||
LOAD_ARGS_c_3(r10, r11, r12) \
|
||||
register unsigned long __r13 __asm__ ("r13") = (unsigned long) (r13);
|
||||
#define LOAD_ARGS_asm_4(r10, r11, r12, r13) LOAD_ARGS_asm_3 (r10, r11, r12)
|
||||
#define ASM_CLOBBER_4 ASM_CLOBBER_3
|
||||
#define ASM_ARGS_4(r10, r11, r12, r13) ASM_ARGS_3 (r10, r11, r12), "r" (__r13)
|
||||
|
||||
#define LOAD_ARGS_c_5(r10, r11, r12, r13, mof) \
|
||||
LOAD_ARGS_c_4(r10, r11, r12, r13)
|
||||
#define LOAD_ARGS_asm_5(r10, r11, r12, r13, mof) \
|
||||
LOAD_ARGS_asm_4 (r10, r11, r12, r13) "move %6,$mof\n\t"
|
||||
#define ASM_CLOBBER_5 ASM_CLOBBER_4
|
||||
#define ASM_ARGS_5(r10, r11, r12, r13, mof) \
|
||||
ASM_ARGS_4 (r10, r11, r12, r13), "g" (mof)
|
||||
|
||||
#define LOAD_ARGS_c_6(r10, r11, r12, r13, mof, srp) \
|
||||
LOAD_ARGS_c_5(r10, r11, r12, r13, mof)
|
||||
#define LOAD_ARGS_asm_6(r10, r11, r12, r13, mof, srp) \
|
||||
LOAD_ARGS_asm_5(r10, r11, r12, r13, mof) \
|
||||
"move %7,$srp\n\t"
|
||||
#define ASM_CLOBBER_6 ASM_CLOBBER_5, "srp"
|
||||
#define ASM_ARGS_6(r10, r11, r12, r13, mof, srp) \
|
||||
ASM_ARGS_5 (r10, r11, r12, r13, mof), "g" (srp)
|
||||
|
||||
#endif /* not __ASSEMBLER__ */
|
@ -1,27 +0,0 @@
|
||||
/* Copyright (C) 1999, 2001, 2002 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>
|
||||
|
||||
PSEUDO (__vfork, vfork, 0)
|
||||
Ret
|
||||
nop
|
||||
PSEUDO_END (__vfork)
|
||||
libc_hidden_def (__vfork)
|
||||
|
||||
weak_alias (__vfork, vfork)
|
@ -1 +0,0 @@
|
||||
#include <sysdeps/unix/sysv/linux/i386/xstat.c>
|
Reference in New Issue
Block a user