1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00

initial import

This commit is contained in:
Roland McGrath
1995-02-18 01:27:10 +00:00
commit 28f540f45b
2263 changed files with 218361 additions and 0 deletions

67
sysdeps/unix/mips/brk.S Normal file
View File

@ -0,0 +1,67 @@
/* Copyright (C) 1992, 1995 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
.sdata
ENTRY(__curbrk)
.word __end
.text
.set noreorder
.set noat
ENTRY(__brk)
/* Minimum is one page. */
lui v0, 4096
lw v0, __end
nop
/* If they ask for less than a page, givvem the whole
thing anyway. */
sltu AT, a0, v0
beq AT, zero, down1
nop
move a0, v0
down1:
li v0, SYS_brk
syscall
bne a3, zero, error
/* Update __curbrk and exit cleanly. */
lui AT, 4096
sw a0, __curbrk
j ra
move v0, zero
/* What a horrible way to die. */
error: j syscall_error
nop
nop
nop
weak_alias (__brk, brk)

29
sysdeps/unix/mips/fork.S Normal file
View File

@ -0,0 +1,29 @@
/* Copyright (C) 1992, 1995 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)
beq v1, zero, parent /* Branch if parent. */
nop
/* We are the child. Return zero. */
move v0, zero
parent:
ret
weak_alias (__fork, fork)

31
sysdeps/unix/mips/pipe.S Normal file
View File

@ -0,0 +1,31 @@
/* Copyright (C) 1992, 1995 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. */
sw v0, 0(a0)
sw v1, 4(a0)
/* Go out with a clean status. */
j ra
move v0, zero
nop
weak_alias (__pipe, pipe)

View File

@ -0,0 +1,29 @@
/* Copyright (C) 1992, 1994, 1995 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_sigreturn
#define SYS_sigreturn 103
#endif
ENTRY(__sigreturn)
li v0, SYS_sigreturn
syscall
weak_alias (__sigreturn, sigreturn)

View File

@ -0,0 +1,41 @@
/* Copyright (C) 1992, 1993, 1994 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>
/* .globl errno */
.set noreorder
ENTRY(syscall_error)
#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
/* We translate the system's EWOULDBLOCK error into EAGAIN.
The GNU C library always defines EWOULDBLOCK==EAGAIN.
EWOULDBLOCK_sys is the original number. */
bne v0, EWOULDBLOCK_sys, skip
nop
li v0, EAGAIN
skip:
#endif
/* Store it in errno... */
sw v0, errno
/* And just kick back a -1. */
j ra
li v0, -1

View File

@ -0,0 +1,52 @@
/* Copyright (C) 1992, 1995 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>
#ifdef ASSEMBLER
#include <regdef.h>
#define ENTRY(name) \
.globl name; \
.align 2; \
.ent name,0; \
name##:
/* Note that while it's better structurally, going back to call syscall_error
can make things confusing if you're debugging---it looks like it's jumping
backwards into the previous fn. */
#define PSEUDO(name, syscall_name, args) \
.set noreorder; \
.align 2; \
99: j syscall_error; \
nop; \
ENTRY(name) \
li v0, SYS_##syscall_name; \
syscall; \
bne a3, zero, 99b; \
nop; \
syse1:
#define ret j ra ; nop
#define r0 v0
#define r1 v1
/* The mips move insn is d,s. */
#define MOVE(x,y) move y , x
#endif

44
sysdeps/unix/mips/wait.S Normal file
View File

@ -0,0 +1,44 @@
/* Copyright (C) 1992, 1994, 1995 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>
.set noreorder
ENTRY(__wait)
/* Prep it for wait. */
move a1, zero
move a2, zero
li v0, SYS_wait
syscall
beq a3, zero, noerror
nop
j syscall_error
nop
noerror:
/* If the arg is not NULL, store v1 there. */
beq a0, zero, noarg
nop
sw v1, 0(a0)
nop
noarg:
ret
weak_alias (__wait, wait)