.file "flashfile.c" .section .rodata .align 2 .LC0: .ascii "/dev/mem\000" .align 2 .LC1: .ascii "Can not open /dev/mem\000" .align 2 .LC2: .ascii "flash.rom\000" .align 2 .LC3: .ascii "Can not open flash.rom\000" .align 2 .LC4: .ascii "Error MMAP /dev/mem\000" .align 2 .LC5: .ascii "Error MMAP flash.rom\000" .align 2 .LC6: .ascii "Setting 0x%02x=0x%04x\n\000" .align 2 .LC7: .ascii "0x%02x=0x%04x\n\000" .align 2 .LC8: .ascii "0x%02x isn't erased\n\000" .text .align 2 .global main .type main, %function main: @ args = 0, pretend = 0, frame = 44 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp stmfd sp!, {fp, ip, lr, pc} sub fp, ip, #4 sub sp, sp, #52 str r0, [fp, #-16] str r1, [fp, #-20] ldr r0, .L13 mov r1, #2 bl open mov r3, r0 str r3, [fp, #-24] ldr r3, [fp, #-24] cmp r3, #0 bge .L2 ldr r0, .L13+4 bl perror mov r0, #1 bl exit .L2: ldr r0, .L13+8 mov r1, #0 bl open mov r3, r0 str r3, [fp, #-28] ldr r3, [fp, #-28] cmp r3, #0 bge .L3 ldr r0, .L13+12 bl perror mov r0, #1 bl exit .L3: ldr r3, [fp, #-24] str r3, [sp, #0] mov r3, #1879048192 str r3, [sp, #4] mov r0, #0 mov r1, #131072 mov r2, #3 mov r3, #1 bl mmap str r0, [fp, #-40] ldr r3, [fp, #-40] cmn r3, #1 bne .L4 ldr r0, .L13+16 bl perror mov r0, #1 bl exit .L4: ldr r3, [fp, #-28] str r3, [sp, #0] mov r3, #0 str r3, [sp, #4] mov r0, #0 mov r1, #131072 mov r2, #1 mov r3, #1 bl mmap str r0, [fp, #-44] ldr r3, [fp, #-44] cmn r3, #1 bne .L5 ldr r0, .L13+20 bl perror mov r0, #1 bl exit .L5: mov r3, #5440 add r3, r3, #20 ldr r2, [fp, #-40] add r2, r3, r2 mov r3, #170 strh r3, [r2, #0] @ movhi mov r3, #2720 add r3, r3, #10 ldr r2, [fp, #-40] add r2, r3, r2 mov r3, #85 strh r3, [r2, #0] @ movhi mov r3, #5440 add r3, r3, #20 ldr r2, [fp, #-40] add r2, r3, r2 mov r3, #32 strh r3, [r2, #0] @ movhi mov r3, #0 str r3, [fp, #-32] .L6: ldr r2, [fp, #-32] mov r3, #65280 add r3, r3, #255 cmp r2, r3 bgt .L7 ldr r3, [fp, #-32] mov r2, r3, asl #1 ldr r3, [fp, #-40] add r3, r2, r3 ldrh r3, [r3, #0] @ movhi mov r3, r3, asl #16 mov r2, r3, lsr #16 mov r3, #65280 add r3, r3, #255 cmp r2, r3 bne .L9 ldr r3, [fp, #-32] mov r2, r3, asl #1 ldr r3, [fp, #-44] add r3, r2, r3 ldrh r3, [r3, #0] @ movhi strh r3, [fp, #-56] @ movhi ldrh r3, [fp, #-56] ldr r0, .L13+24 ldr r1, [fp, #-32] mov r2, r3 bl printf ldr r2, [fp, #-40] mov r3, #160 strh r3, [r2, #0] @ movhi ldr r3, [fp, #-32] mov r2, r3, asl #1 ldr r3, [fp, #-40] add r2, r2, r3 ldrh r3, [fp, #-56] @ movhi strh r3, [r2, #0] @ movhi mov r0, #100 bl usleep .L10: ldr r3, [fp, #-32] mov r2, r3, asl #1 ldr r3, [fp, #-40] add r3, r2, r3 ldrh r3, [r3, #0] @ movhi strh r3, [fp, #-54] @ movhi mov r3, r3, asl #16 mov r2, r3, lsr #16 ldrh r3, [fp, #-56] cmp r2, r3 beq .L11 ldrh r3, [fp, #-54] ldr r0, .L13+28 ldr r1, [fp, #-32] mov r2, r3 bl printf mov r0, #100 bl usleep b .L10 .L11: ldrh r3, [fp, #-54] ldr r0, .L13+28 ldr r1, [fp, #-32] mov r2, r3 bl printf b .L8 .L9: ldr r0, .L13+32 ldr r1, [fp, #-32] bl printf .L8: ldr r3, [fp, #-32] add r3, r3, #1 str r3, [fp, #-32] b .L6 .L7: ldr r2, [fp, #-40] mov r3, #144 strh r3, [r2, #0] @ movhi ldr r2, [fp, #-40] mov r3, #0 strh r3, [r2, #0] @ movhi ldr r0, [fp, #-40] mov r1, #262144 bl munmap ldr r0, [fp, #-44] mov r1, #131072 bl munmap mov r3, #0 mov r0, r3 sub sp, fp, #12 ldmfd sp, {fp, sp, pc} .L14: .align 2 .L13: .word .LC0 .word .LC1 .word .LC2 .word .LC3 .word .LC4 .word .LC5 .word .LC6 .word .LC7 .word .LC8 .size main, .-main .ident "GCC: (GNU) 3.4.3"