mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
initial import
This commit is contained in:
67
sysdeps/unix/mips/brk.S
Normal file
67
sysdeps/unix/mips/brk.S
Normal 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
29
sysdeps/unix/mips/fork.S
Normal 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
31
sysdeps/unix/mips/pipe.S
Normal 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)
|
29
sysdeps/unix/mips/sigreturn.S
Normal file
29
sysdeps/unix/mips/sigreturn.S
Normal 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)
|
41
sysdeps/unix/mips/sysdep.S
Normal file
41
sysdeps/unix/mips/sysdep.S
Normal 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
|
52
sysdeps/unix/mips/sysdep.h
Normal file
52
sysdeps/unix/mips/sysdep.h
Normal 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
44
sysdeps/unix/mips/wait.S
Normal 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)
|
Reference in New Issue
Block a user