FreeCalypso > hg > freecalypso-reveng
view pirelli/fw-disasm @ 235:78be85145f33
pirelli/fw-disasm: math for the IRAM code location
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 22 Dec 2017 02:58:33 +0000 |
parents | 5b530eea8f4e |
children | 9ee2d1d91f7e |
line wrap: on
line source
.inttext exception vectors: 40000: ea0000d0 b 0x40348 40004: ea0000d2 b 0x40354 40008: ea0000d4 b 0x40360 4000c: ea0000d6 b 0x4036c 40010: ea0000d8 b 0x40378 40014: ea0000bc b 0x4030c 40018: ea0000c5 b 0x40334 _c_int00: 4001c: 02a102a1 40020: 028302a1 40024: 02c00e85 40028: 002a0040 4002c: fffffb00 40030: fffef006 40034: 00000008 40038: fffffd00 4003c: ffff9800 40040: fffffb10 40044: ffffff08 40048: 20021081 4004c: f7ff0800 40050: 00000000 40054: 00536e48 ; cinit _INT_Initialize: 40058: e51f1024 ldr r1, =0xffff9800 ; via 0x4003c 4005c: e15f21ba ldrh r2, =0x2002 ; via 0x4004a 40060: e1c120b0 strh r2, [r1] 40064: e5912000 ldr r2, [r1] 40068: e2022001 and r2, r2, #1 4006c: e3520001 cmp r2, #1 40070: 0afffffb beq 0x40064 40074: e51f1044 ldr r1, =0xfffffd00 ; via 0x40038 40078: e15f23b8 ldrh r2, =0x1081 ; via 0x40048 4007c: e1c120b0 strh r2, [r1] 40080: e51f1048 ldr r1, =0xfffffb10 ; via 0x40040 40084: e15f23be ldrh r2, =0xf7ff ; via 0x4004e 40088: e1d100b0 ldrh r0, [r1] 4008c: e0000002 and r0, r0, r2 40090: e1c100b0 strh r0, [r1] 40094: e51f1058 ldr r1, =0xffffff08 ; via 0x40044 40098: e15f25b0 ldrh r2, =0x0 ; via 0x40050 4009c: e1c120b0 strh r2, [r1] 400a0: e51f107c ldr r1, =0xfffffb00 ; via 0x4002c 400a4: e15f29b0 ldrh r2, =0x2a1 ; via 0x4001c 400a8: e1c120b0 strh r2, [r1] 400ac: e15f29b6 ldrh r2, =0x2a1 ; via 0x4001e 400b0: e1c120b2 strh r2, [r1, #2] 400b4: e15f29bc ldrh r2, =0x2a1 ; via 0x40020 400b8: e1c120b4 strh r2, [r1, #4] 400bc: e15f2ab2 ldrh r2, =0x283 ; via 0x40022 400c0: e1c120b6 strh r2, [r1, #6] 400c4: e15f2ab8 ldrh r2, =0xe85 ; via 0x40024 400c8: e1c120ba strh r2, [r1, #10] ; 0xa 400cc: e15f2abe ldrh r2, =0x2c0 ; via 0x40026 400d0: e1c120bc strh r2, [r1, #12] ; 0xc 400d4: e15f2bb4 ldrh r2, =0x40 ; via 0x40028 400d8: e1c120b8 strh r2, [r1, #8] 400dc: e15f2bba ldrh r2, =0x2a ; via 0x4002a 400e0: e1c120be strh r2, [r1, #14] ; 0xe 400e4: e51f10bc ldr r1, =0xfffef006 ; via 0x40030 400e8: e1d120b0 ldrh r2, [r1] 400ec: e51f00c0 ldr r0, =0x8 ; via 0x40034 400f0: e1800002 orr r0, r0, r2 400f4: e1c100b0 strh r0, [r1] 400f8: e10f0000 mrs r0, CPSR 400fc: e3c0001f bic r0, r0, #31 ; 0x1f 40100: e3800013 orr r0, r0, #19 ; 0x13 40104: e38000c0 orr r0, r0, #192 ; 0xc0 40108: e129f000 msr CPSR_fc, r0 4010c: e59f0340 ldr r0, =0x10000e8 ; via 0x40454 40110: e3a01e46 mov r1, #1120 ; 0x460 40114: e2411004 sub r1, r1, #4 40118: e0802001 add r2, r0, r1 4011c: e1a0d002 mov sp, r2 40120: e92d000f stmdb sp!, {r0, r1, r2, r3} 40124: e59f0318 ldr r0, =0x1000be8 ; via 0x40444 40128: e59f2318 ldr r2, =0x17751ec ; via 0x40448 4012c: e0422000 sub r2, r2, r0 40130: e3a01000 mov r1, #0 40134: eb0000e1 bl 0x404c0 ; _INT_memset 40138: e59f030c ldr r0, =0x800000 ; via 0x4044c 4013c: e59f230c ldr r2, =0x82d1ec ; via 0x40450 40140: e0422000 sub r2, r2, r0 40144: e3a01000 mov r1, #0 40148: eb0000dc bl 0x404c0 ; _INT_memset 4014c: e8bd000f ldmia sp!, {r0, r1, r2, r3} 40150: e3a00001 mov r0, #1 40154: e59f12fc ldr r1, =0x1775074 ; via 0x40458 40158: e5810000 str r0, [r1] 4015c: e59f02f0 ldr r0, =0x10000e8 ; via 0x40454 40160: e3a01e46 mov r1, #1120 ; 0x460 40164: e2411004 sub r1, r1, #4 40168: e0802001 add r2, r0, r1 4016c: e1a0a000 mov r10, r0 40170: e59f32e4 ldr r3, =0x1775044 ; via 0x4045c 40174: e583a000 str r10, [r3] 40178: e1a0d002 mov sp, r2 4017c: e59f32dc ldr r3, =0x175635c ; via 0x40460 40180: e583d000 str sp, [r3] 40184: e3a01080 mov r1, #128 ; 0x80 40188: e0822001 add r2, r2, r1 4018c: e10f0000 mrs r0, CPSR 40190: e3c0001f bic r0, r0, #31 ; 0x1f 40194: e3800012 orr r0, r0, #18 ; 0x12 40198: e129f000 msr CPSR_fc, r0 4019c: e1a0d002 mov sp, r2 401a0: e3a01c02 mov r1, #512 ; 0x200 401a4: e0822001 add r2, r2, r1 401a8: e10f0000 mrs r0, CPSR 401ac: e3c0001f bic r0, r0, #31 ; 0x1f 401b0: e3800011 orr r0, r0, #17 ; 0x11 401b4: e129f000 msr CPSR_fc, r0 401b8: e1a0d002 mov sp, r2 401bc: e10f0000 mrs r0, CPSR 401c0: e3c0001f bic r0, r0, #31 ; 0x1f 401c4: e3800017 orr r0, r0, #23 ; 0x17 401c8: e129f000 msr CPSR_fc, r0 401cc: e59fd29c ldr sp, =0x1000050 ; via 0x40470 401d0: e10f0000 mrs r0, CPSR 401d4: e3c0001f bic r0, r0, #31 ; 0x1f 401d8: e380001b orr r0, r0, #27 ; 0x1b 401dc: e129f000 msr CPSR_fc, r0 401e0: e59fd288 ldr sp, =0x1000050 ; via 0x40470 401e4: e10f0000 mrs r0, CPSR 401e8: e3c0001f bic r0, r0, #31 ; 0x1f 401ec: e3800013 orr r0, r0, #19 ; 0x13 401f0: e129f000 msr CPSR_fc, r0 401f4: e59f3268 ldr r3, =0x176f458 ; via 0x40464 401f8: e2822004 add r2, r2, #4 401fc: e5832000 str r2, [r3] 40200: e3a01b01 mov r1, #1024 ; 0x400 40204: e3c11003 bic r1, r1, #3 40208: e0822001 add r2, r2, r1 4020c: e59f3254 ldr r3, =0x176f4dc ; via 0x40468 40210: e5831000 str r1, [r3] 40214: e3a01002 mov r1, #2 40218: e59f324c ldr r3, =0x176f4ec ; via 0x4046c 4021c: e5831000 str r1, [r3] 40220: e1a04002 mov r4, r2 40224: eb0e99e4 bl 0x3e69bc ; _f_load_int_mem 40228: e1a02004 mov r2, r4 4022c: e59f1228 ldr r1, =0x1775044 ; via 0x4045c 40230: e5910000 ldr r0, [r1] 40234: e3a030fe mov r3, #254 ; 0xfe 40238: e5c03000 strb r3, [r0] 4023c: e5c03001 strb r3, [r0, #1] 40240: e5c03002 strb r3, [r0, #2] 40244: e5c03003 strb r3, [r0, #3] 40248: e4903004 ldr r3, [r0], #4 4024c: e4803004 str r3, [r0], #4 40250: e1500002 cmp r0, r2 40254: bafffffc blt 0x4024c 40258: e51f020c ldr r0, =0x536e48 ; via 0x40054 4025c: e3700001 cmn r0, #1 40260: 1b000084 blne 0x40478 40264: e1a00002 mov r0, r2 40268: ea0eda34 b 0x3f6b40 ; _INC_Initialize $INT_Vectors_Loaded: 4026c: 4778 bx pc 4026e: 46c0 nop (mov r8, r8) 40270: eaffffff b 0x40274 _INT_Vectors_Loaded: 40274: e3a00001 mov r0, #1 40278: e12fff1e bx lr $INT_Setup_Vector: 4027c: 4778 bx pc 4027e: 46c0 nop (mov r8, r8) 40280: eaffffff b 0x40284 _INT_Setup_Vector: 40284: e3a00000 mov r0, #0 40288: e12fff1e bx lr $INT_EnableIRQ: 4028c: 4778 bx pc 4028e: 46c0 nop (mov r8, r8) 40290: e10f0000 mrs r0, CPSR 40294: e3c0001f bic r0, r0, #31 ; 0x1f 40298: e3800012 orr r0, r0, #18 ; 0x12 4029c: e129f000 msr CPSR_fc, r0 402a0: e10f0000 mrs r0, CPSR 402a4: e3c000c0 bic r0, r0, #192 ; 0xc0 402a8: e129f000 msr CPSR_fc, r0 402ac: e3c0001f bic r0, r0, #31 ; 0x1f 402b0: e3800013 orr r0, r0, #19 ; 0x13 402b4: e129f000 msr CPSR_fc, r0 402b8: e28f0001 add r0, pc, #1 402bc: e12fff10 bx r0 402c0: 4770 bx lr $INT_DisableIRQ: 402c2: 4778 bx pc 402c4: 46c0 nop (mov r8, r8) 402c6: 46c0 nop (mov r8, r8) 402c8: e10f0000 mrs r0, CPSR 402cc: e3c0001f bic r0, r0, #31 ; 0x1f 402d0: e3800012 orr r0, r0, #18 ; 0x12 402d4: e129f000 msr CPSR_fc, r0 402d8: e10f0000 mrs r0, CPSR 402dc: e38000c0 orr r0, r0, #192 ; 0xc0 402e0: e129f000 msr CPSR_fc, r0 402e4: e3c0001f bic r0, r0, #31 ; 0x1f 402e8: e3800013 orr r0, r0, #19 ; 0x13 402ec: e129f000 msr CPSR_fc, r0 402f0: e28f0001 add r0, pc, #1 402f4: e12fff10 bx r0 402f8: 4770 bx lr $INT_Retrieve_Shell: 402fa: 4778 bx pc 402fc: 46c0 nop (mov r8, r8) 402fe: 46c0 nop (mov r8, r8) 40300: eaffffff b 0x40304 _INT_Retrieve_Shell: 40304: e3a00000 mov r0, #0 40308: e12fff1e bx lr INT_IRQ: 4030c: e92d000f stmdb sp!, {r0, r1, r2, r3} 40310: e14f0000 mrs r0, SPSR 40314: e3100080 tst r0, #128 ; 0x80 40318: 1a000003 bne 0x4032c 4031c: e24e3004 sub r3, lr, #4 40320: eb1ff729 bl 0x83dfcc ; _TCT_Interrupt_Context_Save 40324: eb0e3915 bl 0x3ce780 ; _IQ_IRQ_isr 40328: ea1ff76e b 0x83e0e8 ; _TCT_Interrupt_Context_Restore 4032c: e8bd000f ldmia sp!, {r0, r1, r2, r3} 40330: e25ef004 subs pc, lr, #4 INT_FIQ: 40334: e92d000f stmdb sp!, {r0, r1, r2, r3} 40338: e24e3004 sub r3, lr, #4 4033c: eb1ff722 bl 0x83dfcc ; _TCT_Interrupt_Context_Save 40340: eb0e3919 bl 0x3ce7ac ; _IQ_FIQ_isr 40344: ea1ff767 b 0x83e0e8 ; _TCT_Interrupt_Context_Restore ; exception handlers 40348: e92d1800 stmdb sp!, {r11, r12} 4034c: e3a0b001 mov r11, #1 40350: ea00000c b 0x40388 40354: e92d1800 stmdb sp!, {r11, r12} 40358: e3a0b002 mov r11, #2 4035c: ea000009 b 0x40388 40360: e92d1800 stmdb sp!, {r11, r12} 40364: e3a0b003 mov r11, #3 40368: ea000006 b 0x40388 4036c: e92d1800 stmdb sp!, {r11, r12} 40370: e3a0b004 mov r11, #4 40374: ea000003 b 0x40388 40378: e59fd0f0 ldr sp, =0x1000050 ; via 0x40470 4037c: e92d1800 stmdb sp!, {r11, r12} 40380: e3a0b005 mov r11, #5 40384: eaffffff b 0x40388 40388: e59fc0e4 ldr r12, =0x1000050 ; via 0x40474 4038c: e58ce03c str lr, [r12, #60] ; 0x3c 40390: e88c07ff stmia r12, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10} 40394: e8bd0003 ldmia sp!, {r0, r1} 40398: e58c002c str r0, [r12, #44] ; 0x2c 4039c: e58c1030 str r1, [r12, #48] ; 0x30 403a0: e14f0000 mrs r0, SPSR 403a4: e58c0040 str r0, [r12, #64] ; 0x40 403a8: e10f1000 mrs r1, CPSR 403ac: e3c1201f bic r2, r1, #31 ; 0x1f 403b0: e200001f and r0, r0, #31 ; 0x1f 403b4: e0800002 add r0, r0, r2 403b8: e129f000 msr CPSR_fc, r0 403bc: e58cd034 str sp, [r12, #52] ; 0x34 403c0: e58ce038 str lr, [r12, #56] ; 0x38 403c4: e129f001 msr CPSR_fc, r1 403c8: e38ba4de orr r10, r11, #3724541952 ; 0xde000000 403cc: e38aa8ad orr r10, r10, #11337728 ; 0xad0000 403d0: e58ca044 str r10, [r12, #68] ; 0x44 403d4: e1a0000b mov r0, r11 403d8: ea0eda7a b 0x3f6dc8 ; _dar_exception $exception: 403dc: a000 add r0, pc, #0 403de: 4700 bx r0 _exception: 403e0: e59fc08c ldr r12, =0x1000050 ; via 0x40474 403e4: e59cb034 ldr r11, [r12, #52] ; 0x34 403e8: e28cc048 add r12, r12, #72 ; 0x48 403ec: e35b0502 cmp r11, #8388608 ; 0x800000 403f0: ba00000d blt 0x4042c 403f4: e3a00722 mov r0, #8912896 ; 0x880000 403f8: e2400014 sub r0, r0, #20 ; 0x14 403fc: e15b0000 cmp r11, r0 40400: ba000005 blt 0x4041c 40404: e35b0401 cmp r11, #16777216 ; 0x1000000 40408: ba000007 blt 0x4042c 4040c: e3a00612 mov r0, #18874368 ; 0x1200000 40410: e2400014 sub r0, r0, #20 ; 0x14 40414: e15b0000 cmp r11, r0 40418: aa000003 bge 0x4042c 4041c: e8bb03ff ldmia r11!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9} 40420: e8ac03ff stmia r12!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9} 40424: e8bb03ff ldmia r11!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9} 40428: e8ac03ff stmia r12!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9} 4042c: e59f0020 ldr r0, =0x10000e8 ; via 0x40454 40430: e3a01eae mov r1, #2784 ; 0xae0 40434: e2811080 add r1, r1, #128 ; 0x80 40438: e0802001 add r2, r0, r1 4043c: e1a0d002 mov sp, r2 40440: ea0eda66 b 0x3f6de0 ; _dar_reset 40444: 01000be8 .bss 40448: 017751ec end 4044c: 00800000 _S_D_Mem 40450: 0082d1ec _E_D_Mem 40454: 010000e8 stack_segment 40458: 01775074 _INT_Loaded_Flag 4045c: 01775044 _TCT_System_Limit 40460: 0175635c _TCD_System_Stack 40464: 0176f458 _TMD_HISR_Stack_Ptr 40468: 0176f4dc _TMD_HISR_Stack_Size 4046c: 0176f4ec _TMD_HISR_Priority 40470: 01000050 exception_stack 40474: 01000050 _xdump_buffer _auto_init: 40478: ea00000c b 0x404b0 4047c: e4901004 ldr r1, [r0], #4 40480: e3530003 cmp r3, #3 40484: 84904004 ldrhi r4, [r0], #4 40488: 84814004 strhi r4, [r1], #4 4048c: 82433004 subhi r3, r3, #4 40490: 94d04001 ldrlsb r4, [r0], #1 40494: 94c14001 strlsb r4, [r1], #1 40498: 92433001 subls r3, r3, #1 4049c: e3530000 cmp r3, #0 404a0: 1afffff6 bne 0x40480 404a4: e2103003 ands r3, r0, #3 404a8: 12633004 rsbne r3, r3, #4 404ac: 10800003 addne r0, r0, r3 404b0: e4903004 ldr r3, [r0], #4 404b4: e3530000 cmp r3, #0 404b8: 1affffef bne 0x4047c 404bc: e1a0f00e mov pc, lr _INT_memset: 404c0: e92d4001 stmdb sp!, {r0, lr} 404c4: e3100003 tst r0, #3 404c8: 0a000006 beq 0x404e8 404cc: e3520000 cmp r2, #0 404d0: 84c01001 strhib r1, [r0], #1 404d4: 82522001 subhis r2, r2, #1 404d8: 83100003 tsthi r0, #3 404dc: 1afffffb bne 0x404d0 404e0: e3520000 cmp r2, #0 404e4: 08bd8001 ldmeqia sp!, {r0, pc} 404e8: e20110ff and r1, r1, #255 ; 0xff 404ec: e1811401 orr r1, r1, r1, lsl #8 404f0: e3520004 cmp r2, #4 404f4: 3a000012 bcc 0x40544 404f8: e1811801 orr r1, r1, r1, lsl #16 404fc: e3520008 cmp r2, #8 40500: 3a00000d bcc 0x4053c 40504: e1a0e001 mov lr, r1 40508: e3520010 cmp r2, #16 ; 0x10 4050c: 3a000008 bcc 0x40534 40510: e92d0010 stmdb sp!, {r4} 40514: e1a04001 mov r4, r1 40518: e1a0c001 mov r12, r1 4051c: e242300f sub r3, r2, #15 ; 0xf 40520: e202200f and r2, r2, #15 ; 0xf 40524: e8a05012 stmia r0!, {r1, r4, r12, lr} 40528: e2533010 subs r3, r3, #16 ; 0x10 4052c: 8afffffc bhi 0x40524 40530: e8bd0010 ldmia sp!, {r4} 40534: e3120008 tst r2, #8 40538: 18a04002 stmneia r0!, {r1, lr} 4053c: e3120004 tst r2, #4 40540: 14801004 strne r1, [r0], #4 40544: e3120002 tst r2, #2 40548: 10c010b2 strneh r1, [r0], #2 4054c: e3120001 tst r2, #1 40550: 15c01000 strneb r1, [r0] 40554: e8bd8001 ldmia sp!, {r0, pc} _INT_memcpy: 40558: e3520000 cmp r2, #0 4055c: 012fff1e bxeq lr 40560: e92d4001 stmdb sp!, {r0, lr} 40564: e3110003 tst r1, #3 40568: 1a00002b bne 0x4061c 4056c: e3100003 tst r0, #3 40570: 1a00002f bne 0x40634 40574: e3520010 cmp r2, #16 ; 0x10 40578: 3a000008 bcc 0x405a0 4057c: e92d0010 stmdb sp!, {r4} 40580: e2422010 sub r2, r2, #16 ; 0x10 40584: e8b15018 ldmia r1!, {r3, r4, r12, lr} 40588: e8a05018 stmia r0!, {r3, r4, r12, lr} 4058c: e2522010 subs r2, r2, #16 ; 0x10 40590: 2afffffb bcs 0x40584 40594: e8bd0010 ldmia sp!, {r4} 40598: e2922010 adds r2, r2, #16 ; 0x10 4059c: 08bd8001 ldmeqia sp!, {r0, pc} 405a0: e212300c ands r3, r2, #12 ; 0xc 405a4: 0a00000d beq 0x405e0 405a8: e3d2200c bics r2, r2, #12 ; 0xc 405ac: e24fc010 sub r12, pc, #16 ; 0x10 405b0: e08cf103 add pc, r12, r3, lsl #2 405b4: e4913004 ldr r3, [r1], #4 405b8: e4803004 str r3, [r0], #4 405bc: 08bd8001 ldmeqia sp!, {r0, pc} 405c0: ea000006 b 0x405e0 405c4: e8b11008 ldmia r1!, {r3, r12} 405c8: e8a01008 stmia r0!, {r3, r12} 405cc: 08bd8001 ldmeqia sp!, {r0, pc} 405d0: ea000002 b 0x405e0 405d4: e8b15008 ldmia r1!, {r3, r12, lr} 405d8: e8a05008 stmia r0!, {r3, r12, lr} 405dc: 08bd8001 ldmeqia sp!, {r0, pc} 405e0: e2522001 subs r2, r2, #1 405e4: 124f3004 subne r3, pc, #4 405e8: 1083f202 addne pc, r3, r2, lsl #4 405ec: e4d13001 ldrb r3, [r1], #1 405f0: e4c03001 strb r3, [r0], #1 405f4: e8bd8001 ldmia sp!, {r0, pc} 405f8: e0d130b2 ldrh r3, [r1], #2 405fc: e0c030b2 strh r3, [r0], #2 40600: e8bd8001 ldmia sp!, {r0, pc} 40604: e1a00000 mov r0, r0 40608: e0d130b2 ldrh r3, [r1], #2 4060c: e0c030b2 strh r3, [r0], #2 40610: e4d13001 ldrb r3, [r1], #1 40614: e4c03001 strb r3, [r0], #1 40618: e8bd8001 ldmia sp!, {r0, pc} 4061c: e4d13001 ldrb r3, [r1], #1 40620: e4c03001 strb r3, [r0], #1 40624: e2522001 subs r2, r2, #1 40628: 08bd8001 ldmeqia sp!, {r0, pc} 4062c: e3110003 tst r1, #3 40630: 1afffff9 bne 0x4061c 40634: e3100001 tst r0, #1 40638: 1a000013 bne 0x4068c 4063c: e3100002 tst r0, #2 40640: 0affffcb beq 0x40574 40644: e2522004 subs r2, r2, #4 40648: 3a000007 bcc 0x4066c 4064c: e4913004 ldr r3, [r1], #4 40650: e0c030b4 strh r3, [r0], #4 40654: e1a03823 mov r3, r3, lsr #16 40658: e14030b2 strh r3, [r0, #-2] 4065c: e2522004 subs r2, r2, #4 40660: 2afffff9 bcs 0x4064c 40664: e3720004 cmn r2, #4 40668: 08bd8001 ldmeqia sp!, {r0, pc} 4066c: e2922002 adds r2, r2, #2 40670: 20d130b2 ldrcsh r3, [r1], #2 40674: 20c030b2 strcsh r3, [r0], #2 40678: 22422002 subcs r2, r2, #2 4067c: e2922001 adds r2, r2, #1 40680: 24d13001 ldrcsb r3, [r1], #1 40684: 24c03001 strcsb r3, [r0], #1 40688: e8bd8001 ldmia sp!, {r0, pc} 4068c: e2522004 subs r2, r2, #4 40690: 3a000009 bcc 0x406bc 40694: e4913004 ldr r3, [r1], #4 40698: e4c03004 strb r3, [r0], #4 4069c: e1a03423 mov r3, r3, lsr #8 406a0: e5403003 strb r3, [r0, #-3] 406a4: e1a03423 mov r3, r3, lsr #8 406a8: e5403002 strb r3, [r0, #-2] 406ac: e1a03423 mov r3, r3, lsr #8 406b0: e5403001 strb r3, [r0, #-1] 406b4: e2522004 subs r2, r2, #4 406b8: 2afffff5 bcs 0x40694 406bc: e2922004 adds r2, r2, #4 406c0: 08bd8001 ldmeqia sp!, {r0, pc} 406c4: e4d13001 ldrb r3, [r1], #1 406c8: e4c03001 strb r3, [r0], #1 406cc: e2522001 subs r2, r2, #1 406d0: 1afffffb bne 0x406c4 406d4: e8bd8001 ldmia sp!, {r0, pc} $Init_Target: 3bb7d4: b570 push {r4, r5, r6, lr} 3bb7d6: b081 sub sp, #4 3bb7d8: 4c96 ldr r4, =0xfffef008 ; via 0x3bba34 3bb7da: 4897 ldr r0, =0x6050 ; via 0x3bba38 3bb7dc: 8020 strh r0, [r4, #0] 3bb7de: f025 ffed bl 0x3e17bc ; $TM_DisableWatchdog 3bb7e2: 4896 ldr r0, =0xfffffd02 ; via 0x3bba3c 3bb7e4: 2105 mov r1, #5 3bb7e6: 8802 ldrh r2, [r0, #0] 3bb7e8: 4311 orr r1, r2 3bb7ea: 8001 strh r1, [r0, #0] 3bb7ec: 4994 ldr r1, =0xff3f ; via 0x3bba40 3bb7ee: 8802 ldrh r2, [r0, #0] 3bb7f0: 4011 and r1, r2 3bb7f2: 8001 strh r1, [r0, #0] 3bb7f4: 2180 mov r1, #128 ; 0x80 3bb7f6: 8802 ldrh r2, [r0, #0] 3bb7f8: 4311 orr r1, r2 3bb7fa: 8001 strh r1, [r0, #0] 3bb7fc: 4991 ldr r1, =0xffdf ; via 0x3bba44 3bb7fe: 8802 ldrh r2, [r0, #0] 3bb800: 4011 and r1, r2 3bb802: 8001 strh r1, [r0, #0] 3bb804: 4e90 ldr r6, =0xfffff900 ; via 0x3bba48 3bb806: 20ff mov r0, #255 ; 0xff 3bb808: 0200 lsl r0, r0, #8 3bb80a: 8030 strh r0, [r6, #0] 3bb80c: 4d8f ldr r5, =0xffff9800 ; via 0x3bba4c 3bb80e: 4890 ldr r0, =0xfff3 ; via 0x3bba50 3bb810: 8829 ldrh r1, [r5, #0] 3bb812: 4008 and r0, r1 3bb814: 8028 strh r0, [r5, #0] 3bb816: 8828 ldrh r0, [r5, #0] 3bb818: 8028 strh r0, [r5, #0] 3bb81a: 488e ldr r0, =0xf01f ; via 0x3bba54 3bb81c: 8829 ldrh r1, [r5, #0] 3bb81e: 4008 and r0, r1 3bb820: 8028 strh r0, [r5, #0] 3bb822: 2001 mov r0, #1 3bb824: 0280 lsl r0, r0, #10 3bb826: 8829 ldrh r1, [r5, #0] 3bb828: 4308 orr r0, r1 3bb82a: 8028 strh r0, [r5, #0] 3bb82c: 2000 mov r0, #0 3bb82e: 2102 mov r1, #2 3bb830: 2200 mov r2, #0 3bb832: f027 fb45 bl 0x3e2ec0 ; $CLKM_InitARMClock 3bb836: 4988 ldr r1, =0xfffffb00 ; via 0x3bba58 3bb838: 20a4 mov r0, #164 ; 0xa4 3bb83a: 8008 strh r0, [r1, #0] 3bb83c: 8048 strh r0, [r1, #2] 3bb83e: 22a5 mov r2, #165 ; 0xa5 3bb840: 808a strh r2, [r1, #4] 3bb842: 80c8 strh r0, [r1, #6] 3bb844: 20a7 mov r0, #167 ; 0xa7 3bb846: 8148 strh r0, [r1, #10] ; 0xa 3bb848: 20c0 mov r0, #192 ; 0xc0 3bb84a: 8188 strh r0, [r1, #12] ; 0xc 3bb84c: 2040 mov r0, #64 ; 0x40 3bb84e: 8108 strh r0, [r1, #8] 3bb850: 2020 mov r0, #32 ; 0x20 3bb852: 8070 strh r0, [r6, #2] 3bb854: 2000 mov r0, #0 3bb856: 80b0 strh r0, [r6, #4] 3bb858: 2010 mov r0, #16 ; 0x10 3bb85a: 8829 ldrh r1, [r5, #0] 3bb85c: 4308 orr r0, r1 3bb85e: 8028 strh r0, [r5, #0] 3bb860: 487e ldr r0, =0xfffffa08 ; via 0x3bba5c 3bb862: 497f ldr r1, =0xffff ; via 0x3bba60 3bb864: 8001 strh r1, [r0, #0] 3bb866: 8041 strh r1, [r0, #2] 3bb868: 2103 mov r1, #3 3bb86a: 8181 strh r1, [r0, #12] ; 0xc 3bb86c: f024 f9be bl 0x3dfbec ; $IQ_SetupInterrupts 3bb870: 487c ldr r0, =0xfffffc00 ; via 0x3bba64 3bb872: 2124 mov r1, #36 ; 0x24 3bb874: 8001 strh r1, [r0, #0] 3bb876: 210d mov r1, #13 ; 0xd 3bb878: 8041 strh r1, [r0, #2] 3bb87a: 2500 mov r5, #0 3bb87c: 487a ldr r0, =0xfffe2016 ; via 0x3bba68 3bb87e: 8005 strh r5, [r0, #0] 3bb880: 497a ldr r1, =0xfffe2014 ; via 0x3bba6c 3bb882: 2002 mov r0, #2 3bb884: 8008 strh r0, [r1, #0] 3bb886: 497a ldr r1, =0xfffe2002 ; via 0x3bba70 3bb888: 2084 mov r0, #132 ; 0x84 3bb88a: 8008 strh r0, [r1, #0] 3bb88c: 4979 ldr r1, =0xfffe2000 ; via 0x3bba74 3bb88e: 487a ldr r0, =0x3de0 ; via 0x3bba78 3bb890: 8008 strh r0, [r1, #0] 3bb892: 4a7a ldr r2, =0xfffe2022 ; via 0x3bba7c 3bb894: 200a mov r0, #10 ; 0xa 3bb896: 8010 strh r0, [r2, #0] ; DIFF! 3bb898: 4879 ldr r0, =0xfffe2020 ; via 0x3bba80 3bb89a: 4a7a ldr r2, =0x45a ; via 0x3bba84 3bb89c: 8002 strh r2, [r0, #0] 3bb89e: 4a7a ldr r2, =0xfffe201e ; via 0x3bba88 3bb8a0: 20ff mov r0, #255 ; 0xff 3bb8a2: 304b add r0, #75 ; 0x4b 3bb8a4: 8010 strh r0, [r2, #0] ; DIFF! 3bb8a6: 4879 ldr r0, =0xfffe201c ; via 0x3bba8c 3bb8a8: 221f mov r2, #31 ; 0x1f 3bb8aa: 8002 strh r2, [r0, #0] 3bb8ac: 4878 ldr r0, =0xfffe2024 ; via 0x3bba90 3bb8ae: 8005 strh r5, [r0, #0] 3bb8b0: 4a78 ldr r2, =0xfffe2010 ; via 0x3bba94 3bb8b2: 2002 mov r0, #2 3bb8b4: 8813 ldrh r3, [r2, #0] 3bb8b6: 4318 orr r0, r3 3bb8b8: 8010 strh r0, [r2, #0] 3bb8ba: 2004 mov r0, #4 3bb8bc: 8813 ldrh r3, [r2, #0] 3bb8be: 4318 orr r0, r3 3bb8c0: 8010 strh r0, [r2, #0] 3bb8c2: 2027 mov r0, #39 ; 0x27 3bb8c4: 80a0 strh r0, [r4, #4] 3bb8c6: 8a08 ldrh r0, [r1, #16] ; 0x10 3bb8c8: 0840 lsr r0, r0, #1 3bb8ca: d30f bcc 0x3bb8ec 3bb8cc: 8a08 ldrh r0, [r1, #16] ; 0x10 3bb8ce: 0400 lsl r0, r0, #16 3bb8d0: 0c40 lsr r0, r0, #17 3bb8d2: 0040 lsl r0, r0, #1 3bb8d4: 8208 strh r0, [r1, #16] ; 0x10 3bb8d6: 2001 mov r0, #1 3bb8d8: e001 b 0x3bb8de 3bb8da: 9800 ldr r0, [sp, #0] 3bb8dc: 3001 add r0, #1 3bb8de: 9000 str r0, [sp, #0] 3bb8e0: 9800 ldr r0, [sp, #0] 3bb8e2: 2832 cmp r0, #50 ; 0x32 3bb8e4: d3f9 bcc 0x3bb8da 3bb8e6: 8a48 ldrh r0, [r1, #18] ; 0x12 3bb8e8: 2800 cmp r0, #0 3bb8ea: d0fc beq 0x3bb8e6 3bb8ec: f027 fbcd bl 0x3e308a ; $AI_ClockEnable 3bb8f0: f027 fbd1 bl 0x3e3096 ; $AI_InitIOConfig 3bb8f4: 2027 mov r0, #39 ; 0x27 3bb8f6: 0500 lsl r0, r0, #20 3bb8f8: 8005 strh r5, [r0, #0] 3bb8fa: 2001 mov r0, #1 3bb8fc: f025 ff6c bl 0x3e17d8 ; $TM_EnableTimer 3bb900: 2002 mov r0, #2 3bb902: f025 ff69 bl 0x3e17d8 ; $TM_EnableTimer 3bb906: b001 add sp, #4 3bb908: bd70 pop {r4, r5, r6, pc} ; The following code is a different version of Init_Target(), ; but does not seem to be used, probably defunct but still-compiled ; code in init.c in between the functional Init_Target() and the ; normally-following Init_Drivers(). 3bb90a: b570 push {r4, r5, r6, lr} 3bb90c: 4d49 ldr r5, =0xfffef008 ; via 0x3bba34 3bb90e: 4862 ldr r0, =0x6040 ; via 0x3bba98 3bb910: 8028 strh r0, [r5, #0] 3bb912: f025 ff53 bl 0x3e17bc ; $TM_DisableWatchdog 3bb916: 4849 ldr r0, =0xfffffd02 ; via 0x3bba3c 3bb918: 2105 mov r1, #5 3bb91a: 8802 ldrh r2, [r0, #0] 3bb91c: 4311 orr r1, r2 3bb91e: 8001 strh r1, [r0, #0] 3bb920: 4947 ldr r1, =0xff3f ; via 0x3bba40 3bb922: 8802 ldrh r2, [r0, #0] 3bb924: 4011 and r1, r2 3bb926: 8001 strh r1, [r0, #0] 3bb928: 2180 mov r1, #128 ; 0x80 3bb92a: 8802 ldrh r2, [r0, #0] 3bb92c: 4311 orr r1, r2 3bb92e: 8001 strh r1, [r0, #0] 3bb930: 4e45 ldr r6, =0xfffff900 ; via 0x3bba48 3bb932: 20ff mov r0, #255 ; 0xff 3bb934: 0200 lsl r0, r0, #8 3bb936: 8030 strh r0, [r6, #0] 3bb938: 4c44 ldr r4, =0xffff9800 ; via 0x3bba4c 3bb93a: 4845 ldr r0, =0xfff3 ; via 0x3bba50 3bb93c: 8821 ldrh r1, [r4, #0] 3bb93e: 4008 and r0, r1 3bb940: 8020 strh r0, [r4, #0] 3bb942: 8820 ldrh r0, [r4, #0] 3bb944: 8020 strh r0, [r4, #0] 3bb946: 4843 ldr r0, =0xf01f ; via 0x3bba54 3bb948: 8821 ldrh r1, [r4, #0] 3bb94a: 4008 and r0, r1 3bb94c: 8020 strh r0, [r4, #0] 3bb94e: 2001 mov r0, #1 3bb950: 0280 lsl r0, r0, #10 3bb952: 8821 ldrh r1, [r4, #0] 3bb954: 4308 orr r0, r1 3bb956: 8020 strh r0, [r4, #0] 3bb958: 2000 mov r0, #0 3bb95a: 2102 mov r1, #2 3bb95c: 2200 mov r2, #0 3bb95e: f027 faaf bl 0x3e2ec0 ; $CLKM_InitARMClock 3bb962: 4a3d ldr r2, =0xfffffb00 ; via 0x3bba58 3bb964: 20a4 mov r0, #164 ; 0xa4 3bb966: 8010 strh r0, [r2, #0] 3bb968: 8050 strh r0, [r2, #2] 3bb96a: 2185 mov r1, #133 ; 0x85 3bb96c: 8091 strh r1, [r2, #4] 3bb96e: 80d0 strh r0, [r2, #6] 3bb970: 20a7 mov r0, #167 ; 0xa7 3bb972: 8150 strh r0, [r2, #10] ; 0xa 3bb974: 20c0 mov r0, #192 ; 0xc0 3bb976: 8190 strh r0, [r2, #12] ; 0xc 3bb978: 2040 mov r0, #64 ; 0x40 3bb97a: 8110 strh r0, [r2, #8] 3bb97c: 2020 mov r0, #32 ; 0x20 3bb97e: 8070 strh r0, [r6, #2] 3bb980: 2000 mov r0, #0 3bb982: 80b0 strh r0, [r6, #4] 3bb984: 2010 mov r0, #16 ; 0x10 3bb986: 8821 ldrh r1, [r4, #0] 3bb988: 4308 orr r0, r1 3bb98a: 8020 strh r0, [r4, #0] 3bb98c: f027 fb76 bl 0x3e307c 3bb990: 2001 mov r0, #1 3bb992: f027 fb50 bl 0x3e3036 3bb996: 4841 ldr r0, =0xfffd ; via 0x3bba9c 3bb998: 8829 ldrh r1, [r5, #0] 3bb99a: 4008 and r0, r1 3bb99c: 8028 strh r0, [r5, #0] 3bb99e: 2001 mov r0, #1 3bb9a0: f027 fb50 bl 0x3e3044 3bb9a4: 2004 mov r0, #4 3bb9a6: f027 fb46 bl 0x3e3036 3bb9aa: 2000 mov r0, #0 3bb9ac: f027 fb2e bl 0x3e300c 3bb9b0: 2004 mov r0, #4 3bb9b2: f027 fb47 bl 0x3e3044 3bb9b6: 2007 mov r0, #7 3bb9b8: f027 fb36 bl 0x3e3028 3bb9bc: 2003 mov r0, #3 3bb9be: f027 fb25 bl 0x3e300c 3bb9c2: 2007 mov r0, #7 3bb9c4: f027 fb3e bl 0x3e3044 3bb9c8: bd70 pop {r4, r5, r6, pc} $Init_Drivers: 3bb9ca: b500 push {lr} 3bb9cc: f78d fc0f bl 0x3491ee 3bb9d0: f5a6 fa25 bl 0x161e1e 3bb9d4: f7ad fda3 bl 0x36951e 3bb9d8: f039 fb95 bl 0x3f5106 3bb9dc: f6f5 f927 bl 0x2b0c2e 3bb9e0: f720 fb16 bl 0x2dc010 3bb9e4: f7bc fa46 bl 0x377e74 3bb9e8: f6ca fcfa bl 0x2863e0 3bb9ec: f001 fd3b bl 0x3bd466 3bb9f0: bd00 pop {pc} $Init_Serial_Flows: 3bb9f2: b500 push {lr} 3bb9f4: 482a ldr r0, =0x1773764 ; via 0x3bbaa0 3bb9f6: f793 fb8f bl 0x34f118 ; $SER_InitSerialConfig 3bb9fa: 2000 mov r0, #0 3bb9fc: 2103 mov r1, #3 3bb9fe: 2200 mov r2, #0 3bba00: f793 fc2b bl 0x34f25a ; $SER_tr_Init 3bba04: f793 fc85 bl 0x34f312 ; $SER_fd_Initialize 3bba08: bd00 pop {pc} $Init_Unmask_IT: 3bba0a: b500 push {lr} 3bba0c: f484 fc59 bl 0x402c2 ; $INT_DisableIRQ 3bba10: 2004 mov r0, #4 3bba12: f024 f94c bl 0x3dfcae ; $IQ_Unmask 3bba16: 2012 mov r0, #18 ; 0x12 3bba18: f024 f949 bl 0x3dfcae ; $IQ_Unmask 3bba1c: 2007 mov r0, #7 3bba1e: f024 f946 bl 0x3dfcae ; $IQ_Unmask 3bba22: 2008 mov r0, #8 3bba24: f024 f943 bl 0x3dfcae ; $IQ_Unmask 3bba28: 200f mov r0, #15 ; 0xf 3bba2a: f024 f940 bl 0x3dfcae ; $IQ_Unmask 3bba2e: f484 fc2d bl 0x4028c ; $INT_EnableIRQ 3bba32: bd00 pop {pc} _f_checksum: 3e6990: e1a0c000 mov r12, r0 3e6994: e3a00000 mov r0, #0 3e6998: e3510000 cmp r1, #0 3e699c: 012fff1e bxeq lr 3e69a0: e4dc2001 ldrb r2, [r12], #1 3e69a4: e0820000 add r0, r2, r0 3e69a8: e1a00800 mov r0, r0, lsl #16 3e69ac: e1a00820 mov r0, r0, lsr #16 3e69b0: e2511001 subs r1, r1, #1 3e69b4: 1afffff9 bne 0x3e69a0 3e69b8: e12fff1e bx lr _f_load_int_mem: 3e69bc: e92d4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, lr} 3e69c0: e59f90c8 ldr r9, =0x1775070 ; via 0x3e6a90 3e69c4: e3a0c000 mov r12, #0 3e69c8: e1c9c0b0 strh r12, [r9] 3e69cc: e59fa0c0 ldr r10, =0x1775072 ; via 0x3e6a94 3e69d0: e1cac0b0 strh r12, [r10] 3e69d4: e59fc0bc ldr r12, =0x82d1f0 ; via 0x3e6a98 3e69d8: e59f00bc ldr r0, =0x848788 ; via 0x3e6a9c 3e69dc: e040000c sub r0, r0, r12 3e69e0: e2408004 sub r8, r0, #4 3e69e4: e28c7004 add r7, r12, #4 3e69e8: e1a00007 mov r0, r7 3e69ec: e3a01000 mov r1, #0 3e69f0: e1a02008 mov r2, r8 3e69f4: ebf166b1 bl 0x404c0 ; _INT_memset 3e69f8: e59f40a0 ldr r4, =0x84878c ; via 0x3e6aa0 3e69fc: e59fc0a0 ldr r12, =0x848d1c ; via 0x3e6aa4 3e6a00: e04c6004 sub r6, r12, r4 3e6a04: e1a00004 mov r0, r4 3e6a08: e3a01000 mov r1, #0 3e6a0c: e1a02006 mov r2, r6 3e6a10: ebf166aa bl 0x404c0 ; _INT_memset 3e6a14: e59fb08c ldr r11, =0x40708 ; via 0x3e6aa8 3e6a18: e1a0000b mov r0, r11 3e6a1c: e1a01008 mov r1, r8 3e6a20: ebffffda bl 0x3e6990 ; _f_checksum 3e6a24: e1a03000 mov r3, r0 3e6a28: e1c930b0 strh r3, [r9] 3e6a2c: e59f5078 ldr r5, =0x5bca0 ; via 0x3e6aac 3e6a30: e1a00005 mov r0, r5 3e6a34: e1a01006 mov r1, r6 3e6a38: ebffffd4 bl 0x3e6990 ; _f_checksum 3e6a3c: e083c000 add r12, r3, r0 3e6a40: e1c9c0b0 strh r12, [r9] 3e6a44: e1a00007 mov r0, r7 3e6a48: e1a0100b mov r1, r11 3e6a4c: e1a02008 mov r2, r8 3e6a50: ebf166c0 bl 0x40558 ; _INT_memcpy 3e6a54: e1a00004 mov r0, r4 3e6a58: e1a01005 mov r1, r5 3e6a5c: e1a02006 mov r2, r6 3e6a60: ebf166bc bl 0x40558 ; _INT_memcpy 3e6a64: e1a00007 mov r0, r7 3e6a68: e1a01008 mov r1, r8 3e6a6c: ebffffc7 bl 0x3e6990 ; _f_checksum 3e6a70: e1a03000 mov r3, r0 3e6a74: e1ca30b0 strh r3, [r10] 3e6a78: e1a00004 mov r0, r4 3e6a7c: e1a01006 mov r1, r6 3e6a80: ebffffc2 bl 0x3e6990 ; _f_checksum 3e6a84: e083c000 add r12, r3, r0 3e6a88: e1cac0b0 strh r12, [r10] 3e6a8c: e8bd8ff0 ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11, pc} 3e6a90: 01775070 _d_checksum1 3e6a94: 01775072 _d_checksum2 3e6a98: 0082d1f0 _d_application_run_start 3e6a9c: 00848788 _d_application_run_end 3e6aa0: 0084878c __470_S_MEM_out_call_run_start 3e6aa4: 00848d1c __470_S_MEM_out_call_run_end 3e6aa8: 00040708 .ldfl+8 3e6aac: 0005bca0 __470_S_MEM_out_call_load_start Run address = load address + 0x7ECAEC for both the actual code and the trampolines $Application_Initialize: 3f11f8: b500 push {lr} 3f11fa: f7ca faeb bl 0x3bb7d4 ; $Init_Target 3f11fe: f7ca fbe4 bl 0x3bb9ca ; $Init_Drivers 3f1202: f686 f8eb bl 0x2773dc 3f1206: f686 f985 bl 0x277514 3f120a: f008 ffa7 bl 0x3fa15c 3f120e: f7ff ffcd bl 0x3f11ac 3f1212: 2801 cmp r0, #1 3f1214: d001 beq 0x3f121a 3f1216: f7b0 fa2d bl 0x3a1674 3f121a: f7b0 fa3e bl 0x3a169a 3f121e: f75e fb4d bl 0x34f8bc 3f1222: f7ca fbe6 bl 0x3bb9f2 ; $Init_Serial_Flows 3f1226: f709 fe44 bl 0x2faeb2 3f122a: f7ca fbee bl 0x3bba0a ; $Init_Unmask_IT 3f122e: bd00 pop {pc} $INC_Initialize: 3f3e74: b530 push {r4, r5, lr} 3f3e76: 1c05 add r5, r0, #0 3f3e78: 4c13 ldr r4, =0x1775048 ; via 0x3f3ec8 3f3e7a: 2001 mov r0, #1 3f3e7c: 6020 str r0, [r4, #0] 3f3e7e: f003 f99d bl 0x3f71bc 3f3e82: f003 f99f bl 0x3f71c4 3f3e86: f003 f947 bl 0x3f7118 3f3e8a: f001 fe75 bl 0x3f5b78 3f3e8e: f7f5 ffcd bl 0x3e9e2c 3f3e92: f002 fb55 bl 0x3f6540 3f3e96: f002 fb23 bl 0x3f64e0 3f3e9a: f002 fb41 bl 0x3f6520 3f3e9e: f002 fb0f bl 0x3f64c0 3f3ea2: f002 fb6d bl 0x3f6580 3f3ea6: f002 fb2b bl 0x3f6500 3f3eaa: f002 fb79 bl 0x3f65a0 3f3eae: f7fa fc8b bl 0x3ee7c8 3f3eb2: f002 fb55 bl 0x3f6560 3f3eb6: 1c28 add r0, r5, #0 3f3eb8: f7fd f99e bl 0x3f11f8 ; $Application_Initialize 3f3ebc: 2002 mov r0, #2 3f3ebe: 6020 str r0, [r4, #0] 3f3ec0: f005 fbdc bl 0x3f967c 3f3ec4: bd30 pop {r4, r5, pc} _INC_Initialize: 3f6b40: e92d4000 stmdb sp!, {lr} 3f6b44: e28fe001 add lr, pc, #1 3f6b48: e12fff1e bx lr 3f6b4c: f7fd f992 bl 0x3f3e74 ; $INC_Initialize 3f6b50: 4778 bx pc 3f6b52: 46c0 nop (mov r8, r8) 3f6b54: e8bd8000 ldmia sp!, {pc} 003F81AC $madc_hex_2_physical call trampoline 0052FB70 _RVM_SWE_GET_INFO_ARRAY 0083CAB0 $madc_hex_2_physical function body expected here