This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

CRIS port 6/8: sysdeps/unix/sysv/linux/cris


Ditto the file Dist here may be incomplet inclusive-or incorect.

2001-04-08  Hans-Peter Nilsson  <hp@axis.com>

	* sysdeps/unix/sysv/linux/cris/Dist: New file.
	* sysdeps/unix/sysv/linux/cris/Makefile: New file.
	* sysdeps/unix/sysv/linux/cris/_G_config.h: New file.
	* sysdeps/unix/sysv/linux/cris/alphasort64.c: New file.
	* sysdeps/unix/sysv/linux/cris/bits/fcntl.h: New file.
	* sysdeps/unix/sysv/linux/cris/bits/mman.h: New file.
	* sysdeps/unix/sysv/linux/cris/bits/resource.h: New file.
	* sysdeps/unix/sysv/linux/cris/brk.c: New file.
	* sysdeps/unix/sysv/linux/cris/chown.c: New file.
	* sysdeps/unix/sysv/linux/cris/clone.S: New file.
	* sysdeps/unix/sysv/linux/cris/fchown.c: New file.
	* sysdeps/unix/sysv/linux/cris/fcntl.c: New file.
	* sysdeps/unix/sysv/linux/cris/fxstat.c: New file.
	* sysdeps/unix/sysv/linux/cris/getdents64.c: New file.
	* sysdeps/unix/sysv/linux/cris/getegid.c: New file.
	* sysdeps/unix/sysv/linux/cris/geteuid.c: New file.
	* sysdeps/unix/sysv/linux/cris/getgid.c: New file.
	* sysdeps/unix/sysv/linux/cris/getgroups.c: New file.
	* sysdeps/unix/sysv/linux/cris/getresgid.c: New file.
	* sysdeps/unix/sysv/linux/cris/getresuid.c: New file.
	* sysdeps/unix/sysv/linux/cris/getrlimit.c: New file.
	* sysdeps/unix/sysv/linux/cris/getrlimit64.c: New file.
	* sysdeps/unix/sysv/linux/cris/getuid.c: New file.
	* sysdeps/unix/sysv/linux/cris/glob64.c: New file.
	* sysdeps/unix/sysv/linux/cris/lchown.c: New file.
	* sysdeps/unix/sysv/linux/cris/lockf64.c: New file.
	* sysdeps/unix/sysv/linux/cris/lxstat.c: New file.
	* sysdeps/unix/sysv/linux/cris/mmap.S: New file.
	* sysdeps/unix/sysv/linux/cris/mmap64.S: New file.
	* sysdeps/unix/sysv/linux/cris/msgctl.c: New file.
	* sysdeps/unix/sysv/linux/cris/profil-counter.h: New file.
	* sysdeps/unix/sysv/linux/cris/readdir64.c: New file.
	* sysdeps/unix/sysv/linux/cris/readdir64_r.c: New file.
	* sysdeps/unix/sysv/linux/cris/register-dump.h: New file.
	* sysdeps/unix/sysv/linux/cris/scandir64.c: New file.
	* sysdeps/unix/sysv/linux/cris/semctl.c: New file.
	* sysdeps/unix/sysv/linux/cris/setegid.c: New file.
	* sysdeps/unix/sysv/linux/cris/seteuid.c: New file.
	* sysdeps/unix/sysv/linux/cris/setfsgid.c: New file.
	* sysdeps/unix/sysv/linux/cris/setfsuid.c: New file.
	* sysdeps/unix/sysv/linux/cris/setgid.c: New file.
	* sysdeps/unix/sysv/linux/cris/setgroups.c: New file.
	* sysdeps/unix/sysv/linux/cris/setregid.c: New file.
	* sysdeps/unix/sysv/linux/cris/setresgid.c: New file.
	* sysdeps/unix/sysv/linux/cris/setresuid.c: New file.
	* sysdeps/unix/sysv/linux/cris/setreuid.c: New file.
	* sysdeps/unix/sysv/linux/cris/setrlimit.c: New file.
	* sysdeps/unix/sysv/linux/cris/setuid.c: New file.
	* sysdeps/unix/sysv/linux/cris/shmctl.c: New file.
	* sysdeps/unix/sysv/linux/cris/socket.S: New file.
	* sysdeps/unix/sysv/linux/cris/sys/ucontext.h: New file.
	* sysdeps/unix/sysv/linux/cris/syscall.S: New file.
	* sysdeps/unix/sysv/linux/cris/sysdep.S: New file.
	* sysdeps/unix/sysv/linux/cris/sysdep.h: New file.
	* sysdeps/unix/sysv/linux/cris/versionsort64.c: New file.
	* sysdeps/unix/sysv/linux/cris/vfork.S: New file.
	* sysdeps/unix/sysv/linux/cris/xstat.c: New file.

