mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-06 14:10:30 +08:00
entered into RCS
This commit is contained in:
parent
d871481858
commit
72d531d675
@ -0,0 +1,27 @@
|
||||
#ifdef __STDC__
|
||||
#define FUNC__(name) \
|
||||
.align 3; \
|
||||
.globl __##name; \
|
||||
.ent __##name; \
|
||||
__##name: \
|
||||
lda sp, -16(sp); \
|
||||
.frame sp, 16, t9, 0; \
|
||||
.prologue 0
|
||||
#else
|
||||
#define FUNC__(name) \
|
||||
.align 3; \
|
||||
.globl __/**/name; \
|
||||
.ent __/**/name,0; \
|
||||
__/**/name: \
|
||||
lda sp, -16(sp); \
|
||||
.frame sp, 16, t9, 0; \
|
||||
.prologue 0
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
#define NAME__(name) \
|
||||
__##name
|
||||
#else
|
||||
#define NAME__(name) \
|
||||
__/**/name
|
||||
#endif
|
@ -1 +1,4 @@
|
||||
setjmp_aux.c
|
||||
DEFS.h
|
||||
divrem.m4 macros.m4
|
||||
divl.S divlu.S divq.S divqu.S reml.S remlu.S remq.S remqu.S
|
||||
|
@ -1,3 +1,91 @@
|
||||
# Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
# Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
# 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., 675 Mass Ave,
|
||||
# Cambridge, MA 02139, USA.
|
||||
|
||||
ifeq ($(subdir),setjmp)
|
||||
sysdep_routines := $(sysdep_routines) setjmp_aux
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),gnulib)
|
||||
routines = $(divrem)
|
||||
endif # gnulib
|
||||
|
||||
# We distribute these files, even though they are generated,
|
||||
# so as to avoid the need for a functioning m4 to build the library.
|
||||
divrem := divl divlu divq divqu reml remlu remq remqu
|
||||
|
||||
+divrem-NAME-divl := divl
|
||||
+divrem-NAME-divlu := divlu
|
||||
+divrem-NAME-divq := divq
|
||||
+divrem-NAME-divqu := divqu
|
||||
+divrem-NAME-reml := reml
|
||||
+divrem-NAME-remlu := remlu
|
||||
+divrem-NAME-remq := remq
|
||||
+divrem-NAME-remqu := remqu
|
||||
+divrem-NAME = $(+divrem-NAME-$(basename $(notdir $@)))
|
||||
|
||||
+divrem-OP-divl := divl
|
||||
+divrem-OP-divlu := divlu
|
||||
+divrem-OP-divq := divq
|
||||
+divrem-OP-divqu := divqu
|
||||
+divrem-OP-reml := reml
|
||||
+divrem-OP-remlu := remlu
|
||||
+divrem-OP-remq := remq
|
||||
+divrem-OP-remqu := remqu
|
||||
+divrem-BASEOP-divl := div
|
||||
+divrem-BASEOP-divlu := div
|
||||
+divrem-BASEOP-divq := div
|
||||
+divrem-BASEOP-divqu := div
|
||||
+divrem-BASEOP-reml := rem
|
||||
+divrem-BASEOP-remlu := rem
|
||||
+divrem-BASEOP-remq := rem
|
||||
+divrem-BASEOP-remqu := rem
|
||||
+divrem-S-divl := true
|
||||
+divrem-S-divlu := false
|
||||
+divrem-S-divq := true
|
||||
+divrem-S-divqu := false
|
||||
+divrem-S-reml := true
|
||||
+divrem-S-remlu := false
|
||||
+divrem-S-remq := true
|
||||
+divrem-S-remqu := false
|
||||
+divrem-SIZE-divl := l
|
||||
+divrem-SIZE-divlu := l
|
||||
+divrem-SIZE-divq := q
|
||||
+divrem-SIZE-divqu := q
|
||||
+divrem-SIZE-reml := l
|
||||
+divrem-SIZE-remlu := l
|
||||
+divrem-SIZE-remq := q
|
||||
+divrem-SIZE-remqu := q
|
||||
+divrem-MODE-divl := l
|
||||
+divrem-MODE-divlu := lu
|
||||
+divrem-MODE-divq := q
|
||||
+divrem-MODE-divqu := qu
|
||||
+divrem-MODE-reml := l
|
||||
+divrem-MODE-remlu := lu
|
||||
+divrem-MODE-remq := q
|
||||
+divrem-MODE-remqu := qu
|
||||
|
||||
$(divrem:%=$(sysdep_dir)/alpha/%.S): $(sysdep_dir)/alpha/divrem.m4 $(sysdep_dir)/alpha/DEFS.h $(sysdep_dir)/alpha/macros.m4
|
||||
(echo "define(OP,\`$(+divrem-NAME)')\
|
||||
define(BASEOP,\`$(+divrem-BASEOP-$(+divrem-NAME))')\
|
||||
define(MODE,\`$(+divrem-MODE-$(+divrem-NAME))')\
|
||||
define(SIZE,\`$(+divrem-SIZE-$(+divrem-NAME))')\
|
||||
define(SIGNED,\`$(+divrem-S-$(+divrem-NAME))')\
|
||||
define(SYSDEP_DIR, \`$(sysdep_dir)/alpha')\
|
||||
/* This file is generated from divrem.m4; DO NOT EDIT! */"; \
|
||||
cat $<) | $(M4) > $@-tmp
|
||||
mv $@-tmp $@
|
||||
|
@ -18,7 +18,7 @@ Cambridge, MA 02139, USA. */
|
||||
|
||||
#if defined (__GNUC__) && !defined (__NO_MATH_INLINES)
|
||||
|
||||
extern __inline double
|
||||
extern __inline __CONSTVALUE double
|
||||
__copysign (double __x, double __y)
|
||||
{
|
||||
__asm ("cpys %1, %2, %0" : "=f" (__x) : "f" (__y), "f" (__x));
|
||||
|
@ -16,12 +16,14 @@ 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. */
|
||||
|
||||
#define __NO_MATH_INLINES
|
||||
|
||||
#include <math.h>
|
||||
|
||||
/* Return X with its sign changed to Y's. */
|
||||
double
|
||||
__copysign (double x, double y)
|
||||
__inline __CONSTVALUE double
|
||||
__copysign (double __x, double __y)
|
||||
{
|
||||
asm ("cpys %1, %2, %0" : "=f" (x) : "f" (y), "f" (x));
|
||||
return x;
|
||||
__asm ("cpys %1, %2, %0" : "=f" (__x) : "f" (__y), "f" (__x));
|
||||
return __x;
|
||||
}
|
||||
|
48
sysdeps/alpha/divrem.m4
Normal file
48
sysdeps/alpha/divrem.m4
Normal file
@ -0,0 +1,48 @@
|
||||
/* For each N divided by D, we do:
|
||||
result = (double) N / (double) D
|
||||
Then, for each N mod D, we do:
|
||||
result = N - (D * divMODE (N, D))
|
||||
|
||||
FIXME:
|
||||
The q and qu versions won't deal with operands > 50 bits. We also
|
||||
don't check for divide by zero. */
|
||||
|
||||
#include "DEFS.h"
|
||||
#if 0
|
||||
/* We do not handle div by zero yet. */
|
||||
#include <machine/pal.h>
|
||||
#endif
|
||||
#include <regdef.h>
|
||||
|
||||
define(path, `SYSDEP_DIR/macros.m4')dnl
|
||||
include(path)
|
||||
|
||||
FUNC__(OP)
|
||||
! First set up the dividend.
|
||||
EXTEND(t10)
|
||||
stq t10,0(sp)
|
||||
ldt $f10,0(sp)
|
||||
cvtqt $f10,$f10
|
||||
ADJQU($f10)
|
||||
|
||||
! Then set up the divisor.
|
||||
EXTEND(t11)
|
||||
stq t11,0(sp)
|
||||
ldt $f1,0(sp)
|
||||
cvtqt $f1,$f1
|
||||
ADJQU($f1)
|
||||
|
||||
! Do the division.
|
||||
divt $f10,$f1,$f10
|
||||
cvttqc $f10,$f10
|
||||
|
||||
! Put the result in t12.
|
||||
stt $f10,0(sp)
|
||||
ldq t12,0(sp)
|
||||
FULLEXTEND(t12)
|
||||
|
||||
DOREM
|
||||
|
||||
lda sp,16(sp)
|
||||
ret zero,(t9),1
|
||||
.end NAME__(OP)
|
@ -16,11 +16,13 @@ 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. */
|
||||
|
||||
#define __NO_MATH_INLINES
|
||||
|
||||
#include <math.h>
|
||||
|
||||
double
|
||||
fabs (double x)
|
||||
__inline double
|
||||
fabs (double __x)
|
||||
{
|
||||
asm ("cpys $f31, %1, %0" : "=f" (x) : "f" (x));
|
||||
return x;
|
||||
__asm ("cpys $f31, %1, %0" : "=f" (__x) : "f" (__x));
|
||||
return __x;
|
||||
}
|
||||
|
@ -0,0 +1,34 @@
|
||||
dnl NOTE: The $1 below is the argument to EXTEND, not register $1.
|
||||
define(EXTEND,
|
||||
`ifelse(SIZE, `l',
|
||||
`ifelse(SIGNED, `true',
|
||||
` sextl $1, $1
|
||||
',dnl
|
||||
` zapnot $1, 0xf, $1
|
||||
')')')dnl
|
||||
|
||||
dnl FULLEXTEND -- extend the register named in the first argument
|
||||
define(FULLEXTEND,
|
||||
`ifelse(SIZE, `l',
|
||||
` sextl $1, $1
|
||||
')')dnl
|
||||
|
||||
dnl This is used by divqu.
|
||||
define(ADJQU,
|
||||
`ifelse(MODE, `qu',
|
||||
` ldit $f26, 18446744073709551616.0
|
||||
addt $f26, $1, $f26
|
||||
fcmovlt $1, $f26, $1
|
||||
')')dnl
|
||||
|
||||
define(DOREM,
|
||||
`ifelse(BASEOP, `rem',
|
||||
` ! Compute the remainder.
|
||||
ifelse(SIZE, `l',
|
||||
` mull t11, t12, t11
|
||||
subl t10, t11, t12
|
||||
',dnl Note mulq/subq were only really used in remq, but we will find out
|
||||
dnl if assuming they apply to remqu as well is wrong or not.
|
||||
` mulq t11, t12, t11
|
||||
subq t10, t11, t12
|
||||
')')')dnl
|
@ -25,6 +25,7 @@ memchr (const void *s, int c, size_t n)
|
||||
const char *char_ptr;
|
||||
const unsigned long int *longword_ptr;
|
||||
unsigned long int charmask;
|
||||
size_t x;
|
||||
|
||||
c = (unsigned char) c;
|
||||
|
||||
@ -35,18 +36,29 @@ memchr (const void *s, int c, size_t n)
|
||||
if (*char_ptr == c)
|
||||
return (void *) char_ptr;
|
||||
|
||||
if (n == (size_t)0)
|
||||
return NULL;
|
||||
|
||||
x = n;
|
||||
|
||||
longword_ptr = (unsigned long int *) char_ptr;
|
||||
|
||||
/* Set up a longword, each of whose bytes is C. */
|
||||
charmask = c | (c << 8);
|
||||
charmask |= charmask << 16;
|
||||
charmask |= charmask << 32;
|
||||
charmask |= charmask << 64;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
const unsigned long int longword = *longword_ptr++;
|
||||
int ge, le;
|
||||
|
||||
if (x < 4)
|
||||
x = (size_t) 0;
|
||||
else
|
||||
x -= 4;
|
||||
|
||||
/* Set bits in GE if bytes in CHARMASK are >= bytes in LONGWORD. */
|
||||
asm ("cmpbge %1, %2, %0" : "=r" (ge) : "r" (charmask), "r" (longword));
|
||||
|
||||
@ -58,15 +70,18 @@ memchr (const void *s, int c, size_t n)
|
||||
{
|
||||
/* Which of the bytes was the C? */
|
||||
|
||||
char *cp = (char *) (longword_ptr - 1);
|
||||
unsigned char *cp = (unsigned char *) (longword_ptr - 1);
|
||||
int i;
|
||||
|
||||
if (cp[0] == c)
|
||||
return cp;
|
||||
if (cp[1] == c)
|
||||
return &cp[1];
|
||||
if (cp[2] == c)
|
||||
return &cp[2];
|
||||
return &cp[3];
|
||||
for (i = 0; i < 6; i++)
|
||||
if (cp[i] == c)
|
||||
return &cp[i];
|
||||
return &cp[7];
|
||||
}
|
||||
|
||||
if (x == (size_t)0)
|
||||
break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
60
sysdeps/alpha/remqu.S
Normal file
60
sysdeps/alpha/remqu.S
Normal file
@ -0,0 +1,60 @@
|
||||
/* This file is generated from divrem.m4; DO NOT EDIT! */
|
||||
/* For each N divided by D, we do:
|
||||
result = (double) N / (double) D
|
||||
Then, for each N mod D, we do:
|
||||
result = N - (D * divMODE (N, D))
|
||||
|
||||
FIXME:
|
||||
The q and qu versions won't deal with operands > 50 bits. We also
|
||||
don't check for divide by zero. */
|
||||
|
||||
#include "DEFS.h"
|
||||
#if 0
|
||||
/* We do not handle div by zero yet. */
|
||||
#include <machine/pal.h>
|
||||
#endif
|
||||
#include <regdef.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
FUNC__(remqu)
|
||||
! First set up the dividend.
|
||||
|
||||
stq t10,0(sp)
|
||||
ldt $f10,0(sp)
|
||||
cvtqt $f10,$f10
|
||||
ldit $f26, 18446744073709551616.0
|
||||
addt $f26, $f10, $f26
|
||||
fcmovlt $f10, $f26, $f10
|
||||
|
||||
|
||||
! Then set up the divisor.
|
||||
|
||||
stq t11,0(sp)
|
||||
ldt $f1,0(sp)
|
||||
cvtqt $f1,$f1
|
||||
ldit $f26, 18446744073709551616.0
|
||||
addt $f26, $f1, $f26
|
||||
fcmovlt $f1, $f26, $f1
|
||||
|
||||
|
||||
! Do the division.
|
||||
divt $f10,$f1,$f10
|
||||
cvttqc $f10,$f10
|
||||
|
||||
! Put the result in t12.
|
||||
stt $f10,0(sp)
|
||||
ldq t12,0(sp)
|
||||
|
||||
|
||||
! Compute the remainder.
|
||||
mulq t11, t12, t11
|
||||
subq t10, t11, t12
|
||||
|
||||
|
||||
lda sp,16(sp)
|
||||
ret zero,(t9),1
|
||||
.end NAME__(remqu)
|
@ -26,3 +26,4 @@ ENTRY (__setjmp)
|
||||
bis $15, $15, $17 /* Pass FP as 2nd arg. */
|
||||
bis $30, $30, $18 /* Pass SP as 3nd arg. */
|
||||
jmp $31, ($27), __setjmp_aux /* Call __setjmp_aux. */
|
||||
.end __setjmp
|
||||
|
@ -32,10 +32,10 @@ strchr (const char *str, int c)
|
||||
/* Handle the first few characters by reading one character at a time.
|
||||
Do this until STR is aligned on a 8-byte border. */
|
||||
for (char_ptr = str; ((unsigned long int) char_ptr & 7) != 0; ++char_ptr)
|
||||
if (*char_ptr == '\0')
|
||||
return NULL;
|
||||
else if (*char_ptr == c)
|
||||
if (*char_ptr == c)
|
||||
return (char *) char_ptr;
|
||||
else if (*char_ptr == '\0')
|
||||
return NULL;
|
||||
|
||||
longword_ptr = (unsigned long int *) char_ptr;
|
||||
|
||||
@ -43,6 +43,7 @@ strchr (const char *str, int c)
|
||||
charmask = c | (c << 8);
|
||||
charmask |= charmask << 16;
|
||||
charmask |= charmask << 32;
|
||||
charmask |= charmask << 64;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
@ -64,21 +65,15 @@ strchr (const char *str, int c)
|
||||
/* Which of the bytes was the C? */
|
||||
|
||||
char *cp = (char *) (longword_ptr - 1);
|
||||
int i;
|
||||
|
||||
if (cp[0] == c)
|
||||
return cp;
|
||||
if (cp[0] == 0)
|
||||
return NULL;
|
||||
if (cp[1] == c)
|
||||
return &cp[1];
|
||||
if (cp[1] == 0)
|
||||
return NULL;
|
||||
if (cp[2] == c)
|
||||
return &cp[2];
|
||||
if (cp[2] == 0)
|
||||
return NULL;
|
||||
if (cp[3] == c)
|
||||
return &cp[3];
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (cp[i] == c)
|
||||
return &cp[i];
|
||||
if (cp[i] == 0)
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
@ -43,14 +43,12 @@ strlen (const char *str)
|
||||
/* Which of the bytes was the zero? */
|
||||
|
||||
const char *cp = (const char *) (longword_ptr - 1);
|
||||
int i;
|
||||
|
||||
if (cp[0] == 0)
|
||||
return cp - str;
|
||||
if (cp[1] == 0)
|
||||
return cp - str + 1;
|
||||
if (cp[2] == 0)
|
||||
return cp - str + 2;
|
||||
return cp - str + 3;
|
||||
for (i = 0; i < 6; i++)
|
||||
if (cp[i] == 0)
|
||||
return cp - str + i;
|
||||
return cp - str + 7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,51 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#ifndef SYS_brk
|
||||
#define SYS_brk 17
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GNU_LD
|
||||
#define __end end
|
||||
#endif
|
||||
|
||||
.data
|
||||
.extern __end,8
|
||||
.globl __curbrk
|
||||
__curbrk:
|
||||
.quad __end
|
||||
|
||||
.text
|
||||
ENTRY(__brk)
|
||||
! FIXME We do not check for asking for less than a page yet.
|
||||
ldiq v0, SYS_brk
|
||||
call_pal PAL_callsys
|
||||
bne a3, error
|
||||
|
||||
/* Update __curbrk and exit cleanly. */
|
||||
! ldgp gp, 0(t12)
|
||||
stl a0, __curbrk
|
||||
|
||||
mov zero, v0
|
||||
ret
|
||||
/* What a horrible way to die. */
|
||||
error: ldgp gp,0(gp)
|
||||
jmp zero,syscall_error
|
||||
.end __brk
|
23
sysdeps/unix/bsd/Attic/osf1/alpha/fork.S
Normal file
23
sysdeps/unix/bsd/Attic/osf1/alpha/fork.S
Normal file
@ -0,0 +1,23 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
SYSCALL__ (fork, 0)
|
||||
cmovne a4, 0, v0
|
||||
ret
|
22
sysdeps/unix/bsd/Attic/osf1/alpha/getdents.S
Normal file
22
sysdeps/unix/bsd/Attic/osf1/alpha/getdents.S
Normal file
@ -0,0 +1,22 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
SYSCALL__ (getdirentries, 4)
|
||||
ret
|
@ -0,0 +1,25 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#include <sys/ult_syscall.h>
|
||||
#define SYS_killpg SYS_ult_killpg
|
||||
|
||||
SYSCALL (killpg, 2)
|
||||
ret
|
@ -0,0 +1,28 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
SYSCALL__ (pipe, 1)
|
||||
/* Plop in the two descriptors. */
|
||||
stl r0, 0(a0)
|
||||
stl r1, 4(a0)
|
||||
|
||||
/* Go out with a clean status. */
|
||||
mov zero, r0
|
||||
ret
|
25
sysdeps/unix/bsd/Attic/osf1/alpha/recv.S
Normal file
25
sysdeps/unix/bsd/Attic/osf1/alpha/recv.S
Normal file
@ -0,0 +1,25 @@
|
||||
/* Copyright (C) 1991, 1992 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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#include <sys/ult_syscall.h>
|
||||
#define SYS_recv SYS_ult_recv
|
||||
|
||||
SYSCALL (recv, 4)
|
||||
ret
|
25
sysdeps/unix/bsd/Attic/osf1/alpha/send.S
Normal file
25
sysdeps/unix/bsd/Attic/osf1/alpha/send.S
Normal file
@ -0,0 +1,25 @@
|
||||
/* Copyright (C) 1991, 1992 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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#include <sys/ult_syscall.h>
|
||||
#define SYS_send SYS_ult_send
|
||||
|
||||
SYSCALL (send, 4)
|
||||
ret
|
@ -0,0 +1,25 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#include <sys/ult_syscall.h>
|
||||
#define SYS_sigpause SYS_ult_sigpause
|
||||
|
||||
SYSCALL__ (sigpause, 1)
|
||||
ret
|
@ -0,0 +1,25 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#include <sys/ult_syscall.h>
|
||||
#define SYS_sigsetmask SYS_ult_sigsetmask
|
||||
|
||||
SYSCALL__ (sigsetmask, 1)
|
||||
ret
|
25
sysdeps/unix/bsd/Attic/osf1/alpha/sigvec.S
Normal file
25
sysdeps/unix/bsd/Attic/osf1/alpha/sigvec.S
Normal file
@ -0,0 +1,25 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#include <sys/ult_syscall.h>
|
||||
#define SYS_sigvec SYS_ult_sigvec
|
||||
|
||||
SYSCALL__ (sigvec, 3)
|
||||
ret
|
@ -0,0 +1,70 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#ifndef HAVE_GNU_LD
|
||||
#define __environ environ
|
||||
#endif
|
||||
|
||||
.comm __environ, 8
|
||||
.comm errno, 4
|
||||
|
||||
!.sdata
|
||||
!.globl STARTFRM
|
||||
!STARTFRM = 0
|
||||
|
||||
.text
|
||||
ENTRY(__start)
|
||||
lda sp, -16(sp)
|
||||
stq zero, 8(sp)
|
||||
|
||||
! This branch puts the address of the current insn in t0.
|
||||
br t0, 10f
|
||||
10:
|
||||
! We set the GP register by using the address of the ldgp
|
||||
! (what we just put into t0).
|
||||
ldgp gp, 0(t0)
|
||||
|
||||
! get argc
|
||||
ldl a0, 16(sp)
|
||||
|
||||
! get argv
|
||||
lda a1, 24(sp)
|
||||
|
||||
! move ahead to envp
|
||||
s8addq a0, a1, a2
|
||||
addq a2, 0x8, a2
|
||||
|
||||
! Store in environ.
|
||||
stq a2, environ
|
||||
|
||||
! Clear out errno.
|
||||
! ldgp gp, 0(t12)
|
||||
stl zero, errno
|
||||
|
||||
! Call main.
|
||||
jsr ra, main
|
||||
ldgp gp, 0(ra)
|
||||
|
||||
mov v0, a0
|
||||
|
||||
jsr ra, exit
|
||||
ldgp gp, 0(ra)
|
||||
|
||||
.end __start
|
@ -0,0 +1,75 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#ifndef _STATBUF_H
|
||||
#define _STATBUF_H
|
||||
|
||||
#include <gnu/types.h>
|
||||
|
||||
/* Structure describing file characteristics. */
|
||||
struct stat
|
||||
{
|
||||
int st_dev; /* Device. */
|
||||
unsigned int st_ino; /* File serial number. */
|
||||
unsigned int st_mode; /* File mode. */
|
||||
unsigned short 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.*/
|
||||
int st_rdev; /* Device number, if device. */
|
||||
|
||||
long st_size; /* Size of file, in bytes. */
|
||||
|
||||
int st_atime; /* Time of last access. */
|
||||
int st_atime_usec;
|
||||
int st_mtime; /* Time of last modification. */
|
||||
int st_mtime_usec;
|
||||
int st_ctime; /* Time of last status change. */
|
||||
int st_ctime_usec;
|
||||
|
||||
unsigned int st_blksize; /* Optimal block size for I/O. */
|
||||
#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */
|
||||
|
||||
int st_blocks; /* Number of 512-byte blocks allocated. */
|
||||
unsigned int st_flags;
|
||||
unsigned int st_gen;
|
||||
};
|
||||
|
||||
/* 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 */
|
40
sysdeps/unix/bsd/Attic/osf1/alpha/sysdep.S
Normal file
40
sysdeps/unix/bsd/Attic/osf1/alpha/sysdep.S
Normal file
@ -0,0 +1,40 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H
|
||||
#include <errnos.h>
|
||||
|
||||
ENTRY(syscall_error)
|
||||
#ifdef EWOULDBLOCK_sys
|
||||
/* We translate the system's EWOULDBLOCK error into EAGAIN.
|
||||
The GNU C library always defines EWOULDBLOCK==EAGAIN.
|
||||
EWOULDBLOCK_sys is the original number. */
|
||||
subq v0, EWOULDBLOCK_sys, t0
|
||||
cmoveq t0, EAGAIN, v0
|
||||
#endif
|
||||
|
||||
/* Store it in errno... */
|
||||
! ldgp gp, 0(t12)
|
||||
stl v0, errno
|
||||
|
||||
/* And just kick back a -1. */
|
||||
ldil v0, -1
|
||||
ret
|
||||
|
||||
.end syscall_error
|
68
sysdeps/unix/bsd/Attic/osf1/alpha/sysdep.h
Normal file
68
sysdeps/unix/bsd/Attic/osf1/alpha/sysdep.h
Normal file
@ -0,0 +1,68 @@
|
||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||
|
||||
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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdeps/unix/sysdep.h>
|
||||
#include <machine/pal.h> /* get PAL_callsys */
|
||||
#include <regdef.h>
|
||||
|
||||
#ifdef __STDC__
|
||||
#define ENTRY(name) \
|
||||
.globl name; \
|
||||
.ent name,0; \
|
||||
name##:; \
|
||||
.frame sp,0,ra
|
||||
#else
|
||||
#define ENTRY(name) \
|
||||
.globl name; \
|
||||
.ent name,0; \
|
||||
name/**/:; \
|
||||
.frame sp,0,ra
|
||||
#endif
|
||||
|
||||
#ifdef __STDC__
|
||||
#define PSEUDO(name, syscall_name, args) \
|
||||
ENTRY(name); \
|
||||
ldiq v0, SYS_##syscall_name; \
|
||||
.set noat; \
|
||||
call_pal PAL_callsys; \
|
||||
.set at; \
|
||||
beq a3, 10f; \
|
||||
br gp, 20f; \
|
||||
20:; \
|
||||
ldgp gp, 0(gp); \
|
||||
jmp zero, syscall_error; \
|
||||
10:
|
||||
#else
|
||||
#define PSEUDO(name, syscall_name, args) \
|
||||
ENTRY(name); \
|
||||
ldiq v0, SYS_/**/syscall_name; \
|
||||
.set noat; \
|
||||
call_pal PAL_callsys; \
|
||||
.set at; \
|
||||
beq a3, 10f; \
|
||||
br gp, 20f; \
|
||||
20:; \
|
||||
ldgp gp, 0(gp); \
|
||||
jmp zero, syscall_error; \
|
||||
10:
|
||||
#endif
|
||||
|
||||
#define ret ret zero,(ra),1
|
||||
#define r0 v0
|
||||
#define r1 a4
|
||||
#define MOVE(x,y) mov x, y
|
25
sysdeps/unix/bsd/Attic/osf1/alpha/vhangup.S
Normal file
25
sysdeps/unix/bsd/Attic/osf1/alpha/vhangup.S
Normal file
@ -0,0 +1,25 @@
|
||||
/* Copyright (C) 1991, 1992 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., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#include <sys/ult_syscall.h>
|
||||
#define SYS_vhangup SYS_ult_vhangup
|
||||
|
||||
SYSCALL (vhangup, 1)
|
||||
ret
|
1
sysdeps/unix/bsd/Attic/osf1/alpha/wait4.S
Normal file
1
sysdeps/unix/bsd/Attic/osf1/alpha/wait4.S
Normal file
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/bsd/bsd4.4/__wait4.S>
|
@ -0,0 +1 @@
|
||||
#include <sysdeps/unix/bsd/bsd4.4/__waitpid.c>
|
Loading…
x
Reference in New Issue
Block a user