• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
23rustix_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
45rustix_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
67rustix_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
87rustix_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
109rustix_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
131rustix_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
153rustix_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
175rustix_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
199rustix_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