diff options
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/Makefile | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/sigsuspend.S | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/start.S | 35 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/speed.c | 5 |
4 files changed, 33 insertions, 17 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile index 9e12a0daa2..beb8441b46 100644 --- a/sysdeps/unix/sysv/linux/alpha/Makefile +++ b/sysdeps/unix/sysv/linux/alpha/Makefile @@ -1,5 +1,5 @@ ifeq ($(subdir), misc) -headers += alpha/regdef.h +headers += alpha/ptrace.h alpha/regdef.h sysdep_routines := $(sysdep_routines) \ ieee_get_fp_control ieee_set_fp_control fpu_control setfpucw \ diff --git a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S b/sysdeps/unix/sysv/linux/alpha/sigsuspend.S index 29cba8d312..00c02de72b 100644 --- a/sysdeps/unix/sysv/linux/alpha/sigsuspend.S +++ b/sysdeps/unix/sysv/linux/alpha/sigsuspend.S @@ -17,12 +17,13 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* sigsuspend is a special syscall since it needs to dereference the -sigset. */ + sigset. */ #include <sysdep.h> .text -ENTRY(sigsuspend) + +LEAF(sigsuspend, 0) .prologue 0 ldq a0, 0(a0) @@ -33,7 +34,6 @@ ENTRY(sigsuspend) error: br gp, 1f 1: ldgp gp, 0(gp) - lda pv, syscall_error - jmp zero, (pv) + jmp zero, syscall_error .end sigsuspend diff --git a/sysdeps/unix/sysv/linux/alpha/start.S b/sysdeps/unix/sysv/linux/alpha/start.S index d1966a82ba..a7099f6840 100644 --- a/sysdeps/unix/sysv/linux/alpha/start.S +++ b/sysdeps/unix/sysv/linux/alpha/start.S @@ -18,11 +18,16 @@ Cambridge, MA 02139, USA. */ #include <sysdep.h> -.comm errno, 4 + .comm errno, 4 +#ifdef __ELF__ + .type errno, @object +#endif .text -ENTRY(__start) +LEAF(__start, 16) lda sp, -16(sp) + .prologue 0 + stq zero, 8(sp) /* terminate frame chain */ br t0, 1f @@ -33,8 +38,7 @@ ENTRY(__start) ldgp gp, 0(ra) /* clear out errno. */ - lda t0, errno - stl zero, 0(t0) + stl zero, (errno) ldl a0, 16(sp) /* get argc */ lda a1, 24(sp) /* get argv */ @@ -45,26 +49,32 @@ ENTRY(__start) addq a2, 0x8, a2 stq a2, 0(t0) -#ifndef HAVE_INITFINI mov a0, s0 mov a1, s1 mov a2, s2 - jsr ra, __libc_init +#ifdef HAVE_INITFINI + /* register the _fini sections to ensure destructors get run: */ + lda a0, _fini + jsr ra, atexit ldgp gp, 0(ra) - mov s0, a0 - mov s1, a1 - mov s2, a2 + /* Now run the _init section of the program itself. The _init + sections of shared libraries will be run by the dynamic linker. */ + jsr ra, _init + ldgp gp, 0(ra) /* initialize constructors: */ jsr ra, __main ldgp gp, 0(ra) +#else + jsr ra, __libc_init + ldgp gp, 0(ra) +#endif mov s0, a0 mov s1, a1 mov s2, a2 -#endif jsr ra, main ldgp gp, 0(ra) @@ -90,4 +100,9 @@ ENTRY(__start) __data_start: .long 0 +#ifdef __ELF__ + .size __data_start, 4 + .type __data_start, @object +#endif + weak_alias(__data_start, data_start) diff --git a/sysdeps/unix/sysv/linux/speed.c b/sysdeps/unix/sysv/linux/speed.c index 84811deba6..d229f766f9 100644 --- a/sysdeps/unix/sysv/linux/speed.c +++ b/sysdeps/unix/sysv/linux/speed.c @@ -1,5 +1,5 @@ /* `struct termios' speed frobnication functions. Linux version. -Copyright (C) 1991, 1992, 1993, 1995 Free Software Foundation, Inc. +Copyright (C) 1991, 1992, 1993, 1995, 1996 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 @@ -43,6 +43,7 @@ static const speed_t speeds[] = 57600, 115200, 230400, + 460800, }; @@ -68,7 +69,7 @@ strong_alias (cfgetospeed, cfgetispeed); /* Set the output baud rate stored in *TERMIOS_P to SPEED. */ int -cfsetospeed (termios_p, speed) +cfsetospeed (termios_p, speed) struct termios *termios_p; speed_t speed; { |