annotate uprogs/usys.S @ 0:ed10291ff195

first commit
author mir3636
date Sun, 06 Jan 2019 19:27:03 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ed10291ff195 first commit
mir3636
parents:
diff changeset
1 /*****************************************************************
ed10291ff195 first commit
mir3636
parents:
diff changeset
2 * usys.S
ed10291ff195 first commit
mir3636
parents:
diff changeset
3 * by Zhiyi Huang, hzy@cs.otago.ac.nz
ed10291ff195 first commit
mir3636
parents:
diff changeset
4 * University of Otago
ed10291ff195 first commit
mir3636
parents:
diff changeset
5 *
ed10291ff195 first commit
mir3636
parents:
diff changeset
6 ********************************************************************/
ed10291ff195 first commit
mir3636
parents:
diff changeset
7
ed10291ff195 first commit
mir3636
parents:
diff changeset
8
ed10291ff195 first commit
mir3636
parents:
diff changeset
9
ed10291ff195 first commit
mir3636
parents:
diff changeset
10 #include "syscall.h"
ed10291ff195 first commit
mir3636
parents:
diff changeset
11 #include "traps.h"
ed10291ff195 first commit
mir3636
parents:
diff changeset
12
ed10291ff195 first commit
mir3636
parents:
diff changeset
13 /* This is clumsy, but don't know how to make it smart */
ed10291ff195 first commit
mir3636
parents:
diff changeset
14 .globl fork
ed10291ff195 first commit
mir3636
parents:
diff changeset
15 fork:
ed10291ff195 first commit
mir3636
parents:
diff changeset
16 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
17 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
18 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
19 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
20 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
21 mov r0, #SYS_fork
ed10291ff195 first commit
mir3636
parents:
diff changeset
22 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
23 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
24 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
25 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
26 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
27 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
28 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
29
ed10291ff195 first commit
mir3636
parents:
diff changeset
30 .globl exit
ed10291ff195 first commit
mir3636
parents:
diff changeset
31 exit:
ed10291ff195 first commit
mir3636
parents:
diff changeset
32 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
33 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
34 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
35 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
36 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
37 mov r0, #SYS_exit
ed10291ff195 first commit
mir3636
parents:
diff changeset
38 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
39 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
40 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
41 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
42 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
43 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
44 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
45
ed10291ff195 first commit
mir3636
parents:
diff changeset
46 .globl wait
ed10291ff195 first commit
mir3636
parents:
diff changeset
47 wait:
ed10291ff195 first commit
mir3636
parents:
diff changeset
48 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
49 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
50 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
51 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
52 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
53 mov r0, #SYS_wait
ed10291ff195 first commit
mir3636
parents:
diff changeset
54 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
55 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
56 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
57 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
58 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
59 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
60 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
61
ed10291ff195 first commit
mir3636
parents:
diff changeset
62 .globl pipe
ed10291ff195 first commit
mir3636
parents:
diff changeset
63 pipe:
ed10291ff195 first commit
mir3636
parents:
diff changeset
64 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
65 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
66 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
67 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
68 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
69 mov r0, #SYS_pipe
ed10291ff195 first commit
mir3636
parents:
diff changeset
70 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
71 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
72 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
73 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
74 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
75 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
76 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
77
ed10291ff195 first commit
mir3636
parents:
diff changeset
78 .globl read
ed10291ff195 first commit
mir3636
parents:
diff changeset
79 read:
ed10291ff195 first commit
mir3636
parents:
diff changeset
80 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
81 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
82 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
83 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
84 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
85 mov r0, #SYS_read
ed10291ff195 first commit
mir3636
parents:
diff changeset
86 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
87 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
88 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
89 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
90 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
91 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
92 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
93
ed10291ff195 first commit
mir3636
parents:
diff changeset
94 .globl write
ed10291ff195 first commit
mir3636
parents:
diff changeset
95 write:
ed10291ff195 first commit
mir3636
parents:
diff changeset
96 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
97 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
98 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
99 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
100 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
101 mov r0, #SYS_write
ed10291ff195 first commit
mir3636
parents:
diff changeset
102 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
103 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
104 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
105 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
106 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
107 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
108 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
109
ed10291ff195 first commit
mir3636
parents:
diff changeset
110 .globl close
ed10291ff195 first commit
mir3636
parents:
diff changeset
111 close:
ed10291ff195 first commit
mir3636
parents:
diff changeset
112 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
113 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
114 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
115 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
116 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
117 mov r0, #SYS_close
ed10291ff195 first commit
mir3636
parents:
diff changeset
118 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
119 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
120 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
121 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
122 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
123 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
124 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
125
ed10291ff195 first commit
mir3636
parents:
diff changeset
126
ed10291ff195 first commit
mir3636
parents:
diff changeset
127 .globl kill
ed10291ff195 first commit
mir3636
parents:
diff changeset
128 kill:
ed10291ff195 first commit
mir3636
parents:
diff changeset
129 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
130 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
131 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
132 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
133 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
134 mov r0, #SYS_kill
ed10291ff195 first commit
mir3636
parents:
diff changeset
135 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
136 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
137 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
138 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
139 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
140 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
141 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
142
ed10291ff195 first commit
mir3636
parents:
diff changeset
143 .globl exec
ed10291ff195 first commit
mir3636
parents:
diff changeset
144 exec:
ed10291ff195 first commit
mir3636
parents:
diff changeset
145 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
146 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
147 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
148 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
149 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
150 mov r0, #SYS_exec
ed10291ff195 first commit
mir3636
parents:
diff changeset
151 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
152 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
153 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
154 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
155 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
156 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
157 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
158
ed10291ff195 first commit
mir3636
parents:
diff changeset
159 .globl open
ed10291ff195 first commit
mir3636
parents:
diff changeset
160 open:
ed10291ff195 first commit
mir3636
parents:
diff changeset
161 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
162 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
163 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
164 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
165 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
166 mov r0, #SYS_open
ed10291ff195 first commit
mir3636
parents:
diff changeset
167 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
168 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
169 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
170 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
171 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
172 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
173 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
174
ed10291ff195 first commit
mir3636
parents:
diff changeset
175 .globl mknod
ed10291ff195 first commit
mir3636
parents:
diff changeset
176 mknod:
ed10291ff195 first commit
mir3636
parents:
diff changeset
177 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
178 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
179 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
180 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
181 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
182 mov r0, #SYS_mknod
ed10291ff195 first commit
mir3636
parents:
diff changeset
183 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
184 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
185 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
186 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
187 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
188 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
189 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
190
ed10291ff195 first commit
mir3636
parents:
diff changeset
191 .globl unlink
ed10291ff195 first commit
mir3636
parents:
diff changeset
192 unlink:
ed10291ff195 first commit
mir3636
parents:
diff changeset
193 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
194 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
195 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
196 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
197 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
198 mov r0, #SYS_unlink
ed10291ff195 first commit
mir3636
parents:
diff changeset
199 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
200 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
201 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
202 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
203 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
204 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
205 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
206
ed10291ff195 first commit
mir3636
parents:
diff changeset
207 .globl fstat
ed10291ff195 first commit
mir3636
parents:
diff changeset
208 fstat:
ed10291ff195 first commit
mir3636
parents:
diff changeset
209 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
210 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
211 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
212 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
213 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
214 mov r0, #SYS_fstat
ed10291ff195 first commit
mir3636
parents:
diff changeset
215 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
216 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
217 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
218 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
219 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
220 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
221 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
222
ed10291ff195 first commit
mir3636
parents:
diff changeset
223 .globl link
ed10291ff195 first commit
mir3636
parents:
diff changeset
224 link:
ed10291ff195 first commit
mir3636
parents:
diff changeset
225 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
226 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
227 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
228 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
229 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
230 mov r0, #SYS_link
ed10291ff195 first commit
mir3636
parents:
diff changeset
231 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
232 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
233 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
234 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
235 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
236 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
237 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
238
ed10291ff195 first commit
mir3636
parents:
diff changeset
239 .globl mkdir
ed10291ff195 first commit
mir3636
parents:
diff changeset
240 mkdir:
ed10291ff195 first commit
mir3636
parents:
diff changeset
241 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
242 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
243 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
244 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
245 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
246 mov r0, #SYS_mkdir
ed10291ff195 first commit
mir3636
parents:
diff changeset
247 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
248 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
249 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
250 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
251 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
252 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
253 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
254
ed10291ff195 first commit
mir3636
parents:
diff changeset
255 .globl chdir
ed10291ff195 first commit
mir3636
parents:
diff changeset
256 chdir:
ed10291ff195 first commit
mir3636
parents:
diff changeset
257 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
258 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
259 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
260 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
261 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
262 mov r0, #SYS_chdir
ed10291ff195 first commit
mir3636
parents:
diff changeset
263 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
264 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
265 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
266 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
267 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
268 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
269 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
270
ed10291ff195 first commit
mir3636
parents:
diff changeset
271 .globl dup
ed10291ff195 first commit
mir3636
parents:
diff changeset
272 dup:
ed10291ff195 first commit
mir3636
parents:
diff changeset
273 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
274 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
275 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
276 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
277 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
278 mov r0, #SYS_dup
ed10291ff195 first commit
mir3636
parents:
diff changeset
279 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
280 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
281 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
282 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
283 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
284 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
285 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
286
ed10291ff195 first commit
mir3636
parents:
diff changeset
287 .globl getpid
ed10291ff195 first commit
mir3636
parents:
diff changeset
288 getpid:
ed10291ff195 first commit
mir3636
parents:
diff changeset
289 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
290 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
291 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
292 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
293 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
294 mov r0, #SYS_getpid
ed10291ff195 first commit
mir3636
parents:
diff changeset
295 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
296 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
297 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
298 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
299 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
300 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
301 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
302
ed10291ff195 first commit
mir3636
parents:
diff changeset
303 .globl sbrk
ed10291ff195 first commit
mir3636
parents:
diff changeset
304 sbrk:
ed10291ff195 first commit
mir3636
parents:
diff changeset
305 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
306 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
307 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
308 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
309 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
310 mov r0, #SYS_sbrk
ed10291ff195 first commit
mir3636
parents:
diff changeset
311 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
312 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
313 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
314 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
315 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
316 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
317 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
318
ed10291ff195 first commit
mir3636
parents:
diff changeset
319 .globl sleep
ed10291ff195 first commit
mir3636
parents:
diff changeset
320 sleep:
ed10291ff195 first commit
mir3636
parents:
diff changeset
321 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
322 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
323 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
324 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
325 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
326 mov r0, #SYS_sleep
ed10291ff195 first commit
mir3636
parents:
diff changeset
327 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
328 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
329 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
330 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
331 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
332 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
333 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
334
ed10291ff195 first commit
mir3636
parents:
diff changeset
335 .globl uptime
ed10291ff195 first commit
mir3636
parents:
diff changeset
336 uptime:
ed10291ff195 first commit
mir3636
parents:
diff changeset
337 push {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
338 push {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
339 push {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
340 push {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
341 push {r0}
ed10291ff195 first commit
mir3636
parents:
diff changeset
342 mov r0, #SYS_uptime
ed10291ff195 first commit
mir3636
parents:
diff changeset
343 swi #T_SYSCALL
ed10291ff195 first commit
mir3636
parents:
diff changeset
344 pop {r1} /* to avoid overwrite of r0 */
ed10291ff195 first commit
mir3636
parents:
diff changeset
345 pop {r1}
ed10291ff195 first commit
mir3636
parents:
diff changeset
346 pop {r2}
ed10291ff195 first commit
mir3636
parents:
diff changeset
347 pop {r3}
ed10291ff195 first commit
mir3636
parents:
diff changeset
348 pop {lr}
ed10291ff195 first commit
mir3636
parents:
diff changeset
349 bx lr
ed10291ff195 first commit
mir3636
parents:
diff changeset
350
ed10291ff195 first commit
mir3636
parents:
diff changeset
351
ed10291ff195 first commit
mir3636
parents:
diff changeset
352 /*
ed10291ff195 first commit
mir3636
parents:
diff changeset
353 SYSCALL(fork)
ed10291ff195 first commit
mir3636
parents:
diff changeset
354 SYSCALL(exit)
ed10291ff195 first commit
mir3636
parents:
diff changeset
355 SYSCALL(wait)
ed10291ff195 first commit
mir3636
parents:
diff changeset
356 SYSCALL(pipe)
ed10291ff195 first commit
mir3636
parents:
diff changeset
357 SYSCALL(read)
ed10291ff195 first commit
mir3636
parents:
diff changeset
358 SYSCALL(write)
ed10291ff195 first commit
mir3636
parents:
diff changeset
359 SYSCALL(close)
ed10291ff195 first commit
mir3636
parents:
diff changeset
360 SYSCALL(kill)
ed10291ff195 first commit
mir3636
parents:
diff changeset
361 SYSCALL(exec)
ed10291ff195 first commit
mir3636
parents:
diff changeset
362 SYSCALL(open)
ed10291ff195 first commit
mir3636
parents:
diff changeset
363 SYSCALL(mknod)
ed10291ff195 first commit
mir3636
parents:
diff changeset
364 SYSCALL(unlink)
ed10291ff195 first commit
mir3636
parents:
diff changeset
365 SYSCALL(fstat)
ed10291ff195 first commit
mir3636
parents:
diff changeset
366 SYSCALL(link)
ed10291ff195 first commit
mir3636
parents:
diff changeset
367 SYSCALL(mkdir)
ed10291ff195 first commit
mir3636
parents:
diff changeset
368 SYSCALL(chdir)
ed10291ff195 first commit
mir3636
parents:
diff changeset
369 SYSCALL(dup)
ed10291ff195 first commit
mir3636
parents:
diff changeset
370 SYSCALL(getpid)
ed10291ff195 first commit
mir3636
parents:
diff changeset
371 SYSCALL(sbrk)
ed10291ff195 first commit
mir3636
parents:
diff changeset
372 SYSCALL(sleep)
ed10291ff195 first commit
mir3636
parents:
diff changeset
373 SYSCALL(uptime)
ed10291ff195 first commit
mir3636
parents:
diff changeset
374 */