diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-03-31 22:56:24 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-03-31 22:56:24 +0000 |
commit | 5929563ff20245bbaa1b3ca2f4bfcee623ac6fb5 (patch) | |
tree | 15b1ff0a40462018402078788148c0c99d188429 /sysdeps/unix/sysv/linux/powerpc | |
parent | 3075e0e37c0e7cc2e6eb518c409e0769d058ed4b (diff) | |
download | glibc-5929563ff20245bbaa1b3ca2f4bfcee623ac6fb5.tar.gz glibc-5929563ff20245bbaa1b3ca2f4bfcee623ac6fb5.tar.xz glibc-5929563ff20245bbaa1b3ca2f4bfcee623ac6fb5.zip |
Update. cvs/libc-ud-970331
1997-04-01 00:37 Ulrich Drepper <drepper@cygnus.com> * math/Makefile: Prevent inlining for test-{float,double,longdouble}. * math/libm-test.c (initialize): Make strings unique and force values to memory. * posix/regex.c: Debug debugging code. * sysdeps/i386/asm-syntax.h: Define `L' macro to emit correct syntax for local label. * sysdeps/i386/add_n.S: Use correct local label syntax for the binary format. * sysdeps/i386/addmul_1.S: Likewise. * sysdeps/i386/lshift.S: Likewise. * sysdeps/i386/memchr.S: Likewise. * sysdeps/i386/memset.S: Likewise. * sysdeps/i386/mul_1.S: Likewise. * sysdeps/i386/rshift.S: Likewise. * sysdeps/i386/stpcpy.S: Likewise. * sysdeps/i386/stpncpy.S: Likewise. * sysdeps/i386/strchr.S: Likewise. * sysdeps/i386/strcspn.S: Likewise. * sysdeps/i386/strlen.S: Likewise. * sysdeps/i386/strpbrk.S: Likewise. * sysdeps/i386/strrchr.S: Likewise. * sysdeps/i386/strspn.S: Likewise. * sysdeps/i386/strtok.S: Likewise. * sysdeps/i386/sub_n.S: Likewise. * sysdeps/i386/submul_1.S: Likewise. * sysdeps/i386/i486/strcat.S: Likewise. * sysdeps/i386/i486/strlen.S: Likewise. * sysdeps/i386/i586/add_n.S: Likewise. * sysdeps/i386/i586/addmul_1.S: Likewise. * sysdeps/i386/i586/lshift.S: Likewise. * sysdeps/i386/i586/memset.S: Likewise. * sysdeps/i386/i586/mul_1.S: Likewise. * sysdeps/i386/i586/rshift.S: Likewise. * sysdeps/i386/i586/strchr.S: Likewise. * sysdeps/i386/i586/strlen.S: Likewise. * sysdeps/i386/i586/sub_n.S: Likewise. * sysdeps/i386/i586/submul_1.S: Likewise. * sysdeps/stub/s_log2l.c: Correct function name. * time/africa: Updated from ADO tzdata1997e. * time/aantarctica: Likewise. * time/asia: Likewise. * time/australia: Likewise. * time/europe: Likewise. * time/northamerica: Likewise. * time/southamerica: Likewise. * time/private.h: Updated from ADO tzcode1997d. * time/scheck.c: Likewise. 1997-03-31 12:42 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/powerpc/Dist: Add kernel_*.h files. 1997-03-23 01:41 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/powerpc/strlen.s: Rewrote for more speed. * string/tst-strlen.c: Also test various string alignments. 1997-03-19 06:11 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/unix/sysv/linux/powerpc/statbuf.h: Removed. * sysdeps/unix/sysv/linux/powerpc/kernel_stat.h: Added. * sysdeps/powerpc/dl-machine.h (ELF_PREFERRED_ADDRESS): Assume program base address is 0x01800000 if we can't otherwise tell what it is. (elf_machine_rela): Replace `assertion failed' with real error messages. * sysdeps/powerpc/dl-machine.h: More comments, more GNU indenting. Put in extra parentheses to make explicit the relative precedence of + and >>. * sysdeps/powerpc/bsd-setjmp.S: Add `__setjmp' symbol so the tests pass. * sysdeps/powerpc/clone.S: Rewrite. Probably still doesn't work. * sysdeps/unix/sysv/linux/powerpc/sys/sysdep.h: Use .section "text" instead of .text. 1997-03-31 02:28 Ulrich Drepper <drepper@cygnus.com> * misc/tst-tsearch.c: Don't write to stderr, write to stdout instead. * inet/inet_ntoa.c (inet_ntoa): Complete rewrite. Now uses thread-specific memory in multi-threaded programs. * sysdeps/stub/s_exp2.c: New file. Stub version for exp2 function. * sysdeps/stub/s_exp2f.c: New file. * sysdeps/stub/s_exp2l.c: New file. Reported by a sun <asun@zoology.washington.edu>. * sysdeps/unix/sysv/linux/netatalk/atalk.h: Rename to... * sysdeps/unix/sysv/linux/netatalk/at.h: ...this. Suggested by a sun <asun@zoology.washington.edu>. 1997-03-30 14:53 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/netinet/ip_icmp.h: Add former contents of <netinet/icmp.h>. Patch by a sun <asun@zoology.washington.edu>. * sysdeps/powerpc/strlen.S: Added.
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc')
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/Dist | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/clone.S | 48 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/kernel_stat.h | 45 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/statbuf.h | 79 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h | 43 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/sysdep.h | 3 |
6 files changed, 123 insertions, 98 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/Dist b/sysdeps/unix/sysv/linux/powerpc/Dist index 3df65c325c..c8c265c474 100644 --- a/sysdeps/unix/sysv/linux/powerpc/Dist +++ b/sysdeps/unix/sysv/linux/powerpc/Dist @@ -2,3 +2,6 @@ clone.S ioctl-types.h termbits.h termios.h +kernel_stat.h +kernel_termios.h +sys/kernel_termios.h diff --git a/sysdeps/unix/sysv/linux/powerpc/clone.S b/sysdeps/unix/sysv/linux/powerpc/clone.S index 0afd0717f4..d255abfe0f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/clone.S +++ b/sysdeps/unix/sysv/linux/powerpc/clone.S @@ -27,22 +27,30 @@ /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */ -ENTRY(clone) +ENTRY(__clone) /* Set up stack frame, save registers. */ - stwu 1,-20(1) + stwu 1,-32(1) stw 31,16(1) + stw 30,20(1) - /* Check for child_stack == NULL, fn == NULL. */ - mr. 31,4 + /* Check for child_stack == NULL || fn == NULL. */ + cmpwi 0,4,0 cmpwi 1,3,0 cror 2+0*4,2+0*4,2+1*4 beq- 0,badargs - /* Save 'fn' and its argument on the new stack. */ - stw 3,0(4) - stw 6,4(4) + /* Set up stack frame for child. */ + addi 4,4,-16 + clrrwi 4,4,4 + li 0,0 + stw 0,0(4) - /* 'flags' argument is (only) parameter to clone syscall. */ + /* Save new stack, fn, args across syscall. */ + mr 30,3 /* Function in r30. */ + mr 31,6 /* Arguments in r31. */ + + /* 'flags' argument is first parameter to clone syscall. (The other + argument is the stack pointer, already in r4.) */ mr 3,5 /* Do the call. */ @@ -51,22 +59,22 @@ ENTRY(clone) beq child /* Parent. Restore registers & return. */ - lwz 31,20(1) - addi 1,1,20 + lwz 31,16(1) + lwz 30,20(1) + addi 1,1,32 blr child: - /* Get address of procedure to call. */ - lwz 0,0(31) - /* Set up argument register. */ - lwz 3,4(31) - mtlr 0 - /* Switch to new stack. */ - mr 1,31 /* Call procedure. */ + mtlr 30 + mr 3,31 blrl /* Call _exit with result from procedure. */ - DO_CALL (SYS_ify (exit)) +#ifdef PIC + b _exit@plt +#else + b _exit +#endif badargs: li 3,-EINVAL @@ -76,3 +84,7 @@ error: #else b __syscall_error #endif + +PSEUDO_END (__clone) + +weak_alias (__clone, clone) diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel_stat.h b/sysdeps/unix/sysv/linux/powerpc/kernel_stat.h new file mode 100644 index 0000000000..c07e182748 --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/kernel_stat.h @@ -0,0 +1,45 @@ +/* Definition of `struct stat' used in the kernel. + Copyright (C) 1997 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. */ + +struct kernel_stat + { + unsigned int st_dev; + unsigned int st_ino; + unsigned int st_mode; + unsigned short st_nlink; + unsigned int st_uid; + unsigned int st_gid; + unsigned int st_rdev; + unsigned long int st_size; + unsigned long int st_blksize; + unsigned long int st_blocks; + unsigned long int st_atime; + unsigned long int __unused1; +#define _HAVE___UNUSED1 + unsigned long int st_mtime; + unsigned long int __unused2; +#define _HAVE___UNUSED2 + unsigned long int st_ctime; + unsigned long int __unused3; +#define _HAVE___UNUSED3 + unsigned long int __unused4; +#define _HAVE___UNUSED4 + unsigned long int __unused5; +#define _HAVE___UNUSED5 + }; diff --git a/sysdeps/unix/sysv/linux/powerpc/statbuf.h b/sysdeps/unix/sysv/linux/powerpc/statbuf.h deleted file mode 100644 index 5be5736931..0000000000 --- a/sysdeps/unix/sysv/linux/powerpc/statbuf.h +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (C) 1992, 1995, 1996, 1997 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 _STATBUF_H -#define _STATBUF_H 1 - -/* Versions of the `struct stat' data structure. */ -#define _STAT_VER_LINUX 1 -#define _STAT_VER_SVR4 2 -#define _STAT_VER _STAT_VER_LINUX /* The one defined below. */ - -/* Versions of the `xmknod' interface. */ -#define _MKNOD_VER_LINUX 1 -#define _MKNOD_VER_SVR4 2 -#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */ - - -struct stat - { - unsigned int st_dev; /* Device. */ - unsigned int st_ino; /* File serial number. */ - unsigned int st_mode; /* File mode. */ - unsigned short int st_nlink; /* Link count. */ - unsigned int st_uid; /* User ID of the file's owner. */ - unsigned int st_gid; /* Group ID of the file's group.*/ - unsigned int st_rdev; /* Device number, if device. */ - long int st_size; /* Size of file, in bytes. */ - unsigned long int st_blksize; /* Optimal block size for I/O. */ -#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */ - - unsigned long int st_blocks; /* Number of 512-byte blocks allocated. */ - unsigned long int st_atime; /* Time of last access. */ - unsigned long int __unused1; - unsigned long int st_mtime; /* Time of last modification. */ - unsigned long int __unused2; - unsigned long int st_ctime; /* Time of last status change. */ - unsigned long int __unused3; - unsigned long int __unused4; - unsigned long int __unused5; - }; - -/* Encoding of the file mode. */ - -#define __S_IFMT 0170000 /* These bits determine file type. */ - -/* File types. */ -#define __S_IFDIR 0040000 /* Directory. */ -#define __S_IFCHR 0020000 /* Character device. */ -#define __S_IFBLK 0060000 /* Block device. */ -#define __S_IFREG 0100000 /* Regular file. */ -#define __S_IFIFO 0010000 /* FIFO. */ -#define __S_IFLNK 0120000 /* Symbolic link. */ -#define __S_IFSOCK 0140000 /* Socket. */ - -/* Protection bits. */ - -#define __S_ISUID 04000 /* Set user ID on execution. */ -#define __S_ISGID 02000 /* Set group ID on execution. */ -#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ -#define __S_IREAD 0400 /* Read by owner. */ -#define __S_IWRITE 0200 /* Write by owner. */ -#define __S_IEXEC 0100 /* Execute by owner. */ - -#endif /* statbuf.h */ diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h b/sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h new file mode 100644 index 0000000000..c5e9e2684a --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h @@ -0,0 +1,43 @@ +/* Copyright (C) 1997 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_KERNEL_TERMIOS_H +#define _SYS_KERNEL_TERMIOS_H 1 +/* The following corresponds to the values from the Linux 2.0.28 kernel. */ + +/* We need the definition of tcflag_t, cc_t, and speed_t. */ +#include <termbits.h> + +#define __KERNEL_NCCS 19 + +struct __kernel_termios + { + tcflag_t c_iflag; /* input mode flags */ + tcflag_t c_oflag; /* output mode flags */ + tcflag_t c_cflag; /* control mode flags */ + tcflag_t c_lflag; /* local mode flags */ + cc_t c_cc[__KERNEL_NCCS]; /* control characters */ + cc_t c_line; /* line discipline */ + int c_ispeed; /* input speed */ + int c_ospeed; /* output speed */ + }; + +#define _HAVE_C_ISPEED 1 +#define _HAVE_C_OSPEED 1 + +#endif /* sys/kernel_termios.h */ diff --git a/sysdeps/unix/sysv/linux/powerpc/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/sysdep.h index d6d33bf7af..6cad9ae087 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sysdep.h +++ b/sysdeps/unix/sysv/linux/powerpc/sysdep.h @@ -43,7 +43,7 @@ #ifdef PIC #define PSEUDO(name, syscall_name, args) \ - .text; \ + .section ".text"; \ ENTRY (name) \ DO_CALL (SYS_ify (syscall_name)); \ bnslr; \ @@ -56,6 +56,7 @@ bnslr; \ b __syscall_error #endif + #define ret /* Nothing (should be 'blr', but never reached). */ #endif /* ASSEMBLER */ |