Mercurial > hg > Members > tobaru > xv6-osx-rpi
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/usr/init.asm Sun Feb 04 17:54:49 2018 +0900 @@ -0,0 +1,1376 @@ + +_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