forktest.asm 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912
  1. _forktest: file format elf32-littlearm
  2. Disassembly of section .text:
  3. 00000000 <main>:
  4. printf(1, "fork test OK\n");
  5. }
  6. int
  7. main(void)
  8. {
  9. 0: e92d4800 push {fp, lr}
  10. 4: e28db004 add fp, sp, #4
  11. forktest();
  12. 8: eb00000f bl 4c <forktest>
  13. exit();
  14. c: eb0000e3 bl 3a0 <exit>
  15. 00000010 <printf>:
  16. #define N 1000
  17. void
  18. printf(int fd, char *s, ...)
  19. {
  20. 10: e92d000e push {r1, r2, r3}
  21. 14: e92d4838 push {r3, r4, r5, fp, lr}
  22. 18: e28db010 add fp, sp, #16
  23. 1c: e1a05000 mov r5, r0
  24. 20: e59b4004 ldr r4, [fp, #4]
  25. write(fd, s, strlen(s));
  26. 24: e1a00004 mov r0, r4
  27. 28: eb000051 bl 174 <strlen>
  28. 2c: e1a01004 mov r1, r4
  29. 30: e1a02000 mov r2, r0
  30. 34: e1a00005 mov r0, r5
  31. 38: eb00010c bl 470 <write>
  32. }
  33. 3c: e24bd010 sub sp, fp, #16
  34. 40: e8bd4838 pop {r3, r4, r5, fp, lr}
  35. 44: e28dd00c add sp, sp, #12
  36. 48: e12fff1e bx lr
  37. 0000004c <forktest>:
  38. void
  39. forktest(void)
  40. {
  41. 4c: e92d4818 push {r3, r4, fp, lr}
  42. int n, pid;
  43. printf(1, "fork test\n");
  44. 50: e3a00001 mov r0, #1
  45. write(fd, s, strlen(s));
  46. }
  47. void
  48. forktest(void)
  49. {
  50. 54: e28db00c add fp, sp, #12
  51. int n, pid;
  52. printf(1, "fork test\n");
  53. 58: e59f108c ldr r1, [pc, #140] ; ec <forktest+0xa0>
  54. 5c: ebffffeb bl 10 <printf>
  55. for(n=0; n<N; n++){
  56. 60: e3a04000 mov r4, #0
  57. 64: ea000003 b 78 <forktest+0x2c>
  58. pid = fork();
  59. if(pid < 0)
  60. break;
  61. if(pid == 0)
  62. 68: 0a00001b beq dc <forktest+0x90>
  63. {
  64. int n, pid;
  65. printf(1, "fork test\n");
  66. for(n=0; n<N; n++){
  67. 6c: e2844001 add r4, r4, #1
  68. 70: e3540ffa cmp r4, #1000 ; 0x3e8
  69. 74: 0a000010 beq bc <forktest+0x70>
  70. pid = fork();
  71. 78: eb0000bb bl 36c <fork>
  72. if(pid < 0)
  73. 7c: e3500000 cmp r0, #0
  74. 80: aafffff8 bge 68 <forktest+0x1c>
  75. if(n == N){
  76. printf(1, "fork claimed to work N times!\n", N);
  77. exit();
  78. }
  79. for(; n > 0; n--){
  80. 84: e3540000 cmp r4, #0
  81. 88: 0a000004 beq a0 <forktest+0x54>
  82. if(wait() < 0){
  83. 8c: eb0000d0 bl 3d4 <wait>
  84. 90: e3500000 cmp r0, #0
  85. 94: ba00000d blt d0 <forktest+0x84>
  86. if(n == N){
  87. printf(1, "fork claimed to work N times!\n", N);
  88. exit();
  89. }
  90. for(; n > 0; n--){
  91. 98: e2544001 subs r4, r4, #1
  92. 9c: 1afffffa bne 8c <forktest+0x40>
  93. printf(1, "wait stopped early\n");
  94. exit();
  95. }
  96. }
  97. if(wait() != -1){
  98. a0: eb0000cb bl 3d4 <wait>
  99. a4: e3700001 cmn r0, #1
  100. printf(1, "wait got too many\n");
  101. a8: e3a00001 mov r0, #1
  102. printf(1, "wait stopped early\n");
  103. exit();
  104. }
  105. }
  106. if(wait() != -1){
  107. ac: 1a00000b bne e0 <forktest+0x94>
  108. printf(1, "wait got too many\n");
  109. exit();
  110. }
  111. printf(1, "fork test OK\n");
  112. b0: e59f1038 ldr r1, [pc, #56] ; f0 <forktest+0xa4>
  113. }
  114. b4: e8bd4818 pop {r3, r4, fp, lr}
  115. if(wait() != -1){
  116. printf(1, "wait got too many\n");
  117. exit();
  118. }
  119. printf(1, "fork test OK\n");
  120. b8: eaffffd4 b 10 <printf>
  121. if(pid == 0)
  122. exit();
  123. }
  124. if(n == N){
  125. printf(1, "fork claimed to work N times!\n", N);
  126. bc: e3a00001 mov r0, #1
  127. c0: e59f102c ldr r1, [pc, #44] ; f4 <forktest+0xa8>
  128. c4: e1a02004 mov r2, r4
  129. c8: ebffffd0 bl 10 <printf>
  130. exit();
  131. cc: eb0000b3 bl 3a0 <exit>
  132. }
  133. for(; n > 0; n--){
  134. if(wait() < 0){
  135. printf(1, "wait stopped early\n");
  136. d0: e3a00001 mov r0, #1
  137. d4: e59f101c ldr r1, [pc, #28] ; f8 <forktest+0xac>
  138. d8: ebffffcc bl 10 <printf>
  139. exit();
  140. dc: eb0000af bl 3a0 <exit>
  141. }
  142. }
  143. if(wait() != -1){
  144. printf(1, "wait got too many\n");
  145. e0: e59f1014 ldr r1, [pc, #20] ; fc <forktest+0xb0>
  146. e4: ebffffc9 bl 10 <printf>
  147. exit();
  148. e8: eb0000ac bl 3a0 <exit>
  149. ec: 000007b0 .word 0x000007b0
  150. f0: 000007e4 .word 0x000007e4
  151. f4: 000007f4 .word 0x000007f4
  152. f8: 000007bc .word 0x000007bc
  153. fc: 000007d0 .word 0x000007d0
  154. 00000100 <strcpy>:
  155. #include "user.h"
  156. #include "arm.h"
  157. char*
  158. strcpy(char *s, char *t)
  159. {
  160. 100: e52db004 push {fp} ; (str fp, [sp, #-4]!)
  161. char *os;
  162. os = s;
  163. while((*s++ = *t++) != 0)
  164. 104: e1a02000 mov r2, r0
  165. #include "user.h"
  166. #include "arm.h"
  167. char*
  168. strcpy(char *s, char *t)
  169. {
  170. 108: e28db000 add fp, sp, #0
  171. char *os;
  172. os = s;
  173. while((*s++ = *t++) != 0)
  174. 10c: e4d13001 ldrb r3, [r1], #1
  175. 110: e3530000 cmp r3, #0
  176. 114: e4c23001 strb r3, [r2], #1
  177. 118: 1afffffb bne 10c <strcpy+0xc>
  178. ;
  179. return os;
  180. }
  181. 11c: e28bd000 add sp, fp, #0
  182. 120: e8bd0800 pop {fp}
  183. 124: e12fff1e bx lr
  184. 00000128 <strcmp>:
  185. int
  186. strcmp(const char *p, const char *q)
  187. {
  188. 128: e52db004 push {fp} ; (str fp, [sp, #-4]!)
  189. 12c: e28db000 add fp, sp, #0
  190. while(*p && *p == *q)
  191. 130: e5d03000 ldrb r3, [r0]
  192. 134: e5d12000 ldrb r2, [r1]
  193. 138: e3530000 cmp r3, #0
  194. 13c: 1a000004 bne 154 <strcmp+0x2c>
  195. 140: ea000005 b 15c <strcmp+0x34>
  196. 144: e5f03001 ldrb r3, [r0, #1]!
  197. 148: e3530000 cmp r3, #0
  198. 14c: 0a000006 beq 16c <strcmp+0x44>
  199. 150: e5f12001 ldrb r2, [r1, #1]!
  200. 154: e1530002 cmp r3, r2
  201. 158: 0afffff9 beq 144 <strcmp+0x1c>
  202. p++, q++;
  203. return (uchar)*p - (uchar)*q;
  204. }
  205. 15c: e0620003 rsb r0, r2, r3
  206. 160: e28bd000 add sp, fp, #0
  207. 164: e8bd0800 pop {fp}
  208. 168: e12fff1e bx lr
  209. }
  210. int
  211. strcmp(const char *p, const char *q)
  212. {
  213. while(*p && *p == *q)
  214. 16c: e5d12001 ldrb r2, [r1, #1]
  215. 170: eafffff9 b 15c <strcmp+0x34>
  216. 00000174 <strlen>:
  217. return (uchar)*p - (uchar)*q;
  218. }
  219. uint
  220. strlen(char *s)
  221. {
  222. 174: e52db004 push {fp} ; (str fp, [sp, #-4]!)
  223. 178: e28db000 add fp, sp, #0
  224. int n;
  225. for(n = 0; s[n]; n++)
  226. 17c: e5d03000 ldrb r3, [r0]
  227. 180: e3530000 cmp r3, #0
  228. 184: 01a00003 moveq r0, r3
  229. 188: 0a000006 beq 1a8 <strlen+0x34>
  230. 18c: e1a02000 mov r2, r0
  231. 190: e3a03000 mov r3, #0
  232. 194: e5f21001 ldrb r1, [r2, #1]!
  233. 198: e2833001 add r3, r3, #1
  234. 19c: e1a00003 mov r0, r3
  235. 1a0: e3510000 cmp r1, #0
  236. 1a4: 1afffffa bne 194 <strlen+0x20>
  237. ;
  238. return n;
  239. }
  240. 1a8: e28bd000 add sp, fp, #0
  241. 1ac: e8bd0800 pop {fp}
  242. 1b0: e12fff1e bx lr
  243. 000001b4 <memset>:
  244. memset(void *dst, int c, uint n)
  245. {
  246. char *p=dst;
  247. u32 rc=n;
  248. while (rc-- > 0) *p++ = c;
  249. 1b4: e3520000 cmp r2, #0
  250. return n;
  251. }
  252. void*
  253. memset(void *dst, int c, uint n)
  254. {
  255. 1b8: e52db004 push {fp} ; (str fp, [sp, #-4]!)
  256. 1bc: e28db000 add fp, sp, #0
  257. char *p=dst;
  258. u32 rc=n;
  259. while (rc-- > 0) *p++ = c;
  260. 1c0: 0a000006 beq 1e0 <memset+0x2c>
  261. 1c4: e6ef1071 uxtb r1, r1
  262. 1c8: e1a03002 mov r3, r2
  263. }
  264. void*
  265. memset(void *dst, int c, uint n)
  266. {
  267. char *p=dst;
  268. 1cc: e1a0c000 mov ip, r0
  269. u32 rc=n;
  270. while (rc-- > 0) *p++ = c;
  271. 1d0: e2533001 subs r3, r3, #1
  272. 1d4: e4cc1001 strb r1, [ip], #1
  273. 1d8: 1afffffc bne 1d0 <memset+0x1c>
  274. 1dc: e0800002 add r0, r0, r2
  275. return (void *)p;
  276. }
  277. 1e0: e28bd000 add sp, fp, #0
  278. 1e4: e8bd0800 pop {fp}
  279. 1e8: e12fff1e bx lr
  280. 000001ec <strchr>:
  281. char*
  282. strchr(const char *s, char c)
  283. {
  284. 1ec: e52db004 push {fp} ; (str fp, [sp, #-4]!)
  285. 1f0: e28db000 add fp, sp, #0
  286. for(; *s; s++)
  287. 1f4: e5d03000 ldrb r3, [r0]
  288. 1f8: e3530000 cmp r3, #0
  289. 1fc: 1a000004 bne 214 <strchr+0x28>
  290. 200: ea000008 b 228 <strchr+0x3c>
  291. 204: e5d03001 ldrb r3, [r0, #1]
  292. 208: e2800001 add r0, r0, #1
  293. 20c: e3530000 cmp r3, #0
  294. 210: 0a000004 beq 228 <strchr+0x3c>
  295. if(*s == c)
  296. 214: e1530001 cmp r3, r1
  297. 218: 1afffff9 bne 204 <strchr+0x18>
  298. return (char*)s;
  299. return 0;
  300. }
  301. 21c: e28bd000 add sp, fp, #0
  302. 220: e8bd0800 pop {fp}
  303. 224: e12fff1e bx lr
  304. strchr(const char *s, char c)
  305. {
  306. for(; *s; s++)
  307. if(*s == c)
  308. return (char*)s;
  309. return 0;
  310. 228: e1a00003 mov r0, r3
  311. 22c: eafffffa b 21c <strchr+0x30>
  312. 00000230 <gets>:
  313. }
  314. char*
  315. gets(char *buf, int max)
  316. {
  317. 230: e92d49f0 push {r4, r5, r6, r7, r8, fp, lr}
  318. 234: e28db018 add fp, sp, #24
  319. 238: e24dd00c sub sp, sp, #12
  320. 23c: e1a08000 mov r8, r0
  321. 240: e1a07001 mov r7, r1
  322. int i, cc;
  323. char c;
  324. for(i=0; i+1 < max; ){
  325. 244: e1a06000 mov r6, r0
  326. 248: e3a05000 mov r5, #0
  327. 24c: ea000008 b 274 <gets+0x44>
  328. cc = read(0, &c, 1);
  329. 250: eb000079 bl 43c <read>
  330. if(cc < 1)
  331. 254: e3500000 cmp r0, #0
  332. 258: da00000b ble 28c <gets+0x5c>
  333. break;
  334. buf[i++] = c;
  335. 25c: e55b301d ldrb r3, [fp, #-29]
  336. if(c == '\n' || c == '\r')
  337. 260: e1a05004 mov r5, r4
  338. 264: e353000a cmp r3, #10
  339. 268: 1353000d cmpne r3, #13
  340. for(i=0; i+1 < max; ){
  341. cc = read(0, &c, 1);
  342. if(cc < 1)
  343. break;
  344. buf[i++] = c;
  345. 26c: e4c63001 strb r3, [r6], #1
  346. if(c == '\n' || c == '\r')
  347. 270: 0a00000a beq 2a0 <gets+0x70>
  348. {
  349. int i, cc;
  350. char c;
  351. for(i=0; i+1 < max; ){
  352. cc = read(0, &c, 1);
  353. 274: e3a02001 mov r2, #1
  354. gets(char *buf, int max)
  355. {
  356. int i, cc;
  357. char c;
  358. for(i=0; i+1 < max; ){
  359. 278: e0854002 add r4, r5, r2
  360. 27c: e1540007 cmp r4, r7
  361. cc = read(0, &c, 1);
  362. 280: e3a00000 mov r0, #0
  363. 284: e24b101d sub r1, fp, #29
  364. gets(char *buf, int max)
  365. {
  366. int i, cc;
  367. char c;
  368. for(i=0; i+1 < max; ){
  369. 288: bafffff0 blt 250 <gets+0x20>
  370. break;
  371. buf[i++] = c;
  372. if(c == '\n' || c == '\r')
  373. break;
  374. }
  375. buf[i] = '\0';
  376. 28c: e3a03000 mov r3, #0
  377. 290: e7c83005 strb r3, [r8, r5]
  378. return buf;
  379. }
  380. 294: e1a00008 mov r0, r8
  381. 298: e24bd018 sub sp, fp, #24
  382. 29c: e8bd89f0 pop {r4, r5, r6, r7, r8, fp, pc}
  383. gets(char *buf, int max)
  384. {
  385. int i, cc;
  386. char c;
  387. for(i=0; i+1 < max; ){
  388. 2a0: e1a05004 mov r5, r4
  389. 2a4: eafffff8 b 28c <gets+0x5c>
  390. 000002a8 <stat>:
  391. return buf;
  392. }
  393. int
  394. stat(char *n, struct stat *st)
  395. {
  396. 2a8: e92d4830 push {r4, r5, fp, lr}
  397. 2ac: e1a05001 mov r5, r1
  398. 2b0: e28db00c add fp, sp, #12
  399. int fd;
  400. int r;
  401. fd = open(n, O_RDONLY);
  402. 2b4: e3a01000 mov r1, #0
  403. 2b8: eb0000a0 bl 540 <open>
  404. if(fd < 0)
  405. 2bc: e2504000 subs r4, r0, #0
  406. return -1;
  407. 2c0: b3e05000 mvnlt r5, #0
  408. {
  409. int fd;
  410. int r;
  411. fd = open(n, O_RDONLY);
  412. if(fd < 0)
  413. 2c4: ba000004 blt 2dc <stat+0x34>
  414. return -1;
  415. r = fstat(fd, st);
  416. 2c8: e1a01005 mov r1, r5
  417. 2cc: eb0000c2 bl 5dc <fstat>
  418. 2d0: e1a05000 mov r5, r0
  419. close(fd);
  420. 2d4: e1a00004 mov r0, r4
  421. 2d8: eb000071 bl 4a4 <close>
  422. return r;
  423. }
  424. 2dc: e1a00005 mov r0, r5
  425. 2e0: e8bd8830 pop {r4, r5, fp, pc}
  426. 000002e4 <atoi>:
  427. int
  428. atoi(const char *s)
  429. {
  430. 2e4: e52db004 push {fp} ; (str fp, [sp, #-4]!)
  431. 2e8: e28db000 add fp, sp, #0
  432. int n;
  433. n = 0;
  434. while('0' <= *s && *s <= '9')
  435. 2ec: e5d03000 ldrb r3, [r0]
  436. 2f0: e2432030 sub r2, r3, #48 ; 0x30
  437. 2f4: e6ef2072 uxtb r2, r2
  438. 2f8: e3520009 cmp r2, #9
  439. int
  440. atoi(const char *s)
  441. {
  442. int n;
  443. n = 0;
  444. 2fc: 83a00000 movhi r0, #0
  445. while('0' <= *s && *s <= '9')
  446. 300: 8a000009 bhi 32c <atoi+0x48>
  447. 304: e1a02000 mov r2, r0
  448. int
  449. atoi(const char *s)
  450. {
  451. int n;
  452. n = 0;
  453. 308: e3a00000 mov r0, #0
  454. while('0' <= *s && *s <= '9')
  455. n = n*10 + *s++ - '0';
  456. 30c: e0800100 add r0, r0, r0, lsl #2
  457. 310: e0830080 add r0, r3, r0, lsl #1
  458. atoi(const char *s)
  459. {
  460. int n;
  461. n = 0;
  462. while('0' <= *s && *s <= '9')
  463. 314: e5f23001 ldrb r3, [r2, #1]!
  464. n = n*10 + *s++ - '0';
  465. 318: e2400030 sub r0, r0, #48 ; 0x30
  466. atoi(const char *s)
  467. {
  468. int n;
  469. n = 0;
  470. while('0' <= *s && *s <= '9')
  471. 31c: e2431030 sub r1, r3, #48 ; 0x30
  472. 320: e6ef1071 uxtb r1, r1
  473. 324: e3510009 cmp r1, #9
  474. 328: 9afffff7 bls 30c <atoi+0x28>
  475. n = n*10 + *s++ - '0';
  476. return n;
  477. }
  478. 32c: e28bd000 add sp, fp, #0
  479. 330: e8bd0800 pop {fp}
  480. 334: e12fff1e bx lr
  481. 00000338 <memmove>:
  482. {
  483. char *dst, *src;
  484. dst = vdst;
  485. src = vsrc;
  486. while(n-- > 0)
  487. 338: e3520000 cmp r2, #0
  488. return n;
  489. }
  490. void*
  491. memmove(void *vdst, void *vsrc, int n)
  492. {
  493. 33c: e52db004 push {fp} ; (str fp, [sp, #-4]!)
  494. 340: e28db000 add fp, sp, #0
  495. char *dst, *src;
  496. dst = vdst;
  497. src = vsrc;
  498. while(n-- > 0)
  499. 344: da000005 ble 360 <memmove+0x28>
  500. n = n*10 + *s++ - '0';
  501. return n;
  502. }
  503. void*
  504. memmove(void *vdst, void *vsrc, int n)
  505. 348: e0802002 add r2, r0, r2
  506. {
  507. char *dst, *src;
  508. dst = vdst;
  509. 34c: e1a03000 mov r3, r0
  510. src = vsrc;
  511. while(n-- > 0)
  512. *dst++ = *src++;
  513. 350: e4d1c001 ldrb ip, [r1], #1
  514. 354: e4c3c001 strb ip, [r3], #1
  515. {
  516. char *dst, *src;
  517. dst = vdst;
  518. src = vsrc;
  519. while(n-- > 0)
  520. 358: e1530002 cmp r3, r2
  521. 35c: 1afffffb bne 350 <memmove+0x18>
  522. *dst++ = *src++;
  523. return vdst;
  524. }
  525. 360: e28bd000 add sp, fp, #0
  526. 364: e8bd0800 pop {fp}
  527. 368: e12fff1e bx lr
  528. 0000036c <fork>:
  529. 36c: e92d4000 push {lr}
  530. 370: e92d0008 push {r3}
  531. 374: e92d0004 push {r2}
  532. 378: e92d0002 push {r1}
  533. 37c: e92d0001 push {r0}
  534. 380: e3a00001 mov r0, #1
  535. 384: ef000040 svc 0x00000040
  536. 388: e8bd0002 pop {r1}
  537. 38c: e8bd0002 pop {r1}
  538. 390: e8bd0004 pop {r2}
  539. 394: e8bd0008 pop {r3}
  540. 398: e8bd4000 pop {lr}
  541. 39c: e12fff1e bx lr
  542. 000003a0 <exit>:
  543. 3a0: e92d4000 push {lr}
  544. 3a4: e92d0008 push {r3}
  545. 3a8: e92d0004 push {r2}
  546. 3ac: e92d0002 push {r1}
  547. 3b0: e92d0001 push {r0}
  548. 3b4: e3a00002 mov r0, #2
  549. 3b8: ef000040 svc 0x00000040
  550. 3bc: e8bd0002 pop {r1}
  551. 3c0: e8bd0002 pop {r1}
  552. 3c4: e8bd0004 pop {r2}
  553. 3c8: e8bd0008 pop {r3}
  554. 3cc: e8bd4000 pop {lr}
  555. 3d0: e12fff1e bx lr
  556. 000003d4 <wait>:
  557. 3d4: e92d4000 push {lr}
  558. 3d8: e92d0008 push {r3}
  559. 3dc: e92d0004 push {r2}
  560. 3e0: e92d0002 push {r1}
  561. 3e4: e92d0001 push {r0}
  562. 3e8: e3a00003 mov r0, #3
  563. 3ec: ef000040 svc 0x00000040
  564. 3f0: e8bd0002 pop {r1}
  565. 3f4: e8bd0002 pop {r1}
  566. 3f8: e8bd0004 pop {r2}
  567. 3fc: e8bd0008 pop {r3}
  568. 400: e8bd4000 pop {lr}
  569. 404: e12fff1e bx lr
  570. 00000408 <pipe>:
  571. 408: e92d4000 push {lr}
  572. 40c: e92d0008 push {r3}
  573. 410: e92d0004 push {r2}
  574. 414: e92d0002 push {r1}
  575. 418: e92d0001 push {r0}
  576. 41c: e3a00004 mov r0, #4
  577. 420: ef000040 svc 0x00000040
  578. 424: e8bd0002 pop {r1}
  579. 428: e8bd0002 pop {r1}
  580. 42c: e8bd0004 pop {r2}
  581. 430: e8bd0008 pop {r3}
  582. 434: e8bd4000 pop {lr}
  583. 438: e12fff1e bx lr
  584. 0000043c <read>:
  585. 43c: e92d4000 push {lr}
  586. 440: e92d0008 push {r3}
  587. 444: e92d0004 push {r2}
  588. 448: e92d0002 push {r1}
  589. 44c: e92d0001 push {r0}
  590. 450: e3a00005 mov r0, #5
  591. 454: ef000040 svc 0x00000040
  592. 458: e8bd0002 pop {r1}
  593. 45c: e8bd0002 pop {r1}
  594. 460: e8bd0004 pop {r2}
  595. 464: e8bd0008 pop {r3}
  596. 468: e8bd4000 pop {lr}
  597. 46c: e12fff1e bx lr
  598. 00000470 <write>:
  599. 470: e92d4000 push {lr}
  600. 474: e92d0008 push {r3}
  601. 478: e92d0004 push {r2}
  602. 47c: e92d0002 push {r1}
  603. 480: e92d0001 push {r0}
  604. 484: e3a00010 mov r0, #16
  605. 488: ef000040 svc 0x00000040
  606. 48c: e8bd0002 pop {r1}
  607. 490: e8bd0002 pop {r1}
  608. 494: e8bd0004 pop {r2}
  609. 498: e8bd0008 pop {r3}
  610. 49c: e8bd4000 pop {lr}
  611. 4a0: e12fff1e bx lr
  612. 000004a4 <close>:
  613. 4a4: e92d4000 push {lr}
  614. 4a8: e92d0008 push {r3}
  615. 4ac: e92d0004 push {r2}
  616. 4b0: e92d0002 push {r1}
  617. 4b4: e92d0001 push {r0}
  618. 4b8: e3a00015 mov r0, #21
  619. 4bc: ef000040 svc 0x00000040
  620. 4c0: e8bd0002 pop {r1}
  621. 4c4: e8bd0002 pop {r1}
  622. 4c8: e8bd0004 pop {r2}
  623. 4cc: e8bd0008 pop {r3}
  624. 4d0: e8bd4000 pop {lr}
  625. 4d4: e12fff1e bx lr
  626. 000004d8 <kill>:
  627. 4d8: e92d4000 push {lr}
  628. 4dc: e92d0008 push {r3}
  629. 4e0: e92d0004 push {r2}
  630. 4e4: e92d0002 push {r1}
  631. 4e8: e92d0001 push {r0}
  632. 4ec: e3a00006 mov r0, #6
  633. 4f0: ef000040 svc 0x00000040
  634. 4f4: e8bd0002 pop {r1}
  635. 4f8: e8bd0002 pop {r1}
  636. 4fc: e8bd0004 pop {r2}
  637. 500: e8bd0008 pop {r3}
  638. 504: e8bd4000 pop {lr}
  639. 508: e12fff1e bx lr
  640. 0000050c <exec>:
  641. 50c: e92d4000 push {lr}
  642. 510: e92d0008 push {r3}
  643. 514: e92d0004 push {r2}
  644. 518: e92d0002 push {r1}
  645. 51c: e92d0001 push {r0}
  646. 520: e3a00007 mov r0, #7
  647. 524: ef000040 svc 0x00000040
  648. 528: e8bd0002 pop {r1}
  649. 52c: e8bd0002 pop {r1}
  650. 530: e8bd0004 pop {r2}
  651. 534: e8bd0008 pop {r3}
  652. 538: e8bd4000 pop {lr}
  653. 53c: e12fff1e bx lr
  654. 00000540 <open>:
  655. 540: e92d4000 push {lr}
  656. 544: e92d0008 push {r3}
  657. 548: e92d0004 push {r2}
  658. 54c: e92d0002 push {r1}
  659. 550: e92d0001 push {r0}
  660. 554: e3a0000f mov r0, #15
  661. 558: ef000040 svc 0x00000040
  662. 55c: e8bd0002 pop {r1}
  663. 560: e8bd0002 pop {r1}
  664. 564: e8bd0004 pop {r2}
  665. 568: e8bd0008 pop {r3}
  666. 56c: e8bd4000 pop {lr}
  667. 570: e12fff1e bx lr
  668. 00000574 <mknod>:
  669. 574: e92d4000 push {lr}
  670. 578: e92d0008 push {r3}
  671. 57c: e92d0004 push {r2}
  672. 580: e92d0002 push {r1}
  673. 584: e92d0001 push {r0}
  674. 588: e3a00011 mov r0, #17
  675. 58c: ef000040 svc 0x00000040
  676. 590: e8bd0002 pop {r1}
  677. 594: e8bd0002 pop {r1}
  678. 598: e8bd0004 pop {r2}
  679. 59c: e8bd0008 pop {r3}
  680. 5a0: e8bd4000 pop {lr}
  681. 5a4: e12fff1e bx lr
  682. 000005a8 <unlink>:
  683. 5a8: e92d4000 push {lr}
  684. 5ac: e92d0008 push {r3}
  685. 5b0: e92d0004 push {r2}
  686. 5b4: e92d0002 push {r1}
  687. 5b8: e92d0001 push {r0}
  688. 5bc: e3a00012 mov r0, #18
  689. 5c0: ef000040 svc 0x00000040
  690. 5c4: e8bd0002 pop {r1}
  691. 5c8: e8bd0002 pop {r1}
  692. 5cc: e8bd0004 pop {r2}
  693. 5d0: e8bd0008 pop {r3}
  694. 5d4: e8bd4000 pop {lr}
  695. 5d8: e12fff1e bx lr
  696. 000005dc <fstat>:
  697. 5dc: e92d4000 push {lr}
  698. 5e0: e92d0008 push {r3}
  699. 5e4: e92d0004 push {r2}
  700. 5e8: e92d0002 push {r1}
  701. 5ec: e92d0001 push {r0}
  702. 5f0: e3a00008 mov r0, #8
  703. 5f4: ef000040 svc 0x00000040
  704. 5f8: e8bd0002 pop {r1}
  705. 5fc: e8bd0002 pop {r1}
  706. 600: e8bd0004 pop {r2}
  707. 604: e8bd0008 pop {r3}
  708. 608: e8bd4000 pop {lr}
  709. 60c: e12fff1e bx lr
  710. 00000610 <link>:
  711. 610: e92d4000 push {lr}
  712. 614: e92d0008 push {r3}
  713. 618: e92d0004 push {r2}
  714. 61c: e92d0002 push {r1}
  715. 620: e92d0001 push {r0}
  716. 624: e3a00013 mov r0, #19
  717. 628: ef000040 svc 0x00000040
  718. 62c: e8bd0002 pop {r1}
  719. 630: e8bd0002 pop {r1}
  720. 634: e8bd0004 pop {r2}
  721. 638: e8bd0008 pop {r3}
  722. 63c: e8bd4000 pop {lr}
  723. 640: e12fff1e bx lr
  724. 00000644 <mkdir>:
  725. 644: e92d4000 push {lr}
  726. 648: e92d0008 push {r3}
  727. 64c: e92d0004 push {r2}
  728. 650: e92d0002 push {r1}
  729. 654: e92d0001 push {r0}
  730. 658: e3a00014 mov r0, #20
  731. 65c: ef000040 svc 0x00000040
  732. 660: e8bd0002 pop {r1}
  733. 664: e8bd0002 pop {r1}
  734. 668: e8bd0004 pop {r2}
  735. 66c: e8bd0008 pop {r3}
  736. 670: e8bd4000 pop {lr}
  737. 674: e12fff1e bx lr
  738. 00000678 <chdir>:
  739. 678: e92d4000 push {lr}
  740. 67c: e92d0008 push {r3}
  741. 680: e92d0004 push {r2}
  742. 684: e92d0002 push {r1}
  743. 688: e92d0001 push {r0}
  744. 68c: e3a00009 mov r0, #9
  745. 690: ef000040 svc 0x00000040
  746. 694: e8bd0002 pop {r1}
  747. 698: e8bd0002 pop {r1}
  748. 69c: e8bd0004 pop {r2}
  749. 6a0: e8bd0008 pop {r3}
  750. 6a4: e8bd4000 pop {lr}
  751. 6a8: e12fff1e bx lr
  752. 000006ac <dup>:
  753. 6ac: e92d4000 push {lr}
  754. 6b0: e92d0008 push {r3}
  755. 6b4: e92d0004 push {r2}
  756. 6b8: e92d0002 push {r1}
  757. 6bc: e92d0001 push {r0}
  758. 6c0: e3a0000a mov r0, #10
  759. 6c4: ef000040 svc 0x00000040
  760. 6c8: e8bd0002 pop {r1}
  761. 6cc: e8bd0002 pop {r1}
  762. 6d0: e8bd0004 pop {r2}
  763. 6d4: e8bd0008 pop {r3}
  764. 6d8: e8bd4000 pop {lr}
  765. 6dc: e12fff1e bx lr
  766. 000006e0 <getpid>:
  767. 6e0: e92d4000 push {lr}
  768. 6e4: e92d0008 push {r3}
  769. 6e8: e92d0004 push {r2}
  770. 6ec: e92d0002 push {r1}
  771. 6f0: e92d0001 push {r0}
  772. 6f4: e3a0000b mov r0, #11
  773. 6f8: ef000040 svc 0x00000040
  774. 6fc: e8bd0002 pop {r1}
  775. 700: e8bd0002 pop {r1}
  776. 704: e8bd0004 pop {r2}
  777. 708: e8bd0008 pop {r3}
  778. 70c: e8bd4000 pop {lr}
  779. 710: e12fff1e bx lr
  780. 00000714 <sbrk>:
  781. 714: e92d4000 push {lr}
  782. 718: e92d0008 push {r3}
  783. 71c: e92d0004 push {r2}
  784. 720: e92d0002 push {r1}
  785. 724: e92d0001 push {r0}
  786. 728: e3a0000c mov r0, #12
  787. 72c: ef000040 svc 0x00000040
  788. 730: e8bd0002 pop {r1}
  789. 734: e8bd0002 pop {r1}
  790. 738: e8bd0004 pop {r2}
  791. 73c: e8bd0008 pop {r3}
  792. 740: e8bd4000 pop {lr}
  793. 744: e12fff1e bx lr
  794. 00000748 <sleep>:
  795. 748: e92d4000 push {lr}
  796. 74c: e92d0008 push {r3}
  797. 750: e92d0004 push {r2}
  798. 754: e92d0002 push {r1}
  799. 758: e92d0001 push {r0}
  800. 75c: e3a0000d mov r0, #13
  801. 760: ef000040 svc 0x00000040
  802. 764: e8bd0002 pop {r1}
  803. 768: e8bd0002 pop {r1}
  804. 76c: e8bd0004 pop {r2}
  805. 770: e8bd0008 pop {r3}
  806. 774: e8bd4000 pop {lr}
  807. 778: e12fff1e bx lr
  808. 0000077c <uptime>:
  809. 77c: e92d4000 push {lr}
  810. 780: e92d0008 push {r3}
  811. 784: e92d0004 push {r2}
  812. 788: e92d0002 push {r1}
  813. 78c: e92d0001 push {r0}
  814. 790: e3a0000e mov r0, #14
  815. 794: ef000040 svc 0x00000040
  816. 798: e8bd0002 pop {r1}
  817. 79c: e8bd0002 pop {r1}
  818. 7a0: e8bd0004 pop {r2}
  819. 7a4: e8bd0008 pop {r3}
  820. 7a8: e8bd4000 pop {lr}
  821. 7ac: e12fff1e bx lr