Mercurial > hg > Members > tobaru > xv6-osx-rpi
view src/usr/init.asm @ 0:53676d1f5817 default tip
firsh commit
author | tobaru |
---|---|
date | Sun, 04 Feb 2018 17:54:49 +0900 |
parents | |
children |
line wrap: on
line source
_init: file format elf32-littlearm Disassembly of section .text: 00000000 <main>: char *argv[] = { "sh", 0 }; int main(void) { 0: e92d4800 push {fp, lr} 4: e1a0b00d mov fp, sp 8: e24dd038 sub sp, sp, #56 ; 0x38 c: e3a00000 mov r0, #0 10: e50b0004 str r0, [fp, #-4] int pid, wpid; if(open("console", O_RDWR) < 0){ 14: e59f0138 ldr r0, [pc, #312] ; 154 <main+0x154> 18: e3a01002 mov r1, #2 1c: eb000214 bl 874 <open> 20: e3500000 cmp r0, #0 24: aa00000d bge 60 <main+0x60> 28: eaffffff b 2c <main+0x2c> mknod("console", 1, 1); 2c: e59f0120 ldr r0, [pc, #288] ; 154 <main+0x154> 30: e3a01001 mov r1, #1 34: e50b0010 str r0, [fp, #-16] 38: e50b1014 str r1, [fp, #-20] ; 0xffffffec 3c: e51b2014 ldr r2, [fp, #-20] ; 0xffffffec 40: eb000214 bl 898 <mknod> open("console", O_RDWR); 44: e3a01002 mov r1, #2 48: e51b2010 ldr r2, [fp, #-16] 4c: e50b0018 str r0, [fp, #-24] ; 0xffffffe8 50: e1a00002 mov r0, r2 54: eb000206 bl 874 <open> } 58: e58d001c str r0, [sp, #28] 5c: eaffffff b 60 <main+0x60> dup(0); // stdout 60: e3a00000 mov r0, #0 64: e58d0018 str r0, [sp, #24] 68: eb000240 bl 970 <dup> dup(0); // stderr 6c: e59de018 ldr lr, [sp, #24] 70: e58d0014 str r0, [sp, #20] 74: e1a0000e mov r0, lr 78: eb00023c bl 970 <dup> for(;;){ 7c: e58d0010 str r0, [sp, #16] 80: eaffffff b 84 <main+0x84> printf(1, "init: starting sh\n"); 84: e59f10cc ldr r1, [pc, #204] ; 158 <main+0x158> 88: e3a00001 mov r0, #1 8c: eb000264 bl a24 <printf> pid = fork(); 90: eb0001a6 bl 730 <fork> 94: e50b0008 str r0, [fp, #-8] if(pid < 0){ 98: e51b0008 ldr r0, [fp, #-8] 9c: e3500000 cmp r0, #0 a0: aa000005 bge bc <main+0xbc> a4: eaffffff b a8 <main+0xa8> printf(1, "init: fork failed\n"); a8: e59f10bc ldr r1, [pc, #188] ; 16c <main+0x16c> ac: e3a00001 mov r0, #1 b0: eb00025b bl a24 <printf> exit(); b4: eb0001a6 bl 754 <exit> b8: e58d000c str r0, [sp, #12] } if(pid == 0){ bc: e51b0008 ldr r0, [fp, #-8] c0: e3500000 cmp r0, #0 c4: 1a00000a bne f4 <main+0xf4> c8: eaffffff b cc <main+0xcc> exec("sh", argv); cc: e59f008c ldr r0, [pc, #140] ; 160 <main+0x160> d0: e59f108c ldr r1, [pc, #140] ; 164 <main+0x164> d4: eb0001dd bl 850 <exec> printf(1, "init: exec sh failed\n"); d8: e59f1088 ldr r1, [pc, #136] ; 168 <main+0x168> dc: e3a0e001 mov lr, #1 e0: e58d0008 str r0, [sp, #8] e4: e1a0000e mov r0, lr e8: eb00024d bl a24 <printf> exit(); ec: eb000198 bl 754 <exit> f0: e58d0004 str r0, [sp, #4] } while((wpid=wait()) >= 0 && wpid != pid) f4: eaffffff b f8 <main+0xf8> f8: eb00019e bl 778 <wait> fc: e50b000c str r0, [fp, #-12] 100: e3a0e000 mov lr, #0 104: e3500000 cmp r0, #0 108: e58de000 str lr, [sp] 10c: ba000007 blt 130 <main+0x130> 110: eaffffff b 114 <main+0x114> 114: e51b000c ldr r0, [fp, #-12] 118: e51b1008 ldr r1, [fp, #-8] 11c: e3a02000 mov r2, #0 120: e1500001 cmp r0, r1 124: 13a02001 movne r2, #1 128: e58d2000 str r2, [sp] 12c: eaffffff b 130 <main+0x130> 130: e59d0000 ldr r0, [sp] 134: e3100001 tst r0, #1 138: 0a000004 beq 150 <main+0x150> 13c: eaffffff b 140 <main+0x140> printf(1, "zombie!\n"); 140: e59f1014 ldr r1, [pc, #20] ; 15c <main+0x15c> 144: e3a00001 mov r0, #1 148: eb000235 bl a24 <printf> while((wpid=wait()) >= 0 && wpid != pid) 14c: eaffffe9 b f8 <main+0xf8> for(;;){ 150: eaffffcb b 84 <main+0x84> 154: 000012ef .word 0x000012ef 158: 000012f7 .word 0x000012f7 15c: 00001333 .word 0x00001333 160: 000012ec .word 0x000012ec 164: 0000134c .word 0x0000134c 168: 0000131d .word 0x0000131d 16c: 0000130a .word 0x0000130a 00000170 <strcpy>: #include "fcntl.h" #include "user.h" char* strcpy(char *s, char *t) { 170: e24dd014 sub sp, sp, #20 174: e1a02001 mov r2, r1 178: e1a03000 mov r3, r0 17c: e58d0010 str r0, [sp, #16] 180: e58d100c str r1, [sp, #12] 184: e59d0010 ldr r0, [sp, #16] 188: e58d0008 str r0, [sp, #8] 18c: e58d2004 str r2, [sp, #4] 190: e58d3000 str r3, [sp] 194: eaffffff b 198 <strcpy+0x28> 198: e59d000c ldr r0, [sp, #12] 19c: e2801001 add r1, r0, #1 1a0: e58d100c str r1, [sp, #12] 1a4: e5d00000 ldrb r0, [r0] 1a8: e59d1010 ldr r1, [sp, #16] 1ac: e2812001 add r2, r1, #1 1b0: e58d2010 str r2, [sp, #16] 1b4: e5c10000 strb r0, [r1] 1b8: e3500000 cmp r0, #0 1bc: 0a000001 beq 1c8 <strcpy+0x58> 1c0: eaffffff b 1c4 <strcpy+0x54> 1c4: eafffff3 b 198 <strcpy+0x28> 1c8: e59d0008 ldr r0, [sp, #8] 1cc: e28dd014 add sp, sp, #20 1d0: e12fff1e bx lr 000001d4 <strcmp>: 1d4: e24dd014 sub sp, sp, #20 1d8: e1a02001 mov r2, r1 1dc: e1a03000 mov r3, r0 1e0: e58d0010 str r0, [sp, #16] 1e4: e58d100c str r1, [sp, #12] 1e8: e58d2008 str r2, [sp, #8] 1ec: e58d3004 str r3, [sp, #4] 1f0: eaffffff b 1f4 <strcmp+0x20> 1f4: e59d0010 ldr r0, [sp, #16] 1f8: e5d00000 ldrb r0, [r0] 1fc: e3a01000 mov r1, #0 200: e3500000 cmp r0, #0 204: e58d1000 str r1, [sp] 208: 0a000009 beq 234 <strcmp+0x60> 20c: eaffffff b 210 <strcmp+0x3c> 210: e59d0010 ldr r0, [sp, #16] 214: e5d00000 ldrb r0, [r0] 218: e59d100c ldr r1, [sp, #12] 21c: e5d11000 ldrb r1, [r1] 220: e3a02000 mov r2, #0 224: e1500001 cmp r0, r1 228: 03a02001 moveq r2, #1 22c: e58d2000 str r2, [sp] 230: eaffffff b 234 <strcmp+0x60> 234: e59d0000 ldr r0, [sp] 238: e3100001 tst r0, #1 23c: 0a000007 beq 260 <strcmp+0x8c> 240: eaffffff b 244 <strcmp+0x70> 244: e59d0010 ldr r0, [sp, #16] 248: e2800001 add r0, r0, #1 24c: e58d0010 str r0, [sp, #16] 250: e59d000c ldr r0, [sp, #12] 254: e2800001 add r0, r0, #1 258: e58d000c str r0, [sp, #12] 25c: eaffffe4 b 1f4 <strcmp+0x20> 260: e59d0010 ldr r0, [sp, #16] 264: e5d00000 ldrb r0, [r0] 268: e59d100c ldr r1, [sp, #12] 26c: e5d11000 ldrb r1, [r1] 270: e0400001 sub r0, r0, r1 274: e28dd014 add sp, sp, #20 278: e12fff1e bx lr 0000027c <strlen>: 27c: e24dd00c sub sp, sp, #12 280: e1a01000 mov r1, r0 284: e58d0008 str r0, [sp, #8] 288: e3a00000 mov r0, #0 28c: e58d0004 str r0, [sp, #4] 290: e58d1000 str r1, [sp] 294: eaffffff b 298 <strlen+0x1c> 298: e59d0008 ldr r0, [sp, #8] 29c: e59d1004 ldr r1, [sp, #4] 2a0: e7d00001 ldrb r0, [r0, r1] 2a4: e3500000 cmp r0, #0 2a8: 0a000005 beq 2c4 <strlen+0x48> 2ac: eaffffff b 2b0 <strlen+0x34> 2b0: eaffffff b 2b4 <strlen+0x38> 2b4: e59d0004 ldr r0, [sp, #4] 2b8: e2800001 add r0, r0, #1 2bc: e58d0004 str r0, [sp, #4] 2c0: eafffff4 b 298 <strlen+0x1c> 2c4: e59d0004 ldr r0, [sp, #4] 2c8: e28dd00c add sp, sp, #12 2cc: e12fff1e bx lr 000002d0 <memset>: 2d0: e92d4800 push {fp, lr} 2d4: e1a0b00d mov fp, sp 2d8: e24dd02c sub sp, sp, #44 ; 0x2c 2dc: e1a03002 mov r3, r2 2e0: e1a0c001 mov ip, r1 2e4: e1a0e000 mov lr, r0 2e8: e50b0004 str r0, [fp, #-4] 2ec: e50b1008 str r1, [fp, #-8] 2f0: e50b200c str r2, [fp, #-12] 2f4: e51b0004 ldr r0, [fp, #-4] 2f8: e50b0010 str r0, [fp, #-16] 2fc: e51b0008 ldr r0, [fp, #-8] 300: e54b0011 strb r0, [fp, #-17] ; 0xffffffef 304: e55b0011 ldrb r0, [fp, #-17] ; 0xffffffef 308: e1a01c00 lsl r1, r0, #24 30c: e1811800 orr r1, r1, r0, lsl #16 310: e1811400 orr r1, r1, r0, lsl #8 314: e1810000 orr r0, r1, r0 318: e58d0014 str r0, [sp, #20] 31c: e58d300c str r3, [sp, #12] 320: e58dc008 str ip, [sp, #8] 324: e58de004 str lr, [sp, #4] 328: eaffffff b 32c <memset+0x5c> 32c: e51b000c ldr r0, [fp, #-12] 330: e3a01000 mov r1, #0 334: e3500000 cmp r0, #0 338: e58d1000 str r1, [sp] 33c: 0a000006 beq 35c <memset+0x8c> 340: eaffffff b 344 <memset+0x74> 344: e55b0010 ldrb r0, [fp, #-16] 348: e2000003 and r0, r0, #3 34c: e3500000 cmp r0, #0 350: 13a00001 movne r0, #1 354: e58d0000 str r0, [sp] 358: eaffffff b 35c <memset+0x8c> 35c: e59d0000 ldr r0, [sp] 360: e3100001 tst r0, #1 364: 0a00000b beq 398 <memset+0xc8> 368: eaffffff b 36c <memset+0x9c> 36c: e55b0011 ldrb r0, [fp, #-17] ; 0xffffffef 370: e51b1010 ldr r1, [fp, #-16] 374: e5c10000 strb r0, [r1] 378: eaffffff b 37c <memset+0xac> 37c: e51b000c ldr r0, [fp, #-12] 380: e2400001 sub r0, r0, #1 384: e50b000c str r0, [fp, #-12] 388: e51b0010 ldr r0, [fp, #-16] 38c: e2800001 add r0, r0, #1 390: e50b0010 str r0, [fp, #-16] 394: eaffffe4 b 32c <memset+0x5c> 398: e51b0010 ldr r0, [fp, #-16] 39c: e58d0010 str r0, [sp, #16] 3a0: eaffffff b 3a4 <memset+0xd4> 3a4: e51b000c ldr r0, [fp, #-12] 3a8: e3500004 cmp r0, #4 3ac: 3a00000b bcc 3e0 <memset+0x110> 3b0: eaffffff b 3b4 <memset+0xe4> 3b4: e59d0014 ldr r0, [sp, #20] 3b8: e59d1010 ldr r1, [sp, #16] 3bc: e5810000 str r0, [r1] 3c0: eaffffff b 3c4 <memset+0xf4> 3c4: e51b000c ldr r0, [fp, #-12] 3c8: e2400004 sub r0, r0, #4 3cc: e50b000c str r0, [fp, #-12] 3d0: e59d0010 ldr r0, [sp, #16] 3d4: e2800004 add r0, r0, #4 3d8: e58d0010 str r0, [sp, #16] 3dc: eafffff0 b 3a4 <memset+0xd4> 3e0: e59d0010 ldr r0, [sp, #16] 3e4: e50b0010 str r0, [fp, #-16] 3e8: eaffffff b 3ec <memset+0x11c> 3ec: e51b000c ldr r0, [fp, #-12] 3f0: e3500000 cmp r0, #0 3f4: 0a00000b beq 428 <memset+0x158> 3f8: eaffffff b 3fc <memset+0x12c> 3fc: e55b0011 ldrb r0, [fp, #-17] ; 0xffffffef 400: e51b1010 ldr r1, [fp, #-16] 404: e5c10000 strb r0, [r1] 408: eaffffff b 40c <memset+0x13c> 40c: e51b000c ldr r0, [fp, #-12] 410: e2400001 sub r0, r0, #1 414: e50b000c str r0, [fp, #-12] 418: e51b0010 ldr r0, [fp, #-16] 41c: e2800001 add r0, r0, #1 420: e50b0010 str r0, [fp, #-16] 424: eafffff0 b 3ec <memset+0x11c> 428: e51b0004 ldr r0, [fp, #-4] 42c: e1a0d00b mov sp, fp 430: e8bd8800 pop {fp, pc} 00000434 <strchr>: 434: e24dd014 sub sp, sp, #20 438: e1a02001 mov r2, r1 43c: e1a03000 mov r3, r0 440: e58d000c str r0, [sp, #12] 444: e5cd100b strb r1, [sp, #11] 448: e58d2004 str r2, [sp, #4] 44c: e58d3000 str r3, [sp] 450: eaffffff b 454 <strchr+0x20> 454: e59d000c ldr r0, [sp, #12] 458: e5d00000 ldrb r0, [r0] 45c: e3500000 cmp r0, #0 460: 0a00000e beq 4a0 <strchr+0x6c> 464: eaffffff b 468 <strchr+0x34> 468: e59d000c ldr r0, [sp, #12] 46c: e5d00000 ldrb r0, [r0] 470: e5dd100b ldrb r1, [sp, #11] 474: e1500001 cmp r0, r1 478: 1a000003 bne 48c <strchr+0x58> 47c: eaffffff b 480 <strchr+0x4c> 480: e59d000c ldr r0, [sp, #12] 484: e58d0010 str r0, [sp, #16] 488: ea000007 b 4ac <strchr+0x78> 48c: eaffffff b 490 <strchr+0x5c> 490: e59d000c ldr r0, [sp, #12] 494: e2800001 add r0, r0, #1 498: e58d000c str r0, [sp, #12] 49c: eaffffec b 454 <strchr+0x20> 4a0: e3a00000 mov r0, #0 4a4: e58d0010 str r0, [sp, #16] 4a8: eaffffff b 4ac <strchr+0x78> 4ac: e59d0010 ldr r0, [sp, #16] 4b0: e28dd014 add sp, sp, #20 4b4: e12fff1e bx lr 000004b8 <gets>: 4b8: e92d4800 push {fp, lr} 4bc: e1a0b00d mov fp, sp 4c0: e24dd020 sub sp, sp, #32 4c4: e1a02001 mov r2, r1 4c8: e1a03000 mov r3, r0 4cc: e50b0004 str r0, [fp, #-4] 4d0: e50b1008 str r1, [fp, #-8] 4d4: e3a00000 mov r0, #0 4d8: e50b000c str r0, [fp, #-12] 4dc: e58d2008 str r2, [sp, #8] 4e0: e58d3004 str r3, [sp, #4] 4e4: eaffffff b 4e8 <gets+0x30> 4e8: e51b000c ldr r0, [fp, #-12] 4ec: e2800001 add r0, r0, #1 4f0: e51b1008 ldr r1, [fp, #-8] 4f4: e1500001 cmp r0, r1 4f8: aa00001a bge 568 <gets+0xb0> 4fc: eaffffff b 500 <gets+0x48> 500: e3a00000 mov r0, #0 504: e28d100f add r1, sp, #15 508: e3a02001 mov r2, #1 50c: eb0000ab bl 7c0 <read> 510: e58d0010 str r0, [sp, #16] 514: e59d0010 ldr r0, [sp, #16] 518: e3500000 cmp r0, #0 51c: ca000001 bgt 528 <gets+0x70> 520: eaffffff b 524 <gets+0x6c> 524: ea00000f b 568 <gets+0xb0> 528: e5dd000f ldrb r0, [sp, #15] 52c: e51b1004 ldr r1, [fp, #-4] 530: e51b200c ldr r2, [fp, #-12] 534: e2823001 add r3, r2, #1 538: e50b300c str r3, [fp, #-12] 53c: e7c10002 strb r0, [r1, r2] 540: e5dd000f ldrb r0, [sp, #15] 544: e350000a cmp r0, #10 548: 0a000004 beq 560 <gets+0xa8> 54c: eaffffff b 550 <gets+0x98> 550: e5dd000f ldrb r0, [sp, #15] 554: e350000d cmp r0, #13 558: 1a000001 bne 564 <gets+0xac> 55c: eaffffff b 560 <gets+0xa8> 560: ea000000 b 568 <gets+0xb0> 564: eaffffdf b 4e8 <gets+0x30> 568: e51b0004 ldr r0, [fp, #-4] 56c: e51b100c ldr r1, [fp, #-12] 570: e3a02000 mov r2, #0 574: e7c02001 strb r2, [r0, r1] 578: e51b0004 ldr r0, [fp, #-4] 57c: e1a0d00b mov sp, fp 580: e8bd8800 pop {fp, pc} 00000584 <stat>: 584: e92d4800 push {fp, lr} 588: e1a0b00d mov fp, sp 58c: e24dd020 sub sp, sp, #32 590: e1a02001 mov r2, r1 594: e1a03000 mov r3, r0 598: e50b0008 str r0, [fp, #-8] 59c: e50b100c str r1, [fp, #-12] 5a0: e51b0008 ldr r0, [fp, #-8] 5a4: e3a01000 mov r1, #0 5a8: e58d2008 str r2, [sp, #8] 5ac: e58d3004 str r3, [sp, #4] 5b0: eb0000af bl 874 <open> 5b4: e58d0010 str r0, [sp, #16] 5b8: e59d0010 ldr r0, [sp, #16] 5bc: e3500000 cmp r0, #0 5c0: aa000003 bge 5d4 <stat+0x50> 5c4: eaffffff b 5c8 <stat+0x44> 5c8: e3e00000 mvn r0, #0 5cc: e50b0004 str r0, [fp, #-4] 5d0: ea000009 b 5fc <stat+0x78> 5d4: e59d0010 ldr r0, [sp, #16] 5d8: e51b100c ldr r1, [fp, #-12] 5dc: eb0000bf bl 8e0 <fstat> 5e0: e58d000c str r0, [sp, #12] 5e4: e59d0010 ldr r0, [sp, #16] 5e8: eb000086 bl 808 <close> 5ec: e59d100c ldr r1, [sp, #12] 5f0: e50b1004 str r1, [fp, #-4] 5f4: e58d0000 str r0, [sp] 5f8: eaffffff b 5fc <stat+0x78> 5fc: e51b0004 ldr r0, [fp, #-4] 600: e1a0d00b mov sp, fp 604: e8bd8800 pop {fp, pc} 00000608 <atoi>: 608: e24dd010 sub sp, sp, #16 60c: e1a01000 mov r1, r0 610: e58d000c str r0, [sp, #12] 614: e3a00000 mov r0, #0 618: e58d0008 str r0, [sp, #8] 61c: e58d1004 str r1, [sp, #4] 620: eaffffff b 624 <atoi+0x1c> 624: e59d000c ldr r0, [sp, #12] 628: e5d00000 ldrb r0, [r0] 62c: e3a01000 mov r1, #0 630: e3500030 cmp r0, #48 ; 0x30 634: e58d1000 str r1, [sp] 638: ba000007 blt 65c <atoi+0x54> 63c: eaffffff b 640 <atoi+0x38> 640: e59d000c ldr r0, [sp, #12] 644: e5d00000 ldrb r0, [r0] 648: e3a01000 mov r1, #0 64c: e350003a cmp r0, #58 ; 0x3a 650: b3a01001 movlt r1, #1 654: e58d1000 str r1, [sp] 658: eaffffff b 65c <atoi+0x54> 65c: e59d0000 ldr r0, [sp] 660: e3100001 tst r0, #1 664: 0a00000a beq 694 <atoi+0x8c> 668: eaffffff b 66c <atoi+0x64> 66c: e59d0008 ldr r0, [sp, #8] 670: e0800100 add r0, r0, r0, lsl #2 674: e59d100c ldr r1, [sp, #12] 678: e2812001 add r2, r1, #1 67c: e58d200c str r2, [sp, #12] 680: e5d11000 ldrb r1, [r1] 684: e0810080 add r0, r1, r0, lsl #1 688: e2400030 sub r0, r0, #48 ; 0x30 68c: e58d0008 str r0, [sp, #8] 690: eaffffe3 b 624 <atoi+0x1c> 694: e59d0008 ldr r0, [sp, #8] 698: e28dd010 add sp, sp, #16 69c: e12fff1e bx lr 000006a0 <memmove>: 6a0: e92d4800 push {fp, lr} 6a4: e1a0b00d mov fp, sp 6a8: e24dd020 sub sp, sp, #32 6ac: e1a03002 mov r3, r2 6b0: e1a0c001 mov ip, r1 6b4: e1a0e000 mov lr, r0 6b8: e50b0004 str r0, [fp, #-4] 6bc: e50b1008 str r1, [fp, #-8] 6c0: e50b200c str r2, [fp, #-12] 6c4: e51b0004 ldr r0, [fp, #-4] 6c8: e58d0010 str r0, [sp, #16] 6cc: e51b0008 ldr r0, [fp, #-8] 6d0: e58d000c str r0, [sp, #12] 6d4: e58d3008 str r3, [sp, #8] 6d8: e58dc004 str ip, [sp, #4] 6dc: e58de000 str lr, [sp] 6e0: eaffffff b 6e4 <memmove+0x44> 6e4: e51b000c ldr r0, [fp, #-12] 6e8: e2401001 sub r1, r0, #1 6ec: e50b100c str r1, [fp, #-12] 6f0: e3500001 cmp r0, #1 6f4: ba000009 blt 720 <memmove+0x80> 6f8: eaffffff b 6fc <memmove+0x5c> 6fc: e59d000c ldr r0, [sp, #12] 700: e2801001 add r1, r0, #1 704: e58d100c str r1, [sp, #12] 708: e5d00000 ldrb r0, [r0] 70c: e59d1010 ldr r1, [sp, #16] 710: e2812001 add r2, r1, #1 714: e58d2010 str r2, [sp, #16] 718: e5c10000 strb r0, [r1] 71c: eafffff0 b 6e4 <memmove+0x44> 720: e51b0004 ldr r0, [fp, #-4] 724: e1a0d00b mov sp, fp 728: e8bd8800 pop {fp, pc} 0000072c <raise>: return vdst; } void raise() {} 72c: e12fff1e bx lr 00000730 <fork>: 730: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 734: e1a04003 mov r4, r3 738: e1a03002 mov r3, r2 73c: e1a02001 mov r2, r1 740: e1a01000 mov r1, r0 744: e3a00001 mov r0, #1 748: ef000000 svc 0x00000000 74c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 750: e12fff1e bx lr 00000754 <exit>: 754: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 758: e1a04003 mov r4, r3 75c: e1a03002 mov r3, r2 760: e1a02001 mov r2, r1 764: e1a01000 mov r1, r0 768: e3a00002 mov r0, #2 76c: ef000000 svc 0x00000000 770: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 774: e12fff1e bx lr 00000778 <wait>: 778: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 77c: e1a04003 mov r4, r3 780: e1a03002 mov r3, r2 784: e1a02001 mov r2, r1 788: e1a01000 mov r1, r0 78c: e3a00003 mov r0, #3 790: ef000000 svc 0x00000000 794: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 798: e12fff1e bx lr 0000079c <pipe>: 79c: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 7a0: e1a04003 mov r4, r3 7a4: e1a03002 mov r3, r2 7a8: e1a02001 mov r2, r1 7ac: e1a01000 mov r1, r0 7b0: e3a00004 mov r0, #4 7b4: ef000000 svc 0x00000000 7b8: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 7bc: e12fff1e bx lr 000007c0 <read>: 7c0: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 7c4: e1a04003 mov r4, r3 7c8: e1a03002 mov r3, r2 7cc: e1a02001 mov r2, r1 7d0: e1a01000 mov r1, r0 7d4: e3a00005 mov r0, #5 7d8: ef000000 svc 0x00000000 7dc: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 7e0: e12fff1e bx lr 000007e4 <write>: 7e4: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 7e8: e1a04003 mov r4, r3 7ec: e1a03002 mov r3, r2 7f0: e1a02001 mov r2, r1 7f4: e1a01000 mov r1, r0 7f8: e3a00010 mov r0, #16 7fc: ef000000 svc 0x00000000 800: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 804: e12fff1e bx lr 00000808 <close>: 808: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 80c: e1a04003 mov r4, r3 810: e1a03002 mov r3, r2 814: e1a02001 mov r2, r1 818: e1a01000 mov r1, r0 81c: e3a00015 mov r0, #21 820: ef000000 svc 0x00000000 824: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 828: e12fff1e bx lr 0000082c <kill>: 82c: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 830: e1a04003 mov r4, r3 834: e1a03002 mov r3, r2 838: e1a02001 mov r2, r1 83c: e1a01000 mov r1, r0 840: e3a00006 mov r0, #6 844: ef000000 svc 0x00000000 848: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 84c: e12fff1e bx lr 00000850 <exec>: 850: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 854: e1a04003 mov r4, r3 858: e1a03002 mov r3, r2 85c: e1a02001 mov r2, r1 860: e1a01000 mov r1, r0 864: e3a00007 mov r0, #7 868: ef000000 svc 0x00000000 86c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 870: e12fff1e bx lr 00000874 <open>: 874: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 878: e1a04003 mov r4, r3 87c: e1a03002 mov r3, r2 880: e1a02001 mov r2, r1 884: e1a01000 mov r1, r0 888: e3a0000f mov r0, #15 88c: ef000000 svc 0x00000000 890: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 894: e12fff1e bx lr 00000898 <mknod>: 898: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 89c: e1a04003 mov r4, r3 8a0: e1a03002 mov r3, r2 8a4: e1a02001 mov r2, r1 8a8: e1a01000 mov r1, r0 8ac: e3a00011 mov r0, #17 8b0: ef000000 svc 0x00000000 8b4: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 8b8: e12fff1e bx lr 000008bc <unlink>: 8bc: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 8c0: e1a04003 mov r4, r3 8c4: e1a03002 mov r3, r2 8c8: e1a02001 mov r2, r1 8cc: e1a01000 mov r1, r0 8d0: e3a00012 mov r0, #18 8d4: ef000000 svc 0x00000000 8d8: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 8dc: e12fff1e bx lr 000008e0 <fstat>: 8e0: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 8e4: e1a04003 mov r4, r3 8e8: e1a03002 mov r3, r2 8ec: e1a02001 mov r2, r1 8f0: e1a01000 mov r1, r0 8f4: e3a00008 mov r0, #8 8f8: ef000000 svc 0x00000000 8fc: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 900: e12fff1e bx lr 00000904 <link>: 904: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 908: e1a04003 mov r4, r3 90c: e1a03002 mov r3, r2 910: e1a02001 mov r2, r1 914: e1a01000 mov r1, r0 918: e3a00013 mov r0, #19 91c: ef000000 svc 0x00000000 920: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 924: e12fff1e bx lr 00000928 <mkdir>: 928: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 92c: e1a04003 mov r4, r3 930: e1a03002 mov r3, r2 934: e1a02001 mov r2, r1 938: e1a01000 mov r1, r0 93c: e3a00014 mov r0, #20 940: ef000000 svc 0x00000000 944: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 948: e12fff1e bx lr 0000094c <chdir>: 94c: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 950: e1a04003 mov r4, r3 954: e1a03002 mov r3, r2 958: e1a02001 mov r2, r1 95c: e1a01000 mov r1, r0 960: e3a00009 mov r0, #9 964: ef000000 svc 0x00000000 968: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 96c: e12fff1e bx lr 00000970 <dup>: 970: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 974: e1a04003 mov r4, r3 978: e1a03002 mov r3, r2 97c: e1a02001 mov r2, r1 980: e1a01000 mov r1, r0 984: e3a0000a mov r0, #10 988: ef000000 svc 0x00000000 98c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 990: e12fff1e bx lr 00000994 <getpid>: 994: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 998: e1a04003 mov r4, r3 99c: e1a03002 mov r3, r2 9a0: e1a02001 mov r2, r1 9a4: e1a01000 mov r1, r0 9a8: e3a0000b mov r0, #11 9ac: ef000000 svc 0x00000000 9b0: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 9b4: e12fff1e bx lr 000009b8 <sbrk>: 9b8: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 9bc: e1a04003 mov r4, r3 9c0: e1a03002 mov r3, r2 9c4: e1a02001 mov r2, r1 9c8: e1a01000 mov r1, r0 9cc: e3a0000c mov r0, #12 9d0: ef000000 svc 0x00000000 9d4: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 9d8: e12fff1e bx lr 000009dc <sleep>: 9dc: e52d4004 push {r4} ; (str r4, [sp, #-4]!) 9e0: e1a04003 mov r4, r3 9e4: e1a03002 mov r3, r2 9e8: e1a02001 mov r2, r1 9ec: e1a01000 mov r1, r0 9f0: e3a0000d mov r0, #13 9f4: ef000000 svc 0x00000000 9f8: e49d4004 pop {r4} ; (ldr r4, [sp], #4) 9fc: e12fff1e bx lr 00000a00 <uptime>: a00: e52d4004 push {r4} ; (str r4, [sp, #-4]!) a04: e1a04003 mov r4, r3 a08: e1a03002 mov r3, r2 a0c: e1a02001 mov r2, r1 a10: e1a01000 mov r1, r0 a14: e3a0000e mov r0, #14 a18: ef000000 svc 0x00000000 a1c: e49d4004 pop {r4} ; (ldr r4, [sp], #4) a20: e12fff1e bx lr 00000a24 <printf>: } // Print to the given fd. Only understands %d, %x, %p, %s. void printf(int fd, char *fmt, ...) { a24: e92d4800 push {fp, lr} a28: e1a0b00d mov fp, sp a2c: e24dd028 sub sp, sp, #40 ; 0x28 a30: e1a02001 mov r2, r1 a34: e1a03000 mov r3, r0 a38: e50b0004 str r0, [fp, #-4] a3c: e50b1008 str r1, [fp, #-8] a40: e3a00000 mov r0, #0 a44: e58d0010 str r0, [sp, #16] a48: e24b1008 sub r1, fp, #8 a4c: e2811004 add r1, r1, #4 a50: e58d100c str r1, [sp, #12] a54: e58d0014 str r0, [sp, #20] a58: e58d2008 str r2, [sp, #8] a5c: e58d3004 str r3, [sp, #4] a60: eaffffff b a64 <printf+0x40> a64: e51b0008 ldr r0, [fp, #-8] a68: e59d1014 ldr r1, [sp, #20] a6c: e7d00001 ldrb r0, [r0, r1] a70: e3500000 cmp r0, #0 a74: 0a00007e beq c74 <printf+0x250> a78: eaffffff b a7c <printf+0x58> a7c: e51b0008 ldr r0, [fp, #-8] a80: e59d1014 ldr r1, [sp, #20] a84: e7d00001 ldrb r0, [r0, r1] a88: e50b0010 str r0, [fp, #-16] a8c: e59d0010 ldr r0, [sp, #16] a90: e3500000 cmp r0, #0 a94: 1a00000c bne acc <printf+0xa8> a98: eaffffff b a9c <printf+0x78> a9c: e51b0010 ldr r0, [fp, #-16] aa0: e3500025 cmp r0, #37 ; 0x25 aa4: 1a000003 bne ab8 <printf+0x94> aa8: eaffffff b aac <printf+0x88> aac: e3a00025 mov r0, #37 ; 0x25 ab0: e58d0010 str r0, [sp, #16] ab4: ea000003 b ac8 <printf+0xa4> ab8: e51b0004 ldr r0, [fp, #-4] abc: e55b1010 ldrb r1, [fp, #-16] ac0: eb00006e bl c80 <putc> ac4: eaffffff b ac8 <printf+0xa4> ac8: ea000064 b c60 <printf+0x23c> acc: e59d0010 ldr r0, [sp, #16] ad0: e3500025 cmp r0, #37 ; 0x25 ad4: 1a000060 bne c5c <printf+0x238> ad8: eaffffff b adc <printf+0xb8> adc: e51b0010 ldr r0, [fp, #-16] ae0: e3500064 cmp r0, #100 ; 0x64 ae4: 1a00000a bne b14 <printf+0xf0> ae8: eaffffff b aec <printf+0xc8> aec: e51b0004 ldr r0, [fp, #-4] af0: e59d100c ldr r1, [sp, #12] af4: e5911000 ldr r1, [r1] af8: e3a0200a mov r2, #10 afc: e3a03001 mov r3, #1 b00: eb00006f bl cc4 <printint> b04: e59d000c ldr r0, [sp, #12] b08: e2800004 add r0, r0, #4 b0c: e58d000c str r0, [sp, #12] b10: ea00004e b c50 <printf+0x22c> b14: e51b0010 ldr r0, [fp, #-16] b18: e3500078 cmp r0, #120 ; 0x78 b1c: 0a000004 beq b34 <printf+0x110> b20: eaffffff b b24 <printf+0x100> b24: e51b0010 ldr r0, [fp, #-16] b28: e3500070 cmp r0, #112 ; 0x70 b2c: 1a00000a bne b5c <printf+0x138> b30: eaffffff b b34 <printf+0x110> b34: e51b0004 ldr r0, [fp, #-4] b38: e59d100c ldr r1, [sp, #12] b3c: e5911000 ldr r1, [r1] b40: e3a02010 mov r2, #16 b44: e3a03000 mov r3, #0 b48: eb00005d bl cc4 <printint> b4c: e59d000c ldr r0, [sp, #12] b50: e2800004 add r0, r0, #4 b54: e58d000c str r0, [sp, #12] b58: ea00003b b c4c <printf+0x228> b5c: e51b0010 ldr r0, [fp, #-16] b60: e3500073 cmp r0, #115 ; 0x73 b64: 1a00001a bne bd4 <printf+0x1b0> b68: eaffffff b b6c <printf+0x148> b6c: e59d000c ldr r0, [sp, #12] b70: e4901004 ldr r1, [r0], #4 b74: e50b100c str r1, [fp, #-12] b78: e58d000c str r0, [sp, #12] b7c: e51b000c ldr r0, [fp, #-12] b80: e3500000 cmp r0, #0 b84: 1a000003 bne b98 <printf+0x174> b88: eaffffff b b8c <printf+0x168> b8c: e59f00e8 ldr r0, [pc, #232] ; c7c <printf+0x258> b90: e50b000c str r0, [fp, #-12] b94: eaffffff b b98 <printf+0x174> b98: eaffffff b b9c <printf+0x178> b9c: e51b000c ldr r0, [fp, #-12] ba0: e5d00000 ldrb r0, [r0] ba4: e3500000 cmp r0, #0 ba8: 0a000008 beq bd0 <printf+0x1ac> bac: eaffffff b bb0 <printf+0x18c> bb0: e51b0004 ldr r0, [fp, #-4] bb4: e51b100c ldr r1, [fp, #-12] bb8: e5d11000 ldrb r1, [r1] bbc: eb00002f bl c80 <putc> bc0: e51b000c ldr r0, [fp, #-12] bc4: e2800001 add r0, r0, #1 bc8: e50b000c str r0, [fp, #-12] bcc: eafffff2 b b9c <printf+0x178> bd0: ea00001c b c48 <printf+0x224> bd4: e51b0010 ldr r0, [fp, #-16] bd8: e3500063 cmp r0, #99 ; 0x63 bdc: 1a000008 bne c04 <printf+0x1e0> be0: eaffffff b be4 <printf+0x1c0> be4: e51b0004 ldr r0, [fp, #-4] be8: e59d100c ldr r1, [sp, #12] bec: e5d11000 ldrb r1, [r1] bf0: eb000022 bl c80 <putc> bf4: e59d000c ldr r0, [sp, #12] bf8: e2800004 add r0, r0, #4 bfc: e58d000c str r0, [sp, #12] c00: ea00000f b c44 <printf+0x220> c04: e51b0010 ldr r0, [fp, #-16] c08: e3500025 cmp r0, #37 ; 0x25 c0c: 1a000004 bne c24 <printf+0x200> c10: eaffffff b c14 <printf+0x1f0> c14: e51b0004 ldr r0, [fp, #-4] c18: e55b1010 ldrb r1, [fp, #-16] c1c: eb000017 bl c80 <putc> c20: ea000006 b c40 <printf+0x21c> c24: e51b0004 ldr r0, [fp, #-4] c28: e3a01025 mov r1, #37 ; 0x25 c2c: eb000013 bl c80 <putc> c30: e51b0004 ldr r0, [fp, #-4] c34: e55b1010 ldrb r1, [fp, #-16] c38: eb000010 bl c80 <putc> c3c: eaffffff b c40 <printf+0x21c> c40: eaffffff b c44 <printf+0x220> c44: eaffffff b c48 <printf+0x224> c48: eaffffff b c4c <printf+0x228> c4c: eaffffff b c50 <printf+0x22c> c50: e3a00000 mov r0, #0 c54: e58d0010 str r0, [sp, #16] c58: eaffffff b c5c <printf+0x238> c5c: eaffffff b c60 <printf+0x23c> c60: eaffffff b c64 <printf+0x240> c64: e59d0014 ldr r0, [sp, #20] c68: e2800001 add r0, r0, #1 c6c: e58d0014 str r0, [sp, #20] c70: eaffff7b b a64 <printf+0x40> c74: e1a0d00b mov sp, fp c78: e8bd8800 pop {fp, pc} c7c: 0000133c .word 0x0000133c 00000c80 <putc>: { c80: e92d4800 push {fp, lr} c84: e1a0b00d mov fp, sp c88: e24dd018 sub sp, sp, #24 c8c: e1a02001 mov r2, r1 c90: e1a03000 mov r3, r0 c94: e50b0004 str r0, [fp, #-4] c98: e54b1005 strb r1, [fp, #-5] write(fd, &c, 1); c9c: e51b0004 ldr r0, [fp, #-4] ca0: e24b1005 sub r1, fp, #5 ca4: e3a0c001 mov ip, #1 ca8: e58d200c str r2, [sp, #12] cac: e1a0200c mov r2, ip cb0: e58d3008 str r3, [sp, #8] cb4: ebfffeca bl 7e4 <write> } cb8: e58d0004 str r0, [sp, #4] cbc: e1a0d00b mov sp, fp cc0: e8bd8800 pop {fp, pc} 00000cc4 <printint>: { cc4: e92d4830 push {r4, r5, fp, lr} cc8: e28db008 add fp, sp, #8 ccc: e24dd040 sub sp, sp, #64 ; 0x40 cd0: e1a0c003 mov ip, r3 cd4: e1a0e002 mov lr, r2 cd8: e1a04001 mov r4, r1 cdc: e1a05000 mov r5, r0 ce0: e50b000c str r0, [fp, #-12] ce4: e50b1010 str r1, [fp, #-16] ce8: e50b2014 str r2, [fp, #-20] ; 0xffffffec cec: e50b3018 str r3, [fp, #-24] ; 0xffffffe8 cf0: e3a00000 mov r0, #0 cf4: e58d0018 str r0, [sp, #24] cf8: e51b0018 ldr r0, [fp, #-24] ; 0xffffffe8 cfc: e3500000 cmp r0, #0 d00: e58dc010 str ip, [sp, #16] d04: e58de00c str lr, [sp, #12] d08: e58d4008 str r4, [sp, #8] d0c: e58d5004 str r5, [sp, #4] d10: 0a00000a beq d40 <printint+0x7c> d14: eaffffff b d18 <printint+0x54> d18: e51b0010 ldr r0, [fp, #-16] d1c: e3500000 cmp r0, #0 d20: aa000006 bge d40 <printint+0x7c> d24: eaffffff b d28 <printint+0x64> d28: e3a00001 mov r0, #1 d2c: e58d0018 str r0, [sp, #24] d30: e51b0010 ldr r0, [fp, #-16] d34: e2600000 rsb r0, r0, #0 d38: e58d0014 str r0, [sp, #20] d3c: ea000002 b d4c <printint+0x88> d40: e51b0010 ldr r0, [fp, #-16] d44: e58d0014 str r0, [sp, #20] d48: eaffffff b d4c <printint+0x88> d4c: e3a00000 mov r0, #0 d50: e58d001c str r0, [sp, #28] d54: eaffffff b d58 <printint+0x94> d58: e59d0014 ldr r0, [sp, #20] d5c: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec d60: eb000158 bl 12c8 <__aeabi_uidivmod> d64: e59fe0a0 ldr lr, [pc, #160] ; e0c <printint+0x148> d68: e7de1001 ldrb r1, [lr, r1] d6c: e59de01c ldr lr, [sp, #28] d70: e28e2001 add r2, lr, #1 d74: e58d201c str r2, [sp, #28] d78: e28d2020 add r2, sp, #32 d7c: e7c2100e strb r1, [r2, lr] d80: e58d0000 str r0, [sp] d84: eaffffff b d88 <printint+0xc4> d88: e51b1014 ldr r1, [fp, #-20] ; 0xffffffec d8c: e59d0014 ldr r0, [sp, #20] d90: eb00010f bl 11d4 <__aeabi_uidiv> d94: e58d0014 str r0, [sp, #20] d98: e3500000 cmp r0, #0 d9c: 1affffed bne d58 <printint+0x94> da0: eaffffff b da4 <printint+0xe0> da4: e59d0018 ldr r0, [sp, #24] da8: e3500000 cmp r0, #0 dac: 0a000007 beq dd0 <printint+0x10c> db0: eaffffff b db4 <printint+0xf0> db4: e59d001c ldr r0, [sp, #28] db8: e2801001 add r1, r0, #1 dbc: e58d101c str r1, [sp, #28] dc0: e28d1020 add r1, sp, #32 dc4: e3a0202d mov r2, #45 ; 0x2d dc8: e7c12000 strb r2, [r1, r0] dcc: eaffffff b dd0 <printint+0x10c> dd0: eaffffff b dd4 <printint+0x110> dd4: e59d001c ldr r0, [sp, #28] dd8: e2400001 sub r0, r0, #1 ddc: e58d001c str r0, [sp, #28] de0: e3500000 cmp r0, #0 de4: ba000006 blt e04 <printint+0x140> de8: eaffffff b dec <printint+0x128> dec: e51b000c ldr r0, [fp, #-12] df0: e59d101c ldr r1, [sp, #28] df4: e28d2020 add r2, sp, #32 df8: e7d21001 ldrb r1, [r2, r1] dfc: ebffff9f bl c80 <putc> e00: eafffff3 b dd4 <printint+0x110> e04: e24bd008 sub sp, fp, #8 e08: e8bd8830 pop {r4, r5, fp, pc} e0c: 00001354 .word 0x00001354 00000e10 <free>: static Header base; static Header *freep; void free(void *ap) { e10: e24dd014 sub sp, sp, #20 e14: e1a01000 mov r1, r0 e18: e58d0010 str r0, [sp, #16] e1c: e59d0010 ldr r0, [sp, #16] e20: e2400008 sub r0, r0, #8 e24: e58d000c str r0, [sp, #12] e28: e59f0188 ldr r0, [pc, #392] ; fb8 <free+0x1a8> e2c: e5900000 ldr r0, [r0] e30: e58d0008 str r0, [sp, #8] e34: e58d1004 str r1, [sp, #4] e38: eaffffff b e3c <free+0x2c> e3c: e59d000c ldr r0, [sp, #12] e40: e59d1008 ldr r1, [sp, #8] e44: e3a02000 mov r2, #0 e48: e1500001 cmp r0, r1 e4c: e58d2000 str r2, [sp] e50: 9a000008 bls e78 <free+0x68> e54: eaffffff b e58 <free+0x48> e58: e59d000c ldr r0, [sp, #12] e5c: e59d1008 ldr r1, [sp, #8] e60: e5911000 ldr r1, [r1] e64: e3a02000 mov r2, #0 e68: e1500001 cmp r0, r1 e6c: 33a02001 movcc r2, #1 e70: e58d2000 str r2, [sp] e74: eaffffff b e78 <free+0x68> e78: e59d0000 ldr r0, [sp] e7c: e1e00000 mvn r0, r0 e80: e3100001 tst r0, #1 e84: 0a000016 beq ee4 <free+0xd4> e88: eaffffff b e8c <free+0x7c> e8c: e59d0008 ldr r0, [sp, #8] e90: e5901000 ldr r1, [r0] e94: e1500001 cmp r0, r1 e98: 3a00000c bcc ed0 <free+0xc0> e9c: eaffffff b ea0 <free+0x90> ea0: e59d000c ldr r0, [sp, #12] ea4: e59d1008 ldr r1, [sp, #8] ea8: e1500001 cmp r0, r1 eac: 8a000006 bhi ecc <free+0xbc> eb0: eaffffff b eb4 <free+0xa4> eb4: e59d000c ldr r0, [sp, #12] eb8: e59d1008 ldr r1, [sp, #8] ebc: e5911000 ldr r1, [r1] ec0: e1500001 cmp r0, r1 ec4: 2a000001 bcs ed0 <free+0xc0> ec8: eaffffff b ecc <free+0xbc> ecc: ea000004 b ee4 <free+0xd4> ed0: eaffffff b ed4 <free+0xc4> ed4: e59d0008 ldr r0, [sp, #8] ed8: e5900000 ldr r0, [r0] edc: e58d0008 str r0, [sp, #8] ee0: eaffffd5 b e3c <free+0x2c> ee4: e59d000c ldr r0, [sp, #12] ee8: e5901004 ldr r1, [r0, #4] eec: e0800181 add r0, r0, r1, lsl #3 ef0: e59d1008 ldr r1, [sp, #8] ef4: e5911000 ldr r1, [r1] ef8: e1500001 cmp r0, r1 efc: 1a00000d bne f38 <free+0x128> f00: eaffffff b f04 <free+0xf4> f04: e59d0008 ldr r0, [sp, #8] f08: e5900000 ldr r0, [r0] f0c: e5900004 ldr r0, [r0, #4] f10: e59d100c ldr r1, [sp, #12] f14: e5912004 ldr r2, [r1, #4] f18: e0820000 add r0, r2, r0 f1c: e5810004 str r0, [r1, #4] f20: e59d0008 ldr r0, [sp, #8] f24: e5900000 ldr r0, [r0] f28: e5900000 ldr r0, [r0] f2c: e59d100c ldr r1, [sp, #12] f30: e5810000 str r0, [r1] f34: ea000004 b f4c <free+0x13c> f38: e59d0008 ldr r0, [sp, #8] f3c: e5900000 ldr r0, [r0] f40: e59d100c ldr r1, [sp, #12] f44: e5810000 str r0, [r1] f48: eaffffff b f4c <free+0x13c> f4c: e59d0008 ldr r0, [sp, #8] f50: e5901004 ldr r1, [r0, #4] f54: e0800181 add r0, r0, r1, lsl #3 f58: e59d100c ldr r1, [sp, #12] f5c: e1500001 cmp r0, r1 f60: 1a00000b bne f94 <free+0x184> f64: eaffffff b f68 <free+0x158> f68: e59d000c ldr r0, [sp, #12] f6c: e5900004 ldr r0, [r0, #4] f70: e59d1008 ldr r1, [sp, #8] f74: e5912004 ldr r2, [r1, #4] f78: e0820000 add r0, r2, r0 f7c: e5810004 str r0, [r1, #4] f80: e59d000c ldr r0, [sp, #12] f84: e5900000 ldr r0, [r0] f88: e59d1008 ldr r1, [sp, #8] f8c: e5810000 str r0, [r1] f90: ea000003 b fa4 <free+0x194> f94: e59d000c ldr r0, [sp, #12] f98: e59d1008 ldr r1, [sp, #8] f9c: e5810000 str r0, [r1] fa0: eaffffff b fa4 <free+0x194> fa4: e59d0008 ldr r0, [sp, #8] fa8: e59f1008 ldr r1, [pc, #8] ; fb8 <free+0x1a8> fac: e5810000 str r0, [r1] fb0: e28dd014 add sp, sp, #20 fb4: e12fff1e bx lr fb8: 00001368 .word 0x00001368 00000fbc <malloc>: fbc: e92d4800 push {fp, lr} fc0: e1a0b00d mov fp, sp fc4: e24dd018 sub sp, sp, #24 fc8: e1a01000 mov r1, r0 fcc: e50b0008 str r0, [fp, #-8] fd0: e51b0008 ldr r0, [fp, #-8] fd4: e2800007 add r0, r0, #7 fd8: e3a02001 mov r2, #1 fdc: e08201a0 add r0, r2, r0, lsr #3 fe0: e58d0004 str r0, [sp, #4] fe4: e59f013c ldr r0, [pc, #316] ; 1128 <malloc+0x16c> fe8: e5900000 ldr r0, [r0] fec: e58d0008 str r0, [sp, #8] ff0: e3500000 cmp r0, #0 ff4: e58d1000 str r1, [sp] ff8: 1a000008 bne 1020 <malloc+0x64> ffc: eaffffff b 1000 <malloc+0x44> 1000: e59f0124 ldr r0, [pc, #292] ; 112c <malloc+0x170> 1004: e58d0008 str r0, [sp, #8] 1008: e59f1118 ldr r1, [pc, #280] ; 1128 <malloc+0x16c> 100c: e5810000 str r0, [r1] 1010: e5800000 str r0, [r0] 1014: e3a01000 mov r1, #0 1018: e5801004 str r1, [r0, #4] 101c: eaffffff b 1020 <malloc+0x64> 1020: e59d0008 ldr r0, [sp, #8] 1024: e5900000 ldr r0, [r0] 1028: e58d000c str r0, [sp, #12] 102c: eaffffff b 1030 <malloc+0x74> 1030: e59d000c ldr r0, [sp, #12] 1034: e5900004 ldr r0, [r0, #4] 1038: e59d1004 ldr r1, [sp, #4] 103c: e1500001 cmp r0, r1 1040: 3a00001f bcc 10c4 <malloc+0x108> 1044: eaffffff b 1048 <malloc+0x8c> 1048: e59d000c ldr r0, [sp, #12] 104c: e5900004 ldr r0, [r0, #4] 1050: e59d1004 ldr r1, [sp, #4] 1054: e1500001 cmp r0, r1 1058: 1a000005 bne 1074 <malloc+0xb8> 105c: eaffffff b 1060 <malloc+0xa4> 1060: e59d000c ldr r0, [sp, #12] 1064: e5900000 ldr r0, [r0] 1068: e59d1008 ldr r1, [sp, #8] 106c: e5810000 str r0, [r1] 1070: ea00000c b 10a8 <malloc+0xec> 1074: e59d0004 ldr r0, [sp, #4] 1078: e59d100c ldr r1, [sp, #12] 107c: e5912004 ldr r2, [r1, #4] 1080: e0420000 sub r0, r2, r0 1084: e5810004 str r0, [r1, #4] 1088: e59d000c ldr r0, [sp, #12] 108c: e5901004 ldr r1, [r0, #4] 1090: e0800181 add r0, r0, r1, lsl #3 1094: e58d000c str r0, [sp, #12] 1098: e59d0004 ldr r0, [sp, #4] 109c: e59d100c ldr r1, [sp, #12] 10a0: e5810004 str r0, [r1, #4] 10a4: eaffffff b 10a8 <malloc+0xec> 10a8: e59d0008 ldr r0, [sp, #8] 10ac: e59f1074 ldr r1, [pc, #116] ; 1128 <malloc+0x16c> 10b0: e5810000 str r0, [r1] 10b4: e59d000c ldr r0, [sp, #12] 10b8: e2800008 add r0, r0, #8 10bc: e50b0004 str r0, [fp, #-4] 10c0: ea000015 b 111c <malloc+0x160> 10c4: e59d000c ldr r0, [sp, #12] 10c8: e59f1058 ldr r1, [pc, #88] ; 1128 <malloc+0x16c> 10cc: e5911000 ldr r1, [r1] 10d0: e1500001 cmp r0, r1 10d4: 1a00000a bne 1104 <malloc+0x148> 10d8: eaffffff b 10dc <malloc+0x120> 10dc: e59d0004 ldr r0, [sp, #4] 10e0: eb000012 bl 1130 <morecore> 10e4: e58d000c str r0, [sp, #12] 10e8: e3500000 cmp r0, #0 10ec: 1a000003 bne 1100 <malloc+0x144> 10f0: eaffffff b 10f4 <malloc+0x138> 10f4: e3a00000 mov r0, #0 10f8: e50b0004 str r0, [fp, #-4] 10fc: ea000006 b 111c <malloc+0x160> 1100: eaffffff b 1104 <malloc+0x148> 1104: eaffffff b 1108 <malloc+0x14c> 1108: e59d000c ldr r0, [sp, #12] 110c: e58d0008 str r0, [sp, #8] 1110: e5900000 ldr r0, [r0] 1114: e58d000c str r0, [sp, #12] 1118: eaffffc4 b 1030 <malloc+0x74> 111c: e51b0004 ldr r0, [fp, #-4] 1120: e1a0d00b mov sp, fp 1124: e8bd8800 pop {fp, pc} 1128: 00001368 .word 0x00001368 112c: 0000136c .word 0x0000136c 00001130 <morecore>: freep = p; } static Header* morecore(uint nu) { 1130: e92d4800 push {fp, lr} 1134: e1a0b00d mov fp, sp 1138: e24dd018 sub sp, sp, #24 113c: e1a01000 mov r1, r0 1140: e50b0008 str r0, [fp, #-8] char *p; Header *hp; if(nu < 4096) 1144: e51b0008 ldr r0, [fp, #-8] 1148: e3a02000 mov r2, #0 114c: e1520620 cmp r2, r0, lsr #12 1150: e58d1004 str r1, [sp, #4] 1154: 1a000003 bne 1168 <morecore+0x38> 1158: eaffffff b 115c <morecore+0x2c> nu = 4096; 115c: e3a00a01 mov r0, #4096 ; 0x1000 1160: e50b0008 str r0, [fp, #-8] 1164: eaffffff b 1168 <morecore+0x38> p = sbrk(nu * sizeof(Header)); 1168: e51b0008 ldr r0, [fp, #-8] 116c: e1a00180 lsl r0, r0, #3 1170: ebfffe10 bl 9b8 <sbrk> 1174: e58d000c str r0, [sp, #12] if(p == (char*)-1) 1178: e59d000c ldr r0, [sp, #12] 117c: e3700001 cmn r0, #1 1180: 1a000003 bne 1194 <morecore+0x64> 1184: eaffffff b 1188 <morecore+0x58> return 0; 1188: e3a00000 mov r0, #0 118c: e50b0004 str r0, [fp, #-4] 1190: ea00000b b 11c4 <morecore+0x94> hp = (Header*)p; 1194: e59d000c ldr r0, [sp, #12] 1198: e58d0008 str r0, [sp, #8] hp->s.size = nu; 119c: e51b0008 ldr r0, [fp, #-8] 11a0: e59d1008 ldr r1, [sp, #8] 11a4: e5810004 str r0, [r1, #4] free((void*)(hp + 1)); 11a8: e59d0008 ldr r0, [sp, #8] 11ac: e2800008 add r0, r0, #8 11b0: ebffff16 bl e10 <free> return freep; 11b4: e59f0014 ldr r0, [pc, #20] ; 11d0 <morecore+0xa0> 11b8: e5900000 ldr r0, [r0] 11bc: e50b0004 str r0, [fp, #-4] 11c0: eaffffff b 11c4 <morecore+0x94> } 11c4: e51b0004 ldr r0, [fp, #-4] 11c8: e1a0d00b mov sp, fp 11cc: e8bd8800 pop {fp, pc} 11d0: 00001368 .word 0x00001368 000011d4 <__aeabi_uidiv>: 11d4: e2512001 subs r2, r1, #1 11d8: 012fff1e bxeq lr 11dc: 3a000036 bcc 12bc <__aeabi_uidiv+0xe8> 11e0: e1500001 cmp r0, r1 11e4: 9a000022 bls 1274 <__aeabi_uidiv+0xa0> 11e8: e1110002 tst r1, r2 11ec: 0a000023 beq 1280 <__aeabi_uidiv+0xac> 11f0: e311020e tst r1, #-536870912 ; 0xe0000000 11f4: 01a01181 lsleq r1, r1, #3 11f8: 03a03008 moveq r3, #8 11fc: 13a03001 movne r3, #1 1200: e3510201 cmp r1, #268435456 ; 0x10000000 1204: 31510000 cmpcc r1, r0 1208: 31a01201 lslcc r1, r1, #4 120c: 31a03203 lslcc r3, r3, #4 1210: 3afffffa bcc 1200 <__aeabi_uidiv+0x2c> 1214: e3510102 cmp r1, #-2147483648 ; 0x80000000 1218: 31510000 cmpcc r1, r0 121c: 31a01081 lslcc r1, r1, #1 1220: 31a03083 lslcc r3, r3, #1 1224: 3afffffa bcc 1214 <__aeabi_uidiv+0x40> 1228: e3a02000 mov r2, #0 122c: e1500001 cmp r0, r1 1230: 20400001 subcs r0, r0, r1 1234: 21822003 orrcs r2, r2, r3 1238: e15000a1 cmp r0, r1, lsr #1 123c: 204000a1 subcs r0, r0, r1, lsr #1 1240: 218220a3 orrcs r2, r2, r3, lsr #1 1244: e1500121 cmp r0, r1, lsr #2 1248: 20400121 subcs r0, r0, r1, lsr #2 124c: 21822123 orrcs r2, r2, r3, lsr #2 1250: e15001a1 cmp r0, r1, lsr #3 1254: 204001a1 subcs r0, r0, r1, lsr #3 1258: 218221a3 orrcs r2, r2, r3, lsr #3 125c: e3500000 cmp r0, #0 1260: 11b03223 lsrsne r3, r3, #4 1264: 11a01221 lsrne r1, r1, #4 1268: 1affffef bne 122c <__aeabi_uidiv+0x58> 126c: e1a00002 mov r0, r2 1270: e12fff1e bx lr 1274: 03a00001 moveq r0, #1 1278: 13a00000 movne r0, #0 127c: e12fff1e bx lr 1280: e3510801 cmp r1, #65536 ; 0x10000 1284: 21a01821 lsrcs r1, r1, #16 1288: 23a02010 movcs r2, #16 128c: 33a02000 movcc r2, #0 1290: e3510c01 cmp r1, #256 ; 0x100 1294: 21a01421 lsrcs r1, r1, #8 1298: 22822008 addcs r2, r2, #8 129c: e3510010 cmp r1, #16 12a0: 21a01221 lsrcs r1, r1, #4 12a4: 22822004 addcs r2, r2, #4 12a8: e3510004 cmp r1, #4 12ac: 82822003 addhi r2, r2, #3 12b0: 908220a1 addls r2, r2, r1, lsr #1 12b4: e1a00230 lsr r0, r0, r2 12b8: e12fff1e bx lr 12bc: e3500000 cmp r0, #0 12c0: 13e00000 mvnne r0, #0 12c4: ea000007 b 12e8 <__aeabi_idiv0> 000012c8 <__aeabi_uidivmod>: 12c8: e3510000 cmp r1, #0 12cc: 0afffffa beq 12bc <__aeabi_uidiv+0xe8> 12d0: e92d4003 push {r0, r1, lr} 12d4: ebffffbe bl 11d4 <__aeabi_uidiv> 12d8: e8bd4006 pop {r1, r2, lr} 12dc: e0030092 mul r3, r2, r0 12e0: e0411003 sub r1, r1, r3 12e4: e12fff1e bx lr 000012e8 <__aeabi_idiv0>: 12e8: e12fff1e bx lr