Update copyright notices with scripts/update-copyrights
[glibc.git] / ports / sysdeps / unix / sysv / linux / m68k / semtimedop.S
blob5fca8f50011d378cd0d2c5fccff05f516ba86591
1 /* Copyright (C) 2003-2014 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, see
17    <http://www.gnu.org/licenses/>.  */
19 #include <sysdep.h>
21 #define SYSOP_semtimedop 4
23 #define SVRSP   8               /* saved register space */
24 #define PARMS   4+SVRSP         /* space for 3 saved regs */
25 #define SEMID   PARMS
26 #define SOPS    SEMID+4
27 #define NSOPS   SOPS+4
28 #define TIMEOUT NSOPS+4
30         .text
31 ENTRY (semtimedop)
33         /* Save registers.  */
34         move.l  %d2, %a1
35         move.l  %d3, -(%sp)
36         cfi_adjust_cfa_offset (4)
37         move.l  %d5, -(%sp)
38         cfi_adjust_cfa_offset (4)
39         cfi_register (%d2, %a1)
40         cfi_rel_offset (%d3, 0)
41         cfi_rel_offset (%d5, 4)
43         move.l  #SYSOP_semtimedop, %d1
44         move.l  SEMID(%sp), %d2
45         move.l  NSOPS(%sp), %d3
46         move.l  SOPS(%sp), %d5
47         move.l  TIMEOUT(%sp), %a0
48         move.l  #SYS_ify (ipc), %d0
50         trap    #0
52         /* Restore registers.  */
53         move.l  (%sp)+, %d5
54         cfi_adjust_cfa_offset (-4)
55         cfi_restore (%d5)
56         move.l  (%sp)+, %d3
57         cfi_adjust_cfa_offset (-4)
58         cfi_restore (%d3)
59         move.l  %a1, %d2
60         cfi_restore (%d2)
62         /* Check for error.  */
63         tst.l   %d0
64         jmi     SYSCALL_ERROR_LABEL
66         /* Successful; return the syscall's value.  */
67         ret
69 PSEUDO_END (semtimedop)