Mercurial > hg > Members > tobaru > xv6-osx-rpi
diff src/usr/sh.asm @ 0:53676d1f5817 default tip
firsh commit
author | tobaru |
---|---|
date | Sun, 04 Feb 2018 17:54:49 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/usr/sh.asm Sun Feb 04 17:54:49 2018 +0900 @@ -0,0 +1,2552 @@ + +_sh: file format elf32-littlearm + + +Disassembly of section .text: + +00000000 <runcmd>: +struct cmd *parsecmd(char*); + +// Execute cmd. Never returns. +void +runcmd(struct cmd *cmd) +{ + 0: e92d4800 push {fp, lr} + 4: e1a0b00d mov fp, sp + 8: e24dd078 sub sp, sp, #120 ; 0x78 + c: e1a01000 mov r1, r0 + 10: e50b0004 str r0, [fp, #-4] + 14: e51b0004 ldr r0, [fp, #-4] + 18: e3500000 cmp r0, #0 + 1c: e50b1024 str r1, [fp, #-36] ; 0xffffffdc + 20: 1a000002 bne 30 <runcmd+0x30> + 24: eaffffff b 28 <runcmd+0x28> + 28: eb000645 bl 1944 <exit> + 2c: e50b0028 str r0, [fp, #-40] ; 0xffffffd8 + 30: e51b0004 ldr r0, [fp, #-4] + 34: e5900000 ldr r0, [r0] + 38: e2400001 sub r0, r0, #1 + 3c: e3500004 cmp r0, #4 + 40: e50b002c str r0, [fp, #-44] ; 0xffffffd4 + 44: 8a000009 bhi 70 <runcmd+0x70> + 48: e51b002c ldr r0, [fp, #-44] ; 0xffffffd4 + 4c: e1a01100 lsl r1, r0, #2 + 50: e28f2004 add r2, pc, #4 + 54: e7911002 ldr r1, [r1, r2] + 58: e1a0f001 mov pc, r1 + 5c: 0000007c .word 0x0000007c + 60: 000000d8 .word 0x000000d8 + 64: 00000184 .word 0x00000184 + 68: 00000140 .word 0x00000140 + 6c: 0000029c .word 0x0000029c + 70: e59f0260 ldr r0, [pc, #608] ; 2d8 <runcmd+0x2d8> + 74: eb000099 bl 2e0 <panic> + 78: eaffffff b 7c <runcmd+0x7c> + 7c: e51b0004 ldr r0, [fp, #-4] + 80: e50b0014 str r0, [fp, #-20] ; 0xffffffec + 84: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 88: e5900004 ldr r0, [r0, #4] + 8c: e3500000 cmp r0, #0 + 90: 1a000002 bne a0 <runcmd+0xa0> + 94: eaffffff b 98 <runcmd+0x98> + 98: eb000629 bl 1944 <exit> + 9c: e50b0030 str r0, [fp, #-48] ; 0xffffffd0 + a0: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + a4: e5b01004 ldr r1, [r0, #4]! + a8: e50b0034 str r0, [fp, #-52] ; 0xffffffcc + ac: e1a00001 mov r0, r1 + b0: e51b1034 ldr r1, [fp, #-52] ; 0xffffffcc + b4: eb000661 bl 1a40 <exec> + b8: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + bc: e5912004 ldr r2, [r1, #4] + c0: e59f1214 ldr r1, [pc, #532] ; 2dc <runcmd+0x2dc> + c4: e3a0e002 mov lr, #2 + c8: e50b0038 str r0, [fp, #-56] ; 0xffffffc8 + cc: e1a0000e mov r0, lr + d0: eb0006cf bl 1c14 <printf> + d4: ea00007b b 2c8 <runcmd+0x2c8> + d8: e51b0004 ldr r0, [fp, #-4] + dc: e50b0020 str r0, [fp, #-32] ; 0xffffffe0 + e0: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 + e4: e5900014 ldr r0, [r0, #20] + e8: eb000642 bl 19f8 <close> + ec: e51be020 ldr lr, [fp, #-32] ; 0xffffffe0 + f0: e59e1008 ldr r1, [lr, #8] + f4: e59ee010 ldr lr, [lr, #16] + f8: e58d003c str r0, [sp, #60] ; 0x3c + fc: e1a00001 mov r0, r1 + 100: e1a0100e mov r1, lr + 104: eb000656 bl 1a64 <open> + 108: e3500000 cmp r0, #0 + 10c: aa000007 bge 130 <runcmd+0x130> + 110: eaffffff b 114 <runcmd+0x114> + 114: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 + 118: e5902008 ldr r2, [r0, #8] + 11c: e59f11b0 ldr r1, [pc, #432] ; 2d4 <runcmd+0x2d4> + 120: e3a00002 mov r0, #2 + 124: eb0006ba bl 1c14 <printf> + 128: eb000605 bl 1944 <exit> + 12c: e58d0038 str r0, [sp, #56] ; 0x38 + 130: e51b0020 ldr r0, [fp, #-32] ; 0xffffffe0 + 134: e5900004 ldr r0, [r0, #4] + 138: ebffffb0 bl 0 <runcmd> + 13c: ea000061 b 2c8 <runcmd+0x2c8> + 140: e51b0004 ldr r0, [fp, #-4] + 144: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + 148: eb000075 bl 324 <fork1> + 14c: e3500000 cmp r0, #0 + 150: 1a000004 bne 168 <runcmd+0x168> + 154: eaffffff b 158 <runcmd+0x158> + 158: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 + 15c: e5900004 ldr r0, [r0, #4] + 160: ebffffa6 bl 0 <runcmd> + 164: eaffffff b 168 <runcmd+0x168> + 168: eb0005fe bl 1968 <wait> + 16c: e51be018 ldr lr, [fp, #-24] ; 0xffffffe8 + 170: e59ee008 ldr lr, [lr, #8] + 174: e58d0034 str r0, [sp, #52] ; 0x34 + 178: e1a0000e mov r0, lr + 17c: ebffff9f bl 0 <runcmd> + 180: ea000050 b 2c8 <runcmd+0x2c8> + 184: e51b0004 ldr r0, [fp, #-4] + 188: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + 18c: e24b000c sub r0, fp, #12 + 190: eb0005fd bl 198c <pipe> + 194: e3500000 cmp r0, #0 + 198: aa000003 bge 1ac <runcmd+0x1ac> + 19c: eaffffff b 1a0 <runcmd+0x1a0> + 1a0: e59f0128 ldr r0, [pc, #296] ; 2d0 <runcmd+0x2d0> + 1a4: eb00004d bl 2e0 <panic> + 1a8: eaffffff b 1ac <runcmd+0x1ac> + 1ac: eb00005c bl 324 <fork1> + 1b0: e3500000 cmp r0, #0 + 1b4: 1a000014 bne 20c <runcmd+0x20c> + 1b8: eaffffff b 1bc <runcmd+0x1bc> + 1bc: e3a00001 mov r0, #1 + 1c0: eb00060c bl 19f8 <close> + 1c4: e51be008 ldr lr, [fp, #-8] + 1c8: e58d0030 str r0, [sp, #48] ; 0x30 + 1cc: e1a0000e mov r0, lr + 1d0: eb000662 bl 1b60 <dup> + 1d4: e51be00c ldr lr, [fp, #-12] + 1d8: e58d002c str r0, [sp, #44] ; 0x2c + 1dc: e1a0000e mov r0, lr + 1e0: eb000604 bl 19f8 <close> + 1e4: e51be008 ldr lr, [fp, #-8] + 1e8: e58d0028 str r0, [sp, #40] ; 0x28 + 1ec: e1a0000e mov r0, lr + 1f0: eb000600 bl 19f8 <close> + 1f4: e51be01c ldr lr, [fp, #-28] ; 0xffffffe4 + 1f8: e59ee004 ldr lr, [lr, #4] + 1fc: e58d0024 str r0, [sp, #36] ; 0x24 + 200: e1a0000e mov r0, lr + 204: ebffff7d bl 0 <runcmd> + 208: eaffffff b 20c <runcmd+0x20c> + 20c: eb000044 bl 324 <fork1> + 210: e3500000 cmp r0, #0 + 214: 1a000014 bne 26c <runcmd+0x26c> + 218: eaffffff b 21c <runcmd+0x21c> + 21c: e3a00000 mov r0, #0 + 220: eb0005f4 bl 19f8 <close> + 224: e51be00c ldr lr, [fp, #-12] + 228: e58d0020 str r0, [sp, #32] + 22c: e1a0000e mov r0, lr + 230: eb00064a bl 1b60 <dup> + 234: e51be00c ldr lr, [fp, #-12] + 238: e58d001c str r0, [sp, #28] + 23c: e1a0000e mov r0, lr + 240: eb0005ec bl 19f8 <close> + 244: e51be008 ldr lr, [fp, #-8] + 248: e58d0018 str r0, [sp, #24] + 24c: e1a0000e mov r0, lr + 250: eb0005e8 bl 19f8 <close> + 254: e51be01c ldr lr, [fp, #-28] ; 0xffffffe4 + 258: e59ee008 ldr lr, [lr, #8] + 25c: e58d0014 str r0, [sp, #20] + 260: e1a0000e mov r0, lr + 264: ebffff65 bl 0 <runcmd> + 268: eaffffff b 26c <runcmd+0x26c> + 26c: e51b000c ldr r0, [fp, #-12] + 270: eb0005e0 bl 19f8 <close> + 274: e51be008 ldr lr, [fp, #-8] + 278: e58d0010 str r0, [sp, #16] + 27c: e1a0000e mov r0, lr + 280: eb0005dc bl 19f8 <close> + 284: e58d000c str r0, [sp, #12] + 288: eb0005b6 bl 1968 <wait> + 28c: e58d0008 str r0, [sp, #8] + 290: eb0005b4 bl 1968 <wait> + 294: e58d0004 str r0, [sp, #4] + 298: ea00000a b 2c8 <runcmd+0x2c8> + 29c: e51b0004 ldr r0, [fp, #-4] + 2a0: e50b0010 str r0, [fp, #-16] + 2a4: eb00001e bl 324 <fork1> + 2a8: e3500000 cmp r0, #0 + 2ac: 1a000004 bne 2c4 <runcmd+0x2c4> + 2b0: eaffffff b 2b4 <runcmd+0x2b4> + 2b4: e51b0010 ldr r0, [fp, #-16] + 2b8: e5900004 ldr r0, [r0, #4] + 2bc: ebffff4f bl 0 <runcmd> + 2c0: eaffffff b 2c4 <runcmd+0x2c4> + 2c4: eaffffff b 2c8 <runcmd+0x2c8> + 2c8: eb00059d bl 1944 <exit> + 2cc: e58d0000 str r0, [sp] + 2d0: 00002503 .word 0x00002503 + 2d4: 000024f3 .word 0x000024f3 + 2d8: 000024dc .word 0x000024dc + 2dc: 000024e3 .word 0x000024e3 + +000002e0 <panic>: + 2e0: e92d4800 push {fp, lr} + 2e4: e1a0b00d mov fp, sp + 2e8: e24dd010 sub sp, sp, #16 + 2ec: e1a01000 mov r1, r0 + 2f0: e50b0004 str r0, [fp, #-4] + 2f4: e51b2004 ldr r2, [fp, #-4] + 2f8: e59f0020 ldr r0, [pc, #32] ; 320 <panic+0x40> + 2fc: e3a03002 mov r3, #2 + 300: e58d0008 str r0, [sp, #8] + 304: e1a00003 mov r0, r3 + 308: e59d3008 ldr r3, [sp, #8] + 30c: e58d1004 str r1, [sp, #4] + 310: e1a01003 mov r1, r3 + 314: eb00063e bl 1c14 <printf> + 318: eb000589 bl 1944 <exit> + 31c: e58d0000 str r0, [sp] + 320: 00002531 .word 0x00002531 + +00000324 <fork1>: + 324: e92d4800 push {fp, lr} + 328: e1a0b00d mov fp, sp + 32c: e24dd008 sub sp, sp, #8 + 330: eb00057a bl 1920 <fork> + 334: e58d0004 str r0, [sp, #4] + 338: e59d0004 ldr r0, [sp, #4] + 33c: e3700001 cmn r0, #1 + 340: 1a000003 bne 354 <fork1+0x30> + 344: eaffffff b 348 <fork1+0x24> + 348: e59f0010 ldr r0, [pc, #16] ; 360 <fork1+0x3c> + 34c: ebffffe3 bl 2e0 <panic> + 350: eaffffff b 354 <fork1+0x30> + 354: e59d0004 ldr r0, [sp, #4] + 358: e1a0d00b mov sp, fp + 35c: e8bd8800 pop {fp, pc} + 360: 00002521 .word 0x00002521 + +00000364 <getcmd>: + 364: e92d4800 push {fp, lr} + 368: e1a0b00d mov fp, sp + 36c: e24dd020 sub sp, sp, #32 + 370: e1a02001 mov r2, r1 + 374: e1a03000 mov r3, r0 + 378: e50b0008 str r0, [fp, #-8] + 37c: e50b100c str r1, [fp, #-12] + 380: e59f1070 ldr r1, [pc, #112] ; 3f8 <getcmd+0x94> + 384: e3a00002 mov r0, #2 + 388: e58d2010 str r2, [sp, #16] + 38c: e58d300c str r3, [sp, #12] + 390: eb00061f bl 1c14 <printf> + 394: e51b0008 ldr r0, [fp, #-8] + 398: e51b200c ldr r2, [fp, #-12] + 39c: e3a01000 mov r1, #0 + 3a0: eb000446 bl 14c0 <memset> + 3a4: e51b1008 ldr r1, [fp, #-8] + 3a8: e51b200c ldr r2, [fp, #-12] + 3ac: e58d0008 str r0, [sp, #8] + 3b0: e1a00001 mov r0, r1 + 3b4: e1a01002 mov r1, r2 + 3b8: eb0004ba bl 16a8 <gets> + 3bc: e51b1008 ldr r1, [fp, #-8] + 3c0: e5d11000 ldrb r1, [r1] + 3c4: e3510000 cmp r1, #0 + 3c8: e58d0004 str r0, [sp, #4] + 3cc: 1a000003 bne 3e0 <getcmd+0x7c> + 3d0: eaffffff b 3d4 <getcmd+0x70> + 3d4: e3e00000 mvn r0, #0 + 3d8: e50b0004 str r0, [fp, #-4] + 3dc: ea000002 b 3ec <getcmd+0x88> + 3e0: e3a00000 mov r0, #0 + 3e4: e50b0004 str r0, [fp, #-4] + 3e8: eaffffff b 3ec <getcmd+0x88> + 3ec: e51b0004 ldr r0, [fp, #-4] + 3f0: e1a0d00b mov sp, fp + 3f4: e8bd8800 pop {fp, pc} + 3f8: 00002508 .word 0x00002508 + +000003fc <main>: + 3fc: e92d4800 push {fp, lr} + 400: e1a0b00d mov fp, sp + 404: e24dd018 sub sp, sp, #24 + 408: e3a00000 mov r0, #0 + 40c: e50b0004 str r0, [fp, #-4] + 410: eaffffff b 414 <main+0x18> + 414: e59f0110 ldr r0, [pc, #272] ; 52c <main+0x130> + 418: e3a01002 mov r1, #2 + 41c: eb000590 bl 1a64 <open> + 420: e50b0008 str r0, [fp, #-8] + 424: e3500000 cmp r0, #0 + 428: ba000009 blt 454 <main+0x58> + 42c: eaffffff b 430 <main+0x34> + 430: e51b0008 ldr r0, [fp, #-8] + 434: e3500003 cmp r0, #3 + 438: ba000004 blt 450 <main+0x54> + 43c: eaffffff b 440 <main+0x44> + 440: e51b0008 ldr r0, [fp, #-8] + 444: eb00056b bl 19f8 <close> + 448: e58d000c str r0, [sp, #12] + 44c: ea000000 b 454 <main+0x58> + 450: eaffffef b 414 <main+0x18> + 454: eaffffff b 458 <main+0x5c> + 458: e59f00d0 ldr r0, [pc, #208] ; 530 <main+0x134> + 45c: e3a01064 mov r1, #100 ; 0x64 + 460: ebffffbf bl 364 <getcmd> + 464: e3500000 cmp r0, #0 + 468: ba00002d blt 524 <main+0x128> + 46c: eaffffff b 470 <main+0x74> + 470: e59f00b8 ldr r0, [pc, #184] ; 530 <main+0x134> + 474: e5d00000 ldrb r0, [r0] + 478: e3500063 cmp r0, #99 ; 0x63 + 47c: 1a00001d bne 4f8 <main+0xfc> + 480: eaffffff b 484 <main+0x88> + 484: e59f00a4 ldr r0, [pc, #164] ; 530 <main+0x134> + 488: e5d00001 ldrb r0, [r0, #1] + 48c: e3500064 cmp r0, #100 ; 0x64 + 490: 1a000018 bne 4f8 <main+0xfc> + 494: eaffffff b 498 <main+0x9c> + 498: e59f0090 ldr r0, [pc, #144] ; 530 <main+0x134> + 49c: e5d00002 ldrb r0, [r0, #2] + 4a0: e3500020 cmp r0, #32 + 4a4: 1a000013 bne 4f8 <main+0xfc> + 4a8: eaffffff b 4ac <main+0xb0> + 4ac: e59f007c ldr r0, [pc, #124] ; 530 <main+0x134> + 4b0: e58d0008 str r0, [sp, #8] + 4b4: eb0003ec bl 146c <strlen> + 4b8: e59de008 ldr lr, [sp, #8] + 4bc: e08e0000 add r0, lr, r0 + 4c0: e3a01000 mov r1, #0 + 4c4: e5401001 strb r1, [r0, #-1] + 4c8: e28e0003 add r0, lr, #3 + 4cc: eb00059a bl 1b3c <chdir> + 4d0: e3500000 cmp r0, #0 + 4d4: aa000006 bge 4f4 <main+0xf8> + 4d8: eaffffff b 4dc <main+0xe0> + 4dc: e59f004c ldr r0, [pc, #76] ; 530 <main+0x134> + 4e0: e2802003 add r2, r0, #3 + 4e4: e59f1048 ldr r1, [pc, #72] ; 534 <main+0x138> + 4e8: e3a00002 mov r0, #2 + 4ec: eb0005c8 bl 1c14 <printf> + 4f0: eaffffff b 4f4 <main+0xf8> + 4f4: eaffffd7 b 458 <main+0x5c> + 4f8: ebffff89 bl 324 <fork1> + 4fc: e3500000 cmp r0, #0 + 500: 1a000004 bne 518 <main+0x11c> + 504: eaffffff b 508 <main+0x10c> + 508: e59f0020 ldr r0, [pc, #32] ; 530 <main+0x134> + 50c: eb000009 bl 538 <parsecmd> + 510: ebfffeba bl 0 <runcmd> + 514: eaffffff b 518 <main+0x11c> + 518: eb000512 bl 1968 <wait> + 51c: e58d0004 str r0, [sp, #4] + 520: eaffffcc b 458 <main+0x5c> + 524: eb000506 bl 1944 <exit> + 528: e58d0000 str r0, [sp] + 52c: 0000250b .word 0x0000250b + 530: 000025c4 .word 0x000025c4 + 534: 00002513 .word 0x00002513 + +00000538 <parsecmd>: + 538: e92d4800 push {fp, lr} + 53c: e1a0b00d mov fp, sp + 540: e24dd020 sub sp, sp, #32 + 544: e1a01000 mov r1, r0 + 548: e50b0004 str r0, [fp, #-4] + 54c: e51b0004 ldr r0, [fp, #-4] + 550: e58d0010 str r0, [sp, #16] + 554: e58d100c str r1, [sp, #12] + 558: eb0003c3 bl 146c <strlen> + 55c: e59d1010 ldr r1, [sp, #16] + 560: e0810000 add r0, r1, r0 + 564: e50b0008 str r0, [fp, #-8] + 568: e51b1008 ldr r1, [fp, #-8] + 56c: e24b0004 sub r0, fp, #4 + 570: e58d0008 str r0, [sp, #8] + 574: eb0001a5 bl c10 <parseline> + 578: e50b000c str r0, [fp, #-12] + 57c: e51b1008 ldr r1, [fp, #-8] + 580: e59f2054 ldr r2, [pc, #84] ; 5dc <parsecmd+0xa4> + 584: e59d0008 ldr r0, [sp, #8] + 588: eb000162 bl b18 <peek> + 58c: e51b1004 ldr r1, [fp, #-4] + 590: e51b2008 ldr r2, [fp, #-8] + 594: e1510002 cmp r1, r2 + 598: e58d0004 str r0, [sp, #4] + 59c: 0a000007 beq 5c0 <parsecmd+0x88> + 5a0: eaffffff b 5a4 <parsecmd+0x6c> + 5a4: e51b2004 ldr r2, [fp, #-4] + 5a8: e59f1030 ldr r1, [pc, #48] ; 5e0 <parsecmd+0xa8> + 5ac: e3a00002 mov r0, #2 + 5b0: eb000597 bl 1c14 <printf> + 5b4: e59f0028 ldr r0, [pc, #40] ; 5e4 <parsecmd+0xac> + 5b8: ebffff48 bl 2e0 <panic> + 5bc: eaffffff b 5c0 <parsecmd+0x88> + 5c0: e51b000c ldr r0, [fp, #-12] + 5c4: eb0001d3 bl d18 <nulterminate> + 5c8: e51be00c ldr lr, [fp, #-12] + 5cc: e58d0000 str r0, [sp] + 5d0: e1a0000e mov r0, lr + 5d4: e1a0d00b mov sp, fp + 5d8: e8bd8800 pop {fp, pc} + 5dc: 000024f2 .word 0x000024f2 + 5e0: 00002526 .word 0x00002526 + 5e4: 00002535 .word 0x00002535 + +000005e8 <execcmd>: + 5e8: e92d4800 push {fp, lr} + 5ec: e1a0b00d mov fp, sp + 5f0: e24dd010 sub sp, sp, #16 + 5f4: e3a00054 mov r0, #84 ; 0x54 + 5f8: e58d0008 str r0, [sp, #8] + 5fc: eb0006ea bl 21ac <malloc> + 600: e50b0004 str r0, [fp, #-4] + 604: e51b0004 ldr r0, [fp, #-4] + 608: e3a01000 mov r1, #0 + 60c: e59d2008 ldr r2, [sp, #8] + 610: eb0003aa bl 14c0 <memset> + 614: e51b1004 ldr r1, [fp, #-4] + 618: e3a02001 mov r2, #1 + 61c: e5812000 str r2, [r1] + 620: e51b1004 ldr r1, [fp, #-4] + 624: e58d0004 str r0, [sp, #4] + 628: e1a00001 mov r0, r1 + 62c: e1a0d00b mov sp, fp + 630: e8bd8800 pop {fp, pc} + +00000634 <redircmd>: + 634: e92d4c70 push {r4, r5, r6, sl, fp, lr} + 638: e28db010 add fp, sp, #16 + 63c: e24dd030 sub sp, sp, #48 ; 0x30 + 640: e59bc008 ldr ip, [fp, #8] + 644: e1a0e003 mov lr, r3 + 648: e1a04002 mov r4, r2 + 64c: e1a05001 mov r5, r1 + 650: e1a06000 mov r6, r0 + 654: e50b0014 str r0, [fp, #-20] ; 0xffffffec + 658: e50b1018 str r1, [fp, #-24] ; 0xffffffe8 + 65c: e50b201c str r2, [fp, #-28] ; 0xffffffe4 + 660: e58d3020 str r3, [sp, #32] + 664: e3a00018 mov r0, #24 + 668: e58d0018 str r0, [sp, #24] + 66c: e58de014 str lr, [sp, #20] + 670: e58d4010 str r4, [sp, #16] + 674: e58d500c str r5, [sp, #12] + 678: e58d6008 str r6, [sp, #8] + 67c: e58dc004 str ip, [sp, #4] + 680: eb0006c9 bl 21ac <malloc> + 684: e58d001c str r0, [sp, #28] + 688: e59d001c ldr r0, [sp, #28] + 68c: e3a01000 mov r1, #0 + 690: e59d2018 ldr r2, [sp, #24] + 694: eb000389 bl 14c0 <memset> + 698: e59d101c ldr r1, [sp, #28] + 69c: e3a02002 mov r2, #2 + 6a0: e5812000 str r2, [r1] + 6a4: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 6a8: e59d201c ldr r2, [sp, #28] + 6ac: e5821004 str r1, [r2, #4] + 6b0: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8 + 6b4: e59d201c ldr r2, [sp, #28] + 6b8: e5821008 str r1, [r2, #8] + 6bc: e51b101c ldr r1, [fp, #-28] ; 0xffffffe4 + 6c0: e59d201c ldr r2, [sp, #28] + 6c4: e582100c str r1, [r2, #12] + 6c8: e59d1020 ldr r1, [sp, #32] + 6cc: e59d201c ldr r2, [sp, #28] + 6d0: e5821010 str r1, [r2, #16] + 6d4: e59b1008 ldr r1, [fp, #8] + 6d8: e59d201c ldr r2, [sp, #28] + 6dc: e5821014 str r1, [r2, #20] + 6e0: e59d101c ldr r1, [sp, #28] + 6e4: e58d0000 str r0, [sp] + 6e8: e1a00001 mov r0, r1 + 6ec: e24bd010 sub sp, fp, #16 + 6f0: e8bd8c70 pop {r4, r5, r6, sl, fp, pc} + +000006f4 <pipecmd>: + 6f4: e92d4800 push {fp, lr} + 6f8: e1a0b00d mov fp, sp + 6fc: e24dd020 sub sp, sp, #32 + 700: e1a02001 mov r2, r1 + 704: e1a03000 mov r3, r0 + 708: e50b0004 str r0, [fp, #-4] + 70c: e50b1008 str r1, [fp, #-8] + 710: e3a0000c mov r0, #12 + 714: e58d0010 str r0, [sp, #16] + 718: e58d200c str r2, [sp, #12] + 71c: e58d3008 str r3, [sp, #8] + 720: eb0006a1 bl 21ac <malloc> + 724: e50b000c str r0, [fp, #-12] + 728: e51b000c ldr r0, [fp, #-12] + 72c: e3a01000 mov r1, #0 + 730: e59d2010 ldr r2, [sp, #16] + 734: eb000361 bl 14c0 <memset> + 738: e51b100c ldr r1, [fp, #-12] + 73c: e3a02003 mov r2, #3 + 740: e5812000 str r2, [r1] + 744: e51b1004 ldr r1, [fp, #-4] + 748: e51b200c ldr r2, [fp, #-12] + 74c: e5821004 str r1, [r2, #4] + 750: e51b1008 ldr r1, [fp, #-8] + 754: e51b200c ldr r2, [fp, #-12] + 758: e5821008 str r1, [r2, #8] + 75c: e51b100c ldr r1, [fp, #-12] + 760: e58d0004 str r0, [sp, #4] + 764: e1a00001 mov r0, r1 + 768: e1a0d00b mov sp, fp + 76c: e8bd8800 pop {fp, pc} + +00000770 <listcmd>: + 770: e92d4800 push {fp, lr} + 774: e1a0b00d mov fp, sp + 778: e24dd020 sub sp, sp, #32 + 77c: e1a02001 mov r2, r1 + 780: e1a03000 mov r3, r0 + 784: e50b0004 str r0, [fp, #-4] + 788: e50b1008 str r1, [fp, #-8] + 78c: e3a0000c mov r0, #12 + 790: e58d0010 str r0, [sp, #16] + 794: e58d200c str r2, [sp, #12] + 798: e58d3008 str r3, [sp, #8] + 79c: eb000682 bl 21ac <malloc> + 7a0: e50b000c str r0, [fp, #-12] + 7a4: e51b000c ldr r0, [fp, #-12] + 7a8: e3a01000 mov r1, #0 + 7ac: e59d2010 ldr r2, [sp, #16] + 7b0: eb000342 bl 14c0 <memset> + 7b4: e51b100c ldr r1, [fp, #-12] + 7b8: e3a02004 mov r2, #4 + 7bc: e5812000 str r2, [r1] + 7c0: e51b1004 ldr r1, [fp, #-4] + 7c4: e51b200c ldr r2, [fp, #-12] + 7c8: e5821004 str r1, [r2, #4] + 7cc: e51b1008 ldr r1, [fp, #-8] + 7d0: e51b200c ldr r2, [fp, #-12] + 7d4: e5821008 str r1, [r2, #8] + 7d8: e51b100c ldr r1, [fp, #-12] + 7dc: e58d0004 str r0, [sp, #4] + 7e0: e1a00001 mov r0, r1 + 7e4: e1a0d00b mov sp, fp + 7e8: e8bd8800 pop {fp, pc} + +000007ec <backcmd>: + 7ec: e92d4800 push {fp, lr} + 7f0: e1a0b00d mov fp, sp + 7f4: e24dd018 sub sp, sp, #24 + 7f8: e1a01000 mov r1, r0 + 7fc: e50b0004 str r0, [fp, #-4] + 800: e3a00008 mov r0, #8 + 804: e58d000c str r0, [sp, #12] + 808: e58d1008 str r1, [sp, #8] + 80c: eb000666 bl 21ac <malloc> + 810: e50b0008 str r0, [fp, #-8] + 814: e51b0008 ldr r0, [fp, #-8] + 818: e3a01000 mov r1, #0 + 81c: e59d200c ldr r2, [sp, #12] + 820: eb000326 bl 14c0 <memset> + 824: e51b1008 ldr r1, [fp, #-8] + 828: e3a02005 mov r2, #5 + 82c: e5812000 str r2, [r1] + 830: e51b1004 ldr r1, [fp, #-4] + 834: e51b2008 ldr r2, [fp, #-8] + 838: e5821004 str r1, [r2, #4] + 83c: e51b1008 ldr r1, [fp, #-8] + 840: e58d0004 str r0, [sp, #4] + 844: e1a00001 mov r0, r1 + 848: e1a0d00b mov sp, fp + 84c: e8bd8800 pop {fp, pc} + +00000850 <gettoken>: + 850: e92d4830 push {r4, r5, fp, lr} + 854: e28db008 add fp, sp, #8 + 858: e24dd038 sub sp, sp, #56 ; 0x38 + 85c: e1a0c003 mov ip, r3 + 860: e1a0e002 mov lr, r2 + 864: e1a04001 mov r4, r1 + 868: e1a05000 mov r5, r0 + 86c: e50b000c str r0, [fp, #-12] + 870: e50b1010 str r1, [fp, #-16] + 874: e50b2014 str r2, [fp, #-20] ; 0xffffffec + 878: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 + 87c: e51b000c ldr r0, [fp, #-12] + 880: e5900000 ldr r0, [r0] + 884: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + 888: e58dc01c str ip, [sp, #28] + 88c: e58de018 str lr, [sp, #24] + 890: e58d4014 str r4, [sp, #20] + 894: e58d5010 str r5, [sp, #16] + 898: eaffffff b 89c <gettoken+0x4c> + 89c: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 8a0: e51b1010 ldr r1, [fp, #-16] + 8a4: e3a02000 mov r2, #0 + 8a8: e1500001 cmp r0, r1 + 8ac: e58d200c str r2, [sp, #12] + 8b0: 2a000008 bcs 8d8 <gettoken+0x88> + 8b4: eaffffff b 8b8 <gettoken+0x68> + 8b8: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 8bc: e5d01000 ldrb r1, [r0] + 8c0: e59f0248 ldr r0, [pc, #584] ; b10 <gettoken+0x2c0> + 8c4: eb000356 bl 1624 <strchr> + 8c8: e3500000 cmp r0, #0 + 8cc: 13a00001 movne r0, #1 + 8d0: e58d000c str r0, [sp, #12] + 8d4: eaffffff b 8d8 <gettoken+0x88> + 8d8: e59d000c ldr r0, [sp, #12] + 8dc: e3100001 tst r0, #1 + 8e0: 0a000004 beq 8f8 <gettoken+0xa8> + 8e4: eaffffff b 8e8 <gettoken+0x98> + 8e8: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 8ec: e2800001 add r0, r0, #1 + 8f0: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + 8f4: eaffffe8 b 89c <gettoken+0x4c> + 8f8: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 8fc: e3500000 cmp r0, #0 + 900: 0a000004 beq 918 <gettoken+0xc8> + 904: eaffffff b 908 <gettoken+0xb8> + 908: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 90c: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 910: e5810000 str r0, [r1] + 914: eaffffff b 918 <gettoken+0xc8> + 918: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 91c: e5d01000 ldrb r1, [r0] + 920: e58d1020 str r1, [sp, #32] + 924: e5d00000 ldrb r0, [r0] + 928: e1a01000 mov r1, r0 + 92c: e3500000 cmp r0, #0 + 930: e58d1008 str r1, [sp, #8] + 934: 0a000016 beq 994 <gettoken+0x144> + 938: eaffffff b 93c <gettoken+0xec> + 93c: e59d0008 ldr r0, [sp, #8] + 940: e3500026 cmp r0, #38 ; 0x26 + 944: 0a000013 beq 998 <gettoken+0x148> + 948: eaffffff b 94c <gettoken+0xfc> + 94c: e59d0008 ldr r0, [sp, #8] + 950: e2401028 sub r1, r0, #40 ; 0x28 + 954: e3510002 cmp r1, #2 + 958: 3a00000e bcc 998 <gettoken+0x148> + 95c: eaffffff b 960 <gettoken+0x110> + 960: e59d0008 ldr r0, [sp, #8] + 964: e240103b sub r1, r0, #59 ; 0x3b + 968: e3510002 cmp r1, #2 + 96c: 3a000009 bcc 998 <gettoken+0x148> + 970: eaffffff b 974 <gettoken+0x124> + 974: e59d0008 ldr r0, [sp, #8] + 978: e350003e cmp r0, #62 ; 0x3e + 97c: 0a000009 beq 9a8 <gettoken+0x158> + 980: eaffffff b 984 <gettoken+0x134> + 984: e59d0008 ldr r0, [sp, #8] + 988: e350007c cmp r0, #124 ; 0x7c + 98c: 0a000001 beq 998 <gettoken+0x148> + 990: ea000013 b 9e4 <gettoken+0x194> + 994: ea000037 b a78 <gettoken+0x228> + 998: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 99c: e2800001 add r0, r0, #1 + 9a0: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + 9a4: ea000033 b a78 <gettoken+0x228> + 9a8: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 9ac: e2800001 add r0, r0, #1 + 9b0: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + 9b4: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 9b8: e5d00000 ldrb r0, [r0] + 9bc: e350003e cmp r0, #62 ; 0x3e + 9c0: 1a000006 bne 9e0 <gettoken+0x190> + 9c4: eaffffff b 9c8 <gettoken+0x178> + 9c8: e3a0002b mov r0, #43 ; 0x2b + 9cc: e58d0020 str r0, [sp, #32] + 9d0: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 9d4: e2800001 add r0, r0, #1 + 9d8: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + 9dc: eaffffff b 9e0 <gettoken+0x190> + 9e0: ea000024 b a78 <gettoken+0x228> + 9e4: e3a00061 mov r0, #97 ; 0x61 + 9e8: e58d0020 str r0, [sp, #32] + 9ec: eaffffff b 9f0 <gettoken+0x1a0> + 9f0: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + 9f4: e51b1010 ldr r1, [fp, #-16] + 9f8: e3a02000 mov r2, #0 + 9fc: e1500001 cmp r0, r1 + a00: e58d2004 str r2, [sp, #4] + a04: 2a000012 bcs a54 <gettoken+0x204> + a08: eaffffff b a0c <gettoken+0x1bc> + a0c: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + a10: e5d01000 ldrb r1, [r0] + a14: e59f00f4 ldr r0, [pc, #244] ; b10 <gettoken+0x2c0> + a18: eb000301 bl 1624 <strchr> + a1c: e3a01000 mov r1, #0 + a20: e3500000 cmp r0, #0 + a24: e58d1004 str r1, [sp, #4] + a28: 1a000009 bne a54 <gettoken+0x204> + a2c: eaffffff b a30 <gettoken+0x1e0> + a30: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + a34: e5d01000 ldrb r1, [r0] + a38: e59f00d4 ldr r0, [pc, #212] ; b14 <gettoken+0x2c4> + a3c: eb0002f8 bl 1624 <strchr> + a40: e3a01000 mov r1, #0 + a44: e3500000 cmp r0, #0 + a48: 03a01001 moveq r1, #1 + a4c: e58d1004 str r1, [sp, #4] + a50: eaffffff b a54 <gettoken+0x204> + a54: e59d0004 ldr r0, [sp, #4] + a58: e3100001 tst r0, #1 + a5c: 0a000004 beq a74 <gettoken+0x224> + a60: eaffffff b a64 <gettoken+0x214> + a64: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + a68: e2800001 add r0, r0, #1 + a6c: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + a70: eaffffde b 9f0 <gettoken+0x1a0> + a74: eaffffff b a78 <gettoken+0x228> + a78: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 + a7c: e3500000 cmp r0, #0 + a80: 0a000004 beq a98 <gettoken+0x248> + a84: eaffffff b a88 <gettoken+0x238> + a88: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + a8c: e51b1018 ldr r1, [fp, #-24] ; 0xffffffe8 + a90: e5810000 str r0, [r1] + a94: eaffffff b a98 <gettoken+0x248> + a98: eaffffff b a9c <gettoken+0x24c> + a9c: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + aa0: e51b1010 ldr r1, [fp, #-16] + aa4: e3a02000 mov r2, #0 + aa8: e1500001 cmp r0, r1 + aac: e58d2000 str r2, [sp] + ab0: 2a000008 bcs ad8 <gettoken+0x288> + ab4: eaffffff b ab8 <gettoken+0x268> + ab8: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + abc: e5d01000 ldrb r1, [r0] + ac0: e59f0048 ldr r0, [pc, #72] ; b10 <gettoken+0x2c0> + ac4: eb0002d6 bl 1624 <strchr> + ac8: e3500000 cmp r0, #0 + acc: 13a00001 movne r0, #1 + ad0: e58d0000 str r0, [sp] + ad4: eaffffff b ad8 <gettoken+0x288> + ad8: e59d0000 ldr r0, [sp] + adc: e3100001 tst r0, #1 + ae0: 0a000004 beq af8 <gettoken+0x2a8> + ae4: eaffffff b ae8 <gettoken+0x298> + ae8: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + aec: e2800001 add r0, r0, #1 + af0: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + af4: eaffffe8 b a9c <gettoken+0x24c> + af8: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + afc: e51b100c ldr r1, [fp, #-12] + b00: e5810000 str r0, [r1] + b04: e59d0020 ldr r0, [sp, #32] + b08: e24bd008 sub sp, fp, #8 + b0c: e8bd8830 pop {r4, r5, fp, pc} + b10: 000025a4 .word 0x000025a4 + b14: 000025aa .word 0x000025aa + +00000b18 <peek>: + b18: e92d4800 push {fp, lr} + b1c: e1a0b00d mov fp, sp + b20: e24dd028 sub sp, sp, #40 ; 0x28 + b24: e1a03002 mov r3, r2 + b28: e1a0c001 mov ip, r1 + b2c: e1a0e000 mov lr, r0 + b30: e50b0004 str r0, [fp, #-4] + b34: e50b1008 str r1, [fp, #-8] + b38: e50b200c str r2, [fp, #-12] + b3c: e51b0004 ldr r0, [fp, #-4] + b40: e5900000 ldr r0, [r0] + b44: e50b0010 str r0, [fp, #-16] + b48: e58d3014 str r3, [sp, #20] + b4c: e58dc010 str ip, [sp, #16] + b50: e58de00c str lr, [sp, #12] + b54: eaffffff b b58 <peek+0x40> + b58: e51b0010 ldr r0, [fp, #-16] + b5c: e51b1008 ldr r1, [fp, #-8] + b60: e3a02000 mov r2, #0 + b64: e1500001 cmp r0, r1 + b68: e58d2008 str r2, [sp, #8] + b6c: 2a000008 bcs b94 <peek+0x7c> + b70: eaffffff b b74 <peek+0x5c> + b74: e51b0010 ldr r0, [fp, #-16] + b78: e5d01000 ldrb r1, [r0] + b7c: e59f0088 ldr r0, [pc, #136] ; c0c <peek+0xf4> + b80: eb0002a7 bl 1624 <strchr> + b84: e3500000 cmp r0, #0 + b88: 13a00001 movne r0, #1 + b8c: e58d0008 str r0, [sp, #8] + b90: eaffffff b b94 <peek+0x7c> + b94: e59d0008 ldr r0, [sp, #8] + b98: e3100001 tst r0, #1 + b9c: 0a000004 beq bb4 <peek+0x9c> + ba0: eaffffff b ba4 <peek+0x8c> + ba4: e51b0010 ldr r0, [fp, #-16] + ba8: e2800001 add r0, r0, #1 + bac: e50b0010 str r0, [fp, #-16] + bb0: eaffffe8 b b58 <peek+0x40> + bb4: e51b0010 ldr r0, [fp, #-16] + bb8: e51b1004 ldr r1, [fp, #-4] + bbc: e5810000 str r0, [r1] + bc0: e51b0010 ldr r0, [fp, #-16] + bc4: e5d00000 ldrb r0, [r0] + bc8: e3a01000 mov r1, #0 + bcc: e3500000 cmp r0, #0 + bd0: e58d1004 str r1, [sp, #4] + bd4: 0a000008 beq bfc <peek+0xe4> + bd8: eaffffff b bdc <peek+0xc4> + bdc: e51b000c ldr r0, [fp, #-12] + be0: e51b1010 ldr r1, [fp, #-16] + be4: e5d11000 ldrb r1, [r1] + be8: eb00028d bl 1624 <strchr> + bec: e3500000 cmp r0, #0 + bf0: 13a00001 movne r0, #1 + bf4: e58d0004 str r0, [sp, #4] + bf8: eaffffff b bfc <peek+0xe4> + bfc: e59d0004 ldr r0, [sp, #4] + c00: e2000001 and r0, r0, #1 + c04: e1a0d00b mov sp, fp + c08: e8bd8800 pop {fp, pc} + c0c: 000025a4 .word 0x000025a4 + +00000c10 <parseline>: + c10: e92d4800 push {fp, lr} + c14: e1a0b00d mov fp, sp + c18: e24dd030 sub sp, sp, #48 ; 0x30 + c1c: e1a02001 mov r2, r1 + c20: e1a03000 mov r3, r0 + c24: e50b0004 str r0, [fp, #-4] + c28: e50b1008 str r1, [fp, #-8] + c2c: e51b0004 ldr r0, [fp, #-4] + c30: e51b1008 ldr r1, [fp, #-8] + c34: e50b2010 str r2, [fp, #-16] + c38: e50b3014 str r3, [fp, #-20] ; 0xffffffec + c3c: eb00009a bl eac <parsepipe> + c40: e50b000c str r0, [fp, #-12] + c44: eaffffff b c48 <parseline+0x38> + c48: e51b0004 ldr r0, [fp, #-4] + c4c: e51b1008 ldr r1, [fp, #-8] + c50: e59f20b8 ldr r2, [pc, #184] ; d10 <parseline+0x100> + c54: ebffffaf bl b18 <peek> + c58: e3500000 cmp r0, #0 + c5c: 0a00000c beq c94 <parseline+0x84> + c60: eaffffff b c64 <parseline+0x54> + c64: e51b0004 ldr r0, [fp, #-4] + c68: e51b1008 ldr r1, [fp, #-8] + c6c: e3a02000 mov r2, #0 + c70: e58d2018 str r2, [sp, #24] + c74: e59d3018 ldr r3, [sp, #24] + c78: ebfffef4 bl 850 <gettoken> + c7c: e51b100c ldr r1, [fp, #-12] + c80: e58d0014 str r0, [sp, #20] + c84: e1a00001 mov r0, r1 + c88: ebfffed7 bl 7ec <backcmd> + c8c: e50b000c str r0, [fp, #-12] + c90: eaffffec b c48 <parseline+0x38> + c94: e51b0004 ldr r0, [fp, #-4] + c98: e51b1008 ldr r1, [fp, #-8] + c9c: e59f2070 ldr r2, [pc, #112] ; d14 <parseline+0x104> + ca0: ebffff9c bl b18 <peek> + ca4: e3500000 cmp r0, #0 + ca8: 0a000015 beq d04 <parseline+0xf4> + cac: eaffffff b cb0 <parseline+0xa0> + cb0: e51b0004 ldr r0, [fp, #-4] + cb4: e51b1008 ldr r1, [fp, #-8] + cb8: e3a02000 mov r2, #0 + cbc: e58d2010 str r2, [sp, #16] + cc0: e59d3010 ldr r3, [sp, #16] + cc4: ebfffee1 bl 850 <gettoken> + cc8: e51b100c ldr r1, [fp, #-12] + ccc: e51b2004 ldr r2, [fp, #-4] + cd0: e51b3008 ldr r3, [fp, #-8] + cd4: e58d000c str r0, [sp, #12] + cd8: e1a00002 mov r0, r2 + cdc: e58d1008 str r1, [sp, #8] + ce0: e1a01003 mov r1, r3 + ce4: ebffffc9 bl c10 <parseline> + ce8: e59d1008 ldr r1, [sp, #8] + cec: e58d0004 str r0, [sp, #4] + cf0: e1a00001 mov r0, r1 + cf4: e59d1004 ldr r1, [sp, #4] + cf8: ebfffe9c bl 770 <listcmd> + cfc: e50b000c str r0, [fp, #-12] + d00: eaffffff b d04 <parseline+0xf4> + d04: e51b000c ldr r0, [fp, #-12] + d08: e1a0d00b mov sp, fp + d0c: e8bd8800 pop {fp, pc} + d10: 0000253c .word 0x0000253c + d14: 00002583 .word 0x00002583 + +00000d18 <nulterminate>: + d18: e92d4800 push {fp, lr} + d1c: e1a0b00d mov fp, sp + d20: e24dd040 sub sp, sp, #64 ; 0x40 + d24: e1a01000 mov r1, r0 + d28: e50b0008 str r0, [fp, #-8] + d2c: e51b0008 ldr r0, [fp, #-8] + d30: e3500000 cmp r0, #0 + d34: e58d101c str r1, [sp, #28] + d38: 1a000003 bne d4c <nulterminate+0x34> + d3c: eaffffff b d40 <nulterminate+0x28> + d40: e3a00000 mov r0, #0 + d44: e50b0004 str r0, [fp, #-4] + d48: ea000054 b ea0 <nulterminate+0x188> + d4c: e51b0008 ldr r0, [fp, #-8] + d50: e5900000 ldr r0, [r0] + d54: e2400001 sub r0, r0, #1 + d58: e3500004 cmp r0, #4 + d5c: e58d0018 str r0, [sp, #24] + d60: 8a00004b bhi e94 <nulterminate+0x17c> + d64: e59d0018 ldr r0, [sp, #24] + d68: e1a01100 lsl r1, r0, #2 + d6c: e28f2004 add r2, pc, #4 + d70: e7911002 ldr r1, [r1, r2] + d74: e1a0f001 mov pc, r1 + d78: 00000d8c .word 0x00000d8c + d7c: 00000dec .word 0x00000dec + d80: 00000e18 .word 0x00000e18 + d84: 00000e48 .word 0x00000e48 + d88: 00000e78 .word 0x00000e78 + d8c: e51b0008 ldr r0, [fp, #-8] + d90: e50b0014 str r0, [fp, #-20] ; 0xffffffec + d94: e3a00000 mov r0, #0 + d98: e50b000c str r0, [fp, #-12] + d9c: eaffffff b da0 <nulterminate+0x88> + da0: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + da4: e51b100c ldr r1, [fp, #-12] + da8: e0800101 add r0, r0, r1, lsl #2 + dac: e5900004 ldr r0, [r0, #4] + db0: e3500000 cmp r0, #0 + db4: 0a00000b beq de8 <nulterminate+0xd0> + db8: eaffffff b dbc <nulterminate+0xa4> + dbc: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + dc0: e51b100c ldr r1, [fp, #-12] + dc4: e0800101 add r0, r0, r1, lsl #2 + dc8: e590002c ldr r0, [r0, #44] ; 0x2c + dcc: e3a01000 mov r1, #0 + dd0: e5c01000 strb r1, [r0] + dd4: eaffffff b dd8 <nulterminate+0xc0> + dd8: e51b000c ldr r0, [fp, #-12] + ddc: e2800001 add r0, r0, #1 + de0: e50b000c str r0, [fp, #-12] + de4: eaffffed b da0 <nulterminate+0x88> + de8: ea000029 b e94 <nulterminate+0x17c> + dec: e51b0008 ldr r0, [fp, #-8] + df0: e58d0020 str r0, [sp, #32] + df4: e59d0020 ldr r0, [sp, #32] + df8: e5900004 ldr r0, [r0, #4] + dfc: ebffffc5 bl d18 <nulterminate> + e00: e59de020 ldr lr, [sp, #32] + e04: e59ee00c ldr lr, [lr, #12] + e08: e3a01000 mov r1, #0 + e0c: e5ce1000 strb r1, [lr] + e10: e58d0014 str r0, [sp, #20] + e14: ea00001e b e94 <nulterminate+0x17c> + e18: e51b0008 ldr r0, [fp, #-8] + e1c: e50b001c str r0, [fp, #-28] ; 0xffffffe4 + e20: e51b001c ldr r0, [fp, #-28] ; 0xffffffe4 + e24: e5900004 ldr r0, [r0, #4] + e28: ebffffba bl d18 <nulterminate> + e2c: e51be01c ldr lr, [fp, #-28] ; 0xffffffe4 + e30: e59ee008 ldr lr, [lr, #8] + e34: e58d0010 str r0, [sp, #16] + e38: e1a0000e mov r0, lr + e3c: ebffffb5 bl d18 <nulterminate> + e40: e58d000c str r0, [sp, #12] + e44: ea000012 b e94 <nulterminate+0x17c> + e48: e51b0008 ldr r0, [fp, #-8] + e4c: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 + e50: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 + e54: e5900004 ldr r0, [r0, #4] + e58: ebffffae bl d18 <nulterminate> + e5c: e51be018 ldr lr, [fp, #-24] ; 0xffffffe8 + e60: e59ee008 ldr lr, [lr, #8] + e64: e58d0008 str r0, [sp, #8] + e68: e1a0000e mov r0, lr + e6c: ebffffa9 bl d18 <nulterminate> + e70: e58d0004 str r0, [sp, #4] + e74: ea000006 b e94 <nulterminate+0x17c> + e78: e51b0008 ldr r0, [fp, #-8] + e7c: e50b0010 str r0, [fp, #-16] + e80: e51b0010 ldr r0, [fp, #-16] + e84: e5900004 ldr r0, [r0, #4] + e88: ebffffa2 bl d18 <nulterminate> + e8c: e58d0000 str r0, [sp] + e90: eaffffff b e94 <nulterminate+0x17c> + e94: e51b0008 ldr r0, [fp, #-8] + e98: e50b0004 str r0, [fp, #-4] + e9c: eaffffff b ea0 <nulterminate+0x188> + ea0: e51b0004 ldr r0, [fp, #-4] + ea4: e1a0d00b mov sp, fp + ea8: e8bd8800 pop {fp, pc} + +00000eac <parsepipe>: + eac: e92d4800 push {fp, lr} + eb0: e1a0b00d mov fp, sp + eb4: e24dd028 sub sp, sp, #40 ; 0x28 + eb8: e1a02001 mov r2, r1 + ebc: e1a03000 mov r3, r0 + ec0: e50b0004 str r0, [fp, #-4] + ec4: e50b1008 str r1, [fp, #-8] + ec8: e51b0004 ldr r0, [fp, #-4] + ecc: e51b1008 ldr r1, [fp, #-8] + ed0: e50b2010 str r2, [fp, #-16] + ed4: e58d3014 str r3, [sp, #20] + ed8: eb000020 bl f60 <parseexec> + edc: e50b000c str r0, [fp, #-12] + ee0: e51b0004 ldr r0, [fp, #-4] + ee4: e51b1008 ldr r1, [fp, #-8] + ee8: e59f206c ldr r2, [pc, #108] ; f5c <parsepipe+0xb0> + eec: ebffff09 bl b18 <peek> + ef0: e3500000 cmp r0, #0 + ef4: 0a000015 beq f50 <parsepipe+0xa4> + ef8: eaffffff b efc <parsepipe+0x50> + efc: e51b0004 ldr r0, [fp, #-4] + f00: e51b1008 ldr r1, [fp, #-8] + f04: e3a02000 mov r2, #0 + f08: e58d2010 str r2, [sp, #16] + f0c: e59d3010 ldr r3, [sp, #16] + f10: ebfffe4e bl 850 <gettoken> + f14: e51b100c ldr r1, [fp, #-12] + f18: e51b2004 ldr r2, [fp, #-4] + f1c: e51b3008 ldr r3, [fp, #-8] + f20: e58d000c str r0, [sp, #12] + f24: e1a00002 mov r0, r2 + f28: e58d1008 str r1, [sp, #8] + f2c: e1a01003 mov r1, r3 + f30: ebffffdd bl eac <parsepipe> + f34: e59d1008 ldr r1, [sp, #8] + f38: e58d0004 str r0, [sp, #4] + f3c: e1a00001 mov r0, r1 + f40: e59d1004 ldr r1, [sp, #4] + f44: ebfffdea bl 6f4 <pipecmd> + f48: e50b000c str r0, [fp, #-12] + f4c: eaffffff b f50 <parsepipe+0xa4> + f50: e51b000c ldr r0, [fp, #-12] + f54: e1a0d00b mov sp, fp + f58: e8bd8800 pop {fp, pc} + f5c: 0000253e .word 0x0000253e + +00000f60 <parseexec>: + f60: e92d4800 push {fp, lr} + f64: e1a0b00d mov fp, sp + f68: e24dd030 sub sp, sp, #48 ; 0x30 + f6c: e1a02001 mov r2, r1 + f70: e1a03000 mov r3, r0 + f74: e50b0008 str r0, [fp, #-8] + f78: e50b100c str r1, [fp, #-12] + f7c: e51b0008 ldr r0, [fp, #-8] + f80: e51b100c ldr r1, [fp, #-12] + f84: e59fc15c ldr ip, [pc, #348] ; 10e8 <parseexec+0x188> + f88: e58d2008 str r2, [sp, #8] + f8c: e1a0200c mov r2, ip + f90: e58d3004 str r3, [sp, #4] + f94: ebfffedf bl b18 <peek> + f98: e3500000 cmp r0, #0 + f9c: 0a000005 beq fb8 <parseexec+0x58> + fa0: eaffffff b fa4 <parseexec+0x44> + fa4: e51b0008 ldr r0, [fp, #-8] + fa8: e51b100c ldr r1, [fp, #-12] + fac: eb0000aa bl 125c <parseblock> + fb0: e50b0004 str r0, [fp, #-4] + fb4: ea000048 b 10dc <parseexec+0x17c> + fb8: ebfffd8a bl 5e8 <execcmd> + fbc: e58d000c str r0, [sp, #12] + fc0: e59d000c ldr r0, [sp, #12] + fc4: e58d0010 str r0, [sp, #16] + fc8: e3a0e000 mov lr, #0 + fcc: e58de014 str lr, [sp, #20] + fd0: e51b1008 ldr r1, [fp, #-8] + fd4: e51b200c ldr r2, [fp, #-12] + fd8: eb000046 bl 10f8 <parseredirs> + fdc: e58d000c str r0, [sp, #12] + fe0: eaffffff b fe4 <parseexec+0x84> + fe4: e51b0008 ldr r0, [fp, #-8] + fe8: e51b100c ldr r1, [fp, #-12] + fec: e59f20f8 ldr r2, [pc, #248] ; 10ec <parseexec+0x18c> + ff0: ebfffec8 bl b18 <peek> + ff4: e3500000 cmp r0, #0 + ff8: 1a00002b bne 10ac <parseexec+0x14c> + ffc: eaffffff b 1000 <parseexec+0xa0> + 1000: e51b0008 ldr r0, [fp, #-8] + 1004: e51b100c ldr r1, [fp, #-12] + 1008: e24b2010 sub r2, fp, #16 + 100c: e24b3014 sub r3, fp, #20 + 1010: ebfffe0e bl 850 <gettoken> + 1014: e58d0018 str r0, [sp, #24] + 1018: e3500000 cmp r0, #0 + 101c: 1a000001 bne 1028 <parseexec+0xc8> + 1020: eaffffff b 1024 <parseexec+0xc4> + 1024: ea000020 b 10ac <parseexec+0x14c> + 1028: e59d0018 ldr r0, [sp, #24] + 102c: e3500061 cmp r0, #97 ; 0x61 + 1030: 0a000003 beq 1044 <parseexec+0xe4> + 1034: eaffffff b 1038 <parseexec+0xd8> + 1038: e59f00b0 ldr r0, [pc, #176] ; 10f0 <parseexec+0x190> + 103c: ebfffca7 bl 2e0 <panic> + 1040: eaffffff b 1044 <parseexec+0xe4> + 1044: e51b0010 ldr r0, [fp, #-16] + 1048: e59d1010 ldr r1, [sp, #16] + 104c: e59d2014 ldr r2, [sp, #20] + 1050: e0811102 add r1, r1, r2, lsl #2 + 1054: e5810004 str r0, [r1, #4] + 1058: e51b0014 ldr r0, [fp, #-20] ; 0xffffffec + 105c: e59d1010 ldr r1, [sp, #16] + 1060: e59d2014 ldr r2, [sp, #20] + 1064: e0811102 add r1, r1, r2, lsl #2 + 1068: e581002c str r0, [r1, #44] ; 0x2c + 106c: e59d0014 ldr r0, [sp, #20] + 1070: e2800001 add r0, r0, #1 + 1074: e58d0014 str r0, [sp, #20] + 1078: e59d0014 ldr r0, [sp, #20] + 107c: e350000a cmp r0, #10 + 1080: ba000003 blt 1094 <parseexec+0x134> + 1084: eaffffff b 1088 <parseexec+0x128> + 1088: e59f0064 ldr r0, [pc, #100] ; 10f4 <parseexec+0x194> + 108c: ebfffc93 bl 2e0 <panic> + 1090: eaffffff b 1094 <parseexec+0x134> + 1094: e59d000c ldr r0, [sp, #12] + 1098: e51b1008 ldr r1, [fp, #-8] + 109c: e51b200c ldr r2, [fp, #-12] + 10a0: eb000014 bl 10f8 <parseredirs> + 10a4: e58d000c str r0, [sp, #12] + 10a8: eaffffcd b fe4 <parseexec+0x84> + 10ac: e59d0010 ldr r0, [sp, #16] + 10b0: e59d1014 ldr r1, [sp, #20] + 10b4: e0800101 add r0, r0, r1, lsl #2 + 10b8: e3a01000 mov r1, #0 + 10bc: e5801004 str r1, [r0, #4] + 10c0: e59d0010 ldr r0, [sp, #16] + 10c4: e59d2014 ldr r2, [sp, #20] + 10c8: e0800102 add r0, r0, r2, lsl #2 + 10cc: e580102c str r1, [r0, #44] ; 0x2c + 10d0: e59d000c ldr r0, [sp, #12] + 10d4: e50b0004 str r0, [fp, #-4] + 10d8: eaffffff b 10dc <parseexec+0x17c> + 10dc: e51b0004 ldr r0, [fp, #-4] + 10e0: e1a0d00b mov sp, fp + 10e4: e8bd8800 pop {fp, pc} + 10e8: 00002560 .word 0x00002560 + 10ec: 00002580 .word 0x00002580 + 10f0: 00002535 .word 0x00002535 + 10f4: 00002585 .word 0x00002585 + +000010f8 <parseredirs>: + 10f8: e92d4800 push {fp, lr} + 10fc: e1a0b00d mov fp, sp + 1100: e24dd030 sub sp, sp, #48 ; 0x30 + 1104: e1a03002 mov r3, r2 + 1108: e1a0c001 mov ip, r1 + 110c: e1a0e000 mov lr, r0 + 1110: e50b0004 str r0, [fp, #-4] + 1114: e50b1008 str r1, [fp, #-8] + 1118: e50b200c str r2, [fp, #-12] + 111c: e58d3014 str r3, [sp, #20] + 1120: e58dc010 str ip, [sp, #16] + 1124: e58de00c str lr, [sp, #12] + 1128: eaffffff b 112c <parseredirs+0x34> + 112c: e51b0008 ldr r0, [fp, #-8] + 1130: e51b100c ldr r1, [fp, #-12] + 1134: e59f2118 ldr r2, [pc, #280] ; 1254 <parseredirs+0x15c> + 1138: ebfffe76 bl b18 <peek> + 113c: e3500000 cmp r0, #0 + 1140: 0a000040 beq 1248 <parseredirs+0x150> + 1144: eaffffff b 1148 <parseredirs+0x50> + 1148: e51b0008 ldr r0, [fp, #-8] + 114c: e51b100c ldr r1, [fp, #-12] + 1150: e3a02000 mov r2, #0 + 1154: e58d2008 str r2, [sp, #8] + 1158: e59d3008 ldr r3, [sp, #8] + 115c: ebfffdbb bl 850 <gettoken> + 1160: e50b0010 str r0, [fp, #-16] + 1164: e51b0008 ldr r0, [fp, #-8] + 1168: e51b100c ldr r1, [fp, #-12] + 116c: e24b2014 sub r2, fp, #20 + 1170: e28d3018 add r3, sp, #24 + 1174: ebfffdb5 bl 850 <gettoken> + 1178: e3500061 cmp r0, #97 ; 0x61 + 117c: 0a000003 beq 1190 <parseredirs+0x98> + 1180: eaffffff b 1184 <parseredirs+0x8c> + 1184: e59f00cc ldr r0, [pc, #204] ; 1258 <parseredirs+0x160> + 1188: ebfffc54 bl 2e0 <panic> + 118c: eaffffff b 1190 <parseredirs+0x98> + 1190: e51b0010 ldr r0, [fp, #-16] + 1194: e350002b cmp r0, #43 ; 0x2b + 1198: e58d0004 str r0, [sp, #4] + 119c: 0a00001d beq 1218 <parseredirs+0x120> + 11a0: eaffffff b 11a4 <parseredirs+0xac> + 11a4: e59d0004 ldr r0, [sp, #4] + 11a8: e350003c cmp r0, #60 ; 0x3c + 11ac: 0a000004 beq 11c4 <parseredirs+0xcc> + 11b0: eaffffff b 11b4 <parseredirs+0xbc> + 11b4: e59d0004 ldr r0, [sp, #4] + 11b8: e350003e cmp r0, #62 ; 0x3e + 11bc: 0a00000a beq 11ec <parseredirs+0xf4> + 11c0: ea00001f b 1244 <parseredirs+0x14c> + 11c4: e51b0004 ldr r0, [fp, #-4] + 11c8: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 11cc: e59d2018 ldr r2, [sp, #24] + 11d0: e1a0300d mov r3, sp + 11d4: e3a0c000 mov ip, #0 + 11d8: e583c000 str ip, [r3] + 11dc: e1a0300c mov r3, ip + 11e0: ebfffd13 bl 634 <redircmd> + 11e4: e50b0004 str r0, [fp, #-4] + 11e8: ea000015 b 1244 <parseredirs+0x14c> + 11ec: e51b0004 ldr r0, [fp, #-4] + 11f0: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 11f4: e59d2018 ldr r2, [sp, #24] + 11f8: e1a0300d mov r3, sp + 11fc: e3a0c001 mov ip, #1 + 1200: e583c000 str ip, [r3] + 1204: e3a03001 mov r3, #1 + 1208: e3833c02 orr r3, r3, #512 ; 0x200 + 120c: ebfffd08 bl 634 <redircmd> + 1210: e50b0004 str r0, [fp, #-4] + 1214: ea00000a b 1244 <parseredirs+0x14c> + 1218: e51b0004 ldr r0, [fp, #-4] + 121c: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 1220: e59d2018 ldr r2, [sp, #24] + 1224: e1a0300d mov r3, sp + 1228: e3a0c001 mov ip, #1 + 122c: e583c000 str ip, [r3] + 1230: e3a03001 mov r3, #1 + 1234: e3833c02 orr r3, r3, #512 ; 0x200 + 1238: ebfffcfd bl 634 <redircmd> + 123c: e50b0004 str r0, [fp, #-4] + 1240: eaffffff b 1244 <parseredirs+0x14c> + 1244: eaffffb8 b 112c <parseredirs+0x34> + 1248: e51b0004 ldr r0, [fp, #-4] + 124c: e1a0d00b mov sp, fp + 1250: e8bd8800 pop {fp, pc} + 1254: 00002540 .word 0x00002540 + 1258: 00002543 .word 0x00002543 + +0000125c <parseblock>: + return cmd; +} + +struct cmd* +parseblock(char **ps, char *es) +{ + 125c: e92d4800 push {fp, lr} + 1260: e1a0b00d mov fp, sp + 1264: e24dd028 sub sp, sp, #40 ; 0x28 + 1268: e1a02001 mov r2, r1 + 126c: e1a03000 mov r3, r0 + 1270: e50b0004 str r0, [fp, #-4] + 1274: e50b1008 str r1, [fp, #-8] + struct cmd *cmd; + + if(!peek(ps, es, "(")) + 1278: e51b0004 ldr r0, [fp, #-4] + 127c: e51b1008 ldr r1, [fp, #-8] + 1280: e59fc0c8 ldr ip, [pc, #200] ; 1350 <parseblock+0xf4> + 1284: e50b2010 str r2, [fp, #-16] + 1288: e1a0200c mov r2, ip + 128c: e58d3014 str r3, [sp, #20] + 1290: ebfffe20 bl b18 <peek> + 1294: e3500000 cmp r0, #0 + 1298: 1a000003 bne 12ac <parseblock+0x50> + 129c: eaffffff b 12a0 <parseblock+0x44> + panic("parseblock"); + 12a0: e59f00ac ldr r0, [pc, #172] ; 1354 <parseblock+0xf8> + 12a4: ebfffc0d bl 2e0 <panic> + 12a8: eaffffff b 12ac <parseblock+0x50> + gettoken(ps, es, 0, 0); + 12ac: e51b0004 ldr r0, [fp, #-4] + 12b0: e51b1008 ldr r1, [fp, #-8] + 12b4: e3a02000 mov r2, #0 + 12b8: e58d2010 str r2, [sp, #16] + 12bc: e59d3010 ldr r3, [sp, #16] + 12c0: ebfffd62 bl 850 <gettoken> + cmd = parseline(ps, es); + 12c4: e51b1004 ldr r1, [fp, #-4] + 12c8: e51b2008 ldr r2, [fp, #-8] + 12cc: e58d000c str r0, [sp, #12] + 12d0: e1a00001 mov r0, r1 + 12d4: e1a01002 mov r1, r2 + 12d8: ebfffe4c bl c10 <parseline> + 12dc: e50b000c str r0, [fp, #-12] + if(!peek(ps, es, ")")) + 12e0: e51b0004 ldr r0, [fp, #-4] + 12e4: e51b1008 ldr r1, [fp, #-8] + 12e8: e59f2068 ldr r2, [pc, #104] ; 1358 <parseblock+0xfc> + 12ec: ebfffe09 bl b18 <peek> + 12f0: e3500000 cmp r0, #0 + 12f4: 1a000003 bne 1308 <parseblock+0xac> + 12f8: eaffffff b 12fc <parseblock+0xa0> + panic("syntax - missing )"); + 12fc: e59f0058 ldr r0, [pc, #88] ; 135c <parseblock+0x100> + 1300: ebfffbf6 bl 2e0 <panic> + 1304: eaffffff b 1308 <parseblock+0xac> + gettoken(ps, es, 0, 0); + 1308: e51b0004 ldr r0, [fp, #-4] + 130c: e51b1008 ldr r1, [fp, #-8] + 1310: e3a02000 mov r2, #0 + 1314: e58d2008 str r2, [sp, #8] + 1318: e59d3008 ldr r3, [sp, #8] + 131c: ebfffd4b bl 850 <gettoken> + cmd = parseredirs(cmd, ps, es); + 1320: e51b100c ldr r1, [fp, #-12] + 1324: e51b2004 ldr r2, [fp, #-4] + 1328: e51b3008 ldr r3, [fp, #-8] + 132c: e58d0004 str r0, [sp, #4] + 1330: e1a00001 mov r0, r1 + 1334: e1a01002 mov r1, r2 + 1338: e1a02003 mov r2, r3 + 133c: ebffff6d bl 10f8 <parseredirs> + 1340: e50b000c str r0, [fp, #-12] + return cmd; + 1344: e51b000c ldr r0, [fp, #-12] + 1348: e1a0d00b mov sp, fp + 134c: e8bd8800 pop {fp, pc} + 1350: 00002560 .word 0x00002560 + 1354: 00002562 .word 0x00002562 + 1358: 0000257e .word 0x0000257e + 135c: 0000256d .word 0x0000256d + +00001360 <strcpy>: +#include "fcntl.h" +#include "user.h" + +char* +strcpy(char *s, char *t) +{ + 1360: e24dd014 sub sp, sp, #20 + 1364: e1a02001 mov r2, r1 + 1368: e1a03000 mov r3, r0 + 136c: e58d0010 str r0, [sp, #16] + 1370: e58d100c str r1, [sp, #12] + 1374: e59d0010 ldr r0, [sp, #16] + 1378: e58d0008 str r0, [sp, #8] + 137c: e58d2004 str r2, [sp, #4] + 1380: e58d3000 str r3, [sp] + 1384: eaffffff b 1388 <strcpy+0x28> + 1388: e59d000c ldr r0, [sp, #12] + 138c: e2801001 add r1, r0, #1 + 1390: e58d100c str r1, [sp, #12] + 1394: e5d00000 ldrb r0, [r0] + 1398: e59d1010 ldr r1, [sp, #16] + 139c: e2812001 add r2, r1, #1 + 13a0: e58d2010 str r2, [sp, #16] + 13a4: e5c10000 strb r0, [r1] + 13a8: e3500000 cmp r0, #0 + 13ac: 0a000001 beq 13b8 <strcpy+0x58> + 13b0: eaffffff b 13b4 <strcpy+0x54> + 13b4: eafffff3 b 1388 <strcpy+0x28> + 13b8: e59d0008 ldr r0, [sp, #8] + 13bc: e28dd014 add sp, sp, #20 + 13c0: e12fff1e bx lr + +000013c4 <strcmp>: + 13c4: e24dd014 sub sp, sp, #20 + 13c8: e1a02001 mov r2, r1 + 13cc: e1a03000 mov r3, r0 + 13d0: e58d0010 str r0, [sp, #16] + 13d4: e58d100c str r1, [sp, #12] + 13d8: e58d2008 str r2, [sp, #8] + 13dc: e58d3004 str r3, [sp, #4] + 13e0: eaffffff b 13e4 <strcmp+0x20> + 13e4: e59d0010 ldr r0, [sp, #16] + 13e8: e5d00000 ldrb r0, [r0] + 13ec: e3a01000 mov r1, #0 + 13f0: e3500000 cmp r0, #0 + 13f4: e58d1000 str r1, [sp] + 13f8: 0a000009 beq 1424 <strcmp+0x60> + 13fc: eaffffff b 1400 <strcmp+0x3c> + 1400: e59d0010 ldr r0, [sp, #16] + 1404: e5d00000 ldrb r0, [r0] + 1408: e59d100c ldr r1, [sp, #12] + 140c: e5d11000 ldrb r1, [r1] + 1410: e3a02000 mov r2, #0 + 1414: e1500001 cmp r0, r1 + 1418: 03a02001 moveq r2, #1 + 141c: e58d2000 str r2, [sp] + 1420: eaffffff b 1424 <strcmp+0x60> + 1424: e59d0000 ldr r0, [sp] + 1428: e3100001 tst r0, #1 + 142c: 0a000007 beq 1450 <strcmp+0x8c> + 1430: eaffffff b 1434 <strcmp+0x70> + 1434: e59d0010 ldr r0, [sp, #16] + 1438: e2800001 add r0, r0, #1 + 143c: e58d0010 str r0, [sp, #16] + 1440: e59d000c ldr r0, [sp, #12] + 1444: e2800001 add r0, r0, #1 + 1448: e58d000c str r0, [sp, #12] + 144c: eaffffe4 b 13e4 <strcmp+0x20> + 1450: e59d0010 ldr r0, [sp, #16] + 1454: e5d00000 ldrb r0, [r0] + 1458: e59d100c ldr r1, [sp, #12] + 145c: e5d11000 ldrb r1, [r1] + 1460: e0400001 sub r0, r0, r1 + 1464: e28dd014 add sp, sp, #20 + 1468: e12fff1e bx lr + +0000146c <strlen>: + 146c: e24dd00c sub sp, sp, #12 + 1470: e1a01000 mov r1, r0 + 1474: e58d0008 str r0, [sp, #8] + 1478: e3a00000 mov r0, #0 + 147c: e58d0004 str r0, [sp, #4] + 1480: e58d1000 str r1, [sp] + 1484: eaffffff b 1488 <strlen+0x1c> + 1488: e59d0008 ldr r0, [sp, #8] + 148c: e59d1004 ldr r1, [sp, #4] + 1490: e7d00001 ldrb r0, [r0, r1] + 1494: e3500000 cmp r0, #0 + 1498: 0a000005 beq 14b4 <strlen+0x48> + 149c: eaffffff b 14a0 <strlen+0x34> + 14a0: eaffffff b 14a4 <strlen+0x38> + 14a4: e59d0004 ldr r0, [sp, #4] + 14a8: e2800001 add r0, r0, #1 + 14ac: e58d0004 str r0, [sp, #4] + 14b0: eafffff4 b 1488 <strlen+0x1c> + 14b4: e59d0004 ldr r0, [sp, #4] + 14b8: e28dd00c add sp, sp, #12 + 14bc: e12fff1e bx lr + +000014c0 <memset>: + 14c0: e92d4800 push {fp, lr} + 14c4: e1a0b00d mov fp, sp + 14c8: e24dd02c sub sp, sp, #44 ; 0x2c + 14cc: e1a03002 mov r3, r2 + 14d0: e1a0c001 mov ip, r1 + 14d4: e1a0e000 mov lr, r0 + 14d8: e50b0004 str r0, [fp, #-4] + 14dc: e50b1008 str r1, [fp, #-8] + 14e0: e50b200c str r2, [fp, #-12] + 14e4: e51b0004 ldr r0, [fp, #-4] + 14e8: e50b0010 str r0, [fp, #-16] + 14ec: e51b0008 ldr r0, [fp, #-8] + 14f0: e54b0011 strb r0, [fp, #-17] ; 0xffffffef + 14f4: e55b0011 ldrb r0, [fp, #-17] ; 0xffffffef + 14f8: e1a01c00 lsl r1, r0, #24 + 14fc: e1811800 orr r1, r1, r0, lsl #16 + 1500: e1811400 orr r1, r1, r0, lsl #8 + 1504: e1810000 orr r0, r1, r0 + 1508: e58d0014 str r0, [sp, #20] + 150c: e58d300c str r3, [sp, #12] + 1510: e58dc008 str ip, [sp, #8] + 1514: e58de004 str lr, [sp, #4] + 1518: eaffffff b 151c <memset+0x5c> + 151c: e51b000c ldr r0, [fp, #-12] + 1520: e3a01000 mov r1, #0 + 1524: e3500000 cmp r0, #0 + 1528: e58d1000 str r1, [sp] + 152c: 0a000006 beq 154c <memset+0x8c> + 1530: eaffffff b 1534 <memset+0x74> + 1534: e55b0010 ldrb r0, [fp, #-16] + 1538: e2000003 and r0, r0, #3 + 153c: e3500000 cmp r0, #0 + 1540: 13a00001 movne r0, #1 + 1544: e58d0000 str r0, [sp] + 1548: eaffffff b 154c <memset+0x8c> + 154c: e59d0000 ldr r0, [sp] + 1550: e3100001 tst r0, #1 + 1554: 0a00000b beq 1588 <memset+0xc8> + 1558: eaffffff b 155c <memset+0x9c> + 155c: e55b0011 ldrb r0, [fp, #-17] ; 0xffffffef + 1560: e51b1010 ldr r1, [fp, #-16] + 1564: e5c10000 strb r0, [r1] + 1568: eaffffff b 156c <memset+0xac> + 156c: e51b000c ldr r0, [fp, #-12] + 1570: e2400001 sub r0, r0, #1 + 1574: e50b000c str r0, [fp, #-12] + 1578: e51b0010 ldr r0, [fp, #-16] + 157c: e2800001 add r0, r0, #1 + 1580: e50b0010 str r0, [fp, #-16] + 1584: eaffffe4 b 151c <memset+0x5c> + 1588: e51b0010 ldr r0, [fp, #-16] + 158c: e58d0010 str r0, [sp, #16] + 1590: eaffffff b 1594 <memset+0xd4> + 1594: e51b000c ldr r0, [fp, #-12] + 1598: e3500004 cmp r0, #4 + 159c: 3a00000b bcc 15d0 <memset+0x110> + 15a0: eaffffff b 15a4 <memset+0xe4> + 15a4: e59d0014 ldr r0, [sp, #20] + 15a8: e59d1010 ldr r1, [sp, #16] + 15ac: e5810000 str r0, [r1] + 15b0: eaffffff b 15b4 <memset+0xf4> + 15b4: e51b000c ldr r0, [fp, #-12] + 15b8: e2400004 sub r0, r0, #4 + 15bc: e50b000c str r0, [fp, #-12] + 15c0: e59d0010 ldr r0, [sp, #16] + 15c4: e2800004 add r0, r0, #4 + 15c8: e58d0010 str r0, [sp, #16] + 15cc: eafffff0 b 1594 <memset+0xd4> + 15d0: e59d0010 ldr r0, [sp, #16] + 15d4: e50b0010 str r0, [fp, #-16] + 15d8: eaffffff b 15dc <memset+0x11c> + 15dc: e51b000c ldr r0, [fp, #-12] + 15e0: e3500000 cmp r0, #0 + 15e4: 0a00000b beq 1618 <memset+0x158> + 15e8: eaffffff b 15ec <memset+0x12c> + 15ec: e55b0011 ldrb r0, [fp, #-17] ; 0xffffffef + 15f0: e51b1010 ldr r1, [fp, #-16] + 15f4: e5c10000 strb r0, [r1] + 15f8: eaffffff b 15fc <memset+0x13c> + 15fc: e51b000c ldr r0, [fp, #-12] + 1600: e2400001 sub r0, r0, #1 + 1604: e50b000c str r0, [fp, #-12] + 1608: e51b0010 ldr r0, [fp, #-16] + 160c: e2800001 add r0, r0, #1 + 1610: e50b0010 str r0, [fp, #-16] + 1614: eafffff0 b 15dc <memset+0x11c> + 1618: e51b0004 ldr r0, [fp, #-4] + 161c: e1a0d00b mov sp, fp + 1620: e8bd8800 pop {fp, pc} + +00001624 <strchr>: + 1624: e24dd014 sub sp, sp, #20 + 1628: e1a02001 mov r2, r1 + 162c: e1a03000 mov r3, r0 + 1630: e58d000c str r0, [sp, #12] + 1634: e5cd100b strb r1, [sp, #11] + 1638: e58d2004 str r2, [sp, #4] + 163c: e58d3000 str r3, [sp] + 1640: eaffffff b 1644 <strchr+0x20> + 1644: e59d000c ldr r0, [sp, #12] + 1648: e5d00000 ldrb r0, [r0] + 164c: e3500000 cmp r0, #0 + 1650: 0a00000e beq 1690 <strchr+0x6c> + 1654: eaffffff b 1658 <strchr+0x34> + 1658: e59d000c ldr r0, [sp, #12] + 165c: e5d00000 ldrb r0, [r0] + 1660: e5dd100b ldrb r1, [sp, #11] + 1664: e1500001 cmp r0, r1 + 1668: 1a000003 bne 167c <strchr+0x58> + 166c: eaffffff b 1670 <strchr+0x4c> + 1670: e59d000c ldr r0, [sp, #12] + 1674: e58d0010 str r0, [sp, #16] + 1678: ea000007 b 169c <strchr+0x78> + 167c: eaffffff b 1680 <strchr+0x5c> + 1680: e59d000c ldr r0, [sp, #12] + 1684: e2800001 add r0, r0, #1 + 1688: e58d000c str r0, [sp, #12] + 168c: eaffffec b 1644 <strchr+0x20> + 1690: e3a00000 mov r0, #0 + 1694: e58d0010 str r0, [sp, #16] + 1698: eaffffff b 169c <strchr+0x78> + 169c: e59d0010 ldr r0, [sp, #16] + 16a0: e28dd014 add sp, sp, #20 + 16a4: e12fff1e bx lr + +000016a8 <gets>: + 16a8: e92d4800 push {fp, lr} + 16ac: e1a0b00d mov fp, sp + 16b0: e24dd020 sub sp, sp, #32 + 16b4: e1a02001 mov r2, r1 + 16b8: e1a03000 mov r3, r0 + 16bc: e50b0004 str r0, [fp, #-4] + 16c0: e50b1008 str r1, [fp, #-8] + 16c4: e3a00000 mov r0, #0 + 16c8: e50b000c str r0, [fp, #-12] + 16cc: e58d2008 str r2, [sp, #8] + 16d0: e58d3004 str r3, [sp, #4] + 16d4: eaffffff b 16d8 <gets+0x30> + 16d8: e51b000c ldr r0, [fp, #-12] + 16dc: e2800001 add r0, r0, #1 + 16e0: e51b1008 ldr r1, [fp, #-8] + 16e4: e1500001 cmp r0, r1 + 16e8: aa00001a bge 1758 <gets+0xb0> + 16ec: eaffffff b 16f0 <gets+0x48> + 16f0: e3a00000 mov r0, #0 + 16f4: e28d100f add r1, sp, #15 + 16f8: e3a02001 mov r2, #1 + 16fc: eb0000ab bl 19b0 <read> + 1700: e58d0010 str r0, [sp, #16] + 1704: e59d0010 ldr r0, [sp, #16] + 1708: e3500000 cmp r0, #0 + 170c: ca000001 bgt 1718 <gets+0x70> + 1710: eaffffff b 1714 <gets+0x6c> + 1714: ea00000f b 1758 <gets+0xb0> + 1718: e5dd000f ldrb r0, [sp, #15] + 171c: e51b1004 ldr r1, [fp, #-4] + 1720: e51b200c ldr r2, [fp, #-12] + 1724: e2823001 add r3, r2, #1 + 1728: e50b300c str r3, [fp, #-12] + 172c: e7c10002 strb r0, [r1, r2] + 1730: e5dd000f ldrb r0, [sp, #15] + 1734: e350000a cmp r0, #10 + 1738: 0a000004 beq 1750 <gets+0xa8> + 173c: eaffffff b 1740 <gets+0x98> + 1740: e5dd000f ldrb r0, [sp, #15] + 1744: e350000d cmp r0, #13 + 1748: 1a000001 bne 1754 <gets+0xac> + 174c: eaffffff b 1750 <gets+0xa8> + 1750: ea000000 b 1758 <gets+0xb0> + 1754: eaffffdf b 16d8 <gets+0x30> + 1758: e51b0004 ldr r0, [fp, #-4] + 175c: e51b100c ldr r1, [fp, #-12] + 1760: e3a02000 mov r2, #0 + 1764: e7c02001 strb r2, [r0, r1] + 1768: e51b0004 ldr r0, [fp, #-4] + 176c: e1a0d00b mov sp, fp + 1770: e8bd8800 pop {fp, pc} + +00001774 <stat>: + 1774: e92d4800 push {fp, lr} + 1778: e1a0b00d mov fp, sp + 177c: e24dd020 sub sp, sp, #32 + 1780: e1a02001 mov r2, r1 + 1784: e1a03000 mov r3, r0 + 1788: e50b0008 str r0, [fp, #-8] + 178c: e50b100c str r1, [fp, #-12] + 1790: e51b0008 ldr r0, [fp, #-8] + 1794: e3a01000 mov r1, #0 + 1798: e58d2008 str r2, [sp, #8] + 179c: e58d3004 str r3, [sp, #4] + 17a0: eb0000af bl 1a64 <open> + 17a4: e58d0010 str r0, [sp, #16] + 17a8: e59d0010 ldr r0, [sp, #16] + 17ac: e3500000 cmp r0, #0 + 17b0: aa000003 bge 17c4 <stat+0x50> + 17b4: eaffffff b 17b8 <stat+0x44> + 17b8: e3e00000 mvn r0, #0 + 17bc: e50b0004 str r0, [fp, #-4] + 17c0: ea000009 b 17ec <stat+0x78> + 17c4: e59d0010 ldr r0, [sp, #16] + 17c8: e51b100c ldr r1, [fp, #-12] + 17cc: eb0000bf bl 1ad0 <fstat> + 17d0: e58d000c str r0, [sp, #12] + 17d4: e59d0010 ldr r0, [sp, #16] + 17d8: eb000086 bl 19f8 <close> + 17dc: e59d100c ldr r1, [sp, #12] + 17e0: e50b1004 str r1, [fp, #-4] + 17e4: e58d0000 str r0, [sp] + 17e8: eaffffff b 17ec <stat+0x78> + 17ec: e51b0004 ldr r0, [fp, #-4] + 17f0: e1a0d00b mov sp, fp + 17f4: e8bd8800 pop {fp, pc} + +000017f8 <atoi>: + 17f8: e24dd010 sub sp, sp, #16 + 17fc: e1a01000 mov r1, r0 + 1800: e58d000c str r0, [sp, #12] + 1804: e3a00000 mov r0, #0 + 1808: e58d0008 str r0, [sp, #8] + 180c: e58d1004 str r1, [sp, #4] + 1810: eaffffff b 1814 <atoi+0x1c> + 1814: e59d000c ldr r0, [sp, #12] + 1818: e5d00000 ldrb r0, [r0] + 181c: e3a01000 mov r1, #0 + 1820: e3500030 cmp r0, #48 ; 0x30 + 1824: e58d1000 str r1, [sp] + 1828: ba000007 blt 184c <atoi+0x54> + 182c: eaffffff b 1830 <atoi+0x38> + 1830: e59d000c ldr r0, [sp, #12] + 1834: e5d00000 ldrb r0, [r0] + 1838: e3a01000 mov r1, #0 + 183c: e350003a cmp r0, #58 ; 0x3a + 1840: b3a01001 movlt r1, #1 + 1844: e58d1000 str r1, [sp] + 1848: eaffffff b 184c <atoi+0x54> + 184c: e59d0000 ldr r0, [sp] + 1850: e3100001 tst r0, #1 + 1854: 0a00000a beq 1884 <atoi+0x8c> + 1858: eaffffff b 185c <atoi+0x64> + 185c: e59d0008 ldr r0, [sp, #8] + 1860: e0800100 add r0, r0, r0, lsl #2 + 1864: e59d100c ldr r1, [sp, #12] + 1868: e2812001 add r2, r1, #1 + 186c: e58d200c str r2, [sp, #12] + 1870: e5d11000 ldrb r1, [r1] + 1874: e0810080 add r0, r1, r0, lsl #1 + 1878: e2400030 sub r0, r0, #48 ; 0x30 + 187c: e58d0008 str r0, [sp, #8] + 1880: eaffffe3 b 1814 <atoi+0x1c> + 1884: e59d0008 ldr r0, [sp, #8] + 1888: e28dd010 add sp, sp, #16 + 188c: e12fff1e bx lr + +00001890 <memmove>: + 1890: e92d4800 push {fp, lr} + 1894: e1a0b00d mov fp, sp + 1898: e24dd020 sub sp, sp, #32 + 189c: e1a03002 mov r3, r2 + 18a0: e1a0c001 mov ip, r1 + 18a4: e1a0e000 mov lr, r0 + 18a8: e50b0004 str r0, [fp, #-4] + 18ac: e50b1008 str r1, [fp, #-8] + 18b0: e50b200c str r2, [fp, #-12] + 18b4: e51b0004 ldr r0, [fp, #-4] + 18b8: e58d0010 str r0, [sp, #16] + 18bc: e51b0008 ldr r0, [fp, #-8] + 18c0: e58d000c str r0, [sp, #12] + 18c4: e58d3008 str r3, [sp, #8] + 18c8: e58dc004 str ip, [sp, #4] + 18cc: e58de000 str lr, [sp] + 18d0: eaffffff b 18d4 <memmove+0x44> + 18d4: e51b000c ldr r0, [fp, #-12] + 18d8: e2401001 sub r1, r0, #1 + 18dc: e50b100c str r1, [fp, #-12] + 18e0: e3500001 cmp r0, #1 + 18e4: ba000009 blt 1910 <memmove+0x80> + 18e8: eaffffff b 18ec <memmove+0x5c> + 18ec: e59d000c ldr r0, [sp, #12] + 18f0: e2801001 add r1, r0, #1 + 18f4: e58d100c str r1, [sp, #12] + 18f8: e5d00000 ldrb r0, [r0] + 18fc: e59d1010 ldr r1, [sp, #16] + 1900: e2812001 add r2, r1, #1 + 1904: e58d2010 str r2, [sp, #16] + 1908: e5c10000 strb r0, [r1] + 190c: eafffff0 b 18d4 <memmove+0x44> + 1910: e51b0004 ldr r0, [fp, #-4] + 1914: e1a0d00b mov sp, fp + 1918: e8bd8800 pop {fp, pc} + +0000191c <raise>: + return vdst; +} + +void +raise() +{} + 191c: e12fff1e bx lr + +00001920 <fork>: + 1920: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1924: e1a04003 mov r4, r3 + 1928: e1a03002 mov r3, r2 + 192c: e1a02001 mov r2, r1 + 1930: e1a01000 mov r1, r0 + 1934: e3a00001 mov r0, #1 + 1938: ef000000 svc 0x00000000 + 193c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1940: e12fff1e bx lr + +00001944 <exit>: + 1944: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1948: e1a04003 mov r4, r3 + 194c: e1a03002 mov r3, r2 + 1950: e1a02001 mov r2, r1 + 1954: e1a01000 mov r1, r0 + 1958: e3a00002 mov r0, #2 + 195c: ef000000 svc 0x00000000 + 1960: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1964: e12fff1e bx lr + +00001968 <wait>: + 1968: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 196c: e1a04003 mov r4, r3 + 1970: e1a03002 mov r3, r2 + 1974: e1a02001 mov r2, r1 + 1978: e1a01000 mov r1, r0 + 197c: e3a00003 mov r0, #3 + 1980: ef000000 svc 0x00000000 + 1984: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1988: e12fff1e bx lr + +0000198c <pipe>: + 198c: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1990: e1a04003 mov r4, r3 + 1994: e1a03002 mov r3, r2 + 1998: e1a02001 mov r2, r1 + 199c: e1a01000 mov r1, r0 + 19a0: e3a00004 mov r0, #4 + 19a4: ef000000 svc 0x00000000 + 19a8: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 19ac: e12fff1e bx lr + +000019b0 <read>: + 19b0: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 19b4: e1a04003 mov r4, r3 + 19b8: e1a03002 mov r3, r2 + 19bc: e1a02001 mov r2, r1 + 19c0: e1a01000 mov r1, r0 + 19c4: e3a00005 mov r0, #5 + 19c8: ef000000 svc 0x00000000 + 19cc: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 19d0: e12fff1e bx lr + +000019d4 <write>: + 19d4: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 19d8: e1a04003 mov r4, r3 + 19dc: e1a03002 mov r3, r2 + 19e0: e1a02001 mov r2, r1 + 19e4: e1a01000 mov r1, r0 + 19e8: e3a00010 mov r0, #16 + 19ec: ef000000 svc 0x00000000 + 19f0: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 19f4: e12fff1e bx lr + +000019f8 <close>: + 19f8: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 19fc: e1a04003 mov r4, r3 + 1a00: e1a03002 mov r3, r2 + 1a04: e1a02001 mov r2, r1 + 1a08: e1a01000 mov r1, r0 + 1a0c: e3a00015 mov r0, #21 + 1a10: ef000000 svc 0x00000000 + 1a14: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1a18: e12fff1e bx lr + +00001a1c <kill>: + 1a1c: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1a20: e1a04003 mov r4, r3 + 1a24: e1a03002 mov r3, r2 + 1a28: e1a02001 mov r2, r1 + 1a2c: e1a01000 mov r1, r0 + 1a30: e3a00006 mov r0, #6 + 1a34: ef000000 svc 0x00000000 + 1a38: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1a3c: e12fff1e bx lr + +00001a40 <exec>: + 1a40: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1a44: e1a04003 mov r4, r3 + 1a48: e1a03002 mov r3, r2 + 1a4c: e1a02001 mov r2, r1 + 1a50: e1a01000 mov r1, r0 + 1a54: e3a00007 mov r0, #7 + 1a58: ef000000 svc 0x00000000 + 1a5c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1a60: e12fff1e bx lr + +00001a64 <open>: + 1a64: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1a68: e1a04003 mov r4, r3 + 1a6c: e1a03002 mov r3, r2 + 1a70: e1a02001 mov r2, r1 + 1a74: e1a01000 mov r1, r0 + 1a78: e3a0000f mov r0, #15 + 1a7c: ef000000 svc 0x00000000 + 1a80: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1a84: e12fff1e bx lr + +00001a88 <mknod>: + 1a88: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1a8c: e1a04003 mov r4, r3 + 1a90: e1a03002 mov r3, r2 + 1a94: e1a02001 mov r2, r1 + 1a98: e1a01000 mov r1, r0 + 1a9c: e3a00011 mov r0, #17 + 1aa0: ef000000 svc 0x00000000 + 1aa4: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1aa8: e12fff1e bx lr + +00001aac <unlink>: + 1aac: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1ab0: e1a04003 mov r4, r3 + 1ab4: e1a03002 mov r3, r2 + 1ab8: e1a02001 mov r2, r1 + 1abc: e1a01000 mov r1, r0 + 1ac0: e3a00012 mov r0, #18 + 1ac4: ef000000 svc 0x00000000 + 1ac8: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1acc: e12fff1e bx lr + +00001ad0 <fstat>: + 1ad0: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1ad4: e1a04003 mov r4, r3 + 1ad8: e1a03002 mov r3, r2 + 1adc: e1a02001 mov r2, r1 + 1ae0: e1a01000 mov r1, r0 + 1ae4: e3a00008 mov r0, #8 + 1ae8: ef000000 svc 0x00000000 + 1aec: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1af0: e12fff1e bx lr + +00001af4 <link>: + 1af4: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1af8: e1a04003 mov r4, r3 + 1afc: e1a03002 mov r3, r2 + 1b00: e1a02001 mov r2, r1 + 1b04: e1a01000 mov r1, r0 + 1b08: e3a00013 mov r0, #19 + 1b0c: ef000000 svc 0x00000000 + 1b10: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1b14: e12fff1e bx lr + +00001b18 <mkdir>: + 1b18: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1b1c: e1a04003 mov r4, r3 + 1b20: e1a03002 mov r3, r2 + 1b24: e1a02001 mov r2, r1 + 1b28: e1a01000 mov r1, r0 + 1b2c: e3a00014 mov r0, #20 + 1b30: ef000000 svc 0x00000000 + 1b34: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1b38: e12fff1e bx lr + +00001b3c <chdir>: + 1b3c: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1b40: e1a04003 mov r4, r3 + 1b44: e1a03002 mov r3, r2 + 1b48: e1a02001 mov r2, r1 + 1b4c: e1a01000 mov r1, r0 + 1b50: e3a00009 mov r0, #9 + 1b54: ef000000 svc 0x00000000 + 1b58: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1b5c: e12fff1e bx lr + +00001b60 <dup>: + 1b60: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1b64: e1a04003 mov r4, r3 + 1b68: e1a03002 mov r3, r2 + 1b6c: e1a02001 mov r2, r1 + 1b70: e1a01000 mov r1, r0 + 1b74: e3a0000a mov r0, #10 + 1b78: ef000000 svc 0x00000000 + 1b7c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1b80: e12fff1e bx lr + +00001b84 <getpid>: + 1b84: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1b88: e1a04003 mov r4, r3 + 1b8c: e1a03002 mov r3, r2 + 1b90: e1a02001 mov r2, r1 + 1b94: e1a01000 mov r1, r0 + 1b98: e3a0000b mov r0, #11 + 1b9c: ef000000 svc 0x00000000 + 1ba0: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1ba4: e12fff1e bx lr + +00001ba8 <sbrk>: + 1ba8: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1bac: e1a04003 mov r4, r3 + 1bb0: e1a03002 mov r3, r2 + 1bb4: e1a02001 mov r2, r1 + 1bb8: e1a01000 mov r1, r0 + 1bbc: e3a0000c mov r0, #12 + 1bc0: ef000000 svc 0x00000000 + 1bc4: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1bc8: e12fff1e bx lr + +00001bcc <sleep>: + 1bcc: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1bd0: e1a04003 mov r4, r3 + 1bd4: e1a03002 mov r3, r2 + 1bd8: e1a02001 mov r2, r1 + 1bdc: e1a01000 mov r1, r0 + 1be0: e3a0000d mov r0, #13 + 1be4: ef000000 svc 0x00000000 + 1be8: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1bec: e12fff1e bx lr + +00001bf0 <uptime>: + 1bf0: e52d4004 push {r4} ; (str r4, [sp, #-4]!) + 1bf4: e1a04003 mov r4, r3 + 1bf8: e1a03002 mov r3, r2 + 1bfc: e1a02001 mov r2, r1 + 1c00: e1a01000 mov r1, r0 + 1c04: e3a0000e mov r0, #14 + 1c08: ef000000 svc 0x00000000 + 1c0c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) + 1c10: e12fff1e bx lr + +00001c14 <printf>: +} + +// Print to the given fd. Only understands %d, %x, %p, %s. +void +printf(int fd, char *fmt, ...) +{ + 1c14: e92d4800 push {fp, lr} + 1c18: e1a0b00d mov fp, sp + 1c1c: e24dd028 sub sp, sp, #40 ; 0x28 + 1c20: e1a02001 mov r2, r1 + 1c24: e1a03000 mov r3, r0 + 1c28: e50b0004 str r0, [fp, #-4] + 1c2c: e50b1008 str r1, [fp, #-8] + 1c30: e3a00000 mov r0, #0 + 1c34: e58d0010 str r0, [sp, #16] + 1c38: e24b1008 sub r1, fp, #8 + 1c3c: e2811004 add r1, r1, #4 + 1c40: e58d100c str r1, [sp, #12] + 1c44: e58d0014 str r0, [sp, #20] + 1c48: e58d2008 str r2, [sp, #8] + 1c4c: e58d3004 str r3, [sp, #4] + 1c50: eaffffff b 1c54 <printf+0x40> + 1c54: e51b0008 ldr r0, [fp, #-8] + 1c58: e59d1014 ldr r1, [sp, #20] + 1c5c: e7d00001 ldrb r0, [r0, r1] + 1c60: e3500000 cmp r0, #0 + 1c64: 0a00007e beq 1e64 <printf+0x250> + 1c68: eaffffff b 1c6c <printf+0x58> + 1c6c: e51b0008 ldr r0, [fp, #-8] + 1c70: e59d1014 ldr r1, [sp, #20] + 1c74: e7d00001 ldrb r0, [r0, r1] + 1c78: e50b0010 str r0, [fp, #-16] + 1c7c: e59d0010 ldr r0, [sp, #16] + 1c80: e3500000 cmp r0, #0 + 1c84: 1a00000c bne 1cbc <printf+0xa8> + 1c88: eaffffff b 1c8c <printf+0x78> + 1c8c: e51b0010 ldr r0, [fp, #-16] + 1c90: e3500025 cmp r0, #37 ; 0x25 + 1c94: 1a000003 bne 1ca8 <printf+0x94> + 1c98: eaffffff b 1c9c <printf+0x88> + 1c9c: e3a00025 mov r0, #37 ; 0x25 + 1ca0: e58d0010 str r0, [sp, #16] + 1ca4: ea000003 b 1cb8 <printf+0xa4> + 1ca8: e51b0004 ldr r0, [fp, #-4] + 1cac: e55b1010 ldrb r1, [fp, #-16] + 1cb0: eb00006e bl 1e70 <putc> + 1cb4: eaffffff b 1cb8 <printf+0xa4> + 1cb8: ea000064 b 1e50 <printf+0x23c> + 1cbc: e59d0010 ldr r0, [sp, #16] + 1cc0: e3500025 cmp r0, #37 ; 0x25 + 1cc4: 1a000060 bne 1e4c <printf+0x238> + 1cc8: eaffffff b 1ccc <printf+0xb8> + 1ccc: e51b0010 ldr r0, [fp, #-16] + 1cd0: e3500064 cmp r0, #100 ; 0x64 + 1cd4: 1a00000a bne 1d04 <printf+0xf0> + 1cd8: eaffffff b 1cdc <printf+0xc8> + 1cdc: e51b0004 ldr r0, [fp, #-4] + 1ce0: e59d100c ldr r1, [sp, #12] + 1ce4: e5911000 ldr r1, [r1] + 1ce8: e3a0200a mov r2, #10 + 1cec: e3a03001 mov r3, #1 + 1cf0: eb00006f bl 1eb4 <printint> + 1cf4: e59d000c ldr r0, [sp, #12] + 1cf8: e2800004 add r0, r0, #4 + 1cfc: e58d000c str r0, [sp, #12] + 1d00: ea00004e b 1e40 <printf+0x22c> + 1d04: e51b0010 ldr r0, [fp, #-16] + 1d08: e3500078 cmp r0, #120 ; 0x78 + 1d0c: 0a000004 beq 1d24 <printf+0x110> + 1d10: eaffffff b 1d14 <printf+0x100> + 1d14: e51b0010 ldr r0, [fp, #-16] + 1d18: e3500070 cmp r0, #112 ; 0x70 + 1d1c: 1a00000a bne 1d4c <printf+0x138> + 1d20: eaffffff b 1d24 <printf+0x110> + 1d24: e51b0004 ldr r0, [fp, #-4] + 1d28: e59d100c ldr r1, [sp, #12] + 1d2c: e5911000 ldr r1, [r1] + 1d30: e3a02010 mov r2, #16 + 1d34: e3a03000 mov r3, #0 + 1d38: eb00005d bl 1eb4 <printint> + 1d3c: e59d000c ldr r0, [sp, #12] + 1d40: e2800004 add r0, r0, #4 + 1d44: e58d000c str r0, [sp, #12] + 1d48: ea00003b b 1e3c <printf+0x228> + 1d4c: e51b0010 ldr r0, [fp, #-16] + 1d50: e3500073 cmp r0, #115 ; 0x73 + 1d54: 1a00001a bne 1dc4 <printf+0x1b0> + 1d58: eaffffff b 1d5c <printf+0x148> + 1d5c: e59d000c ldr r0, [sp, #12] + 1d60: e4901004 ldr r1, [r0], #4 + 1d64: e50b100c str r1, [fp, #-12] + 1d68: e58d000c str r0, [sp, #12] + 1d6c: e51b000c ldr r0, [fp, #-12] + 1d70: e3500000 cmp r0, #0 + 1d74: 1a000003 bne 1d88 <printf+0x174> + 1d78: eaffffff b 1d7c <printf+0x168> + 1d7c: e59f00e8 ldr r0, [pc, #232] ; 1e6c <printf+0x258> + 1d80: e50b000c str r0, [fp, #-12] + 1d84: eaffffff b 1d88 <printf+0x174> + 1d88: eaffffff b 1d8c <printf+0x178> + 1d8c: e51b000c ldr r0, [fp, #-12] + 1d90: e5d00000 ldrb r0, [r0] + 1d94: e3500000 cmp r0, #0 + 1d98: 0a000008 beq 1dc0 <printf+0x1ac> + 1d9c: eaffffff b 1da0 <printf+0x18c> + 1da0: e51b0004 ldr r0, [fp, #-4] + 1da4: e51b100c ldr r1, [fp, #-12] + 1da8: e5d11000 ldrb r1, [r1] + 1dac: eb00002f bl 1e70 <putc> + 1db0: e51b000c ldr r0, [fp, #-12] + 1db4: e2800001 add r0, r0, #1 + 1db8: e50b000c str r0, [fp, #-12] + 1dbc: eafffff2 b 1d8c <printf+0x178> + 1dc0: ea00001c b 1e38 <printf+0x224> + 1dc4: e51b0010 ldr r0, [fp, #-16] + 1dc8: e3500063 cmp r0, #99 ; 0x63 + 1dcc: 1a000008 bne 1df4 <printf+0x1e0> + 1dd0: eaffffff b 1dd4 <printf+0x1c0> + 1dd4: e51b0004 ldr r0, [fp, #-4] + 1dd8: e59d100c ldr r1, [sp, #12] + 1ddc: e5d11000 ldrb r1, [r1] + 1de0: eb000022 bl 1e70 <putc> + 1de4: e59d000c ldr r0, [sp, #12] + 1de8: e2800004 add r0, r0, #4 + 1dec: e58d000c str r0, [sp, #12] + 1df0: ea00000f b 1e34 <printf+0x220> + 1df4: e51b0010 ldr r0, [fp, #-16] + 1df8: e3500025 cmp r0, #37 ; 0x25 + 1dfc: 1a000004 bne 1e14 <printf+0x200> + 1e00: eaffffff b 1e04 <printf+0x1f0> + 1e04: e51b0004 ldr r0, [fp, #-4] + 1e08: e55b1010 ldrb r1, [fp, #-16] + 1e0c: eb000017 bl 1e70 <putc> + 1e10: ea000006 b 1e30 <printf+0x21c> + 1e14: e51b0004 ldr r0, [fp, #-4] + 1e18: e3a01025 mov r1, #37 ; 0x25 + 1e1c: eb000013 bl 1e70 <putc> + 1e20: e51b0004 ldr r0, [fp, #-4] + 1e24: e55b1010 ldrb r1, [fp, #-16] + 1e28: eb000010 bl 1e70 <putc> + 1e2c: eaffffff b 1e30 <printf+0x21c> + 1e30: eaffffff b 1e34 <printf+0x220> + 1e34: eaffffff b 1e38 <printf+0x224> + 1e38: eaffffff b 1e3c <printf+0x228> + 1e3c: eaffffff b 1e40 <printf+0x22c> + 1e40: e3a00000 mov r0, #0 + 1e44: e58d0010 str r0, [sp, #16] + 1e48: eaffffff b 1e4c <printf+0x238> + 1e4c: eaffffff b 1e50 <printf+0x23c> + 1e50: eaffffff b 1e54 <printf+0x240> + 1e54: e59d0014 ldr r0, [sp, #20] + 1e58: e2800001 add r0, r0, #1 + 1e5c: e58d0014 str r0, [sp, #20] + 1e60: eaffff7b b 1c54 <printf+0x40> + 1e64: e1a0d00b mov sp, fp + 1e68: e8bd8800 pop {fp, pc} + 1e6c: 00002593 .word 0x00002593 + +00001e70 <putc>: +{ + 1e70: e92d4800 push {fp, lr} + 1e74: e1a0b00d mov fp, sp + 1e78: e24dd018 sub sp, sp, #24 + 1e7c: e1a02001 mov r2, r1 + 1e80: e1a03000 mov r3, r0 + 1e84: e50b0004 str r0, [fp, #-4] + 1e88: e54b1005 strb r1, [fp, #-5] + write(fd, &c, 1); + 1e8c: e51b0004 ldr r0, [fp, #-4] + 1e90: e24b1005 sub r1, fp, #5 + 1e94: e3a0c001 mov ip, #1 + 1e98: e58d200c str r2, [sp, #12] + 1e9c: e1a0200c mov r2, ip + 1ea0: e58d3008 str r3, [sp, #8] + 1ea4: ebfffeca bl 19d4 <write> +} + 1ea8: e58d0004 str r0, [sp, #4] + 1eac: e1a0d00b mov sp, fp + 1eb0: e8bd8800 pop {fp, pc} + +00001eb4 <printint>: +{ + 1eb4: e92d4830 push {r4, r5, fp, lr} + 1eb8: e28db008 add fp, sp, #8 + 1ebc: e24dd040 sub sp, sp, #64 ; 0x40 + 1ec0: e1a0c003 mov ip, r3 + 1ec4: e1a0e002 mov lr, r2 + 1ec8: e1a04001 mov r4, r1 + 1ecc: e1a05000 mov r5, r0 + 1ed0: e50b000c str r0, [fp, #-12] + 1ed4: e50b1010 str r1, [fp, #-16] + 1ed8: e50b2014 str r2, [fp, #-20] ; 0xffffffec + 1edc: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 + 1ee0: e3a00000 mov r0, #0 + 1ee4: e58d0018 str r0, [sp, #24] + 1ee8: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 + 1eec: e3500000 cmp r0, #0 + 1ef0: e58dc010 str ip, [sp, #16] + 1ef4: e58de00c str lr, [sp, #12] + 1ef8: e58d4008 str r4, [sp, #8] + 1efc: e58d5004 str r5, [sp, #4] + 1f00: 0a00000a beq 1f30 <printint+0x7c> + 1f04: eaffffff b 1f08 <printint+0x54> + 1f08: e51b0010 ldr r0, [fp, #-16] + 1f0c: e3500000 cmp r0, #0 + 1f10: aa000006 bge 1f30 <printint+0x7c> + 1f14: eaffffff b 1f18 <printint+0x64> + 1f18: e3a00001 mov r0, #1 + 1f1c: e58d0018 str r0, [sp, #24] + 1f20: e51b0010 ldr r0, [fp, #-16] + 1f24: e2600000 rsb r0, r0, #0 + 1f28: e58d0014 str r0, [sp, #20] + 1f2c: ea000002 b 1f3c <printint+0x88> + 1f30: e51b0010 ldr r0, [fp, #-16] + 1f34: e58d0014 str r0, [sp, #20] + 1f38: eaffffff b 1f3c <printint+0x88> + 1f3c: e3a00000 mov r0, #0 + 1f40: e58d001c str r0, [sp, #28] + 1f44: eaffffff b 1f48 <printint+0x94> + 1f48: e59d0014 ldr r0, [sp, #20] + 1f4c: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 1f50: eb000158 bl 24b8 <__aeabi_uidivmod> + 1f54: e59fe0a0 ldr lr, [pc, #160] ; 1ffc <printint+0x148> + 1f58: e7de1001 ldrb r1, [lr, r1] + 1f5c: e59de01c ldr lr, [sp, #28] + 1f60: e28e2001 add r2, lr, #1 + 1f64: e58d201c str r2, [sp, #28] + 1f68: e28d2020 add r2, sp, #32 + 1f6c: e7c2100e strb r1, [r2, lr] + 1f70: e58d0000 str r0, [sp] + 1f74: eaffffff b 1f78 <printint+0xc4> + 1f78: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec + 1f7c: e59d0014 ldr r0, [sp, #20] + 1f80: eb00010f bl 23c4 <__aeabi_uidiv> + 1f84: e58d0014 str r0, [sp, #20] + 1f88: e3500000 cmp r0, #0 + 1f8c: 1affffed bne 1f48 <printint+0x94> + 1f90: eaffffff b 1f94 <printint+0xe0> + 1f94: e59d0018 ldr r0, [sp, #24] + 1f98: e3500000 cmp r0, #0 + 1f9c: 0a000007 beq 1fc0 <printint+0x10c> + 1fa0: eaffffff b 1fa4 <printint+0xf0> + 1fa4: e59d001c ldr r0, [sp, #28] + 1fa8: e2801001 add r1, r0, #1 + 1fac: e58d101c str r1, [sp, #28] + 1fb0: e28d1020 add r1, sp, #32 + 1fb4: e3a0202d mov r2, #45 ; 0x2d + 1fb8: e7c12000 strb r2, [r1, r0] + 1fbc: eaffffff b 1fc0 <printint+0x10c> + 1fc0: eaffffff b 1fc4 <printint+0x110> + 1fc4: e59d001c ldr r0, [sp, #28] + 1fc8: e2400001 sub r0, r0, #1 + 1fcc: e58d001c str r0, [sp, #28] + 1fd0: e3500000 cmp r0, #0 + 1fd4: ba000006 blt 1ff4 <printint+0x140> + 1fd8: eaffffff b 1fdc <printint+0x128> + 1fdc: e51b000c ldr r0, [fp, #-12] + 1fe0: e59d101c ldr r1, [sp, #28] + 1fe4: e28d2020 add r2, sp, #32 + 1fe8: e7d21001 ldrb r1, [r2, r1] + 1fec: ebffff9f bl 1e70 <putc> + 1ff0: eafffff3 b 1fc4 <printint+0x110> + 1ff4: e24bd008 sub sp, fp, #8 + 1ff8: e8bd8830 pop {r4, r5, fp, pc} + 1ffc: 000025b2 .word 0x000025b2 + +00002000 <free>: +static Header base; +static Header *freep; + +void +free(void *ap) +{ + 2000: e24dd014 sub sp, sp, #20 + 2004: e1a01000 mov r1, r0 + 2008: e58d0010 str r0, [sp, #16] + 200c: e59d0010 ldr r0, [sp, #16] + 2010: e2400008 sub r0, r0, #8 + 2014: e58d000c str r0, [sp, #12] + 2018: e59f0188 ldr r0, [pc, #392] ; 21a8 <free+0x1a8> + 201c: e5900000 ldr r0, [r0] + 2020: e58d0008 str r0, [sp, #8] + 2024: e58d1004 str r1, [sp, #4] + 2028: eaffffff b 202c <free+0x2c> + 202c: e59d000c ldr r0, [sp, #12] + 2030: e59d1008 ldr r1, [sp, #8] + 2034: e3a02000 mov r2, #0 + 2038: e1500001 cmp r0, r1 + 203c: e58d2000 str r2, [sp] + 2040: 9a000008 bls 2068 <free+0x68> + 2044: eaffffff b 2048 <free+0x48> + 2048: e59d000c ldr r0, [sp, #12] + 204c: e59d1008 ldr r1, [sp, #8] + 2050: e5911000 ldr r1, [r1] + 2054: e3a02000 mov r2, #0 + 2058: e1500001 cmp r0, r1 + 205c: 33a02001 movcc r2, #1 + 2060: e58d2000 str r2, [sp] + 2064: eaffffff b 2068 <free+0x68> + 2068: e59d0000 ldr r0, [sp] + 206c: e1e00000 mvn r0, r0 + 2070: e3100001 tst r0, #1 + 2074: 0a000016 beq 20d4 <free+0xd4> + 2078: eaffffff b 207c <free+0x7c> + 207c: e59d0008 ldr r0, [sp, #8] + 2080: e5901000 ldr r1, [r0] + 2084: e1500001 cmp r0, r1 + 2088: 3a00000c bcc 20c0 <free+0xc0> + 208c: eaffffff b 2090 <free+0x90> + 2090: e59d000c ldr r0, [sp, #12] + 2094: e59d1008 ldr r1, [sp, #8] + 2098: e1500001 cmp r0, r1 + 209c: 8a000006 bhi 20bc <free+0xbc> + 20a0: eaffffff b 20a4 <free+0xa4> + 20a4: e59d000c ldr r0, [sp, #12] + 20a8: e59d1008 ldr r1, [sp, #8] + 20ac: e5911000 ldr r1, [r1] + 20b0: e1500001 cmp r0, r1 + 20b4: 2a000001 bcs 20c0 <free+0xc0> + 20b8: eaffffff b 20bc <free+0xbc> + 20bc: ea000004 b 20d4 <free+0xd4> + 20c0: eaffffff b 20c4 <free+0xc4> + 20c4: e59d0008 ldr r0, [sp, #8] + 20c8: e5900000 ldr r0, [r0] + 20cc: e58d0008 str r0, [sp, #8] + 20d0: eaffffd5 b 202c <free+0x2c> + 20d4: e59d000c ldr r0, [sp, #12] + 20d8: e5901004 ldr r1, [r0, #4] + 20dc: e0800181 add r0, r0, r1, lsl #3 + 20e0: e59d1008 ldr r1, [sp, #8] + 20e4: e5911000 ldr r1, [r1] + 20e8: e1500001 cmp r0, r1 + 20ec: 1a00000d bne 2128 <free+0x128> + 20f0: eaffffff b 20f4 <free+0xf4> + 20f4: e59d0008 ldr r0, [sp, #8] + 20f8: e5900000 ldr r0, [r0] + 20fc: e5900004 ldr r0, [r0, #4] + 2100: e59d100c ldr r1, [sp, #12] + 2104: e5912004 ldr r2, [r1, #4] + 2108: e0820000 add r0, r2, r0 + 210c: e5810004 str r0, [r1, #4] + 2110: e59d0008 ldr r0, [sp, #8] + 2114: e5900000 ldr r0, [r0] + 2118: e5900000 ldr r0, [r0] + 211c: e59d100c ldr r1, [sp, #12] + 2120: e5810000 str r0, [r1] + 2124: ea000004 b 213c <free+0x13c> + 2128: e59d0008 ldr r0, [sp, #8] + 212c: e5900000 ldr r0, [r0] + 2130: e59d100c ldr r1, [sp, #12] + 2134: e5810000 str r0, [r1] + 2138: eaffffff b 213c <free+0x13c> + 213c: e59d0008 ldr r0, [sp, #8] + 2140: e5901004 ldr r1, [r0, #4] + 2144: e0800181 add r0, r0, r1, lsl #3 + 2148: e59d100c ldr r1, [sp, #12] + 214c: e1500001 cmp r0, r1 + 2150: 1a00000b bne 2184 <free+0x184> + 2154: eaffffff b 2158 <free+0x158> + 2158: e59d000c ldr r0, [sp, #12] + 215c: e5900004 ldr r0, [r0, #4] + 2160: e59d1008 ldr r1, [sp, #8] + 2164: e5912004 ldr r2, [r1, #4] + 2168: e0820000 add r0, r2, r0 + 216c: e5810004 str r0, [r1, #4] + 2170: e59d000c ldr r0, [sp, #12] + 2174: e5900000 ldr r0, [r0] + 2178: e59d1008 ldr r1, [sp, #8] + 217c: e5810000 str r0, [r1] + 2180: ea000003 b 2194 <free+0x194> + 2184: e59d000c ldr r0, [sp, #12] + 2188: e59d1008 ldr r1, [sp, #8] + 218c: e5810000 str r0, [r1] + 2190: eaffffff b 2194 <free+0x194> + 2194: e59d0008 ldr r0, [sp, #8] + 2198: e59f1008 ldr r1, [pc, #8] ; 21a8 <free+0x1a8> + 219c: e5810000 str r0, [r1] + 21a0: e28dd014 add sp, sp, #20 + 21a4: e12fff1e bx lr + 21a8: 00002628 .word 0x00002628 + +000021ac <malloc>: + 21ac: e92d4800 push {fp, lr} + 21b0: e1a0b00d mov fp, sp + 21b4: e24dd018 sub sp, sp, #24 + 21b8: e1a01000 mov r1, r0 + 21bc: e50b0008 str r0, [fp, #-8] + 21c0: e51b0008 ldr r0, [fp, #-8] + 21c4: e2800007 add r0, r0, #7 + 21c8: e3a02001 mov r2, #1 + 21cc: e08201a0 add r0, r2, r0, lsr #3 + 21d0: e58d0004 str r0, [sp, #4] + 21d4: e59f013c ldr r0, [pc, #316] ; 2318 <malloc+0x16c> + 21d8: e5900000 ldr r0, [r0] + 21dc: e58d0008 str r0, [sp, #8] + 21e0: e3500000 cmp r0, #0 + 21e4: e58d1000 str r1, [sp] + 21e8: 1a000008 bne 2210 <malloc+0x64> + 21ec: eaffffff b 21f0 <malloc+0x44> + 21f0: e59f0124 ldr r0, [pc, #292] ; 231c <malloc+0x170> + 21f4: e58d0008 str r0, [sp, #8] + 21f8: e59f1118 ldr r1, [pc, #280] ; 2318 <malloc+0x16c> + 21fc: e5810000 str r0, [r1] + 2200: e5800000 str r0, [r0] + 2204: e3a01000 mov r1, #0 + 2208: e5801004 str r1, [r0, #4] + 220c: eaffffff b 2210 <malloc+0x64> + 2210: e59d0008 ldr r0, [sp, #8] + 2214: e5900000 ldr r0, [r0] + 2218: e58d000c str r0, [sp, #12] + 221c: eaffffff b 2220 <malloc+0x74> + 2220: e59d000c ldr r0, [sp, #12] + 2224: e5900004 ldr r0, [r0, #4] + 2228: e59d1004 ldr r1, [sp, #4] + 222c: e1500001 cmp r0, r1 + 2230: 3a00001f bcc 22b4 <malloc+0x108> + 2234: eaffffff b 2238 <malloc+0x8c> + 2238: e59d000c ldr r0, [sp, #12] + 223c: e5900004 ldr r0, [r0, #4] + 2240: e59d1004 ldr r1, [sp, #4] + 2244: e1500001 cmp r0, r1 + 2248: 1a000005 bne 2264 <malloc+0xb8> + 224c: eaffffff b 2250 <malloc+0xa4> + 2250: e59d000c ldr r0, [sp, #12] + 2254: e5900000 ldr r0, [r0] + 2258: e59d1008 ldr r1, [sp, #8] + 225c: e5810000 str r0, [r1] + 2260: ea00000c b 2298 <malloc+0xec> + 2264: e59d0004 ldr r0, [sp, #4] + 2268: e59d100c ldr r1, [sp, #12] + 226c: e5912004 ldr r2, [r1, #4] + 2270: e0420000 sub r0, r2, r0 + 2274: e5810004 str r0, [r1, #4] + 2278: e59d000c ldr r0, [sp, #12] + 227c: e5901004 ldr r1, [r0, #4] + 2280: e0800181 add r0, r0, r1, lsl #3 + 2284: e58d000c str r0, [sp, #12] + 2288: e59d0004 ldr r0, [sp, #4] + 228c: e59d100c ldr r1, [sp, #12] + 2290: e5810004 str r0, [r1, #4] + 2294: eaffffff b 2298 <malloc+0xec> + 2298: e59d0008 ldr r0, [sp, #8] + 229c: e59f1074 ldr r1, [pc, #116] ; 2318 <malloc+0x16c> + 22a0: e5810000 str r0, [r1] + 22a4: e59d000c ldr r0, [sp, #12] + 22a8: e2800008 add r0, r0, #8 + 22ac: e50b0004 str r0, [fp, #-4] + 22b0: ea000015 b 230c <malloc+0x160> + 22b4: e59d000c ldr r0, [sp, #12] + 22b8: e59f1058 ldr r1, [pc, #88] ; 2318 <malloc+0x16c> + 22bc: e5911000 ldr r1, [r1] + 22c0: e1500001 cmp r0, r1 + 22c4: 1a00000a bne 22f4 <malloc+0x148> + 22c8: eaffffff b 22cc <malloc+0x120> + 22cc: e59d0004 ldr r0, [sp, #4] + 22d0: eb000012 bl 2320 <morecore> + 22d4: e58d000c str r0, [sp, #12] + 22d8: e3500000 cmp r0, #0 + 22dc: 1a000003 bne 22f0 <malloc+0x144> + 22e0: eaffffff b 22e4 <malloc+0x138> + 22e4: e3a00000 mov r0, #0 + 22e8: e50b0004 str r0, [fp, #-4] + 22ec: ea000006 b 230c <malloc+0x160> + 22f0: eaffffff b 22f4 <malloc+0x148> + 22f4: eaffffff b 22f8 <malloc+0x14c> + 22f8: e59d000c ldr r0, [sp, #12] + 22fc: e58d0008 str r0, [sp, #8] + 2300: e5900000 ldr r0, [r0] + 2304: e58d000c str r0, [sp, #12] + 2308: eaffffc4 b 2220 <malloc+0x74> + 230c: e51b0004 ldr r0, [fp, #-4] + 2310: e1a0d00b mov sp, fp + 2314: e8bd8800 pop {fp, pc} + 2318: 00002628 .word 0x00002628 + 231c: 0000262c .word 0x0000262c + +00002320 <morecore>: + freep = p; +} + +static Header* +morecore(uint nu) +{ + 2320: e92d4800 push {fp, lr} + 2324: e1a0b00d mov fp, sp + 2328: e24dd018 sub sp, sp, #24 + 232c: e1a01000 mov r1, r0 + 2330: e50b0008 str r0, [fp, #-8] + char *p; + Header *hp; + + if(nu < 4096) + 2334: e51b0008 ldr r0, [fp, #-8] + 2338: e3a02000 mov r2, #0 + 233c: e1520620 cmp r2, r0, lsr #12 + 2340: e58d1004 str r1, [sp, #4] + 2344: 1a000003 bne 2358 <morecore+0x38> + 2348: eaffffff b 234c <morecore+0x2c> + nu = 4096; + 234c: e3a00a01 mov r0, #4096 ; 0x1000 + 2350: e50b0008 str r0, [fp, #-8] + 2354: eaffffff b 2358 <morecore+0x38> + p = sbrk(nu * sizeof(Header)); + 2358: e51b0008 ldr r0, [fp, #-8] + 235c: e1a00180 lsl r0, r0, #3 + 2360: ebfffe10 bl 1ba8 <sbrk> + 2364: e58d000c str r0, [sp, #12] + if(p == (char*)-1) + 2368: e59d000c ldr r0, [sp, #12] + 236c: e3700001 cmn r0, #1 + 2370: 1a000003 bne 2384 <morecore+0x64> + 2374: eaffffff b 2378 <morecore+0x58> + return 0; + 2378: e3a00000 mov r0, #0 + 237c: e50b0004 str r0, [fp, #-4] + 2380: ea00000b b 23b4 <morecore+0x94> + hp = (Header*)p; + 2384: e59d000c ldr r0, [sp, #12] + 2388: e58d0008 str r0, [sp, #8] + hp->s.size = nu; + 238c: e51b0008 ldr r0, [fp, #-8] + 2390: e59d1008 ldr r1, [sp, #8] + 2394: e5810004 str r0, [r1, #4] + free((void*)(hp + 1)); + 2398: e59d0008 ldr r0, [sp, #8] + 239c: e2800008 add r0, r0, #8 + 23a0: ebffff16 bl 2000 <free> + return freep; + 23a4: e59f0014 ldr r0, [pc, #20] ; 23c0 <morecore+0xa0> + 23a8: e5900000 ldr r0, [r0] + 23ac: e50b0004 str r0, [fp, #-4] + 23b0: eaffffff b 23b4 <morecore+0x94> +} + 23b4: e51b0004 ldr r0, [fp, #-4] + 23b8: e1a0d00b mov sp, fp + 23bc: e8bd8800 pop {fp, pc} + 23c0: 00002628 .word 0x00002628 + +000023c4 <__aeabi_uidiv>: + 23c4: e2512001 subs r2, r1, #1 + 23c8: 012fff1e bxeq lr + 23cc: 3a000036 bcc 24ac <__aeabi_uidiv+0xe8> + 23d0: e1500001 cmp r0, r1 + 23d4: 9a000022 bls 2464 <__aeabi_uidiv+0xa0> + 23d8: e1110002 tst r1, r2 + 23dc: 0a000023 beq 2470 <__aeabi_uidiv+0xac> + 23e0: e311020e tst r1, #-536870912 ; 0xe0000000 + 23e4: 01a01181 lsleq r1, r1, #3 + 23e8: 03a03008 moveq r3, #8 + 23ec: 13a03001 movne r3, #1 + 23f0: e3510201 cmp r1, #268435456 ; 0x10000000 + 23f4: 31510000 cmpcc r1, r0 + 23f8: 31a01201 lslcc r1, r1, #4 + 23fc: 31a03203 lslcc r3, r3, #4 + 2400: 3afffffa bcc 23f0 <__aeabi_uidiv+0x2c> + 2404: e3510102 cmp r1, #-2147483648 ; 0x80000000 + 2408: 31510000 cmpcc r1, r0 + 240c: 31a01081 lslcc r1, r1, #1 + 2410: 31a03083 lslcc r3, r3, #1 + 2414: 3afffffa bcc 2404 <__aeabi_uidiv+0x40> + 2418: e3a02000 mov r2, #0 + 241c: e1500001 cmp r0, r1 + 2420: 20400001 subcs r0, r0, r1 + 2424: 21822003 orrcs r2, r2, r3 + 2428: e15000a1 cmp r0, r1, lsr #1 + 242c: 204000a1 subcs r0, r0, r1, lsr #1 + 2430: 218220a3 orrcs r2, r2, r3, lsr #1 + 2434: e1500121 cmp r0, r1, lsr #2 + 2438: 20400121 subcs r0, r0, r1, lsr #2 + 243c: 21822123 orrcs r2, r2, r3, lsr #2 + 2440: e15001a1 cmp r0, r1, lsr #3 + 2444: 204001a1 subcs r0, r0, r1, lsr #3 + 2448: 218221a3 orrcs r2, r2, r3, lsr #3 + 244c: e3500000 cmp r0, #0 + 2450: 11b03223 lsrsne r3, r3, #4 + 2454: 11a01221 lsrne r1, r1, #4 + 2458: 1affffef bne 241c <__aeabi_uidiv+0x58> + 245c: e1a00002 mov r0, r2 + 2460: e12fff1e bx lr + 2464: 03a00001 moveq r0, #1 + 2468: 13a00000 movne r0, #0 + 246c: e12fff1e bx lr + 2470: e3510801 cmp r1, #65536 ; 0x10000 + 2474: 21a01821 lsrcs r1, r1, #16 + 2478: 23a02010 movcs r2, #16 + 247c: 33a02000 movcc r2, #0 + 2480: e3510c01 cmp r1, #256 ; 0x100 + 2484: 21a01421 lsrcs r1, r1, #8 + 2488: 22822008 addcs r2, r2, #8 + 248c: e3510010 cmp r1, #16 + 2490: 21a01221 lsrcs r1, r1, #4 + 2494: 22822004 addcs r2, r2, #4 + 2498: e3510004 cmp r1, #4 + 249c: 82822003 addhi r2, r2, #3 + 24a0: 908220a1 addls r2, r2, r1, lsr #1 + 24a4: e1a00230 lsr r0, r0, r2 + 24a8: e12fff1e bx lr + 24ac: e3500000 cmp r0, #0 + 24b0: 13e00000 mvnne r0, #0 + 24b4: ea000007 b 24d8 <__aeabi_idiv0> + +000024b8 <__aeabi_uidivmod>: + 24b8: e3510000 cmp r1, #0 + 24bc: 0afffffa beq 24ac <__aeabi_uidiv+0xe8> + 24c0: e92d4003 push {r0, r1, lr} + 24c4: ebffffbe bl 23c4 <__aeabi_uidiv> + 24c8: e8bd4006 pop {r1, r2, lr} + 24cc: e0030092 mul r3, r2, r0 + 24d0: e0411003 sub r1, r1, r3 + 24d4: e12fff1e bx lr + +000024d8 <__aeabi_idiv0>: + 24d8: e12fff1e bx lr