1 /* Copyright (C) 1992-2021 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, see
16    <https://www.gnu.org/licenses/>.  */
17 
18 #include <sysdeps/unix/mips/sysdep.h>
19 
20 /* Note that while it's better structurally, going back to call __syscall_error
21    can make things confusing if you're debugging---it looks like it's jumping
22    backwards into the previous fn.  */
23 #ifdef __PIC__
24 #define PSEUDO(name, syscall_name, args) \
25   .align 2;								      \
26   .set nomips16;							      \
27   cfi_startproc;							      \
28   99: la t9,__syscall_error;						      \
29   jr t9;								      \
30   cfi_endproc;								      \
31   ENTRY(name)								      \
32   .set noreorder;							      \
33   .cpload t9;								      \
34   li v0, SYS_ify(syscall_name);						      \
35   syscall;								      \
36   .set reorder;								      \
37   bne a3, zero, 99b;							      \
38 L(syse1):
39 #else
40 #define PSEUDO(name, syscall_name, args) \
41   .set noreorder;							      \
42   .set nomips16;							      \
43   .align 2;								      \
44   cfi_startproc;							      \
45   99: j __syscall_error;						      \
46   nop;									      \
47   cfi_endproc;								      \
48   ENTRY(name)								      \
49   .set noreorder;							      \
50   li v0, SYS_ify(syscall_name);						      \
51   syscall;								      \
52   .set reorder;								      \
53   bne a3, zero, 99b;							      \
54 L(syse1):
55 #endif
56