]> sourceware.org Git - glibc.git/blame_incremental - sysdeps/unix/sysv/linux/mips/mips64/syscall.S
Amend log entry with omitted file.
[glibc.git] / sysdeps / unix / sysv / linux / mips / mips64 / syscall.S
... / ...
CommitLineData
1/* Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17 02111-1307 USA. */
18
19#include <sysdep.h>
20
21#include <sys/asm.h>
22
23/* Usage:
24 long syscall (syscall_number, arg1, arg2, arg3, arg4, arg5, arg6, arg7)
25
26 We need to do some arg shifting, syscall_number will be in v0. */
27
28
29 .text
30NESTED (syscall, SZREG, ra)
31 .mask 0x00010000, -SZREG
32 .fmask 0x00000000, 0
33 PTR_ADDIU sp, -SZREG
34 REG_S s0, (sp)
35
36 move s0, a0
37 move a0, a1 /* shift arg1 - arg7. */
38 move a1, a2
39 move a2, a3
40 move a3, a4
41 move a4, a5
42 move a5, a6
43 move a6, a7
44
45 move v0, s0 /* Syscall number -> v0 */
46 syscall /* Do the system call. */
47
48 REG_L s0, (sp)
49 PTR_ADDIU sp, SZREG
50 bne a3, zero, L(error)
51
52 ret
53
54L(error):
55 SETUP_GP64 (a0, syscall)
56 PTR_LA t9, __syscall_error
57 RESTORE_GP64
58 jr t9
59
60END (syscall)
This page took 0.026852 seconds and 5 git commands to generate.