diff -cpNr sysdeps/unix/sysv/linux/cris.empty/Dist sysdeps/unix/sysv/linux/cris/Dist
*** sysdeps/unix/sysv/linux/cris.empty/Dist	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/Dist	Mon Apr  9 01:10:16 2001
***************
*** 0 ****
--- 1,5 ----
+ clone.S
+ setresuid.c
+ setresgid.c
+ setfsuid.c
+ setfsgid.c
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/Makefile sysdeps/unix/sysv/linux/cris/Makefile
*** sysdeps/unix/sysv/linux/cris.empty/Makefile	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/Makefile	Tue Feb 27 03:09:50 2001
***************
*** 0 ****
--- 1,8 ----
+ ifeq ($(subdir),misc)
+ sysdep_routines += setfsgid setfsuid setresgid setresuid
+ endif
+ 
+ ifeq ($(subdir),signal)
+ sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait	\
+ 		   rt_sigqueueinfo rt_sigaction rt_sigpending
+ endif
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/_G_config.h sysdeps/unix/sysv/linux/cris/_G_config.h
*** sysdeps/unix/sysv/linux/cris.empty/_G_config.h	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/_G_config.h	Sun Apr  8 00:36:33 2001
***************
*** 0 ****
--- 1,105 ----
+ /* 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_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 */
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/alphasort64.c sysdeps/unix/sysv/linux/cris/alphasort64.c
*** sysdeps/unix/sysv/linux/cris.empty/alphasort64.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/alphasort64.c	Sat Aug 12 10:20:21 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/alphasort64.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/bits/fcntl.h sysdeps/unix/sysv/linux/cris/bits/fcntl.h
*** sysdeps/unix/sysv/linux/cris.empty/bits/fcntl.h	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/bits/fcntl.h	Fri Feb 23 05:20:29 2001
***************
*** 0 ****
--- 1,179 ----
+ /* O_*, F_*, FD_* bit values for Linux.
+    Copyright (C) 1995, 1996, 1997, 1998, 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 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.	*/
+ 
+ #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.	 */
+ #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_XOPEN2K
+ # 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
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/bits/mman.h sysdeps/unix/sysv/linux/cris/bits/mman.h
*** sysdeps/unix/sysv/linux/cris.empty/bits/mman.h	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/bits/mman.h	Fri Feb 23 06:09:15 2001
***************
*** 0 ****
--- 1,93 ----
+ /* Definitions for POSIX memory map interface.  Linux/CRIS version.
+    Copyright (C) 1997, 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 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.  */
+ 
+ #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.  */
+ 
+ /* 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
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/bits/resource.h sysdeps/unix/sysv/linux/cris/bits/resource.h
*** sysdeps/unix/sysv/linux/cris.empty/bits/resource.h	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/bits/resource.h	Fri Feb 23 06:04:36 2001
***************
*** 0 ****
--- 1,209 ----
+ /* Bit values & structures for resource limits.  Linux/CRIS version.
+    Copyright (C) 1994,1996,1997,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 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.  */
+ 
+ #ifndef _SYS_RESOURCE_H
+ # error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
+ #endif
+ 
+ #include <bits/types.h>
+ 
+ /* Transmute defines to enumerations.  The macro re-definitions are
+    necessary because some programs want to test for operating system
+    features with #ifdef RUSAGE_SELF.  In ISO C the reflexive
+    definition is a no-op.  */
+ 
+ /* Kinds of resource limit.  */
+ enum __rlimit_resource
+ {
+   /* Per-process CPU limit, in seconds.  */
+   RLIMIT_CPU = 0,
+ #define RLIMIT_CPU RLIMIT_CPU
+ 
+   /* Largest file that can be created, in bytes.  */
+   RLIMIT_FSIZE = 1,
+ #define	RLIMIT_FSIZE RLIMIT_FSIZE
+ 
+   /* Maximum size of data segment, in bytes.  */
+   RLIMIT_DATA = 2,
+ #define	RLIMIT_DATA RLIMIT_DATA
+ 
+   /* Maximum size of stack segment, in bytes.  */
+   RLIMIT_STACK = 3,
+ #define	RLIMIT_STACK RLIMIT_STACK
+ 
+   /* Largest core file that can be created, in bytes.  */
+   RLIMIT_CORE = 4,
+ #define	RLIMIT_CORE RLIMIT_CORE
+ 
+   /* Largest resident set size, in bytes.
+      This affects swapping; processes that are exceeding their
+      resident set size will be more likely to have physical memory
+      taken from them.  */
+   RLIMIT_RSS = 5,
+ #define	RLIMIT_RSS RLIMIT_RSS
+ 
+   /* Number of open files.  */
+   RLIMIT_NOFILE = 7,
+   RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same.  */
+ #define RLIMIT_NOFILE RLIMIT_NOFILE
+ #define RLIMIT_OFILE RLIMIT_OFILE
+ 
+   /* Address space limit.  */
+   RLIMIT_AS = 9,
+ #define RLIMIT_AS RLIMIT_AS
+ 
+   /* Number of processes.  */
+   RLIMIT_NPROC = 6,
+ #define RLIMIT_NPROC RLIMIT_NPROC
+ 
+   /* Locked-in-memory address space.  */
+   RLIMIT_MEMLOCK = 8,
+ #define RLIMIT_MEMLOCK RLIMIT_MEMLOCK
+ 
+   /* Maximum number of file locks.  */
+   RLIMIT_LOCKS = 10,
+ #define RLIMIT_LOCKS RLIMIT_LOCKS
+ 
+   RLIMIT_NLIMITS = 11,
+   RLIM_NLIMITS = RLIMIT_NLIMITS
+ #define RLIMIT_NLIMITS RLIMIT_NLIMITS
+ #define RLIM_NLIMITS RLIM_NLIMITS
+ };
+ 
+ /* Value to indicate that there is no limit.  */
+ #ifndef __USE_FILE_OFFSET64
+ # define RLIM_INFINITY ((unsigned long int)(~0UL))
+ #else
+ # define RLIM_INFINITY 0xffffffffffffffffuLL
+ #endif
+ 
+ #ifdef __USE_LARGEFILE64
+ # define RLIM64_INFINITY 0xffffffffffffffffuLL
+ #endif
+ 
+ /* We can represent all limits.  */
+ #define RLIM_SAVED_MAX	RLIM_INFINITY
+ #define RLIM_SAVED_CUR	RLIM_INFINITY
+ 
+ 
+ /* Type for resource quantity measurement.  */
+ #ifndef __USE_FILE_OFFSET64
+ typedef __rlim_t rlim_t;
+ #else
+ typedef __rlim64_t rlim_t;
+ #endif
+ #ifdef __USE_LARGEFILE64
+ typedef __rlim64_t rlim64_t;
+ #endif
+ 
+ struct rlimit
+   {
+     /* The current (soft) limit.  */
+     rlim_t rlim_cur;
+     /* The hard limit.  */
+     rlim_t rlim_max;
+   };
+ 
+ #ifdef __USE_LARGEFILE64
+ struct rlimit64
+   {
+     /* The current (soft) limit.  */
+     rlim64_t rlim_cur;
+     /* The hard limit.  */
+     rlim64_t rlim_max;
+  };
+ #endif
+ 
+ /* Whose usage statistics do you want?  */
+ enum __rusage_who
+ {
+   /* The calling process.  */
+   RUSAGE_SELF = 0,
+ #define RUSAGE_SELF RUSAGE_SELF
+ 
+   /* All of its terminated child processes.  */
+   RUSAGE_CHILDREN = -1,
+ #define RUSAGE_CHILDREN RUSAGE_CHILDREN
+ 
+   /* Both.  */
+   RUSAGE_BOTH = -2
+ #define RUSAGE_BOTH RUSAGE_BOTH
+ };
+ 
+ #define __need_timeval
+ #include <bits/time.h>		/* For `struct timeval'.  */
+ 
+ /* Structure which says how much of each resource has been used.  */
+ struct rusage
+   {
+     /* Total amount of user time used.  */
+     struct timeval ru_utime;
+     /* Total amount of system time used.  */
+     struct timeval ru_stime;
+     /* Maximum resident set size (in kilobytes).  */
+     long int ru_maxrss;
+     /* Amount of sharing of text segment memory
+        with other processes (kilobyte-seconds).  */
+     long int ru_ixrss;
+     /* Amount of data segment memory used (kilobyte-seconds).  */
+     long int ru_idrss;
+     /* Amount of stack memory used (kilobyte-seconds).  */
+     long int ru_isrss;
+     /* Number of soft page faults (i.e. those serviced by reclaiming
+        a page from the list of pages awaiting reallocation.  */
+     long int ru_minflt;
+     /* Number of hard page faults (i.e. those that required I/O).  */
+     long int ru_majflt;
+     /* Number of times a process was swapped out of physical memory.  */
+     long int ru_nswap;
+     /* Number of input operations via the file system.  Note: This
+        and `ru_oublock' do not include operations with the cache.  */
+     long int ru_inblock;
+     /* Number of output operations via the file system.  */
+     long int ru_oublock;
+     /* Number of IPC messages sent.  */
+     long int ru_msgsnd;
+     /* Number of IPC messages received.  */
+     long int ru_msgrcv;
+     /* Number of signals delivered.  */
+     long int ru_nsignals;
+     /* Number of voluntary context switches, i.e. because the process
+        gave up the process before it had to (usually to wait for some
+        resource to be available).  */
+     long int ru_nvcsw;
+     /* Number of involuntary context switches, i.e. a higher priority process
+        became runnable or the current process used up its time slice.  */
+     long int ru_nivcsw;
+   };
+ 
+ /* Priority limits.  */
+ #define PRIO_MIN	-20	/* Minimum priority a process can have.  */
+ #define PRIO_MAX	20	/* Maximum priority a process can have.  */
+ 
+ /* The type of the WHICH argument to `getpriority' and `setpriority',
+    indicating what flavor of entity the WHO argument specifies.  */
+ enum __priority_which
+ {
+   PRIO_PROCESS = 0,		/* WHO is a process ID.  */
+ #define PRIO_PROCESS PRIO_PROCESS
+   PRIO_PGRP = 1,		/* WHO is a process group ID.  */
+ #define PRIO_PGRP PRIO_PGRP
+   PRIO_USER = 2			/* WHO is a user ID.  */
+ #define PRIO_USER PRIO_USER
+ };
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/brk.c sysdeps/unix/sysv/linux/cris/brk.c
*** sysdeps/unix/sysv/linux/cris.empty/brk.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/brk.c	Wed Feb 28 00:09:14 2001
***************
*** 0 ****
--- 1,44 ----
+ /* 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 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 <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)
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/chown.c sysdeps/unix/sysv/linux/cris/chown.c
*** sysdeps/unix/sysv/linux/cris.empty/chown.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/chown.c	Mon Jan 17 06:17:33 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/m68k/chown.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/clone.S sysdeps/unix/sysv/linux/cris/clone.S
*** sysdeps/unix/sysv/linux/cris.empty/clone.S	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/clone.S	Sun Feb 25 17:06:36 2001
***************
*** 0 ****
--- 1,88 ----
+ /* 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 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 _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)
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/fchown.c sysdeps/unix/sysv/linux/cris/fchown.c
*** sysdeps/unix/sysv/linux/cris.empty/fchown.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/fchown.c	Mon Jun 12 22:35:39 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/fchown.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/fcntl.c sysdeps/unix/sysv/linux/cris/fcntl.c
*** sysdeps/unix/sysv/linux/cris.empty/fcntl.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/fcntl.c	Fri Sep  8 10:12:57 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/fcntl.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/fxstat.c sysdeps/unix/sysv/linux/cris/fxstat.c
*** sysdeps/unix/sysv/linux/cris.empty/fxstat.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/fxstat.c	Wed Jan 19 04:51:30 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/fxstat.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/getdents64.c sysdeps/unix/sysv/linux/cris/getdents64.c
*** sysdeps/unix/sysv/linux/cris.empty/getdents64.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/getdents64.c	Sat Oct 14 19:48:59 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/getdents64.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/getegid.c sysdeps/unix/sysv/linux/cris/getegid.c
*** sysdeps/unix/sysv/linux/cris.empty/getegid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/getegid.c	Mon Jan 17 06:20:03 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/getegid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/geteuid.c sysdeps/unix/sysv/linux/cris/geteuid.c
*** sysdeps/unix/sysv/linux/cris.empty/geteuid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/geteuid.c	Mon Jan 17 06:20:10 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/geteuid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/getgid.c sysdeps/unix/sysv/linux/cris/getgid.c
*** sysdeps/unix/sysv/linux/cris.empty/getgid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/getgid.c	Mon Jan 17 06:20:27 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/getgid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/getgroups.c sysdeps/unix/sysv/linux/cris/getgroups.c
*** sysdeps/unix/sysv/linux/cris.empty/getgroups.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/getgroups.c	Sun Jan 19 05:54:13 1997
***************
*** 0 ****
--- 1,2 ----
+ /* We also have to rewrite the kernel gid_t to the user land type.  */
+ #include <sysdeps/unix/sysv/linux/i386/getgroups.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/getresgid.c sysdeps/unix/sysv/linux/cris/getresgid.c
*** sysdeps/unix/sysv/linux/cris.empty/getresgid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/getresgid.c	Fri Feb 11 20:43:28 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/getresgid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/getresuid.c sysdeps/unix/sysv/linux/cris/getresuid.c
*** sysdeps/unix/sysv/linux/cris.empty/getresuid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/getresuid.c	Fri Feb 11 20:43:32 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/getresuid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/getrlimit.c sysdeps/unix/sysv/linux/cris/getrlimit.c
*** sysdeps/unix/sysv/linux/cris.empty/getrlimit.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/getrlimit.c	Sat Oct 14 19:49:05 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/getrlimit.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/getrlimit64.c sysdeps/unix/sysv/linux/cris/getrlimit64.c
*** sysdeps/unix/sysv/linux/cris.empty/getrlimit64.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/getrlimit64.c	Sat Oct 14 19:49:12 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/getrlimit64.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/getuid.c sysdeps/unix/sysv/linux/cris/getuid.c
*** sysdeps/unix/sysv/linux/cris.empty/getuid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/getuid.c	Mon Jan 17 06:20:20 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/getuid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/glob64.c sysdeps/unix/sysv/linux/cris/glob64.c
*** sysdeps/unix/sysv/linux/cris.empty/glob64.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/glob64.c	Sat Oct 14 19:49:19 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/glob64.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/lchown.c sysdeps/unix/sysv/linux/cris/lchown.c
*** sysdeps/unix/sysv/linux/cris.empty/lchown.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/lchown.c	Mon Jan 17 06:20:35 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/lchown.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/lockf64.c sysdeps/unix/sysv/linux/cris/lockf64.c
*** sysdeps/unix/sysv/linux/cris.empty/lockf64.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/lockf64.c	Sat Oct 14 19:49:26 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/lockf64.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/lxstat.c sysdeps/unix/sysv/linux/cris/lxstat.c
*** sysdeps/unix/sysv/linux/cris.empty/lxstat.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/lxstat.c	Wed Jan 19 04:52:32 2000
***************
*** 0 ****
--- 1,2 ----
+ #include <sysdeps/unix/sysv/linux/i386/lxstat.c>
+ 
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/mmap.S sysdeps/unix/sysv/linux/cris/mmap.S
*** sysdeps/unix/sysv/linux/cris.empty/mmap.S	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/mmap.S	Mon Mar  5 01:35:32 2001
***************
*** 0 ****
--- 1,68 ----
+ /* 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 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>
+ 
+ #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)
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/mmap64.S sysdeps/unix/sysv/linux/cris/mmap64.S
*** sysdeps/unix/sysv/linux/cris.empty/mmap64.S	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/mmap64.S	Sat Mar 17 23:03:22 2001
***************
*** 0 ****
--- 1,91 ----
+ /* 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 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>
+ 
+ #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)
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/msgctl.c sysdeps/unix/sysv/linux/cris/msgctl.c
*** sysdeps/unix/sysv/linux/cris.empty/msgctl.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/msgctl.c	Fri Feb 11 20:43:37 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/msgctl.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/profil-counter.h sysdeps/unix/sysv/linux/cris/profil-counter.h
*** sysdeps/unix/sysv/linux/cris.empty/profil-counter.h	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/profil-counter.h	Wed Feb 28 01:08:30 2001
***************
*** 0 ****
--- 1,26 ----
+ /* 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 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 <signal.h>
+ 
+ static void
+ profil_counter (int signo, struct sigcontext *scp)
+ {
+   profil_count ((void *) scp->regs.irp);
+ }
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/readdir64.c sysdeps/unix/sysv/linux/cris/readdir64.c
*** sysdeps/unix/sysv/linux/cris.empty/readdir64.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/readdir64.c	Sat Aug 12 10:20:37 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/readdir64.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/readdir64_r.c sysdeps/unix/sysv/linux/cris/readdir64_r.c
*** sysdeps/unix/sysv/linux/cris.empty/readdir64_r.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/readdir64_r.c	Sat Aug 12 10:20:43 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/readdir64_r.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/register-dump.h sysdeps/unix/sysv/linux/cris/register-dump.h
*** sysdeps/unix/sysv/linux/cris.empty/register-dump.h	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/register-dump.h	Thu Mar  1 02:25:02 2001
***************
*** 0 ****
--- 1,117 ----
+ /* 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 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 <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)
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/scandir64.c sysdeps/unix/sysv/linux/cris/scandir64.c
*** sysdeps/unix/sysv/linux/cris.empty/scandir64.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/scandir64.c	Sat Aug 12 10:20:53 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/scandir64.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/semctl.c sysdeps/unix/sysv/linux/cris/semctl.c
*** sysdeps/unix/sysv/linux/cris.empty/semctl.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/semctl.c	Fri Feb 11 20:40:59 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/semctl.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setegid.c sysdeps/unix/sysv/linux/cris/setegid.c
*** sysdeps/unix/sysv/linux/cris.empty/setegid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setegid.c	Fri Oct 16 18:21:03 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setegid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/seteuid.c sysdeps/unix/sysv/linux/cris/seteuid.c
*** sysdeps/unix/sysv/linux/cris.empty/seteuid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/seteuid.c	Fri Oct 16 18:21:08 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/seteuid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setfsgid.c sysdeps/unix/sysv/linux/cris/setfsgid.c
*** sysdeps/unix/sysv/linux/cris.empty/setfsgid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setfsgid.c	Fri Oct 16 18:21:18 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setfsgid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setfsuid.c sysdeps/unix/sysv/linux/cris/setfsuid.c
*** sysdeps/unix/sysv/linux/cris.empty/setfsuid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setfsuid.c	Fri Oct 16 18:21:24 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setfsuid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setgid.c sysdeps/unix/sysv/linux/cris/setgid.c
*** sysdeps/unix/sysv/linux/cris.empty/setgid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setgid.c	Fri Oct 16 18:21:31 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setgid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setgroups.c sysdeps/unix/sysv/linux/cris/setgroups.c
*** sysdeps/unix/sysv/linux/cris.empty/setgroups.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setgroups.c	Fri Oct 16 18:21:38 1998
***************
*** 0 ****
--- 1,2 ----
+ /* We also have to rewrite the kernel gid_t to the user land type.  */
+ #include <sysdeps/unix/sysv/linux/i386/setgroups.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setregid.c sysdeps/unix/sysv/linux/cris/setregid.c
*** sysdeps/unix/sysv/linux/cris.empty/setregid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setregid.c	Wed Oct 21 17:14:29 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setregid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setresgid.c sysdeps/unix/sysv/linux/cris/setresgid.c
*** sysdeps/unix/sysv/linux/cris.empty/setresgid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setresgid.c	Fri Oct 16 18:21:45 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setresgid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setresuid.c sysdeps/unix/sysv/linux/cris/setresuid.c
*** sysdeps/unix/sysv/linux/cris.empty/setresuid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setresuid.c	Fri Oct 16 18:21:49 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setresuid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setreuid.c sysdeps/unix/sysv/linux/cris/setreuid.c
*** sysdeps/unix/sysv/linux/cris.empty/setreuid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setreuid.c	Wed Oct 21 17:14:34 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setreuid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setrlimit.c sysdeps/unix/sysv/linux/cris/setrlimit.c
*** sysdeps/unix/sysv/linux/cris.empty/setrlimit.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setrlimit.c	Wed Jan 12 11:23:30 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setrlimit.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/setuid.c sysdeps/unix/sysv/linux/cris/setuid.c
*** sysdeps/unix/sysv/linux/cris.empty/setuid.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/setuid.c	Fri Oct 16 18:21:54 1998
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/setuid.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/shmctl.c sysdeps/unix/sysv/linux/cris/shmctl.c
*** sysdeps/unix/sysv/linux/cris.empty/shmctl.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/shmctl.c	Fri Feb 11 20:41:04 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/shmctl.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/socket.S sysdeps/unix/sysv/linux/cris/socket.S
*** sysdeps/unix/sysv/linux/cris.empty/socket.S	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/socket.S	Sun Feb 25 20:12:55 2001
***************
*** 0 ****
--- 1,96 ----
+ /* 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 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>
+ #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)
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/sys/ucontext.h sysdeps/unix/sysv/linux/cris/sys/ucontext.h
*** sysdeps/unix/sysv/linux/cris.empty/sys/ucontext.h	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/sys/ucontext.h	Thu Mar  1 01:59:40 2001
***************
*** 0 ****
--- 1,56 ----
+ /* 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 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.  */
+ 
+ #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 */
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/syscall.S sysdeps/unix/sysv/linux/cris/syscall.S
*** sysdeps/unix/sysv/linux/cris.empty/syscall.S	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/syscall.S	Sun Feb 25 20:43:32 2001
***************
*** 0 ****
--- 1,40 ----
+ /* 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 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>
+ 
+ 	.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)
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/sysdep.S sysdeps/unix/sysv/linux/cris/sysdep.S
*** sysdeps/unix/sysv/linux/cris.empty/sysdep.S	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/sysdep.S	Sat Mar 17 23:06:34 2001
***************
*** 0 ****
--- 1,74 ----
+ /* 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 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>
+ 
+ /* Make space for the errno variable.  */
+ 
+ 	.globl	C_SYMBOL_NAME(errno)
+ 	.type	C_SYMBOL_NAME(errno),@object
+ 	.lcomm	C_SYMBOL_NAME(errno),4
+ 
+ weak_alias (errno, _errno)
+ 
+ /* 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)
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/sysdep.h sysdeps/unix/sysv/linux/cris/sysdep.h
*** sysdeps/unix/sysv/linux/cris.empty/sysdep.h	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/sysdep.h	Sat Mar 17 23:30:22 2001
***************
*** 0 ****
--- 1,214 ----
+ /* Assembler macros for CRIS.
+    Copyright (C) 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 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 <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 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;	\
+        }					\
+      __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 %5,$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 %6,$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__ */
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/versionsort64.c sysdeps/unix/sysv/linux/cris/versionsort64.c
*** sysdeps/unix/sysv/linux/cris.empty/versionsort64.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/versionsort64.c	Sat Oct 14 19:50:13 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/versionsort64.c>
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/vfork.S sysdeps/unix/sysv/linux/cris/vfork.S
*** sysdeps/unix/sysv/linux/cris.empty/vfork.S	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/vfork.S	Sun Feb 25 22:23:58 2001
***************
*** 0 ****
--- 1,26 ----
+ /* Copyright (C) 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 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>
+ 
+ PSEUDO (__vfork, vfork, 0)
+ 	Ret
+ 	nop
+ PSEUDO_END (__vfork)
+ 
+ weak_alias (__vfork, vfork)
diff -cpNr sysdeps/unix/sysv/linux/cris.empty/xstat.c sysdeps/unix/sysv/linux/cris/xstat.c
*** sysdeps/unix/sysv/linux/cris.empty/xstat.c	Thu Jan  1 01:00:00 1970
--- sysdeps/unix/sysv/linux/cris/xstat.c	Wed Jan 19 04:52:47 2000
***************
*** 0 ****
--- 1 ----
+ #include <sysdeps/unix/sysv/linux/i386/xstat.c>

brgds, H-P


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]