1 # Assembly code for making mips64 syscalls.
2 #
3 # mips64 syscall argument register ordering is the same as the mips64
4 # userspace argument register ordering except that the syscall number
5 # (nr) is passed in v0.
6 #
7 # outline.rs takes care of reordering the nr argument to the end for us,
8 # so we only need to move nr into v0.
9 
10     .file       "mips.s"
11     .section    .mdebug.abi32
12     .previous
13     .abicalls
14 
15     .section    .text.rustix_syscall0_nr_last,"ax",@progbits
16     .p2align    2
17     .weak       rustix_syscall0_nr_last
18     .hidden     rustix_syscall0_nr_last
19     .type       rustix_syscall0_nr_last, @function
20     .set        nomips16
21     .set        nomicromips
22     .ent        rustix_syscall0_nr_last
23 rustix_syscall0_nr_last:
24     .frame      $sp,0,$31
25     .mask       0x00000000,0
26     .fmask      0x00000000,0
27     .set        noreorder
28     .set        nomacro
29     move   $2, $4
30     syscall
31     negu   $8, $2
32     jr     $31
33     movn   $2, $8, $7
34     .end        rustix_syscall0_nr_last
35     .size       rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
36 
37     .section    .text.rustix_syscall1_nr_last,"ax",@progbits
38     .p2align    2
39     .weak       rustix_syscall1_nr_last
40     .hidden     rustix_syscall1_nr_last
41     .type       rustix_syscall1_nr_last, @function
42     .set        nomips16
43     .set        nomicromips
44     .ent        rustix_syscall1_nr_last
45 rustix_syscall1_nr_last:
46     .frame      $sp,0,$31
47     .mask       0x00000000,0
48     .fmask      0x00000000,0
49     .set        noreorder
50     .set        nomacro
51     move   $2, $5
52     syscall
53     negu   $8, $2
54     jr     $31
55     movn   $2, $8, $7
56     .end        rustix_syscall1_nr_last
57     .size       rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
58 
59     .section    .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits
60     .p2align    2
61     .weak       rustix_syscall1_noreturn_nr_last
62     .hidden     rustix_syscall1_noreturn_nr_last
63     .type       rustix_syscall1_noreturn_nr_last, @function
64     .set        nomips16
65     .set        nomicromips
66     .ent        rustix_syscall1_noreturn_nr_last
67 rustix_syscall1_noreturn_nr_last:
68     .frame      $sp,0,$31
69     .mask       0x00000000,0
70     .fmask      0x00000000,0
71     .set        noreorder
72     .set        nomacro
73     move   $2, $5
74     syscall
75     teq    $zero, $zero
76     .end        rustix_syscall1_noreturn_nr_last
77     .size       rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
78 
79     .section    .text.rustix_syscall2_nr_last,"ax",@progbits
80     .p2align    2
81     .weak       rustix_syscall2_nr_last
82     .hidden     rustix_syscall2_nr_last
83     .type       rustix_syscall2_nr_last, @function
84     .set        nomips16
85     .set        nomicromips
86     .ent        rustix_syscall2_nr_last
87 rustix_syscall2_nr_last:
88     .frame      $sp,0,$31
89     .mask       0x00000000,0
90     .fmask      0x00000000,0
91     .set        noreorder
92     .set        nomacro
93     move   $2, $6
94     syscall
95     negu   $8, $2
96     jr     $31
97     movn   $2, $8, $7
98     .end        rustix_syscall2_nr_last
99     .size       rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
100 
101     .section    .text.rustix_syscall3_nr_last,"ax",@progbits
102     .p2align    2
103     .weak       rustix_syscall3_nr_last
104     .hidden     rustix_syscall3_nr_last
105     .type       rustix_syscall3_nr_last, @function
106     .set        nomips16
107     .set        nomicromips
108     .ent        rustix_syscall3_nr_last
109 rustix_syscall3_nr_last:
110     .frame      $sp,0,$31
111     .mask       0x00000000,0
112     .fmask      0x00000000,0
113     .set        noreorder
114     .set        nomacro
115     move   $2, $7
116     syscall
117     negu   $8, $2
118     jr     $31
119     movn   $2, $8, $7
120     .end        rustix_syscall3_nr_last
121     .size       rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
122 
123     .section    .text.rustix_syscall4_nr_last,"ax",@progbits
124     .p2align    2
125     .weak       rustix_syscall4_nr_last
126     .hidden     rustix_syscall4_nr_last
127     .type       rustix_syscall4_nr_last, @function
128     .set        nomips16
129     .set        nomicromips
130     .ent        rustix_syscall4_nr_last
131 rustix_syscall4_nr_last:
132     .frame      $sp,0,$31
133     .mask       0x00000000,0
134     .fmask      0x00000000,0
135     .set        noreorder
136     .set        nomacro
137     lw     $2, 16($sp)
138     syscall
139     negu   $8, $2
140     jr     $31
141     movn   $2, $8, $7
142     .end        rustix_syscall4_nr_last
143     .size       rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
144 
145     .section    .text.rustix_syscall5_nr_last,"ax",@progbits
146     .p2align    2
147     .weak       rustix_syscall5_nr_last
148     .hidden     rustix_syscall5_nr_last
149     .type       rustix_syscall5_nr_last, @function
150     .set        nomips16
151     .set        nomicromips
152     .ent        rustix_syscall5_nr_last
153 rustix_syscall5_nr_last:
154     .frame      $sp,0,$31
155     .mask       0x00000000,0
156     .fmask      0x00000000,0
157     .set        noreorder
158     .set        nomacro
159     lw     $2, 20($sp)
160     syscall
161     negu   $8, $2
162     jr     $31
163     movn   $2, $8, $7
164     .end        rustix_syscall5_nr_last
165     .size       rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
166 
167     .section    .text.rustix_syscall6_nr_last,"ax",@progbits
168     .p2align    2
169     .weak       rustix_syscall6_nr_last
170     .hidden     rustix_syscall6_nr_last
171     .type       rustix_syscall6_nr_last, @function
172     .set        nomips16
173     .set        nomicromips
174     .ent        rustix_syscall6_nr_last
175 rustix_syscall6_nr_last:
176     .frame      $sp,0,$31
177     .mask       0x00000000,0
178     .fmask      0x00000000,0
179     .set        noreorder
180     .set        nomacro
181     lw     $2, 24($sp)
182     syscall
183     negu   $8, $2
184     jr     $31
185     movn   $2, $8, $7
186     .end        rustix_syscall6_nr_last
187     .size       rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
188 
189     .section .note.GNU-stack,"",@progbits
190 
191     .section    .text.rustix_syscall7_nr_last,"ax",@progbits
192     .p2align    2
193     .weak       rustix_syscall7_nr_last
194     .hidden     rustix_syscall7_nr_last
195     .type       rustix_syscall7_nr_last, @function
196     .set        nomips16
197     .set        nomicromips
198     .ent        rustix_syscall7_nr_last
199 rustix_syscall7_nr_last:
200     .frame      $sp,0,$31
201     .mask       0x00000000,0
202     .fmask      0x00000000,0
203     .set        noreorder
204     .set        nomacro
205     lw     $2, 28($sp)
206     syscall
207     negu   $8, $2
208     jr     $31
209     movn   $2, $8, $7
210     .end        rustix_syscall7_nr_last
211     .size       rustix_syscall7_nr_last, .-rustix_syscall7_nr_last
212 
213     .section .note.GNU-stack,"",@progbits
214