F1C100S
BROM ffff4000.s
參考資訊:
1. brom
2. wiki
ffff4000.s
BROM: ffff4000: ea000006 b start ffff4004: "eGON.BRM ",0 ffff4010: "110011001623",0 start: ffff4020: e30004e2 movw r0, #0x4e2 ; r0 = 1250; ffff4024: e2500001 subs r0, r0, #0x1 ; r0 = r0 - 1; ffff4028: 1afffffd bne 0xffff4024 ; loop until r0 reaches 0 ffff402c: e10f0000 mrs r0, CPSR ; read current program status register ffff4030: e3c0001f bic r0, r0, #0x1f ; load System (ARMv4+) R0-R14, CPSR, PC as MASK ffff4034: e3800013 orr r0, r0, #0x13 ; set SVC mode (supervisor) R0-R12, R13_svc R14_svc CPSR, SPSR_IRQ, PC ffff4038: e3800040 orr r0, r0, #0x40 ; enable FIQ interrupts ffff403c: e3c00c02 bic r0, r0, #0x200 ; set little endianess ffff4040: e121f000 msr CPSR_c, r0 ; write current program status register flag bits ffff4044: ee110f10 mrc 15, 0, r0, cr1, cr0, {0}; read from CoProcessor ffff4048: e3c00005 bic r0, r0, #0x5 ; MMU disabled, data caching disabled ffff404c: e3c00b06 bic r0, r0, #0x1800 ; program flow prediction disabled, instruction caching disabled ffff4050: ee010f10 mcr 15, 0, r0, cr1, cr0, {0}; write to CoProcessor ffff4054: e59f1050 ldr r1, =0x01c20c94 ; load WDT_MODE (watchdog timer) address ffff4058: e5912000 ldr r2, [r1] ; load WDT_MODE value ffff405c: e3c22001 bic r2, r2, #0x1 ; disable watchdog reset ffff4060: e5812000 str r2, [r1] ; store WDT_MODE register ffff4064: e59f1044 ldr r1, =0x01c20000 ; load CCM_PLL1_CFG ffff4068: e5912054 ldr r2, [r1, #0x54] ; load CCM_CPU_AXI_AHB_APB0_CFG ffff406c: e3003333 movw r3, #0x333 ; CCM_AXI_CLK_DIV = 0x11, CCM_AHB_CLK_DIV = 0x11, CCM_APB0_CLK_DIV = 0x11 ffff4070: e1c22003 bic r2, r2, r3 ; CCM_AXI_CLK_DIV = 0x00, CCM_AHB_CLK_DIV = 0x00, CCM_APB0_CLK_DIV = 0x00 ffff4074: e3a03000 mov r3, #0x0 ; r3 = 0; ffff4078: e1822003 orr r2, r2, r3 ; verify? ffff407c: e5812054 str r2, [r1, #0x54] ; store CCM_CPU_AXI_AHB_APB0_CFG ffff4080: e5912060 ldr r2, [r1, #0x60] ; load CCM_AHB_GATING0 ffff4084: e3a03040 mov r3, #0x40 ; CCM_AHB_GATE_DMA = 0x1 ffff4088: e1822003 orr r2, r2, r3 ; enable CCM_AHB_GATE_DMA in r2 ffff408c: e5812060 str r2, [r1, #0x60] ; store CCM_AHB_GATING0 ffff4090: e5912068 ldr r2, [r1, #0x68] ; load CCM_APB0_GATING ffff4094: e3a03020 mov r3, #0x20 ; CCM_APB_GATE_PIO = 0x1 ffff4098: e1822003 orr r2, r2, r3 ; enable CCM_APB_GATE_PIO in r2 ffff409c: e5812068 str r2, [r1, #0x68] ; store CCM_APB0_GATING ffff40a0: e3a0d902 mov sp, #0x8000 ; setup stackpointer to 32k (SRAM_BASE + SRAM_SIZE) ffff40a4: eb000002 bl boot ; jump to boot ffff40a8: eafffffe b 0xffff40a8 ; loop forever void main(void) { int i; int reg_val; for (i = 1250; i > 0; i--); asm("mrs r0, CPSR"); asm("bic r0, r0, #0x1f"); asm("orr r0, r0, #0x13"); asm("orr r0, r0, #0x40"); asm("bic r0, r0, #0x200"); asm("msr CPSRc, r0); asm("mrc 15, 0, r0, cr1, cr0, {0}"); asm("bic r0, r0, #0x5"); asm("bic r0, r0, #0x18000"); asm("mcr 15, 0, r0, cr1, cr0, {0}"); reg_val = readl(TMR_WDT_MODE); reg_val &= !TMR_WDT_RST; writel(reg_val, TMR_WDT_MODE); reg_val = readl(CCM_CPU_AXI_AHB_APB0_CFG); reg_val &= !(CCM_AXI_DIV(4) | CCM_AHB_CLK_DIV(8), CCM_APB0_CLK_DIV(8)); writel(reg_val, CCM_CPU_AXI_AHB_APB0_CFG); reg_val = readl(CCM_AHB_GATING0); reg_val |= CCM_AHB_GATE_DMA; writel(reg_val, CCM_AHB_gATING0); reg_val = readl(CCM_APB0_GATING); reg_val |= CCM_APB_GATE_PIO; writel(reg_val, CCM_APB0_GATING); asm("mov sp, 0x8000"); boot(); while (TRUE); } boot: ffff40b4: e92d4010 push {r4, lr} ; push r4 and link register (return address) onto the stack ffff40b8: eb0008b1 bl check_uboot ; check if uboot button is pressed, return value in r0 ffff40bc: e1a04000 mov r4, r0 ; r4 = check_uboot(); ffff40c0: e3540000 cmp r4, #0x0 ; see if check_uboot returned 0 ffff40c4: 0a000000 beq .try_boot_MMC0 ; if check_uboot was 0, try to boot from MMC0 ffff40c8: ea000016 b .boot_fel ; else boot FEL mode .try_boot_MMC0: ffff40cc: e3a00000 mov r0, #0x0 ; r0 = 0x0; (which mmc to boot, 0 = mmc0) ffff40d0: eb0003fa bl load_from_mmc ; load SPL from mmc0 ffff40d4: e1a04000 mov r4, r0 ; r4 = load_from_mmc(); ffff40d8: e3540000 cmp r4, #0x0 ; see if load_from_mmc returned 0 ffff40dc: 1a000000 bne .try_boot_NAND ; if load_from_mmc returned 0 try to boot from NAND-flash ffff40e0: ea000013 b .boot_spl ; else skip to .boot_spl .try_boot_NAND: ffff40e4: eb0004c9 bl load_from_nand ; load SPL from NAND ffff40e8: e1a04000 mov r4, r0 ; r4 = load_from_nand(); ffff40ec: e3540000 cmp r4, #0x0 ; see if load_from_nand returned 0 ffff40f0: 1a000000 bne .try_boot_MMC2 ; if load_from_nand returned 0 try to boot from MMC2 ffff40f4: ea00000e b .boot_spl ; else skip to .boot_spl .try_boot_MMC2: ffff40f8: e3a00002 mov r0, #0x2 ; r0 = 0x2; (which mmc to boot, 2 = mmc2) ffff40fc: eb0003ef bl load_from_mmc ; load SPL from mmc0 ffff4100: e1a04000 mov r4, r0 ; r4 = load_from_mmc(); ffff4104: e3540000 cmp r4, #0x0 ; see if load_from_mmc returned 0 ffff4108: 1a000000 bne .try_boot_SPINOR ; if load_from_mmc returned 0 try to boot from SPI NOR-flash ffff410c: ea000008 b .boot_spl ; else skip to .boot_spl .try_boot_SPINOR: ffff4110: eb0006e6 bl load_from_spinor ; load SPL from SPI NOR-flash ffff4114: e1a04000 mov r4, r0 ; r4 = load_from_spinor(); ffff4118: e3540000 cmp r4, #0x0 ; see if load_from_spinor returned 0 ffff411c: 1a000000 bne .none_found ; if load_from_spinor returned 0 boot from FEL mode (via .none_found) ffff4120: ea000003 b .boot ; else skip to .boot_spl .none_found: ffff4124: e320f000 nop {0} .boot_fel: ffff4128: e59f0010 ldr r0, =0xffff0020 ; load interrupt vector 'fel_setup' into r0 ffff412c: eb0008ca bl call_r0 ; execute 'fel_setup' (via call_r0) ffff4130: e320f000 nop {0} .boot_spl ffff4134: e3a00000 mov r0, #0x0 ; r0 = 0; ffff4138: eb0008c7 bl call_r0 ; execute from address 0 (SRAM_BASE, via call_r0) which was put here by load_from_* ffff413c: e8bd8010 pop {r4, pc} ; pop r4 and program counter back from th stack and return to ffff40a8 void boot(void) { int pin; pin = check_uboot(); if (!pin) if (load_from_mmc(MMC0)) call_r0(SRAM_BASE); else if (load_from_nand()) call_r0(SRAM_BASE); else if (load_from_mmc(MMC2)) call_r0(SRAM_BASE); else if (load_from_spinor()) call_r0(SRAM_BASE); call_r0(FEL_SETUP); } f_4144: ffff4144: e92d401f push {r0, r1, r2, r3, r4, lr} ffff4148: e1a04000 mov r4, r0 ffff414c: e1a0000d mov r0, sp ffff4150: e3a01000 mov r1, #0x0 ffff4154: e1a02001 mov r2, r1 ffff4158: e1a03001 mov r3, r1 ffff415c: e1a0c001 mov ip, r1 ffff4160: e880100e stm r0, {r1, r2, r3, ip} ffff4164: e3a00000 mov r0, #0x0 ffff4168: e58d0000 str r0, [sp] ffff416c: e58d0004 str r0, [sp, #0x4] ffff4170: e58d0008 str r0, [sp, #0x8] ffff4174: e59d000c ldr r0, [sp, #0xc] ffff4178: e3c0003f bic r0, r0, #0x3f ffff417c: e58d000c str r0, [sp, #0xc] ffff4180: e59d000c ldr r0, [sp, #0xc] ffff4184: e3c00b02 bic r0, r0, #0x800 ffff4188: e2800b02 add r0, r0, #0x800 ffff418c: e58d000c str r0, [sp, #0xc] ffff4190: e1a02004 mov r2, r4 ffff4194: e1a0000d mov r0, sp ffff4198: eb000311 bl f_4de4 ffff419c: e3500000 cmp r0, #0x0 ffff41a0: 0a000002 beq 0xffff41b0 ffff41a4: e3e00000 mvn r0, #0x0 ffff41a8: e28dd010 add sp, sp, #0x10 ffff41ac: e8bd8010 pop {r4, pc} ffff41b0: e3a00000 mov r0, #0x0 ffff41b4: eafffffb b 0xffff41a8 f_41b8: ffff41b8: e92d4030 push {r4, r5, lr} ffff41bc: e24dd094 sub sp, sp, #0x94 ffff41c0: e1a04000 mov r4, r0 ffff41c4: e1a05001 mov r5, r1 ffff41c8: e28d0084 add r0, sp, #0x84 ffff41cc: e3a01000 mov r1, #0x0 ffff41d0: e1a02001 mov r2, r1 ffff41d4: e1a03001 mov r3, r1 ffff41d8: e1a0c001 mov ip, r1 ffff41dc: e880100e stm r0, {r1, r2, r3, ip} ffff41e0: e3a00000 mov r0, #0x0 ffff41e4: e58d0084 str r0, [sp, #0x84] ffff41e8: e3a00002 mov r0, #0x2 ffff41ec: e58d0088 str r0, [sp, #0x88] ffff41f0: e5940008 ldr r0, [r4, #0x8] ffff41f4: e1a00800 lsl r0, r0, #0x10 ffff41f8: e58d008c str r0, [sp, #0x8c] ffff41fc: e59d0090 ldr r0, [sp, #0x90] ffff4200: e3c0003f bic r0, r0, #0x3f ffff4204: e2800007 add r0, r0, #0x7 ffff4208: e58d0090 str r0, [sp, #0x90] ffff420c: e59d0090 ldr r0, [sp, #0x90] ffff4210: e3c00040 bic r0, r0, #0x40 ffff4214: e58d0090 str r0, [sp, #0x90] ffff4218: e59d0090 ldr r0, [sp, #0x90] ffff421c: e3c00c01 bic r0, r0, #0x100 ffff4220: e2800c01 add r0, r0, #0x100 ffff4224: e58d0090 str r0, [sp, #0x90] ffff4228: e1a02005 mov r2, r5 ffff422c: e28d1004 add r1, sp, #0x4 ffff4230: e28d0084 add r0, sp, #0x84 ffff4234: eb0002ea bl f_4de4 ffff4238: e3500000 cmp r0, #0x0 ffff423c: 0a000002 beq 0xffff424c ffff4240: e3e00000 mvn r0, #0x0 ffff4244: e28dd094 add sp, sp, #0x94 ffff4248: e8bd8030 pop {r4, r5, pc} ffff424c: e3a00000 mov r0, #0x0 ffff4250: eafffffb b 0xffff4244 f_4254: ffff4254: e92d4030 push {r4, r5, lr} ffff4258: e24dd094 sub sp, sp, #0x94 ffff425c: e1a04000 mov r4, r0 ffff4260: e1a05001 mov r5, r1 ffff4264: e28d0084 add r0, sp, #0x84 ffff4268: e3a01000 mov r1, #0x0 ffff426c: e1a02001 mov r2, r1 ffff4270: e1a03001 mov r3, r1 ffff4274: e1a0c001 mov ip, r1 ffff4278: e880100e stm r0, {r1, r2, r3, ip} ffff427c: e1a00005 mov r0, r5 ffff4280: ebffffaf bl f_4144 ffff4284: e3500000 cmp r0, #0x0 ffff4288: 0a000002 beq 0xffff4298 ffff428c: e3e00000 mvn r0, #0x0 ffff4290: e28dd094 add sp, sp, #0x94 ffff4294: e8bd8030 pop {r4, r5, pc} ffff4298: e3a00000 mov r0, #0x0 ffff429c: e58d0084 str r0, [sp, #0x84] ffff42a0: e3a00001 mov r0, #0x1 ffff42a4: e58d0088 str r0, [sp, #0x88] ffff42a8: e30001aa movw r0, #0x1aa ffff42ac: e58d008c str r0, [sp, #0x8c] ffff42b0: e59d0090 ldr r0, [sp, #0x90] ffff42b4: e3c0003f bic r0, r0, #0x3f ffff42b8: e2800008 add r0, r0, #0x8 ffff42bc: e58d0090 str r0, [sp, #0x90] ffff42c0: e1a02005 mov r2, r5 ffff42c4: e28d1004 add r1, sp, #0x4 ffff42c8: e28d0084 add r0, sp, #0x84 ffff42cc: eb0002c4 bl f_4de4 ffff42d0: e3500000 cmp r0, #0x0 ffff42d4: 1a000008 bne 0xffff42fc ffff42d8: e59d0004 ldr r0, [sp, #0x4] ffff42dc: e7df061f bfc r0, #0xc, #0x14 ffff42e0: e30011aa movw r1, #0x1aa ffff42e4: e1500001 cmp r0, r1 ffff42e8: 1a000003 bne 0xffff42fc ffff42ec: e3a00001 mov r0, #0x1 ffff42f0: e5840004 str r0, [r4, #0x4] ffff42f4: e3a00000 mov r0, #0x0 ffff42f8: eaffffe4 b 0xffff4290 ffff42fc: e3a00001 mov r0, #0x1 ffff4300: e58d0084 str r0, [sp, #0x84] ffff4304: e3a00002 mov r0, #0x2 ffff4308: e58d0088 str r0, [sp, #0x88] ffff430c: e3a00000 mov r0, #0x0 ffff4310: e58d008c str r0, [sp, #0x8c] ffff4314: e59d0090 ldr r0, [sp, #0x90] ffff4318: e3c0003f bic r0, r0, #0x3f ffff431c: e2800037 add r0, r0, #0x37 ffff4320: e58d0090 str r0, [sp, #0x90] ffff4324: e1a02005 mov r2, r5 ffff4328: e28d1004 add r1, sp, #0x4 ffff432c: e28d0084 add r0, sp, #0x84 ffff4330: eb0002ab bl f_4de4 ffff4334: e3500000 cmp r0, #0x0 ffff4338: 1a000011 bne 0xffff4384 ffff433c: e3a00001 mov r0, #0x1 ffff4340: e58d0088 str r0, [sp, #0x88] ffff4344: e59f07b8 ldr r0, =0x40ff0000 ffff4348: e58d008c str r0, [sp, #0x8c] ffff434c: e59d0090 ldr r0, [sp, #0x90] ffff4350: e3c0003f bic r0, r0, #0x3f ffff4354: e2800029 add r0, r0, #0x29 ffff4358: e58d0090 str r0, [sp, #0x90] ffff435c: e1a02005 mov r2, r5 ffff4360: e28d1004 add r1, sp, #0x4 ffff4364: e28d0084 add r0, sp, #0x84 ffff4368: eb00029d bl f_4de4 ffff436c: e3500000 cmp r0, #0x0 ffff4370: 1a000003 bne 0xffff4384 ffff4374: e3a00001 mov r0, #0x1 ffff4378: e5840004 str r0, [r4, #0x4] ffff437c: e3a00000 mov r0, #0x0 ffff4380: eaffffc2 b 0xffff4290 ffff4384: e3a00002 mov r0, #0x2 ffff4388: e5840004 str r0, [r4, #0x4] ffff438c: e3a00000 mov r0, #0x0 ffff4390: eaffffbe b 0xffff4290 f_4394: ffff4394: e92d41f0 push {r4, r5, r6, r7, r8, lr} ffff4398: e24dd090 sub sp, sp, #0x90 ffff439c: e1a04000 mov r4, r0 ffff43a0: e1a05001 mov r5, r1 ffff43a4: e3a07000 mov r7, #0x0 ffff43a8: e3a080c8 mov r8, #0xc8 ffff43ac: e28d0080 add r0, sp, #0x80 ffff43b0: e3a01000 mov r1, #0x0 ffff43b4: e1a02001 mov r2, r1 ffff43b8: e1a03001 mov r3, r1 ffff43bc: e1a0c001 mov ip, r1 ffff43c0: e880100e stm r0, {r1, r2, r3, ip} ffff43c4: e1a00005 mov r0, r5 ffff43c8: ebffff5d bl f_4144 ffff43cc: e3500000 cmp r0, #0x0 ffff43d0: 0a000002 beq 0xffff43e0 ffff43d4: e3e00000 mvn r0, #0x0 ffff43d8: e28dd090 add sp, sp, #0x90 ffff43dc: e8bd81f0 pop {r4, r5, r6, r7, r8, pc} ffff43e0: e28d0080 add r0, sp, #0x80 ffff43e4: e3a01000 mov r1, #0x0 ffff43e8: e1a02001 mov r2, r1 ffff43ec: e1a03001 mov r3, r1 ffff43f0: e1a0c001 mov ip, r1 ffff43f4: e880100e stm r0, {r1, r2, r3, ip} ffff43f8: e3a00000 mov r0, #0x0 ffff43fc: e58d0080 str r0, [sp, #0x80] ffff4400: e3a00001 mov r0, #0x1 ffff4404: e58d0084 str r0, [sp, #0x84] ffff4408: e30001aa movw r0, #0x1aa ffff440c: e58d0088 str r0, [sp, #0x88] ffff4410: e59d008c ldr r0, [sp, #0x8c] ffff4414: e3c0003f bic r0, r0, #0x3f ffff4418: e2800008 add r0, r0, #0x8 ffff441c: e58d008c str r0, [sp, #0x8c] ffff4420: e1a02005 mov r2, r5 ffff4424: e1a0100d mov r1, sp ffff4428: e28d0080 add r0, sp, #0x80 ffff442c: eb00026c bl f_4de4 ffff4430: e3500000 cmp r0, #0x0 ffff4434: 1a000005 bne 0xffff4450 ffff4438: e59d0000 ldr r0, [sp] ffff443c: e7df061f bfc r0, #0xc, #0x14 ffff4440: e30011aa movw r1, #0x1aa ffff4444: e1500001 cmp r0, r1 ffff4448: 1a000000 bne 0xffff4450 ffff444c: e3a07001 mov r7, #0x1 ffff4450: ea000043 b 0xffff4564 ffff4454: e3580000 cmp r8, #0x0 ffff4458: ca000001 bgt 0xffff4464 ffff445c: e3e00000 mvn r0, #0x0 ffff4460: eaffffdc b 0xffff43d8 ffff4464: e2488001 sub r8, r8, #0x1 ffff4468: e28d0080 add r0, sp, #0x80 ffff446c: e3a01000 mov r1, #0x0 ffff4470: e1a02001 mov r2, r1 ffff4474: e1a03001 mov r3, r1 ffff4478: e1a0c001 mov ip, r1 ffff447c: e880100e stm r0, {r1, r2, r3, ip} ffff4480: e3a00001 mov r0, #0x1 ffff4484: e58d0080 str r0, [sp, #0x80] ffff4488: e3a00002 mov r0, #0x2 ffff448c: e58d0084 str r0, [sp, #0x84] ffff4490: e3a00000 mov r0, #0x0 ffff4494: e58d0088 str r0, [sp, #0x88] ffff4498: e59d008c ldr r0, [sp, #0x8c] ffff449c: e3c0003f bic r0, r0, #0x3f ffff44a0: e2800037 add r0, r0, #0x37 ffff44a4: e58d008c str r0, [sp, #0x8c] ffff44a8: e1a02005 mov r2, r5 ffff44ac: e1a0100d mov r1, sp ffff44b0: e28d0080 add r0, sp, #0x80 ffff44b4: eb00024a bl f_4de4 ffff44b8: e3500000 cmp r0, #0x0 ffff44bc: 0a000001 beq 0xffff44c8 ffff44c0: e3e00000 mvn r0, #0x0 ffff44c4: eaffffc3 b 0xffff43d8 ffff44c8: e3a00001 mov r0, #0x1 ffff44cc: e58d0084 str r0, [sp, #0x84] ffff44d0: e3570000 cmp r7, #0x0 ffff44d4: 0a000002 beq 0xffff44e4 ffff44d8: e59d0088 ldr r0, [sp, #0x88] ffff44dc: e3800101 orr r0, r0, #0x40000000 ffff44e0: e58d0088 str r0, [sp, #0x88] ffff44e4: e59d0088 ldr r0, [sp, #0x88] ffff44e8: e380073f orr r0, r0, #0xfc0000 ffff44ec: e58d0088 str r0, [sp, #0x88] ffff44f0: e59d008c ldr r0, [sp, #0x8c] ffff44f4: e3c0003f bic r0, r0, #0x3f ffff44f8: e2800029 add r0, r0, #0x29 ffff44fc: e58d008c str r0, [sp, #0x8c] ffff4500: e1a02005 mov r2, r5 ffff4504: e1a0100d mov r1, sp ffff4508: e28d0080 add r0, sp, #0x80 ffff450c: eb000234 bl f_4de4 ffff4510: e3500000 cmp r0, #0x0 ffff4514: 0a000001 beq 0xffff4520 ffff4518: e3e00000 mvn r0, #0x0 ffff451c: eaffffad b 0xffff43d8 ffff4520: e59d0000 ldr r0, [sp] ffff4524: e200073f and r0, r0, #0xfc0000 ffff4528: e350073f cmp r0, #0xfc0000 ffff452c: 0a000001 beq 0xffff4538 ffff4530: e3e00000 mvn r0, #0x0 ffff4534: eaffffa7 b 0xffff43d8 ffff4538: e3a06000 mov r6, #0x0 ffff453c: e320f000 nop {0} ffff4540: e1a00006 mov r0, r6 ffff4544: e2866001 add r6, r6, #0x1 ffff4548: e30014e2 movw r1, #0x4e2 ffff454c: e1500001 cmp r0, r1 ffff4550: 3afffffa bcc 0xffff4540 ffff4554: e59d0000 ldr r0, [sp] ffff4558: e3100102 tst r0, #-0x80000000 ; 0x80000000 ffff455c: 0a000000 beq 0xffff4564 ffff4560: ea000000 b 0xffff4568 ffff4564: eaffffba b 0xffff4454 ffff4568: e320f000 nop {0} ffff456c: e3570000 cmp r7, #0x0 ffff4570: 0a000005 beq 0xffff458c ffff4574: e59d0000 ldr r0, [sp] ffff4578: e3100101 tst r0, #0x40000000 ffff457c: 0a000002 beq 0xffff458c ffff4580: e5940004 ldr r0, [r4, #0x4] ffff4584: e3800020 orr r0, r0, #0x20 ffff4588: e5840004 str r0, [r4, #0x4] ffff458c: e3a00000 mov r0, #0x0 ffff4590: eaffff90 b 0xffff43d8 f_4594: ffff4594: e92d40f0 push {r4, r5, r6, r7, lr} ffff4598: e24dd094 sub sp, sp, #0x94 ffff459c: e1a04000 mov r4, r0 ffff45a0: e1a05001 mov r5, r1 ffff45a4: e3a070c8 mov r7, #0xc8 ffff45a8: e28d0084 add r0, sp, #0x84 ffff45ac: e3a01000 mov r1, #0x0 ffff45b0: e1a02001 mov r2, r1 ffff45b4: e1a03001 mov r3, r1 ffff45b8: e1a0c001 mov ip, r1 ffff45bc: e880100e stm r0, {r1, r2, r3, ip} ffff45c0: e1a00005 mov r0, r5 ffff45c4: ebfffede bl f_4144 ffff45c8: e3500000 cmp r0, #0x0 ffff45cc: 0a000002 beq 0xffff45dc ffff45d0: e3e00000 mvn r0, #0x0 ffff45d4: e28dd094 add sp, sp, #0x94 ffff45d8: e8bd80f0 pop {r4, r5, r6, r7, pc} ffff45dc: e3a00002 mov r0, #0x2 ffff45e0: e58d0084 str r0, [sp, #0x84] ffff45e4: e3a00001 mov r0, #0x1 ffff45e8: e58d0088 str r0, [sp, #0x88] ffff45ec: e59f0514 ldr r0, =0x40ff8000 ffff45f0: e58d008c str r0, [sp, #0x8c] ffff45f4: e59d0090 ldr r0, [sp, #0x90] ffff45f8: e3c0003f bic r0, r0, #0x3f ffff45fc: e2800001 add r0, r0, #0x1 ffff4600: e58d0090 str r0, [sp, #0x90] ffff4604: ea00001e b 0xffff4684 ffff4608: e3570000 cmp r7, #0x0 ffff460c: ca000001 bgt 0xffff4618 ffff4610: e3e00000 mvn r0, #0x0 ffff4614: eaffffee b 0xffff45d4 ffff4618: e2477001 sub r7, r7, #0x1 ffff461c: e1a02005 mov r2, r5 ffff4620: e28d1004 add r1, sp, #0x4 ffff4624: e28d0084 add r0, sp, #0x84 ffff4628: eb0001ed bl f_4de4 ffff462c: e3500000 cmp r0, #0x0 ffff4630: 0a000001 beq 0xffff463c ffff4634: e3e00000 mvn r0, #0x0 ffff4638: eaffffe5 b 0xffff45d4 ffff463c: e59d0004 ldr r0, [sp, #0x4] ffff4640: e59f14c4 ldr r1, =0x00ff8000 ffff4644: e0000001 and r0, r0, r1 ffff4648: e1500001 cmp r0, r1 ffff464c: 0a000001 beq 0xffff4658 ffff4650: e3e00000 mvn r0, #0x0 ffff4654: eaffffde b 0xffff45d4 ffff4658: e59d0004 ldr r0, [sp, #0x4] ffff465c: e3100102 tst r0, #-0x80000000 ; 0x80000000 ffff4660: 0a000000 beq 0xffff4668 ffff4664: ea000007 b 0xffff4688 ffff4668: e3a06000 mov r6, #0x0 ffff466c: e320f000 nop {0} ffff4670: e1a00006 mov r0, r6 ffff4674: e2866001 add r6, r6, #0x1 ffff4678: e30014e2 movw r1, #0x4e2 ffff467c: e1500001 cmp r0, r1 ffff4680: 3afffffa bcc 0xffff4670 ffff4684: eaffffdf b 0xffff4608 ffff4688: e320f000 nop {0} ffff468c: e59d0004 ldr r0, [sp, #0x4] ffff4690: e3100101 tst r0, #0x40000000 ffff4694: 0a000002 beq 0xffff46a4 ffff4698: e5940004 ldr r0, [r4, #0x4] ffff469c: e3800020 orr r0, r0, #0x20 ffff46a0: e5840004 str r0, [r4, #0x4] ffff46a4: e3a00000 mov r0, #0x0 ffff46a8: eaffffc9 b 0xffff45d4 f_46ac: ffff46ac: e92d4010 push {r4, lr} ffff46b0: e24dd090 sub sp, sp, #0x90 ffff46b4: e1a04000 mov r4, r0 ffff46b8: e28d0080 add r0, sp, #0x80 ffff46bc: e3a01000 mov r1, #0x0 ffff46c0: e1a02001 mov r2, r1 ffff46c4: e1a03001 mov r3, r1 ffff46c8: e1a0c001 mov ip, r1 ffff46cc: e880100e stm r0, {r1, r2, r3, ip} ffff46d0: e3a00000 mov r0, #0x0 ffff46d4: e58d0080 str r0, [sp, #0x80] ffff46d8: e3a00001 mov r0, #0x1 ffff46dc: e58d0084 str r0, [sp, #0x84] ffff46e0: e3a00000 mov r0, #0x0 ffff46e4: e58d0088 str r0, [sp, #0x88] ffff46e8: e59d008c ldr r0, [sp, #0x8c] ffff46ec: e3c0003f bic r0, r0, #0x3f ffff46f0: e2800002 add r0, r0, #0x2 ffff46f4: e58d008c str r0, [sp, #0x8c] ffff46f8: e59d008c ldr r0, [sp, #0x8c] ffff46fc: e3c00040 bic r0, r0, #0x40 ffff4700: e2800040 add r0, r0, #0x40 ffff4704: e58d008c str r0, [sp, #0x8c] ffff4708: e1a02004 mov r2, r4 ffff470c: e1a0100d mov r1, sp ffff4710: e28d0080 add r0, sp, #0x80 ffff4714: eb0001b2 bl f_4de4 ffff4718: e3500000 cmp r0, #0x0 ffff471c: 0a000002 beq 0xffff472c ffff4720: e3e00000 mvn r0, #0x0 ffff4724: e28dd090 add sp, sp, #0x90 ffff4728: e8bd8010 pop {r4, pc} ffff472c: e3a00000 mov r0, #0x0 ffff4730: eafffffb b 0xffff4724 f_4734: ffff4734: e92d4030 push {r4, r5, lr} ffff4738: e24dd094 sub sp, sp, #0x94 ffff473c: e1a04000 mov r4, r0 ffff4740: e1a05001 mov r5, r1 ffff4744: e28d0084 add r0, sp, #0x84 ffff4748: e3a01000 mov r1, #0x0 ffff474c: e1a02001 mov r2, r1 ffff4750: e1a03001 mov r3, r1 ffff4754: e1a0c001 mov ip, r1 ffff4758: e880100e stm r0, {r1, r2, r3, ip} ffff475c: e3a00000 mov r0, #0x0 ffff4760: e58d0084 str r0, [sp, #0x84] ffff4764: e3a00001 mov r0, #0x1 ffff4768: e58d0088 str r0, [sp, #0x88] ffff476c: e3a00000 mov r0, #0x0 ffff4770: e58d008c str r0, [sp, #0x8c] ffff4774: e59d0090 ldr r0, [sp, #0x90] ffff4778: e3c0003f bic r0, r0, #0x3f ffff477c: e2800003 add r0, r0, #0x3 ffff4780: e58d0090 str r0, [sp, #0x90] ffff4784: e59d0090 ldr r0, [sp, #0x90] ffff4788: e3c00040 bic r0, r0, #0x40 ffff478c: e58d0090 str r0, [sp, #0x90] ffff4790: e59d0090 ldr r0, [sp, #0x90] ffff4794: e3c00c01 bic r0, r0, #0x100 ffff4798: e2800c01 add r0, r0, #0x100 ffff479c: e58d0090 str r0, [sp, #0x90] ffff47a0: e1a02005 mov r2, r5 ffff47a4: e28d1004 add r1, sp, #0x4 ffff47a8: e28d0084 add r0, sp, #0x84 ffff47ac: eb00018c bl f_4de4 ffff47b0: e3500000 cmp r0, #0x0 ffff47b4: 0a000002 beq 0xffff47c4 ffff47b8: e3e00000 mvn r0, #0x0 ffff47bc: e28dd094 add sp, sp, #0x94 ffff47c0: e8bd8030 pop {r4, r5, pc} ffff47c4: e30f1fff movw r1, #0xffff ffff47c8: e59d0004 ldr r0, [sp, #0x4] ffff47cc: e0010820 and r0, r1, r0, lsr #0x10 ffff47d0: e5840008 str r0, [r4, #0x8] ffff47d4: e3a00000 mov r0, #0x0 ffff47d8: eafffff7 b 0xffff47bc f_47dc: ffff47dc: e92d4030 push {r4, r5, lr} ffff47e0: e24dd01c sub sp, sp, #0x1c ffff47e4: e1a04000 mov r4, r0 ffff47e8: e1a05001 mov r5, r1 ffff47ec: e3a02018 mov r2, #0x18 ffff47f0: e59f1318 ldr r1, =d_6460 ffff47f4: e28d0004 add r0, sp, #0x4 ffff47f8: eb0006f6 bl memcpy ffff47fc: e3a0003c mov r0, #0x3c ffff4800: e58d0004 str r0, [sp, #0x4] ffff4804: e1a01005 mov r1, r5 ffff4808: e28d0004 add r0, sp, #0x4 ffff480c: eb00013c bl f_4d04 ffff4810: e3500000 cmp r0, #0x0 ffff4814: 0a000002 beq 0xffff4824 ffff4818: e3e00000 mvn r0, #0x0 ffff481c: e28dd01c add sp, sp, #0x1c ffff4820: e8bd8030 pop {r4, r5, pc} ffff4824: e1a01005 mov r1, r5 ffff4828: e1a00004 mov r0, r4 ffff482c: ebfffe88 bl f_4254 ffff4830: e3500000 cmp r0, #0x0 ffff4834: 0a000001 beq 0xffff4840 ffff4838: e3e00000 mvn r0, #0x0 ffff483c: eafffff6 b 0xffff481c ffff4840: e5940004 ldr r0, [r4, #0x4] ffff4844: e3500001 cmp r0, #0x1 ffff4848: 1a000006 bne 0xffff4868 ffff484c: e1a01005 mov r1, r5 ffff4850: e1a00004 mov r0, r4 ffff4854: ebfffece bl f_4394 ffff4858: e3700001 cmn r0, #0x1 ffff485c: 1a000008 bne 0xffff4884 ffff4860: e3e00000 mvn r0, #0x0 ffff4864: eaffffec b 0xffff481c ffff4868: e1a01005 mov r1, r5 ffff486c: e1a00004 mov r0, r4 ffff4870: ebffff47 bl f_4594 ffff4874: e3700001 cmn r0, #0x1 ffff4878: 1a000001 bne 0xffff4884 ffff487c: e3e00000 mvn r0, #0x0 ffff4880: eaffffe5 b 0xffff481c ffff4884: e1a00005 mov r0, r5 ffff4888: ebffff87 bl f_46ac ffff488c: e3500000 cmp r0, #0x0 ffff4890: 0a000001 beq 0xffff489c ffff4894: e3e00000 mvn r0, #0x0 ffff4898: eaffffdf b 0xffff481c ffff489c: e1a01005 mov r1, r5 ffff48a0: e1a00004 mov r0, r4 ffff48a4: ebffffa2 bl f_4734 ffff48a8: e3500000 cmp r0, #0x0 ffff48ac: 0a000001 beq 0xffff48b8 ffff48b0: e3e00000 mvn r0, #0x0 ffff48b4: eaffffd8 b 0xffff481c ffff48b8: e5940004 ldr r0, [r4, #0x4] ffff48bc: e3c00010 bic r0, r0, #0x10 ffff48c0: e5840004 str r0, [r4, #0x4] ffff48c4: e3a00001 mov r0, #0x1 ffff48c8: e5840000 str r0, [r4] ffff48cc: e3a00000 mov r0, #0x0 ffff48d0: eaffffd1 b 0xffff481c f_48d4: ffff48d4: e92d4030 push {r4, r5, lr} ffff48d8: e24dd01c sub sp, sp, #0x1c ffff48dc: e1a04000 mov r4, r0 ffff48e0: e1a05001 mov r5, r1 ffff48e4: e1a01005 mov r1, r5 ffff48e8: e1a00004 mov r0, r4 ffff48ec: ebfffe31 bl f_41b8 ffff48f0: e3500000 cmp r0, #0x0 ffff48f4: 0a000002 beq 0xffff4904 ffff48f8: e3e00000 mvn r0, #0x0 ffff48fc: e28dd01c add sp, sp, #0x1c ffff4900: e8bd8030 pop {r4, r5, pc} ffff4904: e3a00000 mov r0, #0x0 ffff4908: e58d0004 str r0, [sp, #0x4] ffff490c: e3a00001 mov r0, #0x1 ffff4910: e58d000c str r0, [sp, #0xc] ffff4914: e3a00000 mov r0, #0x0 ffff4918: e58d0008 str r0, [sp, #0x8] ffff491c: e3a00c02 mov r0, #0x200 ffff4920: e58d0010 str r0, [sp, #0x10] ffff4924: e3e004ff mvn r0, #-0x1000000 ; 0xff000000 ffff4928: e58d0014 str r0, [sp, #0x14] ffff492c: e3a000ff mov r0, #0xff ffff4930: e58d0018 str r0, [sp, #0x18] ffff4934: e1a01005 mov r1, r5 ffff4938: e28d0004 add r0, sp, #0x4 ffff493c: eb0000f0 bl f_4d04 ffff4940: e3500000 cmp r0, #0x0 ffff4944: 0a000001 beq 0xffff4950 ffff4948: e3e00000 mvn r0, #0x0 ffff494c: eaffffea b 0xffff48fc ffff4950: e3a00000 mov r0, #0x0 ffff4954: eaffffe8 b 0xffff48fc f_4958: ffff4958: e92d4070 push {r4, r5, r6, lr} ffff495c: e1a04000 mov r4, r0 ffff4960: e1a05001 mov r5, r1 ffff4964: e1a06002 mov r6, r2 ffff4968: e1a00004 mov r0, r4 ffff496c: eb000082 bl configurePIO_MMC(n) ffff4970: e1a00006 mov r0, r6 ffff4974: eb0000a7 bl f_4c18 ffff4978: e3500000 cmp r0, #0x0 ffff497c: 0a000001 beq 0xffff4988 ffff4980: e3e00000 mvn r0, #0x0 ffff4984: e8bd8070 pop {r4, r5, r6, pc} ffff4988: e1a01006 mov r1, r6 ffff498c: e1a00005 mov r0, r5 ffff4990: ebffff91 bl f_47dc ffff4994: e3500000 cmp r0, #0x0 ffff4998: 1a000006 bne 0xffff49b8 ffff499c: e1a01006 mov r1, r6 ffff49a0: e1a00005 mov r0, r5 ffff49a4: ebffffca bl f_48d4 ffff49a8: e3500000 cmp r0, #0x0 ffff49ac: 0a000003 beq 0xffff49c0 ffff49b0: e3e00000 mvn r0, #0x0 ffff49b4: eafffff2 b 0xffff4984 ffff49b8: e3e00000 mvn r0, #0x0 ffff49bc: eafffff0 b 0xffff4984 ffff49c0: e3a00000 mov r0, #0x0 ffff49c4: eaffffee b 0xffff4984 f_49c8: ffff49c8: e92d4010 push {r4, lr} ffff49cc: e1a04000 mov r4, r0 ffff49d0: e1a00004 mov r0, r4 ffff49d4: eb0000ac bl f_4c8c ffff49d8: e8bd8010 pop {r4, pc} f_49dc: ffff49dc: e92d43f0 push {r4, r5, r6, r7, r8, r9, lr} ffff49e0: e24dd014 sub sp, sp, #0x14 ffff49e4: e1a04000 mov r4, r0 ffff49e8: e1a05001 mov r5, r1 ffff49ec: e1a06002 mov r6, r2 ffff49f0: e1a07003 mov r7, r3 ffff49f4: e1cd83d0 ldrd r8, [sp, #0x30] ffff49f8: e28d0004 add r0, sp, #0x4 ffff49fc: e3a01000 mov r1, #0x0 ffff4a00: e1a02001 mov r2, r1 ffff4a04: e1a03001 mov r3, r1 ffff4a08: e1a0c001 mov ip, r1 ffff4a0c: e880100e stm r0, {r1, r2, r3, ip} ffff4a10: e3a00003 mov r0, #0x3 ffff4a14: e58d0008 str r0, [sp, #0x8] ffff4a18: e59d0010 ldr r0, [sp, #0x10] ffff4a1c: e3c00c01 bic r0, r0, #0x100 ffff4a20: e2800c01 add r0, r0, #0x100 ffff4a24: e58d0010 str r0, [sp, #0x10] ffff4a28: e59d0010 ldr r0, [sp, #0x10] ffff4a2c: e3c00040 bic r0, r0, #0x40 ffff4a30: e58d0010 str r0, [sp, #0x10] ffff4a34: e59d0010 ldr r0, [sp, #0x10] ffff4a38: e3c00c02 bic r0, r0, #0x200 ffff4a3c: e58d0010 str r0, [sp, #0x10] ffff4a40: e59d0010 ldr r0, [sp, #0x10] ffff4a44: e3c00b01 bic r0, r0, #0x400 ffff4a48: e58d0010 str r0, [sp, #0x10] ffff4a4c: e3a00000 mov r0, #0x0 ffff4a50: e58d0004 str r0, [sp, #0x4] ffff4a54: e3550001 cmp r5, #0x1 ffff4a58: 1a000004 bne 0xffff4a70 ffff4a5c: e59d0010 ldr r0, [sp, #0x10] ffff4a60: e3c0003f bic r0, r0, #0x3f ffff4a64: e2800011 add r0, r0, #0x11 ffff4a68: e58d0010 str r0, [sp, #0x10] ffff4a6c: ea000007 b 0xffff4a90 ffff4a70: e59d0010 ldr r0, [sp, #0x10] ffff4a74: e3c0003f bic r0, r0, #0x3f ffff4a78: e2800012 add r0, r0, #0x12 ffff4a7c: e58d0010 str r0, [sp, #0x10] ffff4a80: e59d0010 ldr r0, [sp, #0x10] ffff4a84: e3c00080 bic r0, r0, #0x80 ffff4a88: e2800080 add r0, r0, #0x80 ffff4a8c: e58d0010 str r0, [sp, #0x10] ffff4a90: e5970004 ldr r0, [r7, #0x4] ffff4a94: e3100020 tst r0, #0x20 ffff4a98: 0a000001 beq 0xffff4aa4 ffff4a9c: e58d400c str r4, [sp, #0xc] ffff4aa0: ea000001 b 0xffff4aac ffff4aa4: e1a00484 lsl r0, r4, #0x9 ffff4aa8: e58d000c str r0, [sp, #0xc] ffff4aac: e1a02485 lsl r2, r5, #0x9 ffff4ab0: e1a03008 mov r3, r8 ffff4ab4: e1a01006 mov r1, r6 ffff4ab8: e58d9000 str r9, [sp] ffff4abc: e28d0004 add r0, sp, #0x4 ffff4ac0: eb00011a bl f_4f30 ffff4ac4: e3500000 cmp r0, #0x0 ffff4ac8: 0a000002 beq 0xffff4ad8 ffff4acc: e3e00000 mvn r0, #0x0 ffff4ad0: e28dd014 add sp, sp, #0x14 ffff4ad4: e8bd83f0 pop {r4, r5, r6, r7, r8, r9, pc} ffff4ad8: e3a00000 mov r0, #0x0 ffff4adc: eafffffb b 0xffff4ad0 f_4ae0: ffff4ae0: e1a02000 mov r2, r0 ffff4ae4: e5920000 ldr r0, [r2] ffff4ae8: e3c00c02 bic r0, r0, #0x200 ffff4aec: e5820000 str r0, [r2] ffff4af0: e5920000 ldr r0, [r2] ffff4af4: e1800481 orr r0, r0, r1, lsl #0x9 ffff4af8: e5820000 str r0, [r2] ffff4afc: e3a00000 mov r0, #0x0 ffff4b00: e12fff1e bx lr f_4b14: ffff4b14: e92d4010 push {r4, lr} ffff4b18: e1a02000 mov r2, r0 ffff4b1c: e30f3fff movw r3, #0xffff ffff4b20: e5812018 str r2, [r1, #0x18] ffff4b24: ea00000b b 0xffff4b58 ffff4b28: e5910018 ldr r0, [r1, #0x18] ffff4b2c: e3100102 tst r0, #-0x80000000 ; 0x80000000 ffff4b30: 1a000001 bne 0xffff4b3c ffff4b34: e3a00000 mov r0, #0x0 ffff4b38: e8bd8010 pop {r4, pc} ffff4b3c: e5910038 ldr r0, [r1, #0x38] ffff4b40: e3100a01 tst r0, #0x1000 ffff4b44: 0a000003 beq 0xffff4b58 ffff4b48: e3a00a01 mov r0, #0x1000 ffff4b4c: e5810038 str r0, [r1, #0x38] ffff4b50: e3e00000 mvn r0, #0x0 ffff4b54: eafffff7 b 0xffff4b38 ffff4b58: e1b00003 movs r0, r3 ffff4b5c: e2433001 sub r3, r3, #0x1 ffff4b60: 1afffff0 bne 0xffff4b28 ffff4b64: e3530000 cmp r3, #0x0 ffff4b68: aa000001 bge 0xffff4b74 ffff4b6c: e3e00000 mvn r0, #0x0 ffff4b70: eafffff0 b 0xffff4b38 ffff4b74: e3a00000 mov r0, #0x0 ffff4b78: eaffffee b 0xffff4b38 configurePIO_MMC(n): ffff4b7c: e1a02000 mov r2, r0 ffff4b80: e3520000 cmp r2, #0x0 ffff4b84: 1a00000b bne 0xffff4bb8 ffff4b88: e59f0510 ldr r0, =0x01c20000 ffff4b8c: e5901060 ldr r1, [r0, #0x60] ffff4b90: e3811c01 orr r1, r1, #0x100] ffff4b94: e5801060 str r1, [r0, #0x60] ffff4b98: e3a00102 mov r0, #0x80000000 ffff4b9c: e59f34fc ldr r3, =0x01c20000 ffff4ba0: e5830088 str r0, [r3, #0x88] ffff4ba4: e59f04f8 ldr r0, =0x00222222 ; SDC0 ffff4ba8: e58308b4 str r0, [r3, #0x8b4] ; PF_CFG0 ffff4bac: e3000555 movw r0, #0x555 ffff4bb0: e58308d0 str r0, [r3, #0x8d0] ; PF_PULL0 ffff4bb4: ea000015 b 0xffff4c10 ffff4bb8: e3520002 cmp r2, #0x2 ffff4bbc: 1a000013 bne 0xffff4c10 ffff4bc0: e59f04d8 ldr r0, =0x01c20000 ffff4bc4: e5901060 ldr r1, [r0, #0x60] ffff4bc8: e3811b01 orr r1, r1, #0x400 ffff4bcc: e5801060 str r1, [r0, #0x60] ffff4bd0: e3a00102 mov r0, #0x80000000 ffff4bd4: e59f34c4 ldr r3, =0x01c20000 ffff4bd8: e5830090 str r0, [r3, #0x90] ffff4bdc: e3a00433 mov r0, #0x33000000 ; SDC2 ffff4be0: e5830848 str r0, [r3, #0x848] ; PC_CFG0 ffff4be4: e3030333 movw r0, #0x3333 ; SDC2 ffff4be8: e583084c str r0, [r3, #0x84c] ; PC_CFG1 ffff4bec: e1c30000 bic r0, r3, r0 ffff4bf0: e5901864 ldr r1, [r0, #0x864] ; PC_PULL0 ffff4bf4: e1a00001 mov r0, r1 ffff4bf8: e7d7061f bfc r0, #0xc, #0xc ffff4bfc: e1a01000 mov r1, r0 ffff4c00: e3811605 orr r1, r1, #0x500000 ffff4c04: e3811a55 orr r1, r1, #0x55000 ffff4c08: e1a00003 mov r0, r3 ffff4c0c: e5801864 str r1, [r0, #0x864] ; PC_PULL0 ffff4c10: e3a00000 mov r0, #0x0 ffff4c14: e12fff1e bx lr f_4c18: ffff4c18: e92d4010 push {r4, lr} ffff4c1c: e1a01000 mov r1, r0 ffff4c20: e30f4fff movw r4, #0xffff ffff4c24: e3a02007 mov r2, #0x7 ffff4c28: e5812000 str r2, [r1] ffff4c2c: ea000005 b 0xffff4c48 ffff4c30: e2444001 sub r4, r4, #0x1 ffff4c34: e3540000 cmp r4, #0x0 ffff4c38: aa000001 bge 0xffff4c44 ffff4c3c: e3e00000 mvn r0, #0x0 ffff4c40: e8bd8010 pop {r4, pc} ffff4c44: e5912000 ldr r2, [r1] ffff4c48: e3120007 tst r2, #0x7 ffff4c4c: 1afffff7 bne 0xffff4c30 ffff4c50: e3a03000 mov r3, #0x0 ffff4c54: ea000000 b 0xffff4c5c ffff4c58: e2833001 add r3, r3, #0x1 ffff4c5c: e3530032 cmp r3, #0x32 ffff4c60: 3afffffc bcc 0xffff4c58 ffff4c64: e5912038 ldr r2, [r1, #0x38] ffff4c68: e30f0fff movw r0, #0xffff ffff4c6c: e1822000 orr r2, r2, r0 ffff4c70: e5812038 str r2, [r1, #0x38] ffff4c74: e3a02c02 mov r2, #0x200 ffff4c78: e5812000 str r2, [r1] ffff4c7c: e59f2424 ldr r2, =0x00070008 ffff4c80: e5812040 str r2, [r1, #0x40] ffff4c84: e3a00000 mov r0, #0x0 ffff4c88: eaffffec b 0xffff4c40 f_4c8c: ffff4c8c: e1a01000 mov r1, r0 ffff4c90: e3510000 cmp r1, #0x0 ffff4c94: 1a00000b bne 0xffff4cc8 ffff4c98: e59f0400 ldr r0, =0x01c20000 ffff4c9c: e5902060 ldr r2, [r0, #0x60] ffff4ca0: e3c22c01 bic r2, r2, #0x100 ffff4ca4: e5802060 str r2, [r0, #0x60] ffff4ca8: e3a00000 mov r0, #0x0 ffff4cac: e59f33ec ldr r3, =0x01c20000 ffff4cb0: e5830088 str r0, [r3, #0x88] ffff4cb4: e59f03f0 ldr r0, =0x00404044 ; JTAG1 ffff4cb8: e58308b4 str r0, [r3, #0x8b4] ; PF_CFG0 ffff4cbc: e3a00000 mov r0, #0x0 ffff4cc0: e58308d0 str r0, [r3, #0x8d0] ; PF_PULL0 ffff4cc4: ea00000c b 0xffff4cfc ffff4cc8: e3510002 cmp r1, #0x2 ffff4ccc: 1a00000a bne 0xffff4cfc ffff4cd0: e59f03c8 ldr r0, =0x01c20000 ffff4cd4: e5902060 ldr r2, [r0, #0x60] ffff4cd8: e3c22b01 bic r2, r2, #0x400] ffff4cdc: e5802060 str r2, [r0, #0x60] ffff4ce0: e3a00000 mov r0, #0x0 ffff4ce4: e59f33b4 ldr r3, =0x01c20000 ffff4ce8: e5830090 str r0, [r3, #0x90] ffff4cec: e5830848 str r0, [r3, #0x848] ; PC_CFG0 ffff4cf0: e583084c str r0, [r3, #0x84c] ; PC_CFG1 ffff4cf4: e3050140 movw r0, #0x5140 ffff4cf8: e5830864 str r0, [r3, #0x864] ; PC_PULL0 ffff4cfc: e3a00000 mov r0, #0x0 ffff4d00: e12fff1e bx lr f_4d04: ffff4d04: e92d4070 push {r4, r5, r6, lr} ffff4d08: e1a04000 mov r4, r0 ffff4d0c: e1a05001 mov r5, r1 ffff4d10: e5940014 ldr r0, [r4, #0x14] ffff4d14: e5941010 ldr r1, [r4, #0x10] ffff4d18: e7df0411 bfi r0, r1, #0x8, #0x18 ffff4d1c: e1a06000 mov r6, r0 ffff4d20: e5856008 str r6, [r5, #0x8] ffff4d24: e594000c ldr r0, [r4, #0xc] ffff4d28: e6ff6070 uxth r6, r0 ffff4d2c: e5856010 str r6, [r5, #0x10] ffff4d30: e3a00000 mov r0, #0x0 ffff4d34: e585000c str r0, [r5, #0xc] ffff4d38: e5950004 ldr r0, [r5, #0x4] ffff4d3c: e3c00801 bic r0, r0, #0x10000 ffff4d40: e5850004 str r0, [r5, #0x4] ffff4d44: e59f6364 ldr r6, =0x80202000 ffff4d48: e1a01005 mov r1, r5 ffff4d4c: e1a00006 mov r0, r6 ffff4d50: ebffff6f bl f_4b14 ffff4d54: e3500000 cmp r0, #0x0 ffff4d58: 0a000001 beq 0xffff4d64 ffff4d5c: e3e00000 mvn r0, #0x0 ffff4d60: e8bd8070 pop {r4, r5, r6, pc} ffff4d64: e5950004 ldr r0, [r5, #0x4] ffff4d68: e3c000ff bic r0, r0, #0xff ffff4d6c: e5850004 str r0, [r5, #0x4] ffff4d70: e5950004 ldr r0, [r5, #0x4] ffff4d74: e5941000 ldr r1, [r4] ffff4d78: e1800001 orr r0, r0, r1 ffff4d7c: e5850004 str r0, [r5, #0x4] ffff4d80: e59f6328 ldr r6, =0x80202000 ffff4d84: e1a01005 mov r1, r5 ffff4d88: e1a00006 mov r0, r6 ffff4d8c: ebffff60 bl f_4b14 ffff4d90: e3500000 cmp r0, #0x0 ffff4d94: 0a000001 beq 0xffff4da0 ffff4d98: e3e00000 mvn r0, #0x0 ffff4d9c: eaffffef b 0xffff4d60 ffff4da0: e5950004 ldr r0, [r5, #0x4] ffff4da4: e5941004 ldr r1, [r4, #0x4] ffff4da8: e2011001 and r1, r1, #0x1 ffff4dac: e3a02801 mov r2, #0x10000 ffff4db0: e1821881 orr r1, r2, r1, lsl #0x11 ffff4db4: e1800001 orr r0, r0, r1 ffff4db8: e5850004 str r0, [r5, #0x4] ffff4dbc: e59f62ec ldr r6, =0x80202000 ffff4dc0: e1a01005 mov r1, r5 ffff4dc4: e1a00006 mov r0, r6 ffff4dc8: ebffff51 bl f_4b14 ffff4dcc: e3500000 cmp r0, #0x0 ffff4dd0: 0a000001 beq 0xffff4ddc ffff4dd4: e3e00000 mvn r0, #0x0 ffff4dd8: eaffffe0 b 0xffff4d60 ffff4ddc: e3a00000 mov r0, #0x0 ffff4de0: eaffffde b 0xffff4d60 f_4de4: ffff4de4: e92d4070 push {r4, r5, r6, lr} ffff4de8: e1a03000 mov r3, r0 ffff4dec: e5930008 ldr r0, [r3, #0x8] ffff4df0: e582001c str r0, [r2, #0x1c] ffff4df4: e593000c ldr r0, [r3, #0xc] ffff4df8: e200403f and r4, r0, #0x3f ffff4dfc: e593000c ldr r0, [r3, #0xc] ffff4e00: e7e005d0 ubfx r0, r0, #0xb, #0x1 ffff4e04: e1844780 orr r4, r4, r0, lsl #0xf ffff4e08: e593000c ldr r0, [r3, #0xc] ffff4e0c: e7e003d0 ubfx r0, r0, #0x7, #0x1 ffff4e10: e1844600 orr r4, r4, r0, lsl #0xc ffff4e14: e5930004 ldr r0, [r3, #0x4] ffff4e18: e3500000 cmp r0, #0x0 ffff4e1c: 0a000006 beq 0xffff4e3c ffff4e20: e3844040 orr r4, r4, #0x40 ffff4e24: e593000c ldr r0, [r3, #0xc] ffff4e28: e7e00350 ubfx r0, r0, #0x6, #0x1 ffff4e2c: e1844380 orr r4, r4, r0, lsl #0x7 ffff4e30: e593000c ldr r0, [r3, #0xc] ffff4e34: e7e00450 ubfx r0, r0, #0x8, #0x1 ffff4e38: e1844400 orr r4, r4, r0, lsl #0x8 ffff4e3c: e5930004 ldr r0, [r3, #0x4] ffff4e40: e3500003 cmp r0, #0x3 ffff4e44: 1a000006 bne 0xffff4e64 ffff4e48: e3844c22 orr r4, r4, #0x2200 ffff4e4c: e593000c ldr r0, [r3, #0xc] ffff4e50: e7e004d0 ubfx r0, r0, #0x9, #0x1 ffff4e54: e1844500 orr r4, r4, r0, lsl #0xa ffff4e58: e593000c ldr r0, [r3, #0xc] ffff4e5c: e7e00550 ubfx r0, r0, #0xa, #0x1 ffff4e60: e1844580 orr r4, r4, r0, lsl #0xb ffff4e64: e3844102 orr r4, r4, #-0x80000000 ; 0x80000000 ffff4e68: e5824018 str r4, [r2, #0x18] ffff4e6c: e30f5fff movw r5, #0xffff ffff4e70: e320f000 nop {0} ffff4e74: e1b00005 movs r0, r5 ffff4e78: e2455001 sub r5, r5, #0x1 ffff4e7c: 0a000002 beq 0xffff4e8c ffff4e80: e5920038 ldr r0, [r2, #0x38] ffff4e84: e3100004 tst r0, #0x4 ffff4e88: 0afffff9 beq 0xffff4e74 ffff4e8c: e3a00004 mov r0, #0x4 ffff4e90: e5820038 str r0, [r2, #0x38] ffff4e94: e3550000 cmp r5, #0x0 ffff4e98: aa000001 bge 0xffff4ea4 ffff4e9c: e3e00000 mvn r0, #0x0 ffff4ea0: e8bd8070 pop {r4, r5, r6, pc} ffff4ea4: e5924038 ldr r4, [r2, #0x38] ffff4ea8: e5930004 ldr r0, [r3, #0x4] ffff4eac: e3500000 cmp r0, #0x0 ffff4eb0: 0a00001c beq 0xffff4f28 ffff4eb4: e3000102 movw r0, #0x102 ffff4eb8: e1100004 tst r0, r4 ffff4ebc: 0a000003 beq 0xffff4ed0 ffff4ec0: e3000102 movw r0, #0x102 ffff4ec4: e5820038 str r0, [r2, #0x38] ffff4ec8: e3e00000 mvn r0, #0x0 ffff4ecc: eafffff3 b 0xffff4ea0 ffff4ed0: e593000c ldr r0, [r3, #0xc] ffff4ed4: e7e00450 ubfx r0, r0, #0x8, #0x1 ffff4ed8: e3500000 cmp r0, #0x0 ffff4edc: 0a000005 beq 0xffff4ef8 ffff4ee0: e3140040 tst r4, #0x40 ffff4ee4: 0a000003 beq 0xffff4ef8 ffff4ee8: e3a00040 mov r0, #0x40 ffff4eec: e5820038 str r0, [r2, #0x38] ffff4ef0: e3e00000 mvn r0, #0x0 ffff4ef4: eaffffe9 b 0xffff4ea0 ffff4ef8: e5920020 ldr r0, [r2, #0x20] ffff4efc: e5810000 str r0, [r1] ffff4f00: e593000c ldr r0, [r3, #0xc] ffff4f04: e7e00350 ubfx r0, r0, #0x6, #0x1 ffff4f08: e3500001 cmp r0, #0x1 ffff4f0c: 1a000005 bne 0xffff4f28 ffff4f10: e5920024 ldr r0, [r2, #0x24] ffff4f14: e5810004 str r0, [r1, #0x4] ffff4f18: e5920028 ldr r0, [r2, #0x28] ffff4f1c: e5810008 str r0, [r1, #0x8] ffff4f20: e592002c ldr r0, [r2, #0x2c] ffff4f24: e581000c str r0, [r1, #0xc] ffff4f28: e3a00000 mov r0, #0x0 ffff4f2c: eaffffdb b 0xffff4ea0 f_4f30: ffff4f30: e92d4ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, lr} ffff4f34: e24dd084 sub sp, sp, #0x84 ffff4f38: e1a04000 mov r4, r0 ffff4f3c: e1a05001 mov r5, r1 ffff4f40: e1a06002 mov r6, r2 ffff4f44: e1a07003 mov r7, r3 ffff4f48: e59d80a8 ldr r8, [sp, #0xa8] ffff4f4c: e3e00000 mvn r0, #0x0 ffff4f50: e58d0080 str r0, [sp, #0x80] ffff4f54: e5970000 ldr r0, [r7] ffff4f58: e3800102 orr r0, r0, #-0x80000000 ; 0x80000000 ffff4f5c: e5870000 str r0, [r7] ffff4f60: e5876014 str r6, [r7, #0x14] ffff4f64: e1a02007 mov r2, r7 ffff4f68: e1a0100d mov r1, sp ffff4f6c: e1a00004 mov r0, r4 ffff4f70: ebffff9b bl f_4de4 ffff4f74: e3500000 cmp r0, #0x0 ffff4f78: 0a000002 beq 0xffff4f88 ffff4f7c: e3a00c02 mov r0, #0x200 ffff4f80: e5870010 str r0, [r7, #0x10] ffff4f84: ea00003e b 0xffff5084 ffff4f88: e3a0a000 mov sl, #0x0 ffff4f8c: ea000010 b 0xffff4fd4 ffff4f90: e59fb11c ldr fp, =0x0007ffff ffff4f94: e597903c ldr r9, [r7, #0x3c] ffff4f98: ea000006 b 0xffff4fb8 ffff4f9c: e1b0000b movs r0, fp ffff4fa0: e24bb001 sub fp, fp, #0x1 ffff4fa4: 1a000002 bne 0xffff4fb4 ffff4fa8: e3e00000 mvn r0, #0x0 ffff4fac: e28dd084 add sp, sp, #0x84 ffff4fb0: e8bd8ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, pc} ffff4fb4: e597903c ldr r9, [r7, #0x3c] ffff4fb8: e3190004 tst r9, #0x4 ffff4fbc: 1afffff6 bne 0xffff4f9c ffff4fc0: e59f10f0 ldr r1, =0x01c0f000 ffff4fc4: e0810608 add r0, r1, r8, lsl #0xc ffff4fc8: e5900100 ldr r0, [r0, #0x100] ffff4fcc: e785010a str r0, [r5, sl, lsl #0x2] ffff4fd0: e28aa001 add sl, sl, #0x1 ffff4fd4: e15a0126 cmp sl, r6, lsr #0x2 ffff4fd8: 3affffec bcc 0xffff4f90 ffff4fdc: e3a00c02 mov r0, #0x200 ffff4fe0: e5870010 str r0, [r7, #0x10] ffff4fe4: e59fb0c8 ldr fp, =0x0007ffff ffff4fe8: e320f000 nop {0} ffff4fec: e1b0000b movs r0, fp ffff4ff0: e24bb001 sub fp, fp, #0x1 ffff4ff4: 0a000002 beq 0xffff5004 ffff4ff8: e5970038 ldr r0, [r7, #0x38] ffff4ffc: e3100008 tst r0, #0x8 ffff5000: 0afffff9 beq 0xffff4fec ffff5004: e3a00008 mov r0, #0x8 ffff5008: e5870038 str r0, [r7, #0x38] ffff500c: e35b0000 cmp fp, #0x0 ffff5010: aa000000 bge 0xffff5018 ffff5014: ea00001a b 0xffff5084 ffff5018: e594000c ldr r0, [r4, #0xc] ffff501c: e7e003d0 ubfx r0, r0, #0x7, #0x1 ffff5020: e3500000 cmp r0, #0x0 ffff5024: 0a00000c beq 0xffff505c ffff5028: e59fb08c ldr fp, =0x000fffff ffff502c: e320f000 nop {0} ffff5030: e1b0000b movs r0, fp ffff5034: e24bb001 sub fp, fp, #0x1 ffff5038: 0a000002 beq 0xffff5048 ffff503c: e5970038 ldr r0, [r7, #0x38] ffff5040: e3100901 tst r0, #0x4000 ffff5044: 0afffff9 beq 0xffff5030 ffff5048: e3a00901 mov r0, #0x4000 ffff504c: e5870038 str r0, [r7, #0x38] ffff5050: e35b0000 cmp fp, #0x0 ffff5054: aa000000 bge 0xffff505c ffff5058: ea000009 b 0xffff5084 ffff505c: e5979038 ldr r9, [r7, #0x38] ffff5060: e30a0a80 movw r0, #0xaa80 ffff5064: e1100009 tst r0, r9 ffff5068: 0a000002 beq 0xffff5078 ffff506c: e30a0a80 movw r0, #0xaa80 ffff5070: e5870038 str r0, [r7, #0x38] ffff5074: ea000002 b 0xffff5084 ffff5078: e3a00000 mov r0, #0x0 ffff507c: e58d0080 str r0, [sp, #0x80] ffff5080: e320f000 nop {0} ffff5084: e5970000 ldr r0, [r7] ffff5088: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff508c: e5870000 str r0, [r7] ffff5090: e3e00000 mvn r0, #0x0 ffff5094: e5870038 str r0, [r7, #0x38] ffff5098: e59d0080 ldr r0, [sp, #0x80] ffff509c: eaffffc2 b 0xffff4fac load_from_mmc: ffff50c0: e92d41f0 push {r4, r5, r6, r7, r8, lr} ffff50c4: e24dd038 sub sp, sp, #0x38 ffff50c8: e1a05000 mov r5, r0 ffff50cc: e3a07000 mov r7, #0x0 ffff50d0: e3e08000 mvn r8, #0x0 ffff50d4: e59f1150 ldr r1, =0x01c0f000 ffff50d8: e0817605 add r7, r1, r5, lsl #0xc ffff50dc: e1a02007 mov r2, r7 ffff50e0: e28d1008 add r1, sp, #0x8 ffff50e4: e1a00005 mov r0, r5 ffff50e8: ebfffe1a bl f_4958 ffff50ec: e3700001 cmn r0, #0x1 ffff50f0: 1a000000 bne 0xffff50f8 ffff50f4: ea000047 b 0xffff5218 ffff50f8: e3a01000 mov r1, #0x0 ffff50fc: e1a00007 mov r0, r7 ffff5100: ebfffe76 bl f_4ae0 ffff5104: e58d5004 str r5, [sp, #0x4] ffff5108: e58d7000 str r7, [sp] ffff510c: e28d3008 add r3, sp, #0x8 ffff5110: e3a02000 mov r2, #0x0 ffff5114: e3a01008 mov r1, #0x8 ffff5118: e3a00010 mov r0, #0x10 ffff511c: ebfffe2e bl f_49dc ffff5120: e3500000 cmp r0, #0x0 ffff5124: 0a00000c beq 0xffff515c ffff5128: e3a01001 mov r1, #0x1 ffff512c: e1a00007 mov r0, r7 ffff5130: ebfffe6a bl f_4ae0 ffff5134: e58d5004 str r5, [sp, #0x4] ffff5138: e58d7000 str r7, [sp] ffff513c: e28d3008 add r3, sp, #0x8 ffff5140: e3a02000 mov r2, #0x0 ffff5144: e3a01008 mov r1, #0x8 ffff5148: e3a00010 mov r0, #0x10 ffff514c: ebfffe22 bl f_49dc ffff5150: e3500000 cmp r0, #0x0 ffff5154: 0a000000 beq 0xffff515c ffff5158: ea00002e b 0xffff5218 ffff515c: e28f10cc ldr r1, =eGON_BT0 ffff5160: e3a00000 mov r0, #0x0 ffff5164: eb000435 bl f_6240 ffff5168: e3500000 cmp r0, #0x0 ffff516c: 0a000000 beq 0xffff5174 ffff5170: ea000028 b 0xffff5218 ffff5174: e3a04000 mov r4, #0x0 ffff5178: e5946010 ldr r6, [r4, #0x10] ffff517c: e3560a06 cmp r6, #0x6000 ffff5180: 8a000003 bhi 0xffff5194 ffff5184: e1a00006 mov r0, r6 ffff5188: e7df049f bfc r0, #0x9, #0x17 ffff518c: e3500000 cmp r0, #0x0 ffff5190: 0a000000 beq 0xffff5198 ffff5194: ea00001f b 0xffff5218 ffff5198: e3a01000 mov r1, #0x0 ffff519c: e1a00007 mov r0, r7 ffff51a0: ebfffe4e bl f_4ae0 ffff51a4: e1a014a6 lsr r1, r6, #0x9 ffff51a8: e58d5004 str r5, [sp, #0x4] ffff51ac: e58d7000 str r7, [sp] ffff51b0: e28d3008 add r3, sp, #0x8 ffff51b4: e3a02000 mov r2, #0x0 ffff51b8: e3a00010 mov r0, #0x10 ffff51bc: ebfffe06 bl f_49dc ffff51c0: e3500000 cmp r0, #0x0 ffff51c4: 0a00000c beq 0xffff51fc ffff51c8: e3a01001 mov r1, #0x1 ffff51cc: e1a00007 mov r0, r7 ffff51d0: ebfffe42 bl f_4ae0 ffff51d4: e1a014a6 lsr r1, r6, #0x9 ffff51d8: e58d5004 str r5, [sp, #0x4] ffff51dc: e58d7000 str r7, [sp] ffff51e0: e28d3008 add r3, sp, #0x8 ffff51e4: e3a02000 mov r2, #0x0 ffff51e8: e3a00010 mov r0, #0x10 ffff51ec: ebfffdfa bl f_49dc ffff51f0: e3500000 cmp r0, #0x0 ffff51f4: 0a000000 beq 0xffff51fc ffff51f8: ea000006 b 0xffff5218 ffff51fc: e1a01006 mov r1, r6 ffff5200: e3a00000 mov r0, #0x0 ffff5204: eb000420 bl f_628c ffff5208: e3500000 cmp r0, #0x0 ffff520c: 1a000000 bne 0xffff5214 ffff5210: e3a08000 mov r8, #0x0 ffff5214: e320f000 nop {0} ffff5218: e1a00005 mov r0, r5 ffff521c: ebfffde9 bl f_49c8 ffff5220: e1a00008 mov r0, r8 ffff5224: e28dd038 add sp, sp, #0x38 ffff5228: e8bd81f0 pop {r4, r5, r6, r7, r8, pc} eGON_BT0: "eGON.BT0",0 f_523c: ffff523c: e92d5ff0 push {r4, r5, r6, r7, r8, r9, sl, fp, ip, lr} ffff5240: e1a04000 mov r4, r0 ffff5244: e1a05001 mov r5, r1 ffff5248: e5949000 ldr r9, [r4] ffff524c: e594a018 ldr sl, [r4, #0x18] ffff5250: e1a0300a mov r3, sl ffff5254: e3a02000 mov r2, #0x0 ffff5258: e3a01001 mov r1, #0x1 ffff525c: e1a00005 mov r0, r5 ffff5260: e12fff39 blx r9 ffff5264: e1a06000 mov r6, r0 ffff5268: e3560002 cmp r6, #0x2 ffff526c: 1a000001 bne 0xffff5278 ffff5270: e3a00002 mov r0, #0x2 ffff5274: e8bd9ff0 pop {r4, r5, r6, r7, r8, r9, sl, fp, ip, pc} ffff5278: e3560003 cmp r6, #0x3 ffff527c: 1a000001 bne 0xffff5288 ffff5280: e3a00003 mov r0, #0x3 ffff5284: eafffffa b 0xffff5274 ffff5288: e28f1f6d ldr r1, =eGON_BT0 ffff528c: e3a00000 mov r0, #0x0 ffff5290: eb0003ea bl f_6240 ffff5294: e3500000 cmp r0, #0x0 ffff5298: 0a000001 beq 0xffff52a4 ffff529c: e3e00000 mvn r0, #0x0 ffff52a0: eafffff3 b 0xffff5274 ffff52a4: e3a08000 mov r8, #0x0 ffff52a8: e598b010 ldr fp, [r8, #0x10] ffff52ac: e1a0000b mov r0, fp ffff52b0: e7df069f bfc r0, #0xd, #0x13 ffff52b4: e3500000 cmp r0, #0x0 ffff52b8: 0a000001 beq 0xffff52c4 ffff52bc: e3e00000 mvn r0, #0x0 ffff52c0: eaffffeb b 0xffff5274 ffff52c4: e1a0752b lsr r7, fp, #0xa ffff52c8: e1a0300a mov r3, sl ffff52cc: e3a02000 mov r2, #0x0 ffff52d0: e1a01007 mov r1, r7 ffff52d4: e1a00005 mov r0, r5 ffff52d8: e12fff39 blx r9 ffff52dc: e1a06000 mov r6, r0 ffff52e0: e3560002 cmp r6, #0x2 ffff52e4: 1a000001 bne 0xffff52f0 ffff52e8: e3a00002 mov r0, #0x2 ffff52ec: eaffffe0 b 0xffff5274 ffff52f0: e3560003 cmp r6, #0x3 ffff52f4: 1a000001 bne 0xffff5300 ffff52f8: e3a00003 mov r0, #0x3 ffff52fc: eaffffdc b 0xffff5274 ffff5300: e1a0100b mov r1, fp ffff5304: e3a00000 mov r0, #0x0 ffff5308: eb0003df bl f_628c ffff530c: e3500000 cmp r0, #0x0 ffff5310: 1a000001 bne 0xffff531c ffff5314: e3a00000 mov r0, #0x0 ffff5318: eaffffd5 b 0xffff5274 ffff531c: e3e00000 mvn r0, #0x0 ffff5320: eaffffd3 b 0xffff5274 f_5324: ffff5324: e92d4070 push {r4, r5, r6, lr} ffff5328: e24dd028 sub sp, sp, #0x28 ffff532c: e3a04000 mov r4, #0x0 ffff5330: ea000019 b 0xffff539c ffff5334: e1a01004 mov r1, r4 ffff5338: e1a0000d mov r0, sp ffff533c: eb000043 bl f_5450 ffff5340: e1a0000d mov r0, sp ffff5344: eb000205 bl f_5b60 ffff5348: e3a06040 mov r6, #0x40 ffff534c: ea00000d b 0xffff5388 ffff5350: e1a01006 mov r1, r6 ffff5354: e1a0000d mov r0, sp ffff5358: ebffffb7 bl f_523c ffff535c: e1a05000 mov r5, r0 ffff5360: e3550000 cmp r5, #0x0 ffff5364: 1a000003 bne 0xffff5378 ffff5368: eb0001c5 bl f_5a84 ffff536c: e3a00000 mov r0, #0x0 ffff5370: e28dd028 add sp, sp, #0x28 ffff5374: e8bd8070 pop {r4, r5, r6, pc} ffff5378: e3550002 cmp r5, #0x2 ffff537c: 1a000000 bne 0xffff5384 ffff5380: ea000002 b 0xffff5390 ffff5384: e2866040 add r6, r6, #0x40 ffff5388: e3560c02 cmp r6, #0x200 ffff538c: 3affffef bcc 0xffff5350 ffff5390: e320f000 nop {0} ffff5394: eb0001ba bl f_5a84 ffff5398: e2844001 add r4, r4, #0x1 ffff539c: e354000a cmp r4, #0xa ffff53a0: 3affffe3 bcc 0xffff5334 ffff53a4: e3e00000 mvn r0, #0x0 ffff53a8: eafffff0 b 0xffff5370 f_53ac: ffff53ac: e92d4030 push {r4, r5, lr} ffff53b0: e24dd02c sub sp, sp, #0x2c ffff53b4: e3a05000 mov r5, #0x0 ffff53b8: ea000010 b 0xffff5400 ffff53bc: e1a01005 mov r1, r5 ffff53c0: e28d0004 add r0, sp, #0x4 ffff53c4: eb000021 bl f_5450 ffff53c8: e28d0004 add r0, sp, #0x4 ffff53cc: eb0001e3 bl f_5b60 ffff53d0: e3a01000 mov r1, #0x0 ffff53d4: e28d0004 add r0, sp, #0x4 ffff53d8: ebffff97 bl f_523c ffff53dc: e1a04000 mov r4, r0 ffff53e0: e3540000 cmp r4, #0x0 ffff53e4: 1a000003 bne 0xffff53f8 ffff53e8: eb0001a5 bl f_5a84 ffff53ec: e3a00000 mov r0, #0x0 ffff53f0: e28dd02c add sp, sp, #0x2c ffff53f4: e8bd8030 pop {r4, r5, pc} ffff53f8: eb0001a1 bl f_5a84 ffff53fc: e2855001 add r5, r5, #0x1 ffff5400: e355000a cmp r5, #0xa ffff5404: 3affffec bcc 0xffff53bc ffff5408: e3e00000 mvn r0, #0x0 ffff540c: eafffff7 b 0xffff53f0 load_from_nand: ffff5410: e92d4010 push {r4, lr} ffff5414: ebffffe4 bl f_53ac ffff5418: e3500000 cmp r0, #0x0 ffff541c: 1a000001 bne 0xffff5428 ffff5420: e3a00000 mov r0, #0x0 ffff5424: e8bd8010 pop {r4, pc} ffff5428: ebffffbd bl f_5324 ffff542c: e3500000 cmp r0, #0x0 ffff5430: 1a000001 bne 0xffff543c ffff5434: e3a00000 mov r0, #0x0 ffff5438: eafffff9 b 0xffff5424 ffff543c: e3e00000 mvn r0, #0x0 ffff5440: eafffff7 b 0xffff5424 f_5450: ffff5450: e92d4070 push {r4, r5, r6, lr} ffff5454: e1a05000 mov r5, r0 ffff5458: e1a04001 mov r4, r1 ffff545c: e0840104 add r0, r4, r4, lsl #0x2 ; r1 * 5 ffff5460: e59f2010 ldr r2, =d_6478 ffff5464: e0821180 add r1, r2, r0, lsl #3 ; r1 = &d_6478 + r1 * 5 * 8 = r1 * 40 ffff5468: e3a02028 mov r2, #0x28 ffff546c: e1a00005 mov r0, r5 ffff5470: eb0003d8 bl memcpy ffff5474: e8bd8070 pop {r4, r5, r6, pc} f_547c: ffff547c: e92d4010 push {r4, lr} ffff5480: e1a02000 mov r2, r0 ffff5484: e3a03000 mov r3, #0x0 ffff5488: e3a04000 mov r4, #0x0 ffff548c: ea000002 b 0xffff549c ffff5490: e3a00001 mov r0, #0x1 ffff5494: e1844310 orr r4, r4, r0, lsl r3 ffff5498: e2833001 add r3, r3, #0x1 ffff549c: e1530001 cmp r3, r1 ffff54a0: 3afffffa bcc 0xffff5490 ffff54a4: e0020004 and r0, r2, r4 ffff54a8: e8bd8010 pop {r4, pc} f_54ac: ffff54ac: e3a02000 mov r2, #0x0 ffff54b0: e59f3488 ldr r3, =0x01c02000 ffff54b4: e5832000 str r2, [r3] ffff54b8: e59f2484 ldr r2, =0x01c03030 ffff54bc: e5832304 str r2, [r3, #0x304] ffff54c0: e0032002 and r2, r3, r2 ffff54c4: e5820308 str r0, [r2, #0x308] ffff54c8: e3072f0f movw r2, #0x7f0f ffff54cc: e5832318 str r2, [r3, #0x318] ffff54d0: e1c32142 bic r2, r3, r2, asr #0x2 ffff54d4: e582130c str r1, [r2, #0x30c] ffff54d8: e59f2468 ldr r2, =0x84000423 ffff54dc: e5832300 str r2, [r3, #0x300] ffff54e0: e12fff1e bx lr int wait_dma_finished(timeout): ffff54e4: e1a01000 mov r1, r0 ffff54e8: e320f000 nop {0} ffff54ec: e59f044c ldr r0, =0x01c02000 ffff54f0: e5900300 ldr r0, [r0, #0x300] ffff54f4: e3100102 tst r0, #-0x80000000 ; 0x80000000 ffff54f8: 1a000001 bne 0xffff5504 ffff54fc: e3a00000 mov r0, #0x0 ffff5500: e12fff1e bx lr ffff5504: e2410001 sub r0, r1, #0x1 ffff5508: e1b01000 movs r1, r0 ffff550c: 1afffff6 bne 0xffff54ec ffff5510: e3a00002 mov r0, #0x2 ffff5514: eafffff9 b 0xffff5500 int nand_wait_cmd_finish(int timeout) { do { if (readl(&nfc->st) & NFC_ST_CMD_INT_FLAG) return 0; } while (--timeout); return 2; } nand_wait_cmd_finish: ffff5518: e1a01000 mov r1, r0 ffff551c: e320f000 nop {0} ffff5520: e59f0424 ldr r0, =0x01c03000 ffff5524: e5900004 ldr r0, [r0, #0x4] ; NANDC_ST ffff5528: e3100002 tst r0, #0x2 ; NFC_ST_CMD_INT_FLAG ffff552c: 0a000001 beq 0xffff5538 ffff5530: e3a00000 mov r0, #0x0 ffff5534: e12fff1e bx lr ffff5538: e2410001 sub r0, r1, #0x1 ffff553c: e1b01000 movs r1, r0 ffff5540: 1afffff6 bne 0xffff5520 ffff5544: e3a00002 mov r0, #0x2 ffff5548: eafffff9 b 0xffff5534 int nand_waid_cmd_fifo_free(int timeout) { do { if (readl(&nfc->st) & NFC_ST_CMD_FIFO_FLAG) return 0; } while(--timeout); return 2; } nand_wait_cmd_fifo_free: ffff554c: e1a01000 mov r1, r0 ffff5550: e320f000 nop {0} ffff5554: e59f03f0 ldr r0, =0x01c03000 ffff5558: e5900004 ldr r0, [r0, #0x4] ; NANDC_ST ffff555c: e3100008 tst r0, #0x8 ; NFC_ST_CMD_FIFO_FLAG ffff5560: 1a000001 bne 0xffff556c ffff5564: e3a00000 mov r0, #0x0 ffff5568: e12fff1e bx lr ffff556c: e2410001 sub r0, r1, #0x1 ffff5570: e1b01000 movs r1, r0 ffff5574: 1afffff6 bne 0xffff5554 ffff5578: e3a00002 mov r0, #0x2 ffff557c: eafffff9 b 0xffff5568 nand_wait_dma_transfer_complete(timeout_fifo,timeout_cmd,timeout_dma): ffff5580: e92d4070 push {r4, r5, r6, lr} ffff5584: e1a04000 mov r4, r0 ffff5588: e1a05001 mov r5, r1 ffff558c: e1a06002 mov r6, r2 ffff5590: e1a00004 mov r0, r4 ffff5594: ebffffec bl nand_wait_cmd_fifo_free ffff5598: e3500002 cmp r0, #0x2 ffff559c: 1a000001 bne 0xffff55a8 ffff55a0: e3a00002 mov r0, #0x2 ffff55a4: e8bd8070 pop {r4, r5, r6, pc} ffff55a8: e1a00005 mov r0, r5 ffff55ac: ebffffd9 bl nand_wait_cmd_finish ffff55b0: e3500002 cmp r0, #0x2 ffff55b4: 1a000001 bne 0xffff55c0 ffff55b8: e3a00002 mov r0, #0x2 ffff55bc: eafffff8 b 0xffff55a4 ffff55c0: e1a00006 mov r0, r6 ffff55c4: ebffffc6 bl wait_dma_finished(timeout) ffff55c8: e3500002 cmp r0, #0x2 ffff55cc: 1a000001 bne 0xffff55d8 ffff55d0: e3a00002 mov r0, #0x2 ffff55d4: eafffff2 b 0xffff55a4 ffff55d8: e3a00000 mov r0, #0x0 ffff55dc: eafffff0 b 0xffff55a4 int nand_reset_chip(void) { writel(&nfc->cmd, NAND_CMD_RESET | NFC_CMD_SEND_CMD1 | NFC_CMD_WAIT_FLAG); if (nand_wait_cmd_fifo_free(4800) == 2) return 2; if (nand_wait_cmd_finish(4920) == 2) return 2; return 0; } nand_reset_chip: ffff55e0: e92d4010 push {r4, lr} ffff55e4: e59f0364 ldr r0, =0x00c000ff CMD=0x00ff(RESET), SEND_CMD1, WAIT_FLAG RB ffff55e8: e59f135c ldr r1, =0x01c03000 ffff55ec: e5810024 str r0, [r1, #0x24] ; NFC_CMD ffff55f0: e3a00d4b mov r0, #0x12c0 ffff55f4: ebffffd4 bl nand_wait_cmd_fifo_free ffff55f8: e3500002 cmp r0, #0x2 ffff55fc: 1a000001 bne 0xffff5608 ffff5600: e3a00002 mov r0, #0x2 ffff5604: e8bd8010 pop {r4, pc} ffff5608: e3010338 movw r0, #0x1338 ffff560c: ebffffc1 bl nand_wait_cmd_finish ffff5610: e3500002 cmp r0, #0x2 ffff5614: 1a000001 bne 0xffff5620 ffff5618: e3a00002 mov r0, #0x2 ffff561c: eafffff8 b 0xffff5604 ffff5620: e3a00000 mov r0, #0x0 ffff5624: eafffff6 b 0xffff5604 nand_read_a(a,b,c): nand_read_a: ffff5628: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr} ffff562c: e1a04000 mov r4, r0 ffff5630: e1a05001 mov r5, r1 ffff5634: e1a06002 mov r6, r2 ffff5638: e59f030c ldr r0, =0x01c03000 ffff563c: e5900000 ldr r0, [r0] ffff5640: e3800901 orr r0, r0, #0x4000 ; RAM_ACCESS_MODE=DMA ffff5644: e59f1300 ldr r1, =0x01c03000 ffff5648: e5810000 str r0, [r1] ; CTL ffff564c: e3a07001 mov r7, #0x1 ffff5650: e3019318 movw r9, #0x1318 ffff5654: e3a00016 mov r0, #0x16 ffff5658: e1600087 smulbb r0, r7, r0 ffff565c: e280ad4b add sl, r0, #0x12c0 ffff5660: e59f02ec ldr r0, =0x00e00530 ffff5664: e5810028 str r0, [r1, #0x28] ; RCMD_SET = RCMD0=05, RCMD1=E0, CMD2=30 ffff5668: e3a01b01 mov r1, #0x400 ffff566c: e1a00005 mov r0, r5 ffff5670: ebffff8d bl f_54ac ffff5674: e59f02d0 ldr r0, =0x01c03000 ffff5678: e580701c str r7, [r0, #0x1c] ; SECTOR_NUM=? ffff567c: e1a00009 mov r0, r9 ffff5680: ebffffb1 bl nand_wait_cmd_fifo_free ffff5684: e3500002 cmp r0, #0x2 ffff5688: 1a000006 bne 0xffff56a8 ffff568c: e59f02ac ldr r0, =0x01c02000 ffff5690: e5900300 ldr r0, [r0, #0x300] ; 0x01c02300 DMA ffff5694: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff5698: e59f12a0 ldr r1, =0x01c02000 ffff569c: e5810300 str r0, [r1, #0x300] ffff56a0: e3a00002 mov r0, #0x2 ffff56a4: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc} ffff56a8: e1a08004 mov r8, r4 ffff56ac: e1a04008 mov r4, r8 ffff56b0: e1a00808 lsl r0, r8, #0x10 ffff56b4: e59f1290 ldr r1, =0x01c03000 ffff56b8: e5810014 str r0, [r1, #0x14] ; ADDR_LOW ffff56bc: e1a04008 mov r4, r8 ffff56c0: e1a00828 lsr r0, r8, #0x10 ffff56c4: e5810018 str r0, [r1, #0x18] ; ADDR_HIGH ffff56c8: e2860003 add r0, r6, #0x3 ffff56cc: e59f1284 ldr r1, =0x87e80000 ; PAGE_CMD, SEND_CMD2, SEQ, DATA_SWAP_METHOD, SEND_ADR, DATA_TRANS, SEND_CMD1, WAIT_FLAG, CMD1=00 ffff56d0: e1810800 orr r0, r1, r0, lsl #0x10 ; r0 = number of addres bits ffff56d4: e59f1270 ldr r1, =0x01c03000 ffff56d8: e5810024 str r0, [r1, #0x24] ; NFC_CMD ffff56dc: e1a0200a mov r2, sl ffff56e0: e1a0100a mov r1, sl ffff56e4: e1a0000a mov r0, sl ffff56e8: ebffffa4 bl nand_wait_dma_transfer_complete ffff56ec: e3500002 cmp r0, #0x2 ffff56f0: 1a000006 bne 0xffff5710 ffff56f4: e59f0244 ldr r0, =0x01c02000 ffff56f8: e5900300 ldr r0, [r0, #0x300] ; DMA ffff56fc: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff5700: e59f1238 ldr r1, =0x01c02000 ffff5704: e5810300 str r0, [r1, #0x300] ffff5708: e3a00002 mov r0, #0x2 ffff570c: eaffffe4 b 0xffff56a4 ffff5710: e59f1234 ldr r1, =0x01c03000 ffff5714: e5910038 ldr r0, [r1, #0x38] ; ECC_ST ffff5718: e1a01007 mov r1, r7 ffff571c: ebffff56 bl f_547c ffff5720: e3500000 cmp r0, #0x0 ; All sectors OK? ffff5724: 0a000006 beq 0xffff5744 ffff5728: e59f0210 ldr r0, =0x01c02000 ffff572c: e5900300 ldr r0, [r0, #0x300] ; DMA ffff5730: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff5734: e59f1204 ldr r1, =0x01c02000 ffff5738: e5810300 str r0, [r1, #0x300] ffff573c: e3a00003 mov r0, #0x3 ffff5740: eaffffd7 b 0xffff56a4 ffff5744: e59f01f4 ldr r0, =0x01c02000 ffff5748: e5900300 ldr r0, [r0, #0x300] ; DMA ffff574c: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff5750: e59f11e8 ldr r1, =0x01c02000 ffff5754: e5810300 str r0, [r1, #0x300] ffff5758: e3a00000 mov r0, #0x0 ffff575c: eaffffd0 b 0xffff56a4 f_5760: ffff5760: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr} ffff5764: e1a04000 mov r4, r0 ffff5768: e1a05001 mov r5, r1 ffff576c: e1a06002 mov r6, r2 ffff5770: e59f01d4 ldr r0, =0x01c03000 ffff5774: e5900000 ldr r0, [r0] ffff5778: e3800901 orr r0, r0, #0x4000 ffff577c: e59f11c8 ldr r1, =0x01c03000 ffff5780: e5810000 str r0, [r1] ffff5784: e3a07002 mov r7, #0x2 ffff5788: e3019318 movw r9, #0x1318 ffff578c: e3a00016 mov r0, #0x16 ffff5790: e1600087 smulbb r0, r7, r0 ffff5794: e280ad4b add sl, r0, #0x12c0 ffff5798: e59f01b4 ldr r0, =0x00e00530 ffff579c: e5810028 str r0, [r1, #0x28] ffff57a0: e3a01b01 mov r1, #0x400 ffff57a4: e1a00005 mov r0, r5 ffff57a8: ebffff3f bl f_54ac ffff57ac: e59f0198 ldr r0, =0x01c03000 ffff57b0: e580701c str r7, [r0, #0x1c] ffff57b4: e1a00009 mov r0, r9 ffff57b8: ebffff63 bl nand_wait_cmd_fifo_free ffff57bc: e3500002 cmp r0, #0x2 ffff57c0: 1a000006 bne 0xffff57e0 ffff57c4: e59f0174 ldr r0, =0x01c02000 ffff57c8: e5900300 ldr r0, [r0, #0x300] ffff57cc: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff57d0: e59f1168 ldr r1, =0x01c02000 ffff57d4: e5810300 str r0, [r1, #0x300] ffff57d8: e3a00002 mov r0, #0x2 ffff57dc: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc} ffff57e0: e1a08004 mov r8, r4 ffff57e4: e1a04008 mov r4, r8 ffff57e8: e1a00808 lsl r0, r8, #0x10 ffff57ec: e59f1158 ldr r1, =0x01c03000 ffff57f0: e5810014 str r0, [r1, #0x14] ffff57f4: e1a04008 mov r4, r8 ffff57f8: e1a00828 lsr r0, r8, #0x10 ffff57fc: e5810018 str r0, [r1, #0x18] ffff5800: e2860003 add r0, r6, #0x3 ffff5804: e59f114c ldr r1, =0x87e80000 ffff5808: e1810800 orr r0, r1, r0, lsl #0x10 ffff580c: e59f1138 ldr r1, =0x01c03000 ffff5810: e5810024 str r0, [r1, #0x24] ffff5814: e1a0200a mov r2, sl ffff5818: e1a0100a mov r1, sl ffff581c: e1a0000a mov r0, sl ffff5820: ebffff56 bl nand_wait_dma_transfer_complete ffff5824: e3500002 cmp r0, #0x2 ffff5828: 1a000006 bne 0xffff5848 ffff582c: e59f010c ldr r0, =0x01c02000 ffff5830: e5900300 ldr r0, [r0, #0x300] ffff5834: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff5838: e59f1100 ldr r1, =0x01c02000 ffff583c: e5810300 str r0, [r1, #0x300] ffff5840: e3a00002 mov r0, #0x2 ffff5844: eaffffe4 b 0xffff57dc ffff5848: e59f10fc ldr r1, =0x01c03000 ffff584c: e5910038 ldr r0, [r1, #0x38] ffff5850: e1a01007 mov r1, r7 ffff5854: ebffff08 bl f_547c ffff5858: e3500000 cmp r0, #0x0 ffff585c: 0a000006 beq 0xffff587c ffff5860: e59f00d8 ldr r0, =0x01c02000 ffff5864: e5900300 ldr r0, [r0, #0x300] ffff5868: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff586c: e59f10cc ldr r1, =0x01c02000 ffff5870: e5810300 str r0, [r1, #0x300] ffff5874: e3a00003 mov r0, #0x3 ffff5878: eaffffd7 b 0xffff57dc ffff587c: e59f00bc ldr r0, =0x01c02000 ffff5880: e5900300 ldr r0, [r0, #0x300] ffff5884: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff5888: e59f10b0 ldr r1, =0x01c02000 ffff588c: e5810300 str r0, [r1, #0x300] ffff5890: e3a00000 mov r0, #0x0 ffff5894: eaffffd0 b 0xffff57dc nand_read_a_blocks(a,b,c,d) nand_read_a_blocks: ffff5898: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr} ffff589c: e1a04000 mov r4, r0 ffff58a0: e1a05001 mov r5, r1 ffff58a4: e1a09002 mov r9, r2 ffff58a8: e1a06003 mov r6, r3 ffff58ac: e3a07000 mov r7, #0x0 ffff58b0: ea000009 b 0xffff58dc ffff58b4: e0891507 add r1, r9, r7, lsl #0xa ffff58b8: e0840007 add r0, r4, r7 ffff58bc: e1a02006 mov r2, r6 ffff58c0: ebffff58 bl nand_read_a ffff58c4: e1a08000 mov r8, r0 ffff58c8: e3580000 cmp r8, #0x0 ffff58cc: 0a000001 beq 0xffff58d8 ffff58d0: e1a00008 mov r0, r8 ffff58d4: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc} ffff58d8: e2877001 add r7, r7, #0x1 ffff58dc: e1570005 cmp r7, r5 ffff58e0: 3afffff3 bcc 0xffff58b4 ffff58e4: e3a00000 mov r0, #0x0 ffff58e8: eafffff9 b 0xffff58d4 f_58ec: ffff58ec: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr} ffff58f0: e1a04000 mov r4, r0 ffff58f4: e1a05001 mov r5, r1 ffff58f8: e1a09002 mov r9, r2 ffff58fc: e1a06003 mov r6, r3 ffff5900: e3a07000 mov r7, #0x0 ffff5904: ea000009 b 0xffff5930 ffff5908: e0891507 add r1, r9, r7, lsl #0xa ffff590c: e0840007 add r0, r4, r7 ffff5910: e1a02006 mov r2, r6 ffff5914: ebffff91 bl f_5760 ffff5918: e1a08000 mov r8, r0 ffff591c: e3580000 cmp r8, #0x0 ffff5920: 0a000001 beq 0xffff592c ffff5924: e1a00008 mov r0, r8 ffff5928: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc} ffff592c: e2877001 add r7, r7, #0x1 ffff5930: e1570005 cmp r7, r5 ffff5934: 3afffff3 bcc 0xffff5908 ffff5938: e3a00000 mov r0, #0x0 ffff593c: eafffff9 b 0xffff5928 configurePIO_PC_NAND: ffff595c: e59f0330 ldr r0, =0x22222222 ffff5960: e59f1330 ldr r1, =0x01c20000 ffff5964: e5810848 str r0, [r1, #0x848] ; PC_CFG0 ffff5968: e581084c str r0, [r1, #0x84c] ; PC_CFG1 ffff596c: e1a00240 asr r0, r0, #0x4 ffff5970: e5810850 str r0, [r1, #0x850] ; PC_CFG2 ffff5974: e3a00002 mov r0, #0x2 ffff5978: e5810854 str r0, [r1, #0x854] ; PC_CFG3 ffff597c: e59f0318 ldr r0, =0x55555555 ffff5980: e581085c str r0, [r1, #0x85c] ; PC_DRV0 ffff5984: e1a00740 asr r0, r0, #0xe ffff5988: e5810860 str r0, [r1, #0x860] ; PC_DRV1 ffff598c: e3050140 movw r0, #0x5140 ffff5990: e5810864 str r0, [r1, #0x864] ; PC_PULL0 ffff5994: e3040016 movw r0, #0x4016 ffff5998: e5810868 str r0, [r1, #0x868] ; PC_PULL1 ffff599c: e12fff1e bx lr f_59a0: ffff59a0: e92d4070 push {r4, r5, r6, lr} ffff59a4: ebffffec bl configurePIO_PC_NAND ffff59a8: e59f02e8 ldr r0, =0x01c20000 ffff59ac: e5900060 ldr r0, [r0, #0x60] ffff59b0: e3c00a02 bic r0, r0, #0x2000 ffff59b4: e59f12dc ldr r1, =0x01c20000 ffff59b8: e5810060 str r0, [r1, #0x60] ffff59bc: e1a00001 mov r0, r1 ffff59c0: e5900060 ldr r0, [r0, #0x60] ffff59c4: e3800a02 orr r0, r0, #0x2000 ffff59c8: e5810060 str r0, [r1, #0x60] ffff59cc: e1a00001 mov r0, r1 ffff59d0: e5900080 ldr r0, [r0, #0x80] ffff59d4: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff59d8: e5810080 str r0, [r1, #0x80] ffff59dc: e59f42bc ldr r4, =0x0303000f ffff59e0: e1a00001 mov r0, r1 ffff59e4: e5900080 ldr r0, [r0, #0x80] ffff59e8: e1c05004 bic r5, r0, r4 ffff59ec: e3855001 orr r5, r5, #0x1 ffff59f0: e1a00001 mov r0, r1 ffff59f4: e5805080 str r5, [r0, #0x80] ffff59f8: e5900080 ldr r0, [r0, #0x80] ffff59fc: e3800102 orr r0, r0, #-0x80000000 ; 0x80000000 ffff5a00: e5810080 str r0, [r1, #0x80] ffff5a04: e1a00001 mov r0, r1 ffff5a08: e5900060 ldr r0, [r0, #0x60] ffff5a0c: e3800040 orr r0, r0, #0x40 ffff5a10: e5810060 str r0, [r1, #0x60] ffff5a14: e3a00003 mov r0, #0x3 ffff5a18: e2411a1d sub r1, r1, #0x1d000 ffff5a1c: e5810000 str r0, [r1] ffff5a20: e3a00000 mov r0, #0x0 ffff5a24: ea000000 b 0xffff5a2c ffff5a28: e2800001 add r0, r0, #0x1 ffff5a2c: e35000f0 cmp r0, #0xf0 ffff5a30: 3afffffc bcc 0xffff5a28 ffff5a34: e8bd8070 pop {r4, r5, r6, pc} f_5a38: ffff5a38: e3a00000 mov r0, #0x0 ffff5a3c: e59f1254 ldr r1, =0x01c20000 ffff5a40: e5810848 str r0, [r1, #0x848] ; PC_CFG0 ffff5a44: e581084c str r0, [r1, #0x84c] ; PC_CFG1 ffff5a48: e5810850 str r0, [r1, #0x850] ; PC_CFG2 ffff5a4c: e5810854 str r0, [r1, #0x854] ; PC_CFG3 ffff5a50: e59f0244 ldr r0, =0x55555555 ffff5a54: e581085c str r0, [r1, #0x85c] ; PC_DRV0 ffff5a58: e1a00740 asr r0, r0, #0xe ffff5a5c: e5810860 str r0, [r1, #0x860] ; PC_DRV1 ffff5a60: e3050140 movw r0, #0x5140 ffff5a64: e5810864 str r0, [r1, #0x864] ; PC_PULL0 ffff5a68: e3040016 movw r0, #0x4016 ffff5a6c: e5810868 str r0, [r1, #0x868] ; PC_PULL1 ffff5a70: e12fff1e bx lr nand_set_boot_random_seed: ffff5a74: e59f0228 ldr r0, =0x4a800008 ; RANDOM_EN,RANDOM_SEED=0x4a80 ffff5a78: e59f1228 ldr r1, =0x01c03000 ; NAND ffff5a7c: e5810034 str r0, [r1, #0x34] ; ECC_CTL ffff5a80: e12fff1e bx lr f_5a84: ffff5a84: e92d4010 push {r4, lr} ffff5a88: ebfffff9 bl nand_set_boot_random_seed ffff5a8c: e59f0214 ldr r0, =0x01c03000 ffff5a90: e5900000 ldr r0, [r0] ffff5a94: e3c00001 bic r0, r0, #0x1 ffff5a98: e59f1208 ldr r1, =0x01c03000 ffff5a9c: e5810000 str r0, [r1] ffff5aa0: e2810a1d add r0, r1, #0x1d000 ffff5aa4: e5900080 ldr r0, [r0, #0x80] ffff5aa8: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff5aac: e2811a1d add r1, r1, #0x1d000 ffff5ab0: e5810080 str r0, [r1, #0x80] ffff5ab4: e1a00001 mov r0, r1 ffff5ab8: e5900060 ldr r0, [r0, #0x60] ffff5abc: e3c00a02 bic r0, r0, #0x2000 ffff5ac0: e5810060 str r0, [r1, #0x60] ffff5ac4: e1a00001 mov r0, r1 ffff5ac8: e5900060 ldr r0, [r0, #0x60] ffff5acc: e3c00040 bic r0, r0, #0x40 ffff5ad0: e5810060 str r0, [r1, #0x60] ffff5ad4: ebffffd7 bl f_5a38 ffff5ad8: e8bd8010 pop {r4, pc} f_5adc: ffff5adc: e92d40f0 push {r4, r5, r6, r7, lr} ffff5ae0: e3510c02 cmp r1, #0x200 ffff5ae4: 0a000003 beq 0xffff5af8 ffff5ae8: e3510b01 cmp r1, #0x400 ffff5aec: 1a000004 bne 0xffff5b04 ffff5af0: e3a03000 mov r3, #0x0 ffff5af4: ea000005 b 0xffff5b10 ffff5af8: e320f000 nop {0} ffff5afc: e3a03001 mov r3, #0x1 ffff5b00: ea000002 b 0xffff5b10 ffff5b04: e320f000 nop {0} ffff5b08: e3a03000 mov r3, #0x0 ffff5b0c: e320f000 nop {0} ffff5b10: e320f000 nop {0} ffff5b14: e3500040 cmp r0, #0x40 ffff5b18: 1a000001 bne 0xffff5b24 ffff5b1c: e3a05008 mov r5, #0x8 ffff5b20: ea000002 b 0xffff5b30 ffff5b24: e320f000 nop {0} ffff5b28: e3a05008 mov r5, #0x8 ffff5b2c: e320f000 nop {0} ffff5b30: e320f000 nop {0} ffff5b34: e59f616c ldr r6, =0x01c03000 ffff5b38: e5964034 ldr r4, [r6, #0x34] ffff5b3c: e30f6220 movw r6, #0xf220 ffff5b40: e1c44006 bic r4, r4, r6 ffff5b44: e1846605 orr r6, r4, r5, lsl #0xc ffff5b48: e1866283 orr r6, r6, r3, lsl #0x5 ffff5b4c: e3866001 orr r6, r6, #0x1 ffff5b50: e1866482 orr r6, r6, r2, lsl #0x9 ffff5b54: e59f714c ldr r7, =0x01c03000 ffff5b58: e5876034 str r6, [r7, #0x34] ffff5b5c: e8bd80f0 pop {r4, r5, r6, r7, pc} f_5b60: ffff5b60: e92d47f0 push {r4, r5, r6, r7, r8, r9, sl, lr} ffff5b64: e1a04000 mov r4, r0 ffff5b68: ebffff8c bl f_59a0 ffff5b6c: e5940008 ldr r0, [r4, #0x8] ffff5b70: e3500000 cmp r0, #0x0 ffff5b74: 0a000000 beq 0xffff5b7c ffff5b78: ebfffe98 bl nand_reset_chip ffff5b7c: e594001c ldr r0, [r4, #0x1c] ffff5b80: e5942020 ldr r2, [r4, #0x20] ffff5b84: e5941024 ldr r1, [r4, #0x24] ffff5b88: ebffffd3 bl f_5adc ffff5b8c: e59f0114 ldr r0, =0x01c03000 ffff5b90: e5900000 ldr r0, [r0] ffff5b94: e59f1110 ldr r1, =0xfff3b0fb ffff5b98: e0005001 and r5, r0, r1 ffff5b9c: e5940014 ldr r0, [r4, #0x14] ffff5ba0: e3500008 cmp r0, #0x8 ffff5ba4: 0a000010 beq 0xffff5bec ffff5ba8: ca000004 bgt 0xffff5bc0 ffff5bac: e3500002 cmp r0, #0x2 ffff5bb0: 0a000007 beq 0xffff5bd4 ffff5bb4: e3500004 cmp r0, #0x4 ffff5bb8: 1a000014 bne 0xffff5c10 ffff5bbc: ea000007 b 0xffff5be0 ffff5bc0: e3500010 cmp r0, #0x10 ffff5bc4: 0a00000b beq 0xffff5bf8 ffff5bc8: e3500020 cmp r0, #0x20 ffff5bcc: 1a00000f bne 0xffff5c10 ffff5bd0: ea00000b b 0xffff5c04 ffff5bd4: e320f000 nop {0} ffff5bd8: e3a06000 mov r6, #0x0 ffff5bdc: ea00000e b 0xffff5c1c ffff5be0: e320f000 nop {0} ffff5be4: e3a06001 mov r6, #0x1 ffff5be8: ea00000b b 0xffff5c1c ffff5bec: e320f000 nop {0} ffff5bf0: e3a06002 mov r6, #0x2 ffff5bf4: ea000008 b 0xffff5c1c ffff5bf8: e320f000 nop {0} ffff5bfc: e3a06003 mov r6, #0x3 ffff5c00: ea000005 b 0xffff5c1c ffff5c04: e320f000 nop {0} ffff5c08: e3a06004 mov r6, #0x4 ffff5c0c: ea000002 b 0xffff5c1c ffff5c10: e320f000 nop {0} ffff5c14: e3a06000 mov r6, #0x0 ffff5c18: e320f000 nop {0} ffff5c1c: e320f000 nop {0} ffff5c20: e5940004 ldr r0, [r4, #0x4] ffff5c24: e2007003 and r7, r0, #0x3 ffff5c28: e1850907 orr r0, r5, r7, lsl #0x12 ffff5c2c: e1800406 orr r0, r0, r6, lsl #0x8 ffff5c30: e3800901 orr r0, r0, #0x4000 ffff5c34: e59f106c ldr r1, =0x01c03000 ffff5c38: e5810000 str r0, [r1] ffff5c3c: e1a00001 mov r0, r1 ffff5c40: e590000c ldr r0, [r0, #0xc] ffff5c44: e3001f3f movw r1, #0xf3f ffff5c48: e1c05001 bic r5, r0, r1 ffff5c4c: e5940004 ldr r0, [r4, #0x4] ffff5c50: e3500003 cmp r0, #0x3 ffff5c54: 1a000004 bne 0xffff5c6c ffff5c58: e594000c ldr r0, [r4, #0xc] ffff5c5c: e200800f and r8, r0, #0xf ffff5c60: e5940010 ldr r0, [r4, #0x10] ffff5c64: e200903f and r9, r0, #0x3f ffff5c68: ea000001 b 0xffff5c74 ffff5c6c: e3a08000 mov r8, #0x0 ffff5c70: e3a09000 mov r9, #0x0 ffff5c74: e1850408 orr r0, r5, r8, lsl #0x8 ffff5c78: e1800009 orr r0, r0, r9 ffff5c7c: e59f1024 ldr r1, =0x01c03000 ffff5c80: e581000c str r0, [r1, #0xc] ffff5c84: e5940014 ldr r0, [r4, #0x14] ffff5c88: e1a00480 lsl r0, r0, #0x9 ffff5c8c: e58100a0 str r0, [r1, #0xa0] ffff5c90: e8bd87f0 pop {r4, r5, r6, r7, r8, r9, sl, pc} load_from_spinor: ffff5cb0: e92d41f0 push {r4, r5, r6, r7, r8, lr}; Push vars to stack ffff5cb4: eb00003c bl spinor_setup_clk ; spinor_setup_clk(); ffff5cb8: e3a04000 mov r4, #0x0 ; r4 = 0; ffff5cbc: ea000027 b 0xffff5d60 ; goto err; ffff5cc0: e1a00004 mov r0, r4 ; r0 = r4; ffff5cc4: eb00014f bl f_6208 ffff5cc8: e1a05000 mov r5, r0 ffff5ccc: e3a02001 mov r2, #0x1 ffff5cd0: e3a01000 mov r1, #0x0 ffff5cd4: e1a00001 mov r0, r1 ffff5cd8: e12fff35 blx r5 ffff5cdc: e3500002 cmp r0, #0x2 ffff5ce0: 1a000000 bne 0xffff5ce8 ffff5ce4: ea00001c b 0xffff5d5c ffff5ce8: e28f1084 ldr r1, =eGON_BT0 ffff5cec: e3a00000 mov r0, #0x0 ffff5cf0: eb000152 bl f_6240 ffff5cf4: e3500000 cmp r0, #0x0 ffff5cf8: 0a000000 beq 0xffff5d00 ffff5cfc: ea000016 b 0xffff5d5c ffff5d00: e3a07000 mov r7, #0x0 ffff5d04: e5976010 ldr r6, [r7, #0x10] ffff5d08: e1a00006 mov r0, r6 ffff5d0c: e7df049f bfc r0, #0x9, #0x17 ffff5d10: e3500000 cmp r0, #0x0 ffff5d14: 0a000000 beq 0xffff5d1c ffff5d18: ea00000f b 0xffff5d5c ffff5d1c: e1a02426 lsr r2, r6, #0x8 ffff5d20: e3a01000 mov r1, #0x0 ffff5d24: e1a00001 mov r0, r1 ffff5d28: e12fff35 blx r5 ffff5d2c: e3500002 cmp r0, #0x2 ffff5d30: 1a000000 bne 0xffff5d38 ffff5d34: ea000008 b 0xffff5d5c ffff5d38: e1a01006 mov r1, r6 ffff5d3c: e3a00000 mov r0, #0x0 ffff5d40: eb000151 bl f_628c ffff5d44: e3500000 cmp r0, #0x0 ffff5d48: 1a000002 bne 0xffff5d58 ffff5d4c: eb000035 bl f_5e28 ffff5d50: e3a00000 mov r0, #0x0 ffff5d54: e8bd81f0 pop {r4, r5, r6, r7, r8, pc} ffff5d58: e320f000 nop {0} ffff5d5c: e2844001 add r4, r4, #0x1 err: ffff5d60: e3540002 cmp r4, #0x2 ffff5d64: 3affffd5 bcc 0xffff5cc0 ffff5d68: eb00002e bl f_5e28 ffff5d6c: e3e00000 mvn r0, #0x0 ffff5d70: eafffff7 b 0xffff5d54 ffff5d74: 4e4f4765 cdpmi 7, 4, cr4, cr15, cr5, {3} ffff5d78: 3054422e subscc r4, r4, lr, lsr #0x4 ffff5d7c: 00000000 andeq r0, r0, r0 spinor_setup_pinmux: ffff5d80: e3001333 movw r1, #0x333 ; Configure Port C to SPI0_MOSI, SPI0_MISO, SPI0_CLK in r1 ffff5d84: e59f2498 ldr r2, =0x01c20000 ; load Port IO register (0x01c20800) to r2 ffff5d88: e5821848 str r1, [r2, #0x848] ; store r1 PC_CFG0 (2 * 0x24 + 0x00) ffff5d8c: e3a01203 mov r1, #0x30000000 ; Configure Port C to SPI0_CS0 in r1 ffff5d90: e5821850 str r1, [r2, #0x850] ; store r1 PC_CFG2 (2 * 0x24 + 0x08) ffff5d94: e1c21001 bic r1, r2, r1 ; load Port IO register (0x01c20800) to r1 ffff5d98: e5910868 ldr r0, [r1, #0x868] ; load PC_PULL1 into r0 ffff5d9c: e3c00903 bic r0, r0, #0xc000] ; clear SPI0_CS0 in PC_PULL1 ffff5da0: e3800901 orr r0, r0, #0x4000] ; set SPI0_CS0 as PULLDOWN ffff5da4: e5810868 str r0, [r1, #0x868] ; store PC_PULL1 ffff5da8: e12fff1e bx lr ; return void spinor_setup_pinmux(void) { int reg_val; reg_val = readl(PIO_PC_CFG0); reg_val |= SPI0_MOSI, SPI0_MISO, SPI0_CLK; writel(reg_val, PIO_PC_CFG0); reg_val = readl(PIO_PC_CFG1); reg_val |= SPI0_CS0; writel(reg_val, PIO_PC_CFG1); reg_val = readl(PIO_PC_PULL1); reg_val |= PULL_UP < SPI0_CS0; writel(reg_val, PIO_PC_PULL1); } spinor_setup_clk: ffff5dac: e92d4010 push {r4, lr} ; store load_from_spinor return point in r4 ffff5db0: e59f046c ldr r0, =0x01c20000 ; load CCM (Clock Control Module) main register into r0 ffff5db4: e5900060 ldr r0, [r0, #0x60] ; load CCM_AHB_GATING0 into r0 ffff5db8: e3800601 orr r0, r0, #0x100000 ; enable AHB SPI 0 clock gate in r0 ffff5dbc: e59f1460 ldr r1, =0x01c20000 ; load CCM main reg in r1 ffff5dc0: e5810060 str r0, [r1, #0x60] ; store CCM_AHB_GATING ffff5dc4: e1a00001 mov r0, r1 ; load CCM_AHB_GATING0 into r0 ffff5dc8: e59000a0 ldr r0, [r0, #0xa0] ; load CCM_SPI0_CLK into r0 ffff5dcc: e3800102 orr r0, r0, #-0x80000000 ; enable CCM_SPI0_GATE (with default factors, M=1; N=1; OSC24M) ffff5dd0: e58100a0 str r0, [r1, #0xa0] ; store CCM_SPIO_CLK ffff5dd4: ebffffe9 bl spinor_setup_pinmux ; configure SPI0 pinmuxing ffff5dd8: e59f0444 ldr r0, =0x01c20000 ; load CCM into r0 ffff5ddc: e5900060 ldr r0, [r0, #0x60] ; load CCM_AHB_GATING into r0 ffff5de0: e3800040 orr r0, r0, #0x40 ; enable CCM_AHB_GATE_DMA in r0 ffff5de4: e59f1438 ldr r1, =0x01c20000 ; load CCM_AHB_GATING0 into r1 ffff5de8: e5810060 str r0, [r1, #0x60] ; store CCM_AHB_GATE_DMA in CCM_AHB_GATE_DMA ffff5dec: e3010002 movw r0, #0x1002 ; set SPI0_CLK = AHB_CLK / (2 * (2 + 1)) and set SPI0_DIV_RATE to clock divide rate 2 into r0 ffff5df0: e2411a1b sub r1, r1, #0x1b000 ; subtract 0x1b000 from r1 = 0x1c05000, SPI0 Register ffff5df4: e581001c str r0, [r1, #0x1c] ; store r0 into SPI0_CCTL ffff5df8: e3000202 movw r0, #0x202 ; enable SPI0_DMA_RX_FULL and SPI0_DMA_TX_HALF ffff5dfc: e5810014 str r0, [r1, #0x14] ; store r0 in SPI0_DMACTL ffff5e00: e59f0420 ldr r0, =0x0004831f ; set SPI0_EN, SPI0_MODE_MASTER, SPI0_PHASE_CTL_SETUP, SPI0_CLK_POL_LOW, SPI0_CS_POL_LOW, SPI0_TXFIFO_RST, SPI0_RXFIFO_RST, SPI0_DISCARD_HASH_BURST, SPI0_TX_PAUSE_EN in r0 ffff5e04: e5810008 str r0, [r1, #0x8] ; store r0 in SPI0_CTL ffff5e08: e8bd8010 pop {r4, pc} ; return to load_from_spinor void spinor_setup_clk(void) { int reg_val; reg_val = readl(CCM_AHB_GATING0); reg_val |= CCM_AHB_GATE_SPI0; writel(reg_val, CCM_AHB_GATING0); reg_val = readl(CCM_SPI0_CLK); reg_val |= CCM_SPI0_GATE; writel(reg_val, CCM_SPI0_CLK); spinor_setup_pinmux(); reg_val = readl(SPI0_CCTL); reg_val |= SPIO_AHB_CLK(6) | SPI0_DIV_RATE(2); writel(reg_val, SPIO_CCTL); reg_val = readl(SPI0_DMACTL); reg_val |= SPI0_DMA_RX_FULL | SPI0_DMA_TX_HALF; writel(reg_val, SPI0_DMACTL); reg_val = readl(SPI0_CTL); reg_val |= SPI0_EN | SPI0_MODE_MASTER | SPI0_PHASE_CTL_SETUP | SPI0_CLK_POL_LOW | SPI0_CS_POL_LOW | SPI0_TXFIFO_RST | SPI0_RXFIFO_RST | SPI0_DISCARD_HASH_BURST | SPI0_TX_PAUSE_EN; writel(reg_val, SPI0_CTL); } f_5e0c: ffff5e0c: e3a00000 mov r0, #0x0 ffff5e10: e59f140c ldr r1, =0x01c20000 ffff5e14: e5810848 str r0, [r1, #0x848] ffff5e18: e5810850 str r0, [r1, #0x850] ffff5e1c: e3040016 movw r0, #0x4016 ; PC_PULL1=DEFAULT ffff5e20: e5810868 str r0, [r1, #0x868] ffff5e24: e12fff1e bx lr f_5e28: ffff5e28: e92d4010 push {r4, lr} ffff5e2c: e3a00000 mov r0, #0x0 ffff5e30: e59f13f4 ldr r1, =0x01c05000 ffff5e34: e5810014 str r0, [r1, #0x14] ffff5e38: e1c10000 bic r0, r1, r0 ffff5e3c: e5900008 ldr r0, [r0, #0x8] ffff5e40: e3c00001 bic r0, r0, #0x1 ffff5e44: e5810008 str r0, [r1, #0x8] ffff5e48: ebffffef bl f_5e0c ffff5e4c: e59f03d0 ldr r0, =0x01c20000 ffff5e50: e5900060 ldr r0, [r0, #0x60] ffff5e54: e3c00040 bic r0, r0, #0x40 ffff5e58: e59f13c4 ldr r1, =0x01c20000 ffff5e5c: e5810060 str r0, [r1, #0x60] ffff5e60: e1a00001 mov r0, r1 ffff5e64: e59000a0 ldr r0, [r0, #0xa0] ffff5e68: e3c00102 bic r0, r0, #-0x80000000 ; 0x80000000 ffff5e6c: e58100a0 str r0, [r1, #0xa0] ffff5e70: e1a00001 mov r0, r1 ffff5e74: e5900060 ldr r0, [r0, #0x60] ffff5e78: e3c00601 bic r0, r0, #0x100000 ffff5e7c: e5810060 str r0, [r1, #0x60] ffff5e80: e8bd8010 pop {r4, pc} int check_dma_1(retry): ffff5e84: e1a01000 mov r1, r0 ; r1 = r0 ffff5e88: e320f000 nop {0} ; nop ffff5e8c: e59f039c ldr r0, =0x01c02000 ; load DMA base reg into r0 ffff5e90: e5900120 ldr r0, [r0, #0x120] ; load DMA_NORM_CTRL(1) ffff5e94: e3100102 tst r0, #-0x80000000 ; test if DMA_LOAD is still running ffff5e98: 1a000001 bne 0xffff5ea4 ; DMA is still running, continue loop ffff5e9c: e3a00000 mov r0, #0x0 ; r0 = 0 ffff5ea0: e12fff1e bx lr ; return ffff5ea4: e2410001 sub r0, r1, #0x1 ; r0 = r1 - 1 ffff5ea8: e1b01000 movs r1, r0 ; r1 = r0 ffff5eac: 1afffff6 bne 0xffff5e8c ; if r1 != 0, loop ffff5eb0: e3a00002 mov r0, #0x2 ; r0 = 2 ffff5eb4: eafffff9 b 0xffff5ea0 ; return int check_dma_1(int retry) { int regval; for (;retry > 0; retry--) { regval = readl(DMA_NORM_CTRL(1)) if (regval & !DMA_LOAD) return 0; } return 2; } int check_dma_2(retry): ffff5eb8: e1a01000 mov r1, r0 ; r1 = r0 ffff5ebc: e320f000 nop {0} ; nop ffff5ec0: e59f0368 ldr r0, =0x01c02000 ; load DMA register offset into r0 ffff5ec4: e5900140 ldr r0, [r0, #0x140] ; load DMA_NORM_CTRL(2) ffff5ec8: e3100102 tst r0, #-0x80000000 ; test if DMA_LOAD is still running ffff5ecc: 1a000001 bne 0xffff5ed8 ; DMA is still running, continue loop ffff5ed0: e3a00000 mov r0, #0x0 ; r0 = 0 ffff5ed4: e12fff1e bx lr ; return ffff5ed8: e2410001 sub r0, r1, #0x1 ; r0 = r1 - 1 ffff5edc: e1b01000 movs r1, r0 ; r1 = r0 ffff5ee0: 1afffff6 bne 0xffff5ec0 ; if r1 != 0, loop ffff5ee4: e3a00002 mov r0, #0x2 ; r0 = 2 ffff5ee8: eafffff9 b 0xffff5ed4 ; return int check_dma_2(int retry) { int regval; for (;retry > 0; retry--) { regval = readl(DMA_NORM_CTRL(2)) if (regval & !DMA_LOAD) return 0; } return 2; } int wait_spi0_irq_busy(void): ffff5eec: e30f1fff movw r1, #0xffff ; r1 = 0xffff ffff5ef0: e320f000 nop {0} ; nop ffff5ef4: e1b00001 movs r0, r1 ; r0 = r1 ffff5ef8: e2411001 sub r1, r1, #0x1 ; r1 = r1 - 1 ffff5efc: 0a000003 beq 0xffff5f10 ; if r1 != 0 ffff5f00: e59f0324 ldr r0, =0x01c05000 ; load SPI0 base register into r0 ffff5f04: e5900010 ldr r0, [r0, #0x10] ; load SPI0_IRQ_STATUS register into r0 ffff5f08: e3100102 tst r0, #-0x80000000 ; test if SPI0_IRQ_STATUS | SPI_IRQ_CLEAR_BUSY ffff5f0c: 1afffff8 bne 0xffff5ef4 ; if SPI_IRQ_CLEAR_BUSY is not done, loop ffff5f10: e3510000 cmp r1, #0x0 ; if r1 = 0 ffff5f14: da000001 ble 0xffff5f20 ; if r1 < 0 return ffff5f18: e3a00000 mov r0, #0x0 ; r0 = 0 ffff5f1c: e12fff1e bx lr ; return ffff5f20: e3a00002 mov r0, #0x2 ; r0 = 2 ffff5f24: eafffffc b 0xffff5f1c ; return int wait_spi0_irq_busy(void) { int retry; int regval; for (retry = 0xffff; retry < 0; retry--) { regval = readl(SPI0_IRQ_STATUS); if (regval & !SPI_IRQ_CLEAR_BUSY) return 0; } return 2; } int wait_spi0_txfifo(int delay): ffff5f28: e1a01000 mov r1, r0 ; r1 = r0 ffff5f2c: e320f000 nop {0} ; nop ffff5f30: e59f02f4 ldr r0, =0x01c05000 ; load SPI0 base register into r0 ffff5f34: e5900010 ldr r0, [r0, #0x10] ; load SPI0_IRQ_STATUS register into r0 ffff5f38: e3100801 tst r0, #0x10000 ; test if SPI_TX_FIFO_75EMPTY is more then 75% empty ffff5f3c: 0a000001 beq 0xffff5f48 ; if empty continue ffff5f40: e3a00000 mov r0, #0x0 ; r0 = 0 ffff5f44: e12fff1e bx lr ; return ffff5f48: e2410001 sub r0, r1, #0x1 ; r0 = r1 - 1 ffff5f4c: e1b01000 movs r1, r0 ; r1 = r0 ffff5f50: 1afffff6 bne 0xffff5f30 ; loop again ffff5f54: e3a00002 mov r0, #0x2 ; r0 = 2 ffff5f58: eafffff9 b 0xffff5f44 ; return int wait_spi0_txfifo(int delay) { int regval; for (;delay > 0; delay--) { regval = readl(SPI0_IRQ_STATUS); if (regval | SPI_TX_FIFO_75EMPTY); return 0; } return 2; } f_5f5c: int spi_setup_dma(burst_cnt1, burst_cnt2, dma_src_addr, dma_dest_addr): ffff5f5c: e92d41f0 push {r4, r5, r6, r7, r8, lr} ffff5f60: e1a04000 mov r4, r0 ; r4 = r0 ffff5f64: e1a05001 mov r5, r1 ; r5 = r1 ffff5f68: e1a06002 mov r6, r2 ; r6 = r2 ffff5f6c: e1a07003 mov r7, r3 ; r7 = r3 ffff5f70: e0840005 add r0, r4, r5 ; r0 = r4 + r5 ffff5f74: e2808e96 add r8, r0, #0x960 ; r8 = r0 + 2400 ffff5f78: e0840005 add r0, r4, r5 ; r0 = r4 + r5 ffff5f7c: e59f12a8 ldr r1, =0x01c05000 ; load SPI0 base register address into r1 ffff5f80: e5810020 str r0, [r1, #0x20] ; store r0 into SPI0_BURST_CNT ffff5f84: e1a00001 mov r0, r1 ; r0 = r1 ffff5f88: e5804024 str r4, [r0, #0x24] ; store r4 in SPI0_TX_CNT ffff5f8c: e2400a03 sub r0, r0, #0x3000 ; r0 -= 0x3000; r0, =0x01c02000 ffff5f90: e5806144 str r6, [r0, #0x144] ; store r6 in DMA_NORM_SRC_ADDR(2) ffff5f94: e2810004 add r0, r1, #0x4 ; r0 = r1 + 4; r0, =0x01c05004 ffff5f98: e2411a03 sub r1, r1, #0x3000 ; r1 -= 0x3000; r1, =0x01c02000 ffff5f9c: e5810148 str r0, [r1, #0x148] ; store r0 (SPI0_TXDATA) in DMA_NORM_DEST_ADDR(2) ffff5fa0: e1c101c0 bic r0, r1, r0, asr #0x3 ; r0 = r1 &!(r0 >> 3); r0 = 0x400; ffff5fa4: e580414c str r4, [r0, #0x14c] ; store r4 in DMA_NORM_CNT(2) ffff5fa8: e59f0284 ldr r0, =0x9c380415 ; set DMA_NORM_SRC_DRQ_TYPE(SRAM), DMA_NORM_SRC_WIDTH(32), DMA_NORM_DEST_DRQ_TYPE(SPI0_TX), DMA_NORM_DEST_ADDR_NON_INCR, DMA_NORM_DEST_DATA_WIDTH(32), DMA_WAIT_STATE(3), DMA_LOAD ffff5fac: e5810140 str r0, [r1, #0x140] ; store r0 in DMA_NORM_CTRL(2) ffff5fb0: e2810a03 add r0, r1, #0x3000 ; r0 = r1 + 0x3000; r0 = 0x01c05000 ffff5fb4: e5810124 str r0, [r1, #0x124] ; store r0 in DMA_NORM_SRC_ADDR(1) ffff5fb8: e2400a03 sub r0, r0, #0x3000 ; r0 = r0 - 0x3000; r0 = 0x01c02000 ffff5fbc: e5807128 str r7, [r0, #0x128] ; store r7 in DMA_NORM_DEST_ADDR(1) ffff5fc0: e580512c str r5, [r0, #0x12c] ; store r5 in DMA_NORM_CNT(1) ffff5fc4: e59f026c ldr r0, =0x9c150438 ; set DMA_SRC_DRQ_TYPE(SPI0_RX), DMA_NORM_SRC_ADDR_NON_INCR, DMA_NORM_SRC_WIDTH(32), DMA_NORM_DEST_DRQ_TYPE(SRAM), DMA_NORM_DEST_DATA_WIDTH(32), DmA_WAIT_STATE(3), DMA_LOAD ffff5fc8: e5810120 str r0, [r1, #0x120] ; store r0 in DMA_NORM_CTRL(1) ffff5fcc: e2810a03 add r0, r1, #0x3000 ; r0 = r1 + 0x3000; r0 = 0x01c05000 ffff5fd0: e5900008 ldr r0, [r0, #0x8] ; r0 = SPI0_CTL ffff5fd4: e3800b01 orr r0, r0, #0x400 ; r0 = r0 | SPI0_XCHANGE_BURST ffff5fd8: e2811a03 add r1, r1, #0x3000 ; r1 += 0x03000; r1 = 0x01c05000 ffff5fdc: e5810008 str r0, [r1, #0x8] ; store r0 in SPI0_CTL ffff5fe0: e1a00008 mov r0, r8 ; r0 = r8 ffff5fe4: ebffffb3 bl check_dma_2() ; r0 = check_dma_2(r0) /* check_dma_2(burst_cnt1 + burst_cnt2 + 2400) */ ffff5fe8: e3500002 cmp r0, #0x2 ; test if r0 == 2 ffff5fec: 1a00000a bne 0xffff601c ; else do dma_check_2(r0) +4 (without popping stack) ffff5ff0: e59f0238 ldr r0, =0x01c02000 ; load DMA base reg into r0 ffff5ff4: e5900140 ldr r0, [r0, #0x140] ; load DMA_NORM_CTRL(2) into r0 ffff5ff8: e3c00102 bic r0, r0, #-0x80000000 ; r0 = DMA_NORM_CTRL(2) & !DMA_LOAD /* reset DMA channel 2 */ ffff5ffc: e59f122c ldr r1, =0x01c02000 ; load DMA base reg into r1 ffff6000: e5810140 str r0, [r1, #0x140] ; store r0 into DMA_NORM_CTRL(2) ffff6004: e1a00001 mov r0, r1 ; r0 = r1 ffff6008: e5900120 ldr r0, [r0, #0x120] ; load DMA_NORM_CTRL(1) into r0 ffff600c: e3c00102 bic r0, r0, #-0x80000000 ; r0 = DMA_NORM_CTRL(1) & !DMA_LOAD /* reset DMA channel 1 */ ffff6010: e5810120 str r0, [r1, #0x120] ; store r0 into DMA_NORM_CTRL(1) ffff6014: e3a00002 mov r0, #0x2 ; r0 = 2 /* dma_check_2(2) ffff6018: e8bd81f0 pop {r4, r5, r6, r7, r8, pc}; pop stack dma_check_2: ffff601c: e1a00008 mov r0, r8 ; r0 = r8 ffff6020: ebffff97 bl check_dma_1() ; r0 = check_dma_1(r0); /* check_dma_1(burst_cnt1 +burst_cnt2 + 2400) */ ffff6024: e3500002 cmp r0, #0x2 ; if r0 == 2 skip to dma_check_1 ffff6028: 1a00000a bne 0xffff6058 ; else continue ffff602c: e59f01fc ldr r0, =0x01c02000 ; load DMA base reg into r0 ffff6030: e5900140 ldr r0, [r0, #0x140] ; load DMA_NORM_CTRL(2) into r0 ffff6034: e3c00102 bic r0, r0, #-0x80000000 ; r0 = DMA_NORM_CTRL(2) & !DMA_LOAD /* reset DMA channel 2 */ ffff6038: e59f11f0 ldr r1, =0x01c02000 ; load DMA base reg into r1 ffff603c: e5810140 str r0, [r1, #0x140] ; store r0 into DMA_NORM_CTRL(2) ffff6040: e1a00001 mov r0, r1 ; r0 = r1 ffff6044: e5900120 ldr r0, [r0, #0x120] ; load DMA_NORM_CTRL(1) into r0 ffff6048: e3c00102 bic r0, r0, #-0x80000000 ; r0 = DMA_NORM_CTLR(1) & !DMA_LOAD /* reset DMA channel 1 */ ffff604c: e5810120 str r0, [r1, #0x120] ; store r0 in DMA_NORM_CTRL(1) ffff6050: e3a00002 mov r0, #0x2 ; r0 = 2 ffff6054: eaffffef b 0xffff6018 ; else go to dma_check_2(2) efff6058: e1a00008 mov r0, r8 ; r0 = r8; ffff605c: ebffffb1 bl wait_spi0_txfifo() ; r0 = wait_spi0_txfifo(r0) ffff6060: e3500002 cmp r0, #0x2 ; if r0 = 2 ffff6064: 1a00000a bne 0xffff6094 ; skip if not 2 ffff6068: e59f01c0 ldr r0, =0x01c02000 ; load DMA base reg into r0 ffff606c: e5900140 ldr r0, [r0, #0x140] ; load DMA_NORM_CTRL(2) into r0 ffff6070: e3c00102 bic r0, r0, #-0x80000000 ; r0 = DMA_NORM_CTRL(2) & !DMA_LOAD /* reset DMA channel 2 */ ffff6074: e59f11b4 ldr r1, =0x01c02000 ; load DMA base reg into r1 ffff6078: e5810140 str r0, [r1, #0x140] ; store r0 into DMA_NORM_CTRL(2) ffff607c: e1a00001 mov r0, r1 ; r0 = r1 ffff6080: e5900120 ldr r0, [r0, #0x120] ; load DMA_NORM_CTRL(1) into r0 ffff6084: e3c00102 bic r0, r0, #-0x80000000 ; r0 = DMA_NORM_CTLR(1) & !DMA_LOAD /* reset DMA channel 1 */ ffff6088: e5810120 str r0, [r1, #0x120] ; store r0 into DMA_NORM_CTRL(1) ffff608c: e3a00002 mov r0, #0x2 ; r0 = 2 ffff6090: eaffffe0 b 0xffff6018 ; restart at dma_check_2(2) ffff6094: e59f0194 ldr r0, =0x01c02000 ; load DMA base reg into r0 ffff6098: e5900140 ldr r0, [r0, #0x140] ; load DMA_NORM_CTRL(2) into r0 ffff609c: e3c00102 bic r0, r0, #-0x80000000 ; r0 = DMA_NORM_CTRL(2) & !DMA_LOAD /* reset DMA channel 2 */ ffff60a0: e59f1188 ldr r1, =0x01c02000 ; load DMA base reg into r1 ffff60a4: e5810140 str r0, [r1, #0x140] ; store r0 in DMA_NORM_CTRL(2) ffff60a8: e1a00001 mov r0, r1 ; r0 = r1 ffff60ac: e5900120 ldr r0, [r0, #0x120] ; load DMA_NORM_CTRL(1) into r0 ffff60b0: e3c00102 bic r0, r0, #-0x80000000 ; r0 = DMA_NORM_CTLR(1) & !DMA_LOAD /* reset DMA channel 1 */ ffff60b4: e5810120 str r0, [r1, #0x120] ; store r0 in DMA_NORM_CTRL(1) ffff60b8: e2810a03 add r0, r1, #0x3000 ; r0 = r1 + 0x3000; r0 = 0x01c05000 ffff60bc: e5900010 ldr r0, [r0, #0x10] ; load SPI0_IRQ_STATUS register into r0 ffff60c0: e3800801 orr r0, r0, #0x10000 ; r0 = SPI0_IRQ_STATUS | SPI_TX_DONE ffff60c4: e2811a03 add r1, r1, #0x3000 ; r1 = r1 + 0x3000; r1 = 0x01c05000 ffff60c8: e5810010 str r0, [r1, #0x10] ; store r1 in SPI0_IRQ_STATUS ffff60cc: ebffff86 bl wait_spi0_irq_busy() ; r0 = wait_spi0_irq_busy(); ffff60d0: e3500002 cmp r0, #0x2 ; if r0 = 2 ffff60d4: 1a000001 bne 0xffff60e0 ; restart at dma_check_2(0) ffff60d8: e3a00002 mov r0, #0x2 ; r0 = 2 ffff60dc: eaffffcd b 0xffff6018 ; restart at dma_check_2(2) ffff60e0: e3a00000 mov r0, #0x0 ; r0 = 0 ffff60e4: eaffffcb b 0xffff6018 ; restart at dma_check_2(0) f_60e8: ffff60e8: e92d4ff8 push {r3, r4, r5, r6, r7, r8, r9, sl, fp, lr} ffff60ec: e1a04000 mov r4, r0 ; r4 = r0 ffff60f0: e1a05001 mov r5, r1 ; r5 = r1 ffff60f4: e1a06002 mov r6, r2 ; r6 = r2 ffff60f8: e1a0b005 mov fp, r5 ; fp = r5 ffff60fc: e3a08000 mov r8, #0x0 ; r8 = 0; ffff6100: e1a07404 lsl r7, r4, #0x8 ; r7 = r4 << 8 ffff6104: e1a0a406 lsl sl, r6, #0x8 ; sl = r6 << 8 ffff6108: ea000018 b 0xffff6170 ; goto err ffff610c: e3a00003 mov r0, #0x3 ; r0 = 3 ffff6110: e5cd0000 strb r0, [sp] ; store r0 in sp ffff6114: e1a00827 lsr r0, r7, #0x10 ; r0 = r7 >> 10 ffff6118: e5cd0001 strb r0, [sp, #0x1] ; store r0 in sp +1 ffff611c: e1a00427 lsr r0, r7, #0x8 ; r0 = r7 >> 8 ffff6120: e5cd0002 strb r0, [sp, #0x2] ; store r0 in sp + 2 ffff6124: e5cd7003 strb r7, [sp, #0x3] ; store r7 in sp + 3 ffff6128: e04a0008 sub r0, sl, r8 ; r0 = sl - r8 ffff612c: e3500b02 cmp r0, #0x800 ; if (r0 = 0x800) ffff6130: 9a000001 bls 0xffff613c ; ffff6134: e3a00b02 mov r0, #0x800 ; r0 = 0x800 ffff6138: ea000000 b 0xffff6140 ; else ffff613c: e04a0008 sub r0, sl, r8 ; r0 = sl - r8 ffff6140: e1a09000 mov r9, r0 ; r9 = r0 ffff6144: e08b3008 add r3, fp, r8 ; r3 = fp + r8 ffff6148: e1a0200d mov r2, sp ; r2 = sp ffff614c: e1a01009 mov r1, r9 ; r1 = r9 ffff6150: e3a00004 mov r0, #0x4 ; r0 = 4 ffff6154: ebffff80 bl f_5f5c ffff6158: e3500002 cmp r0, #0x2 ffff615c: 1a000001 bne 0xffff6168 ffff6160: e3a00002 mov r0, #0x2 ffff6164: e8bd8ff8 pop {r3, r4, r5, r6, r7, r8, r9, sl, fp, pc} ffff6168: e0877009 add r7, r7, r9 ffff616c: e0888009 add r8, r8, r9 err: ffff6170: e158000a cmp r8, sl ffff6174: 3affffe4 bcc 0xffff610c ffff6178: e3a00000 mov r0, #0x0 ffff617c: eafffff8 b 0xffff6164 f_6180: ffff6180: e92d47fc push {r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} ffff6184: e1a04000 mov r4, r0 ffff6188: e1a05001 mov r5, r1 ffff618c: e1a06002 mov r6, r2 ffff6190: e1a09005 mov r9, r5 ffff6194: e3a00000 mov r0, #0x0 ffff6198: e58d0004 str r0, [sp, #0x4] ffff619c: e3a07000 mov r7, #0x0 ffff61a0: e3a0a000 mov sl, #0x0 ffff61a4: e1a08484 lsl r8, r4, #0x9 ffff61a8: ea000012 b 0xffff61f8 ffff61ac: e3a000e8 mov r0, #0xe8 ffff61b0: e5cd0000 strb r0, [sp] ffff61b4: e1a00828 lsr r0, r8, #0x10 ffff61b8: e5cd0001 strb r0, [sp, #0x1] ffff61bc: e1a00428 lsr r0, r8, #0x8 ffff61c0: e5cd0002 strb r0, [sp, #0x2] ffff61c4: e5cd8003 strb r8, [sp, #0x3] ffff61c8: e089300a add r3, r9, sl ffff61cc: e1a0200d mov r2, sp ffff61d0: e3a01c01 mov r1, #0x100 ffff61d4: e3a00008 mov r0, #0x8 ffff61d8: ebffff5f bl f_5f5c ffff61dc: e3500002 cmp r0, #0x2 ffff61e0: 1a000001 bne 0xffff61ec ffff61e4: e3a00002 mov r0, #0x2 ffff61e8: e8bd87fc pop {r2, r3, r4, r5, r6, r7, r8, r9, sl, pc} ffff61ec: e2877001 add r7, r7, #0x1 ffff61f0: e28aac01 add sl, sl, #0x100 ffff61f4: e2888c02 add r8, r8, #0x200 ffff61f8: e1570006 cmp r7, r6 ffff61fc: 3affffea bcc 0xffff61ac ffff6200: e3a00000 mov r0, #0x0 ffff6204: eafffff7 b 0xffff61e8 f_6208: ffff6208: e92d400c push {r2, r3, lr} ; psuh r2, r3 and lr onto the stack ffff620c: e1a01000 mov r1, r0 ; r1 = r0 ffff6210: e59f2024 ldr r2, =d_6608 ; ffff6214: e8920005 ldm r2, {r0, r2} ffff6218: e88d0005 stm sp, {r0, r2} ffff621c: e79d0101 ldr r0, [sp, r1, lsl #0x2] ffff6220: e8bd800c pop {r2, r3, pc} f_6240: ffff6240: e92d40f0 push {r4, r5, r6, r7, lr} ffff6244: e1a02000 mov r2, r0 ffff6248: e1a03002 mov r3, r2 ffff624c: e1a02003 mov r2, r3 ffff6250: e2836004 add r6, r3, #0x4 ffff6254: e3a04000 mov r4, #0x0 ffff6258: e3a05008 mov r5, #0x8 ffff625c: ea000006 b 0xffff627c ffff6260: e4d60001 ldrb r0, [r6], #0x1 ffff6264: e4d17001 ldrb r7, [r1], #0x1 ffff6268: e1500007 cmp r0, r7 ffff626c: 0a000001 beq 0xffff6278 ffff6270: e3a00001 mov r0, #0x1 ffff6274: e8bd80f0 pop {r4, r5, r6, r7, pc} ffff6278: e2844001 add r4, r4, #0x1 ffff627c: e1540005 cmp r4, r5 ffff6280: 3afffff6 bcc 0xffff6260 ffff6284: e3a00000 mov r0, #0x0 ffff6288: eafffff9 b 0xffff6274 f_628c: ffff628c: e92d40f0 push {r4, r5, r6, r7, lr} ffff6290: e1a02000 mov r2, r0 ffff6294: e1a06002 mov r6, r2 ffff6298: e1a02006 mov r2, r6 ffff629c: e596500c ldr r5, [r6, #0xc] ffff62a0: e59f00c0 ldr r0, =0x5f0a6c39 ffff62a4: e1a02006 mov r2, r6 ffff62a8: e586000c str r0, [r6, #0xc] ffff62ac: e1a04121 lsr r4, r1, #0x2 ffff62b0: e3a07000 mov r7, #0x0 ffff62b4: e1a03002 mov r3, r2 ffff62b8: e320f000 nop {0} ffff62bc: e4930004 ldr r0, [r3], #0x4 ffff62c0: e0877000 add r7, r7, r0 ffff62c4: e4930004 ldr r0, [r3], #0x4 ffff62c8: e0877000 add r7, r7, r0 ffff62cc: e4930004 ldr r0, [r3], #0x4 ffff62d0: e0877000 add r7, r7, r0 ffff62d4: e4930004 ldr r0, [r3], #0x4 ffff62d8: e0877000 add r7, r7, r0 ffff62dc: e2440004 sub r0, r4, #0x4 ffff62e0: e1a04000 mov r4, r0 ffff62e4: e3500003 cmp r0, #0x3 ffff62e8: 8afffff3 bhi 0xffff62bc ffff62ec: ea000001 b 0xffff62f8 ffff62f0: e4930004 ldr r0, [r3], #0x4 ffff62f4: e0877000 add r7, r7, r0 ffff62f8: e1b00004 movs r0, r4 ffff62fc: e2444001 sub r4, r4, #0x1 ffff6300: 1afffffa bne 0xffff62f0 ffff6304: e586500c str r5, [r6, #0xc] ffff6308: e1570005 cmp r7, r5 ffff630c: 1a000001 bne 0xffff6318 ffff6310: e3a00000 mov r0, #0x0 ffff6314: e8bd80f0 pop {r4, r5, r6, r7, pc} ffff6318: e3a00001 mov r0, #0x1 ffff631c: eafffffc b 0xffff6314 ffff6320: e92d4070 push {r4, r5, r6, lr} ffff6324: e1a04000 mov r4, r0 ffff6328: e1a05001 mov r5, r1 ffff632c: e1a06002 mov r6, r2 ffff6330: e1a01006 mov r1, r6 ffff6334: e1a00004 mov r0, r4 ffff6338: ebffffc0 bl f_6240 ffff633c: e3500000 cmp r0, #0x0 ffff6340: 1a000006 bne 0xffff6360 ffff6344: e1a01005 mov r1, r5 ffff6348: e1a00004 mov r0, r4 ffff634c: ebffffce bl f_628c ffff6350: e3500000 cmp r0, #0x0 ffff6354: 1a000001 bne 0xffff6360 ffff6358: e3a00000 mov r0, #0x0 ffff635c: e8bd8070 pop {r4, r5, r6, pc} ffff6360: e3a00001 mov r0, #0x1 ffff6364: eafffffc b 0xffff635c udelay: ffff636c: e1a01000 mov r1, r0 ffff6370: ea000000 b 0xffff6378 ffff6374: e2411001 sub r1, r1, #0x1 ffff6378: e3510000 cmp r1, #0x0 ffff637c: cafffffc bgt 0xffff6374 ffff6380: e12fff1e bx lr check_uboot: ffff6384: e92d4070 push {r4, r5, r6, lr} ffff6388: e3a05000 mov r5, #0x0 ffff638c: e3a0603c mov r6, #0x3c ffff6390: e3a04004 mov r4, #0x4 ffff6394: ea000006 b 0xffff63b4 ffff6398: e1a00006 mov r0, r6 ffff639c: ebfffff2 bl udelay ffff63a0: e3a00507 mov r0, #0x1c00000 ffff63a4: e5900024 ldr r0, [r0, #0x24] ; = 0x1c00024 FEL button? ffff63a8: e7e00450 ubfx r0, r0, #0x8, #0x1 ffff63ac: e0855000 add r5, r5, r0 ffff63b0: e2444001 sub r4, r4, #0x1 ffff63b4: e3540000 cmp r4, #0x0 ffff63b8: cafffff6 bgt 0xffff6398 ffff63bc: e3550000 cmp r5, #0x0 ffff63c0: 1a000001 bne 0xffff63cc ffff63c4: e3e00000 mvn r0, #0x0 ffff63c8: e8bd8070 pop {r4, r5, r6, pc} ffff63cc: e3a00000 mov r0, #0x0 ffff63d0: eafffffc b 0xffff63c8 ffff63d4: e12fff1e bx lr memcpy: ffff63d8: e92d41f0 push {r4, r5, r6, r7, r8, lr} ffff63dc: e2522020 subs r2, r2, #0x20 ffff63e0: 3a00000d bcc 0xffff641c ffff63e4: e3520e12 cmp r2, #0x120 ffff63e8: 3a000007 bcc 0xffff640c ffff63ec: f5d1f100 pld [r1, #0x100] ffff63f0: e8b151f8 ldm r1!, {r3, r4, r5, r6, r7, r8, ip, lr} ffff63f4: e2422040 sub r2, r2, #0x40 ffff63f8: e3520e12 cmp r2, #0x120 ffff63fc: e8a051f8 stmia r0!, {r3, r4, r5, r6, r7, r8, ip, lr} ffff6400: e8b151f8 ldm r1!, {r3, r4, r5, r6, r7, r8, ip, lr} ffff6404: e8a051f8 stmia r0!, {r3, r4, r5, r6, r7, r8, ip, lr} ffff6408: 2afffff7 bcs 0xffff63ec ffff640c: e8b151f8 ldm r1!, {r3, r4, r5, r6, r7, r8, ip, lr} ffff6410: e2522020 subs r2, r2, #0x20 ffff6414: e8a051f8 stmia r0!, {r3, r4, r5, r6, r7, r8, ip, lr} ffff6418: 2afffffb bcs 0xffff640c ffff641c: e1b0ce02 lsls ip, r2, #0x1c ffff6420: 28b15018 ldmcs r1!, {r3, r4, ip, lr} ffff6424: 28a05018 stmiacs r0!, {r3, r4, ip, lr} ffff6428: 48b10018 ldmmi r1!, {r3, r4} ffff642c: 48a00018 stmiami r0!, {r3, r4} ffff6430: e8bd41f0 pop {r4, r5, r6, r7, r8, lr} ffff6434: e1b0cf02 lsls ip, r2, #0x1e ffff6438: 24913004 ldrcs r3, [r1], #0x4 ffff643c: 24803004 strcs r3, [r0], #0x4 ffff6440: 012fff1e bxeq lr ffff6444: e1b02f82 lsls r2, r2, #0x1f ffff6448: 20d130b2 ldrhcs r3, [r1], #0x2 ffff644c: 44d12001 ldrbmi r2, [r1], #0x1 ffff6450: 20c030b2 strhcs r3, [r0], #0x2 ffff6454: 44c02001 strbmi r2, [r0], #0x1 ffff6458: e12fff1e bx lr call_r0: ffff645c: e1a0f000 mov pc, r0 d_6460: ffff6460: .l 0x00000000 ffff6464: .l 0x00000000 ffff6468: .l 0x00000001 ffff646c: .l 0x00000200 ffff6470: .l 0x00ffffff ffff6474: .l 0x000000ff d_6478: ffff6478: .l nand_read_a_blocks ffff647c: .l 0x00000000 ffff6480: .l 0x00000001 ffff6484: .l 0x00000000 ffff6488: .l 0x00000000 ffff648c: .l 0x00000002 ffff6490: .l 0x00000001 ffff6494: .l 0x00000040 ffff6498: .l 0x00000001 ffff649c: .l 0x00000400 ffff64a0: .l f_58ec ffff64a4: .l 0x00000000 ffff64a8: .l 0x00000000 ffff64ac: .l 0x00000000 ffff64b0: .l 0x00000000 ffff64b4: .l 0x00000002 ffff64b8: .l 0x00000001 ffff64bc: .l 0x00000040 ffff64c0: .l 0x00000001 ffff64c4: .l 0x00000200 ffff64c8: .l nand_read_a_blocks ffff64cc: .l 0x00000000 ffff64d0: .l 0x00000000 ffff64d4: .l 0x00000000 ffff64d8: .l 0x00000000 ffff64dc: .l 0x00000002 ffff64e0: .l 0x00000000 ffff64e4: .l 0x00000040 ffff64e8: .l 0x00000001 ffff64ec: .l 0x00000400 ffff64f0: .l f_58ec ffff64f4: .l 0x00000000 ffff64f8: .l 0x00000000 ffff64fc: .l 0x00000000 ffff6500: .l 0x00000000 ffff6504: .l 0x00000002 ffff6508: .l 0x00000000 ffff650c: .l 0x00000040 ffff6510: .l 0x00000001 ffff6514: .l 0x00000200 ffff6518: .l nand_read_a_blocks ffff651c: .l 0x00000003 ffff6520: .l 0x00000001 ffff6524: .l 0x00000001 ffff6528: .l 0x0000003f ffff652c: .l 0x00000002 ffff6530: .l 0x00000001 ffff6534: .l 0x00000040 ffff6538: .l 0x00000001 ffff653c: .l 0x00000400 ffff6540: .l nand_read_a_blocks ffff6544: .l 0x00000003 ffff6548: .l 0x00000000 ffff654c: .l 0x00000002 ffff6550: .l 0x0000003f ffff6554: .l 0x00000002 ffff6558: .l 0x00000001 ffff655c: .l 0x00000040 ffff6560: .l 0x00000001 ffff6564: .l 0x00000400 ffff6568: .l nand_read_a_blocks ffff656c: .l 0x00000003 ffff6570: .l 0x00000000 ffff6574: .l 0x00000003 ffff6578: .l 0x0000003f ffff657c: .l 0x00000002 ffff6580: .l 0x00000001 ffff6584: .l 0x00000040 ffff6588: .l 0x00000001 ffff658c: .l 0x00000400 ffff6590: .l f_58ec ffff6594: .l 0x00000003 ffff6598: .l 0x00000000 ffff659c: .l 0x00000001 ffff65a0: .l 0x0000003f ffff65a4: .l 0x00000002 ffff65a8: .l 0x00000001 ffff65ac: .l 0x00000040 ffff65b0: .l 0x00000001 ffff65b4: .l 0x00000200 ffff65b8: .l f_58ec ffff65bc: .l 0x00000003 ffff65c0: .l 0x00000000 ffff65c4: .l 0x00000002 ffff65c8: .l 0x0000003f ffff65cc: .l 0x00000002 ffff65d0: .l 0x00000001 ffff65d4: .l 0x00000040 ffff65d8: .l 0x00000001 ffff65dc: .l 0x00000200 ffff65e0: .l f_58ec ffff65e4: .l 0x00000003 ffff65e8: .l 0x00000000 ffff65ec: .l 0x00000003 ffff65f0: .l 0x0000003f ffff65f4: .l 0x00000002 ffff65f8: .l 0x00000001 ffff65fc: .l 0x00000040 ffff6600: .l 0x00000001 ffff6604: .l 0x00000200 d_6608: ffff6608: .l f_60e8 ffff660c: .l f_6180