2006-01-08 Roland McGrath <roland@redhat.com>
[glibc-ports.git] / sysdeps / unix / sysv / linux / m68k / semtimedop.S
blob2775c124c6cc84149493b52fa78e692afe2f3141
1 /* Copyright (C) 2003 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Andreas Schwab <schwab@suse.de>, 2003.
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
20 #include <sysdep.h>
22 #define SYSOP_semtimedop 4
24 #define SVRSP   8               /* saved register space */
25 #define PARMS   4+SVRSP         /* space for 3 saved regs */
26 #define SEMID   PARMS
27 #define SOPS    SEMID+4
28 #define NSOPS   SOPS+4
29 #define TIMEOUT NSOPS+4
31         .text
32 ENTRY (semtimedop)
34         /* Save registers.  */
35         move.l  %d2, %a1
36         move.l  %d3, -(%sp)
37         move.l  %d5, -(%sp)
39         move.l  #SYSOP_semtimedop, %d1
40         move.l  SEMID(%sp), %d2
41         move.l  NSOPS(%sp), %d3
42         move.l  SOPS(%sp), %d5
43         move.l  TIMEOUT(%sp), %a0
44         move.l  #SYS_ify (ipc), %d0
46         trap    #0
48         /* Restore registers.  */
49         move.l  (%sp)+, %d5
50         move.l  (%sp)+, %d3
51         move.l  %a1, %d2
53         /* Check for error.  */
54         tst.l   %d0
55         jmi     SYSCALL_ERROR_LABEL
57         /* Successful; return the syscall's value.  */
58         ret
60 PSEUDO_END (semtimedop)