diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-01-20 02:49:49 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-01-20 02:49:49 +0000 |
commit | 0c5ecdc449ce581b56090758d5bb5673763ea909 (patch) | |
tree | 5136298d89a012eedeb1beb35bf0d414b8e5604b /sysdeps/unix/sysv/linux/alpha | |
parent | 5290baf06cbad096b1a085b2e20031b854e0226c (diff) | |
download | glibc-0c5ecdc449ce581b56090758d5bb5673763ea909.tar.gz glibc-0c5ecdc449ce581b56090758d5bb5673763ea909.tar.xz glibc-0c5ecdc449ce581b56090758d5bb5673763ea909.zip |
update from main arhive 970119 cvs/libc-970120
Mon Jan 20 03:02:50 1997 Ulrich Drepper <drepper@cygnus.com> * Make-dist: Update and reformat copyright. * Makeconfig: Likewise. * assert/Makefile: Likewise. * bare/Makefile: Likewise. * ctype/Makefile: Likewise. * dirent/Makefile: Likewise. * gmon/Makefile: Likewise. * gnulib/Makefile: Likewise. * grp/Makefile: Likewise. * hurd/Makefile: Likewise. * intl/Makefile: Likewise. * mach/Makefile: Likewise. * malloc/Makefile: Likewise. * manual/Makefile: Likewise. * math/Makefile: Likewise. * po/Makefile: Likewise. * pwd/Makefile: Likewise. * resource/Makefile: Likewise. * setjmp/Makefile: Likewise. * socket/Makefile: Likewise. * string/Makefile: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/alpha/Makefile: Likewise. * sysdeps/gnu/Makefile: Likewise. * sysdeps/m68k/fpu/switch/Makefile: Likewise. * sysdeps/m68k/fpu/switch/68881-sw.h: Likewise. * sysdeps/m68k/fpu/switch/switch.c: Likewise. * sysdeps/mach/Makefile: Likewise. * sysdeps/hurd/Makefile: Likewise. * sysdeps/sparc/Makefile: Likewise. * sysdeps/standalone/i960/nindy960/Makefile: Likewise. * sysdeps/standalone/m68k/m68020/mvme136/Makefile: Likewise. * sysdeps/unix/common/Makefile: Likewise. * sysdeps/unix/sysv/Makefile: Likewise. * sysdeps/unix/sysv/irix4/Makefile: Likewise. * sysdeps/unix/sysv/sco3.2/Makefile: Likewise. * sysdeps/unix/sysv/sysv4/Makefile: Likewise. * sysdeps/vax/Makefile: Likewise. * sysvipc/Makefile: Likewise. * wcsmbs/Makefile: Likewise. * wctype/Makefile: Likewise. * elf/rtld.c (dl_main): Objects in LD_PRELOAD environment variable are separated according to Sun docs by white space not colon. * locale/C-time.c (_nl_C_LC_TIME): Use empty string to initialize fields which are not defined for the C locale. * sysdeps/m68k/fpu/switch/Makefile: Don't use ansidecl.h in constructed files. * sysdeps/m68k/fpu/switch/68881-sw.h: Likewise. * sysdeps/m68k/fpu/switch/switch.c: Likewise. Sun Jan 19 19:43:31 1997 Andreas Jaeger <aj@arthur.pfalz.de> * time/strptime.c: Provide prototype for strptime_internal. Sun Jan 19 23:46:27 1997 Ulrich Drepper <drepper@cygnus.com> * glibcbug.in: We don't guarantee confidential handling. Set field to always contain `no'. Sun Jan 19 21:28:01 1997 Philippe De Muyter <phdm@info.ucl.ac.be> * intl/explodename.c: Include sys/types.h. * intl/l10nflist.c: Likewise. Sat Jan 18 22:15:26 1997 Richard Henderson <rth@tamu.edu> * config.make.in (install_root): New variable to make it easy to install glibc somewhere other than /. * shlib-versions: alpha-*-linux-* libc=6.1. Since sigset_t no longer fits in a register, we can't pass in the thread's initial mask so easily. Take this opportunity to simplify the clone implementation by only accepting a single void* argument. * sysdeps/unix/sysv/linux/alpha/clone.S: Only take one argument. * sysdeps/unix/sysv/linux/i386/clone.S: Likewise. * sysdeps/unix/sysv/linux/m68k/clone.S: Likewise. * sysdeps/unix/sysv/linux/sparc/clone.S: Likewise. * sysdeps/unix/sysv/linux/schedbits.h: Update clone prototypes. * sysdeps/unix/sysv/linux/alpha/ioctl-types.h: Remove. Default Linux version should be sufficient. * sysdeps/unix/sysv/linux/alpha/sigprocmask.c: The osf_sigprocmask system call wants the sigset dereferenced. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Add entries for __syscall_ustat and __syscall_xmknod. * sysdeps/unix/sysv/linux/alpha/xmknod.c: Include sys/sysmacros.h. * sysdeps/unix/sysv/linux/sigset.h: Use longs instead of ints. * sysdeps/unix/sysv/linux/tcsetattr.c: Fix pointer dereferences. * sysdeps/unix/sysv/linux/alpha/sigsuspend.c: Add comment about dependency to kernel type. * sysdeps/unix/sysv/linux/alpha/termbits.h: Correct comment.
Diffstat (limited to 'sysdeps/unix/sysv/linux/alpha')
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/clone.S | 54 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/ioctl-types.h | 123 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/sigprocmask.c | 65 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/sigsuspend.S | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/syscalls.list | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/termbits.h | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/xmknod.c | 1 |
7 files changed, 53 insertions, 198 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/clone.S b/sysdeps/unix/sysv/linux/alpha/clone.S index 03ecddc727..261bd81e57 100644 --- a/sysdeps/unix/sysv/linux/alpha/clone.S +++ b/sysdeps/unix/sysv/linux/alpha/clone.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Richard Henderson <rth@tamu.edu>, 1996. @@ -24,15 +24,11 @@ #define _ERRNO_H 1 #include <errnos.h> -/* int clone(int (*fn)(), void *child_stack, int flags, int nargs, ...) */ +/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */ .text ENTRY(__clone) - lda sp,-16(sp) - .frame sp,16,$26,0 - /* Save rest of argument registers for varargs-type work. */ - stq a4,0(sp) - stq a5,8(sp) + .frame sp,0,ra,0 #ifdef PROF .set noat lda AT, _mcount @@ -42,24 +38,13 @@ ENTRY(__clone) .prologue 1 /* Sanity check arguments. */ - sextl a3,a3 ldiq v0,EINVAL beq a0,$error /* no NULL function pointers */ beq a1,$error /* no NULL stack pointers */ - blt a3,$error /* no negative argument counts */ - - /* Allocate space on the new stack and copy args over */ - mov a3,t0 /* save nargs for thread_start */ - s8addq a3,sp,t1 -1: ldq t2,-8(t1) - subq t1,8,t1 - stq t2,-8(a1) - subq a3,1,a3 - subq a1,8,a1 - bne a3,1b /* Do the system call */ mov a0,pv /* get fn ptr out of the way */ + mov a3,a4 /* get fn arg out of the way */ mov a2,a0 ldiq v0,__NR_clone call_pal PAL_callsys @@ -68,23 +53,19 @@ ENTRY(__clone) beq v0,thread_start /* Successful return from the parent */ - lda sp,16(sp) ret /* Something bad happened -- no child created */ $error: br gp,1f 1: ldgp gp,0(gp) - lda sp,16(sp) jmp zero,__syscall_error END(__clone) /* Load up the arguments to the function. Put this block of code in its own function so that we can terminate the stack trace with our - debug info. - - At this point we have $t0=nargs, $pv=fn, $sp=&arg[0]. */ + debug info. */ .ent thread_start thread_start: @@ -92,28 +73,8 @@ thread_start: mov zero,fp .prologue 0 - /* Calculate address of jump into argument loading code */ - cmple t0,6,t2 /* no more than 6 args in registers */ - cmoveq t2,6,t0 - br v0,1f /* find address of arg0 */ -1: lda v0,$arg0-1b(v0) - s4addq t0,zero,t1 - subq v0,t1,v0 - jmp (v0) - - /* Load the integer register arguments */ - ldq a5,40(sp) - ldq a4,32(sp) - ldq a3,24(sp) - ldq a2,16(sp) - ldq a1,8(sp) - ldq a0,0(sp) -$arg0: - - /* Adjust stack to remove the arguments we just loaded */ - s8addq t0,sp,sp - /* Call the user's function */ + mov a4,a0 jsr ra,(pv) ldgp gp,0(ra) @@ -121,6 +82,9 @@ $arg0: mov v0,a0 jsr ra,_exit + /* Die horribly. */ + halt + .end thread_start weak_alias(__clone, clone) diff --git a/sysdeps/unix/sysv/linux/alpha/ioctl-types.h b/sysdeps/unix/sysv/linux/alpha/ioctl-types.h deleted file mode 100644 index c51310f4cd..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/ioctl-types.h +++ /dev/null @@ -1,123 +0,0 @@ -/* Structure types for pre-termios terminal ioctls. Linux version. - Copyright (C) 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 _IOCTL_TYPES_H -#define _IOCTL_TYPES_H 1 - -/* Get definition of constants for use with `ioctl'. */ -#include <asm/ioctl.h> - - -#define FIOCLEX _IO('f', 1) -#define FIONCLEX _IO('f', 2) -#define FIOASYNC _IOW('f', 125, int) -#define FIONBIO _IOW('f', 126, int) -#define FIONREAD _IOR('f', 127, int) -#define TIOCINQ FIONREAD - -#define TIOCGETP _IOR('t', 8, struct sgttyb) -#define TIOCSETP _IOW('t', 9, struct sgttyb) -#define TIOCSETN _IOW('t', 10, struct sgttyb) /* TIOCSETP wo flush */ - -#define TIOCSETC _IOW('t', 17, struct tchars) -#define TIOCGETC _IOR('t', 18, struct tchars) -#define TCGETS _IOR('t', 19, struct termios) -#define TCSETS _IOW('t', 20, struct termios) -#define TCSETSW _IOW('t', 21, struct termios) -#define TCSETSF _IOW('t', 22, struct termios) - -#define TCGETA _IOR('t', 23, struct termio) -#define TCSETA _IOW('t', 24, struct termio) -#define TCSETAW _IOW('t', 25, struct termio) -#define TCSETAF _IOW('t', 28, struct termio) - -#define TCSBRK _IO('t', 29) -#define TCXONC _IO('t', 30) -#define TCFLSH _IO('t', 31) - -#define TIOCSWINSZ _IOW('t', 103, struct winsize) -#define TIOCGWINSZ _IOR('t', 104, struct winsize) -#define TIOCSTART _IO('t', 110) /* start output, like ^Q */ -#define TIOCSTOP _IO('t', 111) /* stop output, like ^S */ -#define TIOCOUTQ _IOR('t', 115, int) /* output queue size */ - -#define TIOCGLTC _IOR('t', 116, struct ltchars) -#define TIOCSLTC _IOW('t', 117, struct ltchars) -#define TIOCSPGRP _IOW('t', 118, int) -#define TIOCGPGRP _IOR('t', 119, int) - -#define TIOCEXCL 0x540C -#define TIOCNXCL 0x540D -#define TIOCSCTTY 0x540E - -#define TIOCSTI 0x5412 -#define TIOCMGET 0x5415 -#define TIOCMBIS 0x5416 -#define TIOCMBIC 0x5417 -#define TIOCMSET 0x5418 -# define TIOCM_LE 0x001 -# define TIOCM_DTR 0x002 -# define TIOCM_RTS 0x004 -# define TIOCM_ST 0x008 -# define TIOCM_SR 0x010 -# define TIOCM_CTS 0x020 -# define TIOCM_CAR 0x040 -# define TIOCM_RNG 0x080 -# define TIOCM_DSR 0x100 -# define TIOCM_CD TIOCM_CAR -# define TIOCM_RI TIOCM_RNG - -#define TIOCGSOFTCAR 0x5419 -#define TIOCSSOFTCAR 0x541A -#define TIOCLINUX 0x541C -#define TIOCCONS 0x541D -#define TIOCGSERIAL 0x541E -#define TIOCSSERIAL 0x541F -#define TIOCPKT 0x5420 -# define TIOCPKT_DATA 0 -# define TIOCPKT_FLUSHREAD 1 -# define TIOCPKT_FLUSHWRITE 2 -# define TIOCPKT_STOP 4 -# define TIOCPKT_START 8 -# define TIOCPKT_NOSTOP 16 -# define TIOCPKT_DOSTOP 32 - - -#define TIOCNOTTY 0x5422 -#define TIOCSETD 0x5423 -#define TIOCGETD 0x5424 -#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ -#define TIOCTTYGSTRUCT 0x5426 /* For debugging only */ - -#define TIOCSERCONFIG 0x5453 -#define TIOCSERGWILD 0x5454 -#define TIOCSERSWILD 0x5455 -#define TIOCGLCKTRMIOS 0x5456 -#define TIOCSLCKTRMIOS 0x5457 -#define TIOCSERGSTRUCT 0x5458 /* For debugging only */ -#define TIOCSERGETLSR 0x5459 /* Get line status register */ - /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ -# define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ -#define TIOCSERGETMULTI 0x545A /* Get multiport config */ -#define TIOCSERSETMULTI 0x545B /* Set multiport config */ - -#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */ -#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ - -#endif /* ioctl-types.h */ diff --git a/sysdeps/unix/sysv/linux/alpha/sigprocmask.c b/sysdeps/unix/sysv/linux/alpha/sigprocmask.c index a1d5636fcb..7fb58f1d80 100644 --- a/sysdeps/unix/sysv/linux/alpha/sigprocmask.c +++ b/sysdeps/unix/sysv/linux/alpha/sigprocmask.c @@ -1,48 +1,59 @@ -/* Copyright (C) 1993, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. Contributed by David Mosberger (davidm@azstarnet.com). -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 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. + 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., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 <signal.h> +/* When there is kernel support for more than 64 signals, we'll have to + switch to a new system call convention here. */ + extern unsigned long __osf_sigprocmask (int how, unsigned long newmask); int __sigprocmask (int how, const sigset_t *set, sigset_t *oset) { - sigset_t setval; + unsigned long int setval; long result; - if (set) { - setval = *set; - } else { - sigemptyset(&setval); - how = SIG_BLOCK; /* ensure blocked mask doesn't get changed */ - } - result = __osf_sigprocmask(how, setval); - if (result == -1) { - /* if there are ever more than 63 signals, we need to recode this + if (set) + { + setval = set->__val[0]; + } + else + { + setval = 0; + how = SIG_BLOCK; /* ensure blocked mask doesn't get changed */ + } + result = __osf_sigprocmask (how, setval); + if (result == -1) + /* If there are ever more than 63 signals, we need to recode this in assembler since we wouldn't be able to distinguish a mask of all 1s from -1, but for now, we're doing just fine... */ return result; - } - if (oset) { - *oset = result; - } + + if (oset) + { + oset->__val[0] = result; + result = _SIGSET_NWORDS; + while (--result > 0) + oset->__val[result] = 0; + } return 0; } diff --git a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S b/sysdeps/unix/sysv/linux/alpha/sigsuspend.S index f476ed595f..3036b2f8ed 100644 --- a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S +++ b/sysdeps/unix/sysv/linux/alpha/sigsuspend.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David Mosberger <davidm@cs.arizona.edu>, 1995. @@ -18,7 +18,7 @@ Boston, MA 02111-1307, USA. */ /* sigsuspend is a special syscall since it needs to dereference the - sigset. */ + sigset. This will have to change when we have more than 64 signals. */ #include <sysdep.h> diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list index 49cc697489..cf5f439bc4 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscalls.list +++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list @@ -26,6 +26,8 @@ llseek EXTRA lseek 3 llseek # these are actually common with the x86: fstatfs - fstatfs 2 __fstatfs fstatfs statfs - statfs 2 __statfs statfs +sys_ustat ustat ustat 2 __syscall_ustat +sys_mknod xmknod mknod 3 __syscall_mknod # override select.S in parent directory: select - select 5 __select select diff --git a/sysdeps/unix/sysv/linux/alpha/termbits.h b/sysdeps/unix/sysv/linux/alpha/termbits.h index 6cb729f7f8..bcd3ff5d63 100644 --- a/sysdeps/unix/sysv/linux/alpha/termbits.h +++ b/sysdeps/unix/sysv/linux/alpha/termbits.h @@ -29,7 +29,7 @@ struct termios tcflag_t c_cflag; /* control mode flags */ tcflag_t c_lflag; /* local mode flags */ cc_t c_cc[NCCS]; /* control characters */ - cc_t c_line; /* line discipline (== c_cc[19]) */ + cc_t c_line; /* line discipline (== c_cc[33]) */ speed_t c_ispeed; /* input speed */ speed_t c_ospeed; /* output speed */ }; diff --git a/sysdeps/unix/sysv/linux/alpha/xmknod.c b/sysdeps/unix/sysv/linux/alpha/xmknod.c index f4cdd7135a..25de60ce63 100644 --- a/sysdeps/unix/sysv/linux/alpha/xmknod.c +++ b/sysdeps/unix/sysv/linux/alpha/xmknod.c @@ -20,6 +20,7 @@ #include <errno.h> #include <sys/types.h> #include <sys/stat.h> +#include <sys/sysmacros.h> extern int __syscall_mknod (const char *, unsigned int, unsigned int); |