15999 lines
277 KiB
ArmAsm
15999 lines
277 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
/* Copyright (c) 2018-2023 Rockchip Electronics Co. Ltd.
|
|
* date: 2023-04-11
|
|
*/
|
|
.arch armv7-a
|
|
.eabi_attribute 20, 1
|
|
.eabi_attribute 21, 1
|
|
.eabi_attribute 23, 3
|
|
.eabi_attribute 24, 1
|
|
.eabi_attribute 25, 1
|
|
.eabi_attribute 26, 2
|
|
.eabi_attribute 30, 4
|
|
.eabi_attribute 34, 1
|
|
.eabi_attribute 18, 2
|
|
.file "rk_sftl.c"
|
|
.text
|
|
.syntax divided
|
|
.syntax unified
|
|
.global __aeabi_uidiv
|
|
.arm
|
|
.syntax unified
|
|
.align 2
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type l2p_addr_tran, %function
|
|
l2p_addr_tran:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L3
|
|
mov r7, r1
|
|
mov r8, r2
|
|
ldrh r9, [r3, #8]
|
|
ldrh r6, [r3, #10]
|
|
ldrh r3, [r3, #14]
|
|
cmp r3, #4
|
|
lsleq r4, r6, #1
|
|
lsreq r9, r9, #1
|
|
mov r1, r9
|
|
uxtheq r6, r4
|
|
ldr r4, [r0, #4]
|
|
lsr r5, r4, #10
|
|
ubfx r0, r4, #10, #16
|
|
bl __aeabi_uidiv
|
|
uxth r0, r0
|
|
uxth r5, r5
|
|
ubfx r4, r4, #0, #10
|
|
mls r5, r0, r9, r5
|
|
mla r4, r6, r5, r4
|
|
str r4, [r7]
|
|
str r0, [r8]
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L4:
|
|
.align 2
|
|
.L3:
|
|
.word .LANCHOR0
|
|
.size l2p_addr_tran, .-l2p_addr_tran
|
|
.align 2
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type _copy_from_user, %function
|
|
_copy_from_user:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
mov r3, sp
|
|
bic ip, r3, #8128
|
|
mov r6, r0
|
|
bic ip, ip, #63
|
|
mov r4, r2
|
|
ldr r3, [ip, #8]
|
|
.syntax divided
|
|
@ 157 "./include/linux/uaccess.h" 1
|
|
.syntax unified
|
|
adds r5, r1, r2; sbcscc r5, r5, r3; movcc r3, #0
|
|
@ 0 "" 2
|
|
.arm
|
|
.syntax unified
|
|
cmp r3, #0
|
|
bne .L8
|
|
.syntax divided
|
|
@ 89 "./arch/arm/include/asm/domain.h" 1
|
|
mrc p15, 0, r7, c3, c0 @ get domain
|
|
@ 0 "" 2
|
|
.arm
|
|
.syntax unified
|
|
bic r3, r7, #12
|
|
orr r3, r3, #4
|
|
.syntax divided
|
|
@ 99 "./arch/arm/include/asm/domain.h" 1
|
|
mcr p15, 0, r3, c3, c0 @ set domain
|
|
@ 0 "" 2
|
|
@ 102 "./arch/arm/include/asm/domain.h" 1
|
|
isb
|
|
@ 0 "" 2
|
|
.arm
|
|
.syntax unified
|
|
bl arm_copy_from_user
|
|
mov r5, r0
|
|
.syntax divided
|
|
@ 99 "./arch/arm/include/asm/domain.h" 1
|
|
mcr p15, 0, r7, c3, c0 @ set domain
|
|
@ 0 "" 2
|
|
@ 102 "./arch/arm/include/asm/domain.h" 1
|
|
isb
|
|
@ 0 "" 2
|
|
.arm
|
|
.syntax unified
|
|
cmp r0, #0
|
|
beq .L5
|
|
.L6:
|
|
sub r4, r4, r5
|
|
mov r2, r5
|
|
add r0, r6, r4
|
|
mov r1, #0
|
|
bl memset
|
|
.L5:
|
|
mov r0, r5
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L8:
|
|
mov r5, r2
|
|
b .L6
|
|
.size _copy_from_user, .-_copy_from_user
|
|
.section .rodata.str1.1,"aMS",%progbits,1
|
|
.LC0:
|
|
.ascii "SFTL version: 5.0.59 20221121\000"
|
|
.LC1:
|
|
.ascii "\012%s\012\000"
|
|
.LC2:
|
|
.ascii "act blk: %x %x %x %x %x %x\012\000"
|
|
.LC3:
|
|
.ascii "buf blk: %x %x %x %x %x %x\012\000"
|
|
.LC4:
|
|
.ascii "tmp blk: %x %x %x %x %x %x\012\000"
|
|
.LC5:
|
|
.ascii "gc blk: %x %x %x %x %x %x\012\000"
|
|
.LC6:
|
|
.ascii "free blk: %x %x %x\012\000"
|
|
.text
|
|
.align 2
|
|
.global ftl_print_sblk_info
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_print_sblk_info, %function
|
|
ftl_print_sblk_info:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #20
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L13
|
|
ldr r1, .L13+4
|
|
ldr r0, .L13+8
|
|
bl sftl_printk
|
|
ldr r0, .L13+12
|
|
ldrh r1, [r4, #24]
|
|
ldr r2, [r4, #72]
|
|
lsl r3, r1, #1
|
|
ldrh r3, [r2, r3]
|
|
str r3, [sp, #8]
|
|
ldrh r3, [r4, #28]
|
|
str r3, [sp, #4]
|
|
ldrb r3, [r4, #32] @ zero_extendqisi2
|
|
ldrh r2, [r4, #26]
|
|
str r3, [sp]
|
|
ldrb r3, [r4, #30] @ zero_extendqisi2
|
|
bl sftl_printk
|
|
ldrh r1, [r4, #76]
|
|
ldr r2, [r4, #72]
|
|
ldr r0, .L13+16
|
|
lsl r3, r1, #1
|
|
ldrh r3, [r2, r3]
|
|
str r3, [sp, #8]
|
|
ldrh r3, [r4, #80]
|
|
str r3, [sp, #4]
|
|
ldrb r3, [r4, #84] @ zero_extendqisi2
|
|
ldrh r2, [r4, #78]
|
|
str r3, [sp]
|
|
ldrb r3, [r4, #82] @ zero_extendqisi2
|
|
bl sftl_printk
|
|
ldrh r1, [r4, #124]
|
|
ldr r2, [r4, #72]
|
|
ldr r0, .L13+20
|
|
lsl r3, r1, #1
|
|
ldrh r3, [r2, r3]
|
|
str r3, [sp, #8]
|
|
ldrh r3, [r4, #128]
|
|
str r3, [sp, #4]
|
|
ldrb r3, [r4, #132] @ zero_extendqisi2
|
|
ldrh r2, [r4, #126]
|
|
str r3, [sp]
|
|
ldrb r3, [r4, #130] @ zero_extendqisi2
|
|
bl sftl_printk
|
|
ldrh r1, [r4, #172]
|
|
ldr r2, [r4, #72]
|
|
ldr r0, .L13+24
|
|
lsl r3, r1, #1
|
|
ldrh r3, [r2, r3]
|
|
str r3, [sp, #8]
|
|
ldrh r3, [r4, #176]
|
|
str r3, [sp, #4]
|
|
ldrb r3, [r4, #180] @ zero_extendqisi2
|
|
ldrh r2, [r4, #174]
|
|
str r3, [sp]
|
|
ldrb r3, [r4, #178] @ zero_extendqisi2
|
|
bl sftl_printk
|
|
ldrh r3, [r4, #220]
|
|
ldrh r2, [r4, #222]
|
|
ldrh r1, [r4, #224]
|
|
ldr r0, .L13+28
|
|
bl sftl_printk
|
|
sub sp, fp, #16
|
|
ldmfd sp, {r4, fp, sp, pc}
|
|
.L14:
|
|
.align 2
|
|
.L13:
|
|
.word .LANCHOR0
|
|
.word .LC0
|
|
.word .LC1
|
|
.word .LC2
|
|
.word .LC3
|
|
.word .LC4
|
|
.word .LC5
|
|
.word .LC6
|
|
.size ftl_print_sblk_info, .-ftl_print_sblk_info
|
|
.align 2
|
|
.global Ftl_log2
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_log2, %function
|
|
Ftl_log2:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r1, #0
|
|
mov r2, #1
|
|
.L16:
|
|
uxth r3, r1
|
|
cmp r2, r0
|
|
add r1, r1, #1
|
|
bls .L17
|
|
sub r0, r3, #1
|
|
uxth r0, r0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L17:
|
|
lsl r2, r2, #1
|
|
b .L16
|
|
.size Ftl_log2, .-Ftl_log2
|
|
.align 2
|
|
.global FtlPrintInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlPrintInfo, %function
|
|
FtlPrintInfo:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size FtlPrintInfo, .-FtlPrintInfo
|
|
.align 2
|
|
.global FtlSysBlkNumInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSysBlkNumInit, %function
|
|
FtlSysBlkNumInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L20
|
|
cmp r0, #24
|
|
movcc r0, #24
|
|
ldrh r2, [r3, #232]
|
|
ldrh r1, [r3, #242]
|
|
str r0, [r3, #228]
|
|
mul r2, r0, r2
|
|
sub r0, r1, r0
|
|
ldr r1, [r3, #248]
|
|
str r2, [r3, #236]
|
|
strh r0, [r3, #240] @ movhi
|
|
sub r2, r1, r2
|
|
mov r0, #0
|
|
str r2, [r3, #244]
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L21:
|
|
.align 2
|
|
.L20:
|
|
.word .LANCHOR0
|
|
.size FtlSysBlkNumInit, .-FtlSysBlkNumInit
|
|
.global __aeabi_idiv
|
|
.align 2
|
|
.global FtlConstantsInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlConstantsInit, %function
|
|
FtlConstantsInit:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L36
|
|
mov r9, r0
|
|
ldrh r2, [r0]
|
|
movw lr, #258
|
|
add r1, r4, #256
|
|
ldrh r6, [r0, #2]
|
|
ldrh ip, [r0, #4]
|
|
ldrh r3, [r0, #6]
|
|
ldrh r0, [r0, #14]
|
|
strh r2, [r4, #252] @ movhi
|
|
cmp r0, #4
|
|
strh r6, [r4, #254] @ movhi
|
|
strh ip, [r1] @ movhi
|
|
strh r3, [r4, #242] @ movhi
|
|
strh r0, [r4, lr] @ movhi
|
|
bne .L23
|
|
lsr r3, r3, #1
|
|
strh r3, [r4, #242] @ movhi
|
|
mov r3, #8
|
|
strh r3, [r4, lr] @ movhi
|
|
.L24:
|
|
ldr r0, .L36+4
|
|
mov r3, #0
|
|
.L25:
|
|
strb r3, [r0], #1
|
|
add r3, r3, #1
|
|
cmp r3, #32
|
|
bne .L25
|
|
movw r3, #294
|
|
ldr r5, .L36+8
|
|
ldrh r7, [r4, #242]
|
|
mov r0, #0
|
|
strh r0, [r4, r3] @ movhi
|
|
mov r3, r5
|
|
ldrh r0, [r1]
|
|
cmp r2, #1
|
|
mov r8, r5
|
|
add r5, r5, #28
|
|
movne r2, #5
|
|
strh r2, [r3], #4 @ movhi
|
|
mov r2, #640
|
|
smulbb r6, r6, r0
|
|
strh r2, [r3] @ movhi
|
|
smulbb r0, r0, r7
|
|
movw r3, #298
|
|
uxth r6, r6
|
|
strh r6, [r4, #232] @ movhi
|
|
uxth r0, r0
|
|
strh r0, [r4, r3] @ movhi
|
|
bl Ftl_log2
|
|
ldrh r2, [r9, #12]
|
|
movw r3, #302
|
|
strh r0, [r5, #-20] @ movhi
|
|
strh r2, [r5, #-16] @ movhi
|
|
strh r2, [r4, r3] @ movhi
|
|
movw r3, #306
|
|
smulbb r1, r6, r2
|
|
str r2, [fp, #-52]
|
|
strh r1, [r4, r3] @ movhi
|
|
movw r3, #258
|
|
ldrh r1, [r4, r3]
|
|
str r1, [fp, #-48]
|
|
mov r0, r1
|
|
bl Ftl_log2
|
|
ldr r1, [fp, #-48]
|
|
ldr r2, [fp, #-52]
|
|
mov r10, r0
|
|
strh r0, [r8, #16]! @ movhi
|
|
movw r0, #310
|
|
lsl r3, r1, #9
|
|
uxth r3, r3
|
|
strh r3, [r4, r0] @ movhi
|
|
ldrh r0, [r9, #20]
|
|
mul r1, r2, r1
|
|
lsr r3, r3, #8
|
|
strh r3, [r5, #-8] @ movhi
|
|
movw r3, #314
|
|
strh r0, [r4, r3] @ movhi
|
|
mul r3, r7, r6
|
|
str r3, [r4, #248]
|
|
mov r0, #5120
|
|
lsl r7, r7, #6
|
|
mul r3, r1, r3
|
|
asr r3, r3, #11
|
|
str r3, [r4, #316]
|
|
bl __aeabi_idiv
|
|
cmp r0, #4
|
|
movw r2, #322
|
|
strhgt r0, [r5] @ movhi
|
|
movle r3, #4
|
|
strhle r3, [r5] @ movhi
|
|
mov r3, #640
|
|
mov r1, r6
|
|
asr r3, r3, r10
|
|
add r10, r10, #9
|
|
add r3, r3, #2
|
|
strh r3, [r4, r2] @ movhi
|
|
ldr r3, .L36+12
|
|
asr r7, r7, r10
|
|
ldrh r0, [r5]
|
|
strh r7, [r3] @ movhi
|
|
uxth r7, r7
|
|
mul r3, r7, r6
|
|
str r3, [r4, #328]
|
|
bl __aeabi_uidiv
|
|
cmp r6, #1
|
|
uxtah r7, r7, r0
|
|
addne r7, r7, #8
|
|
addeq r7, r7, #12
|
|
str r7, [r4, #228]
|
|
ldrh r0, [r4, #228]
|
|
bl FtlSysBlkNumInit
|
|
ldr r3, [r4, #228]
|
|
str r3, [r4, #332]
|
|
movw r3, #302
|
|
ldr r2, [r4, #244]
|
|
mov r0, #0
|
|
ldrh r3, [r4, r3]
|
|
str r0, [r4, #340]
|
|
mul r3, r2, r3
|
|
ldrh r2, [r8]
|
|
add r2, r2, #9
|
|
lsl r3, r3, #2
|
|
lsr r3, r3, r2
|
|
ldr r2, .L36+16
|
|
add r3, r3, #2
|
|
strh r3, [r2] @ movhi
|
|
movw r3, #338
|
|
mov r2, #32
|
|
strh r2, [r4, r3] @ movhi
|
|
ldrh r3, [r5]
|
|
add r3, r3, #3
|
|
strh r3, [r5] @ movhi
|
|
ldr r3, [r4, #328]
|
|
add r3, r3, #3
|
|
str r3, [r4, #328]
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L23:
|
|
cmp r0, #8
|
|
cmpeq ip, #1
|
|
lsreq r3, r3, #1
|
|
strheq r3, [r4, #242] @ movhi
|
|
moveq r3, #2
|
|
strheq r3, [r1] @ movhi
|
|
b .L24
|
|
.L37:
|
|
.align 2
|
|
.L36:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+260
|
|
.word .LANCHOR0+292
|
|
.word .LANCHOR0+324
|
|
.word .LANCHOR0+336
|
|
.size FtlConstantsInit, .-FtlConstantsInit
|
|
.align 2
|
|
.global IsBlkInVendorPart
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type IsBlkInVendorPart, %function
|
|
IsBlkInVendorPart:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L44
|
|
mov r1, r0
|
|
add r2, r3, #344
|
|
ldrh r0, [r2]
|
|
cmp r0, #0
|
|
ldmfdeq sp, {fp, sp, pc}
|
|
ldr r2, [r3, #348]
|
|
add r3, r3, #320
|
|
ldrh r3, [r3]
|
|
add r3, r2, r3, lsl #1
|
|
.L40:
|
|
cmp r2, r3
|
|
bne .L41
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L41:
|
|
ldrh r0, [r2], #2
|
|
cmp r1, r0
|
|
bne .L40
|
|
mov r0, #1
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L45:
|
|
.align 2
|
|
.L44:
|
|
.word .LANCHOR0
|
|
.size IsBlkInVendorPart, .-IsBlkInVendorPart
|
|
.align 2
|
|
.global FtlCacheWriteBack
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlCacheWriteBack, %function
|
|
FtlCacheWriteBack:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size FtlCacheWriteBack, .-FtlCacheWriteBack
|
|
.align 2
|
|
.global sftl_get_density
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type sftl_get_density, %function
|
|
sftl_get_density:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L48
|
|
ldr r0, [r3, #340]
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L49:
|
|
.align 2
|
|
.L48:
|
|
.word .LANCHOR0
|
|
.size sftl_get_density, .-sftl_get_density
|
|
.global __aeabi_uidivmod
|
|
.section .rodata.str1.1
|
|
.LC7:
|
|
.ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
|
|
.ascii "\000"
|
|
.text
|
|
.align 2
|
|
.global FtlBbmMapBadBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbmMapBadBlock, %function
|
|
FtlBbmMapBadBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #8
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L51
|
|
movw r3, #298
|
|
mov r5, r0
|
|
ldrh r7, [r4, r3]
|
|
mov r1, r7
|
|
bl __aeabi_uidiv
|
|
uxth r6, r0
|
|
mov r1, r7
|
|
mov r0, r5
|
|
bl __aeabi_uidivmod
|
|
add r3, r4, r6, lsl #2
|
|
ubfx r0, r1, #5, #11
|
|
and ip, r1, #31
|
|
add r4, r4, #352
|
|
mov lr, #1
|
|
ldr r3, [r3, #380]
|
|
ldr r2, [r3, r0, lsl #2]
|
|
orr r2, r2, lr, lsl ip
|
|
str r2, [r3, r0, lsl #2]
|
|
uxth r3, r1
|
|
ldr r0, .L51+4
|
|
mov r1, r5
|
|
str r2, [sp]
|
|
mov r2, r6
|
|
bl sftl_printk
|
|
ldrh r3, [r4, #6]
|
|
mov r0, #0
|
|
add r3, r3, #1
|
|
strh r3, [r4, #6] @ movhi
|
|
sub sp, fp, #28
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L52:
|
|
.align 2
|
|
.L51:
|
|
.word .LANCHOR0
|
|
.word .LC7
|
|
.size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
|
|
.align 2
|
|
.global FtlBbmIsBadBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbmIsBadBlock, %function
|
|
FtlBbmIsBadBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L54
|
|
movw r3, #298
|
|
mov r6, r0
|
|
ldrh r7, [r5, r3]
|
|
mov r1, r7
|
|
bl __aeabi_uidivmod
|
|
mov r0, r6
|
|
uxth r4, r1
|
|
mov r1, r7
|
|
bl __aeabi_uidiv
|
|
uxth r0, r0
|
|
lsr r2, r4, #5
|
|
and r4, r4, #31
|
|
add r5, r5, r0, lsl #2
|
|
ldr r3, [r5, #380]
|
|
ldr r0, [r3, r2, lsl #2]
|
|
lsr r0, r0, r4
|
|
and r0, r0, #1
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L55:
|
|
.align 2
|
|
.L54:
|
|
.word .LANCHOR0
|
|
.size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
|
|
.align 2
|
|
.global FtlBbtInfoPrint
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbtInfoPrint, %function
|
|
FtlBbtInfoPrint:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size FtlBbtInfoPrint, .-FtlBbtInfoPrint
|
|
.align 2
|
|
.global FtlBbtCalcTotleCnt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbtCalcTotleCnt, %function
|
|
FtlBbtCalcTotleCnt:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L64
|
|
movw r2, #298
|
|
mov r5, #0
|
|
mov r4, r5
|
|
ldrh r6, [r3, r2]
|
|
ldrh r3, [r3, #254]
|
|
mul r6, r3, r6
|
|
.L58:
|
|
uxth r0, r5
|
|
cmp r0, r6
|
|
blt .L60
|
|
mov r0, r4
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L60:
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
addne r4, r4, #1
|
|
add r5, r5, #1
|
|
uxthne r4, r4
|
|
b .L58
|
|
.L65:
|
|
.align 2
|
|
.L64:
|
|
.word .LANCHOR0
|
|
.size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
|
|
.align 2
|
|
.global V2P_block
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type V2P_block, %function
|
|
V2P_block:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r8, .L67
|
|
mov r4, r1
|
|
mov r6, r0
|
|
add r3, r8, #256
|
|
ldrh r7, [r3]
|
|
mov r1, r7
|
|
bl __aeabi_uidiv
|
|
movw r3, #298
|
|
smulbb r4, r7, r4
|
|
mov r1, r7
|
|
ldrh r5, [r8, r3]
|
|
smulbb r5, r5, r0
|
|
mov r0, r6
|
|
bl __aeabi_uidivmod
|
|
add r4, r4, r1
|
|
add r4, r5, r4
|
|
uxth r0, r4
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L68:
|
|
.align 2
|
|
.L67:
|
|
.word .LANCHOR0
|
|
.size V2P_block, .-V2P_block
|
|
.align 2
|
|
.global P2V_plane
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type P2V_plane, %function
|
|
P2V_plane:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L70
|
|
mov r5, r0
|
|
add r2, r3, #256
|
|
ldrh r6, [r2]
|
|
movw r2, #298
|
|
ldrh r1, [r3, r2]
|
|
bl __aeabi_uidiv
|
|
mov r1, r6
|
|
smulbb r4, r0, r6
|
|
mov r0, r5
|
|
bl __aeabi_uidivmod
|
|
add r0, r4, r1
|
|
uxth r0, r0
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L71:
|
|
.align 2
|
|
.L70:
|
|
.word .LANCHOR0
|
|
.size P2V_plane, .-P2V_plane
|
|
.align 2
|
|
.global P2V_block_in_plane
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type P2V_block_in_plane, %function
|
|
P2V_block_in_plane:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L73
|
|
movw r3, #298
|
|
ldrh r1, [r4, r3]
|
|
add r4, r4, #256
|
|
bl __aeabi_uidivmod
|
|
mov r0, r1
|
|
ldrh r1, [r4]
|
|
uxth r0, r0
|
|
bl __aeabi_uidiv
|
|
uxth r0, r0
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L74:
|
|
.align 2
|
|
.L73:
|
|
.word .LANCHOR0
|
|
.size P2V_block_in_plane, .-P2V_block_in_plane
|
|
.align 2
|
|
.global ftl_cmp_data_ver
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_cmp_data_ver, %function
|
|
ftl_cmp_data_ver:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
cmp r0, r1
|
|
bls .L76
|
|
sub r0, r0, r1
|
|
cmp r0, #-2147483648
|
|
movhi r0, #0
|
|
movls r0, #1
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L76:
|
|
sub r1, r1, r0
|
|
cmp r1, #-2147483648
|
|
movls r0, #0
|
|
movhi r0, #1
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size ftl_cmp_data_ver, .-ftl_cmp_data_ver
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueEmpty
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueEmpty, %function
|
|
FtlFreeSysBlkQueueEmpty:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L79
|
|
ldrh r0, [r3, #6]
|
|
clz r0, r0
|
|
lsr r0, r0, #5
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L80:
|
|
.align 2
|
|
.L79:
|
|
.word .LANCHOR0+412
|
|
.size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueFull
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueFull, %function
|
|
FtlFreeSysBlkQueueFull:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L82
|
|
ldrh r0, [r3, #6]
|
|
sub r0, r0, #1024
|
|
clz r0, r0
|
|
lsr r0, r0, #5
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L83:
|
|
.align 2
|
|
.L82:
|
|
.word .LANCHOR0+412
|
|
.size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
|
|
.align 2
|
|
.global FtlFreeSysBLkSort
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBLkSort, %function
|
|
FtlFreeSysBLkSort:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L93
|
|
ldrh r2, [r3, #6]
|
|
cmp r2, #0
|
|
ldmfdeq sp, {r4, r5, fp, sp, pc}
|
|
ldr r2, .L93+4
|
|
mov r0, #0
|
|
ldrh r1, [r3, #2]
|
|
mov lr, r0
|
|
ldrh ip, [r2, #28]
|
|
ldrh r2, [r3, #4]
|
|
and ip, ip, #31
|
|
.L87:
|
|
uxth r4, r0
|
|
cmp ip, r4
|
|
bhi .L88
|
|
cmp lr, #0
|
|
strhne r1, [r3, #2] @ movhi
|
|
strhne r2, [r3, #4] @ movhi
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L88:
|
|
add lr, r3, r1, lsl #1
|
|
add r1, r1, #1
|
|
add r0, r0, #1
|
|
ubfx r1, r1, #0, #10
|
|
ldrh r4, [lr, #8]
|
|
add lr, r3, r2, lsl #1
|
|
add r2, r2, #1
|
|
strh r4, [lr, #8] @ movhi
|
|
ubfx r2, r2, #0, #10
|
|
mov lr, #1
|
|
b .L87
|
|
.L94:
|
|
.align 2
|
|
.L93:
|
|
.word .LANCHOR0+412
|
|
.word .LANCHOR0+2468
|
|
.size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
|
|
.align 2
|
|
.global IsInFreeQueue
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type IsInFreeQueue, %function
|
|
IsInFreeQueue:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r1, .L101
|
|
ldrh ip, [r1, #6]
|
|
cmp ip, #1024
|
|
movne r2, #0
|
|
ldrhne lr, [r1, #2]
|
|
bne .L97
|
|
.L99:
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L98:
|
|
add r3, lr, r2
|
|
ubfx r3, r3, #0, #10
|
|
add r3, r1, r3, lsl #1
|
|
ldrh r3, [r3, #8]
|
|
cmp r3, r0
|
|
beq .L100
|
|
add r2, r2, #1
|
|
.L97:
|
|
cmp ip, r2
|
|
bhi .L98
|
|
b .L99
|
|
.L100:
|
|
mov r0, #1
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L102:
|
|
.align 2
|
|
.L101:
|
|
.word .LANCHOR0+412
|
|
.size IsInFreeQueue, .-IsInFreeQueue
|
|
.align 2
|
|
.global insert_data_list
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type insert_data_list, %function
|
|
insert_data_list:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L117
|
|
ldrh r3, [r4, #240]
|
|
cmp r3, r0
|
|
bls .L105
|
|
mov lr, #6
|
|
ldr r5, [r4, #2516]
|
|
mvn ip, #0
|
|
mul lr, lr, r0
|
|
add r1, r5, lr
|
|
strh ip, [r1, #2] @ movhi
|
|
strh ip, [r5, lr] @ movhi
|
|
ldr r2, [r4, #2520]
|
|
cmp r2, #0
|
|
streq r1, [r4, #2520]
|
|
beq .L105
|
|
ldr r8, [r4, #72]
|
|
lsl r3, r0, #1
|
|
ldr r7, [r4, #2516]
|
|
movw r10, #65535
|
|
ldrh r4, [r4, #240]
|
|
ldrh r6, [r8, r3]
|
|
ldrh r3, [r1, #4]
|
|
str r4, [fp, #-48]
|
|
mov r4, #0
|
|
cmp r3, #0
|
|
mulne ip, r3, r6
|
|
sub r3, r2, r7
|
|
ldr r6, .L117+4
|
|
asr r3, r3, #1
|
|
mul r3, r6, r3
|
|
uxth r3, r3
|
|
.L111:
|
|
sub r6, r0, r3
|
|
add r4, r4, #1
|
|
clz r6, r6
|
|
ldr r9, [fp, #-48]
|
|
uxth r4, r4
|
|
lsr r6, r6, #5
|
|
cmp r4, r9
|
|
orrhi r6, r6, #1
|
|
cmp r6, #0
|
|
bne .L105
|
|
ldrh r9, [r2, #4]
|
|
cmp r9, #0
|
|
beq .L109
|
|
lsl r6, r3, #1
|
|
ldrh r6, [r8, r6]
|
|
mul r6, r9, r6
|
|
cmp r6, ip
|
|
bcs .L109
|
|
ldrh r6, [r2]
|
|
cmp r6, r10
|
|
bne .L110
|
|
strh r3, [r1, #2] @ movhi
|
|
ldr r3, .L117
|
|
strh r0, [r2] @ movhi
|
|
str r1, [r3, #2524]
|
|
.L105:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L110:
|
|
mov r3, #6
|
|
mla r2, r3, r6, r7
|
|
mov r3, r6
|
|
b .L111
|
|
.L109:
|
|
strh r3, [r5, lr] @ movhi
|
|
ldr ip, .L117
|
|
ldrh r3, [r2, #2]
|
|
strh r3, [r1, #2] @ movhi
|
|
ldr lr, [ip, #2520]
|
|
cmp r2, lr
|
|
strheq r0, [r2, #2] @ movhi
|
|
streq r1, [ip, #2520]
|
|
ldrne r1, [ip, #2516]
|
|
movne ip, #6
|
|
mulne r3, ip, r3
|
|
strhne r0, [r1, r3] @ movhi
|
|
strhne r0, [r2, #2] @ movhi
|
|
b .L105
|
|
.L118:
|
|
.align 2
|
|
.L117:
|
|
.word .LANCHOR0
|
|
.word -1431655765
|
|
.size insert_data_list, .-insert_data_list
|
|
.section .rodata.str1.1
|
|
.LC8:
|
|
.ascii "\012!!!!! error @ func:%s - line:%d\012\000"
|
|
.text
|
|
.align 2
|
|
.global INSERT_DATA_LIST
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type INSERT_DATA_LIST, %function
|
|
INSERT_DATA_LIST:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
bl insert_data_list
|
|
ldr r2, .L121
|
|
add r1, r2, #2528
|
|
ldrh r2, [r2, #240]
|
|
ldrh r3, [r1]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
strh r3, [r1] @ movhi
|
|
cmp r2, r3
|
|
ldmfdcs sp, {fp, sp, pc}
|
|
ldr r1, .L121+4
|
|
mov r2, #214
|
|
ldr r0, .L121+8
|
|
bl sftl_printk
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L122:
|
|
.align 2
|
|
.L121:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1
|
|
.word .LC8
|
|
.size INSERT_DATA_LIST, .-INSERT_DATA_LIST
|
|
.align 2
|
|
.global insert_free_list
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type insert_free_list, %function
|
|
insert_free_list:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
movw r8, #65535
|
|
cmp r0, r8
|
|
beq .L124
|
|
ldr r1, .L131
|
|
mov r6, #6
|
|
mvn r3, #0
|
|
mul lr, r6, r0
|
|
ldr r4, [r1, #2516]
|
|
add ip, r4, lr
|
|
strh r3, [ip, #2] @ movhi
|
|
strh r3, [r4, lr] @ movhi
|
|
ldr r3, [r1, #2532]
|
|
cmp r3, #0
|
|
bne .L125
|
|
.L130:
|
|
str ip, [r1, #2532]
|
|
b .L124
|
|
.L125:
|
|
lsl r2, r0, #1
|
|
ldr r7, [r1, #2536]
|
|
ldr r5, [r1, #2516]
|
|
ldr r10, .L131+4
|
|
ldrh r9, [r7, r2]
|
|
sub r2, r3, r5
|
|
asr r2, r2, #1
|
|
mul r2, r10, r2
|
|
uxth r2, r2
|
|
.L128:
|
|
lsl r10, r2, #1
|
|
ldrh r10, [r7, r10]
|
|
cmp r10, r9
|
|
bcs .L126
|
|
ldrh r10, [r3]
|
|
cmp r10, r8
|
|
bne .L127
|
|
strh r2, [ip, #2] @ movhi
|
|
strh r0, [r3] @ movhi
|
|
.L124:
|
|
mov r0, #0
|
|
ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L127:
|
|
mla r3, r6, r10, r5
|
|
mov r2, r10
|
|
b .L128
|
|
.L126:
|
|
ldrh r5, [r3, #2]
|
|
strh r5, [ip, #2] @ movhi
|
|
strh r2, [r4, lr] @ movhi
|
|
ldr r2, [r1, #2532]
|
|
cmp r2, r3
|
|
strheq r0, [r3, #2] @ movhi
|
|
beq .L130
|
|
.L129:
|
|
ldrh r2, [r3, #2]
|
|
mov ip, #6
|
|
ldr r1, [r1, #2516]
|
|
mul r2, ip, r2
|
|
strh r0, [r1, r2] @ movhi
|
|
strh r0, [r3, #2] @ movhi
|
|
b .L124
|
|
.L132:
|
|
.align 2
|
|
.L131:
|
|
.word .LANCHOR0
|
|
.word -1431655765
|
|
.size insert_free_list, .-insert_free_list
|
|
.align 2
|
|
.global INSERT_FREE_LIST
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type INSERT_FREE_LIST, %function
|
|
INSERT_FREE_LIST:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
bl insert_free_list
|
|
ldr r2, .L135
|
|
ldrh r3, [r2, #224]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
strh r3, [r2, #224] @ movhi
|
|
ldrh r2, [r2, #240]
|
|
cmp r2, r3
|
|
ldmfdcs sp, {fp, sp, pc}
|
|
ldr r1, .L135+4
|
|
mov r2, #207
|
|
ldr r0, .L135+8
|
|
bl sftl_printk
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L136:
|
|
.align 2
|
|
.L135:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+17
|
|
.word .LC8
|
|
.size INSERT_FREE_LIST, .-INSERT_FREE_LIST
|
|
.align 2
|
|
.global List_remove_node
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type List_remove_node, %function
|
|
List_remove_node:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r8, .L148
|
|
mov r4, #6
|
|
movw r3, #65535
|
|
mov r5, r0
|
|
mul r4, r4, r1
|
|
ldr r7, [r8, #2516]
|
|
add r6, r7, r4
|
|
ldrh r2, [r6, #2]
|
|
cmp r2, r3
|
|
bne .L138
|
|
ldr r3, [r0]
|
|
cmp r6, r3
|
|
bne .L139
|
|
.L142:
|
|
ldrh r2, [r7, r4]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L146
|
|
mov r3, #0
|
|
str r3, [r5]
|
|
.L144:
|
|
mvn r3, #0
|
|
mov r0, #0
|
|
strh r3, [r7, r4] @ movhi
|
|
strh r3, [r6, #2] @ movhi
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L139:
|
|
ldr r1, .L148+4
|
|
mov r2, #372
|
|
ldr r0, .L148+8
|
|
bl sftl_printk
|
|
.L138:
|
|
ldr r3, [r5]
|
|
ldrh r1, [r7, r4]
|
|
cmp r3, r6
|
|
beq .L142
|
|
movw r2, #65535
|
|
ldrh r3, [r6, #2]
|
|
cmp r1, r2
|
|
bne .L145
|
|
cmp r3, r1
|
|
beq .L144
|
|
mov r2, #6
|
|
ldr r1, [r8, #2516]
|
|
mul r3, r2, r3
|
|
mvn r2, #0
|
|
strh r2, [r1, r3] @ movhi
|
|
b .L144
|
|
.L146:
|
|
ldr r3, [r8, #2516]
|
|
mov r1, #6
|
|
mla r3, r1, r2, r3
|
|
mvn r2, #0
|
|
str r3, [r5]
|
|
strh r2, [r3, #2] @ movhi
|
|
b .L144
|
|
.L145:
|
|
ldr r2, [r8, #2516]
|
|
mov r0, #6
|
|
mla r2, r0, r1, r2
|
|
strh r3, [r2, #2] @ movhi
|
|
mul r3, r0, r3
|
|
ldr r2, [r8, #2516]
|
|
ldrh r1, [r7, r4]
|
|
strh r1, [r2, r3] @ movhi
|
|
b .L144
|
|
.L149:
|
|
.align 2
|
|
.L148:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+34
|
|
.word .LC8
|
|
.size List_remove_node, .-List_remove_node
|
|
.align 2
|
|
.global List_pop_index_node
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type List_pop_index_node, %function
|
|
List_pop_index_node:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, [r0]
|
|
cmp r3, #0
|
|
beq .L155
|
|
ldr r2, .L159
|
|
movw ip, #65535
|
|
mov lr, #6
|
|
ldr r4, [r2, #2516]
|
|
.L152:
|
|
cmp r1, #0
|
|
beq .L153
|
|
ldrh r2, [r3]
|
|
cmp r2, ip
|
|
bne .L154
|
|
.L153:
|
|
sub r4, r3, r4
|
|
ldr r3, .L159+4
|
|
asr r4, r4, #1
|
|
mul r4, r3, r4
|
|
uxth r1, r4
|
|
bl List_remove_node
|
|
uxth r0, r4
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L154:
|
|
sub r1, r1, #1
|
|
mla r3, lr, r2, r4
|
|
uxth r1, r1
|
|
b .L152
|
|
.L155:
|
|
movw r0, #65535
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L160:
|
|
.align 2
|
|
.L159:
|
|
.word .LANCHOR0
|
|
.word -1431655765
|
|
.size List_pop_index_node, .-List_pop_index_node
|
|
.align 2
|
|
.global List_pop_head_node
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type List_pop_head_node, %function
|
|
List_pop_head_node:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r1, #0
|
|
bl List_pop_index_node
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size List_pop_head_node, .-List_pop_head_node
|
|
.align 2
|
|
.global List_get_gc_head_node
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type List_get_gc_head_node, %function
|
|
List_get_gc_head_node:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r2, .L168
|
|
ldr r3, [r2, #2520]
|
|
cmp r3, #0
|
|
movwne r1, #65535
|
|
movne lr, #6
|
|
ldrne ip, [r2, #2516]
|
|
bne .L164
|
|
.L167:
|
|
movw r0, #65535
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L166:
|
|
sub r2, r0, #1
|
|
mla r3, lr, r3, ip
|
|
uxth r0, r2
|
|
.L164:
|
|
cmp r0, #0
|
|
beq .L165
|
|
ldrh r3, [r3]
|
|
cmp r3, r1
|
|
bne .L166
|
|
b .L167
|
|
.L165:
|
|
sub r0, r3, ip
|
|
ldr r3, .L168+4
|
|
asr r0, r0, #1
|
|
mul r0, r3, r0
|
|
uxth r0, r0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L169:
|
|
.align 2
|
|
.L168:
|
|
.word .LANCHOR0
|
|
.word -1431655765
|
|
.size List_get_gc_head_node, .-List_get_gc_head_node
|
|
.align 2
|
|
.global List_update_data_list
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type List_update_data_list, %function
|
|
List_update_data_list:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L181
|
|
mov r4, r0
|
|
ldrh r3, [r5, #24]
|
|
cmp r3, r0
|
|
beq .L172
|
|
ldrh r3, [r5, #76]
|
|
cmp r3, r0
|
|
beq .L172
|
|
ldrh r3, [r5, #124]
|
|
cmp r3, r0
|
|
beq .L172
|
|
mov r7, #6
|
|
ldr r9, [r5, #2516]
|
|
ldr r3, [r5, #2520]
|
|
mul r7, r7, r0
|
|
add r8, r9, r7
|
|
cmp r8, r3
|
|
beq .L172
|
|
ldr r2, [r5, #72]
|
|
lsl r3, r0, #1
|
|
ldrh r6, [r2, r3]
|
|
movw r2, #65535
|
|
ldrh r3, [r8, #4]
|
|
cmp r3, #0
|
|
mvneq r6, #0
|
|
mulne r6, r3, r6
|
|
ldrh r3, [r8, #2]
|
|
cmp r3, r2
|
|
bne .L175
|
|
ldrh r2, [r9, r7]
|
|
cmp r2, r3
|
|
bne .L175
|
|
ldr r1, .L181+4
|
|
movw r2, #463
|
|
ldr r0, .L181+8
|
|
bl sftl_printk
|
|
.L175:
|
|
ldrh r3, [r8, #2]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
bne .L176
|
|
ldrh r2, [r9, r7]
|
|
cmp r2, r3
|
|
beq .L172
|
|
.L176:
|
|
mov r2, #6
|
|
ldr r1, .L181+12
|
|
mul r3, r2, r3
|
|
asr r2, r3, #1
|
|
mul r2, r1, r2
|
|
ldr r1, [r5, #72]
|
|
lsl r2, r2, #1
|
|
ldrh r2, [r1, r2]
|
|
ldr r1, [r5, #2516]
|
|
add r3, r1, r3
|
|
ldrh r3, [r3, #4]
|
|
cmp r3, #0
|
|
mvneq r3, #0
|
|
mulne r3, r3, r2
|
|
cmp r6, r3
|
|
bcs .L172
|
|
ldr r5, .L181+16
|
|
mov r1, r4
|
|
ldr r0, .L181+20
|
|
bl List_remove_node
|
|
ldrh r3, [r5]
|
|
cmp r3, #0
|
|
bne .L178
|
|
ldr r1, .L181+4
|
|
movw r2, #474
|
|
ldr r0, .L181+8
|
|
bl sftl_printk
|
|
.L178:
|
|
ldrh r3, [r5]
|
|
mov r0, r4
|
|
sub r3, r3, #1
|
|
strh r3, [r5] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
.L172:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L182:
|
|
.align 2
|
|
.L181:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+51
|
|
.word .LC8
|
|
.word -1431655765
|
|
.word .LANCHOR0+2528
|
|
.word .LANCHOR0+2520
|
|
.size List_update_data_list, .-List_update_data_list
|
|
.align 2
|
|
.global select_l2p_ram_region
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type select_l2p_ram_region, %function
|
|
select_l2p_ram_region:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L193
|
|
movw r2, #338
|
|
mov r1, #0
|
|
mov ip, #12
|
|
movw lr, #65535
|
|
ldrh r2, [r3, r2]
|
|
ldr r3, [r3, #2540]
|
|
sub r0, r3, #12
|
|
.L184:
|
|
uxth r4, r1
|
|
cmp r2, r4
|
|
bhi .L186
|
|
mov r4, r2
|
|
add r5, r3, #4
|
|
mov r1, #0
|
|
mov r0, #-2147483648
|
|
mov r6, #12
|
|
.L187:
|
|
uxth lr, r1
|
|
cmp r2, lr
|
|
bhi .L189
|
|
cmp r2, r4
|
|
bhi .L185
|
|
ldr r1, .L193+4
|
|
mov r4, r2
|
|
mvn r0, #0
|
|
ldrh r5, [r1]
|
|
mov r1, #0
|
|
.L190:
|
|
uxth ip, r1
|
|
cmp r2, ip
|
|
bhi .L192
|
|
cmp r2, r4
|
|
bhi .L185
|
|
ldr r1, .L193+8
|
|
mov r2, #796
|
|
ldr r0, .L193+12
|
|
bl sftl_printk
|
|
b .L185
|
|
.L186:
|
|
add r1, r1, #1
|
|
mul r5, ip, r1
|
|
ldrh r5, [r0, r5]
|
|
cmp r5, lr
|
|
bne .L184
|
|
.L185:
|
|
mov r0, r4
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L189:
|
|
mul ip, r6, r1
|
|
add r1, r1, #1
|
|
ldr ip, [r5, ip]
|
|
mvn r7, ip
|
|
cmp ip, r0
|
|
lsr r7, r7, #31
|
|
movcs r7, #0
|
|
cmp r7, #0
|
|
movne r0, ip
|
|
movne r4, lr
|
|
b .L187
|
|
.L192:
|
|
ldr lr, [r3, #4]
|
|
cmp lr, r0
|
|
bcs .L191
|
|
ldrh r6, [r3]
|
|
cmp r6, r5
|
|
movne r0, lr
|
|
movne r4, ip
|
|
.L191:
|
|
add r1, r1, #1
|
|
add r3, r3, #12
|
|
b .L190
|
|
.L194:
|
|
.align 2
|
|
.L193:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2544
|
|
.word .LANCHOR1+73
|
|
.word .LC8
|
|
.size select_l2p_ram_region, .-select_l2p_ram_region
|
|
.align 2
|
|
.global FtlUpdateVaildLpn
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlUpdateVaildLpn, %function
|
|
FtlUpdateVaildLpn:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L201
|
|
movw r1, #2546
|
|
ldrh r2, [r3, r1]
|
|
cmp r2, #4
|
|
cmpls r0, #0
|
|
bne .L196
|
|
add r2, r2, #1
|
|
strh r2, [r3, r1] @ movhi
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L196:
|
|
mov r2, #0
|
|
strh r2, [r3, r1] @ movhi
|
|
str r2, [r3, #2548]
|
|
movw lr, #65535
|
|
ldr r2, [r3, #72]
|
|
ldrh r1, [r3, #240]
|
|
add r1, r2, r1, lsl #1
|
|
.L197:
|
|
cmp r2, r1
|
|
ldmfdeq sp, {fp, sp, pc}
|
|
ldrh ip, [r2], #2
|
|
cmp ip, lr
|
|
ldrne r0, [r3, #2548]
|
|
addne r0, r0, ip
|
|
strne r0, [r3, #2548]
|
|
b .L197
|
|
.L202:
|
|
.align 2
|
|
.L201:
|
|
.word .LANCHOR0
|
|
.size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
|
|
.align 2
|
|
.global ftl_sb_update_avl_pages
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_sb_update_avl_pages, %function
|
|
ftl_sb_update_avl_pages:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L211
|
|
add ip, r2, #8
|
|
mov r3, #0
|
|
movw r5, #65535
|
|
add ip, r0, ip, lsl #1
|
|
strh r3, [r0, #4] @ movhi
|
|
ldrh lr, [r4, #232]
|
|
.L204:
|
|
cmp lr, r2
|
|
bhi .L206
|
|
movw r3, #302
|
|
add ip, r0, #16
|
|
mov r2, #0
|
|
ldrh r3, [r4, r3]
|
|
movw r4, #65535
|
|
sub r3, r3, r1
|
|
sub r3, r3, #1
|
|
sxth r3, r3
|
|
.L207:
|
|
uxth r1, r2
|
|
cmp lr, r1
|
|
ldmfdls sp, {r4, r5, fp, sp, pc}
|
|
ldrh r1, [ip], #2
|
|
add r2, r2, #1
|
|
cmp r1, r4
|
|
ldrhne r1, [r0, #4]
|
|
addne r1, r3, r1
|
|
strhne r1, [r0, #4] @ movhi
|
|
b .L207
|
|
.L206:
|
|
ldrh r3, [ip], #2
|
|
add r2, r2, #1
|
|
cmp r3, r5
|
|
uxth r2, r2
|
|
ldrhne r3, [r0, #4]
|
|
addne r3, r3, #1
|
|
strhne r3, [r0, #4] @ movhi
|
|
b .L204
|
|
.L212:
|
|
.align 2
|
|
.L211:
|
|
.word .LANCHOR0
|
|
.size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
|
|
.align 2
|
|
.global FtlSlcSuperblockCheck
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSlcSuperblockCheck, %function
|
|
FtlSlcSuperblockCheck:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldrh r3, [r0, #4]
|
|
cmp r3, #0
|
|
ldmfdeq sp, {fp, sp, pc}
|
|
ldrh r3, [r0]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
ldmfdeq sp, {fp, sp, pc}
|
|
ldrb r3, [r0, #6] @ zero_extendqisi2
|
|
mov ip, #0
|
|
ldr r1, .L219
|
|
add r3, r0, r3, lsl #1
|
|
ldrh r1, [r1, #232]
|
|
ldrh r3, [r3, #16]
|
|
.L216:
|
|
cmp r3, r2
|
|
ldmfdne sp, {fp, sp, pc}
|
|
ldrb r3, [r0, #6] @ zero_extendqisi2
|
|
add r3, r3, #1
|
|
uxtb r3, r3
|
|
strb r3, [r0, #6]
|
|
cmp r3, r1
|
|
strbeq ip, [r0, #6]
|
|
ldrheq r3, [r0, #2]
|
|
addeq r3, r3, #1
|
|
strheq r3, [r0, #2] @ movhi
|
|
ldrb r3, [r0, #6] @ zero_extendqisi2
|
|
add r3, r0, r3, lsl #1
|
|
ldrh r3, [r3, #16]
|
|
b .L216
|
|
.L220:
|
|
.align 2
|
|
.L219:
|
|
.word .LANCHOR0
|
|
.size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
|
|
.align 2
|
|
.global make_superblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type make_superblock, %function
|
|
make_superblock:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r7, .L227
|
|
mov r4, r0
|
|
ldrh r2, [r0]
|
|
ldrh r3, [r7, #240]
|
|
cmp r2, r3
|
|
bcc .L222
|
|
ldr r1, .L227+4
|
|
movw r2, #2157
|
|
ldr r0, .L227+8
|
|
bl sftl_printk
|
|
.L222:
|
|
ldrh r6, [r7, #232]
|
|
mov r3, #0
|
|
strh r3, [r4, #4] @ movhi
|
|
add r5, r4, #16
|
|
strb r3, [r4, #7]
|
|
mvn r9, #0
|
|
add r6, r4, r6, lsl #1
|
|
ldr r3, .L227+12
|
|
add r6, r6, #16
|
|
.L223:
|
|
ldrh r1, [r4]
|
|
cmp r6, r5
|
|
ldrb r8, [r4, #7] @ zero_extendqisi2
|
|
bne .L225
|
|
movw r3, #302
|
|
lsl r1, r1, #1
|
|
mov r0, #0
|
|
ldrh r3, [r7, r3]
|
|
smulbb r8, r3, r8
|
|
mov r3, #0
|
|
strb r3, [r4, #9]
|
|
ldr r3, [r7, #2536]
|
|
strh r8, [r4, #4] @ movhi
|
|
ldrh r2, [r3, r1]
|
|
movw r3, #10000
|
|
cmp r2, r3
|
|
movhi r3, #1
|
|
strbhi r3, [r4, #9]
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L225:
|
|
ldrb r0, [r3], #1 @ zero_extendqisi2
|
|
add r5, r5, #2
|
|
str r3, [fp, #-48]
|
|
bl V2P_block
|
|
strh r9, [r5, #-2] @ movhi
|
|
mov r10, r0
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
addeq r8, r8, #1
|
|
strheq r10, [r5, #-2] @ movhi
|
|
ldr r3, [fp, #-48]
|
|
strbeq r8, [r4, #7]
|
|
b .L223
|
|
.L228:
|
|
.align 2
|
|
.L227:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+95
|
|
.word .LC8
|
|
.word .LANCHOR0+260
|
|
.size make_superblock, .-make_superblock
|
|
.align 2
|
|
.global update_multiplier_value
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type update_multiplier_value, %function
|
|
update_multiplier_value:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r6, .L237
|
|
movw r3, #302
|
|
mov r7, #0
|
|
mov r5, r0
|
|
add r8, r6, #260
|
|
mov r4, r7
|
|
ldrh r9, [r6, #232]
|
|
ldrh r10, [r6, r3]
|
|
.L230:
|
|
uxth r3, r7
|
|
cmp r9, r3
|
|
bhi .L232
|
|
cmp r4, #0
|
|
beq .L233
|
|
mov r1, r4
|
|
mov r0, #32768
|
|
bl __aeabi_idiv
|
|
uxth r4, r0
|
|
.L233:
|
|
ldr r0, [r6, #2516]
|
|
mov r3, #6
|
|
mla r5, r3, r5, r0
|
|
mov r0, #0
|
|
strh r4, [r5, #4] @ movhi
|
|
ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L232:
|
|
mov r1, r5
|
|
ldrb r0, [r8], #1 @ zero_extendqisi2
|
|
bl V2P_block
|
|
add r7, r7, #1
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
addeq r4, r10, r4
|
|
uxtheq r4, r4
|
|
b .L230
|
|
.L238:
|
|
.align 2
|
|
.L237:
|
|
.word .LANCHOR0
|
|
.size update_multiplier_value, .-update_multiplier_value
|
|
.align 2
|
|
.global GetFreeBlockMinEraseCount
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type GetFreeBlockMinEraseCount, %function
|
|
GetFreeBlockMinEraseCount:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r2, .L242
|
|
ldr r0, [r2, #2532]
|
|
cmp r0, #0
|
|
ldmfdeq sp, {fp, sp, pc}
|
|
ldr r3, [r2, #2516]
|
|
ldr r2, [r2, #2536]
|
|
sub r3, r0, r3
|
|
ldr r0, .L242+4
|
|
asr r3, r3, #1
|
|
mul r3, r0, r3
|
|
uxth r3, r3
|
|
lsl r3, r3, #1
|
|
ldrh r0, [r2, r3]
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L243:
|
|
.align 2
|
|
.L242:
|
|
.word .LANCHOR0
|
|
.word -1431655765
|
|
.size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
|
|
.align 2
|
|
.global GetFreeBlockMaxEraseCount
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type GetFreeBlockMaxEraseCount, %function
|
|
GetFreeBlockMaxEraseCount:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r1, .L251
|
|
mov r2, r0
|
|
ldr r0, [r1, #2532]
|
|
cmp r0, #0
|
|
ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
ldrh r3, [r1, #224]
|
|
mov r5, #6
|
|
ldr lr, [r1, #2516]
|
|
movw r6, #65535
|
|
rsb r3, r3, r3, lsl #3
|
|
asr ip, r3, #3
|
|
cmp r2, r3, asr #3
|
|
sub r3, r0, lr
|
|
ldr r0, .L251+4
|
|
uxthgt r2, ip
|
|
mov ip, #0
|
|
asr r3, r3, #1
|
|
mul r3, r0, r3
|
|
uxth r3, r3
|
|
.L247:
|
|
uxth r4, ip
|
|
mov r0, r3
|
|
cmp r4, r2
|
|
bcs .L248
|
|
mul r3, r5, r3
|
|
add ip, ip, #1
|
|
ldrh r3, [lr, r3]
|
|
cmp r3, r6
|
|
bne .L247
|
|
.L248:
|
|
ldr r2, [r1, #2536]
|
|
lsl r3, r0, #1
|
|
ldrh r0, [r2, r3]
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L252:
|
|
.align 2
|
|
.L251:
|
|
.word .LANCHOR0
|
|
.word -1431655765
|
|
.size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
|
|
.section .rodata.str1.1
|
|
.LC9:
|
|
.ascii "FLASH INFO:\012\000"
|
|
.LC10:
|
|
.ascii "Device Capacity: %d MB\012\000"
|
|
.LC11:
|
|
.ascii "FTL INFO:\012\000"
|
|
.LC12:
|
|
.ascii "g_MaxLpn = 0x%x\012\000"
|
|
.LC13:
|
|
.ascii "g_VaildLpn = 0x%x\012\000"
|
|
.LC14:
|
|
.ascii "read_page_count = 0x%x\012\000"
|
|
.LC15:
|
|
.ascii "discard_page_count = 0x%x\012\000"
|
|
.LC16:
|
|
.ascii "write_page_count = 0x%x\012\000"
|
|
.LC17:
|
|
.ascii "cache_write_count = 0x%x\012\000"
|
|
.LC18:
|
|
.ascii "l2p_write_count = 0x%x\012\000"
|
|
.LC19:
|
|
.ascii "gc_page_count = 0x%x\012\000"
|
|
.LC20:
|
|
.ascii "totle_write = %d MB\012\000"
|
|
.LC21:
|
|
.ascii "totle_read = %d MB\012\000"
|
|
.LC22:
|
|
.ascii "GSV = 0x%x\012\000"
|
|
.LC23:
|
|
.ascii "GDV = 0x%x\012\000"
|
|
.LC24:
|
|
.ascii "bad blk num = %d\012\000"
|
|
.LC25:
|
|
.ascii "free_superblocks = 0x%x\012\000"
|
|
.LC26:
|
|
.ascii "mlc_EC = 0x%x\012\000"
|
|
.LC27:
|
|
.ascii "slc_EC = 0x%x\012\000"
|
|
.LC28:
|
|
.ascii "avg_EC = 0x%x\012\000"
|
|
.LC29:
|
|
.ascii "sys_EC = 0x%x\012\000"
|
|
.LC30:
|
|
.ascii "max_EC = 0x%x\012\000"
|
|
.LC31:
|
|
.ascii "min_EC = 0x%x\012\000"
|
|
.LC32:
|
|
.ascii "PLT = 0x%x\012\000"
|
|
.LC33:
|
|
.ascii "POT = 0x%x\012\000"
|
|
.LC34:
|
|
.ascii "MaxSector = 0x%x\012\000"
|
|
.LC35:
|
|
.ascii "init_sys_blks_pp = 0x%x\012\000"
|
|
.LC36:
|
|
.ascii "sys_blks_pp = 0x%x\012\000"
|
|
.LC37:
|
|
.ascii "free sysblock = 0x%x\012\000"
|
|
.LC38:
|
|
.ascii "data_blks_pp = 0x%x\012\000"
|
|
.LC39:
|
|
.ascii "data_op_blks_pp = 0x%x\012\000"
|
|
.LC40:
|
|
.ascii "max_data_blks = 0x%x\012\000"
|
|
.LC41:
|
|
.ascii "Sys.id = 0x%x\012\000"
|
|
.LC42:
|
|
.ascii "Bbt.id = 0x%x\012\000"
|
|
.LC43:
|
|
.ascii "ACT.page = 0x%x\012\000"
|
|
.LC44:
|
|
.ascii "ACT.plane = 0x%x\012\000"
|
|
.LC45:
|
|
.ascii "ACT.id = 0x%x\012\000"
|
|
.LC46:
|
|
.ascii "ACT.mode = 0x%x\012\000"
|
|
.LC47:
|
|
.ascii "ACT.a_pages = 0x%x\012\000"
|
|
.LC48:
|
|
.ascii "ACT VPC = 0x%x\012\000"
|
|
.LC49:
|
|
.ascii "BUF.page = 0x%x\012\000"
|
|
.LC50:
|
|
.ascii "BUF.plane = 0x%x\012\000"
|
|
.LC51:
|
|
.ascii "BUF.id = 0x%x\012\000"
|
|
.LC52:
|
|
.ascii "BUF.mode = 0x%x\012\000"
|
|
.LC53:
|
|
.ascii "BUF.a_pages = 0x%x\012\000"
|
|
.LC54:
|
|
.ascii "BUF VPC = 0x%x\012\000"
|
|
.LC55:
|
|
.ascii "TMP.page = 0x%x\012\000"
|
|
.LC56:
|
|
.ascii "TMP.plane = 0x%x\012\000"
|
|
.LC57:
|
|
.ascii "TMP.id = 0x%x\012\000"
|
|
.LC58:
|
|
.ascii "TMP.mode = 0x%x\012\000"
|
|
.LC59:
|
|
.ascii "TMP.a_pages = 0x%x\012\000"
|
|
.LC60:
|
|
.ascii "GC.page = 0x%x\012\000"
|
|
.LC61:
|
|
.ascii "GC.plane = 0x%x\012\000"
|
|
.LC62:
|
|
.ascii "GC.id = 0x%x\012\000"
|
|
.LC63:
|
|
.ascii "GC.mode = 0x%x\012\000"
|
|
.LC64:
|
|
.ascii "GC.a_pages = 0x%x\012\000"
|
|
.LC65:
|
|
.ascii "WR_CHK = %x %x %x\012\000"
|
|
.LC66:
|
|
.ascii "Read Err Cnt = 0x%x\012\000"
|
|
.LC67:
|
|
.ascii "Prog Err Cnt = 0x%x\012\000"
|
|
.LC68:
|
|
.ascii "gc_free_blk_th= 0x%x\012\000"
|
|
.LC69:
|
|
.ascii "gc_merge_free_blk_th= 0x%x\012\000"
|
|
.LC70:
|
|
.ascii "gc_skip_write_count= 0x%x\012\000"
|
|
.LC71:
|
|
.ascii "gc_blk_index= 0x%x\012\000"
|
|
.LC72:
|
|
.ascii "free min EC= 0x%x\012\000"
|
|
.LC73:
|
|
.ascii "free max EC= 0x%x\012\000"
|
|
.LC74:
|
|
.ascii "GC__SB VPC = 0x%x\012\000"
|
|
.LC75:
|
|
.ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000"
|
|
.LC76:
|
|
.ascii "free %d. [0x%x] 0x%x 0x%x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlPrintInfo2buf
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlPrintInfo2buf, %function
|
|
FtlPrintInfo2buf:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #20
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r6, .L265
|
|
mov r7, r0
|
|
ldr r1, .L265+4
|
|
add r5, r7, #12
|
|
bl strcpy
|
|
ldr r2, .L265+8
|
|
mov r0, r5
|
|
mov r1, #64
|
|
ldr r3, [r6, #316]
|
|
add r8, r6, #352
|
|
bl snprintf
|
|
add r5, r5, r0
|
|
ldr r1, .L265+12
|
|
mov r0, r5
|
|
add r5, r5, #10
|
|
bl strcpy
|
|
ldr r3, [r6, #2552]
|
|
mov r0, r5
|
|
ldr r2, .L265+16
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r5, r5, r0
|
|
ldr r3, [r6, #2548]
|
|
mov r0, r5
|
|
ldr r2, .L265+20
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r5, r5, r0
|
|
ldr r3, [r6, #2556]
|
|
mov r0, r5
|
|
ldr r2, .L265+24
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r5, r5, r0
|
|
ldr r3, [r6, #2560]
|
|
mov r0, r5
|
|
ldr r2, .L265+28
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r5, r5, r0
|
|
ldr r3, [r6, #2564]
|
|
mov r0, r5
|
|
ldr r2, .L265+32
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r5, r5, r0
|
|
ldr r3, [r6, #2568]
|
|
mov r0, r5
|
|
ldr r2, .L265+36
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r5, r5, r0
|
|
ldr r3, [r6, #2572]
|
|
mov r0, r5
|
|
ldr r2, .L265+40
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r5, r5, r0
|
|
ldr r3, [r6, #2576]
|
|
mov r0, r5
|
|
ldr r2, .L265+44
|
|
mov r1, #64
|
|
bl snprintf
|
|
ldr r3, [r6, #2580]
|
|
add r5, r5, r0
|
|
ldr r2, .L265+48
|
|
mov r0, r5
|
|
mov r1, #64
|
|
lsr r3, r3, #11
|
|
bl snprintf
|
|
ldr r3, [r6, #2584]
|
|
add r5, r5, r0
|
|
ldr r2, .L265+52
|
|
mov r0, r5
|
|
mov r1, #64
|
|
lsr r3, r3, #11
|
|
bl snprintf
|
|
add r4, r5, r0
|
|
ldr r3, [r6, #2588]
|
|
mov r0, r4
|
|
ldr r2, .L265+56
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #2592]
|
|
mov r0, r4
|
|
ldr r2, .L265+60
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r8, #6]
|
|
mov r0, r4
|
|
ldr r2, .L265+64
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #224]
|
|
mov r0, r4
|
|
ldr r2, .L265+68
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #2596]
|
|
mov r0, r4
|
|
ldr r2, .L265+72
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #2600]
|
|
mov r0, r4
|
|
ldr r2, .L265+76
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #2604]
|
|
mov r0, r4
|
|
ldr r2, .L265+80
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #2608]
|
|
mov r0, r4
|
|
ldr r2, .L265+84
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #2612]
|
|
mov r0, r4
|
|
ldr r2, .L265+88
|
|
mov r1, #64
|
|
ldr r5, .L265+92
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #2616]
|
|
ldr r2, .L265+96
|
|
mov r0, r4
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r5, #30]
|
|
mov r0, r4
|
|
ldr r2, .L265+100
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r5, #28]
|
|
mov r0, r4
|
|
ldr r2, .L265+104
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #340]
|
|
mov r0, r4
|
|
ldr r2, .L265+108
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #332]
|
|
mov r0, r4
|
|
ldr r2, .L265+112
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #228]
|
|
mov r0, r4
|
|
ldr r2, .L265+116
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r3, r6, #412
|
|
add r4, r4, r0
|
|
ldr r2, .L265+120
|
|
mov r0, r4
|
|
mov r1, #64
|
|
ldrh r3, [r3, #6]
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #240]
|
|
mov r0, r4
|
|
ldr r2, .L265+124
|
|
mov r1, #64
|
|
bl snprintf
|
|
movw r3, #2620
|
|
add r4, r4, r0
|
|
ldr r2, .L265+128
|
|
ldrh r3, [r6, r3]
|
|
mov r0, r4
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #244]
|
|
mov r0, r4
|
|
ldr r2, .L265+132
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r3, r6, #2624
|
|
add r4, r4, r0
|
|
ldr r2, .L265+136
|
|
mov r0, r4
|
|
mov r1, #64
|
|
ldrh r3, [r3]
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r8]
|
|
mov r0, r4
|
|
ldr r2, .L265+140
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #26]
|
|
mov r0, r4
|
|
ldr r2, .L265+144
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrb r3, [r6, #30] @ zero_extendqisi2
|
|
mov r0, r4
|
|
ldr r2, .L265+148
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #24]
|
|
mov r0, r4
|
|
ldr r2, .L265+152
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrb r3, [r6, #32] @ zero_extendqisi2
|
|
mov r0, r4
|
|
ldr r2, .L265+156
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #28]
|
|
mov r0, r4
|
|
ldr r2, .L265+160
|
|
mov r1, #64
|
|
bl snprintf
|
|
ldrh r3, [r6, #24]
|
|
ldr r2, [r6, #72]
|
|
add r4, r4, r0
|
|
mov r0, r4
|
|
mov r1, #64
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
ldr r2, .L265+164
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #78]
|
|
mov r0, r4
|
|
ldr r2, .L265+168
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrb r3, [r6, #82] @ zero_extendqisi2
|
|
mov r0, r4
|
|
ldr r2, .L265+172
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #76]
|
|
mov r0, r4
|
|
ldr r2, .L265+176
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrb r3, [r6, #84] @ zero_extendqisi2
|
|
mov r0, r4
|
|
ldr r2, .L265+180
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #80]
|
|
mov r0, r4
|
|
ldr r2, .L265+184
|
|
mov r1, #64
|
|
bl snprintf
|
|
ldrh r3, [r6, #76]
|
|
ldr r2, [r6, #72]
|
|
add r4, r4, r0
|
|
mov r0, r4
|
|
mov r1, #64
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
ldr r2, .L265+188
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #126]
|
|
mov r0, r4
|
|
ldr r2, .L265+192
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrb r3, [r6, #130] @ zero_extendqisi2
|
|
mov r0, r4
|
|
ldr r2, .L265+196
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #124]
|
|
mov r0, r4
|
|
ldr r2, .L265+200
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrb r3, [r6, #132] @ zero_extendqisi2
|
|
mov r0, r4
|
|
ldr r2, .L265+204
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #128]
|
|
mov r0, r4
|
|
ldr r2, .L265+208
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #174]
|
|
mov r0, r4
|
|
ldr r2, .L265+212
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrb r3, [r6, #178] @ zero_extendqisi2
|
|
mov r0, r4
|
|
ldr r2, .L265+216
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #172]
|
|
mov r0, r4
|
|
ldr r2, .L265+220
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrb r3, [r6, #180] @ zero_extendqisi2
|
|
mov r0, r4
|
|
ldr r2, .L265+224
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r3, [r6, #176]
|
|
mov r0, r4
|
|
ldr r2, .L265+228
|
|
mov r1, #64
|
|
bl snprintf
|
|
ldr r3, [r6, #2716]
|
|
add r4, r4, r0
|
|
str r3, [sp, #4]
|
|
ldr r3, [r6, #2724]
|
|
mov r0, r4
|
|
ldr r2, .L265+232
|
|
mov r1, #64
|
|
str r3, [sp]
|
|
ldr r3, [r6, #2720]
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #2712]
|
|
mov r0, r4
|
|
ldr r2, .L265+236
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #2736]
|
|
mov r0, r4
|
|
ldr r2, .L265+240
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r3, r6, #3152
|
|
add r4, r4, r0
|
|
ldr r2, .L265+244
|
|
mov r0, r4
|
|
mov r1, #64
|
|
ldrh r3, [r3]
|
|
bl snprintf
|
|
movw r3, #3154
|
|
add r4, r4, r0
|
|
ldr r2, .L265+248
|
|
ldrh r3, [r6, r3]
|
|
mov r0, r4
|
|
mov r1, #64
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldr r3, [r6, #3156]
|
|
mov r0, r4
|
|
ldr r2, .L265+252
|
|
mov r1, #64
|
|
bl snprintf
|
|
movw r3, #3160
|
|
add r4, r4, r0
|
|
ldr r2, .L265+256
|
|
ldrh r3, [r6, r3]
|
|
mov r1, #64
|
|
mov r0, r4
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
bl GetFreeBlockMinEraseCount
|
|
ldr r2, .L265+260
|
|
mov r3, r0
|
|
mov r1, #64
|
|
mov r0, r4
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
ldrh r0, [r6, #224]
|
|
bl GetFreeBlockMaxEraseCount
|
|
ldr r2, .L265+264
|
|
mov r3, r0
|
|
mov r1, #64
|
|
mov r0, r4
|
|
bl snprintf
|
|
ldr r3, .L265+268
|
|
add r4, r4, r0
|
|
ldr r3, [r3]
|
|
cmp r3, #1
|
|
beq .L254
|
|
.L259:
|
|
sub r0, r4, r7
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L254:
|
|
ldrh r3, [r6, #172]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
beq .L256
|
|
ldr r2, [r6, #72]
|
|
lsl r3, r3, #1
|
|
mov r0, r4
|
|
mov r1, #64
|
|
ldrh r3, [r2, r3]
|
|
ldr r2, .L265+272
|
|
bl snprintf
|
|
add r4, r4, r0
|
|
.L256:
|
|
mov r0, #0
|
|
ldr r10, .L265+276
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
mov r5, #0
|
|
movw r9, #65535
|
|
.L258:
|
|
ldr r3, [r6, #2516]
|
|
cmp r0, r9
|
|
beq .L257
|
|
mov r8, #6
|
|
lsl r2, r0, #1
|
|
ldr r1, [r6, #2536]
|
|
mul r8, r8, r0
|
|
ldrh r1, [r1, r2]
|
|
add r3, r3, r8
|
|
str r1, [sp, #12]
|
|
mov r1, #64
|
|
ldrh r3, [r3, #4]
|
|
str r3, [sp, #8]
|
|
ldr r3, [r6, #72]
|
|
ldrh r3, [r3, r2]
|
|
mov r2, r10
|
|
stm sp, {r0, r3}
|
|
mov r3, r5
|
|
mov r0, r4
|
|
add r5, r5, #1
|
|
bl snprintf
|
|
ldr r3, [r6, #2516]
|
|
add r4, r4, r0
|
|
cmp r5, #16
|
|
ldrh r0, [r3, r8]
|
|
bne .L258
|
|
.L257:
|
|
ldr r3, [r6, #2516]
|
|
mov r8, #0
|
|
ldr r1, [r6, #2532]
|
|
movw r9, #65535
|
|
ldr r10, .L265+280
|
|
sub r1, r1, r3
|
|
ldr r3, .L265+284
|
|
asr r1, r1, #1
|
|
mul r1, r3, r1
|
|
uxth r1, r1
|
|
.L260:
|
|
cmp r1, r9
|
|
beq .L259
|
|
ldr r2, [r6, #2536]
|
|
lsl r3, r1, #1
|
|
mov r5, #6
|
|
mov r0, r4
|
|
ldrh r3, [r2, r3]
|
|
mul r5, r5, r1
|
|
str r3, [sp, #8]
|
|
mov r2, r10
|
|
ldr r3, [r6, #2516]
|
|
add r3, r3, r5
|
|
ldrh r3, [r3, #4]
|
|
stm sp, {r1, r3}
|
|
mov r3, r8
|
|
mov r1, #64
|
|
add r8, r8, #1
|
|
bl snprintf
|
|
cmp r8, #4
|
|
add r4, r4, r0
|
|
beq .L259
|
|
ldr r3, [r6, #2516]
|
|
ldrh r1, [r3, r5]
|
|
b .L260
|
|
.L266:
|
|
.align 2
|
|
.L265:
|
|
.word .LANCHOR0
|
|
.word .LC9
|
|
.word .LC10
|
|
.word .LC11
|
|
.word .LC12
|
|
.word .LC13
|
|
.word .LC14
|
|
.word .LC15
|
|
.word .LC16
|
|
.word .LC17
|
|
.word .LC18
|
|
.word .LC19
|
|
.word .LC20
|
|
.word .LC21
|
|
.word .LC22
|
|
.word .LC23
|
|
.word .LC24
|
|
.word .LC25
|
|
.word .LC26
|
|
.word .LC27
|
|
.word .LC28
|
|
.word .LC29
|
|
.word .LC30
|
|
.word .LANCHOR0+2468
|
|
.word .LC31
|
|
.word .LC32
|
|
.word .LC33
|
|
.word .LC34
|
|
.word .LC35
|
|
.word .LC36
|
|
.word .LC37
|
|
.word .LC38
|
|
.word .LC39
|
|
.word .LC40
|
|
.word .LC41
|
|
.word .LC42
|
|
.word .LC43
|
|
.word .LC44
|
|
.word .LC45
|
|
.word .LC46
|
|
.word .LC47
|
|
.word .LC48
|
|
.word .LC49
|
|
.word .LC50
|
|
.word .LC51
|
|
.word .LC52
|
|
.word .LC53
|
|
.word .LC54
|
|
.word .LC55
|
|
.word .LC56
|
|
.word .LC57
|
|
.word .LC58
|
|
.word .LC59
|
|
.word .LC60
|
|
.word .LC61
|
|
.word .LC62
|
|
.word .LC63
|
|
.word .LC64
|
|
.word .LC65
|
|
.word .LC66
|
|
.word .LC67
|
|
.word .LC68
|
|
.word .LC69
|
|
.word .LC70
|
|
.word .LC71
|
|
.word .LC72
|
|
.word .LC73
|
|
.word .LANCHOR2
|
|
.word .LC74
|
|
.word .LC75
|
|
.word .LC76
|
|
.word -1431655765
|
|
.size FtlPrintInfo2buf, .-FtlPrintInfo2buf
|
|
.section .rodata.str1.1
|
|
.LC77:
|
|
.ascii "%s\012\000"
|
|
.text
|
|
.align 2
|
|
.global rknand_proc_ftlread
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rknand_proc_ftlread, %function
|
|
rknand_proc_ftlread:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r5, r1
|
|
cmp r0, #2048
|
|
blt .L269
|
|
ldr r3, .L270
|
|
add r4, r5, #30
|
|
ldr r2, .L270+4
|
|
mov r1, #64
|
|
mov r0, r5
|
|
bl snprintf
|
|
mov r0, r4
|
|
bl FtlPrintInfo2buf
|
|
add r0, r4, r0
|
|
sub r0, r0, r5
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L269:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L271:
|
|
.align 2
|
|
.L270:
|
|
.word .LC0
|
|
.word .LC77
|
|
.size rknand_proc_ftlread, .-rknand_proc_ftlread
|
|
.section .rodata.str1.1
|
|
.LC78:
|
|
.ascii "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x"
|
|
.ascii "\012\000"
|
|
.text
|
|
.align 2
|
|
.global GetSwlReplaceBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type GetSwlReplaceBlock, %function
|
|
GetSwlReplaceBlock:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #28
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L296
|
|
ldr r2, [r4, #2604]
|
|
ldr r3, [r4, #2616]
|
|
cmp r2, r3
|
|
bcs .L273
|
|
ldr r2, [r4, #2536]
|
|
mov r3, #0
|
|
ldrh r1, [r4, #240]
|
|
sub r2, r2, #2
|
|
str r3, [r4, #2596]
|
|
.L274:
|
|
ldr r5, [r4, #2596]
|
|
cmp r1, r3
|
|
bhi .L275
|
|
mov r0, r5
|
|
bl __aeabi_uidiv
|
|
ldr r3, .L296+4
|
|
str r0, [r4, #2604]
|
|
ldr r0, [r4, #2600]
|
|
ldrh r1, [r3]
|
|
sub r0, r5, r0
|
|
bl __aeabi_uidiv
|
|
str r0, [r4, #2596]
|
|
.L276:
|
|
ldr r6, [r4, #2616]
|
|
ldr r9, [r4, #2604]
|
|
add r3, r6, #256
|
|
cmp r3, r9
|
|
bls .L281
|
|
ldr r2, [r4, #2612]
|
|
add r3, r6, #768
|
|
cmp r3, r2
|
|
bls .L281
|
|
.L283:
|
|
movw r5, #65535
|
|
.L282:
|
|
mov r0, r5
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L275:
|
|
ldrh r0, [r2, #2]!
|
|
add r3, r3, #1
|
|
add r5, r0, r5
|
|
str r5, [r4, #2596]
|
|
b .L274
|
|
.L273:
|
|
ldr r3, [r4, #2612]
|
|
cmp r2, r3
|
|
addhi r3, r3, #1
|
|
strhi r3, [r4, #2612]
|
|
movhi r3, #0
|
|
bls .L276
|
|
.L278:
|
|
ldrh r2, [r4, #240]
|
|
cmp r2, r3
|
|
bls .L276
|
|
lsl r1, r3, #1
|
|
ldr r0, [r4, #2536]
|
|
add r3, r3, #1
|
|
ldrh r2, [r0, r1]
|
|
add r2, r2, #1
|
|
strh r2, [r0, r1] @ movhi
|
|
b .L278
|
|
.L281:
|
|
ldrh r0, [r4, #224]
|
|
add r0, r0, r0, lsl #1
|
|
lsr r0, r0, #2
|
|
bl GetFreeBlockMaxEraseCount
|
|
add r3, r6, #64
|
|
mov r7, r0
|
|
cmp r0, r3
|
|
bcc .L283
|
|
ldr r3, [r4, #2520]
|
|
cmp r3, #0
|
|
beq .L283
|
|
ldrh r2, [r4, #240]
|
|
movw r8, #65535
|
|
ldr ip, [r4, #2516]
|
|
mov r1, #0
|
|
ldr r10, [r4, #2536]
|
|
mov lr, #6
|
|
str r2, [fp, #-48]
|
|
mov r2, r8
|
|
.L284:
|
|
ldrh r0, [r3]
|
|
movw r5, #65535
|
|
cmp r0, r5
|
|
bne .L287
|
|
mov r5, r2
|
|
.L286:
|
|
movw r3, #65535
|
|
cmp r5, r3
|
|
beq .L283
|
|
lsl r1, r5, #1
|
|
ldrh r2, [r10, r1]
|
|
cmp r6, r2
|
|
bcs .L288
|
|
str r2, [fp, #-52]
|
|
str r1, [fp, #-48]
|
|
bl GetFreeBlockMinEraseCount
|
|
ldr r1, [fp, #-48]
|
|
cmp r6, r0
|
|
ldr r2, [fp, #-52]
|
|
strcc r8, [r4, #2616]
|
|
.L288:
|
|
cmp r9, r2
|
|
bls .L283
|
|
add r3, r2, #128
|
|
cmp r7, r3
|
|
ble .L283
|
|
add r0, r2, #256
|
|
ldr r3, [r4, #2612]
|
|
cmp r9, r0
|
|
bhi .L289
|
|
add r2, r2, #768
|
|
cmp r2, r3
|
|
bcs .L283
|
|
.L289:
|
|
str r7, [sp, #8]
|
|
ldr r0, .L296+8
|
|
ldrh r2, [r10, r1]
|
|
str r2, [sp, #4]
|
|
ldr r2, [r4, #72]
|
|
ldrh r2, [r2, r1]
|
|
mov r1, r5
|
|
str r2, [sp]
|
|
mov r2, r9
|
|
bl sftl_printk
|
|
mov r3, #1
|
|
str r3, [r4, #3164]
|
|
b .L282
|
|
.L287:
|
|
add r1, r1, #1
|
|
ldr r5, [fp, #-48]
|
|
uxth r1, r1
|
|
cmp r5, r1
|
|
bcc .L283
|
|
ldrh r5, [r3, #4]
|
|
cmp r5, #0
|
|
beq .L285
|
|
sub r3, r3, ip
|
|
ldr r5, .L296+12
|
|
asr r3, r3, #1
|
|
mul r3, r5, r3
|
|
uxth r5, r3
|
|
lsl r3, r5, #1
|
|
ldrh r3, [r10, r3]
|
|
cmp r6, r3
|
|
bcs .L286
|
|
cmp r3, r8
|
|
movcc r8, r3
|
|
movcc r2, r5
|
|
.L285:
|
|
mla r3, lr, r0, ip
|
|
b .L284
|
|
.L297:
|
|
.align 2
|
|
.L296:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+292
|
|
.word .LC78
|
|
.word -1431655765
|
|
.size GetSwlReplaceBlock, .-GetSwlReplaceBlock
|
|
.align 2
|
|
.global free_data_superblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type free_data_superblock, %function
|
|
free_data_superblock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
movw r2, #65535
|
|
cmp r0, r2
|
|
beq .L299
|
|
ldr r2, .L300
|
|
lsl r3, r0, #1
|
|
mov r1, #0
|
|
ldr r2, [r2, #72]
|
|
strh r1, [r2, r3] @ movhi
|
|
bl INSERT_FREE_LIST
|
|
.L299:
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L301:
|
|
.align 2
|
|
.L300:
|
|
.word .LANCHOR0
|
|
.size free_data_superblock, .-free_data_superblock
|
|
.align 2
|
|
.global get_new_active_ppa
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type get_new_active_ppa, %function
|
|
get_new_active_ppa:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldrh r2, [r0]
|
|
movw r3, #65535
|
|
mov r4, r0
|
|
cmp r2, r3
|
|
bne .L303
|
|
ldr r1, .L317
|
|
movw r2, #2792
|
|
ldr r0, .L317+4
|
|
bl sftl_printk
|
|
.L303:
|
|
ldr r6, .L317+8
|
|
movw r3, #302
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [r6, r3]
|
|
cmp r2, r3
|
|
bne .L304
|
|
ldr r1, .L317
|
|
movw r2, #2793
|
|
ldr r0, .L317+4
|
|
bl sftl_printk
|
|
.L304:
|
|
ldrh r3, [r4, #4]
|
|
cmp r3, #0
|
|
bne .L305
|
|
ldr r1, .L317
|
|
movw r2, #2794
|
|
ldr r0, .L317+4
|
|
bl sftl_printk
|
|
.L305:
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
mov r1, #0
|
|
strb r1, [r4, #10]
|
|
movw ip, #65535
|
|
ldrh r0, [r6, #232]
|
|
add r3, r4, r3, lsl #1
|
|
ldrh r5, [r3, #16]
|
|
.L306:
|
|
ldrh r2, [r4, #2]
|
|
cmp r5, ip
|
|
beq .L308
|
|
movw r3, #302
|
|
ldrh ip, [r6, r3]
|
|
cmp ip, r2
|
|
movwls r5, #65535
|
|
bls .L302
|
|
ldrh r3, [r4, #4]
|
|
orr r5, r2, r5, lsl #10
|
|
ldrb r2, [r4, #6] @ zero_extendqisi2
|
|
movw lr, #65535
|
|
sub r3, r3, #1
|
|
uxth r3, r3
|
|
strh r3, [r4, #4] @ movhi
|
|
.L311:
|
|
add r1, r2, #1
|
|
uxtb r2, r1
|
|
cmp r0, r2
|
|
mov r1, r2
|
|
moveq r2, #0
|
|
ldrheq r1, [r4, #2]
|
|
addeq r1, r1, #1
|
|
strheq r1, [r4, #2] @ movhi
|
|
add r1, r4, r2, lsl #1
|
|
ldrh r1, [r1, #16]
|
|
cmp r1, lr
|
|
beq .L311
|
|
strb r2, [r4, #6]
|
|
cmp r3, #0
|
|
ldrh r2, [r4, #2]
|
|
sub r2, r2, ip
|
|
clz r2, r2
|
|
lsr r2, r2, #5
|
|
moveq r2, #0
|
|
cmp r2, #0
|
|
beq .L302
|
|
ldr r1, .L317
|
|
movw r2, #2817
|
|
ldr r0, .L317+4
|
|
bl sftl_printk
|
|
.L302:
|
|
mov r0, r5
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L308:
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
add r3, r3, #1
|
|
uxtb r3, r3
|
|
strb r3, [r4, #6]
|
|
cmp r3, r0
|
|
strbeq r1, [r4, #6]
|
|
addeq r2, r2, #1
|
|
strheq r2, [r4, #2] @ movhi
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
add r3, r4, r3, lsl #1
|
|
ldrh r5, [r3, #16]
|
|
b .L306
|
|
.L318:
|
|
.align 2
|
|
.L317:
|
|
.word .LANCHOR1+111
|
|
.word .LC8
|
|
.word .LANCHOR0
|
|
.size get_new_active_ppa, .-get_new_active_ppa
|
|
.align 2
|
|
.global FtlGcBufInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcBufInit, %function
|
|
FtlGcBufInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L325
|
|
mov r1, #0
|
|
ldr r6, .L325+4
|
|
mov r4, #12
|
|
mov r5, #1
|
|
mov r7, #20
|
|
str r1, [r3, #3168]
|
|
.L320:
|
|
ldrh r2, [r3, #232]
|
|
uxth r0, r1
|
|
cmp r2, r0
|
|
bhi .L321
|
|
ldr r4, .L325+4
|
|
mov ip, #12
|
|
mov lr, #0
|
|
.L322:
|
|
ldr r1, [r3, #3188]
|
|
cmp r2, r1
|
|
ldmfdcs sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
ldrh r0, [r4]
|
|
mul r5, ip, r2
|
|
ldr r6, [r3, #3172]
|
|
add r1, r6, r5
|
|
mul r0, r2, r0
|
|
cmp r0, #0
|
|
str lr, [r1, #8]
|
|
add r1, r0, #3
|
|
movge r1, r0
|
|
ldr r0, [r3, #3176]
|
|
bic r1, r1, #3
|
|
add r1, r0, r1
|
|
str r1, [r6, r5]
|
|
ldr r1, [r3, #3172]
|
|
add r5, r1, r5
|
|
ldr r1, .L325+8
|
|
ldrh r0, [r1]
|
|
mul r0, r2, r0
|
|
add r2, r2, #1
|
|
cmp r0, #0
|
|
add r1, r0, #3
|
|
movge r1, r0
|
|
ldr r0, [r3, #3180]
|
|
bic r1, r1, #3
|
|
uxth r2, r2
|
|
add r1, r0, r1
|
|
str r1, [r5, #4]
|
|
b .L322
|
|
.L321:
|
|
uxth ip, r1
|
|
ldrh lr, [r6]
|
|
ldr r8, [r3, #3172]
|
|
add r1, r1, #1
|
|
mul r0, r4, ip
|
|
mul lr, ip, lr
|
|
add r2, r8, r0
|
|
cmp lr, #0
|
|
str r5, [r2, #8]
|
|
add r2, lr, #3
|
|
movge r2, lr
|
|
ldr lr, [r3, #3176]
|
|
bic r2, r2, #3
|
|
add r2, lr, r2
|
|
str r2, [r8, r0]
|
|
ldr r2, .L325+8
|
|
ldr r8, [r3, #3172]
|
|
add lr, r8, r0
|
|
ldrh r9, [r2]
|
|
mul r9, ip, r9
|
|
cmp r9, #0
|
|
add r2, r9, #3
|
|
movge r2, r9
|
|
ldr r9, [r3, #3180]
|
|
bic r2, r2, #3
|
|
add r2, r9, r2
|
|
str r2, [lr, #4]
|
|
ldr r2, [r3, #3184]
|
|
mla ip, r7, ip, r2
|
|
ldr r2, [r8, r0]
|
|
str r2, [ip, #8]
|
|
ldr r2, [lr, #4]
|
|
str r2, [ip, #12]
|
|
b .L320
|
|
.L326:
|
|
.align 2
|
|
.L325:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+310
|
|
.word .LANCHOR0+312
|
|
.size FtlGcBufInit, .-FtlGcBufInit
|
|
.align 2
|
|
.global FtlGcBufFree
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcBufFree, %function
|
|
FtlGcBufFree:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L334
|
|
mov lr, #0
|
|
mov r8, lr
|
|
mov r5, #20
|
|
mov r7, #12
|
|
ldr r6, [r3, #3188]
|
|
ldr r4, [r3, #3172]
|
|
.L328:
|
|
uxth r3, lr
|
|
cmp r1, r3
|
|
ldmfdls sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
mla ip, r5, r3, r0
|
|
mov r2, #0
|
|
.L329:
|
|
uxth r3, r2
|
|
cmp r6, r3
|
|
bls .L330
|
|
mul r3, r7, r3
|
|
add r2, r2, #1
|
|
add r9, r4, r3
|
|
ldr r10, [r4, r3]
|
|
ldr r3, [ip, #8]
|
|
cmp r10, r3
|
|
bne .L329
|
|
str r8, [r9, #8]
|
|
.L330:
|
|
add lr, lr, #1
|
|
b .L328
|
|
.L335:
|
|
.align 2
|
|
.L334:
|
|
.word .LANCHOR0
|
|
.size FtlGcBufFree, .-FtlGcBufFree
|
|
.align 2
|
|
.global FtlGcBufAlloc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcBufAlloc, %function
|
|
FtlGcBufAlloc:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L344
|
|
mov ip, #0
|
|
mov r6, #12
|
|
mov r7, #1
|
|
mov r8, #20
|
|
ldr r5, [r3, #3188]
|
|
ldr r4, [r3, #3172]
|
|
.L337:
|
|
uxth r2, ip
|
|
cmp r1, r2
|
|
ldmfdls sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
mov lr, #0
|
|
.L338:
|
|
uxth r3, lr
|
|
cmp r5, r3
|
|
bls .L339
|
|
mla r3, r6, r3, r4
|
|
add lr, lr, #1
|
|
ldr r9, [r3, #8]
|
|
cmp r9, #0
|
|
bne .L338
|
|
mla r2, r8, r2, r0
|
|
ldr lr, [r3]
|
|
str r7, [r3, #8]
|
|
str lr, [r2, #8]
|
|
ldr r3, [r3, #4]
|
|
str r3, [r2, #12]
|
|
.L339:
|
|
add ip, ip, #1
|
|
b .L337
|
|
.L345:
|
|
.align 2
|
|
.L344:
|
|
.word .LANCHOR0
|
|
.size FtlGcBufAlloc, .-FtlGcBufAlloc
|
|
.align 2
|
|
.global IsBlkInGcList
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type IsBlkInGcList, %function
|
|
IsBlkInGcList:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r2, .L351
|
|
movw r1, #3196
|
|
ldr r3, [r2, #3192]
|
|
ldrh r2, [r2, r1]
|
|
add r2, r3, r2, lsl #1
|
|
.L347:
|
|
cmp r3, r2
|
|
bne .L349
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L349:
|
|
ldrh r1, [r3], #2
|
|
cmp r1, r0
|
|
bne .L347
|
|
mov r0, #1
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L352:
|
|
.align 2
|
|
.L351:
|
|
.word .LANCHOR0
|
|
.size IsBlkInGcList, .-IsBlkInGcList
|
|
.align 2
|
|
.global FtlGcUpdatePage
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcUpdatePage, %function
|
|
FtlGcUpdatePage:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r4, r0
|
|
ubfx r0, r0, #10, #16
|
|
mov r5, r1
|
|
mov r6, r2
|
|
bl P2V_block_in_plane
|
|
ldr r3, .L357
|
|
movw r2, #3196
|
|
mov ip, #0
|
|
ldrh r7, [r3, r2]
|
|
ldr r2, [r3, #3192]
|
|
sub r1, r2, #2
|
|
.L354:
|
|
uxth lr, ip
|
|
cmp r7, lr
|
|
bhi .L356
|
|
bne .L355
|
|
lsl ip, ip, #1
|
|
movw r1, #3196
|
|
strh r0, [r2, ip] @ movhi
|
|
ldrh r2, [r3, r1]
|
|
add r2, r2, #1
|
|
strh r2, [r3, r1] @ movhi
|
|
b .L355
|
|
.L356:
|
|
ldrh lr, [r1, #2]!
|
|
add ip, ip, #1
|
|
cmp lr, r0
|
|
bne .L354
|
|
.L355:
|
|
movw r2, #3204
|
|
mov r1, #12
|
|
ldrh ip, [r3, r2]
|
|
mul ip, r1, ip
|
|
ldr r1, [r3, #3200]
|
|
add r0, r1, ip
|
|
stmib r0, {r5, r6}
|
|
str r4, [r1, ip]
|
|
ldrh r1, [r3, r2]
|
|
add r1, r1, #1
|
|
strh r1, [r3, r2] @ movhi
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L358:
|
|
.align 2
|
|
.L357:
|
|
.word .LANCHOR0
|
|
.size FtlGcUpdatePage, .-FtlGcUpdatePage
|
|
.section .rodata.str1.1
|
|
.LC79:
|
|
.ascii "FtlGcRefreshBlock 0x%x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlGcRefreshBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcRefreshBlock, %function
|
|
FtlGcRefreshBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r4, r0
|
|
mov r1, r0
|
|
ldr r0, .L362
|
|
bl sftl_printk
|
|
ldr r3, .L362+4
|
|
ldrh r0, [r3, #222]
|
|
cmp r0, r4
|
|
beq .L360
|
|
ldrh r1, [r3, #220]
|
|
cmp r1, r4
|
|
beq .L360
|
|
movw r2, #65535
|
|
cmp r0, r2
|
|
strheq r4, [r3, #222] @ movhi
|
|
beq .L360
|
|
cmp r1, r2
|
|
strheq r4, [r3, #220] @ movhi
|
|
.L360:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L363:
|
|
.align 2
|
|
.L362:
|
|
.word .LC79
|
|
.word .LANCHOR0
|
|
.size FtlGcRefreshBlock, .-FtlGcRefreshBlock
|
|
.section .rodata.str1.1
|
|
.LC80:
|
|
.ascii "FtlGcMarkBadPhyBlk %d 0x%x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlGcMarkBadPhyBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcMarkBadPhyBlk, %function
|
|
FtlGcMarkBadPhyBlk:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L368
|
|
movw r7, #3206
|
|
mov r4, r0
|
|
bl P2V_block_in_plane
|
|
mov r2, r4
|
|
mov r6, r0
|
|
ldr r0, .L368+4
|
|
ldrh r1, [r5, r7]
|
|
bl sftl_printk
|
|
mov r0, r6
|
|
bl FtlGcRefreshBlock
|
|
ldr r1, .L368+8
|
|
ldrh r3, [r5, r7]
|
|
mov r2, #0
|
|
mov r0, r1
|
|
.L365:
|
|
uxth ip, r2
|
|
cmp r3, ip
|
|
bhi .L367
|
|
cmp r3, #15
|
|
bhi .L366
|
|
add r1, r3, #1
|
|
lsl r3, r3, #1
|
|
movw r2, #3206
|
|
strh r4, [r0, r3] @ movhi
|
|
strh r1, [r5, r2] @ movhi
|
|
b .L366
|
|
.L367:
|
|
ldrh ip, [r1], #2
|
|
add r2, r2, #1
|
|
cmp ip, r4
|
|
bne .L365
|
|
.L366:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L369:
|
|
.align 2
|
|
.L368:
|
|
.word .LANCHOR0
|
|
.word .LC80
|
|
.word .LANCHOR0+3208
|
|
.size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
|
|
.align 2
|
|
.global FtlGcReFreshBadBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcReFreshBadBlk, %function
|
|
FtlGcReFreshBadBlk:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L376
|
|
movw r3, #3206
|
|
ldrh r2, [r4, r3]
|
|
cmp r2, #0
|
|
beq .L371
|
|
ldrh r1, [r4, #222]
|
|
movw r3, #65535
|
|
cmp r1, r3
|
|
bne .L371
|
|
movw r3, #3242
|
|
movw r5, #3242
|
|
ldrh r1, [r4, r3]
|
|
cmp r1, r2
|
|
movcs r2, #0
|
|
strhcs r2, [r4, r3] @ movhi
|
|
ldr r2, .L376+4
|
|
ldrh r3, [r4, r5]
|
|
lsl r3, r3, #1
|
|
ldrh r0, [r2, r3]
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
ldrh r3, [r4, r5]
|
|
add r3, r3, #1
|
|
strh r3, [r4, r5] @ movhi
|
|
.L371:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L377:
|
|
.align 2
|
|
.L376:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+3208
|
|
.size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
|
|
.align 2
|
|
.global ftl_malloc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_malloc, %function
|
|
ftl_malloc:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
movw r1, #3265
|
|
bl __kmalloc
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size ftl_malloc, .-ftl_malloc
|
|
.align 2
|
|
.global ftl_free
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_free, %function
|
|
ftl_free:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
bl kfree
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size ftl_free, .-ftl_free
|
|
.section .rodata.str1.1
|
|
.LC81:
|
|
.ascii "%s %p + 0x%x:\000"
|
|
.LC82:
|
|
.ascii "0x%08x,\000"
|
|
.LC83:
|
|
.ascii "0x%04x,\000"
|
|
.LC84:
|
|
.ascii "0x%02x,\000"
|
|
.LC85:
|
|
.ascii "\012\000"
|
|
.text
|
|
.align 2
|
|
.global rknand_print_hex
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rknand_print_hex, %function
|
|
rknand_print_hex:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r10, .L389
|
|
mov r7, #0
|
|
mov r9, r0
|
|
mov r5, r1
|
|
mov r8, r2
|
|
mov r6, r7
|
|
mov r4, r7
|
|
str r3, [fp, #-48]
|
|
.L381:
|
|
ldr r3, [fp, #-48]
|
|
cmp r3, r4
|
|
bhi .L387
|
|
ldr r0, .L389+4
|
|
bl sftl_printk
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L387:
|
|
cmp r6, #0
|
|
bne .L382
|
|
ldr r0, .L389+8
|
|
mov r3, r7
|
|
mov r2, r5
|
|
mov r1, r9
|
|
bl sftl_printk
|
|
.L382:
|
|
cmp r8, #4
|
|
ldreq r1, [r5, r4, lsl #2]
|
|
ldreq r0, .L389+12
|
|
beq .L388
|
|
cmp r8, #2
|
|
lsleq r3, r4, #1
|
|
movne r0, r10
|
|
ldreq r0, .L389+16
|
|
ldrheq r1, [r5, r3]
|
|
ldrbne r1, [r5, r4] @ zero_extendqisi2
|
|
.L388:
|
|
add r6, r6, #1
|
|
bl sftl_printk
|
|
cmp r6, #15
|
|
bls .L386
|
|
mov r6, #0
|
|
ldr r0, .L389+4
|
|
bl sftl_printk
|
|
.L386:
|
|
add r4, r4, #1
|
|
add r7, r7, r8
|
|
b .L381
|
|
.L390:
|
|
.align 2
|
|
.L389:
|
|
.word .LC84
|
|
.word .LC85
|
|
.word .LC81
|
|
.word .LC82
|
|
.word .LC83
|
|
.size rknand_print_hex, .-rknand_print_hex
|
|
.section .rodata.str1.1
|
|
.LC86:
|
|
.ascii "%s: addr: %x is in id block!!!!!!!!!!\012\000"
|
|
.LC87:
|
|
.ascii "not free: w: d:\000"
|
|
.LC88:
|
|
.ascii "not free: w: s:\000"
|
|
.text
|
|
.align 2
|
|
.global FlashEraseBlocks
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashEraseBlocks, %function
|
|
FlashEraseBlocks:
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #36
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r10, .L407
|
|
bic r9, r3, #8128
|
|
mov r5, r0
|
|
bic r9, r9, #63
|
|
mov r7, r2
|
|
mov r4, #0
|
|
ldr r3, [r9, #24]
|
|
str r3, [fp, #-48]
|
|
ldrh r3, [r10, #12]
|
|
str r3, [fp, #-64]
|
|
lsl r3, r3, #3
|
|
str r3, [fp, #-68]
|
|
add r3, r2, r2, lsl #2
|
|
str r3, [fp, #-72]
|
|
.L392:
|
|
ldr r3, [fp, #-72]
|
|
cmp r4, r3
|
|
beq .L395
|
|
sub r2, fp, #56
|
|
sub r1, fp, #52
|
|
add r0, r5, r4, lsl #2
|
|
mov r6, r5
|
|
bl l2p_addr_tran
|
|
ldr r8, [fp, #-56]
|
|
cmp r8, #0
|
|
bne .L393
|
|
ldr r2, [fp, #-52]
|
|
ldr r3, [fp, #-68]
|
|
cmp r3, r2
|
|
bls .L393
|
|
ldr r5, .L407+4
|
|
ldr r4, .L407+8
|
|
.L394:
|
|
mvn r3, #0
|
|
ldr r2, [fp, #-52]
|
|
str r3, [r6]
|
|
mov r1, r5
|
|
mov r0, r4
|
|
add r8, r8, #1
|
|
bl sftl_printk
|
|
ldr r1, [r6, #8]
|
|
ldr r0, .L407+12
|
|
mov r3, #16
|
|
mov r2, #4
|
|
add r6, r6, #20
|
|
bl rknand_print_hex
|
|
mov r3, #4
|
|
ldr r1, [r6, #-8]
|
|
mov r2, r3
|
|
ldr r0, .L407+16
|
|
bl rknand_print_hex
|
|
cmp r7, r8
|
|
bne .L394
|
|
bl dump_stack
|
|
.L395:
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r9, #24]
|
|
cmp r2, r3
|
|
beq .L402
|
|
bl __stack_chk_fail
|
|
.L393:
|
|
ldr r2, [r10, #3248]
|
|
uxtb r0, r8
|
|
ldr r1, [fp, #-52]
|
|
blx r2
|
|
cmp r0, #0
|
|
streq r0, [r5, r4, lsl #2]
|
|
mvnne r2, #0
|
|
strne r2, [r5, r4, lsl #2]
|
|
ldrh r2, [r10, #14]
|
|
cmp r2, #4
|
|
bne .L399
|
|
ldr r1, [fp, #-52]
|
|
ldr r3, [fp, #-64]
|
|
ldr r2, [r10, #3248]
|
|
ldrb r0, [fp, #-56] @ zero_extendqisi2
|
|
add r1, r3, r1
|
|
blx r2
|
|
cmp r0, #0
|
|
mvnne r2, #0
|
|
strne r2, [r5, r4, lsl #2]
|
|
.L399:
|
|
add r4, r4, #5
|
|
b .L392
|
|
.L402:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L408:
|
|
.align 2
|
|
.L407:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+130
|
|
.word .LC86
|
|
.word .LC87
|
|
.word .LC88
|
|
.size FlashEraseBlocks, .-FlashEraseBlocks
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueIn
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueIn, %function
|
|
FtlFreeSysBlkQueueIn:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
sub r3, r0, #1
|
|
movw r2, #65533
|
|
mov r6, r0
|
|
uxth r3, r3
|
|
cmp r3, r2
|
|
ldmfdhi sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
ldr r7, .L418
|
|
add r4, r7, #412
|
|
ldrh r3, [r4, #6]
|
|
cmp r3, #1024
|
|
ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
cmp r1, #0
|
|
beq .L411
|
|
bl P2V_block_in_plane
|
|
mov r5, r0
|
|
ldr r0, [r7, #3268]
|
|
lsl r3, r6, #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r3, [r0, #4]
|
|
bl FlashEraseBlocks
|
|
lsl r3, r5, #1
|
|
ldr r1, [r7, #2536]
|
|
ldrh r2, [r1, r3]
|
|
add r2, r2, #1
|
|
strh r2, [r1, r3] @ movhi
|
|
ldr r3, [r7, #2608]
|
|
add r3, r3, #1
|
|
str r3, [r7, #2608]
|
|
.L411:
|
|
ldrh r3, [r4, #6]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #6] @ movhi
|
|
ldrh r3, [r4, #4]
|
|
add r2, r4, r3, lsl #1
|
|
add r3, r3, #1
|
|
ubfx r3, r3, #0, #10
|
|
strh r3, [r4, #4] @ movhi
|
|
strh r6, [r2, #8] @ movhi
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L419:
|
|
.align 2
|
|
.L418:
|
|
.word .LANCHOR0
|
|
.size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
|
|
.section .rodata.str1.1
|
|
.LC89:
|
|
.ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
|
|
.ascii "\000"
|
|
.text
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueOut
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueOut, %function
|
|
FtlFreeSysBlkQueueOut:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r6, .L425
|
|
add r4, r6, #412
|
|
ldrh r2, [r4, #6]
|
|
cmp r2, #0
|
|
movweq r5, #65535
|
|
beq .L421
|
|
ldrh r3, [r4, #2]
|
|
sub r2, r2, #1
|
|
ldr r0, [r6, #3268]
|
|
strh r2, [r4, #6] @ movhi
|
|
mov r2, #1
|
|
add r1, r4, r3, lsl #1
|
|
add r3, r3, #1
|
|
ubfx r3, r3, #0, #10
|
|
strh r3, [r4, #2] @ movhi
|
|
ldrh r5, [r1, #8]
|
|
mov r1, r2
|
|
lsl r3, r5, #10
|
|
str r3, [r0, #4]
|
|
bl FlashEraseBlocks
|
|
ldr r3, [r6, #2608]
|
|
movw r2, #65533
|
|
add r3, r3, #1
|
|
str r3, [r6, #2608]
|
|
sub r3, r5, #1
|
|
uxth r3, r3
|
|
cmp r3, r2
|
|
bls .L422
|
|
.L421:
|
|
ldrh r2, [r4, #6]
|
|
mov r1, r5
|
|
ldr r0, .L425+4
|
|
bl sftl_printk
|
|
.L423:
|
|
b .L423
|
|
.L422:
|
|
mov r0, r5
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L426:
|
|
.align 2
|
|
.L425:
|
|
.word .LANCHOR0
|
|
.word .LC89
|
|
.size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
|
|
.section .rodata.str1.1
|
|
.LC90:
|
|
.ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
|
|
.text
|
|
.align 2
|
|
.global ftl_map_blk_alloc_new_blk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_map_blk_alloc_new_blk, %function
|
|
ftl_map_blk_alloc_new_blk:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldrh r1, [r0, #10]
|
|
mov r4, r0
|
|
ldr r2, [r0, #12]
|
|
mov r3, #0
|
|
.L428:
|
|
uxth r5, r3
|
|
cmp r1, r5
|
|
bls .L433
|
|
mov r7, r2
|
|
add r3, r3, #1
|
|
add r2, r2, #2
|
|
ldrh r6, [r7]
|
|
cmp r6, #0
|
|
bne .L428
|
|
bl FtlFreeSysBlkQueueOut
|
|
sub r3, r0, #1
|
|
movw r2, #65533
|
|
mov r1, r0
|
|
uxth r3, r3
|
|
strh r0, [r7] @ movhi
|
|
cmp r3, r2
|
|
bls .L429
|
|
ldr r3, .L435
|
|
ldr r0, .L435+4
|
|
ldrh r2, [r3, #6]
|
|
bl sftl_printk
|
|
.L430:
|
|
b .L430
|
|
.L429:
|
|
ldr r3, [r4, #28]
|
|
strh r6, [r4, #2] @ movhi
|
|
add r3, r3, #1
|
|
str r3, [r4, #28]
|
|
ldrh r3, [r4, #8]
|
|
strh r5, [r4] @ movhi
|
|
add r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
ldrh r3, [r4, #10]
|
|
cmp r3, r5
|
|
bhi .L431
|
|
.L433:
|
|
ldr r1, .L435+8
|
|
movw r2, #578
|
|
ldr r0, .L435+12
|
|
bl sftl_printk
|
|
.L431:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L436:
|
|
.align 2
|
|
.L435:
|
|
.word .LANCHOR0+412
|
|
.word .LC90
|
|
.word .LANCHOR1+147
|
|
.word .LC8
|
|
.size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
|
|
.align 2
|
|
.global ftl_memset
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_memset, %function
|
|
ftl_memset:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
bl memset
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size ftl_memset, .-ftl_memset
|
|
.section .rodata.str1.1
|
|
.LC91:
|
|
.ascii "%s error allocating memory. return -1\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlMemInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMemInit, %function
|
|
FtlMemInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L537
|
|
movw r3, #65535
|
|
mov r2, #32
|
|
movw r6, #306
|
|
mov r5, #0
|
|
mov r7, #12
|
|
mov r8, #80
|
|
add r9, r4, #312
|
|
str r3, [r4, #3276]
|
|
mvn r3, #0
|
|
strh r3, [r4, #222] @ movhi
|
|
strh r3, [r4, #220] @ movhi
|
|
add r3, r4, #3152
|
|
ldrh r0, [r4, r6]
|
|
str r5, [r4, #2588]
|
|
strh r2, [r3] @ movhi
|
|
movw r3, #3154
|
|
mov r2, #128
|
|
lsl r0, r0, #1
|
|
strh r2, [r4, r3] @ movhi
|
|
movw r3, #3160
|
|
str r5, [r4, #2592]
|
|
strh r5, [r4, r3] @ movhi
|
|
movw r3, #3206
|
|
str r5, [r4, #2576]
|
|
strh r5, [r4, r3] @ movhi
|
|
movw r3, #3242
|
|
str r5, [r4, #2564]
|
|
strh r5, [r4, r3] @ movhi
|
|
str r5, [r4, #2560]
|
|
str r5, [r4, #2568]
|
|
str r5, [r4, #2572]
|
|
str r5, [r4, #2556]
|
|
str r5, [r4, #2596]
|
|
str r5, [r4, #2600]
|
|
str r5, [r4, #2608]
|
|
str r5, [r4, #2612]
|
|
str r5, [r4, #2616]
|
|
str r5, [r4, #3272]
|
|
str r5, [r4, #3164]
|
|
str r5, [r4, #3280]
|
|
str r5, [r4, #3156]
|
|
str r5, [r4, #3284]
|
|
bl ftl_malloc
|
|
str r0, [r4, #3192]
|
|
ldrh r0, [r4, r6]
|
|
mul r0, r7, r0
|
|
bl ftl_malloc
|
|
ldrh r6, [r4, #232]
|
|
str r0, [r4, #3200]
|
|
mul r8, r8, r6
|
|
mov r0, r8
|
|
bl ftl_malloc
|
|
mov r3, #20
|
|
str r0, [r4, #3288]
|
|
mul r6, r3, r6
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3292]
|
|
mov r0, r8
|
|
movw r8, #310
|
|
bl ftl_malloc
|
|
str r0, [r4, #3296]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3268]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
ldrh r3, [r4, #232]
|
|
ldrh r6, [r4, r8]
|
|
str r0, [r4, #3184]
|
|
lsl r3, r3, #1
|
|
mov r0, r6
|
|
add r3, r3, #1
|
|
str r3, [r4, #3188]
|
|
bl ftl_malloc
|
|
str r0, [r4, #3300]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3304]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3308]
|
|
ldr r0, [r4, #3188]
|
|
mul r0, r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3176]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3312]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3316]
|
|
ldr r0, [r4, #3188]
|
|
mul r0, r7, r0
|
|
bl ftl_malloc
|
|
str r0, [r4, #3172]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3320]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
movw r3, #258
|
|
str r0, [r4, #3324]
|
|
ldrh r0, [r4, r3]
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
ldrh r3, [r4, #232]
|
|
ldrh r6, [r9]
|
|
str r0, [r4, #3328]
|
|
mul r6, r3, r6
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3332]
|
|
lsl r0, r6, #2
|
|
movw r6, #3340
|
|
bl ftl_malloc
|
|
ldrh r3, [r9]
|
|
str r0, [r4, #3336]
|
|
ldr r0, [r4, #3188]
|
|
mul r0, r0, r3
|
|
bl ftl_malloc
|
|
str r0, [r4, #3180]
|
|
ldrh r0, [r4, #242]
|
|
lsl r0, r0, #1
|
|
uxth r0, r0
|
|
strh r0, [r4, r6] @ movhi
|
|
bl ftl_malloc
|
|
str r0, [r4, #3344]
|
|
ldrh r0, [r4, r6]
|
|
add r0, r0, #544
|
|
add r0, r0, #3
|
|
lsr r3, r0, #9
|
|
bic r0, r0, #508
|
|
bic r0, r0, #3
|
|
strh r3, [r4, r6] @ movhi
|
|
bl ftl_malloc
|
|
ldrh r6, [r4, #242]
|
|
str r0, [r4, #3348]
|
|
add r0, r0, #32
|
|
str r0, [r4, #2536]
|
|
lsl r6, r6, #1
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3352]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
ldr r6, [r4, #328]
|
|
str r0, [r4, #72]
|
|
lsl r6, r6, #1
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #3356]
|
|
mov r0, r6
|
|
add r6, r4, #320
|
|
bl ftl_malloc
|
|
str r0, [r4, #3360]
|
|
ldrh r0, [r6]
|
|
lsl r0, r0, #1
|
|
bl ftl_malloc
|
|
str r0, [r4, #348]
|
|
ldrh r0, [r6]
|
|
lsl r0, r0, #1
|
|
bl ftl_malloc
|
|
str r0, [r4, #3364]
|
|
ldrh r0, [r6]
|
|
movw r6, #322
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
str r0, [r4, #3368]
|
|
ldrh r0, [r4, r6]
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
ldrh r2, [r4, r6]
|
|
mov r1, r5
|
|
str r0, [r4, #3372]
|
|
movw r5, #338
|
|
movw r6, #3388
|
|
lsl r2, r2, #2
|
|
bl ftl_memset
|
|
add r3, r4, #336
|
|
ldrh r0, [r3]
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
str r0, [r4, #3376]
|
|
ldr r0, [r4, #328]
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
str r0, [r4, #3380]
|
|
ldrh r0, [r4, r5]
|
|
mul r0, r7, r0
|
|
bl ftl_malloc
|
|
ldrh r3, [r4, r5]
|
|
str r0, [r4, #2540]
|
|
ldrh r0, [r4, r8]
|
|
mul r0, r0, r3
|
|
bl ftl_malloc
|
|
ldrh r3, [r4, #242]
|
|
str r0, [r4, #3384]
|
|
mov r0, #6
|
|
mul r0, r0, r3
|
|
bl ftl_malloc
|
|
movw r3, #298
|
|
str r0, [r4, #2516]
|
|
ldrh r0, [r4, r3]
|
|
ldrh r3, [r4, #254]
|
|
add r0, r0, #31
|
|
asr r0, r0, #5
|
|
strh r0, [r4, r6] @ movhi
|
|
mul r0, r0, r3
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
ldrh r2, [r4, r6]
|
|
ldrh r3, [r4, #254]
|
|
mov r5, r0
|
|
str r0, [r4, #380]
|
|
mov r1, #1
|
|
lsl ip, r2, #2
|
|
add r2, r0, r2, lsl #2
|
|
add r0, r4, #384
|
|
.L439:
|
|
cmp r3, r1
|
|
bhi .L440
|
|
cmp r3, #0
|
|
ldr r0, .L537+4
|
|
mov r1, #0
|
|
moveq r3, #1
|
|
rsb r2, r3, #8
|
|
add r3, r3, #7
|
|
lsl r2, r2, #2
|
|
add r0, r0, r3, lsl #2
|
|
bl memset
|
|
ldr r3, [r4, #3356]
|
|
cmp r3, #0
|
|
bne .L441
|
|
.L443:
|
|
ldr r1, .L537+8
|
|
ldr r0, .L537+12
|
|
bl sftl_printk
|
|
mvn r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L440:
|
|
str r2, [r0], #4
|
|
add r1, r1, #1
|
|
add r2, r2, ip
|
|
b .L439
|
|
.L441:
|
|
ldr r3, [r4, #3360]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3376]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3380]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #2540]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3384]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #2516]
|
|
cmp r3, #0
|
|
beq .L443
|
|
cmp r5, #0
|
|
beq .L443
|
|
ldr r3, [r4, #72]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3192]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3200]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3288]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3296]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3268]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3184]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3292]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3300]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3304]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3308]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3176]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3312]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3316]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3172]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3332]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3336]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3180]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #2536]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #3344]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, [r4, #348]
|
|
cmp r3, #0
|
|
beq .L443
|
|
ldr r3, .L537
|
|
ldr r2, [r3, #3364]
|
|
cmp r2, #0
|
|
beq .L443
|
|
ldr r2, [r3, #3368]
|
|
cmp r2, #0
|
|
beq .L443
|
|
ldr r3, [r3, #3372]
|
|
cmp r3, #0
|
|
beq .L443
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L538:
|
|
.align 2
|
|
.L537:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+352
|
|
.word .LANCHOR1+173
|
|
.word .LC91
|
|
.size FtlMemInit, .-FtlMemInit
|
|
.align 2
|
|
.global FtlBbt2Bitmap
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbt2Bitmap, %function
|
|
FtlBbt2Bitmap:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r2, .L544
|
|
movw r3, #3388
|
|
mov r4, r0
|
|
ldr r7, .L544+4
|
|
sub r6, r4, #2
|
|
ldr r8, .L544+8
|
|
add r4, r4, #1020
|
|
mov r5, r1
|
|
ldrh r2, [r2, r3]
|
|
add r4, r4, #2
|
|
mov r0, r5
|
|
mov r1, #0
|
|
lsl r2, r2, #2
|
|
bl ftl_memset
|
|
.L542:
|
|
ldrh r3, [r6, #2]!
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
ldmfdeq sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
ldrh r2, [r7]
|
|
cmp r2, r3
|
|
bhi .L541
|
|
ldr r0, .L544+12
|
|
mov r1, r8
|
|
mov r2, #74
|
|
bl sftl_printk
|
|
.L541:
|
|
ldrh r3, [r6]
|
|
mov r0, #1
|
|
cmp r4, r6
|
|
lsr r1, r3, #5
|
|
and r3, r3, #31
|
|
ldr r2, [r5, r1, lsl #2]
|
|
orr r3, r2, r0, lsl r3
|
|
str r3, [r5, r1, lsl #2]
|
|
bne .L542
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L545:
|
|
.align 2
|
|
.L544:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+298
|
|
.word .LANCHOR1+184
|
|
.word .LC8
|
|
.size FtlBbt2Bitmap, .-FtlBbt2Bitmap
|
|
.align 2
|
|
.global FtlBbtMemInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbtMemInit, %function
|
|
FtlBbtMemInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r0, .L547
|
|
mvn r2, #0
|
|
mov r1, #255
|
|
add r3, r0, #352
|
|
add r0, r0, #364
|
|
strh r2, [r3] @ movhi
|
|
mov r2, #0
|
|
strh r2, [r3, #6] @ movhi
|
|
mov r2, #16
|
|
bl ftl_memset
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L548:
|
|
.align 2
|
|
.L547:
|
|
.word .LANCHOR0
|
|
.size FtlBbtMemInit, .-FtlBbtMemInit
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueInit, %function
|
|
FtlFreeSysBlkQueueInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr ip, .L550
|
|
mov r4, #0
|
|
mov r2, #2048
|
|
mov r1, r4
|
|
add r3, ip, #412
|
|
strh r0, [r3] @ movhi
|
|
add r0, ip, #420
|
|
strh r4, [r3, #2] @ movhi
|
|
strh r4, [r3, #4] @ movhi
|
|
strh r4, [r3, #6] @ movhi
|
|
bl ftl_memset
|
|
mov r0, r4
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L551:
|
|
.align 2
|
|
.L550:
|
|
.word .LANCHOR0
|
|
.size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
|
|
.align 2
|
|
.global ftl_free_no_use_map_blk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_free_no_use_map_blk, %function
|
|
ftl_free_no_use_map_blk:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldrh r2, [r0, #10]
|
|
mov r4, r0
|
|
ldr r5, [r0, #20]
|
|
mov r1, #0
|
|
ldr r8, [r0, #12]
|
|
ldr r6, [r0, #24]
|
|
lsl r2, r2, #1
|
|
mov r0, r5
|
|
bl ftl_memset
|
|
mov r2, #0
|
|
.L553:
|
|
ldrh r1, [r4, #6]
|
|
uxth r3, r2
|
|
cmp r1, r3
|
|
bhi .L557
|
|
ldr r3, .L570
|
|
mov r7, #0
|
|
mov r10, r7
|
|
ldrh r2, [r3]
|
|
ldrh r3, [r4]
|
|
lsl r3, r3, #1
|
|
strh r2, [r5, r3] @ movhi
|
|
ldrh r3, [r5]
|
|
.L558:
|
|
ldrh r1, [r4, #10]
|
|
uxth r2, r7
|
|
cmp r1, r2
|
|
bhi .L561
|
|
mov r0, r10
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L557:
|
|
uxth r3, r2
|
|
mov r1, #0
|
|
ldr r0, [r6, r3, lsl #2]
|
|
ubfx r0, r0, #10, #16
|
|
.L554:
|
|
ldrh ip, [r4, #10]
|
|
uxth r3, r1
|
|
cmp ip, r3
|
|
addls r2, r2, #1
|
|
bls .L553
|
|
.L556:
|
|
uxth r3, r1
|
|
add r1, r1, #1
|
|
lsl r3, r3, #1
|
|
ldrh ip, [r8, r3]
|
|
subs lr, ip, #0
|
|
movne lr, #1
|
|
cmp ip, r0
|
|
movne lr, #0
|
|
cmp lr, #0
|
|
ldrhne ip, [r5, r3]
|
|
addne ip, ip, #1
|
|
strhne ip, [r5, r3] @ movhi
|
|
b .L554
|
|
.L561:
|
|
uxth r6, r7
|
|
lsl r6, r6, #1
|
|
ldrh r9, [r5, r6]
|
|
cmp r9, r3
|
|
bcs .L559
|
|
ldrh r1, [r8, r6]
|
|
cmp r1, #0
|
|
movne r10, r2
|
|
movne r3, r9
|
|
.L559:
|
|
cmp r9, #0
|
|
bne .L560
|
|
ldrh r0, [r8, r6]
|
|
cmp r0, #0
|
|
beq .L560
|
|
mov r1, #1
|
|
str r3, [fp, #-48]
|
|
bl FtlFreeSysBlkQueueIn
|
|
strh r9, [r8, r6] @ movhi
|
|
ldr r3, [fp, #-48]
|
|
ldrh r2, [r4, #8]
|
|
sub r2, r2, #1
|
|
strh r2, [r4, #8] @ movhi
|
|
.L560:
|
|
add r7, r7, #1
|
|
b .L558
|
|
.L571:
|
|
.align 2
|
|
.L570:
|
|
.word .LANCHOR0+304
|
|
.size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
|
|
.align 2
|
|
.global FtlL2PDataInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlL2PDataInit, %function
|
|
FtlL2PDataInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L575
|
|
mov r1, #0
|
|
mvn r6, #0
|
|
ldr r2, [r4, #328]
|
|
ldr r0, [r4, #3360]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
movw r3, #310
|
|
movw r2, #338
|
|
ldr r0, [r4, #3384]
|
|
ldrh r3, [r4, r3]
|
|
mov r1, #255
|
|
ldrh r2, [r4, r2]
|
|
mul r2, r2, r3
|
|
bl ftl_memset
|
|
ldr ip, .L575+4
|
|
mov r3, #0
|
|
mov r5, r3
|
|
sub r7, ip, #28
|
|
mov lr, #12
|
|
.L573:
|
|
ldrh r1, [ip]
|
|
uxth r2, r3
|
|
cmp r1, r2
|
|
bhi .L574
|
|
ldr r3, .L575+8
|
|
ldr r2, [r4, #328]
|
|
strh r2, [r3, #10] @ movhi
|
|
mvn r2, #0
|
|
str r2, [r4, #3392]
|
|
ldr r2, .L575+12
|
|
strh r2, [r3, #4] @ movhi
|
|
movw r2, #3436
|
|
ldrh r2, [r4, r2]
|
|
strh r2, [r3, #8] @ movhi
|
|
sub r2, r3, #3056
|
|
ldrh r2, [r2]
|
|
strh r2, [r3, #6] @ movhi
|
|
ldr r3, [r4, #3356]
|
|
str r3, [r4, #3404]
|
|
ldr r3, [r4, #3380]
|
|
str r3, [r4, #3408]
|
|
ldr r3, [r4, #3360]
|
|
str r3, [r4, #3412]
|
|
ldr r3, [r4, #3376]
|
|
str r3, [r4, #3416]
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L574:
|
|
uxth r0, r3
|
|
ldr r2, [r4, #2540]
|
|
add r3, r3, #1
|
|
mul r1, lr, r0
|
|
add r8, r2, r1
|
|
str r5, [r8, #4]
|
|
strh r6, [r2, r1] @ movhi
|
|
ldr r2, [r4, #2540]
|
|
add r1, r2, r1
|
|
ldrh r2, [r7]
|
|
mul r2, r0, r2
|
|
ldr r0, [r4, #3384]
|
|
bic r2, r2, #3
|
|
add r2, r0, r2
|
|
str r2, [r1, #8]
|
|
b .L573
|
|
.L576:
|
|
.align 2
|
|
.L575:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+338
|
|
.word .LANCHOR0+3392
|
|
.word -3902
|
|
.size FtlL2PDataInit, .-FtlL2PDataInit
|
|
.align 2
|
|
.global FtlVariablesInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVariablesInit, %function
|
|
FtlVariablesInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L578
|
|
movw r2, #3438
|
|
mvn r3, #0
|
|
mov r5, #0
|
|
mov r1, r5
|
|
strh r3, [r4, r2] @ movhi
|
|
str r3, [r4, #3448]
|
|
add r3, r4, #344
|
|
ldr r0, [r4, #348]
|
|
str r5, [r4, #3440]
|
|
strh r5, [r3] @ movhi
|
|
add r3, r4, #320
|
|
str r5, [r4, #3444]
|
|
ldrh r2, [r3]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
ldrh r2, [r4, #242]
|
|
mov r1, r5
|
|
ldr r0, [r4, #2536]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
ldrh r2, [r4, #242]
|
|
mov r1, r5
|
|
ldr r0, [r4, #3344]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
add r0, r4, #2464
|
|
mov r1, r5
|
|
mov r2, #48
|
|
add r0, r0, #4
|
|
bl ftl_memset
|
|
mov r1, r5
|
|
mov r2, #512
|
|
add r0, r4, #2640
|
|
bl ftl_memset
|
|
bl FtlGcBufInit
|
|
bl FtlL2PDataInit
|
|
mov r0, r5
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L579:
|
|
.align 2
|
|
.L578:
|
|
.word .LANCHOR0
|
|
.size FtlVariablesInit, .-FtlVariablesInit
|
|
.align 2
|
|
.global SupperBlkListInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type SupperBlkListInit, %function
|
|
SupperBlkListInit:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #20
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L591
|
|
mov r2, #6
|
|
mov r5, #0
|
|
mov r1, #0
|
|
add r10, r4, #2528
|
|
mov r9, r5
|
|
mov r7, r5
|
|
ldrh r3, [r4, #242]
|
|
ldr r0, [r4, #2516]
|
|
mul r2, r2, r3
|
|
bl ftl_memset
|
|
str r5, [r4, #2532]
|
|
str r5, [r4, #2520]
|
|
str r5, [r4, #2524]
|
|
strh r5, [r10] @ movhi
|
|
strh r5, [r4, #224] @ movhi
|
|
.L581:
|
|
ldrh r3, [r4, #240]
|
|
uxth r8, r5
|
|
cmp r8, r3
|
|
bcs .L588
|
|
ldrh r3, [r4, #232]
|
|
str r3, [fp, #-52]
|
|
ldr r3, .L591+4
|
|
ldr r2, .L591+8
|
|
ldrh r3, [r3]
|
|
str r3, [fp, #-48]
|
|
mov r3, #0
|
|
mov r6, r3
|
|
b .L589
|
|
.L583:
|
|
ldrb r0, [r2], #1 @ zero_extendqisi2
|
|
mov r1, r8
|
|
str r3, [fp, #-60]
|
|
str r2, [fp, #-56]
|
|
bl V2P_block
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
ldr r3, [fp, #-60]
|
|
ldr r2, [fp, #-56]
|
|
ldreq r1, [fp, #-48]
|
|
add r3, r3, #1
|
|
addeq r6, r1, r6
|
|
uxtheq r6, r6
|
|
.L589:
|
|
ldr r0, [fp, #-52]
|
|
uxth r1, r3
|
|
cmp r0, r1
|
|
bhi .L583
|
|
uxth r3, r5
|
|
cmp r6, #0
|
|
beq .L584
|
|
mov r1, r6
|
|
mov r0, #32768
|
|
str r3, [fp, #-48]
|
|
bl __aeabi_idiv
|
|
ldr r3, [fp, #-48]
|
|
uxth r6, r0
|
|
.L585:
|
|
ldr r2, [r4, #2516]
|
|
mov r1, #6
|
|
mla r2, r1, r3, r2
|
|
strh r6, [r2, #4] @ movhi
|
|
ldrh r2, [r4, #24]
|
|
cmp r2, r8
|
|
beq .L586
|
|
ldrh r2, [r4, #76]
|
|
cmp r2, r8
|
|
beq .L586
|
|
ldrh r2, [r4, #124]
|
|
cmp r2, r8
|
|
beq .L586
|
|
ldr r2, [r4, #72]
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
bne .L587
|
|
add r9, r9, #1
|
|
mov r0, r8
|
|
uxth r9, r9
|
|
bl INSERT_FREE_LIST
|
|
.L586:
|
|
add r5, r5, #1
|
|
b .L581
|
|
.L584:
|
|
ldr r1, [r4, #72]
|
|
lsl r2, r3, #1
|
|
mvn r0, #0 @ movhi
|
|
strh r0, [r1, r2] @ movhi
|
|
b .L585
|
|
.L587:
|
|
add r7, r7, #1
|
|
mov r0, r8
|
|
uxth r7, r7
|
|
bl INSERT_DATA_LIST
|
|
b .L586
|
|
.L588:
|
|
strh r7, [r10] @ movhi
|
|
add r7, r7, r9
|
|
cmp r7, r3
|
|
strh r9, [r4, #224] @ movhi
|
|
ble .L590
|
|
ldr r1, .L591+12
|
|
movw r2, #2219
|
|
ldr r0, .L591+16
|
|
bl sftl_printk
|
|
.L590:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L592:
|
|
.align 2
|
|
.L591:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+302
|
|
.word .LANCHOR0+260
|
|
.word .LANCHOR1+198
|
|
.word .LC8
|
|
.size SupperBlkListInit, .-SupperBlkListInit
|
|
.align 2
|
|
.global FtlGcPageVarInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcPageVarInit, %function
|
|
FtlGcPageVarInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L594
|
|
movw r2, #3196
|
|
mov r3, #0
|
|
movw r5, #306
|
|
mov r1, #255
|
|
strh r3, [r4, r2] @ movhi
|
|
movw r2, #3204
|
|
ldr r0, [r4, #3192]
|
|
strh r3, [r4, r2] @ movhi
|
|
ldrh r2, [r4, r5]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
ldrh r3, [r4, r5]
|
|
mov r2, #12
|
|
mov r1, #255
|
|
ldr r0, [r4, #3200]
|
|
mul r2, r2, r3
|
|
bl ftl_memset
|
|
bl FtlGcBufInit
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L595:
|
|
.align 2
|
|
.L594:
|
|
.word .LANCHOR0
|
|
.size FtlGcPageVarInit, .-FtlGcPageVarInit
|
|
.align 2
|
|
.global FlashGetBadBlockList
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashGetBadBlockList, %function
|
|
FlashGetBadBlockList:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r6, .L603
|
|
mov r4, r0
|
|
mov r5, r1
|
|
mov r2, #256
|
|
mov r1, #255
|
|
bl ftl_memset
|
|
mov r1, r5
|
|
ldr r3, [r6, #3244]
|
|
mov r0, r4
|
|
blx r3
|
|
uxth r0, r0
|
|
cmp r0, #50
|
|
bls .L597
|
|
mov r0, r4
|
|
mov r2, #256
|
|
mov r1, #255
|
|
bl ftl_memset
|
|
mov r0, #0
|
|
.L597:
|
|
ldrh r3, [r6, #14]
|
|
cmp r3, #4
|
|
moveq r3, r4
|
|
addeq r1, r3, r0, lsl #1
|
|
ldmfdne sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L599:
|
|
cmp r3, r1
|
|
ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
ldrh r2, [r3]
|
|
lsr r2, r2, #1
|
|
strh r2, [r3], #2 @ movhi
|
|
b .L599
|
|
.L604:
|
|
.align 2
|
|
.L603:
|
|
.word .LANCHOR0
|
|
.size FlashGetBadBlockList, .-FlashGetBadBlockList
|
|
.align 2
|
|
.global ftl_memcpy
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_memcpy, %function
|
|
ftl_memcpy:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
bl memcpy
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size ftl_memcpy, .-ftl_memcpy
|
|
.section .rodata.str1.1
|
|
.LC92:
|
|
.ascii "FlashReadPages %x %x error_ecc_bits %d\012\000"
|
|
.LC93:
|
|
.ascii "data:\000"
|
|
.LC94:
|
|
.ascii "spare:\000"
|
|
.text
|
|
.align 2
|
|
.global FlashReadPages
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadPages, %function
|
|
FlashReadPages:
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #28
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r6, .L647
|
|
bic r7, r3, #8128
|
|
ldr r10, .L647+4
|
|
bic r7, r7, #63
|
|
ldr r9, .L647+8
|
|
mov r4, r0
|
|
str r1, [fp, #-68]
|
|
mov r8, #0
|
|
ldr r3, [r7, #24]
|
|
str r3, [fp, #-48]
|
|
ldrh r3, [r6, #12]
|
|
str r3, [fp, #-64]
|
|
.L607:
|
|
ldr r3, [fp, #-68]
|
|
cmp r8, r3
|
|
bne .L620
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r7, #24]
|
|
cmp r2, r3
|
|
beq .L621
|
|
bl __stack_chk_fail
|
|
.L620:
|
|
ldr r3, [r4, #8]
|
|
cmp r3, #0
|
|
beq .L608
|
|
ldr r3, [r4, #12]
|
|
cmp r3, #0
|
|
bne .L609
|
|
.L608:
|
|
mov r1, r10
|
|
mov r0, r9
|
|
mov r2, #96
|
|
bl sftl_printk
|
|
.L609:
|
|
sub r2, fp, #56
|
|
sub r1, fp, #52
|
|
mov r0, r4
|
|
bl l2p_addr_tran
|
|
ldr r0, [fp, #-56]
|
|
cmp r0, #3
|
|
mvnhi r3, #0
|
|
strhi r3, [r4]
|
|
bhi .L611
|
|
ldr r5, [r4, #8]
|
|
uxtb r0, r0
|
|
ldr r3, [r4, #12]
|
|
tst r5, #63
|
|
ldr r1, [fp, #-52]
|
|
ldr ip, [r6, #3256]
|
|
ldrne r5, [r6, #3320]
|
|
mov r2, r5
|
|
blx ip
|
|
str r0, [r4]
|
|
ldrh r3, [r6, #14]
|
|
cmp r3, #4
|
|
bne .L614
|
|
ldr r0, [fp, #-64]
|
|
add r2, r5, #2048
|
|
ldr r3, [r4, #12]
|
|
ldr r1, [fp, #-52]
|
|
ldr ip, [r6, #3256]
|
|
add r3, r3, #8
|
|
add r1, r0, r1
|
|
ldrb r0, [fp, #-56] @ zero_extendqisi2
|
|
blx ip
|
|
cmn r0, #1
|
|
beq .L615
|
|
ldr r3, [r4, #12]
|
|
ldr r2, [r3, #12]
|
|
cmn r2, #1
|
|
bne .L616
|
|
ldr r2, [r3, #8]
|
|
cmn r2, #1
|
|
bne .L616
|
|
ldr r3, [r3]
|
|
cmn r3, #1
|
|
beq .L616
|
|
.L615:
|
|
mvn r3, #0
|
|
.L646:
|
|
str r3, [r4]
|
|
.L617:
|
|
ldr r3, [r4]
|
|
cmn r3, #1
|
|
cmpne r3, #256
|
|
bne .L614
|
|
ldr r1, [r4, #4]
|
|
ldr r2, [fp, #-52]
|
|
ldr r0, .L647+12
|
|
bl sftl_printk
|
|
ldr r1, [r4, #8]
|
|
cmp r1, #0
|
|
beq .L619
|
|
mov r3, #4
|
|
ldr r0, .L647+16
|
|
mov r2, r3
|
|
bl rknand_print_hex
|
|
.L619:
|
|
ldr r1, [r4, #12]
|
|
cmp r1, #0
|
|
beq .L614
|
|
mov r3, #4
|
|
ldr r0, .L647+20
|
|
mov r2, r3
|
|
bl rknand_print_hex
|
|
.L614:
|
|
ldr r3, [r6, #3320]
|
|
cmp r3, r5
|
|
bne .L611
|
|
ldr r0, [r4, #8]
|
|
cmp r0, r5
|
|
beq .L611
|
|
ldr r3, .L647+24
|
|
mov r1, r5
|
|
ldrh r2, [r3]
|
|
lsl r2, r2, #9
|
|
bl ftl_memcpy
|
|
.L611:
|
|
add r8, r8, #1
|
|
add r4, r4, #20
|
|
b .L607
|
|
.L616:
|
|
ldr r3, [r4]
|
|
sub r0, r0, #256
|
|
clz r0, r0
|
|
cmn r3, #1
|
|
lsr r0, r0, #5
|
|
moveq r0, #0
|
|
cmp r0, #0
|
|
beq .L617
|
|
mov r3, #256
|
|
b .L646
|
|
.L621:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L648:
|
|
.align 2
|
|
.L647:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+216
|
|
.word .LC8
|
|
.word .LC92
|
|
.word .LC93
|
|
.word .LC94
|
|
.word .LANCHOR0+258
|
|
.size FlashReadPages, .-FlashReadPages
|
|
.align 2
|
|
.global FtlLoadFactoryBbt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadFactoryBbt, %function
|
|
FtlLoadFactoryBbt:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L659
|
|
mov r6, #0
|
|
add r7, r5, #364
|
|
sub r9, r7, #66
|
|
ldr r3, [r5, #3300]
|
|
ldr r8, [r5, #3332]
|
|
str r3, [r5, #3460]
|
|
str r8, [r5, #3464]
|
|
.L650:
|
|
ldrh r3, [r5, #254]
|
|
cmp r3, r6
|
|
bhi .L655
|
|
mov r0, #0
|
|
ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L655:
|
|
ldrh r4, [r9]
|
|
mvn r3, #0
|
|
ldr r10, .L659+4
|
|
add r4, r4, r3
|
|
strh r3, [r7] @ movhi
|
|
uxth r4, r4
|
|
.L651:
|
|
ldrh r3, [r9]
|
|
sub r2, r3, #16
|
|
cmp r4, r2
|
|
ble .L653
|
|
mla r3, r6, r3, r4
|
|
mov r2, #1
|
|
mov r0, r10
|
|
mov r1, r2
|
|
lsl r3, r3, #10
|
|
str r3, [r5, #3456]
|
|
bl FlashReadPages
|
|
ldr r3, [r5, #3452]
|
|
cmn r3, #1
|
|
beq .L652
|
|
ldrh r2, [r8]
|
|
movw r3, #61664
|
|
cmp r2, r3
|
|
bne .L652
|
|
strh r4, [r7] @ movhi
|
|
.L653:
|
|
add r6, r6, #1
|
|
add r7, r7, #2
|
|
b .L650
|
|
.L652:
|
|
sub r4, r4, #1
|
|
uxth r4, r4
|
|
b .L651
|
|
.L660:
|
|
.align 2
|
|
.L659:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+3452
|
|
.size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
|
|
.align 2
|
|
.global FtlGetLastWrittenPage
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGetLastWrittenPage, %function
|
|
FtlGetLastWrittenPage:
|
|
@ args = 0, pretend = 0, frame = 88
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #88
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
cmp r1, #1
|
|
bic r6, r3, #8128
|
|
mov r9, r1
|
|
bic r6, r6, #63
|
|
movwne r2, #302
|
|
lsl r7, r0, #10
|
|
ldr r3, [r6, #24]
|
|
str r3, [fp, #-40]
|
|
ldr r3, .L674
|
|
addeq r2, r3, #304
|
|
ldrhne r4, [r3, r2]
|
|
ldrheq r4, [r2]
|
|
mov r2, r1
|
|
ldr r3, [r3, #3324]
|
|
mov r1, #1
|
|
sub r4, r4, #1
|
|
str r3, [fp, #-116]
|
|
sub r3, fp, #104
|
|
str r3, [fp, #-112]
|
|
sxth r4, r4
|
|
orr r0, r4, r0, lsl #10
|
|
str r0, [fp, #-120]
|
|
sub r0, fp, #124
|
|
bl FlashReadPages
|
|
ldr r3, [fp, #-104]
|
|
cmn r3, #1
|
|
bne .L665
|
|
mov r8, #0
|
|
b .L664
|
|
.L668:
|
|
add r3, r8, r4
|
|
mov r2, r9
|
|
sub r0, fp, #124
|
|
mov r1, #1
|
|
add r3, r3, r3, lsr #31
|
|
sbfx r5, r3, #1, #16
|
|
orr r3, r7, r3, asr #1
|
|
str r3, [fp, #-120]
|
|
bl FlashReadPages
|
|
ldrd r2, [fp, #-104]
|
|
and r3, r3, r2
|
|
cmn r3, #1
|
|
bne .L666
|
|
ldr r3, [fp, #-124]
|
|
cmn r3, #1
|
|
subne r4, r5, #1
|
|
sxthne r4, r4
|
|
bne .L664
|
|
.L666:
|
|
add r5, r5, #1
|
|
sxth r8, r5
|
|
.L664:
|
|
cmp r8, r4
|
|
ble .L668
|
|
.L665:
|
|
ldr r2, [fp, #-40]
|
|
ldr r3, [r6, #24]
|
|
cmp r2, r3
|
|
beq .L669
|
|
bl __stack_chk_fail
|
|
.L669:
|
|
mov r0, r4
|
|
sub sp, fp, #36
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L675:
|
|
.align 2
|
|
.L674:
|
|
.word .LANCHOR0
|
|
.size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
|
|
.align 2
|
|
.global FtlScanSysBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlScanSysBlk, %function
|
|
FtlScanSysBlk:
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #28
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L756
|
|
movw r3, #3436
|
|
mov r5, #0
|
|
mov r1, r5
|
|
add r6, r4, #320
|
|
ldr r2, [r4, #328]
|
|
strh r5, [r4, r3] @ movhi
|
|
add r3, r4, #344
|
|
ldr r0, [r4, #3380]
|
|
lsl r2, r2, #2
|
|
strh r5, [r3] @ movhi
|
|
bl ftl_memset
|
|
ldr r2, [r4, #328]
|
|
mov r1, r5
|
|
ldr r0, [r4, #3356]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
ldrh r2, [r6]
|
|
mov r1, r5
|
|
ldr r0, [r4, #3368]
|
|
lsl r2, r2, #2
|
|
bl ftl_memset
|
|
ldrh r2, [r6]
|
|
mov r1, r5
|
|
ldr r0, [r4, #348]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
add r0, r4, #2624
|
|
mov r2, #16
|
|
mov r1, #255
|
|
bl ftl_memset
|
|
ldrh r3, [r4, #240]
|
|
.L755:
|
|
str r3, [fp, #-48]
|
|
ldr r2, [fp, #-48]
|
|
ldrh r3, [r4, #242]
|
|
cmp r3, r2
|
|
bls .L716
|
|
ldr r5, .L756+4
|
|
mov r7, #0
|
|
ldrh r6, [r4, #232]
|
|
mov r9, #20
|
|
ldr r8, [r4, #3288]
|
|
ldr r2, [r4, #3176]
|
|
ldrh r10, [r5], #-52
|
|
ldr r3, [r4, #3180]
|
|
add r6, r6, r5
|
|
b .L717
|
|
.L679:
|
|
ldr r1, [fp, #-48]
|
|
ldrb r0, [r5], #1 @ zero_extendqisi2
|
|
str r3, [fp, #-60]
|
|
str r2, [fp, #-56]
|
|
bl V2P_block
|
|
str r0, [fp, #-52]
|
|
bl FtlBbmIsBadBlock
|
|
ldr r2, [fp, #-56]
|
|
cmp r0, #0
|
|
ldr r3, [fp, #-60]
|
|
bne .L717
|
|
mla ip, r9, r7, r8
|
|
ldr r1, [fp, #-52]
|
|
mul r0, r10, r7
|
|
add r7, r7, #1
|
|
cmp r0, #0
|
|
lsl r1, r1, #10
|
|
stmib ip, {r1, r2}
|
|
add r1, r0, #3
|
|
movge r1, r0
|
|
uxth r7, r7
|
|
bic r1, r1, #3
|
|
add r1, r3, r1
|
|
str r1, [ip, #12]
|
|
.L717:
|
|
cmp r6, r5
|
|
bne .L679
|
|
cmp r7, #0
|
|
bne .L680
|
|
.L715:
|
|
ldr r3, [fp, #-48]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
b .L755
|
|
.L680:
|
|
mov r1, r7
|
|
mov r0, r8
|
|
mov r2, #1
|
|
bl FlashReadPages
|
|
mov r3, #0
|
|
str r3, [fp, #-52]
|
|
.L714:
|
|
ldr r3, [fp, #-52]
|
|
mov r8, #20
|
|
mul r8, r8, r3
|
|
ldr r3, [r4, #3288]
|
|
add r2, r3, r8
|
|
ldr r3, [r3, r8]
|
|
ldr r5, [r2, #4]
|
|
ldr r6, [r2, #12]
|
|
cmn r3, #1
|
|
ubfx r5, r5, #10, #16
|
|
bne .L683
|
|
mov r9, #16
|
|
movw r10, #65535
|
|
.L685:
|
|
ldr r0, [r4, #3288]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
add r0, r0, r8
|
|
ldr r3, [r0, #4]
|
|
add r3, r3, #1
|
|
str r3, [r0, #4]
|
|
bl FlashReadPages
|
|
ldrh r3, [r6]
|
|
cmp r3, r10
|
|
ldr r3, [r4, #3288]
|
|
bne .L682
|
|
mvn r2, #0
|
|
str r2, [r3, r8]
|
|
ldr r3, [r4, #3288]
|
|
ldr r3, [r3, r8]
|
|
cmp r3, r2
|
|
beq .L684
|
|
.L683:
|
|
ldr r2, [r4, #2588]
|
|
ldr r3, [r6, #4]
|
|
cmn r2, #1
|
|
beq .L732
|
|
cmp r2, r3
|
|
bhi .L686
|
|
.L732:
|
|
cmn r3, #1
|
|
addne r2, r3, #1
|
|
strne r2, [r4, #2588]
|
|
.L686:
|
|
ldrh r2, [r6]
|
|
movw r1, #61634
|
|
cmp r2, r1
|
|
beq .L687
|
|
bhi .L688
|
|
movw r1, #61574
|
|
cmp r2, r1
|
|
beq .L689
|
|
movw r1, #61604
|
|
cmp r2, r1
|
|
beq .L690
|
|
.L691:
|
|
ldr r3, [fp, #-52]
|
|
add r3, r3, #1
|
|
str r3, [fp, #-52]
|
|
ldrh r3, [fp, #-52]
|
|
cmp r7, r3
|
|
bhi .L714
|
|
b .L715
|
|
.L682:
|
|
ldr r3, [r3, r8]
|
|
cmn r3, #1
|
|
bne .L683
|
|
sub r9, r9, #1
|
|
uxth r9, r9
|
|
cmp r9, #0
|
|
bne .L685
|
|
.L684:
|
|
mov r1, #1
|
|
b .L753
|
|
.L688:
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
moveq r1, #0
|
|
bne .L691
|
|
.L753:
|
|
mov r0, r5
|
|
bl FtlFreeSysBlkQueueIn
|
|
b .L691
|
|
.L687:
|
|
ldr r8, .L756+8
|
|
ldr r3, [r4, #328]
|
|
ldrh r2, [r8]
|
|
cmp r2, r3
|
|
bls .L693
|
|
ldr r1, .L756+12
|
|
mov r2, #1232
|
|
ldr r0, .L756+16
|
|
bl sftl_printk
|
|
.L693:
|
|
ldr lr, [r4, #328]
|
|
ldrh r1, [r8]
|
|
uxth r2, lr
|
|
sub r3, r2, #1
|
|
sub r2, r2, r1
|
|
sub r2, r2, #1
|
|
sxth r3, r3
|
|
sxth r2, r2
|
|
str r2, [fp, #-60]
|
|
ldr r2, [r4, #3380]
|
|
str r2, [fp, #-56]
|
|
mov r2, r3
|
|
ldr r0, [fp, #-56]
|
|
add r10, r0, #4
|
|
.L694:
|
|
ldr r0, [fp, #-60]
|
|
cmp r0, r3
|
|
bge .L699
|
|
lsl r0, r2, #2
|
|
str r0, [fp, #-64]
|
|
sub r0, r2, #1
|
|
ldr r9, [r6, #4]
|
|
ldr ip, [r10, r0, lsl #2]
|
|
cmp r9, ip
|
|
bls .L695
|
|
ldr r0, [fp, #-56]
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne .L696
|
|
cmp lr, r1
|
|
addne r1, r1, #1
|
|
strhne r1, [r8] @ movhi
|
|
.L696:
|
|
uxth lr, r3
|
|
mov ip, #0
|
|
.L697:
|
|
uxth r8, ip
|
|
ldr r0, [r4, #3380]
|
|
sxth r1, ip
|
|
cmp lr, r8
|
|
bhi .L698
|
|
ldr ip, [fp, #-64]
|
|
lsl r2, r2, #1
|
|
ldr r1, [r6, #4]
|
|
str r1, [r0, ip]
|
|
ldr r1, [r4, #3356]
|
|
strh r5, [r1, r2] @ movhi
|
|
.L699:
|
|
cmp r3, #0
|
|
blt .L691
|
|
ldr r0, .L756+8
|
|
ldr r2, [r4, #328]
|
|
ldrh r1, [r0]
|
|
sub r2, r2, r1
|
|
sub r2, r2, #1
|
|
sxth r2, r2
|
|
cmp r2, r3
|
|
blt .L691
|
|
ldr r2, [r4, #3380]
|
|
add r1, r1, #1
|
|
strh r1, [r0] @ movhi
|
|
ldr r1, [r6, #4]
|
|
str r1, [r2, r3, lsl #2]
|
|
lsl r3, r3, #1
|
|
ldr r2, [r4, #3356]
|
|
.L752:
|
|
strh r5, [r2, r3] @ movhi
|
|
b .L691
|
|
.L698:
|
|
add r1, r1, #1
|
|
add ip, ip, #1
|
|
ldr r8, [r0, r1, lsl #2]
|
|
add r0, r0, r1, lsl #2
|
|
lsl r1, r1, #1
|
|
str r8, [r0, #-4]
|
|
ldr r0, [r4, #3356]
|
|
ldrh r1, [r0, r1]!
|
|
strh r1, [r0, #-2] @ movhi
|
|
b .L697
|
|
.L695:
|
|
sub r3, r3, #1
|
|
mov r2, r0
|
|
sxth r3, r3
|
|
b .L694
|
|
.L689:
|
|
ldr r8, .L756+20
|
|
ldrh r2, [r8]
|
|
ldrh r3, [r8, #-24]
|
|
cmp r2, r3
|
|
bls .L703
|
|
ldr r1, .L756+12
|
|
movw r2, #1273
|
|
ldr r0, .L756+16
|
|
bl sftl_printk
|
|
.L703:
|
|
ldrh r2, [r8, #-24]
|
|
ldrh r1, [r8]
|
|
sub r0, r2, #1
|
|
ldr ip, [r4, #3368]
|
|
sxth r3, r0
|
|
sub r0, r0, r1
|
|
.L704:
|
|
cmp r3, r0
|
|
ble .L709
|
|
ldr r10, [r6, #4]
|
|
lsl lr, r3, #2
|
|
ldr r9, [ip, r3, lsl #2]
|
|
cmp r10, r9
|
|
bls .L705
|
|
sub r2, r2, r1
|
|
ldr r0, [ip]
|
|
clz r2, r2
|
|
lsr r2, r2, #5
|
|
cmp r0, #0
|
|
orrne r2, r2, #1
|
|
uxth r0, r3
|
|
cmp r2, #0
|
|
addeq r1, r1, #1
|
|
strheq r1, [r8] @ movhi
|
|
mov r1, #0
|
|
.L707:
|
|
uxth r8, r1
|
|
ldr ip, [r4, #3368]
|
|
sxth r2, r1
|
|
cmp r0, r8
|
|
bhi .L708
|
|
ldr r2, [r6, #4]
|
|
str r2, [ip, lr]
|
|
lsl r2, r3, #1
|
|
ldr r1, [r4, #348]
|
|
strh r5, [r1, r2] @ movhi
|
|
.L709:
|
|
cmp r3, #0
|
|
blt .L691
|
|
ldr r0, .L756+20
|
|
ldrh r2, [r0, #-24]
|
|
ldrh r1, [r0]
|
|
sub r2, r2, #1
|
|
sub r2, r2, r1
|
|
sxth r2, r2
|
|
cmp r2, r3
|
|
blt .L691
|
|
ldr r2, [r4, #3368]
|
|
add r1, r1, #1
|
|
strh r1, [r0] @ movhi
|
|
ldr r1, [r6, #4]
|
|
str r1, [r2, r3, lsl #2]
|
|
lsl r3, r3, #1
|
|
ldr r2, [r4, #348]
|
|
b .L752
|
|
.L708:
|
|
add r2, r2, #1
|
|
add r1, r1, #1
|
|
ldr r8, [ip, r2, lsl #2]
|
|
add ip, ip, r2, lsl #2
|
|
lsl r2, r2, #1
|
|
str r8, [ip, #-4]
|
|
ldr ip, [r4, #348]
|
|
ldrh r2, [ip, r2]!
|
|
strh r2, [ip, #-2] @ movhi
|
|
b .L707
|
|
.L705:
|
|
sub r3, r3, #1
|
|
sxth r3, r3
|
|
b .L704
|
|
.L690:
|
|
ldr r8, .L756+24
|
|
movw r2, #65535
|
|
ldrh r1, [r8]
|
|
cmp r1, r2
|
|
strheq r5, [r8] @ movhi
|
|
beq .L754
|
|
ldrh r0, [r8, #4]
|
|
cmp r0, r2
|
|
beq .L712
|
|
mov r1, #1
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L712:
|
|
ldr r3, [r6, #4]
|
|
ldr r2, [r4, #2632]
|
|
cmp r2, r3
|
|
strhcs r5, [r8, #4] @ movhi
|
|
bcs .L691
|
|
ldrh r3, [r8]
|
|
strh r3, [r8, #4] @ movhi
|
|
strh r5, [r8] @ movhi
|
|
ldr r3, [r6, #4]
|
|
.L754:
|
|
str r3, [r4, #2632]
|
|
b .L691
|
|
.L716:
|
|
ldr r1, [r4, #3356]
|
|
ldrh r3, [r1]
|
|
cmp r3, #0
|
|
beq .L718
|
|
.L721:
|
|
ldr r0, [r4, #348]
|
|
ldrh r2, [r0]
|
|
cmp r2, #0
|
|
beq .L719
|
|
.L720:
|
|
movw r3, #3436
|
|
ldrh r2, [r4, r3]
|
|
ldr r3, [r4, #328]
|
|
cmp r2, r3
|
|
bls .L750
|
|
ldr r1, .L756+12
|
|
movw r2, #1398
|
|
ldr r0, .L756+16
|
|
bl sftl_printk
|
|
.L750:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L718:
|
|
movw r2, #3436
|
|
ldrh r2, [r4, r2]
|
|
cmp r2, #0
|
|
ldrne r0, [r4, #328]
|
|
beq .L721
|
|
.L722:
|
|
sxth r2, r3
|
|
cmp r2, r0
|
|
bcs .L721
|
|
lsl ip, r2, #1
|
|
add r3, r3, #1
|
|
ldrh ip, [r1, ip]
|
|
cmp ip, #0
|
|
beq .L722
|
|
mov r3, r2
|
|
mov lr, #0
|
|
b .L723
|
|
.L724:
|
|
sub ip, r3, r2
|
|
ldr r0, [r4, #3356]
|
|
lsl r1, r3, #1
|
|
lsl r5, ip, #1
|
|
ldrh r6, [r0, r1]
|
|
strh r6, [r0, r5] @ movhi
|
|
ldr r0, [r4, #3380]
|
|
ldr r5, [r0, r3, lsl #2]
|
|
add r3, r3, #1
|
|
str r5, [r0, ip, lsl #2]
|
|
sxth r3, r3
|
|
ldr r0, [r4, #3356]
|
|
strh lr, [r0, r1] @ movhi
|
|
.L723:
|
|
ldr r1, [r4, #328]
|
|
cmp r3, r1
|
|
bcc .L724
|
|
b .L721
|
|
.L719:
|
|
ldr r1, .L756+20
|
|
ldrh r3, [r1]
|
|
cmp r3, #0
|
|
ldrhne ip, [r1, #-24]!
|
|
beq .L720
|
|
.L728:
|
|
sxth r3, r2
|
|
mov lr, r3
|
|
cmp r3, ip
|
|
bge .L720
|
|
lsl r5, r3, #1
|
|
add r2, r2, #1
|
|
ldrh r5, [r0, r5]
|
|
cmp r5, #0
|
|
beq .L728
|
|
mov r5, #0
|
|
.L729:
|
|
ldrh r2, [r1]
|
|
cmp r3, r2
|
|
bge .L720
|
|
sub ip, r3, lr
|
|
ldr r0, [r4, #348]
|
|
lsl r2, r3, #1
|
|
lsl r6, ip, #1
|
|
ldrh r7, [r0, r2]
|
|
strh r7, [r0, r6] @ movhi
|
|
ldr r0, [r4, #3368]
|
|
ldr r6, [r0, r3, lsl #2]
|
|
add r3, r3, #1
|
|
str r6, [r0, ip, lsl #2]
|
|
sxth r3, r3
|
|
ldr r0, [r4, #348]
|
|
strh r5, [r0, r2] @ movhi
|
|
b .L729
|
|
.L757:
|
|
.align 2
|
|
.L756:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+312
|
|
.word .LANCHOR0+3436
|
|
.word .LANCHOR1+231
|
|
.word .LC8
|
|
.word .LANCHOR0+344
|
|
.word .LANCHOR0+2624
|
|
.size FtlScanSysBlk, .-FtlScanSysBlk
|
|
.align 2
|
|
.global FtlLoadBbt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadBbt, %function
|
|
FtlLoadBbt:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L792
|
|
ldr r7, .L792+4
|
|
ldr r8, .L792+8
|
|
ldr r3, [r4, #3300]
|
|
ldr r6, [r4, #3332]
|
|
str r3, [r4, #3460]
|
|
str r6, [r4, #3464]
|
|
bl FtlBbtMemInit
|
|
movw r3, #298
|
|
ldrh r5, [r4, r3]
|
|
sub r5, r5, #1
|
|
uxth r5, r5
|
|
.L759:
|
|
ldrh r3, [r7]
|
|
sub r3, r3, #16
|
|
cmp r5, r3
|
|
ble .L764
|
|
mov r2, #1
|
|
mov r0, r8
|
|
mov r1, r2
|
|
lsl r3, r5, #10
|
|
str r3, [r4, #3456]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #3452]
|
|
cmn r3, #1
|
|
beq .L760
|
|
.L763:
|
|
ldrh r2, [r6]
|
|
movw r3, #61649
|
|
cmp r2, r3
|
|
bne .L762
|
|
ldr r2, [r6, #4]
|
|
ldr r3, .L792+12
|
|
str r2, [r4, #360]
|
|
ldrh r2, [r6, #8]
|
|
strh r5, [r3] @ movhi
|
|
strh r2, [r3, #4] @ movhi
|
|
.L764:
|
|
ldr r5, .L792+12
|
|
movw r2, #65535
|
|
ldrh r3, [r5]
|
|
cmp r3, r2
|
|
beq .L778
|
|
ldrh r3, [r5, #4]
|
|
cmp r3, r2
|
|
beq .L768
|
|
mov r2, #1
|
|
ldr r0, .L792+8
|
|
mov r1, r2
|
|
lsl r3, r3, #10
|
|
str r3, [r4, #3456]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #3452]
|
|
cmn r3, #1
|
|
beq .L768
|
|
ldrh r2, [r6]
|
|
movw r3, #61649
|
|
cmp r2, r3
|
|
bne .L768
|
|
ldr r3, [r6, #4]
|
|
ldr r2, [r4, #360]
|
|
cmp r3, r2
|
|
bls .L768
|
|
str r3, [r4, #360]
|
|
ldrh r2, [r5, #4]
|
|
ldrh r3, [r6, #8]
|
|
strh r2, [r5] @ movhi
|
|
strh r3, [r5, #4] @ movhi
|
|
.L768:
|
|
ldrh r0, [r5]
|
|
mov r1, #1
|
|
ldr r10, .L792+8
|
|
bl FtlGetLastWrittenPage
|
|
sxth r9, r0
|
|
mov r8, r0
|
|
add r3, r9, #1
|
|
mov r7, #0
|
|
strh r3, [r5, #2] @ movhi
|
|
.L770:
|
|
sub r3, r8, r7
|
|
tst r3, #32768
|
|
beq .L773
|
|
ldr r1, .L792+16
|
|
mov r2, #251
|
|
ldr r0, .L792+20
|
|
bl sftl_printk
|
|
.L772:
|
|
ldrh r0, [r6, #12]
|
|
ldrh r3, [r6, #10]
|
|
strh r3, [r5, #6] @ movhi
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
beq .L775
|
|
ldr r2, [r4, #228]
|
|
cmp r0, r2
|
|
beq .L775
|
|
ldrh r1, [r4, #242]
|
|
cmp r0, r1, lsr #2
|
|
movcc r3, #1
|
|
movcs r3, #0
|
|
cmp r2, r1, lsr #2
|
|
andcc r3, r3, #1
|
|
movcs r3, #0
|
|
cmp r3, #0
|
|
beq .L775
|
|
bl FtlSysBlkNumInit
|
|
.L775:
|
|
ldr r6, .L792+24
|
|
mov r5, #0
|
|
add r7, r6, #3008
|
|
.L776:
|
|
ldrh r3, [r4, #254]
|
|
cmp r3, r5
|
|
bhi .L777
|
|
mov r0, #0
|
|
ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L760:
|
|
ldr r3, [r4, #3456]
|
|
mov r2, #1
|
|
mov r0, r8
|
|
mov r1, r2
|
|
add r3, r3, #1
|
|
str r3, [r4, #3456]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #3452]
|
|
cmn r3, #1
|
|
bne .L763
|
|
.L762:
|
|
sub r5, r5, #1
|
|
uxth r5, r5
|
|
b .L759
|
|
.L773:
|
|
ldrh r2, [r5]
|
|
sub r3, r9, r7
|
|
mov r0, r10
|
|
orr r3, r3, r2, lsl #10
|
|
mov r2, #1
|
|
str r3, [r4, #3456]
|
|
mov r1, r2
|
|
ldr r3, [r4, #3300]
|
|
str r3, [r4, #3460]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #3452]
|
|
cmn r3, #1
|
|
beq .L771
|
|
ldrh r2, [r6]
|
|
movw r3, #61649
|
|
cmp r2, r3
|
|
beq .L772
|
|
.L771:
|
|
add r7, r7, #1
|
|
b .L770
|
|
.L777:
|
|
ldrh r2, [r7]
|
|
ldr r3, [r4, #3460]
|
|
ldr r0, [r6], #4
|
|
mul r1, r5, r2
|
|
lsl r2, r2, #2
|
|
add r5, r5, #1
|
|
add r1, r3, r1, lsl #2
|
|
bl ftl_memcpy
|
|
b .L776
|
|
.L778:
|
|
mvn r0, #0
|
|
ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L793:
|
|
.align 2
|
|
.L792:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+298
|
|
.word .LANCHOR0+3452
|
|
.word .LANCHOR0+352
|
|
.word .LANCHOR1+245
|
|
.word .LC8
|
|
.word .LANCHOR0+380
|
|
.size FtlLoadBbt, .-FtlLoadBbt
|
|
.section .rodata.str1.1
|
|
.LC95:
|
|
.ascii "prog read error: = %x\012\000"
|
|
.LC96:
|
|
.ascii "prog read REFRESH: = %x\012\000"
|
|
.LC97:
|
|
.ascii "prog read s error: = %x %x %x %x %x\012\000"
|
|
.LC98:
|
|
.ascii "prog read d error: = %x %x %x %x %x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FlashProgPages
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashProgPages, %function
|
|
FlashProgPages:
|
|
@ args = 0, pretend = 0, frame = 48
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #60
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r6, .L833
|
|
bic r3, r3, #8128
|
|
mov r7, r0
|
|
bic r3, r3, #63
|
|
mov r10, r1
|
|
mov r4, r0
|
|
mov r5, r0
|
|
str r2, [fp, #-88]
|
|
mov r9, #0
|
|
ldr r3, [r3, #24]
|
|
str r3, [fp, #-48]
|
|
ldrh r3, [r6, #12]
|
|
str r3, [fp, #-80]
|
|
lsl r3, r3, #3
|
|
str r3, [fp, #-84]
|
|
.L795:
|
|
cmp r9, r10
|
|
bne .L808
|
|
mov r0, #20
|
|
ldr r5, .L833+4
|
|
ldr r8, .L833+8
|
|
mla r7, r0, r9, r7
|
|
.L809:
|
|
cmp r7, r4
|
|
beq .L802
|
|
ldr r2, [r6, #3320]
|
|
mov r3, #0
|
|
sub r0, fp, #68
|
|
mov r1, #1
|
|
str r3, [r2]
|
|
ldr r2, [r6, #3328]
|
|
str r3, [r2]
|
|
ldr r2, [fp, #-88]
|
|
ldr r3, [r4, #4]
|
|
str r3, [fp, #-64]
|
|
ldr r3, [r6, #3320]
|
|
str r3, [fp, #-60]
|
|
ldr r3, [r6, #3328]
|
|
str r3, [fp, #-56]
|
|
bl FlashReadPages
|
|
ldr r9, [fp, #-68]
|
|
cmn r9, #1
|
|
bne .L810
|
|
ldr r1, [r4, #4]
|
|
mov r0, r5
|
|
bl sftl_printk
|
|
str r9, [r4]
|
|
.L810:
|
|
ldr r9, [fp, #-68]
|
|
cmp r9, #256
|
|
bne .L811
|
|
ldr r1, [r4, #4]
|
|
mov r0, r8
|
|
bl sftl_printk
|
|
str r9, [r4]
|
|
.L811:
|
|
ldr r3, [r4, #12]
|
|
cmp r3, #0
|
|
beq .L812
|
|
ldr r1, .L833
|
|
ldr r2, [r3]
|
|
ldr r1, [r1, #3328]
|
|
ldr r0, [r1]
|
|
cmp r2, r0
|
|
bne .L813
|
|
ldr lr, [r3, #8]
|
|
ldr ip, [r1, #8]
|
|
cmp lr, ip
|
|
beq .L812
|
|
.L813:
|
|
ldr r1, [r1, #4]
|
|
strd r0, [sp]
|
|
ldr r0, .L833+12
|
|
ldr r3, [r3, #4]
|
|
ldr r1, [r4, #4]
|
|
bl sftl_printk
|
|
mvn r3, #0
|
|
str r3, [r4]
|
|
.L812:
|
|
ldr r3, [r4, #8]
|
|
cmp r3, #0
|
|
beq .L814
|
|
ldr r1, .L833
|
|
ldr r2, [r3]
|
|
ldr r1, [r1, #3320]
|
|
ldr r0, [r1]
|
|
cmp r2, r0
|
|
bne .L815
|
|
ldr lr, [r3, #2048]
|
|
ldr ip, [r1, #2048]
|
|
cmp lr, ip
|
|
beq .L814
|
|
.L815:
|
|
ldr r1, [r1, #4]
|
|
strd r0, [sp]
|
|
ldr r0, .L833+16
|
|
ldr r3, [r3, #4]
|
|
ldr r1, [r4, #4]
|
|
bl sftl_printk
|
|
mvn r3, #0
|
|
str r3, [r4]
|
|
.L814:
|
|
add r4, r4, #20
|
|
b .L809
|
|
.L808:
|
|
ldr r3, [r5, #8]
|
|
cmp r3, #0
|
|
beq .L796
|
|
ldr r3, [r5, #12]
|
|
cmp r3, #0
|
|
bne .L797
|
|
.L796:
|
|
ldr r1, .L833+20
|
|
mov r2, #148
|
|
ldr r0, .L833+24
|
|
bl sftl_printk
|
|
.L797:
|
|
sub r2, fp, #76
|
|
sub r1, fp, #72
|
|
mov r0, r5
|
|
bl l2p_addr_tran
|
|
ldr r8, [fp, #-76]
|
|
cmp r8, #3
|
|
bls .L798
|
|
.L832:
|
|
mvn r3, #0
|
|
str r3, [r5]
|
|
b .L799
|
|
.L798:
|
|
cmp r8, #0
|
|
bne .L800
|
|
ldr r3, [fp, #-72]
|
|
ldr r2, [fp, #-84]
|
|
cmp r2, r3
|
|
bls .L800
|
|
ldr r6, .L833+20
|
|
ldr r5, .L833+28
|
|
.L801:
|
|
ldr r2, [r4, #4]
|
|
mvn r3, #0
|
|
mov r1, r6
|
|
str r3, [r4]
|
|
mov r0, r5
|
|
add r8, r8, #1
|
|
bl sftl_printk
|
|
ldr r1, [r4, #8]
|
|
ldr r0, .L833+32
|
|
mov r3, #16
|
|
mov r2, #4
|
|
add r4, r4, #20
|
|
bl rknand_print_hex
|
|
mov r3, #4
|
|
ldr r1, [r4, #-8]
|
|
mov r2, r3
|
|
ldr r0, .L833+36
|
|
bl rknand_print_hex
|
|
cmp r10, r8
|
|
bne .L801
|
|
bl dump_stack
|
|
.L802:
|
|
mov r3, sp
|
|
ldr r2, [fp, #-48]
|
|
bic r3, r3, #8128
|
|
bic r3, r3, #63
|
|
ldr r3, [r3, #24]
|
|
cmp r2, r3
|
|
beq .L817
|
|
bl __stack_chk_fail
|
|
.L800:
|
|
ldr r1, [r5, #8]
|
|
tst r1, #63
|
|
moveq r8, r1
|
|
beq .L803
|
|
ldr r8, [r6, #3320]
|
|
cmp r8, r1
|
|
beq .L803
|
|
ldr r3, .L833+40
|
|
mov r0, r8
|
|
ldrh r2, [r3]
|
|
lsl r2, r2, #9
|
|
bl ftl_memcpy
|
|
.L803:
|
|
ldr r3, [r5, #12]
|
|
mov r2, r8
|
|
ldr r1, [fp, #-72]
|
|
ldrb r0, [fp, #-76] @ zero_extendqisi2
|
|
ldr ip, [r6, #3252]
|
|
blx ip
|
|
cmp r0, #0
|
|
streq r0, [r5]
|
|
mvnne r3, #0
|
|
strne r3, [r5]
|
|
ldrh r3, [r6, #14]
|
|
cmp r3, #4
|
|
bne .L799
|
|
ldr r0, [fp, #-80]
|
|
add r2, r8, #2048
|
|
ldr r3, [r5, #12]
|
|
ldr r1, [fp, #-72]
|
|
ldr ip, [r6, #3252]
|
|
add r3, r3, #8
|
|
add r1, r0, r1
|
|
ldrb r0, [fp, #-76] @ zero_extendqisi2
|
|
blx ip
|
|
cmp r0, #0
|
|
bne .L832
|
|
.L799:
|
|
add r9, r9, #1
|
|
add r5, r5, #20
|
|
b .L795
|
|
.L817:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L834:
|
|
.align 2
|
|
.L833:
|
|
.word .LANCHOR0
|
|
.word .LC95
|
|
.word .LC96
|
|
.word .LC97
|
|
.word .LC98
|
|
.word .LANCHOR1+256
|
|
.word .LC8
|
|
.word .LC86
|
|
.word .LC87
|
|
.word .LC88
|
|
.word .LANCHOR0+258
|
|
.size FlashProgPages, .-FlashProgPages
|
|
.align 2
|
|
.global FtlLowFormatEraseBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLowFormatEraseBlock, %function
|
|
FtlLowFormatEraseBlock:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #20
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L877
|
|
mov r9, #0
|
|
mov r6, r9
|
|
mov r5, r9
|
|
add r10, r4, #312
|
|
strd r0, [fp, #-52]
|
|
mov r8, #20
|
|
str r0, [r4, #3284]
|
|
.L836:
|
|
ldrh r1, [r4, #232]
|
|
uxth r2, r9
|
|
cmp r1, r2
|
|
bhi .L840
|
|
cmp r6, #0
|
|
beq .L835
|
|
mov r7, #0
|
|
mov r8, #20
|
|
ldr r0, [r4, #3268]
|
|
mov r2, r6
|
|
mov r1, #0
|
|
bl FlashEraseBlocks
|
|
.L844:
|
|
mul r3, r8, r7
|
|
ldr r2, [r4, #3268]
|
|
add r1, r2, r3
|
|
ldr r3, [r2, r3]
|
|
cmn r3, #1
|
|
bne .L843
|
|
ldr r0, [r1, #4]
|
|
add r5, r5, #1
|
|
uxth r5, r5
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
.L843:
|
|
add r7, r7, #1
|
|
uxth r3, r7
|
|
cmp r6, r3
|
|
bhi .L844
|
|
.L845:
|
|
ldr r3, [fp, #-48]
|
|
mov r9, #0
|
|
cmp r3, #0
|
|
moveq r3, #2
|
|
movne r8, #1
|
|
ldrne r3, .L877+4
|
|
ldreq r8, [fp, #-48]
|
|
streq r3, [fp, #-56]
|
|
ldrhne r3, [r3]
|
|
strne r3, [fp, #-56]
|
|
.L853:
|
|
mov r10, #0
|
|
mov r6, r10
|
|
.L846:
|
|
ldrh r1, [r4, #232]
|
|
uxth r2, r10
|
|
cmp r1, r2
|
|
bhi .L849
|
|
cmp r6, #0
|
|
beq .L835
|
|
mov r7, #0
|
|
mov r10, #20
|
|
ldr r0, [r4, #3268]
|
|
mov r2, r8
|
|
mov r1, r6
|
|
mov r3, #1
|
|
bl FlashProgPages
|
|
.L852:
|
|
mul r3, r10, r7
|
|
ldr r2, [r4, #3268]
|
|
add r1, r2, r3
|
|
ldr r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L851
|
|
ldr r0, [r1, #4]
|
|
add r5, r5, #1
|
|
uxth r5, r5
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
.L851:
|
|
add r7, r7, #1
|
|
uxth r3, r7
|
|
cmp r6, r3
|
|
bhi .L852
|
|
add r9, r9, #1
|
|
ldr r2, [fp, #-56]
|
|
uxth r3, r9
|
|
cmp r2, r3
|
|
bhi .L853
|
|
mov r7, #0
|
|
mov r9, #20
|
|
.L855:
|
|
ldr r3, [fp, #-48]
|
|
cmp r3, #0
|
|
beq .L854
|
|
mul r3, r9, r7
|
|
ldr r2, [r4, #3268]
|
|
add r1, r2, r3
|
|
ldr r3, [r2, r3]
|
|
cmp r3, #0
|
|
bne .L854
|
|
ldr r0, [r1, #4]
|
|
mov r1, #1
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L854:
|
|
add r7, r7, #1
|
|
uxth r3, r7
|
|
cmp r6, r3
|
|
bhi .L855
|
|
ldr r3, [fp, #-48]
|
|
subs r1, r3, #0
|
|
ldr r3, [fp, #-52]
|
|
movne r1, #1
|
|
cmp r3, #63
|
|
orrls r1, r1, #1
|
|
cmp r1, #0
|
|
beq .L835
|
|
ldr r0, [r4, #3268]
|
|
mov r2, r6
|
|
mov r1, r8
|
|
bl FlashEraseBlocks
|
|
.L835:
|
|
mov r0, r5
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L840:
|
|
uxth r2, r9
|
|
ldr r0, [r4, #3268]
|
|
mov r3, #0
|
|
mul r1, r8, r2
|
|
add r2, r4, r2
|
|
str r3, [r0, r1]
|
|
ldr r1, [fp, #-52]
|
|
ldrb r0, [r2, #260] @ zero_extendqisi2
|
|
bl V2P_block
|
|
ldr r3, [fp, #-48]
|
|
mov r7, r0
|
|
cmp r3, #0
|
|
beq .L837
|
|
bl IsBlkInVendorPart
|
|
cmp r0, #0
|
|
bne .L838
|
|
.L837:
|
|
mov r0, r7
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
addne r5, r5, #1
|
|
uxthne r5, r5
|
|
bne .L838
|
|
ldr r2, [r4, #3268]
|
|
lsl r7, r7, #10
|
|
ldrh r0, [r10]
|
|
ldr r1, [r4, #3316]
|
|
mla r2, r8, r6, r2
|
|
mul r0, r6, r0
|
|
add r6, r6, #1
|
|
cmp r0, #0
|
|
uxth r6, r6
|
|
str r1, [r2, #8]
|
|
add r1, r0, #3
|
|
movge r1, r0
|
|
ldr r0, [r4, #3336]
|
|
bic r1, r1, #3
|
|
str r7, [r2, #4]
|
|
add r1, r0, r1
|
|
str r1, [r2, #12]
|
|
.L838:
|
|
add r9, r9, #1
|
|
b .L836
|
|
.L849:
|
|
uxth r2, r10
|
|
mov r3, #20
|
|
ldr r0, [r4, #3268]
|
|
mul r1, r3, r2
|
|
add r2, r4, r2
|
|
mov r3, #0
|
|
str r3, [r0, r1]
|
|
ldr r1, [fp, #-52]
|
|
ldrb r0, [r2, #260] @ zero_extendqisi2
|
|
bl V2P_block
|
|
ldr r3, [fp, #-48]
|
|
mov r7, r0
|
|
cmp r3, #0
|
|
beq .L847
|
|
bl IsBlkInVendorPart
|
|
cmp r0, #0
|
|
bne .L848
|
|
.L847:
|
|
mov r0, r7
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
bne .L848
|
|
ldr r2, [r4, #3268]
|
|
mov r3, #20
|
|
ldr r1, [r4, #3312]
|
|
add r7, r9, r7, lsl #10
|
|
mla r2, r3, r6, r2
|
|
ldr r3, .L877+8
|
|
ldrh r0, [r3]
|
|
str r1, [r2, #8]
|
|
str r7, [r2, #4]
|
|
mul r0, r6, r0
|
|
add r6, r6, #1
|
|
cmp r0, #0
|
|
add r1, r0, #3
|
|
movge r1, r0
|
|
ldr r0, [r4, #3316]
|
|
bic r1, r1, #3
|
|
uxth r6, r6
|
|
add r1, r0, r1
|
|
str r1, [r2, #12]
|
|
.L848:
|
|
add r10, r10, #1
|
|
b .L846
|
|
.L878:
|
|
.align 2
|
|
.L877:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+304
|
|
.word .LANCHOR0+312
|
|
.size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
|
|
.align 2
|
|
.global FlashTestBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashTestBlk, %function
|
|
FlashTestBlk:
|
|
@ args = 0, pretend = 0, frame = 88
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #92
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
cmp r0, #11
|
|
bic r6, r3, #8128
|
|
mov r4, r0
|
|
bic r6, r6, #63
|
|
movls r5, #0
|
|
ldr r3, [r6, #24]
|
|
str r3, [fp, #-32]
|
|
bls .L879
|
|
ldr r5, .L885
|
|
sub r0, fp, #96
|
|
mov r2, #32
|
|
mov r1, #165
|
|
str r0, [fp, #-104]
|
|
lsl r4, r4, #10
|
|
ldr r3, [r5, #3324]
|
|
str r3, [fp, #-108]
|
|
bl ftl_memset
|
|
ldr r0, [r5, #3324]
|
|
mov r2, #8
|
|
mov r1, #90
|
|
bl ftl_memset
|
|
mov r2, #1
|
|
sub r0, fp, #116
|
|
mov r1, r2
|
|
str r4, [fp, #-112]
|
|
bl FlashEraseBlocks
|
|
mov r3, #1
|
|
sub r0, fp, #116
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldr r3, [fp, #-116]
|
|
cmp r3, #0
|
|
mvnne r5, #0
|
|
bne .L881
|
|
add r3, r4, #1
|
|
sub r0, fp, #116
|
|
str r3, [fp, #-112]
|
|
mov r3, #1
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldr r5, [fp, #-116]
|
|
subs r5, r5, #0
|
|
movne r5, #1
|
|
rsb r5, r5, #0
|
|
.L881:
|
|
sub r0, fp, #116
|
|
mov r2, #1
|
|
mov r1, #0
|
|
str r4, [fp, #-112]
|
|
bl FlashEraseBlocks
|
|
.L879:
|
|
ldr r2, [fp, #-32]
|
|
ldr r3, [r6, #24]
|
|
cmp r2, r3
|
|
beq .L882
|
|
bl __stack_chk_fail
|
|
.L882:
|
|
mov r0, r5
|
|
sub sp, fp, #24
|
|
ldmfd sp, {r4, r5, r6, fp, sp, pc}
|
|
.L886:
|
|
.align 2
|
|
.L885:
|
|
.word .LANCHOR0
|
|
.size FlashTestBlk, .-FlashTestBlk
|
|
.section .rodata.str1.1
|
|
.LC99:
|
|
.ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
|
|
.LC100:
|
|
.ascii "FtlBbmTblFlush error:%x\012\000"
|
|
.LC101:
|
|
.ascii "FtlBbmTblFlush error = %x error count = %d\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlBbmTblFlush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbmTblFlush, %function
|
|
FtlBbmTblFlush:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L895
|
|
mov r5, #0
|
|
mov r1, #0
|
|
add r6, r4, #380
|
|
add r7, r6, #3008
|
|
ldr r3, [r4, #3332]
|
|
str r3, [r4, #3464]
|
|
movw r3, #310
|
|
ldr r0, [r4, #3300]
|
|
ldrh r2, [r4, r3]
|
|
str r0, [r4, #3460]
|
|
bl ftl_memset
|
|
.L888:
|
|
ldrh r3, [r4, #254]
|
|
cmp r3, r5
|
|
bgt .L889
|
|
ldr r6, [r4, #3464]
|
|
mov r2, #16
|
|
ldr r5, .L895+4
|
|
mov r1, #255
|
|
mov r0, r6
|
|
mov r7, #0
|
|
bl ftl_memset
|
|
ldr r3, .L895+8
|
|
strh r3, [r6] @ movhi
|
|
mov r9, r5
|
|
mov r8, r7
|
|
ldr r3, [r4, #360]
|
|
str r3, [r6, #4]
|
|
ldrh r3, [r9], #-48
|
|
strh r3, [r6, #2] @ movhi
|
|
ldr r3, [r4, #356]
|
|
str r3, [r6, #8]
|
|
ldr r3, [r4, #228]
|
|
strh r3, [r6, #12] @ movhi
|
|
ldr r3, [r4, #2604]
|
|
strh r3, [r6, #14] @ movhi
|
|
.L890:
|
|
ldr r3, [r4, #3300]
|
|
mov r10, #0
|
|
ldrh r2, [r5, #2]
|
|
ldrh r1, [r5]
|
|
str r3, [r4, #3460]
|
|
ldr r3, [r4, #3332]
|
|
str r3, [r4, #3464]
|
|
orr r3, r2, r1, lsl #10
|
|
str r3, [r4, #3456]
|
|
ldrh r3, [r6, #10]
|
|
str r3, [sp]
|
|
ldr r0, .L895+12
|
|
ldrh r3, [r5, #4]
|
|
str r10, [r4, #3452]
|
|
bl sftl_printk
|
|
ldrh r3, [r9]
|
|
ldrh r2, [r5, #2]
|
|
sub r3, r3, #1
|
|
cmp r2, r3
|
|
blt .L891
|
|
ldr r3, [r4, #360]
|
|
ldr r0, [r4, #3268]
|
|
add r3, r3, #1
|
|
str r3, [r4, #360]
|
|
str r3, [r6, #4]
|
|
ldrh r2, [r5]
|
|
ldrh r3, [r5, #4]
|
|
strh r2, [r6, #8] @ movhi
|
|
strh r2, [r5, #4] @ movhi
|
|
mov r2, #1
|
|
strh r3, [r5] @ movhi
|
|
mov r1, r2
|
|
lsl r3, r3, #10
|
|
str r3, [r4, #3456]
|
|
str r3, [r0, #4]
|
|
strh r10, [r5, #2] @ movhi
|
|
bl FlashEraseBlocks
|
|
.L891:
|
|
mov r3, #1
|
|
ldr r0, .L895+16
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldrh r3, [r5, #2]
|
|
ldr r0, [r4, #3452]
|
|
add r3, r3, #1
|
|
strh r3, [r5, #2] @ movhi
|
|
cmn r0, #1
|
|
bne .L892
|
|
add r7, r7, #1
|
|
ldr r1, [r4, #3456]
|
|
ldr r0, .L895+20
|
|
uxth r7, r7
|
|
bl sftl_printk
|
|
cmp r7, #3
|
|
bls .L890
|
|
ldr r1, [r4, #3456]
|
|
mov r2, r7
|
|
ldr r0, .L895+24
|
|
bl sftl_printk
|
|
.L894:
|
|
b .L894
|
|
.L889:
|
|
ldrh r2, [r7]
|
|
ldr r3, [r4, #3460]
|
|
ldr r1, [r6], #4
|
|
mul r0, r5, r2
|
|
lsl r2, r2, #2
|
|
add r5, r5, #1
|
|
add r0, r3, r0, lsl #2
|
|
bl ftl_memcpy
|
|
b .L888
|
|
.L892:
|
|
add r8, r8, #1
|
|
cmp r0, #256
|
|
cmpne r8, #1
|
|
movle r0, #1
|
|
movgt r0, #0
|
|
ble .L890
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L896:
|
|
.align 2
|
|
.L895:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+352
|
|
.word -3887
|
|
.word .LC99
|
|
.word .LANCHOR0+3452
|
|
.word .LC100
|
|
.word .LC101
|
|
.size FtlBbmTblFlush, .-FtlBbmTblFlush
|
|
.align 2
|
|
.global allocate_data_superblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type allocate_data_superblock, %function
|
|
allocate_data_superblock:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L929
|
|
mov r5, r0
|
|
.L898:
|
|
ldr r2, .L929+4
|
|
ldrh r3, [r4, #224]
|
|
ldrh r2, [r2]
|
|
add r3, r3, r2
|
|
ldrh r2, [r4, #240]
|
|
cmp r3, r2
|
|
ble .L899
|
|
ldr r1, .L929+8
|
|
movw r2, #2667
|
|
ldr r0, .L929+12
|
|
bl sftl_printk
|
|
.L899:
|
|
ldr r3, .L929+16
|
|
cmp r5, r3
|
|
movne r1, #0
|
|
bne .L900
|
|
ldrh r3, [r4, #224]
|
|
ldr r1, [r4, #3164]
|
|
mul r2, r1, r3
|
|
lsr r1, r3, #1
|
|
movw r3, #65535
|
|
add r1, r1, r2, lsr #2
|
|
uxth r1, r1
|
|
cmp r1, r3
|
|
moveq r1, #0
|
|
.L900:
|
|
ldr r0, .L929+20
|
|
bl List_pop_index_node
|
|
ldrh r3, [r4, #224]
|
|
mov r6, r0
|
|
uxth r8, r0
|
|
cmp r3, #0
|
|
bne .L901
|
|
ldr r1, .L929+8
|
|
movw r2, #2676
|
|
ldr r0, .L929+12
|
|
bl sftl_printk
|
|
.L901:
|
|
ldrh r3, [r4, #224]
|
|
sub r3, r3, #1
|
|
strh r3, [r4, #224] @ movhi
|
|
ldrh r3, [r4, #240]
|
|
cmp r3, r8
|
|
bls .L898
|
|
uxth r6, r6
|
|
ldr r3, [r4, #72]
|
|
lsl r6, r6, #1
|
|
ldrh r7, [r3, r6]
|
|
cmp r7, #0
|
|
bne .L898
|
|
mov r0, r5
|
|
strh r8, [r5] @ movhi
|
|
bl make_superblock
|
|
ldrb r3, [r5, #7] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L903
|
|
ldr r3, [r4, #72]
|
|
mvn r2, #0
|
|
mov r0, r8
|
|
strh r2, [r3, r6] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
ldr r2, .L929+4
|
|
ldrh r3, [r4, #224]
|
|
ldrh r2, [r2]
|
|
add r3, r3, r2
|
|
ldrh r2, [r4, #240]
|
|
cmp r3, r2
|
|
ble .L898
|
|
ldr r1, .L929+8
|
|
movw r2, #2690
|
|
ldr r0, .L929+12
|
|
bl sftl_printk
|
|
b .L898
|
|
.L903:
|
|
ldr r2, .L929+4
|
|
ldrh r3, [r4, #224]
|
|
ldrh r2, [r2]
|
|
add r3, r3, r2
|
|
ldrh r2, [r4, #240]
|
|
cmp r3, r2
|
|
ble .L905
|
|
ldr r1, .L929+8
|
|
movw r2, #2693
|
|
ldr r0, .L929+12
|
|
bl sftl_printk
|
|
.L905:
|
|
ldr r0, [r4, #3268]
|
|
add r10, r5, #16
|
|
ldrh r3, [r4, #232]
|
|
mov r9, r10
|
|
str r3, [fp, #-48]
|
|
mov r2, r0
|
|
mov r3, #0
|
|
mov ip, r3
|
|
.L906:
|
|
ldr lr, [fp, #-48]
|
|
uxth r1, r3
|
|
cmp lr, r1
|
|
bhi .L908
|
|
cmp r7, #0
|
|
bne .L909
|
|
ldr r1, .L929+8
|
|
mov r2, #2704
|
|
ldr r0, .L929+12
|
|
bl sftl_printk
|
|
.L909:
|
|
ldrh r3, [r4, #172]
|
|
cmp r3, r8
|
|
bne .L910
|
|
ldr r1, .L929+8
|
|
movw r2, #2706
|
|
ldr r0, .L929+12
|
|
bl sftl_printk
|
|
.L910:
|
|
ldr r1, [r4, #2536]
|
|
ldrb r2, [r5, #8] @ zero_extendqisi2
|
|
ldrh r3, [r1, r6]
|
|
cmp r2, #0
|
|
ldr r2, .L929+24
|
|
bne .L911
|
|
cmp r3, #0
|
|
moveq r3, #2
|
|
ldrhne r0, [r2]
|
|
addne r3, r3, r0
|
|
uxthne r3, r3
|
|
strh r3, [r1, r6] @ movhi
|
|
ldr r3, [r4, #2596]
|
|
add r3, r3, #1
|
|
str r3, [r4, #2596]
|
|
.L913:
|
|
ldr r3, [r4, #2536]
|
|
ldr r1, [r4, #2612]
|
|
ldrh r2, [r2]
|
|
ldrh r3, [r3, r6]
|
|
ldr r0, [r4, #2596]
|
|
cmp r3, r1
|
|
strhi r3, [r4, #2612]
|
|
ldr r3, [r4, #2600]
|
|
ldrh r1, [r4, #240]
|
|
mla r0, r0, r2, r3
|
|
bl __aeabi_uidiv
|
|
ldr r2, [r4, #3348]
|
|
str r0, [r4, #2604]
|
|
ldr r0, [r4, #3268]
|
|
ldr r3, [r2, #16]
|
|
ldr ip, .L929+28
|
|
add r3, r3, #1
|
|
str r3, [r2, #16]
|
|
add r3, r0, #4
|
|
mov r2, #0
|
|
.L915:
|
|
uxth r1, r2
|
|
add r3, r3, #20
|
|
cmp r7, r1
|
|
bhi .L916
|
|
ldrb r1, [r5, #8] @ zero_extendqisi2
|
|
mov r2, r7
|
|
bl FlashEraseBlocks
|
|
mov r9, #0
|
|
mov r3, r9
|
|
mov r1, #20
|
|
.L917:
|
|
uxth r2, r9
|
|
cmp r7, r2
|
|
bhi .L919
|
|
cmp r3, #0
|
|
ble .L920
|
|
mov r0, r8
|
|
bl update_multiplier_value
|
|
bl FtlBbmTblFlush
|
|
.L920:
|
|
ldrb r2, [r5, #7] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
bne .L921
|
|
ldr r3, [r4, #72]
|
|
mvn r2, #0
|
|
strh r2, [r3, r6] @ movhi
|
|
b .L898
|
|
.L908:
|
|
str ip, [r2, #8]
|
|
movw lr, #65535
|
|
str ip, [r2, #12]
|
|
ldrh r1, [r9], #2
|
|
cmp r1, lr
|
|
beq .L907
|
|
mov lr, #20
|
|
lsl r1, r1, #10
|
|
mla lr, lr, r7, r0
|
|
add r7, r7, #1
|
|
uxth r7, r7
|
|
str r1, [lr, #4]
|
|
.L907:
|
|
add r3, r3, #1
|
|
add r2, r2, #20
|
|
b .L906
|
|
.L911:
|
|
add r3, r3, #1
|
|
strh r3, [r1, r6] @ movhi
|
|
ldr r3, [r4, #2600]
|
|
add r3, r3, #1
|
|
str r3, [r4, #2600]
|
|
b .L913
|
|
.L916:
|
|
ldr r1, [r3, #-20]
|
|
add r2, r2, #1
|
|
and r1, r1, ip
|
|
str r1, [r3, #-20]
|
|
b .L915
|
|
.L919:
|
|
mul r2, r1, r9
|
|
ldr r0, [r4, #3268]
|
|
add ip, r0, r2
|
|
ldr r2, [r0, r2]
|
|
cmn r2, #1
|
|
bne .L918
|
|
ldr r0, [ip, #4]
|
|
add r3, r3, #1
|
|
str r2, [fp, #-52]
|
|
str r3, [fp, #-48]
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
ldr r2, [fp, #-52]
|
|
strh r2, [r10] @ movhi
|
|
mov r1, #20
|
|
ldr r3, [fp, #-48]
|
|
ldrb r2, [r5, #7] @ zero_extendqisi2
|
|
sub r2, r2, #1
|
|
strb r2, [r5, #7]
|
|
.L918:
|
|
add r9, r9, #1
|
|
add r10, r10, #2
|
|
b .L917
|
|
.L921:
|
|
movw r3, #302
|
|
ldrh r3, [r4, r3]
|
|
strh r8, [r5] @ movhi
|
|
smulbb r3, r3, r2
|
|
mov r2, #0
|
|
strh r2, [r5, #2] @ movhi
|
|
strb r2, [r5, #6]
|
|
ldr r2, [r4, #2588]
|
|
uxth r3, r3
|
|
str r2, [r5, #12]
|
|
add r2, r2, #1
|
|
str r2, [r4, #2588]
|
|
ldr r1, [r4, #72]
|
|
ldrh r2, [r5]
|
|
strh r3, [r5, #4] @ movhi
|
|
lsl r2, r2, #1
|
|
strh r3, [r1, r2] @ movhi
|
|
ldrh r3, [r5, #4]
|
|
cmp r3, #0
|
|
beq .L922
|
|
ldrb r3, [r5, #7] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L923
|
|
.L922:
|
|
ldr r1, .L929+8
|
|
movw r2, #2759
|
|
ldr r0, .L929+12
|
|
bl sftl_printk
|
|
.L923:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L930:
|
|
.align 2
|
|
.L929:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2528
|
|
.word .LANCHOR1+271
|
|
.word .LC8
|
|
.word .LANCHOR0+124
|
|
.word .LANCHOR0+2532
|
|
.word .LANCHOR0+292
|
|
.word -1024
|
|
.size allocate_data_superblock, .-allocate_data_superblock
|
|
.section .rodata.str1.1
|
|
.LC102:
|
|
.ascii "FtlGcFreeBadSuperBlk 0x%x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlGcFreeBadSuperBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcFreeBadSuperBlk, %function
|
|
FtlGcFreeBadSuperBlk:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #20
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r9, .L939
|
|
movw r3, #3206
|
|
str r0, [fp, #-48]
|
|
ldrh r3, [r9, r3]
|
|
cmp r3, #0
|
|
bne .L938
|
|
.L933:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L937:
|
|
uxtah r3, r9, r7
|
|
ldr r1, [fp, #-48]
|
|
mov r8, #0
|
|
ldrb r0, [r3, #260] @ zero_extendqisi2
|
|
bl V2P_block
|
|
mov r4, r0
|
|
.L934:
|
|
ldr r3, .L939+4
|
|
uxth r2, r8
|
|
ldrh r1, [r3]
|
|
cmp r1, r2
|
|
bhi .L936
|
|
add r7, r7, #1
|
|
.L932:
|
|
ldrh r2, [r9, #232]
|
|
uxth r3, r7
|
|
cmp r2, r3
|
|
bhi .L937
|
|
bl FtlGcReFreshBadBlk
|
|
b .L933
|
|
.L936:
|
|
uxth r6, r8
|
|
lsl r1, r6, #1
|
|
add r3, r10, r6, lsl #1
|
|
ldrh r1, [r10, r1]
|
|
cmp r1, r4
|
|
bne .L935
|
|
mov r1, r4
|
|
ldr r0, .L939+8
|
|
str r3, [fp, #-56]
|
|
str r2, [fp, #-52]
|
|
bl sftl_printk
|
|
mov r0, r4
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
ldr r3, .L939+4
|
|
ldr r2, [fp, #-52]
|
|
add r1, r6, #1
|
|
add r1, r10, r1, lsl #1
|
|
ldrh r5, [r3]
|
|
ldr r3, [fp, #-56]
|
|
sub r0, r5, r2
|
|
cmp r2, r5
|
|
sub r5, r5, #1
|
|
uxth r0, r0
|
|
movhi r2, #0
|
|
lslls r2, r0, #1
|
|
mov r0, r3
|
|
bl memmove
|
|
ldr r3, .L939+4
|
|
strh r5, [r3] @ movhi
|
|
.L935:
|
|
add r8, r8, #1
|
|
b .L934
|
|
.L938:
|
|
ldr r10, .L939+12
|
|
mov r7, #0
|
|
b .L932
|
|
.L940:
|
|
.align 2
|
|
.L939:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+3206
|
|
.word .LC102
|
|
.word .LANCHOR0+3208
|
|
.size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
|
|
.align 2
|
|
.global update_vpc_list
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type update_vpc_list, %function
|
|
update_vpc_list:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L953
|
|
lsl r3, r0, #1
|
|
mov r5, r0
|
|
ldr r2, [r4, #72]
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
bne .L942
|
|
ldrh r3, [r4, #222]
|
|
cmp r3, r0
|
|
mvneq r3, #0
|
|
strheq r3, [r4, #222] @ movhi
|
|
ldrh r3, [r4, #220]
|
|
cmp r3, r0
|
|
mvneq r3, #0
|
|
strheq r3, [r4, #220] @ movhi
|
|
ldrh r3, [r4, #172]
|
|
cmp r3, r0
|
|
mvneq r3, #0
|
|
strheq r3, [r4, #172] @ movhi
|
|
beq .L946
|
|
ldrh r3, [r4, #24]
|
|
cmp r3, r0
|
|
beq .L951
|
|
ldrh r3, [r4, #76]
|
|
cmp r3, r0
|
|
beq .L951
|
|
ldrh r3, [r4, #124]
|
|
cmp r3, r0
|
|
beq .L951
|
|
.L946:
|
|
ldr r6, .L953+4
|
|
mov r1, r5
|
|
ldr r0, .L953+8
|
|
bl List_remove_node
|
|
ldrh r3, [r6]
|
|
cmp r3, #0
|
|
bne .L948
|
|
ldr r1, .L953+12
|
|
movw r2, #2835
|
|
ldr r0, .L953+16
|
|
bl sftl_printk
|
|
.L948:
|
|
ldrh r3, [r6]
|
|
mov r0, r5
|
|
sub r3, r3, #1
|
|
strh r3, [r6] @ movhi
|
|
bl free_data_superblock
|
|
mov r0, r5
|
|
bl FtlGcFreeBadSuperBlk
|
|
ldrh r2, [r6]
|
|
ldrh r3, [r4, #224]
|
|
add r3, r3, r2
|
|
ldrh r2, [r4, #240]
|
|
cmp r3, r2
|
|
ble .L952
|
|
ldr r1, .L953+12
|
|
movw r2, #2838
|
|
ldr r0, .L953+16
|
|
bl sftl_printk
|
|
.L952:
|
|
mov r0, #1
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L942:
|
|
bl List_update_data_list
|
|
.L951:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L954:
|
|
.align 2
|
|
.L953:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2528
|
|
.word .LANCHOR0+2520
|
|
.word .LANCHOR1+296
|
|
.word .LC8
|
|
.size update_vpc_list, .-update_vpc_list
|
|
.section .rodata.str1.1
|
|
.LC103:
|
|
.ascii "decrement_vpc_count %x = %d\012\000"
|
|
.text
|
|
.align 2
|
|
.global decrement_vpc_count
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type decrement_vpc_count, %function
|
|
decrement_vpc_count:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
movw r3, #65535
|
|
ldr r6, .L967
|
|
mov r5, r0
|
|
cmp r0, r3
|
|
beq .L956
|
|
ldr r3, [r6, #72]
|
|
lsl r4, r0, #1
|
|
ldrh r2, [r3, r4]
|
|
cmp r2, #0
|
|
subne r2, r2, #1
|
|
strhne r2, [r3, r4] @ movhi
|
|
bne .L956
|
|
mov r1, r0
|
|
ldr r0, .L967+4
|
|
bl sftl_printk
|
|
ldr r3, [r6, #72]
|
|
ldrh r4, [r3, r4]
|
|
cmp r4, #0
|
|
beq .L958
|
|
.L965:
|
|
mov r4, #0
|
|
.L955:
|
|
mov r0, r4
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L958:
|
|
movw r2, #2853
|
|
.L966:
|
|
ldr r1, .L967+8
|
|
ldr r0, .L967+12
|
|
bl sftl_printk
|
|
b .L955
|
|
.L956:
|
|
movw r7, #3438
|
|
movw r3, #65535
|
|
ldrh r0, [r6, r7]
|
|
cmp r0, r3
|
|
strheq r5, [r6, r7] @ movhi
|
|
beq .L965
|
|
.L960:
|
|
cmp r0, r5
|
|
beq .L965
|
|
bl update_vpc_list
|
|
ldr r2, [r6, #2516]
|
|
ldr r3, [r6, #2520]
|
|
subs r4, r0, #0
|
|
ldr r1, [r6, #72]
|
|
sub r3, r3, r2
|
|
ldr r2, .L967+16
|
|
strh r5, [r6, r7] @ movhi
|
|
movne r4, #1
|
|
asr r3, r3, #1
|
|
mul r3, r2, r3
|
|
uxth r2, r3
|
|
uxth r3, r3
|
|
cmp r3, r5
|
|
lsl r2, r2, #1
|
|
ldrh r2, [r1, r2]
|
|
clz r2, r2
|
|
lsr r2, r2, #5
|
|
moveq r2, #0
|
|
cmp r2, #0
|
|
beq .L955
|
|
movw r2, #2869
|
|
b .L966
|
|
.L968:
|
|
.align 2
|
|
.L967:
|
|
.word .LANCHOR0
|
|
.word .LC103
|
|
.word .LANCHOR1+312
|
|
.word .LC8
|
|
.word -1431655765
|
|
.size decrement_vpc_count, .-decrement_vpc_count
|
|
.align 2
|
|
.global FtlSuperblockPowerLostFix
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSuperblockPowerLostFix, %function
|
|
FtlSuperblockPowerLostFix:
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #24
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L981
|
|
mov r3, sp
|
|
bic r8, r3, #8128
|
|
mov r4, r0
|
|
bic r8, r8, #63
|
|
mvn r0, #2
|
|
mvn r1, #1
|
|
mov r9, #0
|
|
ldr r7, [r5, #3332]
|
|
movw r2, #61589
|
|
ldr r3, [r8, #24]
|
|
str r3, [fp, #-40]
|
|
mvn r3, #0
|
|
str r3, [fp, #-44]
|
|
ldr r3, [r5, #3300]
|
|
str r3, [fp, #-52]
|
|
str r7, [fp, #-48]
|
|
strd r0, [r7, #8]
|
|
ldrh r3, [r4]
|
|
strh r3, [r7, #2] @ movhi
|
|
strh r9, [r7] @ movhi
|
|
ldr r3, [r5, #3300]
|
|
str r2, [r3]
|
|
ldr r2, .L981+4
|
|
ldr r3, [r5, #3300]
|
|
str r2, [r3, #4]
|
|
ldrh r6, [r4, #4]
|
|
and r6, r6, #1
|
|
add r6, r6, #6
|
|
.L970:
|
|
ldrh r3, [r4, #4]
|
|
cmp r6, #0
|
|
beq .L972
|
|
cmp r3, #0
|
|
bne .L971
|
|
.L972:
|
|
ldrh r3, [r4]
|
|
ldr r1, [r5, #72]
|
|
ldrh r0, [r4, #4]
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r1, r3]
|
|
sub r2, r2, r0
|
|
strh r2, [r1, r3] @ movhi
|
|
movw r3, #302
|
|
ldr r2, [fp, #-40]
|
|
ldrh r3, [r5, r3]
|
|
strh r3, [r4, #2] @ movhi
|
|
mov r3, #0
|
|
strb r3, [r4, #6]
|
|
strh r3, [r4, #4] @ movhi
|
|
ldr r3, [r8, #24]
|
|
cmp r2, r3
|
|
beq .L976
|
|
bl __stack_chk_fail
|
|
.L971:
|
|
mov r0, r4
|
|
bl get_new_active_ppa
|
|
cmn r0, #1
|
|
str r0, [fp, #-56]
|
|
beq .L972
|
|
ldr r3, [r5, #2592]
|
|
mov r1, #1
|
|
str r3, [r7, #4]
|
|
sub r0, fp, #60
|
|
cmn r3, #2
|
|
add r2, r3, #1
|
|
movne r3, r2
|
|
moveq r3, r9
|
|
str r3, [r5, #2592]
|
|
mov r3, #0
|
|
mov r2, r3
|
|
sub r6, r6, #1
|
|
bl FlashProgPages
|
|
ldrh r0, [r4]
|
|
bl decrement_vpc_count
|
|
b .L970
|
|
.L976:
|
|
sub sp, fp, #36
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L982:
|
|
.align 2
|
|
.L981:
|
|
.word .LANCHOR0
|
|
.word 305419896
|
|
.size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
|
|
.align 2
|
|
.global FtlMakeBbt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMakeBbt, %function
|
|
FtlMakeBbt:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r8, .L1002
|
|
mov r7, #0
|
|
bl FtlBbtMemInit
|
|
sub r9, r8, #16
|
|
sub r4, r8, #380
|
|
bl FtlLoadFactoryBbt
|
|
.L984:
|
|
ldrh r3, [r4, #254]
|
|
cmp r3, r7
|
|
bhi .L990
|
|
ldr r6, .L1002+4
|
|
mov r5, #0
|
|
.L991:
|
|
ldrh r3, [r6]
|
|
uxth r0, r5
|
|
cmp r3, r0
|
|
bhi .L992
|
|
ldr r5, .L1002+8
|
|
movw r7, #65535
|
|
ldrh r6, [r5, #12]
|
|
sub r6, r6, #1
|
|
uxth r6, r6
|
|
.L993:
|
|
ldrh r3, [r5, #12]
|
|
sub r3, r3, #48
|
|
cmp r6, r3
|
|
ble .L997
|
|
mov r0, r6
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #1
|
|
beq .L994
|
|
mov r0, r6
|
|
bl FlashTestBlk
|
|
cmp r0, #0
|
|
beq .L995
|
|
mov r0, r6
|
|
bl FtlBbmMapBadBlock
|
|
.L994:
|
|
sub r6, r6, #1
|
|
uxth r6, r6
|
|
b .L993
|
|
.L990:
|
|
ldrh r5, [r9]
|
|
ldr r3, [r4, #3332]
|
|
ldr r0, [r4, #3300]
|
|
str r3, [fp, #-48]
|
|
str r3, [r4, #3464]
|
|
movw r3, #65535
|
|
ldr r10, .L1002+12
|
|
cmp r5, r3
|
|
str r0, [r4, #3460]
|
|
beq .L985
|
|
ldrh r3, [r10]
|
|
mov r2, #1
|
|
ldr r0, .L1002+16
|
|
mov r1, r2
|
|
mla r5, r7, r3, r5
|
|
lsl r3, r5, #10
|
|
str r3, [r4, #3456]
|
|
bl FlashReadPages
|
|
ldrh r2, [r10]
|
|
ldr r1, [r4, #3460]
|
|
add r2, r2, #7
|
|
ldr r0, [r8]
|
|
lsr r2, r2, #3
|
|
bl ftl_memcpy
|
|
.L986:
|
|
uxth r0, r5
|
|
add r7, r7, #1
|
|
add r8, r8, #4
|
|
add r9, r9, #2
|
|
bl FtlBbmMapBadBlock
|
|
b .L984
|
|
.L985:
|
|
mov r1, r7
|
|
bl FlashGetBadBlockList
|
|
ldr r1, [r8]
|
|
ldr r0, [r4, #3460]
|
|
bl FtlBbt2Bitmap
|
|
ldrh r6, [r10]
|
|
.L988:
|
|
sub r6, r6, #1
|
|
uxth r6, r6
|
|
.L987:
|
|
ldrh r0, [r10]
|
|
smlabb r0, r0, r7, r6
|
|
uxth r0, r0
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #1
|
|
beq .L988
|
|
mov r2, #16
|
|
mov r1, #0
|
|
ldr r0, [r4, #3332]
|
|
strh r6, [r9] @ movhi
|
|
bl ftl_memset
|
|
mov r2, #4096
|
|
mov r1, #0
|
|
ldr r0, [r4, #3300]
|
|
bl ftl_memset
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, .L1002+20
|
|
strh r3, [r2] @ movhi
|
|
mov r3, #0
|
|
str r3, [r2, #4]
|
|
ldrh r3, [r10]
|
|
ldrh r5, [r9]
|
|
strh r5, [r2, #2] @ movhi
|
|
ldr r1, [r8]
|
|
mla r5, r7, r3, r5
|
|
ldr r0, [r4, #3460]
|
|
lsl r3, r5, #10
|
|
str r3, [r4, #3456]
|
|
ldr r3, .L1002+24
|
|
ldrh r2, [r3]
|
|
lsl r2, r2, #2
|
|
bl ftl_memcpy
|
|
mov r2, #1
|
|
ldr r0, .L1002+16
|
|
mov r1, r2
|
|
bl FlashEraseBlocks
|
|
mov r3, #1
|
|
ldr r0, .L1002+16
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldr r3, [r4, #3452]
|
|
uxth r0, r5
|
|
cmn r3, #1
|
|
bne .L986
|
|
bl FtlBbmMapBadBlock
|
|
b .L987
|
|
.L992:
|
|
add r5, r5, #1
|
|
bl FtlBbmMapBadBlock
|
|
b .L991
|
|
.L995:
|
|
ldrh r3, [r5]
|
|
cmp r3, r7
|
|
strheq r6, [r5] @ movhi
|
|
beq .L994
|
|
.L996:
|
|
strh r6, [r5, #4] @ movhi
|
|
.L997:
|
|
ldr r0, [r4, #3268]
|
|
mov r6, #0
|
|
ldrh r3, [r5]
|
|
mov r1, #1
|
|
str r6, [r4, #360]
|
|
mov r2, #2
|
|
strh r6, [r5, #2] @ movhi
|
|
lsl r3, r3, #10
|
|
str r3, [r0, #4]
|
|
ldrh r3, [r5, #4]
|
|
lsl r3, r3, #10
|
|
str r3, [r0, #24]
|
|
bl FlashEraseBlocks
|
|
ldrh r0, [r5]
|
|
bl FtlBbmMapBadBlock
|
|
ldrh r0, [r5, #4]
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
ldr r3, [r4, #360]
|
|
ldrh r2, [r5, #4]
|
|
add r3, r3, #1
|
|
str r3, [r4, #360]
|
|
ldrh r3, [r5]
|
|
strh r6, [r5, #2] @ movhi
|
|
strh r2, [r5] @ movhi
|
|
strh r3, [r5, #4] @ movhi
|
|
bl FtlBbmTblFlush
|
|
mov r0, r6
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1003:
|
|
.align 2
|
|
.L1002:
|
|
.word .LANCHOR0+380
|
|
.word .LANCHOR0+314
|
|
.word .LANCHOR0+352
|
|
.word .LANCHOR0+298
|
|
.word .LANCHOR0+3452
|
|
.word -3872
|
|
.word .LANCHOR0+3388
|
|
.size FtlMakeBbt, .-FtlMakeBbt
|
|
.align 2
|
|
.global ftl_memcmp
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_memcmp, %function
|
|
ftl_memcmp:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
bl memcmp
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size ftl_memcmp, .-ftl_memcmp
|
|
.align 2
|
|
.global js_hash
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type js_hash, %function
|
|
js_hash:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, r0
|
|
add r1, r0, r1
|
|
ldr r0, .L1009
|
|
.L1006:
|
|
cmp r3, r1
|
|
ldmfdeq sp, {fp, sp, pc}
|
|
lsr r2, r0, #2
|
|
ldrb ip, [r3], #1 @ zero_extendqisi2
|
|
add r2, r2, r0, lsl #5
|
|
add r2, r2, ip
|
|
eor r0, r0, r2
|
|
b .L1006
|
|
.L1010:
|
|
.align 2
|
|
.L1009:
|
|
.word 1204201446
|
|
.size js_hash, .-js_hash
|
|
.section .rodata.str1.1
|
|
.LC104:
|
|
.ascii "FtlMapWritePage error = %x \012\000"
|
|
.LC105:
|
|
.ascii "FtlMapWritePage error = %x error count = %d\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlMapWritePage
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMapWritePage, %function
|
|
FtlMapWritePage:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L1035
|
|
mov r4, r0
|
|
mov r7, r1
|
|
mov r8, r2
|
|
lsl r10, r1, #2
|
|
add r9, r5, #304
|
|
mov r6, #0
|
|
.L1012:
|
|
ldr r3, [r5, #2572]
|
|
add r3, r3, #1
|
|
str r3, [r5, #2572]
|
|
ldrh r3, [r9]
|
|
ldrh r2, [r4, #2]
|
|
sub r3, r3, #1
|
|
cmp r2, r3
|
|
bge .L1013
|
|
ldrh r2, [r4]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L1014
|
|
.L1013:
|
|
mov r0, r4
|
|
bl Ftl_write_map_blk_to_last_page
|
|
.L1014:
|
|
ldrh r3, [r4]
|
|
ldr r2, [r4, #12]
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
bne .L1015
|
|
ldr r1, .L1035+4
|
|
mov r2, #700
|
|
ldr r0, .L1035+8
|
|
bl sftl_printk
|
|
.L1015:
|
|
ldrh r2, [r4]
|
|
ldrh r3, [r4, #10]
|
|
cmp r2, r3
|
|
bcc .L1016
|
|
ldr r1, .L1035+4
|
|
movw r2, #701
|
|
ldr r0, .L1035+8
|
|
bl sftl_printk
|
|
.L1016:
|
|
ldrh r3, [r4]
|
|
mov r1, #0
|
|
ldr r2, [r4, #12]
|
|
ldr r0, [r5, #3332]
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
ldrh r2, [r4, #2]
|
|
str r3, [fp, #-48]
|
|
str r8, [r5, #3460]
|
|
orr r2, r2, r3, lsl #10
|
|
str r2, [r5, #3456]
|
|
mov r2, #16
|
|
str r0, [r5, #3464]
|
|
bl ftl_memset
|
|
ldr r2, [r5, #3464]
|
|
ldr r1, [r4, #28]
|
|
ldr r3, [fp, #-48]
|
|
str r1, [r2, #4]
|
|
strh r7, [r2, #8] @ movhi
|
|
str r2, [fp, #-48]
|
|
ldrh r1, [r4, #4]
|
|
strh r3, [r2, #2] @ movhi
|
|
ldr r3, .L1035+12
|
|
strh r1, [r2] @ movhi
|
|
ldr r0, [r5, #3460]
|
|
ldrh r1, [r3]
|
|
bl js_hash
|
|
ldr r2, [fp, #-48]
|
|
mov r3, #1
|
|
mov r1, r3
|
|
str r0, [r2, #12]
|
|
mov r2, r3
|
|
ldr r0, .L1035+16
|
|
bl FlashProgPages
|
|
ldrh r3, [r4, #2]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #2] @ movhi
|
|
ldr r3, [r5, #3452]
|
|
cmn r3, #1
|
|
bne .L1017
|
|
ldr r1, [r5, #3456]
|
|
add r6, r6, #1
|
|
ldr r0, .L1035+20
|
|
bl sftl_printk
|
|
ldrh r3, [r4, #2]
|
|
uxth r6, r6
|
|
cmp r3, #2
|
|
ldrhls r3, [r9]
|
|
subls r3, r3, #1
|
|
strhls r3, [r4, #2] @ movhi
|
|
cmp r6, #3
|
|
bls .L1019
|
|
ldr r1, [r5, #3456]
|
|
mov r2, r6
|
|
ldr r0, .L1035+24
|
|
bl sftl_printk
|
|
.L1020:
|
|
b .L1020
|
|
.L1019:
|
|
ldr r3, [r4, #32]
|
|
cmp r3, #0
|
|
beq .L1012
|
|
.L1022:
|
|
b .L1022
|
|
.L1017:
|
|
ldr r3, [r4, #24]
|
|
ldr r2, [r5, #3456]
|
|
str r2, [r3, r10]
|
|
ldrh r3, [r4, #2]
|
|
cmp r3, #1
|
|
beq .L1023
|
|
ldr r3, [r5, #3452]
|
|
cmp r3, #256
|
|
beq .L1023
|
|
ldr r2, [r4, #36]
|
|
cmp r2, #0
|
|
beq .L1024
|
|
.L1023:
|
|
mov r3, #0
|
|
str r3, [r4, #36]
|
|
b .L1012
|
|
.L1024:
|
|
cmn r3, #1
|
|
bne .L1025
|
|
ldr r1, .L1035+4
|
|
movw r2, #745
|
|
ldr r0, .L1035+8
|
|
bl sftl_printk
|
|
.L1025:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1036:
|
|
.align 2
|
|
.L1035:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+332
|
|
.word .LC8
|
|
.word .LANCHOR0+310
|
|
.word .LANCHOR0+3452
|
|
.word .LC104
|
|
.word .LC105
|
|
.size FtlMapWritePage, .-FtlMapWritePage
|
|
.section .rodata.str1.1
|
|
.LC106:
|
|
.ascii "region_id = %x phyAddr = %x\012\000"
|
|
.LC107:
|
|
.ascii "map_ppn:\000"
|
|
.LC108:
|
|
.ascii "load_l2p_region refresh = %x phyAddr = %x\012\000"
|
|
.text
|
|
.align 2
|
|
.global load_l2p_region
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type load_l2p_region, %function
|
|
load_l2p_region:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r9, .L1046
|
|
mov r5, r0
|
|
mov r6, r1
|
|
ldrh r3, [r9]
|
|
cmp r3, r0
|
|
bcs .L1038
|
|
ldr r1, .L1046+4
|
|
movw r2, #485
|
|
ldr r0, .L1046+8
|
|
bl sftl_printk
|
|
.L1038:
|
|
ldr r4, .L1046+12
|
|
mov r1, #12
|
|
mul r6, r1, r6
|
|
ldr r3, [r4, #3376]
|
|
ldr r7, [r3, r5, lsl #2]
|
|
ldr r3, [r4, #2540]
|
|
cmp r7, #0
|
|
add r3, r3, r6
|
|
ldr r0, [r3, #8]
|
|
bne .L1039
|
|
movw r3, #310
|
|
mov r1, #255
|
|
ldrh r2, [r4, r3]
|
|
bl ftl_memset
|
|
ldr r3, [r4, #2540]
|
|
strh r5, [r3, r6] @ movhi
|
|
ldr r1, [r4, #2540]
|
|
add r6, r1, r6
|
|
str r7, [r6, #4]
|
|
.L1040:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L1039:
|
|
ldr r3, [r4, #3332]
|
|
mov r2, #1
|
|
str r0, [r4, #3460]
|
|
mov r1, r2
|
|
ldr r0, .L1046+16
|
|
str r3, [r4, #3464]
|
|
str r7, [r4, #3456]
|
|
bl FlashReadPages
|
|
ldr r8, [r4, #3464]
|
|
ldrh r3, [r8, #8]
|
|
cmp r3, r5
|
|
beq .L1041
|
|
ldr r0, .L1046+20
|
|
mov r2, r7
|
|
mov r1, r5
|
|
bl sftl_printk
|
|
mov r3, #4
|
|
ldr r1, [r4, #3464]
|
|
mov r2, r3
|
|
ldr r0, .L1046+24
|
|
bl rknand_print_hex
|
|
ldrh r3, [r9]
|
|
ldr r1, [r4, #3376]
|
|
mov r2, #4
|
|
ldr r0, .L1046+28
|
|
bl rknand_print_hex
|
|
.L1042:
|
|
ldrh r3, [r8, #8]
|
|
cmp r3, r5
|
|
beq .L1044
|
|
ldr r1, .L1046+4
|
|
mov r2, #508
|
|
ldr r0, .L1046+8
|
|
bl sftl_printk
|
|
.L1044:
|
|
ldr r3, [r4, #2540]
|
|
mov r1, #0
|
|
add r2, r3, r6
|
|
str r1, [r2, #4]
|
|
strh r5, [r3, r6] @ movhi
|
|
b .L1040
|
|
.L1041:
|
|
ldr r3, [r4, #3452]
|
|
cmp r3, #256
|
|
bne .L1044
|
|
mov r2, r7
|
|
mov r1, r5
|
|
ldr r0, .L1046+32
|
|
bl sftl_printk
|
|
ldr r3, [r4, #2540]
|
|
mov r1, r5
|
|
add r0, r4, #3392
|
|
add r3, r3, r6
|
|
ldr r2, [r3, #8]
|
|
bl FtlMapWritePage
|
|
b .L1042
|
|
.L1047:
|
|
.align 2
|
|
.L1046:
|
|
.word .LANCHOR0+336
|
|
.word .LANCHOR1+348
|
|
.word .LC8
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+3452
|
|
.word .LC106
|
|
.word .LC94
|
|
.word .LC107
|
|
.word .LC108
|
|
.size load_l2p_region, .-load_l2p_region
|
|
.align 2
|
|
.global ftl_map_blk_gc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_map_blk_gc, %function
|
|
ftl_map_blk_gc:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r4, r0
|
|
ldr r5, [r0, #12]
|
|
ldr r10, [r0, #24]
|
|
bl ftl_free_no_use_map_blk
|
|
ldrh r3, [r4, #10]
|
|
ldrh r2, [r4, #8]
|
|
sub r3, r3, #5
|
|
cmp r2, r3
|
|
blt .L1049
|
|
uxth r0, r0
|
|
lsl r0, r0, #1
|
|
ldrh r9, [r5, r0]
|
|
cmp r9, #0
|
|
beq .L1049
|
|
ldr r6, [r4, #32]
|
|
cmp r6, #0
|
|
bne .L1049
|
|
mov r3, #1
|
|
str r3, [r4, #32]
|
|
strh r6, [r5, r0] @ movhi
|
|
ldrh r3, [r4, #8]
|
|
ldrh r2, [r4, #2]
|
|
sub r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
ldr r3, .L1064
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bcc .L1050
|
|
mov r0, r4
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L1050:
|
|
ldr r5, .L1064+4
|
|
.L1051:
|
|
ldrh r2, [r4, #6]
|
|
uxth r3, r6
|
|
cmp r2, r3
|
|
bhi .L1058
|
|
mov r0, r9
|
|
mov r1, #1
|
|
bl FtlFreeSysBlkQueueIn
|
|
mov r3, #0
|
|
str r3, [r4, #32]
|
|
.L1049:
|
|
ldr r3, .L1064
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bcc .L1059
|
|
mov r0, r4
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L1059:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1058:
|
|
uxth r7, r6
|
|
add r2, r10, r7, lsl #2
|
|
str r2, [fp, #-48]
|
|
ldr r2, [r10, r7, lsl #2]
|
|
cmp r9, r2, lsr #10
|
|
bne .L1052
|
|
ldr r2, [r5, #3304]
|
|
ldr r8, [r5, #3332]
|
|
str r2, [r5, #3460]
|
|
str r8, [r5, #3464]
|
|
ldr r0, .L1064+8
|
|
ldr r2, [r10, r7, lsl #2]
|
|
str r2, [r5, #3456]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r3, [fp, #-52]
|
|
bl FlashReadPages
|
|
ldrh r2, [r8, #8]
|
|
ldr r3, [fp, #-52]
|
|
cmp r2, r3
|
|
beq .L1053
|
|
ldr r1, .L1064+12
|
|
movw r2, #611
|
|
ldr r0, .L1064+16
|
|
bl sftl_printk
|
|
ldr r3, [fp, #-52]
|
|
.L1053:
|
|
ldr r2, [r5, #3452]
|
|
cmn r2, #1
|
|
bne .L1054
|
|
.L1056:
|
|
ldr r2, [fp, #-48]
|
|
mov r3, #0
|
|
str r3, [r2]
|
|
.L1055:
|
|
b .L1055
|
|
.L1054:
|
|
ldrh r2, [r8, #8]
|
|
cmp r2, r3
|
|
bne .L1056
|
|
ldrh r2, [r8]
|
|
ldrh r3, [r4, #4]
|
|
cmp r2, r3
|
|
bne .L1056
|
|
ldr r2, [r5, #3460]
|
|
mov r1, r7
|
|
mov r0, r4
|
|
bl FtlMapWritePage
|
|
.L1052:
|
|
add r6, r6, #1
|
|
b .L1051
|
|
.L1065:
|
|
.align 2
|
|
.L1064:
|
|
.word .LANCHOR0+304
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+3452
|
|
.word .LANCHOR1+364
|
|
.word .LC8
|
|
.size ftl_map_blk_gc, .-ftl_map_blk_gc
|
|
.align 2
|
|
.global Ftl_write_map_blk_to_last_page
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_write_map_blk_to_last_page, %function
|
|
Ftl_write_map_blk_to_last_page:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldrh r3, [r0]
|
|
movw r2, #65535
|
|
ldr r5, [r0, #12]
|
|
mov r4, r0
|
|
cmp r3, r2
|
|
bne .L1067
|
|
ldrh r3, [r0, #8]
|
|
cmp r3, #0
|
|
beq .L1068
|
|
ldr r1, .L1076
|
|
movw r2, #641
|
|
ldr r0, .L1076+4
|
|
bl sftl_printk
|
|
.L1068:
|
|
ldrh r3, [r4, #8]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
bl FtlFreeSysBlkQueueOut
|
|
strh r0, [r5] @ movhi
|
|
mov r3, #0
|
|
str r3, [r4]
|
|
ldr r3, [r4, #28]
|
|
add r3, r3, #1
|
|
str r3, [r4, #28]
|
|
.L1069:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L1067:
|
|
lsl r3, r3, #1
|
|
ldr r7, [r0, #24]
|
|
mov r1, #255
|
|
ldrh r8, [r5, r3]
|
|
ldr r5, .L1076+8
|
|
ldrh r3, [r0, #2]
|
|
ldr r6, [r5, #3332]
|
|
orr r3, r3, r8, lsl #10
|
|
str r3, [r5, #3456]
|
|
ldr r3, [r5, #3300]
|
|
str r3, [r5, #3460]
|
|
ldr r3, [r0, #28]
|
|
str r6, [r5, #3464]
|
|
str r3, [r6, #4]
|
|
ldr r3, .L1076+12
|
|
strh r3, [r6, #8] @ movhi
|
|
ldrh r3, [r0, #4]
|
|
strh r3, [r6] @ movhi
|
|
add r3, r5, #304
|
|
strh r8, [r6, #2] @ movhi
|
|
ldrh r2, [r3]
|
|
ldr r0, [r5, #3300]
|
|
lsl r2, r2, #3
|
|
bl ftl_memset
|
|
mov r2, #0
|
|
mov r3, r2
|
|
.L1070:
|
|
ldrh r0, [r4, #6]
|
|
uxth r1, r2
|
|
cmp r0, r1
|
|
bhi .L1072
|
|
movw r3, #310
|
|
ldr r0, [r5, #3460]
|
|
ldrh r1, [r5, r3]
|
|
bl js_hash
|
|
mov r2, #1
|
|
str r0, [r6, #12]
|
|
mov r1, r2
|
|
mov r3, #0
|
|
ldr r0, .L1076+16
|
|
bl FlashProgPages
|
|
ldrh r3, [r4, #2]
|
|
mov r0, r4
|
|
add r3, r3, #1
|
|
strh r3, [r4, #2] @ movhi
|
|
bl ftl_map_blk_gc
|
|
b .L1069
|
|
.L1072:
|
|
uxth r1, r2
|
|
ldr r0, [r7, r1, lsl #2]
|
|
cmp r8, r0, lsr #10
|
|
bne .L1071
|
|
add r3, r3, #1
|
|
ldr r0, [r5, #3300]
|
|
uxth r3, r3
|
|
str r1, [r0, r3, lsl #3]
|
|
ldr r0, [r7, r1, lsl #2]
|
|
ldr r1, [r5, #3300]
|
|
add r1, r1, r3, lsl #3
|
|
str r0, [r1, #4]
|
|
.L1071:
|
|
add r2, r2, #1
|
|
b .L1070
|
|
.L1077:
|
|
.align 2
|
|
.L1076:
|
|
.word .LANCHOR1+379
|
|
.word .LC8
|
|
.word .LANCHOR0
|
|
.word -1291
|
|
.word .LANCHOR0+3452
|
|
.size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
|
|
.align 2
|
|
.global flush_l2p_region
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type flush_l2p_region, %function
|
|
flush_l2p_region:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L1079
|
|
mov r4, #12
|
|
mul r4, r4, r0
|
|
add r0, r5, #3392
|
|
ldr r3, [r5, #2540]
|
|
add r2, r3, r4
|
|
ldrh r1, [r3, r4]
|
|
ldr r2, [r2, #8]
|
|
bl FtlMapWritePage
|
|
ldr r0, [r5, #2540]
|
|
add r4, r0, r4
|
|
mov r0, #0
|
|
ldr r3, [r4, #4]
|
|
bic r3, r3, #-2147483648
|
|
str r3, [r4, #4]
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L1080:
|
|
.align 2
|
|
.L1079:
|
|
.word .LANCHOR0
|
|
.size flush_l2p_region, .-flush_l2p_region
|
|
.align 2
|
|
.global log2phys
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type log2phys, %function
|
|
log2phys:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1093
|
|
mvn r6, #0
|
|
mov r5, r0
|
|
mov r8, r1
|
|
add r3, r4, #308
|
|
mov r9, r2
|
|
ldrh r3, [r3]
|
|
add r3, r3, #7
|
|
lsr r7, r0, r3
|
|
bic r6, r0, r6, lsl r3
|
|
ldr r3, [r4, #2552]
|
|
uxth r7, r7
|
|
uxth r6, r6
|
|
cmp r3, r0
|
|
bhi .L1082
|
|
ldr r1, .L1093+4
|
|
mov r2, #820
|
|
ldr r0, .L1093+8
|
|
bl sftl_printk
|
|
ldr r3, [r4, #2552]
|
|
cmp r3, r5
|
|
bhi .L1082
|
|
mvn r0, #0
|
|
cmp r9, #0
|
|
streq r0, [r8]
|
|
ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1088:
|
|
add r3, r3, #1
|
|
mul r0, r10, r3
|
|
ldrh r0, [r2, r0]
|
|
cmp r0, r7
|
|
bne .L1084
|
|
.L1085:
|
|
mov r1, #12
|
|
ldr r3, [r4, #2540]
|
|
cmp r9, #0
|
|
mul r5, r1, r5
|
|
add r3, r3, r5
|
|
ldr r3, [r3, #8]
|
|
ldreq r3, [r3, r6, lsl #2]
|
|
streq r3, [r8]
|
|
beq .L1087
|
|
ldr r2, [r8]
|
|
str r2, [r3, r6, lsl #2]
|
|
ldr r3, [r4, #2540]
|
|
add r3, r3, r5
|
|
ldr r2, [r3, #4]
|
|
orr r2, r2, #-2147483648
|
|
str r2, [r3, #4]
|
|
ldr r3, .L1093+12
|
|
strh r7, [r3] @ movhi
|
|
.L1087:
|
|
ldr r1, [r4, #2540]
|
|
mov r0, #0
|
|
add r5, r1, r5
|
|
ldr r3, [r5, #4]
|
|
cmn r3, #1
|
|
addne r3, r3, #1
|
|
strne r3, [r5, #4]
|
|
ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1082:
|
|
ldr r2, [r4, #2540]
|
|
movw r3, #338
|
|
mov r10, #12
|
|
sub r2, r2, #12
|
|
ldrh r1, [r4, r3]
|
|
mov r3, #0
|
|
.L1084:
|
|
uxth r5, r3
|
|
cmp r1, r5
|
|
bhi .L1088
|
|
bl select_l2p_ram_region
|
|
mul r10, r10, r0
|
|
ldr r3, [r4, #2540]
|
|
mov r5, r0
|
|
add r2, r3, r10
|
|
ldrh r1, [r3, r10]
|
|
movw r3, #65535
|
|
cmp r1, r3
|
|
beq .L1089
|
|
ldr r3, [r2, #4]
|
|
cmp r3, #0
|
|
bge .L1089
|
|
bl flush_l2p_region
|
|
.L1089:
|
|
mov r1, r5
|
|
mov r0, r7
|
|
bl load_l2p_region
|
|
b .L1085
|
|
.L1094:
|
|
.align 2
|
|
.L1093:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+410
|
|
.word .LC8
|
|
.word .LANCHOR0+2544
|
|
.size log2phys, .-log2phys
|
|
.align 2
|
|
.global FtlWriteDump_data
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlWriteDump_data, %function
|
|
FtlWriteDump_data:
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #36
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1114
|
|
mov r3, sp
|
|
bic r8, r3, #8128
|
|
bic r8, r8, #63
|
|
ldrh r2, [r4, #28]
|
|
ldr r3, [r8, #24]
|
|
cmp r2, #0
|
|
str r3, [fp, #-48]
|
|
beq .L1096
|
|
ldrb r3, [r4, #32] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L1096
|
|
movw r1, #302
|
|
ldrb r3, [r4, #31] @ zero_extendqisi2
|
|
ldrh r1, [r4, r1]
|
|
mul r3, r1, r3
|
|
cmp r2, r3
|
|
beq .L1096
|
|
ldrb r9, [r4, #34] @ zero_extendqisi2
|
|
cmp r9, #0
|
|
bne .L1095
|
|
ldr r7, [r4, #2552]
|
|
mov r2, r9
|
|
sub r1, fp, #72
|
|
ldrh r6, [r4, #232]
|
|
sub r7, r7, #1
|
|
mov r0, r7
|
|
bl log2phys
|
|
ldr r5, [r4, #3332]
|
|
ldr r3, [fp, #-72]
|
|
ldr r0, [r4, #3300]
|
|
str r3, [fp, #-64]
|
|
cmn r3, #1
|
|
str r7, [fp, #-52]
|
|
str r0, [fp, #-60]
|
|
str r5, [fp, #-56]
|
|
str r9, [r5, #4]
|
|
beq .L1098
|
|
mov r2, r9
|
|
sub r0, fp, #68
|
|
mov r1, #1
|
|
bl FlashReadPages
|
|
.L1099:
|
|
ldr r9, .L1114+4
|
|
lsl r6, r6, #2
|
|
ldr r3, .L1114+8
|
|
mov r10, #0
|
|
strh r3, [r5] @ movhi
|
|
.L1100:
|
|
cmp r6, #0
|
|
bne .L1104
|
|
.L1101:
|
|
mov r3, #1
|
|
.L1113:
|
|
strb r3, [r4, #34]
|
|
.L1095:
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r8, #24]
|
|
cmp r2, r3
|
|
beq .L1106
|
|
bl __stack_chk_fail
|
|
.L1098:
|
|
movw r3, #310
|
|
mov r1, #255
|
|
ldrh r2, [r4, r3]
|
|
bl ftl_memset
|
|
b .L1099
|
|
.L1104:
|
|
ldrh r3, [r4, #28]
|
|
cmp r3, #0
|
|
beq .L1101
|
|
ldr r3, [fp, #-64]
|
|
mov r0, r9
|
|
str r3, [r5, #12]
|
|
sub r6, r6, #1
|
|
ldrh r3, [r4, #24]
|
|
strh r3, [r5, #2] @ movhi
|
|
str r7, [r5, #8]
|
|
bl get_new_active_ppa
|
|
ldr r3, [r4, #2592]
|
|
str r0, [fp, #-64]
|
|
mov r1, #1
|
|
cmn r3, #2
|
|
add r2, r3, #1
|
|
str r3, [r5, #4]
|
|
sub r0, fp, #68
|
|
movne r3, r2
|
|
moveq r3, r10
|
|
str r3, [r4, #2592]
|
|
mov r3, #0
|
|
mov r2, r3
|
|
bl FlashProgPages
|
|
ldrh r0, [r4, #24]
|
|
bl decrement_vpc_count
|
|
b .L1100
|
|
.L1096:
|
|
mov r3, #0
|
|
b .L1113
|
|
.L1106:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1115:
|
|
.align 2
|
|
.L1114:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+24
|
|
.word -3947
|
|
.size FtlWriteDump_data, .-FtlWriteDump_data
|
|
.align 2
|
|
.global FtlReUsePrevPpa
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlReUsePrevPpa, %function
|
|
FtlReUsePrevPpa:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1126
|
|
mov r6, r0
|
|
ubfx r0, r1, #10, #16
|
|
str r1, [fp, #-40]
|
|
bl P2V_block_in_plane
|
|
lsl r5, r0, #1
|
|
mov r7, r0
|
|
ldr r3, [r4, #72]
|
|
ldrh r2, [r3, r5]
|
|
cmp r2, #0
|
|
addne r2, r2, #1
|
|
strhne r2, [r3, r5] @ movhi
|
|
bne .L1118
|
|
ldr r3, [r4, #2532]
|
|
cmp r3, #0
|
|
beq .L1118
|
|
ldr r1, [r4, #2516]
|
|
mov lr, #6
|
|
ldr ip, .L1126+4
|
|
movw r8, #65535
|
|
sub r3, r3, r1
|
|
ldrh r0, [r4, #224]
|
|
asr r3, r3, #1
|
|
mul r3, ip, r3
|
|
uxth r3, r3
|
|
.L1119:
|
|
uxth ip, r2
|
|
cmp r0, ip
|
|
bls .L1118
|
|
cmp r3, r7
|
|
bne .L1120
|
|
ldr r0, .L1126+8
|
|
mov r1, r7
|
|
bl List_remove_node
|
|
ldrh r3, [r4, #224]
|
|
cmp r3, #0
|
|
bne .L1121
|
|
ldr r1, .L1126+12
|
|
movw r2, #1742
|
|
ldr r0, .L1126+16
|
|
bl sftl_printk
|
|
.L1121:
|
|
ldrh r3, [r4, #224]
|
|
mov r0, r7
|
|
sub r3, r3, #1
|
|
strh r3, [r4, #224] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
ldr r2, [r4, #72]
|
|
ldrh r3, [r2, r5]
|
|
add r3, r3, #1
|
|
strh r3, [r2, r5] @ movhi
|
|
.L1118:
|
|
sub r1, fp, #40
|
|
mov r0, r6
|
|
mov r2, #1
|
|
bl log2phys
|
|
sub sp, fp, #32
|
|
ldmfd sp, {r4, r5, r6, r7, r8, fp, sp, pc}
|
|
.L1120:
|
|
mul r3, lr, r3
|
|
add r2, r2, #1
|
|
ldrh r3, [r1, r3]
|
|
cmp r3, r8
|
|
bne .L1119
|
|
b .L1118
|
|
.L1127:
|
|
.align 2
|
|
.L1126:
|
|
.word .LANCHOR0
|
|
.word -1431655765
|
|
.word .LANCHOR0+2532
|
|
.word .LANCHOR1+419
|
|
.word .LC8
|
|
.size FtlReUsePrevPpa, .-FtlReUsePrevPpa
|
|
.section .rodata.str1.1
|
|
.LC109:
|
|
.ascii "data prev_ppa = %x error...................\012\000"
|
|
.LC110:
|
|
.ascii "spuer block %x vpn is 0\012 \000"
|
|
.text
|
|
.align 2
|
|
.global FtlRecoverySuperblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlRecoverySuperblock, %function
|
|
FtlRecoverySuperblock:
|
|
@ args = 0, pretend = 0, frame = 64
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #68
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
movw r1, #65535
|
|
bic r3, r3, #8128
|
|
mov r10, r0
|
|
bic r3, r3, #63
|
|
ldr r3, [r3, #24]
|
|
str r3, [fp, #-48]
|
|
ldrh r3, [r0]
|
|
cmp r3, r1
|
|
beq .L1130
|
|
ldrh r3, [r0, #2]
|
|
ldr r5, .L1257
|
|
str r3, [fp, #-72]
|
|
ldrb r3, [r0, #6] @ zero_extendqisi2
|
|
str r3, [fp, #-92]
|
|
movw r3, #302
|
|
ldrh r2, [r5, r3]
|
|
ldr r3, [fp, #-72]
|
|
cmp r2, r3
|
|
mov r3, #0
|
|
strheq r2, [r0, #2] @ movhi
|
|
strheq r3, [r0, #4] @ movhi
|
|
ldrhne r0, [r0, #16]
|
|
bne .L1132
|
|
.L1255:
|
|
strb r3, [r10, #6]
|
|
.L1130:
|
|
mov r3, sp
|
|
ldr r2, [fp, #-48]
|
|
bic r3, r3, #8128
|
|
bic r3, r3, #63
|
|
ldr r3, [r3, #24]
|
|
cmp r2, r3
|
|
beq .L1196
|
|
bl __stack_chk_fail
|
|
.L1133:
|
|
uxth r2, r3
|
|
add r2, r10, r2, lsl #1
|
|
ldrh r0, [r2, #16]
|
|
.L1132:
|
|
uxth r6, r3
|
|
cmp r0, r1
|
|
add r3, r3, #1
|
|
beq .L1133
|
|
mov r1, #1
|
|
bl FtlGetLastWrittenPage
|
|
mov r4, r0
|
|
cmn r0, #1
|
|
beq .L1134
|
|
ldr r3, [r5, #3176]
|
|
add r2, r10, #16
|
|
str r3, [fp, #-64]
|
|
movw r3, #310
|
|
ldr r0, [r5, #3288]
|
|
movw r8, #65535
|
|
ldrh lr, [r5, r3]
|
|
mov r9, #20
|
|
ldr r3, .L1257+4
|
|
ldr r6, [r5, #3180]
|
|
ldrh r7, [r3]
|
|
add r3, r10, #16
|
|
str r3, [fp, #-84]
|
|
ldrh r3, [r5, #232]
|
|
mov r5, #0
|
|
add r3, r10, r3, lsl #1
|
|
add r3, r3, #16
|
|
str r3, [fp, #-68]
|
|
.L1135:
|
|
ldr r3, [fp, #-68]
|
|
cmp r3, r2
|
|
bne .L1139
|
|
mov r2, #0
|
|
mov r1, r5
|
|
bl FlashReadPages
|
|
ldr r3, .L1257
|
|
mov r8, #0
|
|
ldr r6, [r3, #3288]
|
|
ldr r2, [r3, #2592]
|
|
mov r9, r6
|
|
sub r2, r2, #1
|
|
str r2, [fp, #-64]
|
|
movw r2, #65535
|
|
str r2, [fp, #-80]
|
|
uxth r2, r4
|
|
str r2, [fp, #-68]
|
|
.L1140:
|
|
uxth r2, r8
|
|
cmp r5, r2
|
|
bhi .L1145
|
|
addeq r3, r4, #1
|
|
uxtheq r3, r3
|
|
streq r3, [fp, #-68]
|
|
bne .L1143
|
|
.L1249:
|
|
ldr r0, [r6, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_plane
|
|
ldr r3, .L1257
|
|
movw r2, #302
|
|
ldr r1, [fp, #-68]
|
|
str r0, [fp, #-76]
|
|
ldrh r2, [r3, r2]
|
|
cmp r2, r1
|
|
bne .L1147
|
|
mov r2, #0
|
|
strh r1, [r10, #2] @ movhi
|
|
strb r2, [r10, #6]
|
|
strh r2, [r10, #4] @ movhi
|
|
.L1147:
|
|
sub r0, fp, #76
|
|
ldr ip, [fp, #-92]
|
|
ldm r0, {r0, r1, r2}
|
|
cmp r2, r1
|
|
cmpeq r0, ip
|
|
moveq r2, r0
|
|
ldreq r1, [fp, #-68]
|
|
beq .L1256
|
|
ldr r1, [fp, #-80]
|
|
movw r2, #65535
|
|
cmp r1, r2
|
|
bne .L1149
|
|
ldrb r2, [r10, #8] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
bne .L1150
|
|
.L1149:
|
|
ldr r2, [r3, #3448]
|
|
uxth r9, r4
|
|
ldr r6, .L1257
|
|
cmn r2, #1
|
|
ldreq r2, [fp, #-64]
|
|
streq r2, [r3, #3448]
|
|
uxth r2, r4
|
|
ldr r3, [fp, #-72]
|
|
add r3, r3, #7
|
|
cmp r3, r2
|
|
sublt r4, r4, #7
|
|
ldrge r4, [fp, #-72]
|
|
uxthlt r4, r4
|
|
.L1153:
|
|
ldr r0, [r6, #3288]
|
|
cmp r4, r9
|
|
ldrh ip, [r6, #232]
|
|
bls .L1198
|
|
mvn r3, #0
|
|
str r3, [r6, #3448]
|
|
.L1150:
|
|
ldr r4, .L1257+8
|
|
mov r3, #1
|
|
ldr r9, [fp, #-72]
|
|
strh r3, [r4] @ movhi
|
|
sub r4, r4, #3472
|
|
.L1161:
|
|
ldrh ip, [r4, #232]
|
|
mov r3, #0
|
|
ldr r0, [r4, #3288]
|
|
movw lr, #65535
|
|
ldr r1, [fp, #-84]
|
|
mov r5, #20
|
|
str r3, [fp, #-80]
|
|
.L1162:
|
|
uxth r2, r3
|
|
cmp ip, r2
|
|
bhi .L1164
|
|
ldr r1, [fp, #-80]
|
|
mov r2, #0
|
|
bl FlashReadPages
|
|
mov r3, #0
|
|
.L1254:
|
|
str r3, [fp, #-88]
|
|
ldr r2, [fp, #-80]
|
|
ldrh r3, [fp, #-88]
|
|
cmp r3, r2
|
|
bcc .L1192
|
|
add r3, r9, #1
|
|
uxth r9, r3
|
|
ldr r3, .L1257+12
|
|
ldrh r3, [r3]
|
|
cmp r3, r9
|
|
bne .L1161
|
|
ldrh r1, [r4, #232]
|
|
mov r3, #0
|
|
strh r9, [r10, #2] @ movhi
|
|
movw r0, #65535
|
|
strh r3, [r10, #4] @ movhi
|
|
.L1193:
|
|
uxth r2, r3
|
|
cmp r1, r2
|
|
bls .L1130
|
|
ldr r2, [fp, #-84]
|
|
ldrh ip, [r2], #2
|
|
str r2, [fp, #-84]
|
|
add r2, r3, #1
|
|
cmp ip, r0
|
|
bne .L1255
|
|
mov r3, r2
|
|
b .L1193
|
|
.L1134:
|
|
ldr r3, [fp, #-72]
|
|
cmp r3, #0
|
|
beq .L1136
|
|
ldr r1, .L1257+16
|
|
movw r2, #1809
|
|
ldr r0, .L1257+20
|
|
bl sftl_printk
|
|
.L1136:
|
|
ldr r3, [fp, #-92]
|
|
cmp r3, #0
|
|
cmpne r3, r6
|
|
beq .L1137
|
|
ldr r1, .L1257+16
|
|
movw r2, #1810
|
|
ldr r0, .L1257+20
|
|
bl sftl_printk
|
|
.L1137:
|
|
mov r3, #0
|
|
strh r3, [r10, #2] @ movhi
|
|
b .L1255
|
|
.L1139:
|
|
ldrh r3, [r2], #2
|
|
cmp r3, r8
|
|
beq .L1135
|
|
mla r1, r9, r5, r0
|
|
orr r3, r4, r3, lsl #10
|
|
mul ip, lr, r5
|
|
cmp ip, #0
|
|
str r3, [r1, #4]
|
|
add r3, ip, #3
|
|
movge r3, ip
|
|
ldr ip, [fp, #-64]
|
|
bic r3, r3, #3
|
|
add r3, ip, r3
|
|
mul ip, r7, r5
|
|
str r3, [r1, #8]
|
|
add r5, r5, #1
|
|
cmp ip, #0
|
|
add r3, ip, #3
|
|
movge r3, ip
|
|
uxth r5, r5
|
|
bic r3, r3, #3
|
|
add r3, r6, r3
|
|
str r3, [r1, #12]
|
|
b .L1135
|
|
.L1145:
|
|
ldr r2, [r9]
|
|
cmp r2, #0
|
|
bne .L1141
|
|
ldr r2, [r9, #12]
|
|
ldr r7, [r2, #4]
|
|
cmn r7, #1
|
|
beq .L1142
|
|
ldr r1, [r3, #2592]
|
|
mov r0, r7
|
|
str r2, [fp, #-76]
|
|
bl ftl_cmp_data_ver
|
|
ldr r3, .L1257
|
|
cmp r0, #0
|
|
ldr r2, [fp, #-76]
|
|
addne r7, r7, #1
|
|
strne r7, [r3, #2592]
|
|
.L1142:
|
|
ldr r2, [r2]
|
|
cmn r2, #1
|
|
bne .L1144
|
|
.L1143:
|
|
uxth r3, r4
|
|
str r3, [fp, #-68]
|
|
mov r3, #20
|
|
mla r6, r3, r8, r6
|
|
b .L1249
|
|
.L1141:
|
|
ldr r2, [fp, #-68]
|
|
str r2, [fp, #-80]
|
|
.L1144:
|
|
add r8, r8, #1
|
|
add r9, r9, #20
|
|
b .L1140
|
|
.L1155:
|
|
ldrh r2, [r1], #2
|
|
cmp r2, lr
|
|
beq .L1154
|
|
mla r8, r7, r5, r0
|
|
add r5, r5, #1
|
|
orr r2, r4, r2, lsl #10
|
|
uxth r5, r5
|
|
str r2, [r8, #4]
|
|
.L1154:
|
|
add r3, r3, #1
|
|
.L1160:
|
|
uxth r2, r3
|
|
cmp ip, r2
|
|
bhi .L1155
|
|
mov r2, #0
|
|
mov r1, r5
|
|
bl FlashReadPages
|
|
ldr r3, [r6, #3288]
|
|
mov r2, #0
|
|
movw r0, #65535
|
|
.L1156:
|
|
uxth r1, r2
|
|
cmp r5, r1
|
|
bhi .L1159
|
|
add r4, r4, #1
|
|
uxth r4, r4
|
|
b .L1153
|
|
.L1198:
|
|
mov r3, #0
|
|
ldr r1, [fp, #-84]
|
|
mov r5, r3
|
|
movw lr, #65535
|
|
mov r7, #20
|
|
b .L1160
|
|
.L1159:
|
|
ldr r1, [r3]
|
|
cmp r1, #0
|
|
bne .L1150
|
|
ldr r1, [r3, #12]
|
|
ldrh ip, [r1]
|
|
cmp ip, r0
|
|
beq .L1158
|
|
ldr r1, [r1, #4]
|
|
cmn r1, #1
|
|
strne r1, [r6, #3448]
|
|
.L1158:
|
|
add r2, r2, #1
|
|
add r3, r3, #20
|
|
b .L1156
|
|
.L1164:
|
|
ldrh r2, [r1], #2
|
|
cmp r2, lr
|
|
beq .L1163
|
|
ldr r6, [fp, #-80]
|
|
orr r2, r9, r2, lsl #10
|
|
mla r6, r5, r6, r0
|
|
str r2, [r6, #4]
|
|
ldr r2, [fp, #-80]
|
|
add r2, r2, #1
|
|
uxth r2, r2
|
|
str r2, [fp, #-80]
|
|
.L1163:
|
|
add r3, r3, #1
|
|
b .L1162
|
|
.L1192:
|
|
ldr r3, [fp, #-88]
|
|
mov r5, #20
|
|
ldr r8, [r4, #3288]
|
|
mul r5, r5, r3
|
|
ldr r3, [fp, #-72]
|
|
add r7, r8, r5
|
|
cmp r9, r3
|
|
ldr r6, [r7, #4]
|
|
str r6, [fp, #-52]
|
|
bcc .L1166
|
|
ubfx r0, r6, #10, #16
|
|
bl P2V_plane
|
|
ldr r3, [fp, #-72]
|
|
ldr r2, [fp, #-92]
|
|
sub r3, r9, r3
|
|
clz r3, r3
|
|
cmp r2, r0
|
|
lsr r3, r3, #5
|
|
movls r3, #0
|
|
cmp r3, #0
|
|
bne .L1166
|
|
ldr r3, [fp, #-68]
|
|
ldr r2, [fp, #-76]
|
|
cmp r9, r3
|
|
cmpeq r2, r0
|
|
bne .L1167
|
|
ldr r3, [fp, #-68]
|
|
strb r2, [r10, #6]
|
|
mov r1, r3
|
|
strh r3, [r10, #2] @ movhi
|
|
.L1256:
|
|
mov r0, r10
|
|
bl ftl_sb_update_avl_pages
|
|
b .L1130
|
|
.L1167:
|
|
ldr r3, [r8, r5]
|
|
cmn r3, #1
|
|
beq .L1168
|
|
ldr r7, [r7, #12]
|
|
movw r3, #61589
|
|
ldrh r6, [r7]
|
|
cmp r6, r3
|
|
ldrhne r0, [r10]
|
|
bne .L1251
|
|
ldr r3, [r7, #4]
|
|
str r3, [fp, #-64]
|
|
cmn r3, #1
|
|
beq .L1171
|
|
ldr r1, [r4, #2592]
|
|
mov r0, r3
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L1171
|
|
ldr r3, [fp, #-64]
|
|
add r3, r3, #1
|
|
str r3, [r4, #2592]
|
|
ldrh r3, [r7]
|
|
cmp r3, r6
|
|
beq .L1171
|
|
ldr r1, .L1257+16
|
|
movw r2, #1961
|
|
ldr r0, .L1257+20
|
|
bl sftl_printk
|
|
.L1171:
|
|
ldr r6, [r7, #8]
|
|
sub r1, fp, #56
|
|
ldr r3, [r7, #12]
|
|
mov r2, #0
|
|
mov r0, r6
|
|
str r3, [fp, #-60]
|
|
bl log2phys
|
|
ldr r1, [r4, #3448]
|
|
cmn r1, #1
|
|
beq .L1173
|
|
ldr r0, [fp, #-64]
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L1173
|
|
ldr r3, [fp, #-60]
|
|
cmn r3, #1
|
|
beq .L1174
|
|
ldr r0, [r4, #3288]
|
|
mov r2, #0
|
|
mov r1, #1
|
|
add r0, r0, r5
|
|
str r3, [r0, #4]
|
|
ldr r7, [r0, #12]
|
|
bl FlashReadPages
|
|
ldr r8, [r4, #3288]
|
|
add r3, r8, r5
|
|
ldr r2, [r8, r5]
|
|
cmn r2, #1
|
|
bne .L1175
|
|
.L1176:
|
|
mvn r3, #0
|
|
str r3, [fp, #-60]
|
|
.L1183:
|
|
ldr r0, [fp, #-60]
|
|
cmn r0, #1
|
|
beq .L1166
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldrh r3, [r4, #240]
|
|
mov r5, r0
|
|
cmp r3, r0
|
|
bhi .L1188
|
|
ldr r1, .L1257+16
|
|
movw r2, #2066
|
|
ldr r0, .L1257+20
|
|
bl sftl_printk
|
|
.L1188:
|
|
ldr r2, [r4, #72]
|
|
lsl r3, r5, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L1189
|
|
mov r0, r5
|
|
.L1251:
|
|
bl decrement_vpc_count
|
|
b .L1166
|
|
.L1174:
|
|
ldrd r2, [fp, #-56]
|
|
cmp r2, r3
|
|
bne .L1166
|
|
sub r1, fp, #60
|
|
mov r0, r6
|
|
mov r2, #1
|
|
bl log2phys
|
|
.L1166:
|
|
ldr r3, [fp, #-88]
|
|
add r3, r3, #1
|
|
b .L1254
|
|
.L1175:
|
|
ldr r2, [r7, #8]
|
|
str r2, [fp, #-100]
|
|
cmp r2, r6
|
|
bne .L1176
|
|
str r3, [fp, #-104]
|
|
ldr r3, [r7, #4]
|
|
ldr r0, [r4, #3448]
|
|
mov r1, r3
|
|
str r3, [fp, #-96]
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L1176
|
|
ldr r0, [fp, #-52]
|
|
ldr r2, [fp, #-56]
|
|
ldr r1, [fp, #-60]
|
|
cmp r2, r0
|
|
ldr r3, [fp, #-104]
|
|
ldreq r0, [fp, #-100]
|
|
beq .L1250
|
|
cmp r2, r1
|
|
beq .L1176
|
|
cmn r2, #1
|
|
streq r2, [r8, r5]
|
|
beq .L1180
|
|
str r2, [r3, #4]
|
|
mov r0, r3
|
|
mov r2, #0
|
|
mov r1, #1
|
|
ldr r7, [r3, #12]
|
|
bl FlashReadPages
|
|
.L1180:
|
|
ldr r3, [r4, #3288]
|
|
ldr r3, [r3, r5]
|
|
cmn r3, #1
|
|
beq .L1181
|
|
ldr r5, [r7, #4]
|
|
ldr r0, [r4, #3448]
|
|
mov r1, r5
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L1181
|
|
ldr r0, [fp, #-96]
|
|
mov r1, r5
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L1176
|
|
.L1181:
|
|
ldr r1, [fp, #-60]
|
|
mov r0, r6
|
|
.L1250:
|
|
bl FtlReUsePrevPpa
|
|
b .L1176
|
|
.L1173:
|
|
ldrd r2, [fp, #-56]
|
|
cmp r2, r3
|
|
beq .L1183
|
|
ldr r1, [fp, #-60]
|
|
cmn r1, #1
|
|
beq .L1185
|
|
ldr r3, [r4, #248]
|
|
cmp r3, r1, lsr #10
|
|
ldrls r0, .L1257+24
|
|
bls .L1253
|
|
.L1185:
|
|
sub r1, fp, #52
|
|
mov r0, r6
|
|
mov r2, #1
|
|
bl log2phys
|
|
ldr r7, [fp, #-56]
|
|
cmn r7, #1
|
|
beq .L1183
|
|
ldr r3, [fp, #-60]
|
|
cmp r7, r3
|
|
beq .L1183
|
|
ubfx r0, r7, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldrh r3, [r4, #24]
|
|
cmp r3, r0
|
|
beq .L1187
|
|
ldrh r3, [r4, #76]
|
|
cmp r3, r0
|
|
beq .L1187
|
|
ldrh r3, [r4, #124]
|
|
cmp r3, r0
|
|
bne .L1183
|
|
.L1187:
|
|
ldr r0, [r4, #3288]
|
|
mov r2, #0
|
|
mov r1, #1
|
|
str r7, [r0, #4]
|
|
ldr r5, [r0, #12]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #3288]
|
|
ldr r3, [r3]
|
|
cmn r3, #1
|
|
beq .L1183
|
|
ldr r1, [r5, #4]
|
|
ldr r0, [fp, #-64]
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
bne .L1183
|
|
sub r1, fp, #56
|
|
mov r0, r6
|
|
mov r2, #1
|
|
bl log2phys
|
|
b .L1183
|
|
.L1189:
|
|
ldr r0, .L1257+28
|
|
mov r1, r5
|
|
.L1253:
|
|
bl sftl_printk
|
|
b .L1166
|
|
.L1168:
|
|
ldr r3, [r4, #3476]
|
|
cmp r3, #31
|
|
addls r2, r4, r3, lsl #2
|
|
addls r3, r3, #1
|
|
strls r3, [r4, #3476]
|
|
strls r6, [r2, #3480]
|
|
ldrh r0, [r10]
|
|
bl decrement_vpc_count
|
|
ldr r3, [r4, #3448]
|
|
cmn r3, #1
|
|
ldreq r3, [fp, #-64]
|
|
beq .L1252
|
|
ldr r2, [fp, #-64]
|
|
cmp r3, r2
|
|
bls .L1166
|
|
mov r3, r2
|
|
.L1252:
|
|
str r3, [r4, #3448]
|
|
b .L1166
|
|
.L1196:
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1258:
|
|
.align 2
|
|
.L1257:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+312
|
|
.word .LANCHOR0+3472
|
|
.word .LANCHOR0+302
|
|
.word .LANCHOR1+435
|
|
.word .LC8
|
|
.word .LC109
|
|
.word .LC110
|
|
.size FtlRecoverySuperblock, .-FtlRecoverySuperblock
|
|
.section .rodata.str1.1
|
|
.LC111:
|
|
.ascii "...%s enter...\012\000"
|
|
.LC112:
|
|
.ascii "FtlCheckVpc2 %x = %x %x\012\000"
|
|
.LC113:
|
|
.ascii "free blk vpc error %x = %x %x\012\000"
|
|
.text
|
|
.align 2
|
|
.global ftl_check_vpc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_check_vpc, %function
|
|
ftl_check_vpc:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r5, .L1284
|
|
bic r6, r3, #8128
|
|
ldr r1, .L1284+4
|
|
bic r6, r6, #63
|
|
ldr r0, .L1284+8
|
|
mov r4, #0
|
|
ldr r3, [r6, #24]
|
|
str r3, [fp, #-48]
|
|
bl sftl_printk
|
|
ldr r0, .L1284+12
|
|
mov r2, #8192
|
|
mov r1, #0
|
|
bl ftl_memset
|
|
.L1260:
|
|
ldr r3, [r5, #2552]
|
|
cmp r3, r4
|
|
bhi .L1262
|
|
ldr r9, .L1284+12
|
|
mov r4, #0
|
|
ldr r10, .L1284+16
|
|
mov r7, r4
|
|
.L1263:
|
|
ldrh r2, [r5, #240]
|
|
uxth r3, r4
|
|
cmp r2, r3
|
|
bhi .L1265
|
|
ldr r4, [r5, #2532]
|
|
cmp r4, #0
|
|
beq .L1266
|
|
ldr r1, [r5, #2516]
|
|
mov r9, #0
|
|
ldrh r8, [r5, #224]
|
|
sub r4, r4, r1
|
|
ldr r1, .L1284+20
|
|
ldr r10, .L1284+12
|
|
asr r4, r4, #1
|
|
ldr r0, .L1284+24
|
|
mul r4, r1, r4
|
|
uxth r4, r4
|
|
.L1267:
|
|
uxth r3, r9
|
|
cmp r8, r3
|
|
bls .L1266
|
|
ldr r2, [r5, #72]
|
|
lsl r3, r4, #1
|
|
ldrh r2, [r2, r3]
|
|
cmp r2, #0
|
|
beq .L1268
|
|
ldrh r3, [r10, r3]
|
|
mov r1, r4
|
|
bl sftl_printk
|
|
ldr r0, .L1284+24
|
|
mov r7, #1
|
|
.L1268:
|
|
mov r3, #6
|
|
ldr r2, [r5, #2516]
|
|
add r9, r9, #1
|
|
mul r3, r3, r4
|
|
ldrh r4, [r2, r3]
|
|
movw r3, #65535
|
|
cmp r4, r3
|
|
bne .L1267
|
|
.L1266:
|
|
cmp r7, #0
|
|
beq .L1259
|
|
ldr r1, .L1284+4
|
|
movw r2, #2394
|
|
ldr r0, .L1284+28
|
|
bl sftl_printk
|
|
.L1259:
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r6, #24]
|
|
cmp r2, r3
|
|
beq .L1271
|
|
bl __stack_chk_fail
|
|
.L1262:
|
|
sub r1, fp, #52
|
|
mov r0, r4
|
|
mov r2, #0
|
|
bl log2phys
|
|
ldr r0, [fp, #-52]
|
|
cmn r0, #1
|
|
beq .L1261
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldr r2, .L1284+12
|
|
lsl r0, r0, #1
|
|
ldrh r3, [r2, r0]
|
|
add r3, r3, #1
|
|
strh r3, [r2, r0] @ movhi
|
|
.L1261:
|
|
add r4, r4, #1
|
|
b .L1260
|
|
.L1265:
|
|
uxth r1, r4
|
|
ldr r3, [r5, #72]
|
|
lsl r8, r1, #1
|
|
ldrh r2, [r3, r8]
|
|
ldrh r3, [r9, r8]
|
|
cmp r2, r3
|
|
beq .L1264
|
|
mov r0, r10
|
|
bl sftl_printk
|
|
ldr r3, [r5, #72]
|
|
movw r2, #65535
|
|
ldrh r3, [r3, r8]
|
|
cmp r3, r2
|
|
beq .L1264
|
|
ldrh r2, [r9, r8]
|
|
cmp r2, r3
|
|
movhi r7, #1
|
|
.L1264:
|
|
add r4, r4, #1
|
|
b .L1263
|
|
.L1271:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1285:
|
|
.align 2
|
|
.L1284:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+457
|
|
.word .LC111
|
|
.word check_vpc_table
|
|
.word .LC112
|
|
.word -1431655765
|
|
.word .LC113
|
|
.word .LC8
|
|
.size ftl_check_vpc, .-ftl_check_vpc
|
|
.section .rodata.str1.1
|
|
.LC114:
|
|
.ascii "ftl_scan_all_data = %x\012\000"
|
|
.LC115:
|
|
.ascii "scan lpa = %x ppa= %x\012\000"
|
|
.LC116:
|
|
.ascii "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
|
|
.ascii "\000"
|
|
.text
|
|
.align 2
|
|
.global ftl_scan_all_data
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_scan_all_data, %function
|
|
ftl_scan_all_data:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #32
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r4, .L1295
|
|
bic r6, r3, #8128
|
|
mov r5, #0
|
|
bic r6, r6, #63
|
|
ldr r0, .L1295+4
|
|
mov r1, #0
|
|
ldr r3, [r6, #24]
|
|
str r3, [fp, #-32]
|
|
bl sftl_printk
|
|
.L1287:
|
|
ldr r3, [r4, #2552]
|
|
cmp r3, r5
|
|
bhi .L1293
|
|
ldr r2, [fp, #-32]
|
|
ldr r3, [r6, #24]
|
|
cmp r2, r3
|
|
beq .L1294
|
|
bl __stack_chk_fail
|
|
.L1293:
|
|
sub r1, fp, #36
|
|
mov r0, r5
|
|
mov r2, #0
|
|
bl log2phys
|
|
ubfx r3, r5, #0, #11
|
|
cmp r3, #0
|
|
bne .L1288
|
|
ldr r2, [fp, #-36]
|
|
mov r1, r5
|
|
ldr r0, .L1295+8
|
|
bl sftl_printk
|
|
.L1288:
|
|
ldr r3, [fp, #-36]
|
|
cmn r3, #1
|
|
beq .L1290
|
|
ldr r7, [r4, #3332]
|
|
mov r2, #0
|
|
str r3, [r4, #3456]
|
|
mov r1, #1
|
|
ldr r3, [r4, #3300]
|
|
ldr r0, .L1295+12
|
|
str r3, [r4, #3460]
|
|
str r5, [r4, #3468]
|
|
str r7, [r4, #3464]
|
|
str r2, [r4, #3452]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #3452]
|
|
cmn r3, #1
|
|
cmpne r3, #256
|
|
beq .L1291
|
|
ldr r3, [r7, #8]
|
|
cmp r3, r5
|
|
beq .L1290
|
|
.L1291:
|
|
ldr r2, [r4, #3460]
|
|
ldr r3, [r4, #3464]
|
|
ldr r0, .L1295+16
|
|
ldr r1, [r2, #4]
|
|
str r1, [sp, #16]
|
|
mov r1, r5
|
|
ldr r2, [r2]
|
|
str r2, [sp, #12]
|
|
ldr r2, [r3, #12]
|
|
str r2, [sp, #8]
|
|
ldr r2, [r3, #8]
|
|
str r2, [sp, #4]
|
|
ldr r2, [r3, #4]
|
|
str r2, [sp]
|
|
ldr r2, [r4, #3456]
|
|
ldr r3, [r3]
|
|
bl sftl_printk
|
|
.L1290:
|
|
add r5, r5, #1
|
|
b .L1287
|
|
.L1294:
|
|
sub sp, fp, #28
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1296:
|
|
.align 2
|
|
.L1295:
|
|
.word .LANCHOR0
|
|
.word .LC114
|
|
.word .LC115
|
|
.word .LANCHOR0+3452
|
|
.word .LC116
|
|
.size ftl_scan_all_data, .-ftl_scan_all_data
|
|
.section .rodata.str1.1
|
|
.LC117:
|
|
.ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlGcScanTempBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcScanTempBlk, %function
|
|
FtlGcScanTempBlk:
|
|
@ args = 0, pretend = 0, frame = 56
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #60
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
mov r4, r0
|
|
bic r3, r3, #8128
|
|
str r1, [fp, #-84]
|
|
bic r3, r3, #63
|
|
ldr r3, [r3, #24]
|
|
str r3, [fp, #-48]
|
|
ldr r3, .L1329
|
|
ldrh r5, [r3, #4]
|
|
movw r3, #65535
|
|
cmp r5, r3
|
|
beq .L1322
|
|
cmp r5, #0
|
|
beq .L1299
|
|
.L1298:
|
|
ldr r2, .L1329+4
|
|
movw r3, #302
|
|
ldrh r3, [r2, r3]
|
|
ldr r2, [fp, #-84]
|
|
cmp r3, r2
|
|
bne .L1300
|
|
.L1299:
|
|
bl FtlGcPageVarInit
|
|
.L1300:
|
|
ldr r6, .L1329+4
|
|
mov r3, #0
|
|
str r3, [fp, #-80]
|
|
.L1317:
|
|
ldrh r2, [r4]
|
|
mov r3, #0
|
|
strb r3, [r4, #8]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L1301
|
|
.L1302:
|
|
ldr r3, [r6, #3176]
|
|
mov r7, #0
|
|
str r3, [fp, #-88]
|
|
movw lr, #65535
|
|
ldr r3, .L1329+8
|
|
mov r8, #20
|
|
ldr r0, [r6, #3288]
|
|
ldr r10, [r6, #3180]
|
|
ldrh r2, [r3]
|
|
ldrh r9, [r3, #2]
|
|
ldrh r3, [r6, #232]
|
|
str r2, [fp, #-92]
|
|
add r2, r4, #16
|
|
add r3, r4, r3, lsl #1
|
|
add r3, r3, #16
|
|
str r3, [fp, #-96]
|
|
.L1303:
|
|
ldr r3, [fp, #-96]
|
|
cmp r3, r2
|
|
bne .L1305
|
|
mov r10, #0
|
|
mov r1, r7
|
|
mov r2, #0
|
|
bl FlashReadPages
|
|
.L1306:
|
|
uxth r3, r10
|
|
cmp r7, r3
|
|
bhi .L1318
|
|
ldr r3, [fp, #-80]
|
|
add r5, r5, #1
|
|
add r3, r3, #1
|
|
str r3, [fp, #-80]
|
|
ldr r2, [fp, #-80]
|
|
uxth r5, r5
|
|
ldr r3, [fp, #-84]
|
|
cmp r3, r2
|
|
bhi .L1319
|
|
ldr r2, .L1329
|
|
movw r1, #65535
|
|
ldrh r3, [r2, #4]
|
|
cmp r3, r1
|
|
beq .L1319
|
|
ldr r1, [fp, #-80]
|
|
add r3, r3, r1
|
|
strh r3, [r2, #4] @ movhi
|
|
ldr r2, .L1329+4
|
|
movw r3, #302
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, r5
|
|
bls .L1301
|
|
.L1320:
|
|
mov r3, sp
|
|
ldr r2, [fp, #-48]
|
|
bic r3, r3, #8128
|
|
bic r3, r3, #63
|
|
ldr r3, [r3, #24]
|
|
cmp r2, r3
|
|
beq .L1321
|
|
bl __stack_chk_fail
|
|
.L1322:
|
|
mov r5, #0
|
|
b .L1298
|
|
.L1305:
|
|
ldrh r3, [r2], #2
|
|
cmp r3, lr
|
|
beq .L1303
|
|
mla r1, r8, r7, r0
|
|
orr r3, r5, r3, lsl #10
|
|
str r3, [r1, #4]
|
|
ldr r3, [fp, #-92]
|
|
mul ip, r3, r7
|
|
cmp ip, #0
|
|
add r3, ip, #3
|
|
movge r3, ip
|
|
ldr ip, [fp, #-88]
|
|
bic r3, r3, #3
|
|
add r3, ip, r3
|
|
mul ip, r9, r7
|
|
str r3, [r1, #8]
|
|
add r7, r7, #1
|
|
cmp ip, #0
|
|
add r3, ip, #3
|
|
movge r3, ip
|
|
uxth r7, r7
|
|
bic r3, r3, #3
|
|
add r3, r10, r3
|
|
str r3, [r1, #12]
|
|
b .L1303
|
|
.L1318:
|
|
mov r9, #20
|
|
ldr r2, [r6, #3288]
|
|
mul r9, r9, r10
|
|
add r1, r2, r9
|
|
ldr r2, [r2, r9]
|
|
ldr r3, [r1, #4]
|
|
ldr r8, [r1, #12]
|
|
cmp r2, #0
|
|
bne .L1307
|
|
ldrh r0, [r8]
|
|
movw r1, #65535
|
|
cmp r0, r1
|
|
beq .L1327
|
|
ldr r0, [r8, #8]
|
|
ldr r1, [r6, #2552]
|
|
cmp r0, r1
|
|
bls .L1309
|
|
.L1327:
|
|
ldrh r3, [r4]
|
|
mov r1, #0
|
|
ldr r2, [r6, #72]
|
|
mov r5, #0
|
|
lsl r3, r3, #1
|
|
strh r1, [r2, r3] @ movhi
|
|
ldrh r0, [r4]
|
|
bl INSERT_FREE_LIST
|
|
mvn r3, #0
|
|
strh r3, [r4] @ movhi
|
|
strh r3, [r6, #172] @ movhi
|
|
bl FtlGcPageVarInit
|
|
b .L1317
|
|
.L1309:
|
|
sub r1, fp, #72
|
|
str r3, [fp, #-92]
|
|
str r2, [fp, #-88]
|
|
bl log2phys
|
|
ldr r0, [fp, #-72]
|
|
ldr r1, [r8, #12]
|
|
cmn r0, #1
|
|
ldr r2, [fp, #-88]
|
|
sub ip, r1, r0
|
|
ldr r3, [fp, #-92]
|
|
clz ip, ip
|
|
lsr ip, ip, #5
|
|
moveq ip, #0
|
|
cmp ip, #0
|
|
bne .L1311
|
|
.L1316:
|
|
ldr r2, [r8, #8]
|
|
.L1328:
|
|
ldr r0, [r8, #12]
|
|
mov r1, r3
|
|
add r10, r10, #1
|
|
bl FtlGcUpdatePage
|
|
b .L1306
|
|
.L1311:
|
|
str r1, [fp, #-64]
|
|
sub r0, fp, #68
|
|
ldr r1, [r6, #3316]
|
|
str r1, [fp, #-60]
|
|
ldr r1, [r6, #3336]
|
|
str r1, [fp, #-56]
|
|
mov r1, #1
|
|
str r3, [fp, #-92]
|
|
str r2, [fp, #-88]
|
|
bl FlashReadPages
|
|
ldr r1, .L1329+12
|
|
ldr r0, [r6, #3288]
|
|
ldr r2, [fp, #-88]
|
|
add r9, r0, r9
|
|
ldr r3, [fp, #-92]
|
|
ldrh r1, [r1]
|
|
ldr r0, [fp, #-60]
|
|
lsl r1, r1, #7
|
|
.L1313:
|
|
cmp r1, r2
|
|
beq .L1316
|
|
ldr ip, [r9, #8]
|
|
ldr lr, [ip, r2, lsl #2]
|
|
ldr ip, [r0, r2, lsl #2]
|
|
cmp lr, ip
|
|
beq .L1314
|
|
ldr r2, [fp, #-64]
|
|
ldrh r1, [r4]
|
|
ldr r0, .L1329+16
|
|
bl sftl_printk
|
|
b .L1327
|
|
.L1314:
|
|
add r2, r2, #1
|
|
b .L1313
|
|
.L1307:
|
|
mvn r2, #0
|
|
b .L1328
|
|
.L1319:
|
|
ldr r3, .L1329+20
|
|
ldrh r3, [r3]
|
|
cmp r3, r5
|
|
bhi .L1302
|
|
.L1301:
|
|
ldr r3, .L1329
|
|
mvn r2, #0
|
|
mov r1, r5
|
|
mov r0, r4
|
|
strh r5, [r4, #2] @ movhi
|
|
strh r2, [r3, #4] @ movhi
|
|
mov r2, #0
|
|
strb r2, [r4, #6]
|
|
bl ftl_sb_update_avl_pages
|
|
b .L1320
|
|
.L1321:
|
|
mvn r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1330:
|
|
.align 2
|
|
.L1329:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+310
|
|
.word .LANCHOR0+258
|
|
.word .LC117
|
|
.word .LANCHOR0+302
|
|
.size FtlGcScanTempBlk, .-FtlGcScanTempBlk
|
|
.align 2
|
|
.global FtlReadRefresh
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlReadRefresh, %function
|
|
FtlReadRefresh:
|
|
@ args = 0, pretend = 0, frame = 96
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #100
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L1347
|
|
mov r3, sp
|
|
bic r6, r3, #8128
|
|
bic r6, r6, #63
|
|
ldr r9, [r5, #2720]
|
|
ldr r3, [r6, #24]
|
|
str r3, [fp, #-48]
|
|
cmp r9, #0
|
|
ldr r3, [r5, #2552]
|
|
beq .L1332
|
|
ldr r2, [r5, #2724]
|
|
cmp r2, r3
|
|
bcs .L1333
|
|
mov r4, #2048
|
|
.L1338:
|
|
ldr r0, [r5, #2724]
|
|
ldr r3, [r5, #2552]
|
|
cmp r0, r3
|
|
bcc .L1334
|
|
.L1337:
|
|
mvn r0, #0
|
|
.L1331:
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r6, #24]
|
|
cmp r2, r3
|
|
beq .L1342
|
|
bl __stack_chk_fail
|
|
.L1334:
|
|
mov r2, #0
|
|
sub r1, fp, #136
|
|
bl log2phys
|
|
ldr r3, [r5, #2724]
|
|
ldr r2, [fp, #-136]
|
|
add r3, r3, #1
|
|
str r3, [r5, #2724]
|
|
cmn r2, #1
|
|
beq .L1336
|
|
str r2, [fp, #-128]
|
|
sub r0, fp, #132
|
|
str r3, [fp, #-116]
|
|
mov r2, #0
|
|
ldr r3, [r5, #3324]
|
|
mov r1, #1
|
|
str r3, [fp, #-124]
|
|
sub r3, fp, #112
|
|
str r2, [fp, #-132]
|
|
str r3, [fp, #-120]
|
|
bl FlashReadPages
|
|
ldr r3, [fp, #-132]
|
|
cmp r3, #256
|
|
bne .L1337
|
|
ldr r0, [fp, #-136]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
b .L1337
|
|
.L1336:
|
|
subs r4, r4, #1
|
|
bne .L1338
|
|
b .L1337
|
|
.L1333:
|
|
ldr r3, [r5, #2556]
|
|
mov r0, #0
|
|
str r3, [r5, #2716]
|
|
str r0, [r5, #2720]
|
|
str r0, [r5, #2724]
|
|
b .L1331
|
|
.L1332:
|
|
ldr r2, .L1347+4
|
|
movw r4, #10000
|
|
ldr r1, [r5, #2612]
|
|
ldr r8, [r5, #2556]
|
|
cmp r1, r4
|
|
ldr r10, [r5, #2716]
|
|
ldrh r7, [r2, #28]
|
|
add r2, r8, #1048576
|
|
movhi r4, #31
|
|
movls r4, #63
|
|
cmp r10, r2
|
|
bhi .L1341
|
|
mov r0, #1000
|
|
lsr r1, r1, #10
|
|
add r1, r1, #1
|
|
mul r0, r0, r3
|
|
bl __aeabi_uidiv
|
|
add r0, r0, r10
|
|
cmp r8, r0
|
|
bhi .L1341
|
|
ands r0, r4, r7
|
|
movne r0, r9
|
|
bne .L1331
|
|
ldr r3, [r5, #2740]
|
|
cmp r3, r7
|
|
beq .L1331
|
|
.L1341:
|
|
mov r3, #1
|
|
mov r0, #0
|
|
str r7, [r5, #2740]
|
|
str r3, [r5, #2720]
|
|
str r0, [r5, #2724]
|
|
str r8, [r5, #2716]
|
|
b .L1331
|
|
.L1342:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1348:
|
|
.align 2
|
|
.L1347:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2468
|
|
.size FtlReadRefresh, .-FtlReadRefresh
|
|
.align 2
|
|
.global l2p_flush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type l2p_flush, %function
|
|
l2p_flush:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r6, .L1353
|
|
mov r4, #0
|
|
ldr r5, .L1353+4
|
|
bl FtlWriteDump_data
|
|
.L1350:
|
|
ldrh r3, [r5]
|
|
uxth r0, r4
|
|
cmp r3, r0
|
|
bhi .L1352
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1352:
|
|
ldr r2, [r6, #2540]
|
|
uxth r3, r4
|
|
mov r1, #12
|
|
mla r3, r1, r3, r2
|
|
ldr r3, [r3, #4]
|
|
cmp r3, #0
|
|
bge .L1351
|
|
bl flush_l2p_region
|
|
.L1351:
|
|
add r4, r4, #1
|
|
b .L1350
|
|
.L1354:
|
|
.align 2
|
|
.L1353:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+338
|
|
.size l2p_flush, .-l2p_flush
|
|
.align 2
|
|
.global FtlVendorPartWrite
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVendorPartWrite, %function
|
|
FtlVendorPartWrite:
|
|
@ args = 0, pretend = 0, frame = 104
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #108
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r7, .L1365
|
|
bic r10, r3, #8128
|
|
str r2, [fp, #-136]
|
|
bic r10, r10, #63
|
|
add r2, r0, r1
|
|
mov r6, r0
|
|
mov r5, r1
|
|
ldr r3, [r10, #24]
|
|
str r3, [fp, #-48]
|
|
mov r3, r7
|
|
ldrh r8, [r3], #-12
|
|
lsr r8, r0, r8
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
subls r7, r7, #308
|
|
movls r9, #0
|
|
bls .L1357
|
|
mvn r9, #0
|
|
b .L1355
|
|
.L1362:
|
|
ldr r3, [r7, #3372]
|
|
mov r0, r6
|
|
ldr r2, [r3, r8, lsl #2]
|
|
ldr r3, .L1365+4
|
|
str r2, [fp, #-148]
|
|
ldrh r3, [r3]
|
|
str r3, [fp, #-144]
|
|
mov r1, r3
|
|
bl __aeabi_uidivmod
|
|
ldr r3, [fp, #-144]
|
|
ldr r2, [fp, #-148]
|
|
sub r4, r3, r1
|
|
str r1, [fp, #-140]
|
|
ldr r0, [r7, #3308]
|
|
uxth r4, r4
|
|
cmp r4, r5
|
|
uxthhi r4, r5
|
|
cmp r2, #0
|
|
cmpne r3, r4
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
beq .L1359
|
|
str r2, [fp, #-128]
|
|
mov r2, #1
|
|
str r0, [fp, #-124]
|
|
mov r1, r2
|
|
sub r0, fp, #132
|
|
sub r3, fp, #112
|
|
str r3, [fp, #-120]
|
|
bl FlashReadPages
|
|
.L1360:
|
|
lsl r3, r4, #9
|
|
ldr r0, [r7, #3308]
|
|
mov r2, r3
|
|
str r3, [fp, #-144]
|
|
ldr r3, [fp, #-140]
|
|
sub r5, r5, r4
|
|
ldr r1, [fp, #-136]
|
|
add r6, r6, r4
|
|
add r0, r0, r3, lsl #9
|
|
bl ftl_memcpy
|
|
ldr r2, [r7, #3308]
|
|
mov r1, r8
|
|
ldr r0, .L1365+8
|
|
bl FtlMapWritePage
|
|
ldr r2, [fp, #-136]
|
|
ldr r3, [fp, #-144]
|
|
cmn r0, #1
|
|
add r8, r8, #1
|
|
add r3, r2, r3
|
|
mvneq r9, #0
|
|
str r3, [fp, #-136]
|
|
.L1357:
|
|
cmp r5, #0
|
|
bne .L1362
|
|
.L1355:
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r10, #24]
|
|
cmp r2, r3
|
|
beq .L1363
|
|
bl __stack_chk_fail
|
|
.L1359:
|
|
ldr r3, .L1365+12
|
|
ldrh r2, [r3]
|
|
bl ftl_memset
|
|
b .L1360
|
|
.L1363:
|
|
mov r0, r9
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1366:
|
|
.align 2
|
|
.L1365:
|
|
.word .LANCHOR0+308
|
|
.word .LANCHOR0+258
|
|
.word .LANCHOR0+3608
|
|
.word .LANCHOR0+310
|
|
.size FtlVendorPartWrite, .-FtlVendorPartWrite
|
|
.align 2
|
|
.global Ftl_save_ext_data
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_save_ext_data, %function
|
|
Ftl_save_ext_data:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r2, .L1369
|
|
ldr r3, .L1369+4
|
|
ldr r1, [r2, #2640]
|
|
cmp r1, r3
|
|
ldmfdne sp, {fp, sp, pc}
|
|
ldr r3, .L1369+8
|
|
add r2, r2, #2640
|
|
str r3, [r2, #4]
|
|
mov r1, #1
|
|
ldr r3, [r2, #-60]
|
|
mov r0, #0
|
|
str r3, [r2, #88]
|
|
ldr r3, [r2, #-56]
|
|
str r3, [r2, #92]
|
|
ldr r3, [r2, #-64]
|
|
str r3, [r2, #8]
|
|
ldr r3, [r2, #-76]
|
|
str r3, [r2, #12]
|
|
ldr r3, [r2, #-84]
|
|
str r3, [r2, #16]
|
|
ldr r3, [r2, #-68]
|
|
str r3, [r2, #20]
|
|
ldr r3, [r2, #-40]
|
|
str r3, [r2, #28]
|
|
ldr r3, [r2, #-32]
|
|
str r3, [r2, #32]
|
|
ldr r3, [r2, #-80]
|
|
str r3, [r2, #36]
|
|
ldr r3, [r2, #-72]
|
|
str r3, [r2, #40]
|
|
ldr r3, [r2, #-28]
|
|
str r3, [r2, #44]
|
|
ldr r3, [r2, #-24]
|
|
str r3, [r2, #48]
|
|
bl FtlVendorPartWrite
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L1370:
|
|
.align 2
|
|
.L1369:
|
|
.word .LANCHOR0
|
|
.word 1179929683
|
|
.word 1342177369
|
|
.size Ftl_save_ext_data, .-Ftl_save_ext_data
|
|
.align 2
|
|
.global FtlEctTblFlush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlEctTblFlush, %function
|
|
FtlEctTblFlush:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L1376
|
|
movw r1, #3652
|
|
ldrh r2, [r3, r1]
|
|
cmp r2, #31
|
|
addls r2, r2, #1
|
|
strhls r2, [r3, r1] @ movhi
|
|
ldr r2, [r3, #3348]
|
|
movls r1, #1
|
|
movhi r1, #32
|
|
cmp r0, #0
|
|
ldr ip, [r2, #16]
|
|
bne .L1373
|
|
ldr r0, [r2, #20]
|
|
add r1, r1, r0
|
|
cmp r1, ip
|
|
bhi .L1374
|
|
.L1373:
|
|
ldr r1, .L1376+4
|
|
mov r0, #64
|
|
str r1, [r2]
|
|
str ip, [r2, #20]
|
|
movw r2, #3340
|
|
ldrh r1, [r3, r2]
|
|
ldr r2, [r3, #3348]
|
|
lsl r3, r1, #9
|
|
str r3, [r2, #12]
|
|
ldr r3, [r2, #8]
|
|
add r3, r3, #1
|
|
str r3, [r2, #8]
|
|
mov r3, #0
|
|
str r3, [r2, #4]
|
|
bl FtlVendorPartWrite
|
|
bl Ftl_save_ext_data
|
|
.L1374:
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L1377:
|
|
.align 2
|
|
.L1376:
|
|
.word .LANCHOR0
|
|
.word 1112818501
|
|
.size FtlEctTblFlush, .-FtlEctTblFlush
|
|
.align 2
|
|
.global sftl_vendor_write
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type sftl_vendor_write, %function
|
|
sftl_vendor_write:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
add r0, r0, #256
|
|
bl FtlVendorPartWrite
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size sftl_vendor_write, .-sftl_vendor_write
|
|
.section .rodata.str1.1
|
|
.LC118:
|
|
.ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlVendorPartRead
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVendorPartRead, %function
|
|
FtlVendorPartRead:
|
|
@ args = 0, pretend = 0, frame = 104
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #108
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r6, .L1390
|
|
bic r3, r3, #8128
|
|
mov r9, r2
|
|
bic r3, r3, #63
|
|
str r3, [fp, #-136]
|
|
add r2, r0, r1
|
|
mov r8, r0
|
|
mov r5, r1
|
|
ldr r3, [r3, #24]
|
|
str r3, [fp, #-48]
|
|
mov r3, r6
|
|
ldrh r7, [r3], #-12
|
|
lsr r7, r0, r7
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
subls r6, r6, #308
|
|
movls r10, #0
|
|
bls .L1381
|
|
mvn r10, #0
|
|
b .L1379
|
|
.L1387:
|
|
ldr r2, .L1390+4
|
|
mov r0, r8
|
|
ldr r3, [r6, #3372]
|
|
ldrh r4, [r2]
|
|
ldr r3, [r3, r7, lsl #2]
|
|
mov r1, r4
|
|
str r3, [fp, #-144]
|
|
bl __aeabi_uidivmod
|
|
sub r4, r4, r1
|
|
ldr r3, [fp, #-144]
|
|
uxth r4, r4
|
|
str r1, [fp, #-140]
|
|
cmp r4, r5
|
|
uxthhi r4, r5
|
|
cmp r3, #0
|
|
lsl r2, r4, #9
|
|
str r2, [fp, #-144]
|
|
beq .L1383
|
|
ldr r2, [r6, #3308]
|
|
sub r0, fp, #132
|
|
str r2, [fp, #-124]
|
|
sub r2, fp, #112
|
|
str r2, [fp, #-120]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r3, [fp, #-128]
|
|
str r3, [fp, #-148]
|
|
bl FlashReadPages
|
|
ldr r2, [fp, #-132]
|
|
ldr r3, [fp, #-148]
|
|
cmn r2, #1
|
|
ldr r2, [r6, #3452]
|
|
mvneq r10, #0
|
|
cmp r2, #256
|
|
bne .L1385
|
|
ldr r0, .L1390+8
|
|
mov r2, r3
|
|
mov r1, r7
|
|
bl sftl_printk
|
|
ldr r2, [r6, #3308]
|
|
ldr r0, .L1390+12
|
|
mov r1, r7
|
|
bl FtlMapWritePage
|
|
.L1385:
|
|
ldr r1, [r6, #3308]
|
|
lsl r2, r4, #9
|
|
ldr r3, [fp, #-140]
|
|
mov r0, r9
|
|
add r1, r1, r3, lsl #9
|
|
bl ftl_memcpy
|
|
.L1386:
|
|
ldr r3, [fp, #-144]
|
|
add r7, r7, #1
|
|
sub r5, r5, r4
|
|
add r8, r8, r4
|
|
add r9, r9, r3
|
|
.L1381:
|
|
cmp r5, #0
|
|
bne .L1387
|
|
.L1379:
|
|
ldr r3, [fp, #-136]
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r3, #24]
|
|
cmp r2, r3
|
|
beq .L1388
|
|
bl __stack_chk_fail
|
|
.L1383:
|
|
lsl r2, r4, #9
|
|
mov r1, r3
|
|
mov r0, r9
|
|
bl ftl_memset
|
|
b .L1386
|
|
.L1388:
|
|
mov r0, r10
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1391:
|
|
.align 2
|
|
.L1390:
|
|
.word .LANCHOR0+308
|
|
.word .LANCHOR0+258
|
|
.word .LC118
|
|
.word .LANCHOR0+3608
|
|
.size FtlVendorPartRead, .-FtlVendorPartRead
|
|
.section .rodata.str1.1
|
|
.LC119:
|
|
.ascii "no ect\000"
|
|
.text
|
|
.align 2
|
|
.global FtlLoadEctTbl
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadEctTbl, %function
|
|
FtlLoadEctTbl:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1394
|
|
movw r5, #3340
|
|
mov r0, #64
|
|
ldr r2, [r4, #3348]
|
|
ldrh r1, [r4, r5]
|
|
bl FtlVendorPartRead
|
|
ldr r3, [r4, #3348]
|
|
ldr r2, [r3]
|
|
ldr r3, .L1394+4
|
|
cmp r2, r3
|
|
beq .L1393
|
|
ldr r1, .L1394+8
|
|
ldr r0, .L1394+12
|
|
bl sftl_printk
|
|
ldrh r2, [r4, r5]
|
|
ldr r0, [r4, #3348]
|
|
mov r1, #0
|
|
lsl r2, r2, #9
|
|
bl ftl_memset
|
|
.L1393:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L1395:
|
|
.align 2
|
|
.L1394:
|
|
.word .LANCHOR0
|
|
.word 1112818501
|
|
.word .LC119
|
|
.word .LC77
|
|
.size FtlLoadEctTbl, .-FtlLoadEctTbl
|
|
.align 2
|
|
.global Ftl_load_ext_data
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_load_ext_data, %function
|
|
Ftl_load_ext_data:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1398
|
|
mov r1, #1
|
|
mov r0, #0
|
|
ldr r5, .L1398+4
|
|
add r2, r4, #2640
|
|
bl FtlVendorPartRead
|
|
ldr r3, [r4, #2640]
|
|
cmp r3, r5
|
|
beq .L1397
|
|
add r0, r4, #2640
|
|
mov r2, #512
|
|
mov r1, #0
|
|
bl ftl_memset
|
|
str r5, [r4, #2640]
|
|
.L1397:
|
|
ldr r2, [r4, #2672]
|
|
str r2, [r4, #2608]
|
|
ldr r2, [r4, #2676]
|
|
str r2, [r4, #2560]
|
|
ldr r2, [r4, #2680]
|
|
ldr r3, [r4, #2728]
|
|
str r2, [r4, #2568]
|
|
ldr r2, [r4, #2684]
|
|
str r3, [r4, #2580]
|
|
str r2, [r4, #2612]
|
|
ldr r3, [r4, #2732]
|
|
ldr r2, [r4, #2688]
|
|
str r3, [r4, #2584]
|
|
str r2, [r4, #2616]
|
|
ldr r3, [r4, #2648]
|
|
ldr r2, .L1398+8
|
|
str r3, [r4, #2576]
|
|
ldr r3, [r4, #2652]
|
|
str r3, [r4, #2564]
|
|
ldr r3, [r4, #2656]
|
|
str r3, [r4, #2556]
|
|
ldr r3, [r4, #2660]
|
|
ldrh r2, [r2]
|
|
str r3, [r4, #2572]
|
|
ldr r0, [r4, #2596]
|
|
ldr r3, [r4, #2668]
|
|
ldrh r1, [r4, #240]
|
|
str r3, [r4, #2600]
|
|
mla r0, r0, r2, r3
|
|
bl __aeabi_uidiv
|
|
str r0, [r4, #2604]
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L1399:
|
|
.align 2
|
|
.L1398:
|
|
.word .LANCHOR0
|
|
.word 1179929683
|
|
.word .LANCHOR0+292
|
|
.size Ftl_load_ext_data, .-Ftl_load_ext_data
|
|
.align 2
|
|
.global sftl_vendor_read
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type sftl_vendor_read, %function
|
|
sftl_vendor_read:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
add r0, r0, #256
|
|
bl FtlVendorPartRead
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size sftl_vendor_read, .-sftl_vendor_read
|
|
.align 2
|
|
.global FtlMapBlkWriteDump_data
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMapBlkWriteDump_data, %function
|
|
FtlMapBlkWriteDump_data:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, [r0, #36]
|
|
mov r4, r0
|
|
cmp r3, #0
|
|
ldmfdeq sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
ldrh r6, [r0, #6]
|
|
mov r2, #0
|
|
ldr r5, .L1408
|
|
sub r6, r6, #1
|
|
str r2, [r0, #36]
|
|
ldr r3, [r0, #24]
|
|
uxth r6, r6
|
|
ldr r0, [r5, #3304]
|
|
ldr r2, [r5, #3332]
|
|
str r0, [r5, #3460]
|
|
str r2, [r5, #3464]
|
|
ldr r3, [r3, r6, lsl #2]
|
|
str r3, [r5, #3456]
|
|
cmp r3, #0
|
|
beq .L1403
|
|
mov r2, #1
|
|
ldr r0, .L1408+4
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
.L1404:
|
|
ldr r2, [r5, #3460]
|
|
mov r1, r6
|
|
mov r0, r4
|
|
bl FtlMapWritePage
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1403:
|
|
movw r3, #310
|
|
mov r1, #255
|
|
ldrh r2, [r5, r3]
|
|
bl ftl_memset
|
|
b .L1404
|
|
.L1409:
|
|
.align 2
|
|
.L1408:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+3452
|
|
.size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
|
|
.section .rodata.str1.1
|
|
.LC120:
|
|
.ascii "FtlVpcTblFlush error = %x error count = %d\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlVpcTblFlush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVpcTblFlush, %function
|
|
FtlVpcTblFlush:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1420
|
|
mov r6, #0
|
|
mov r1, #255
|
|
add r5, r4, #2624
|
|
add r9, r4, #304
|
|
sub r8, r5, #156
|
|
ldr r7, [r4, #3332]
|
|
ldr r3, [r4, #3300]
|
|
str r3, [r4, #3460]
|
|
ldrh r3, [r5]
|
|
str r7, [r4, #3464]
|
|
strh r3, [r7, #2] @ movhi
|
|
ldr r3, .L1420+4
|
|
strh r3, [r7] @ movhi
|
|
str r6, [r7, #12]
|
|
ldr r3, [r4, #2632]
|
|
str r3, [r7, #4]
|
|
ldr r3, .L1420+8
|
|
str r3, [r4, #2468]
|
|
ldr r3, .L1420+12
|
|
str r3, [r4, #2472]
|
|
ldrh r3, [r5, #6]
|
|
str r6, [r7, #8]
|
|
strh r3, [r5, #-148] @ movhi
|
|
ldrh r3, [r4, #254]
|
|
strb r3, [r4, #2478]
|
|
ldrh r3, [r4, #24]
|
|
ldrh r2, [r4, #26]
|
|
strh r3, [r5, #-142] @ movhi
|
|
ldrb r3, [r4, #30] @ zero_extendqisi2
|
|
orr r3, r3, r2, lsl #6
|
|
strh r3, [r5, #-140] @ movhi
|
|
ldrb r3, [r4, #32] @ zero_extendqisi2
|
|
strb r3, [r4, #2479]
|
|
ldrh r3, [r4, #76]
|
|
ldrh r2, [r4, #78]
|
|
strh r3, [r5, #-138] @ movhi
|
|
ldrb r3, [r4, #82] @ zero_extendqisi2
|
|
orr r3, r3, r2, lsl #6
|
|
strh r3, [r5, #-136] @ movhi
|
|
ldrb r3, [r4, #84] @ zero_extendqisi2
|
|
strb r3, [r4, #2480]
|
|
ldrh r3, [r4, #124]
|
|
strh r3, [r5, #-134] @ movhi
|
|
ldrh r2, [r4, #126]
|
|
ldrb r3, [r4, #130] @ zero_extendqisi2
|
|
ldr r0, [r4, #3460]
|
|
orr r3, r3, r2, lsl #6
|
|
strh r3, [r5, #-132] @ movhi
|
|
ldrb r3, [r4, #132] @ zero_extendqisi2
|
|
strb r3, [r4, #2481]
|
|
ldr r3, [r4, #2596]
|
|
str r3, [r4, #2500]
|
|
ldr r3, [r4, #2588]
|
|
str r3, [r4, #2508]
|
|
ldr r3, [r4, #2592]
|
|
str r3, [r4, #2504]
|
|
movw r3, #310
|
|
ldrh r2, [r4, r3]
|
|
bl ftl_memset
|
|
mov r1, r8
|
|
mov r2, #48
|
|
ldr r0, [r4, #3460]
|
|
bl ftl_memcpy
|
|
ldrh r2, [r4, #240]
|
|
ldr r0, [r4, #3460]
|
|
movw r8, #65535
|
|
ldr r1, [r4, #72]
|
|
lsl r2, r2, #1
|
|
add r0, r0, #48
|
|
bl ftl_memcpy
|
|
mov r0, r6
|
|
bl FtlUpdateVaildLpn
|
|
.L1411:
|
|
ldrh r1, [r5, #2]
|
|
ldrh r2, [r5]
|
|
ldr r3, [r4, #3300]
|
|
str r3, [r4, #3460]
|
|
ldr r3, [r4, #3332]
|
|
str r3, [r4, #3464]
|
|
orr r3, r1, r2, lsl #10
|
|
str r3, [r4, #3456]
|
|
ldrh r3, [r9]
|
|
sub r3, r3, #1
|
|
cmp r1, r3
|
|
blt .L1412
|
|
mov r3, #0
|
|
ldrh r8, [r5, #4]
|
|
strh r3, [r5, #2] @ movhi
|
|
strh r2, [r5, #4] @ movhi
|
|
bl FtlFreeSysBlkQueueOut
|
|
ldr r3, [r4, #2588]
|
|
str r3, [r4, #2632]
|
|
add r2, r3, #1
|
|
strh r0, [r5] @ movhi
|
|
str r2, [r4, #2588]
|
|
lsl r2, r0, #10
|
|
str r2, [r4, #3456]
|
|
str r3, [r7, #4]
|
|
strh r0, [r7, #2] @ movhi
|
|
.L1412:
|
|
ldr r3, .L1420+16
|
|
ldr r0, [r4, #3300]
|
|
ldrh r1, [r3]
|
|
bl js_hash
|
|
mov r3, #1
|
|
str r0, [r7, #12]
|
|
mov r2, r3
|
|
mov r1, r3
|
|
ldr r0, .L1420+20
|
|
bl FlashProgPages
|
|
ldrh r3, [r5, #2]
|
|
ldr r2, [r4, #3452]
|
|
add r3, r3, #1
|
|
cmn r2, #1
|
|
uxth r3, r3
|
|
strh r3, [r5, #2] @ movhi
|
|
bne .L1413
|
|
cmp r3, #1
|
|
bne .L1415
|
|
ldr r1, .L1420+24
|
|
movw r2, #1145
|
|
ldr r0, .L1420+28
|
|
bl sftl_printk
|
|
ldrh r3, [r5, #2]
|
|
cmp r3, #1
|
|
ldrheq r3, [r9]
|
|
subeq r3, r3, #1
|
|
strheq r3, [r5, #2] @ movhi
|
|
.L1415:
|
|
add r6, r6, #1
|
|
uxth r6, r6
|
|
cmp r6, #3
|
|
bls .L1411
|
|
ldr r1, [r4, #3456]
|
|
mov r2, r6
|
|
ldr r0, .L1420+32
|
|
bl sftl_printk
|
|
.L1418:
|
|
b .L1418
|
|
.L1413:
|
|
cmp r2, #256
|
|
cmpne r3, #1
|
|
beq .L1411
|
|
movw r3, #65535
|
|
cmp r8, r3
|
|
beq .L1419
|
|
mov r0, r8
|
|
mov r1, #1
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L1419:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L1421:
|
|
.align 2
|
|
.L1420:
|
|
.word .LANCHOR0
|
|
.word -3932
|
|
.word 1179929683
|
|
.word 1342177369
|
|
.word .LANCHOR0+310
|
|
.word .LANCHOR0+3452
|
|
.word .LANCHOR1+471
|
|
.word .LC8
|
|
.word .LC120
|
|
.size FtlVpcTblFlush, .-FtlVpcTblFlush
|
|
.align 2
|
|
.global FtlSysFlush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSysFlush, %function
|
|
FtlSysFlush:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
bl l2p_flush
|
|
mov r0, #1
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size FtlSysFlush, .-FtlSysFlush
|
|
.align 2
|
|
.global sftl_deinit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type sftl_deinit, %function
|
|
sftl_deinit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L1425
|
|
ldr r3, [r3]
|
|
cmp r3, #1
|
|
bne .L1424
|
|
bl FtlSysFlush
|
|
.L1424:
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L1426:
|
|
.align 2
|
|
.L1425:
|
|
.word .LANCHOR2
|
|
.size sftl_deinit, .-sftl_deinit
|
|
.align 2
|
|
.global sftl_discard
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type sftl_discard, %function
|
|
sftl_discard:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #16
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r8, .L1444
|
|
bic r7, r3, #8128
|
|
mov r9, r0
|
|
bic r7, r7, #63
|
|
mov r4, r1
|
|
ldr r3, [r7, #24]
|
|
str r3, [fp, #-40]
|
|
ldr r3, [r8, #340]
|
|
cmp r3, r1
|
|
cmpcs r3, r0
|
|
bls .L1437
|
|
add r2, r0, r1
|
|
cmp r3, r2
|
|
bcc .L1437
|
|
cmp r1, #31
|
|
bhi .L1429
|
|
.L1434:
|
|
mov r0, #0
|
|
.L1427:
|
|
ldr r2, [fp, #-40]
|
|
ldr r3, [r7, #24]
|
|
cmp r2, r3
|
|
beq .L1435
|
|
bl __stack_chk_fail
|
|
.L1429:
|
|
movw r3, #258
|
|
ldrh r5, [r8, r3]
|
|
mov r1, r5
|
|
bl __aeabi_uidiv
|
|
mov r6, r0
|
|
smulbb r0, r0, r5
|
|
sub r9, r9, r0
|
|
uxth r9, r9
|
|
cmp r9, #0
|
|
beq .L1430
|
|
sub r5, r5, r9
|
|
add r6, r6, #1
|
|
cmp r5, r4
|
|
movcs r5, r4
|
|
uxth r5, r5
|
|
sub r4, r4, r5
|
|
.L1430:
|
|
ldr r5, .L1444+4
|
|
mvn r3, #0
|
|
str r3, [fp, #-44]
|
|
.L1431:
|
|
ldrh r3, [r5]
|
|
cmp r3, r4
|
|
bls .L1433
|
|
ldr r3, [r8, #3656]
|
|
cmp r3, #32
|
|
bls .L1434
|
|
mov r4, #0
|
|
str r4, [r8, #3656]
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
b .L1434
|
|
.L1433:
|
|
sub r1, fp, #48
|
|
mov r0, r6
|
|
mov r2, #0
|
|
bl log2phys
|
|
ldr r3, [fp, #-48]
|
|
cmn r3, #1
|
|
beq .L1432
|
|
ldr r3, [r8, #3656]
|
|
sub r1, fp, #44
|
|
mov r2, #1
|
|
mov r0, r6
|
|
add r3, r3, #1
|
|
str r3, [r8, #3656]
|
|
ldr r3, [r8, #2560]
|
|
add r3, r3, #1
|
|
str r3, [r8, #2560]
|
|
bl log2phys
|
|
ldr r0, [fp, #-48]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl decrement_vpc_count
|
|
.L1432:
|
|
ldrh r3, [r5]
|
|
add r6, r6, #1
|
|
sub r4, r4, r3
|
|
b .L1431
|
|
.L1437:
|
|
mvn r0, #0
|
|
b .L1427
|
|
.L1435:
|
|
sub sp, fp, #36
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L1445:
|
|
.align 2
|
|
.L1444:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+258
|
|
.size sftl_discard, .-sftl_discard
|
|
.section .rodata.str1.1
|
|
.LC121:
|
|
.ascii "FtlCheckVpc %x = %x %x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlVpcCheckAndModify
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVpcCheckAndModify, %function
|
|
FtlVpcCheckAndModify:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #12
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r4, .L1461
|
|
bic r7, r3, #8128
|
|
ldr r1, .L1461+4
|
|
bic r7, r7, #63
|
|
ldr r0, .L1461+8
|
|
mov r5, #0
|
|
ldr r3, [r7, #24]
|
|
str r3, [fp, #-48]
|
|
bl sftl_printk
|
|
ldrh r2, [r4, #242]
|
|
mov r1, #0
|
|
ldr r0, [r4, #3352]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
.L1447:
|
|
ldr r3, [r4, #2552]
|
|
cmp r3, r5
|
|
bhi .L1449
|
|
ldr r9, .L1461+12
|
|
mov r8, #0
|
|
ldr r10, .L1461+16
|
|
.L1450:
|
|
ldrh r3, [r4, #240]
|
|
uxth r5, r8
|
|
cmp r3, r5
|
|
bhi .L1456
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r7, #24]
|
|
cmp r2, r3
|
|
beq .L1457
|
|
bl __stack_chk_fail
|
|
.L1449:
|
|
sub r1, fp, #52
|
|
mov r0, r5
|
|
mov r2, #0
|
|
bl log2phys
|
|
ldr r0, [fp, #-52]
|
|
cmn r0, #1
|
|
beq .L1448
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldr r2, [r4, #3352]
|
|
lsl r0, r0, #1
|
|
ldrh r3, [r2, r0]
|
|
add r3, r3, #1
|
|
strh r3, [r2, r0] @ movhi
|
|
.L1448:
|
|
add r5, r5, #1
|
|
b .L1447
|
|
.L1456:
|
|
uxth r1, r8
|
|
ldr r3, [r4, #72]
|
|
movw r0, #65535
|
|
lsl r6, r1, #1
|
|
ldrh r2, [r3, r6]
|
|
ldr r3, [r4, #3352]
|
|
ldrh r3, [r3, r6]
|
|
cmp r2, r0
|
|
cmpne r2, r3
|
|
beq .L1452
|
|
mov r0, r9
|
|
bl sftl_printk
|
|
ldrh r3, [r4, #24]
|
|
cmp r3, r5
|
|
beq .L1452
|
|
ldrh r3, [r4, #124]
|
|
cmp r3, r5
|
|
beq .L1452
|
|
ldrh r3, [r4, #76]
|
|
cmp r3, r5
|
|
beq .L1452
|
|
ldr r3, [r4, #72]
|
|
ldr r2, [r4, #3352]
|
|
ldrh r1, [r3, r6]
|
|
ldrh r2, [r2, r6]
|
|
cmp r1, #0
|
|
strh r2, [r3, r6] @ movhi
|
|
bne .L1454
|
|
mov r1, r5
|
|
mov r0, r10
|
|
bl List_remove_node
|
|
ldrh r3, [r4, #224]
|
|
cmp r3, #0
|
|
bne .L1455
|
|
ldr r1, .L1461+4
|
|
movw r2, #2330
|
|
ldr r0, .L1461+20
|
|
bl sftl_printk
|
|
.L1455:
|
|
ldrh r3, [r4, #224]
|
|
mov r0, r5
|
|
sub r3, r3, #1
|
|
strh r3, [r4, #224] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
.L1452:
|
|
add r8, r8, #1
|
|
b .L1450
|
|
.L1454:
|
|
mov r0, r5
|
|
bl update_vpc_list
|
|
b .L1452
|
|
.L1457:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1462:
|
|
.align 2
|
|
.L1461:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+486
|
|
.word .LC111
|
|
.word .LC121
|
|
.word .LANCHOR0+2532
|
|
.word .LC8
|
|
.size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
|
|
.align 2
|
|
.global allocate_new_data_superblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type allocate_new_data_superblock, %function
|
|
allocate_new_data_superblock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r6, .L1473
|
|
mov r5, r0
|
|
ldrh r4, [r0]
|
|
ldrh r3, [r6, #240]
|
|
cmp r3, r4
|
|
bcs .L1464
|
|
ldr r1, .L1473+4
|
|
movw r2, #2766
|
|
ldr r0, .L1473+8
|
|
bl sftl_printk
|
|
.L1464:
|
|
movw r3, #65535
|
|
cmp r4, r3
|
|
beq .L1465
|
|
ldr r2, [r6, #72]
|
|
lsl r3, r4, #1
|
|
mov r0, r4
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L1466
|
|
bl INSERT_DATA_LIST
|
|
.L1465:
|
|
mov r3, #1
|
|
strb r3, [r5, #8]
|
|
movw r3, #3438
|
|
ldrh r0, [r6, r3]
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
beq .L1467
|
|
cmp r0, r4
|
|
bne .L1468
|
|
ldr r3, [r6, #72]
|
|
lsl r4, r4, #1
|
|
ldrh r3, [r3, r4]
|
|
cmp r3, #0
|
|
beq .L1469
|
|
.L1468:
|
|
bl update_vpc_list
|
|
.L1469:
|
|
movw r3, #3438
|
|
mvn r2, #0
|
|
strh r2, [r6, r3] @ movhi
|
|
.L1467:
|
|
mov r0, r5
|
|
bl allocate_data_superblock
|
|
bl l2p_flush
|
|
mov r0, #0
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1466:
|
|
bl INSERT_FREE_LIST
|
|
b .L1465
|
|
.L1474:
|
|
.align 2
|
|
.L1473:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+507
|
|
.word .LC8
|
|
.size allocate_new_data_superblock, .-allocate_new_data_superblock
|
|
.section .rodata.str1.1
|
|
.LC122:
|
|
.ascii "FtlProgPages error %x = %d\012\000"
|
|
.LC123:
|
|
.ascii "Ftlwrite decrement_vpc_count %x = %d\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlProgPages
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlProgPages, %function
|
|
FtlProgPages:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #20
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r5, r3
|
|
mov r3, sp
|
|
bic r6, r3, #8128
|
|
ldr r9, .L1493
|
|
bic r6, r6, #63
|
|
mov r7, #0
|
|
mov r8, r7
|
|
mov r2, #0
|
|
mov r4, r0
|
|
str r1, [fp, #-56]
|
|
ldr r3, [r6, #24]
|
|
str r3, [fp, #-48]
|
|
ldrb r3, [r5, #9] @ zero_extendqisi2
|
|
bl FlashProgPages
|
|
.L1476:
|
|
ldr r3, [fp, #-56]
|
|
cmp r8, r3
|
|
beq .L1482
|
|
ldr r10, .L1493+4
|
|
b .L1483
|
|
.L1478:
|
|
ldr r1, [r4, #4]
|
|
mov r0, r10
|
|
bl sftl_printk
|
|
ldr r0, [r4, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl decrement_vpc_count
|
|
ldrh r3, [r5, #4]
|
|
cmp r3, #0
|
|
bne .L1477
|
|
mov r0, r5
|
|
bl allocate_new_data_superblock
|
|
.L1477:
|
|
mov r0, r5
|
|
mov r7, #1
|
|
bl get_new_active_ppa
|
|
str r0, [r4, #4]
|
|
str r0, [fp, #-52]
|
|
mov r2, #0
|
|
ldrb r3, [r5, #9] @ zero_extendqisi2
|
|
mov r0, r4
|
|
mov r1, #1
|
|
bl FlashProgPages
|
|
.L1483:
|
|
ldr r2, [r4]
|
|
cmn r2, #1
|
|
cmpne r2, #256
|
|
beq .L1478
|
|
ldrb r2, [r5, #6] @ zero_extendqisi2
|
|
ldrh r3, [r9, #232]
|
|
cmp r2, r3
|
|
bcc .L1479
|
|
ldr r1, .L1493+8
|
|
movw r2, #986
|
|
ldr r0, .L1493+12
|
|
bl sftl_printk
|
|
.L1479:
|
|
ldr r3, [r4, #4]
|
|
sub r1, fp, #52
|
|
ldr r0, [r4, #16]
|
|
mov r2, #1
|
|
str r3, [fp, #-52]
|
|
bl log2phys
|
|
ldr r3, [r4, #12]
|
|
ldr r0, [r3, #12]
|
|
cmn r0, #1
|
|
beq .L1480
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldr r2, [r9, #72]
|
|
lsl r3, r0, #1
|
|
mov r10, r0
|
|
ldrh r2, [r2, r3]
|
|
cmp r2, #0
|
|
bne .L1481
|
|
mov r1, r0
|
|
ldr r0, .L1493+16
|
|
bl sftl_printk
|
|
.L1481:
|
|
mov r0, r10
|
|
bl decrement_vpc_count
|
|
.L1480:
|
|
add r8, r8, #1
|
|
add r4, r4, #20
|
|
b .L1476
|
|
.L1482:
|
|
cmp r7, #0
|
|
beq .L1484
|
|
bl FtlSysFlush
|
|
.L1484:
|
|
ldr r3, .L1493
|
|
ldrb r2, [r5, #6] @ zero_extendqisi2
|
|
ldrh r3, [r3, #232]
|
|
cmp r2, r3
|
|
bcc .L1475
|
|
ldr r1, .L1493+8
|
|
movw r2, #1005
|
|
ldr r0, .L1493+12
|
|
bl sftl_printk
|
|
.L1475:
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r6, #24]
|
|
cmp r2, r3
|
|
beq .L1486
|
|
bl __stack_chk_fail
|
|
.L1486:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1494:
|
|
.align 2
|
|
.L1493:
|
|
.word .LANCHOR0
|
|
.word .LC122
|
|
.word .LANCHOR1+536
|
|
.word .LC8
|
|
.word .LC123
|
|
.size FtlProgPages, .-FtlProgPages
|
|
.align 2
|
|
.global FtlGcFreeTempBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcFreeTempBlock, %function
|
|
FtlGcFreeTempBlock:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #20
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
ldr r4, .L1520
|
|
bic r6, r3, #8128
|
|
bic r6, r6, #63
|
|
ldrh r2, [r4, #124]
|
|
ldr r3, [r6, #24]
|
|
str r3, [fp, #-48]
|
|
movw r3, #302
|
|
ldrh r1, [r4, r3]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L1496
|
|
.L1503:
|
|
ldrh r2, [r4, #124]
|
|
mov r3, #0
|
|
str r3, [r4, #3444]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L1517
|
|
.L1497:
|
|
mov r0, #0
|
|
b .L1495
|
|
.L1496:
|
|
ldr r5, .L1520+4
|
|
cmp r0, #0
|
|
beq .L1499
|
|
ldrh r2, [r5, #4]
|
|
cmp r2, r3
|
|
beq .L1500
|
|
.L1501:
|
|
mov r1, #2
|
|
.L1499:
|
|
ldr r0, .L1520+8
|
|
bl FtlGcScanTempBlk
|
|
ldrh r2, [r5, #4]
|
|
movw r3, #65535
|
|
str r0, [fp, #-52]
|
|
cmp r2, r3
|
|
movne r0, #1
|
|
beq .L1503
|
|
.L1495:
|
|
ldr r2, [fp, #-48]
|
|
ldr r3, [r6, #24]
|
|
cmp r2, r3
|
|
beq .L1512
|
|
bl __stack_chk_fail
|
|
.L1500:
|
|
mov r3, #0
|
|
strh r3, [r5, #4] @ movhi
|
|
ldrh r3, [r4, #224]
|
|
cmp r3, #17
|
|
bhi .L1501
|
|
b .L1499
|
|
.L1517:
|
|
movw r3, #3204
|
|
movw r1, #302
|
|
ldrh r2, [r4, r3]
|
|
ldrh r1, [r4, r1]
|
|
ldrb r3, [r4, #131] @ zero_extendqisi2
|
|
mul r3, r1, r3
|
|
cmp r2, r3
|
|
beq .L1504
|
|
ldr r1, .L1520+12
|
|
mov r2, #164
|
|
ldr r0, .L1520+16
|
|
bl sftl_printk
|
|
.L1504:
|
|
movw r0, #302
|
|
ldrh r3, [r4, #124]
|
|
ldrb r2, [r4, #131] @ zero_extendqisi2
|
|
mov r5, #0
|
|
ldrh r0, [r4, r0]
|
|
mov r10, #12
|
|
lsl r3, r3, #1
|
|
ldr r1, [r4, #72]
|
|
ldr r9, .L1520+20
|
|
smulbb r2, r2, r0
|
|
strh r2, [r1, r3] @ movhi
|
|
movw r3, #3204
|
|
ldr r2, [r4, #2576]
|
|
ldrh r3, [r4, r3]
|
|
add r3, r3, r2
|
|
str r3, [r4, #2576]
|
|
.L1505:
|
|
ldrh r2, [r9]
|
|
uxth r3, r5
|
|
cmp r2, r3
|
|
bhi .L1509
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
ldrh r0, [r4, #124]
|
|
ldr r2, [r4, #72]
|
|
lsl r3, r0, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L1510
|
|
bl INSERT_DATA_LIST
|
|
.L1511:
|
|
movw r3, #3204
|
|
mov r5, #0
|
|
mvn r7, #0
|
|
strh r7, [r4, #124] @ movhi
|
|
strh r5, [r4, r3] @ movhi
|
|
movw r3, #3196
|
|
strh r5, [r4, r3] @ movhi
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
movw r3, #2620
|
|
ldrh r2, [r4, #224]
|
|
ldrh r3, [r4, r3]
|
|
strh r7, [r4, #172] @ movhi
|
|
add r3, r3, r3, lsl #1
|
|
cmp r2, r3, lsr #2
|
|
ldrgt r3, .L1520+24
|
|
movgt r2, #20
|
|
strhgt r2, [r3] @ movhi
|
|
b .L1497
|
|
.L1509:
|
|
uxth r8, r5
|
|
ldr r3, [r4, #3200]
|
|
ldr r2, [r4, #2552]
|
|
mul r8, r10, r8
|
|
add r7, r3, r8
|
|
ldr r0, [r7, #8]
|
|
cmp r0, r2
|
|
bcc .L1506
|
|
.L1518:
|
|
ldrh r0, [r4, #124]
|
|
b .L1519
|
|
.L1506:
|
|
mov r2, #0
|
|
sub r1, fp, #52
|
|
str r3, [fp, #-56]
|
|
bl log2phys
|
|
ldr r3, [fp, #-56]
|
|
ldr r2, [fp, #-52]
|
|
ldr r0, [r3, r8]
|
|
cmp r0, r2
|
|
bne .L1508
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
add r1, r7, #4
|
|
mov r8, r0
|
|
mov r2, #1
|
|
ldr r0, [r7, #8]
|
|
bl log2phys
|
|
mov r0, r8
|
|
.L1519:
|
|
bl decrement_vpc_count
|
|
b .L1507
|
|
.L1508:
|
|
ldr r3, [r7, #4]
|
|
cmp r2, r3
|
|
bne .L1518
|
|
.L1507:
|
|
add r5, r5, #1
|
|
b .L1505
|
|
.L1510:
|
|
bl INSERT_FREE_LIST
|
|
b .L1511
|
|
.L1512:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1521:
|
|
.align 2
|
|
.L1520:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+124
|
|
.word .LANCHOR1+549
|
|
.word .LC8
|
|
.word .LANCHOR0+3204
|
|
.word .LANCHOR0+3152
|
|
.size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
|
|
.align 2
|
|
.global FtlGcPageRecovery
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcPageRecovery, %function
|
|
FtlGcPageRecovery:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1524
|
|
movw r5, #302
|
|
add r0, r4, #124
|
|
ldrh r1, [r4, r5]
|
|
bl FtlGcScanTempBlk
|
|
ldrh r2, [r4, #126]
|
|
ldrh r3, [r4, r5]
|
|
cmp r2, r3
|
|
ldmfdcc sp, {r4, r5, fp, sp, pc}
|
|
add r0, r4, #3392
|
|
bl FtlMapBlkWriteDump_data
|
|
mov r0, #0
|
|
bl FtlGcFreeTempBlock
|
|
mov r3, #0
|
|
str r3, [r4, #3444]
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L1525:
|
|
.align 2
|
|
.L1524:
|
|
.word .LANCHOR0
|
|
.size FtlGcPageRecovery, .-FtlGcPageRecovery
|
|
.align 2
|
|
.global FtlPowerLostRecovery
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlPowerLostRecovery, %function
|
|
FtlPowerLostRecovery:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1527
|
|
mov r5, #0
|
|
add r6, r4, #24
|
|
add r4, r4, #76
|
|
mov r0, r6
|
|
str r5, [r4, #3400]
|
|
bl FtlRecoverySuperblock
|
|
mov r0, r6
|
|
bl FtlSlcSuperblockCheck
|
|
mov r0, r4
|
|
bl FtlRecoverySuperblock
|
|
mov r0, r4
|
|
bl FtlSlcSuperblockCheck
|
|
bl FtlGcPageRecovery
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
mov r0, r5
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1528:
|
|
.align 2
|
|
.L1527:
|
|
.word .LANCHOR0
|
|
.size FtlPowerLostRecovery, .-FtlPowerLostRecovery
|
|
.align 2
|
|
.global Ftl_gc_temp_data_write_back
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_gc_temp_data_write_back, %function
|
|
Ftl_gc_temp_data_write_back:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1537
|
|
mov r5, #0
|
|
mov r6, #20
|
|
mov r3, #0
|
|
mov r2, r3
|
|
ldr r1, [r4, #3168]
|
|
ldr r0, [r4, #3292]
|
|
bl FlashProgPages
|
|
.L1530:
|
|
ldr r1, [r4, #3168]
|
|
uxth r3, r5
|
|
ldr r2, [r4, #3292]
|
|
cmp r3, r1
|
|
bcc .L1533
|
|
mov r0, r2
|
|
bl FtlGcBufFree
|
|
ldrh r3, [r4, #128]
|
|
mov r0, #0
|
|
str r0, [r4, #3168]
|
|
cmp r3, r0
|
|
ldmfdne sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
mov r0, #1
|
|
bl FtlGcFreeTempBlock
|
|
mov r0, #1
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1533:
|
|
mul r3, r6, r3
|
|
add r5, r5, #1
|
|
add r1, r2, r3
|
|
ldr r2, [r2, r3]
|
|
ldr ip, [r1, #12]
|
|
cmn r2, #1
|
|
ldr r1, [r1, #4]
|
|
ldr r0, [ip, #12]
|
|
ldrne r2, [ip, #8]
|
|
bl FtlGcUpdatePage
|
|
b .L1530
|
|
.L1538:
|
|
.align 2
|
|
.L1537:
|
|
.word .LANCHOR0
|
|
.size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
|
|
.align 2
|
|
.global Ftl_get_new_temp_ppa
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_get_new_temp_ppa, %function
|
|
Ftl_get_new_temp_ppa:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1542
|
|
movw r3, #65535
|
|
ldrh r2, [r4, #124]
|
|
cmp r2, r3
|
|
beq .L1540
|
|
ldrh r3, [r4, #128]
|
|
cmp r3, #0
|
|
bne .L1541
|
|
.L1540:
|
|
mov r0, #0
|
|
mov r5, #0
|
|
bl FtlGcFreeTempBlock
|
|
ldr r0, .L1542+4
|
|
strb r5, [r4, #132]
|
|
bl allocate_data_superblock
|
|
movw r3, #3196
|
|
strh r5, [r4, r3] @ movhi
|
|
movw r3, #3204
|
|
strh r5, [r4, r3] @ movhi
|
|
bl l2p_flush
|
|
mov r0, r5
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
.L1541:
|
|
ldr r0, .L1542+4
|
|
bl get_new_active_ppa
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L1543:
|
|
.align 2
|
|
.L1542:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+124
|
|
.size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
|
|
.section .rodata.str1.1
|
|
.LC124:
|
|
.ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
|
|
.text
|
|
.align 2
|
|
.global rk_ftl_garbage_collect
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_garbage_collect, %function
|
|
rk_ftl_garbage_collect:
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #44
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1660
|
|
mov r3, sp
|
|
bic r3, r3, #8128
|
|
str r0, [fp, #-72]
|
|
bic r3, r3, #63
|
|
ldr r0, [r4, #3272]
|
|
ldr r3, [r3, #24]
|
|
cmp r0, #0
|
|
str r3, [fp, #-48]
|
|
movne r0, #0
|
|
bne .L1544
|
|
add r3, r4, #2528
|
|
ldrh r3, [r3]
|
|
cmp r3, #47
|
|
bls .L1544
|
|
ldr r3, .L1660+4
|
|
ldrh r2, [r3, #4]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L1546
|
|
.L1549:
|
|
ldrh r3, [r4, #220]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
bne .L1547
|
|
.L1548:
|
|
bl FtlReadRefresh
|
|
ldrh r0, [r4, #124]
|
|
ldrh r5, [r4, #172]
|
|
movw r6, #65535
|
|
ldr r3, [r4, #3156]
|
|
and r5, r5, r0
|
|
ldrh r0, [r4, #222]
|
|
ldr r2, [fp, #-72]
|
|
add r3, r3, #1
|
|
and r5, r5, r0
|
|
cmp r5, r6
|
|
add r3, r3, r2, lsl #7
|
|
movne r5, r6
|
|
str r3, [r4, #3156]
|
|
bne .L1550
|
|
ldrh r2, [r4, #224]
|
|
cmp r2, #24
|
|
movcc r2, #5120
|
|
movcs r2, #1024
|
|
cmp r3, r2
|
|
bls .L1550
|
|
movw r3, #3660
|
|
mov r7, #0
|
|
str r7, [r4, #3156]
|
|
strh r7, [r4, r3] @ movhi
|
|
bl GetSwlReplaceBlock
|
|
mov r5, r0
|
|
cmp r0, r6
|
|
bne .L1552
|
|
movw r6, #3154
|
|
ldrh r2, [r4, #224]
|
|
ldrh r3, [r4, r6]
|
|
cmp r2, r3
|
|
bcs .L1553
|
|
mov r0, #64
|
|
bl List_get_gc_head_node
|
|
uxth r3, r0
|
|
cmp r3, r5
|
|
beq .L1555
|
|
mov r0, r3
|
|
ldr r3, [r4, #72]
|
|
lsl r0, r0, #1
|
|
ldrh r3, [r3, r0]
|
|
cmp r3, #7
|
|
bhi .L1556
|
|
mov r0, r7
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
mov r3, #128
|
|
cmp r0, r5
|
|
strh r3, [r4, r6] @ movhi
|
|
beq .L1555
|
|
mov r5, r0
|
|
.L1552:
|
|
ldr r1, .L1660+8
|
|
lsl r2, r5, #1
|
|
ldr r3, [r4, #72]
|
|
ldr r0, .L1660+12
|
|
ldrh r1, [r1]
|
|
ldrh r3, [r3, r2]
|
|
str r1, [sp, #4]
|
|
ldr r1, [r4, #2536]
|
|
ldrh r2, [r1, r2]
|
|
mov r1, r5
|
|
str r2, [sp]
|
|
ldrh r2, [r4, #224]
|
|
bl sftl_printk
|
|
b .L1555
|
|
.L1546:
|
|
ldrh r2, [r4, #124]
|
|
cmp r2, r3
|
|
beq .L1549
|
|
mov r0, #1
|
|
bl FtlGcFreeTempBlock
|
|
cmp r0, #0
|
|
beq .L1549
|
|
mov r0, #1
|
|
b .L1544
|
|
.L1547:
|
|
ldrh r1, [r4, #222]
|
|
cmp r1, r2
|
|
strheq r3, [r4, #222] @ movhi
|
|
mvneq r3, #0
|
|
strheq r3, [r4, #220] @ movhi
|
|
b .L1548
|
|
.L1556:
|
|
mov r3, #64
|
|
.L1656:
|
|
strh r3, [r4, r6] @ movhi
|
|
.L1555:
|
|
bl FtlGcReFreshBadBlk
|
|
.L1550:
|
|
ldr r2, [fp, #-72]
|
|
movw r3, #65535
|
|
cmp r2, #0
|
|
cmpeq r5, r3
|
|
moveq r2, #1
|
|
movne r2, #0
|
|
bne .L1558
|
|
ldrh r3, [r4, #224]
|
|
cmp r3, #24
|
|
movhi r6, #1
|
|
bhi .L1559
|
|
movw r2, #302
|
|
cmp r3, #16
|
|
ldrh r6, [r4, r2]
|
|
lsrhi r6, r6, #5
|
|
bhi .L1559
|
|
cmp r3, #12
|
|
lsrhi r6, r6, #4
|
|
bhi .L1559
|
|
cmp r3, #8
|
|
lsrhi r6, r6, #2
|
|
.L1559:
|
|
ldr r2, .L1660+8
|
|
ldrh r1, [r2]
|
|
cmp r1, r3
|
|
bcs .L1562
|
|
ldrh r1, [r4, #222]
|
|
ldrh r3, [r4, #124]
|
|
and r3, r3, r1
|
|
movw r1, #65535
|
|
cmp r3, r1
|
|
bne .L1563
|
|
movw r3, #3660
|
|
ldrh r0, [r4, r3]
|
|
cmp r0, #0
|
|
bne .L1564
|
|
ldr r3, [r4, #2552]
|
|
ldr r1, [r4, #2548]
|
|
add r3, r3, r3, lsl #1
|
|
cmp r1, r3, lsr #2
|
|
movcs r3, #18
|
|
bcs .L1565
|
|
.L1564:
|
|
movw r3, #2620
|
|
ldrh r3, [r4, r3]
|
|
add r3, r3, r3, lsl #1
|
|
lsr r3, r3, #2
|
|
.L1565:
|
|
strh r3, [r2] @ movhi
|
|
mov r3, #0
|
|
str r3, [r4, #3164]
|
|
.L1544:
|
|
mov r3, sp
|
|
ldr r2, [fp, #-48]
|
|
bic r3, r3, #8128
|
|
bic r3, r3, #63
|
|
ldr r3, [r3, #24]
|
|
cmp r2, r3
|
|
beq .L1619
|
|
bl __stack_chk_fail
|
|
.L1553:
|
|
mov r3, #80
|
|
b .L1656
|
|
.L1563:
|
|
movw r3, #2620
|
|
ldrh r3, [r4, r3]
|
|
add r3, r3, r3, lsl #1
|
|
asr r3, r3, #2
|
|
strh r3, [r2] @ movhi
|
|
.L1562:
|
|
movw r3, #3206
|
|
movw r5, #65535
|
|
ldrh r3, [r4, r3]
|
|
cmp r3, #0
|
|
addne r6, r6, #32
|
|
uxthne r6, r6
|
|
.L1567:
|
|
ldrh r3, [r4, #172]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
bne .L1575
|
|
cmp r5, r3
|
|
strhne r5, [r4, #172] @ movhi
|
|
bne .L1577
|
|
ldrh r3, [r4, #222]
|
|
cmp r3, r5
|
|
beq .L1577
|
|
ldr r2, [r4, #72]
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
mvneq r3, #0
|
|
strheq r3, [r4, #222] @ movhi
|
|
ldrh r3, [r4, #222]
|
|
strh r3, [r4, #172] @ movhi
|
|
mvn r3, #0
|
|
strh r3, [r4, #222] @ movhi
|
|
.L1577:
|
|
ldrh r0, [r4, #172]
|
|
mov r3, #0
|
|
strb r3, [r4, #180]
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
beq .L1575
|
|
bl IsBlkInGcList
|
|
subs r7, r0, #0
|
|
beq .L1580
|
|
mvn r3, #0
|
|
strh r3, [r4, #172] @ movhi
|
|
.L1575:
|
|
ldrh r3, [r4, #172]
|
|
ldrh r2, [r4, #24]
|
|
cmp r2, r3
|
|
beq .L1581
|
|
ldrh r2, [r4, #76]
|
|
cmp r2, r3
|
|
beq .L1581
|
|
ldrh r2, [r4, #124]
|
|
cmp r2, r3
|
|
bne .L1582
|
|
.L1581:
|
|
mvn r3, #0
|
|
strh r3, [r4, #172] @ movhi
|
|
.L1582:
|
|
ldr r4, .L1660
|
|
.L1617:
|
|
ldrh r2, [r4, #172]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L1583
|
|
ldr r7, .L1660+16
|
|
mov r3, #0
|
|
str r3, [r4, #3164]
|
|
.L1584:
|
|
ldrh r9, [r7]
|
|
mov r0, r9
|
|
bl List_get_gc_head_node
|
|
uxth r10, r0
|
|
movw r3, #65535
|
|
mov r8, r0
|
|
cmp r10, r3
|
|
strh r10, [r4, #172] @ movhi
|
|
bne .L1585
|
|
mov r3, #0
|
|
mov r0, #8
|
|
strh r3, [r7] @ movhi
|
|
b .L1544
|
|
.L1558:
|
|
ldrh r6, [r4, #124]
|
|
ldrh r1, [r4, #222]
|
|
and r6, r6, r1
|
|
and r6, r6, r5
|
|
cmp r6, r3
|
|
bne .L1629
|
|
ldrh r3, [r4, #172]
|
|
cmp r3, r6
|
|
beq .L1568
|
|
.L1572:
|
|
mov r5, r6
|
|
.L1629:
|
|
mov r6, #1
|
|
b .L1567
|
|
.L1568:
|
|
ldr r8, .L1660+8
|
|
str r2, [r4, #3164]
|
|
ldrh r2, [r4, #224]
|
|
ldrh r3, [r8]
|
|
cmp r2, r3
|
|
bls .L1569
|
|
movw r3, #3660
|
|
ldrh r3, [r4, r3]
|
|
cmp r3, #0
|
|
bne .L1570
|
|
ldr r3, [r4, #2552]
|
|
ldr r2, [r4, #2548]
|
|
add r3, r3, r3, lsl #1
|
|
cmp r2, r3, lsr #2
|
|
movcs r3, #18
|
|
bcs .L1571
|
|
.L1570:
|
|
movw r3, #2620
|
|
ldrh r3, [r4, r3]
|
|
add r3, r3, r3, lsl #1
|
|
lsr r3, r3, #2
|
|
.L1571:
|
|
strh r3, [r8] @ movhi
|
|
bl FtlReadRefresh
|
|
mov r0, #0
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
ldr r3, [r4, #72]
|
|
lsl r0, r0, #1
|
|
ldrh r3, [r3, r0]
|
|
cmp r3, #4
|
|
bls .L1569
|
|
.L1659:
|
|
movw r3, #3660
|
|
ldrh r0, [r4, r3]
|
|
b .L1544
|
|
.L1569:
|
|
movw r5, #3660
|
|
ldrh r0, [r4, r5]
|
|
cmp r0, #0
|
|
bne .L1572
|
|
movw r3, #2620
|
|
ldrh r7, [r4, r3]
|
|
add r3, r7, r7, lsl #1
|
|
asr r3, r3, #2
|
|
strh r3, [r8] @ movhi
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
ldr r3, [r4, #72]
|
|
lsl r0, r0, #1
|
|
ldrh r1, [r4, #232]
|
|
ldrh r2, [r3, r0]
|
|
ldr r3, .L1660+20
|
|
ldrh r3, [r3]
|
|
mul r3, r1, r3
|
|
add r3, r3, r3, lsr #31
|
|
cmp r2, r3, asr #1
|
|
ble .L1573
|
|
ldrh r3, [r4, #224]
|
|
sub r7, r7, #1
|
|
cmp r3, r7
|
|
blt .L1573
|
|
bl FtlReadRefresh
|
|
ldrh r0, [r4, r5]
|
|
b .L1544
|
|
.L1573:
|
|
cmp r2, #0
|
|
bne .L1572
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
ldrh r0, [r4, #224]
|
|
add r0, r0, #1
|
|
b .L1544
|
|
.L1585:
|
|
mov r0, r10
|
|
bl IsBlkInGcList
|
|
add r3, r9, #1
|
|
cmp r0, #0
|
|
uxth r3, r3
|
|
beq .L1586
|
|
.L1657:
|
|
strh r3, [r7] @ movhi
|
|
b .L1584
|
|
.L1586:
|
|
ldr r2, .L1660+24
|
|
uxth r8, r8
|
|
ldrh ip, [r4, #232]
|
|
ldr r1, [r4, #72]
|
|
lsl r8, r8, #1
|
|
strh r3, [r7] @ movhi
|
|
ldrh r2, [r2]
|
|
ldrh r0, [r1, r8]
|
|
mul r2, ip, r2
|
|
add ip, r2, r2, lsr #31
|
|
cmp r0, ip, asr #1
|
|
bgt .L1588
|
|
cmp r0, #8
|
|
cmphi r3, #48
|
|
bls .L1589
|
|
ldr r3, .L1660+28
|
|
ldrh r3, [r3]
|
|
cmp r3, #35
|
|
bhi .L1589
|
|
.L1588:
|
|
mov r3, #0
|
|
strh r3, [r7] @ movhi
|
|
.L1589:
|
|
ldrh r3, [r1, r8]
|
|
movw r1, #65535
|
|
cmp r2, r3
|
|
cmple r5, r1
|
|
bne .L1590
|
|
ldrh r2, [r7]
|
|
cmp r2, #3
|
|
bhi .L1590
|
|
mvn r3, #0
|
|
strh r3, [r4, #172] @ movhi
|
|
mov r3, #0
|
|
strh r3, [r7] @ movhi
|
|
b .L1659
|
|
.L1590:
|
|
cmp r3, #0
|
|
bne .L1591
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
ldrh r3, [r7]
|
|
add r3, r3, #1
|
|
b .L1657
|
|
.L1591:
|
|
mov r3, #0
|
|
strb r3, [r4, #180]
|
|
ldrh r3, [r4, #24]
|
|
cmp r3, r10
|
|
bne .L1592
|
|
ldr r1, .L1660+32
|
|
movw r2, #717
|
|
ldr r0, .L1660+36
|
|
bl sftl_printk
|
|
.L1592:
|
|
ldrh r2, [r4, #172]
|
|
ldrh r3, [r4, #76]
|
|
cmp r2, r3
|
|
bne .L1593
|
|
ldr r1, .L1660+32
|
|
movw r2, #718
|
|
ldr r0, .L1660+36
|
|
bl sftl_printk
|
|
.L1593:
|
|
ldrh r2, [r4, #172]
|
|
ldrh r3, [r4, #124]
|
|
cmp r2, r3
|
|
bne .L1594
|
|
ldr r1, .L1660+32
|
|
movw r2, #719
|
|
ldr r0, .L1660+36
|
|
bl sftl_printk
|
|
.L1594:
|
|
ldr r0, .L1660+40
|
|
bl make_superblock
|
|
ldr r1, .L1660+44
|
|
ldrh r2, [r4, #172]
|
|
mov r3, #0
|
|
ldr r0, [r4, #72]
|
|
lsl r2, r2, #1
|
|
strh r3, [r1] @ movhi
|
|
ldrh r2, [r0, r2]
|
|
strh r2, [r1, #2] @ movhi
|
|
strh r3, [r4, #174] @ movhi
|
|
strb r3, [r4, #178]
|
|
.L1583:
|
|
mov r3, #1
|
|
str r3, [r4, #3272]
|
|
ldr r3, .L1660+24
|
|
ldrh r3, [r3]
|
|
str r3, [fp, #-64]
|
|
ldr r3, [fp, #-72]
|
|
cmp r3, #0
|
|
beq .L1595
|
|
ldr r2, [fp, #-64]
|
|
ldrh r3, [r4, #232]
|
|
ldr r1, [r4, #72]
|
|
mul r3, r2, r3
|
|
ldrh r2, [r4, #172]
|
|
lsl r2, r2, #1
|
|
ldrh r2, [r1, r2]
|
|
sub r3, r3, r2
|
|
cmp r3, #0
|
|
add r2, r3, #3
|
|
movge r2, r3
|
|
add r6, r6, r2, asr #2
|
|
uxth r6, r6
|
|
.L1595:
|
|
ldrh r3, [r4, #174]
|
|
ldr r1, [fp, #-64]
|
|
add r2, r3, r6
|
|
cmp r2, r1
|
|
movgt r2, r1
|
|
subgt r3, r2, r3
|
|
uxthgt r6, r3
|
|
mov r3, #0
|
|
.L1658:
|
|
str r3, [fp, #-68]
|
|
ldrh r8, [r4, #174]
|
|
ldrh r3, [fp, #-68]
|
|
cmp r6, r3
|
|
bls .L1605
|
|
ldr r3, [fp, #-68]
|
|
movw r9, #65535
|
|
ldrh ip, [r4, #232]
|
|
mov r10, #20
|
|
add r8, r8, r3
|
|
ldr r0, [r4, #3184]
|
|
mov r3, #0
|
|
ldr r1, .L1660+48
|
|
mov r7, r3
|
|
b .L1606
|
|
.L1599:
|
|
ldrh r2, [r1], #2
|
|
cmp r2, r9
|
|
beq .L1598
|
|
mla lr, r10, r7, r0
|
|
add r7, r7, #1
|
|
orr r2, r8, r2, lsl #10
|
|
uxth r7, r7
|
|
str r2, [lr, #4]
|
|
.L1598:
|
|
add r3, r3, #1
|
|
.L1606:
|
|
uxth r2, r3
|
|
cmp ip, r2
|
|
bhi .L1599
|
|
mov r10, #0
|
|
ldrb r2, [r4, #180] @ zero_extendqisi2
|
|
mov r1, r7
|
|
bl FlashReadPages
|
|
.L1600:
|
|
uxth r3, r10
|
|
cmp r7, r3
|
|
ldrls r3, [fp, #-68]
|
|
addls r3, r3, #1
|
|
bls .L1658
|
|
.L1604:
|
|
mov r8, #20
|
|
ldr r3, [r4, #3184]
|
|
mul r8, r8, r10
|
|
add r2, r3, r8
|
|
ldr r3, [r3, r8]
|
|
cmn r3, #1
|
|
beq .L1601
|
|
ldr r9, [r2, #12]
|
|
movw r3, #61589
|
|
ldrh r2, [r9]
|
|
cmp r2, r3
|
|
bne .L1601
|
|
ldr r3, [r9, #8]
|
|
cmn r3, #1
|
|
bne .L1602
|
|
ldr r1, .L1660+32
|
|
movw r2, #753
|
|
ldr r0, .L1660+36
|
|
str r3, [fp, #-76]
|
|
bl sftl_printk
|
|
ldr r3, [fp, #-76]
|
|
.L1602:
|
|
sub r1, fp, #56
|
|
mov r0, r3
|
|
mov r2, #0
|
|
bl log2phys
|
|
ldr r1, [r4, #3184]
|
|
ldr r3, [fp, #-56]
|
|
add r1, r1, r8
|
|
ldr r2, [r1, #4]
|
|
cmp r2, r3
|
|
bne .L1601
|
|
ldr r2, .L1660+44
|
|
ldr r0, [r4, #3168]
|
|
ldr r1, [r1, #16]
|
|
ldrh r3, [r2]
|
|
add r3, r3, #1
|
|
strh r3, [r2] @ movhi
|
|
ldr r3, [r4, #3292]
|
|
mov r2, #20
|
|
mla r3, r2, r0, r3
|
|
str r3, [fp, #-76]
|
|
str r1, [r3, #16]
|
|
bl Ftl_get_new_temp_ppa
|
|
ldr r3, [fp, #-76]
|
|
ldr r1, [r4, #3184]
|
|
mov r2, #20
|
|
str r0, [r3, #4]
|
|
add r1, r1, r8
|
|
ldr r0, [r4, #3168]
|
|
ldr r3, [r4, #3292]
|
|
mla r3, r2, r0, r3
|
|
ldr r2, [r1, #8]
|
|
str r2, [r3, #8]
|
|
ldr r2, [r1, #12]
|
|
mov r1, #1
|
|
str r2, [r3, #12]
|
|
ldr r3, [fp, #-56]
|
|
str r3, [r9, #12]
|
|
ldrh r3, [r4, #124]
|
|
strh r3, [r9, #2] @ movhi
|
|
ldr r3, [r4, #2592]
|
|
ldr r0, [r4, #3184]
|
|
str r3, [r9, #4]
|
|
ldr r3, [r4, #3168]
|
|
add r0, r0, r8
|
|
add r3, r3, #1
|
|
str r3, [r4, #3168]
|
|
bl FtlGcBufAlloc
|
|
ldrb r2, [r4, #131] @ zero_extendqisi2
|
|
ldr r3, [r4, #3168]
|
|
cmp r2, r3
|
|
beq .L1603
|
|
ldrh r3, [r4, #128]
|
|
cmp r3, #0
|
|
bne .L1601
|
|
.L1603:
|
|
bl Ftl_gc_temp_data_write_back
|
|
cmp r0, #0
|
|
beq .L1601
|
|
ldr r3, .L1660
|
|
mov r2, #0
|
|
str r2, [r3, #3272]
|
|
movw r2, #65535
|
|
str r2, [r3, #172]
|
|
movw r2, #3660
|
|
ldrh r0, [r3, r2]
|
|
b .L1544
|
|
.L1601:
|
|
add r10, r10, #1
|
|
b .L1600
|
|
.L1605:
|
|
add r6, r6, r8
|
|
ldr r3, [fp, #-64]
|
|
uxth r6, r6
|
|
strh r6, [r4, #174] @ movhi
|
|
cmp r3, r6
|
|
bhi .L1607
|
|
ldr r3, [r4, #3168]
|
|
cmp r3, #0
|
|
beq .L1608
|
|
bl Ftl_gc_temp_data_write_back
|
|
cmp r0, #0
|
|
movne r3, #0
|
|
strne r3, [r4, #3272]
|
|
bne .L1659
|
|
.L1608:
|
|
ldr r3, .L1660+44
|
|
ldrh r6, [r3]
|
|
cmp r6, #0
|
|
bne .L1609
|
|
ldrh r3, [r4, #172]
|
|
ldr r2, [r4, #72]
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L1609
|
|
.L1610:
|
|
ldr r3, [r4, #2552]
|
|
cmp r6, r3
|
|
bcc .L1613
|
|
.L1615:
|
|
ldrh r3, [r4, #172]
|
|
mov r1, #0
|
|
ldr r2, [r4, #72]
|
|
lsl r3, r3, #1
|
|
strh r1, [r2, r3] @ movhi
|
|
ldrh r0, [r4, #172]
|
|
bl update_vpc_list
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
.L1609:
|
|
mvn r3, #0
|
|
strh r3, [r4, #172] @ movhi
|
|
.L1607:
|
|
mov r3, #0
|
|
str r3, [r4, #3272]
|
|
ldrh r3, [r4, #224]
|
|
cmp r3, #2
|
|
bhi .L1616
|
|
ldr r3, .L1660+24
|
|
ldrh r6, [r3]
|
|
b .L1617
|
|
.L1613:
|
|
sub r1, fp, #52
|
|
mov r0, r6
|
|
mov r2, #0
|
|
bl log2phys
|
|
ldr r0, [fp, #-52]
|
|
cmn r0, #1
|
|
beq .L1611
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldrh r3, [r4, #172]
|
|
cmp r3, r0
|
|
beq .L1612
|
|
.L1611:
|
|
add r6, r6, #1
|
|
b .L1610
|
|
.L1612:
|
|
ldr r3, [r4, #2552]
|
|
cmp r6, r3
|
|
bcc .L1609
|
|
b .L1615
|
|
.L1616:
|
|
movw r2, #3660
|
|
ldrh r0, [r4, r2]
|
|
cmp r0, #0
|
|
addeq r0, r3, #1
|
|
b .L1544
|
|
.L1580:
|
|
ldr r0, .L1660+40
|
|
bl make_superblock
|
|
movw r3, #3662
|
|
ldr r2, [r4, #72]
|
|
strh r7, [r4, r3] @ movhi
|
|
ldrh r3, [r4, #172]
|
|
strh r7, [r4, #174] @ movhi
|
|
strb r7, [r4, #178]
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r2, r3]
|
|
ldr r3, .L1660+52
|
|
strh r2, [r3] @ movhi
|
|
b .L1575
|
|
.L1619:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1661:
|
|
.align 2
|
|
.L1660:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+3152
|
|
.word .LC124
|
|
.word .LANCHOR0+3160
|
|
.word .LANCHOR0+304
|
|
.word .LANCHOR0+302
|
|
.word .LANCHOR0+3196
|
|
.word .LANCHOR1+568
|
|
.word .LC8
|
|
.word .LANCHOR0+172
|
|
.word .LANCHOR0+3662
|
|
.word .LANCHOR0+188
|
|
.word .LANCHOR0+3664
|
|
.size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
|
|
.align 2
|
|
.global FtlRead
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlRead, %function
|
|
FtlRead:
|
|
@ args = 0, pretend = 0, frame = 56
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #60
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r8, r3
|
|
mov r3, sp
|
|
bic r3, r3, #8128
|
|
mov r5, r1
|
|
bic r3, r3, #63
|
|
cmp r0, #16
|
|
str r2, [fp, #-60]
|
|
ldr r3, [r3, #24]
|
|
str r3, [fp, #-48]
|
|
bne .L1663
|
|
ldr r1, [fp, #-60]
|
|
mov r2, r8
|
|
add r0, r5, #256
|
|
bl FtlVendorPartRead
|
|
mov r6, r0
|
|
.L1662:
|
|
mov r3, sp
|
|
ldr r2, [fp, #-48]
|
|
bic r3, r3, #8128
|
|
bic r3, r3, #63
|
|
ldr r3, [r3, #24]
|
|
cmp r2, r3
|
|
beq .L1685
|
|
bl __stack_chk_fail
|
|
.L1663:
|
|
ldr r4, .L1703
|
|
ldr r2, [fp, #-60]
|
|
ldr r3, [r4, #340]
|
|
cmp r3, r2
|
|
cmpcs r3, r1
|
|
movls r7, #1
|
|
movhi r7, #0
|
|
bls .L1687
|
|
add r2, r1, r2
|
|
str r2, [fp, #-64]
|
|
cmp r3, r2
|
|
bcc .L1687
|
|
ldr r3, .L1703+4
|
|
ldr r6, [r3]
|
|
cmn r6, #1
|
|
beq .L1662
|
|
movw r3, #258
|
|
mov r0, r5
|
|
ldrh r6, [r4, r3]
|
|
mov r1, r6
|
|
bl __aeabi_uidiv
|
|
ldr r3, [fp, #-64]
|
|
mov r1, r6
|
|
str r0, [fp, #-72]
|
|
sub r0, r3, #1
|
|
mov r6, r7
|
|
bl __aeabi_uidiv
|
|
ldr r3, [fp, #-72]
|
|
ldr r2, [fp, #-60]
|
|
rsb r3, r3, #1
|
|
ldr r9, [fp, #-72]
|
|
add r3, r3, r0
|
|
str r3, [fp, #-68]
|
|
ldr r3, [r4, #2584]
|
|
str r0, [fp, #-76]
|
|
add r3, r3, r2
|
|
ldr r2, [fp, #-68]
|
|
str r3, [r4, #2584]
|
|
ldr r3, [r4, #2556]
|
|
str r7, [fp, #-56]
|
|
add r3, r3, r2
|
|
str r7, [fp, #-84]
|
|
str r3, [r4, #2556]
|
|
str r7, [fp, #-80]
|
|
.L1665:
|
|
ldr r3, [fp, #-68]
|
|
cmp r3, #0
|
|
bne .L1683
|
|
ldr r3, .L1703
|
|
movw r2, #3206
|
|
ldrh r2, [r3, r2]
|
|
cmp r2, #0
|
|
bne .L1684
|
|
ldrh r3, [r3, #224]
|
|
cmp r3, #31
|
|
bhi .L1662
|
|
.L1684:
|
|
mov r1, #1
|
|
mov r0, #0
|
|
bl rk_ftl_garbage_collect
|
|
b .L1662
|
|
.L1683:
|
|
sub r1, fp, #52
|
|
mov r0, r9
|
|
mov r2, #0
|
|
bl log2phys
|
|
ldr r3, [fp, #-52]
|
|
cmn r3, #1
|
|
bne .L1700
|
|
ldr r3, .L1703+8
|
|
mov r10, #0
|
|
b .L1666
|
|
.L1669:
|
|
mla r0, r9, r0, r10
|
|
ldr r1, [fp, #-64]
|
|
cmp r5, r0
|
|
movls r2, #1
|
|
movhi r2, #0
|
|
cmp r1, r0
|
|
movls r2, #0
|
|
cmp r2, #0
|
|
beq .L1668
|
|
sub r0, r0, r5
|
|
mov r2, #512
|
|
mov r1, #0
|
|
add r0, r8, r0, lsl #9
|
|
bl ftl_memset
|
|
ldr r3, .L1703+8
|
|
.L1668:
|
|
add r10, r10, #1
|
|
.L1666:
|
|
ldrh r0, [r3]
|
|
cmp r0, r10
|
|
bhi .L1669
|
|
.L1670:
|
|
ldr r3, [fp, #-68]
|
|
add r9, r9, #1
|
|
subs r3, r3, #1
|
|
str r3, [fp, #-68]
|
|
beq .L1675
|
|
ldrh r3, [r4, #232]
|
|
cmp r7, r3, lsl #2
|
|
bne .L1665
|
|
.L1675:
|
|
cmp r7, #0
|
|
beq .L1665
|
|
ldr r0, [r4, #3288]
|
|
mov r1, r7
|
|
mov r2, #0
|
|
mov r10, #0
|
|
bl FlashReadPages
|
|
ldr r3, [fp, #-56]
|
|
lsl r3, r3, #9
|
|
str r3, [fp, #-96]
|
|
ldr r3, [fp, #-80]
|
|
lsl r3, r3, #9
|
|
str r3, [fp, #-88]
|
|
ldr r3, [fp, #-84]
|
|
lsl r3, r3, #9
|
|
str r3, [fp, #-92]
|
|
.L1682:
|
|
mov r3, #20
|
|
ldr r2, [r4, #3288]
|
|
ldr r0, [fp, #-72]
|
|
mul r3, r3, r10
|
|
add r2, r2, r3
|
|
ldr r1, [r2, #16]
|
|
cmp r1, r0
|
|
bne .L1677
|
|
ldr r1, [r2, #8]
|
|
ldr r2, [r4, #3312]
|
|
cmp r1, r2
|
|
bne .L1678
|
|
str r3, [fp, #-100]
|
|
mov r0, r8
|
|
ldrd r2, [fp, #-92]
|
|
add r1, r1, r3
|
|
.L1702:
|
|
bl ftl_memcpy
|
|
ldr r3, [fp, #-100]
|
|
.L1678:
|
|
ldr r1, [r4, #3288]
|
|
add r2, r1, r3
|
|
ldr r0, [r2, #12]
|
|
ldr ip, [r2, #16]
|
|
ldr r0, [r0, #8]
|
|
cmp ip, r0
|
|
ldrne r0, [r4, #2712]
|
|
addne r0, r0, #1
|
|
strne r0, [r4, #2712]
|
|
ldr ip, [r1, r3]
|
|
cmn ip, #1
|
|
moveq r6, ip
|
|
ldreq r0, [r4, #2712]
|
|
addeq r0, r0, #1
|
|
streq r0, [r4, #2712]
|
|
ldr r3, [r1, r3]
|
|
cmp r3, #256
|
|
bne .L1681
|
|
ldr r0, [r2, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
.L1681:
|
|
add r10, r10, #1
|
|
cmp r7, r10
|
|
bne .L1682
|
|
mov r7, #0
|
|
b .L1665
|
|
.L1700:
|
|
ldr r10, [r4, #3288]
|
|
mov r2, #20
|
|
mla r10, r2, r7, r10
|
|
str r3, [r10, #4]
|
|
ldr r3, [fp, #-72]
|
|
cmp r9, r3
|
|
ldr r3, .L1703+8
|
|
bne .L1671
|
|
ldrh r3, [r3]
|
|
mov r0, r5
|
|
ldr r2, [r4, #3312]
|
|
mov r1, r3
|
|
str r2, [r10, #8]
|
|
str r3, [fp, #-84]
|
|
bl __aeabi_uidivmod
|
|
ldr r3, [fp, #-84]
|
|
str r1, [fp, #-80]
|
|
sub r2, r3, r1
|
|
ldr r1, [fp, #-60]
|
|
cmp r1, r2
|
|
movcc r2, r1
|
|
str r2, [fp, #-84]
|
|
cmp r3, r2
|
|
streq r8, [r10, #8]
|
|
.L1672:
|
|
ldr r3, .L1703+12
|
|
ldr r2, [r4, #3336]
|
|
str r9, [r10, #16]
|
|
ldrh r3, [r3]
|
|
mul r3, r7, r3
|
|
add r7, r7, #1
|
|
bic r3, r3, #3
|
|
add r3, r2, r3
|
|
str r3, [r10, #12]
|
|
b .L1670
|
|
.L1671:
|
|
ldrh r2, [r3]
|
|
ldr r1, [fp, #-76]
|
|
cmp r9, r1
|
|
mul r3, r2, r9
|
|
bne .L1673
|
|
ldr r1, [fp, #-64]
|
|
sub r1, r1, r3
|
|
str r1, [fp, #-56]
|
|
cmp r1, r2
|
|
ldrne r3, [r4, #3316]
|
|
bne .L1701
|
|
.L1673:
|
|
sub r3, r3, r5
|
|
add r3, r8, r3, lsl #9
|
|
.L1701:
|
|
str r3, [r10, #8]
|
|
b .L1672
|
|
.L1677:
|
|
ldr r0, [fp, #-76]
|
|
cmp r1, r0
|
|
bne .L1678
|
|
ldr r1, [r2, #8]
|
|
ldr r2, [r4, #3316]
|
|
cmp r1, r2
|
|
bne .L1678
|
|
ldr r2, .L1703+8
|
|
str r3, [fp, #-100]
|
|
ldr r3, [fp, #-76]
|
|
ldrh r0, [r2]
|
|
ldr r2, [fp, #-96]
|
|
mul r0, r3, r0
|
|
sub r0, r0, r5
|
|
add r0, r8, r0, lsl #9
|
|
b .L1702
|
|
.L1687:
|
|
mvn r6, #0
|
|
b .L1662
|
|
.L1685:
|
|
mov r0, r6
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1704:
|
|
.align 2
|
|
.L1703:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+258
|
|
.word .LANCHOR0+312
|
|
.size FtlRead, .-FtlRead
|
|
.align 2
|
|
.global sftl_read
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type sftl_read, %function
|
|
sftl_read:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, r2
|
|
mov r2, r1
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl FtlRead
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size sftl_read, .-sftl_read
|
|
.section .rodata.str1.1
|
|
.LC125:
|
|
.ascii "FtlWrite: ecc error:%x %x %x\012\000"
|
|
.LC126:
|
|
.ascii "FtlWrite: lpa error:%x %x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlWrite
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlWrite, %function
|
|
FtlWrite:
|
|
@ args = 0, pretend = 0, frame = 80
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #84
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
str r3, [fp, #-92]
|
|
mov r3, sp
|
|
bic r3, r3, #8128
|
|
mov r8, r1
|
|
bic r3, r3, #63
|
|
cmp r0, #16
|
|
str r2, [fp, #-88]
|
|
ldr r3, [r3, #24]
|
|
str r3, [fp, #-48]
|
|
bne .L1707
|
|
ldr r2, [fp, #-92]
|
|
add r0, r8, #256
|
|
ldr r1, [fp, #-88]
|
|
bl FtlVendorPartWrite
|
|
.L1706:
|
|
mov r3, sp
|
|
ldr r2, [fp, #-48]
|
|
bic r3, r3, #8128
|
|
bic r3, r3, #63
|
|
ldr r3, [r3, #24]
|
|
cmp r2, r3
|
|
beq .L1744
|
|
bl __stack_chk_fail
|
|
.L1707:
|
|
ldr r4, .L1759
|
|
ldr r2, [fp, #-88]
|
|
ldr r3, [r4, #340]
|
|
cmp r3, r2
|
|
cmpcs r3, r1
|
|
bls .L1746
|
|
add r6, r1, r2
|
|
cmp r3, r6
|
|
bcc .L1746
|
|
ldr r5, .L1759+4
|
|
ldr r0, [r5]
|
|
cmn r0, #1
|
|
beq .L1706
|
|
mov r3, #2048
|
|
str r3, [r4, #3668]
|
|
movw r3, #258
|
|
mov r0, r8
|
|
ldrh r7, [r4, r3]
|
|
mov r1, r7
|
|
bl __aeabi_uidiv
|
|
mov r1, r7
|
|
str r0, [fp, #-84]
|
|
sub r0, r6, #1
|
|
bl __aeabi_uidiv
|
|
ldr r2, [fp, #-84]
|
|
str r0, [fp, #-108]
|
|
sub r3, r0, r2
|
|
ldr r2, [fp, #-88]
|
|
str r3, [fp, #-104]
|
|
add r3, r3, #1
|
|
str r3, [fp, #-80]
|
|
ldr r3, [r4, #2580]
|
|
add r3, r3, r2
|
|
ldr r2, [fp, #-80]
|
|
str r3, [r4, #2580]
|
|
ldr r3, [r4, #2564]
|
|
add r3, r3, r2
|
|
str r3, [r4, #2564]
|
|
ldr r3, [r5, #8]
|
|
cmp r3, #0
|
|
addeq r4, r4, #24
|
|
beq .L1709
|
|
ldrh r3, [r4, #28]
|
|
cmp r3, #0
|
|
addne r4, r4, #24
|
|
addeq r4, r4, #76
|
|
.L1709:
|
|
ldr r6, [fp, #-84]
|
|
ldr r5, .L1759
|
|
.L1710:
|
|
ldr r3, [fp, #-80]
|
|
cmp r3, #0
|
|
bne .L1740
|
|
mov r0, r3
|
|
ldr r1, [fp, #-104]
|
|
bl rk_ftl_garbage_collect
|
|
ldrh r3, [r5, #224]
|
|
cmp r3, #5
|
|
bls .L1751
|
|
.L1743:
|
|
mov r0, #0
|
|
b .L1706
|
|
.L1740:
|
|
ldrb r2, [r4, #6] @ zero_extendqisi2
|
|
ldrh r3, [r5, #232]
|
|
cmp r2, r3
|
|
bcc .L1711
|
|
ldr r1, .L1759+8
|
|
movw r2, #1046
|
|
ldr r0, .L1759+12
|
|
bl sftl_printk
|
|
.L1711:
|
|
ldrh r3, [r4, #4]
|
|
cmp r3, #0
|
|
bne .L1712
|
|
ldr r2, .L1759+16
|
|
ldr r7, .L1759+4
|
|
cmp r4, r2
|
|
bne .L1713
|
|
ldrh r9, [r5, #80]
|
|
cmp r9, #0
|
|
bne .L1714
|
|
add r0, r4, #52
|
|
bl allocate_new_data_superblock
|
|
str r9, [r7, #8]
|
|
.L1714:
|
|
ldr r0, .L1759+16
|
|
bl allocate_new_data_superblock
|
|
ldr r3, [r7, #8]
|
|
cmp r3, #0
|
|
ldrne r4, .L1759+20
|
|
bne .L1715
|
|
.L1716:
|
|
ldr r4, .L1759+16
|
|
.L1715:
|
|
ldrh r3, [r4, #4]
|
|
cmp r3, #0
|
|
bne .L1712
|
|
mov r0, r4
|
|
bl allocate_new_data_superblock
|
|
.L1712:
|
|
ldrh r3, [r4, #4]
|
|
ldr r1, [fp, #-80]
|
|
ldrb r2, [r4, #7] @ zero_extendqisi2
|
|
cmp r3, r1
|
|
movcs r3, r1
|
|
lsl r2, r2, #2
|
|
cmp r2, r3
|
|
movcc r3, r2
|
|
ldrb r2, [r4, #6] @ zero_extendqisi2
|
|
str r3, [fp, #-120]
|
|
ldrh r3, [r5, #232]
|
|
cmp r2, r3
|
|
bcc .L1717
|
|
ldr r1, .L1759+8
|
|
movw r2, #1079
|
|
ldr r0, .L1759+12
|
|
bl sftl_printk
|
|
.L1717:
|
|
mov r10, #0
|
|
.L1718:
|
|
ldr r3, [fp, #-120]
|
|
cmp r3, r10
|
|
bne .L1738
|
|
.L1719:
|
|
mov r3, r4
|
|
ldr r0, [r5, #3296]
|
|
mov r1, r10
|
|
mov r2, #0
|
|
bl FtlProgPages
|
|
ldr r3, [fp, #-80]
|
|
cmp r3, r10
|
|
bcs .L1739
|
|
ldr r1, .L1759+8
|
|
movw r2, #1157
|
|
ldr r0, .L1759+12
|
|
bl sftl_printk
|
|
.L1739:
|
|
ldr r3, [fp, #-80]
|
|
sub r3, r3, r10
|
|
str r3, [fp, #-80]
|
|
b .L1710
|
|
.L1713:
|
|
str r3, [r7, #8]
|
|
ldrh r3, [r5, #28]
|
|
cmp r3, #0
|
|
bne .L1716
|
|
mov r0, r4
|
|
bl allocate_new_data_superblock
|
|
b .L1715
|
|
.L1738:
|
|
ldrh r3, [r4, #4]
|
|
cmp r3, #0
|
|
beq .L1719
|
|
sub r1, fp, #72
|
|
mov r2, #0
|
|
mov r0, r6
|
|
bl log2phys
|
|
mov r0, r4
|
|
bl get_new_active_ppa
|
|
mov r3, #20
|
|
mul r3, r3, r10
|
|
str r3, [fp, #-96]
|
|
ldr r2, [fp, #-96]
|
|
ldr r3, [r5, #3296]
|
|
add r3, r3, r2
|
|
ldr r2, .L1759+24
|
|
str r0, [r3, #4]
|
|
ldrh r2, [r2]
|
|
str r6, [r3, #16]
|
|
mul r1, r10, r2
|
|
bic r1, r1, #3
|
|
str r1, [fp, #-112]
|
|
ldr r0, [fp, #-112]
|
|
ldr r1, [r5, #3336]
|
|
str r1, [fp, #-116]
|
|
add r9, r1, r0
|
|
mov r1, #0
|
|
str r9, [r3, #12]
|
|
mov r0, r9
|
|
bl ftl_memset
|
|
ldr r3, [fp, #-84]
|
|
ldr r2, [fp, #-108]
|
|
cmp r6, r2
|
|
cmpne r6, r3
|
|
ldr r3, .L1759+28
|
|
bne .L1720
|
|
ldr r2, [fp, #-84]
|
|
ldrh r3, [r3]
|
|
cmp r6, r2
|
|
bne .L1721
|
|
mov r1, r3
|
|
mov r0, r8
|
|
str r3, [fp, #-124]
|
|
bl __aeabi_uidivmod
|
|
ldr r3, [fp, #-124]
|
|
ldr r2, [fp, #-88]
|
|
sub r7, r3, r1
|
|
str r1, [fp, #-100]
|
|
cmp r7, r2
|
|
movcs r7, r2
|
|
.L1722:
|
|
ldr r0, [r5, #3296]
|
|
cmp r3, r7
|
|
ldr r2, [fp, #-96]
|
|
add r0, r0, r2
|
|
bne .L1723
|
|
ldr r2, [fp, #-84]
|
|
cmp r6, r2
|
|
mulne r3, r6, r3
|
|
ldrne r2, [fp, #-92]
|
|
ldreq r3, [fp, #-92]
|
|
subne r3, r3, r8
|
|
addne r3, r2, r3, lsl #9
|
|
str r3, [r0, #8]
|
|
.L1725:
|
|
ldrb r2, [r4, #6] @ zero_extendqisi2
|
|
ldrh r3, [r5, #232]
|
|
cmp r2, r3
|
|
bcc .L1735
|
|
ldr r1, .L1759+8
|
|
movw r2, #1148
|
|
ldr r0, .L1759+12
|
|
bl sftl_printk
|
|
.L1735:
|
|
ldr r2, [fp, #-116]
|
|
add r10, r10, #1
|
|
ldr r1, [fp, #-112]
|
|
ldr r3, .L1759+32
|
|
strh r3, [r2, r1] @ movhi
|
|
str r6, [r9, #8]
|
|
add r6, r6, #1
|
|
ldr r3, [r5, #2592]
|
|
str r3, [r9, #4]
|
|
cmn r3, #2
|
|
add r2, r3, #1
|
|
strne r2, [r5, #2592]
|
|
moveq r3, #0
|
|
streq r3, [r5, #2592]
|
|
ldr r3, [fp, #-72]
|
|
str r3, [r9, #12]
|
|
ldrh r3, [r4]
|
|
strh r3, [r9, #2] @ movhi
|
|
b .L1718
|
|
.L1721:
|
|
ldr r2, [fp, #-88]
|
|
add r7, r8, r2
|
|
smulbb r2, r6, r3
|
|
sub r7, r7, r2
|
|
mov r2, #0
|
|
str r2, [fp, #-100]
|
|
uxth r7, r7
|
|
b .L1722
|
|
.L1723:
|
|
ldr r3, [fp, #-84]
|
|
cmp r6, r3
|
|
ldreq r3, [r5, #3312]
|
|
ldrne r3, [r5, #3316]
|
|
str r3, [r0, #8]
|
|
ldr r3, [fp, #-72]
|
|
cmn r3, #1
|
|
beq .L1728
|
|
str r6, [fp, #-52]
|
|
mov r2, #0
|
|
str r3, [fp, #-64]
|
|
mov r1, #1
|
|
ldr r3, [r0, #8]
|
|
str r3, [fp, #-60]
|
|
ldr r3, [r0, #12]
|
|
sub r0, fp, #68
|
|
str r3, [fp, #-56]
|
|
bl FlashReadPages
|
|
ldr r3, [fp, #-68]
|
|
cmn r3, #1
|
|
bne .L1729
|
|
ldr r2, [r5, #2712]
|
|
ldr r0, .L1759+36
|
|
add r2, r2, #1
|
|
str r2, [r5, #2712]
|
|
mov r2, r6
|
|
ldr r1, [r9, #8]
|
|
bl sftl_printk
|
|
.L1733:
|
|
ldr r3, [fp, #-84]
|
|
lsl r2, r7, #9
|
|
cmp r6, r3
|
|
bne .L1734
|
|
ldr r1, [fp, #-96]
|
|
ldr r3, [r5, #3296]
|
|
add r3, r3, r1
|
|
ldr r1, [fp, #-92]
|
|
ldr r0, [r3, #8]
|
|
ldr r3, [fp, #-100]
|
|
add r0, r0, r3, lsl #9
|
|
.L1758:
|
|
bl ftl_memcpy
|
|
b .L1725
|
|
.L1729:
|
|
ldr r3, [r9, #8]
|
|
cmp r3, r6
|
|
beq .L1733
|
|
ldr r3, [r5, #2712]
|
|
mov r2, r6
|
|
ldr r0, .L1759+40
|
|
add r3, r3, #1
|
|
str r3, [r5, #2712]
|
|
ldr r1, [r9, #8]
|
|
bl sftl_printk
|
|
ldr r3, [r9, #8]
|
|
cmp r3, r6
|
|
beq .L1733
|
|
ldr r1, .L1759+8
|
|
movw r2, #1133
|
|
ldr r0, .L1759+12
|
|
bl sftl_printk
|
|
b .L1733
|
|
.L1728:
|
|
ldr r3, .L1759+44
|
|
mov r1, #0
|
|
ldr r0, [r0, #8]
|
|
ldrh r2, [r3]
|
|
bl ftl_memset
|
|
b .L1733
|
|
.L1734:
|
|
ldr r3, .L1759+28
|
|
ldr r0, [fp, #-96]
|
|
ldrh r1, [r3]
|
|
ldr r3, [r5, #3296]
|
|
add r3, r3, r0
|
|
ldr r0, [fp, #-92]
|
|
mul r1, r6, r1
|
|
sub r1, r1, r8
|
|
add r1, r0, r1, lsl #9
|
|
ldr r0, [r3, #8]
|
|
b .L1758
|
|
.L1720:
|
|
ldrh r3, [r3]
|
|
ldr r1, [fp, #-96]
|
|
ldr r2, [r5, #3296]
|
|
mul r3, r6, r3
|
|
add r2, r2, r1
|
|
ldr r1, [fp, #-92]
|
|
sub r3, r3, r8
|
|
add r3, r1, r3, lsl #9
|
|
str r3, [r2, #8]
|
|
b .L1725
|
|
.L1751:
|
|
ldr r6, .L1759+48
|
|
mov r4, #256
|
|
.L1741:
|
|
ldrh r2, [r5, #222]
|
|
ldrh r3, [r5, #172]
|
|
and r3, r3, r2
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
bne .L1742
|
|
mov r0, #0
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
bl FtlGcRefreshBlock
|
|
.L1742:
|
|
ldr r2, .L1759+52
|
|
mov r1, #1
|
|
mov r0, r1
|
|
mov r3, #128
|
|
strh r3, [r6] @ movhi
|
|
strh r3, [r2] @ movhi
|
|
bl rk_ftl_garbage_collect
|
|
mov r1, #1
|
|
mov r0, #0
|
|
bl rk_ftl_garbage_collect
|
|
ldrh r3, [r5, #224]
|
|
cmp r3, #2
|
|
bhi .L1743
|
|
subs r4, r4, #1
|
|
bne .L1741
|
|
b .L1743
|
|
.L1746:
|
|
mvn r0, #0
|
|
b .L1706
|
|
.L1744:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1760:
|
|
.align 2
|
|
.L1759:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR1+591
|
|
.word .LC8
|
|
.word .LANCHOR0+24
|
|
.word .LANCHOR0+76
|
|
.word .LANCHOR0+312
|
|
.word .LANCHOR0+258
|
|
.word -3947
|
|
.word .LC125
|
|
.word .LC126
|
|
.word .LANCHOR0+310
|
|
.word .LANCHOR0+3154
|
|
.word .LANCHOR0+3152
|
|
.size FtlWrite, .-FtlWrite
|
|
.align 2
|
|
.global sftl_gc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type sftl_gc, %function
|
|
sftl_gc:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r1, #1
|
|
mov r0, r1
|
|
bl rk_ftl_garbage_collect
|
|
ldmfd sp, {fp, sp, pc}
|
|
.size sftl_gc, .-sftl_gc
|
|
.section .rodata.str1.1
|
|
.LC127:
|
|
.ascii "%s hash error this.id =%x page =%x pre_id =%x hash "
|
|
.ascii "=%x hash_r =%x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlLoadSysInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadSysInfo, %function
|
|
FtlLoadSysInfo:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #28
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1790
|
|
mov r1, #0
|
|
add r6, r4, #2624
|
|
ldrh r2, [r4, #240]
|
|
ldr r3, [r4, #3300]
|
|
str r3, [r4, #3460]
|
|
ldr r0, [r4, #72]
|
|
lsl r2, r2, #1
|
|
ldr r3, [r4, #3332]
|
|
str r3, [r4, #3464]
|
|
bl ftl_memset
|
|
ldrh r0, [r6]
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
bne .L1763
|
|
.L1775:
|
|
mvn r0, #0
|
|
.L1762:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1763:
|
|
mov r1, #1
|
|
ldr r9, .L1790+4
|
|
bl FtlGetLastWrittenPage
|
|
ldr r10, .L1790+8
|
|
ldrsh r7, [r6]
|
|
sxth r5, r0
|
|
add r3, r5, #1
|
|
strh r3, [r6, #2] @ movhi
|
|
.L1765:
|
|
cmp r5, #0
|
|
bge .L1772
|
|
ldr r1, .L1790+12
|
|
movw r2, #1474
|
|
ldr r0, .L1790+16
|
|
bl sftl_printk
|
|
b .L1771
|
|
.L1772:
|
|
orr r3, r5, r7, lsl #10
|
|
mov r2, #1
|
|
str r3, [r4, #3456]
|
|
mov r1, r2
|
|
ldr r3, [r4, #3300]
|
|
mov r0, r9
|
|
str r3, [r4, #3460]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #3464]
|
|
ldr r3, [r3, #12]
|
|
str r3, [fp, #-48]
|
|
cmp r3, #0
|
|
beq .L1766
|
|
ldr r2, [r4, #3452]
|
|
cmn r2, #1
|
|
beq .L1767
|
|
ldr r8, .L1790+20
|
|
ldr r0, [r4, #3460]
|
|
ldrh r1, [r8]
|
|
bl js_hash
|
|
ldr r3, [fp, #-48]
|
|
cmp r3, r0
|
|
beq .L1768
|
|
str r0, [sp, #8]
|
|
mov r2, r7
|
|
str r3, [sp, #4]
|
|
ldr r1, .L1790+12
|
|
ldrh r3, [r6, #4]
|
|
str r3, [sp]
|
|
mov r3, r5
|
|
ldr r0, .L1790+24
|
|
bl sftl_printk
|
|
cmp r5, #0
|
|
bne .L1769
|
|
ldrh r3, [r6, #4]
|
|
cmp r7, r3
|
|
sxthne r7, r3
|
|
ldrhne r5, [r8, #-6]
|
|
bne .L1767
|
|
.L1769:
|
|
mvn r3, #0
|
|
str r3, [r4, #3452]
|
|
.L1767:
|
|
sub r5, r5, #1
|
|
sxth r5, r5
|
|
b .L1765
|
|
.L1766:
|
|
ldr r3, [r4, #3452]
|
|
cmn r3, #1
|
|
beq .L1767
|
|
.L1768:
|
|
ldr r3, [r4, #3300]
|
|
ldr r3, [r3]
|
|
cmp r3, r10
|
|
bne .L1767
|
|
ldr r3, [r4, #3332]
|
|
ldrh r2, [r3]
|
|
movw r3, #61604
|
|
cmp r2, r3
|
|
bne .L1767
|
|
.L1771:
|
|
movw r2, #310
|
|
ldrh r3, [r4, #240]
|
|
ldrh r2, [r4, r2]
|
|
add r3, r3, #24
|
|
cmp r2, r3, lsl #1
|
|
bcs .L1774
|
|
ldr r1, .L1790+12
|
|
movw r2, #1476
|
|
ldr r0, .L1790+16
|
|
bl sftl_printk
|
|
.L1774:
|
|
ldr r5, .L1790+28
|
|
mov r2, #48
|
|
ldr r1, [r4, #3460]
|
|
mov r0, r5
|
|
bl ftl_memcpy
|
|
ldrh r2, [r4, #240]
|
|
ldr r1, [r4, #3460]
|
|
ldr r0, [r4, #72]
|
|
lsl r2, r2, #1
|
|
add r1, r1, #48
|
|
bl ftl_memcpy
|
|
ldr r2, [r4, #2468]
|
|
ldr r3, .L1790+8
|
|
cmp r2, r3
|
|
bne .L1775
|
|
ldrb r2, [r4, #2478] @ zero_extendqisi2
|
|
ldrh r3, [r4, #254]
|
|
ldrh r7, [r5, #8]
|
|
cmp r2, r3
|
|
strh r7, [r6, #6] @ movhi
|
|
bne .L1775
|
|
movw r3, #302
|
|
movw r2, #258
|
|
ldr r6, [r4, #244]
|
|
ldrh r3, [r4, r3]
|
|
ldrh r2, [r4, r2]
|
|
ldrh r1, [r4, #232]
|
|
str r7, [r4, #3672]
|
|
mul r3, r7, r3
|
|
str r3, [r4, #2552]
|
|
mul r3, r3, r2
|
|
str r3, [r4, #340]
|
|
ldr r3, .L1790+32
|
|
ldrh r0, [r3, #6]
|
|
add r0, r0, r7
|
|
sub r0, r6, r0
|
|
bl __aeabi_uidiv
|
|
movw r3, #2620
|
|
cmp r7, r6
|
|
strh r0, [r4, r3] @ movhi
|
|
bls .L1776
|
|
ldr r1, .L1790+12
|
|
movw r2, #1498
|
|
ldr r0, .L1790+16
|
|
bl sftl_printk
|
|
.L1776:
|
|
ldrh r3, [r5, #16]
|
|
ldrh r1, [r5, #14]
|
|
strh r1, [r4, #24] @ movhi
|
|
lsr r2, r3, #6
|
|
strh r2, [r4, #26] @ movhi
|
|
ldrh r2, [r5, #18]
|
|
and r3, r3, #63
|
|
strh r2, [r4, #76] @ movhi
|
|
ldrh r2, [r5, #20]
|
|
strb r3, [r4, #30]
|
|
ldrb r3, [r4, #2479] @ zero_extendqisi2
|
|
lsr r0, r2, #6
|
|
and r2, r2, #63
|
|
strb r2, [r4, #82]
|
|
ldrb r2, [r4, #2480] @ zero_extendqisi2
|
|
strb r2, [r4, #84]
|
|
ldrh r2, [r5, #22]
|
|
strh r2, [r4, #124] @ movhi
|
|
ldrh r2, [r5, #24]
|
|
strh r0, [r4, #78] @ movhi
|
|
strb r3, [r4, #32]
|
|
movw r3, #65535
|
|
lsr r0, r2, #6
|
|
and r2, r2, #63
|
|
strb r2, [r4, #130]
|
|
ldrb r2, [r4, #2481] @ zero_extendqisi2
|
|
strb r2, [r4, #132]
|
|
ldr r2, [r4, #2500]
|
|
str r3, [r4, #172]
|
|
mov r3, #0
|
|
str r2, [r4, #2596]
|
|
strb r3, [r4, #178]
|
|
strb r3, [r4, #180]
|
|
str r3, [r4, #2576]
|
|
str r3, [r4, #2564]
|
|
str r3, [r4, #2556]
|
|
str r3, [r4, #2572]
|
|
str r3, [r4, #2600]
|
|
str r3, [r4, #2612]
|
|
strh r0, [r4, #126] @ movhi
|
|
str r3, [r4, #2568]
|
|
ldr r3, [r4, #2508]
|
|
ldr r2, [r4, #2588]
|
|
cmp r3, r2
|
|
ldr r2, [r4, #2592]
|
|
strhi r3, [r4, #2588]
|
|
ldr r3, [r4, #2504]
|
|
cmp r3, r2
|
|
strhi r3, [r4, #2592]
|
|
movw r3, #65535
|
|
cmp r1, r3
|
|
beq .L1779
|
|
ldr r0, .L1790+36
|
|
bl make_superblock
|
|
.L1779:
|
|
ldrh r2, [r4, #76]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L1780
|
|
ldr r0, .L1790+40
|
|
bl make_superblock
|
|
.L1780:
|
|
ldrh r2, [r4, #124]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L1781
|
|
ldr r0, .L1790+44
|
|
bl make_superblock
|
|
.L1781:
|
|
ldrh r2, [r4, #172]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L1782
|
|
ldr r0, .L1790+48
|
|
bl make_superblock
|
|
.L1782:
|
|
mov r0, #0
|
|
b .L1762
|
|
.L1791:
|
|
.align 2
|
|
.L1790:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+3452
|
|
.word 1179929683
|
|
.word .LANCHOR1+600
|
|
.word .LC8
|
|
.word .LANCHOR0+310
|
|
.word .LC127
|
|
.word .LANCHOR0+2468
|
|
.word .LANCHOR0+352
|
|
.word .LANCHOR0+24
|
|
.word .LANCHOR0+76
|
|
.word .LANCHOR0+124
|
|
.word .LANCHOR0+172
|
|
.size FtlLoadSysInfo, .-FtlLoadSysInfo
|
|
.section .rodata.str1.1
|
|
.LC128:
|
|
.ascii "%s last blk_id =%x page =%x hash error hash =%x has"
|
|
.ascii "h_r =%x\012\000"
|
|
.LC129:
|
|
.ascii "%s scan blk_id =%x page =%x hash error hash =%x has"
|
|
.ascii "h_r =%x\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlMapTblRecovery
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMapTblRecovery, %function
|
|
FtlMapTblRecovery:
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #44
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, [r0, #12]
|
|
mov r4, r0
|
|
str r3, [fp, #-56]
|
|
mov r1, #0
|
|
ldr r3, [r0, #16]
|
|
mov r6, #0
|
|
str r3, [fp, #-64]
|
|
ldrh r3, [r0, #6]
|
|
str r3, [fp, #-48]
|
|
ldrh r3, [r0, #8]
|
|
ldr r5, .L1831
|
|
str r3, [fp, #-60]
|
|
ldr r3, [fp, #-48]
|
|
ldr r9, [r0, #24]
|
|
lsl r2, r3, #2
|
|
mov r0, r9
|
|
bl ftl_memset
|
|
ldr r3, [r5, #3300]
|
|
ldr r8, [r5, #3332]
|
|
str r3, [r5, #3460]
|
|
mvn r3, #0
|
|
str r8, [r5, #3464]
|
|
str r6, [r4, #32]
|
|
str r3, [r4]
|
|
mov r3, #1
|
|
str r6, [r4, #28]
|
|
str r3, [r4, #36]
|
|
.L1793:
|
|
ldr r3, [fp, #-60]
|
|
sxth r7, r6
|
|
uxth r10, r6
|
|
cmp r7, r3
|
|
bge .L1813
|
|
ldr r2, [fp, #-56]
|
|
lsl r3, r7, #1
|
|
add r2, r2, r7, lsl #1
|
|
str r2, [fp, #-52]
|
|
ldr r2, [fp, #-60]
|
|
sub r2, r2, #1
|
|
cmp r2, r7
|
|
bne .L1794
|
|
ldr r3, [fp, #-52]
|
|
mov r1, #1
|
|
ldr r5, .L1831
|
|
ldrh r0, [r3]
|
|
bl FtlGetLastWrittenPage
|
|
sxth r3, r0
|
|
str r3, [fp, #-56]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #2] @ movhi
|
|
ldr r3, [fp, #-64]
|
|
strh r10, [r4] @ movhi
|
|
mov r10, #0
|
|
ldr r3, [r3, r7, lsl #2]
|
|
str r3, [r4, #28]
|
|
.L1795:
|
|
ldr r3, [fp, #-56]
|
|
sxth r6, r10
|
|
add r2, r3, #1
|
|
cmp r6, r2
|
|
blt .L1799
|
|
.L1813:
|
|
mov r0, r4
|
|
bl ftl_free_no_use_map_blk
|
|
ldr r3, .L1831+4
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bne .L1801
|
|
mov r0, r4
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L1801:
|
|
mov r0, r4
|
|
bl ftl_map_blk_gc
|
|
mov r0, r4
|
|
bl ftl_map_blk_gc
|
|
mov r0, #0
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1799:
|
|
ldr r3, [fp, #-52]
|
|
ldr r0, .L1831+8
|
|
ldrh r2, [r3]
|
|
orr r2, r6, r2, lsl #10
|
|
str r2, [r5, #3456]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [r5, #3464]
|
|
ldr r2, [r2, #12]
|
|
str r2, [fp, #-60]
|
|
cmp r2, #0
|
|
beq .L1796
|
|
ldr r1, [r5, #3452]
|
|
cmn r1, #1
|
|
beq .L1814
|
|
ldr r1, .L1831+12
|
|
ldr r0, [r5, #3460]
|
|
ldrh r1, [r1]
|
|
bl js_hash
|
|
ldr r2, [fp, #-60]
|
|
cmp r2, r0
|
|
beq .L1798
|
|
mov r3, r6
|
|
str r0, [sp, #4]
|
|
str r2, [sp]
|
|
mov r2, r7
|
|
ldr r1, .L1831+16
|
|
ldr r0, .L1831+20
|
|
bl sftl_printk
|
|
mvn r3, #0
|
|
str r3, [r5, #3452]
|
|
.L1814:
|
|
add r10, r10, #1
|
|
b .L1795
|
|
.L1796:
|
|
ldr r3, [r5, #3452]
|
|
cmn r3, #1
|
|
beq .L1814
|
|
.L1798:
|
|
ldrh r3, [r8, #8]
|
|
ldr r2, [fp, #-48]
|
|
cmp r3, r2
|
|
bcs .L1814
|
|
ldrh r2, [r4, #4]
|
|
ldrh r1, [r8]
|
|
cmp r1, r2
|
|
ldreq r2, [r5, #3456]
|
|
streq r2, [r9, r3, lsl #2]
|
|
b .L1814
|
|
.L1794:
|
|
ldr r2, [r5, #3300]
|
|
str r2, [r5, #3460]
|
|
ldr r2, [fp, #-56]
|
|
ldr r0, .L1831+8
|
|
ldrh r2, [r2, r3]
|
|
ldr r3, .L1831+4
|
|
ldrh r3, [r3]
|
|
sub r3, r3, #1
|
|
orr r3, r3, r2, lsl #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r3, [r5, #3456]
|
|
bl FlashReadPages
|
|
ldr r3, [r5, #3452]
|
|
cmn r3, #1
|
|
beq .L1817
|
|
ldrh r2, [r8]
|
|
ldrh r3, [r4, #4]
|
|
cmp r2, r3
|
|
bne .L1817
|
|
ldrh r2, [r8, #8]
|
|
movw r3, #64245
|
|
cmp r2, r3
|
|
beq .L1818
|
|
.L1817:
|
|
mov r10, #0
|
|
b .L1809
|
|
.L1805:
|
|
ldr r2, [r5, #3300]
|
|
lsl lr, ip, #3
|
|
ldr r7, [fp, #-48]
|
|
add r1, r1, #1
|
|
ldr r3, [r2, ip, lsl #3]
|
|
uxth ip, r3
|
|
cmp r7, ip
|
|
addhi r2, r2, lr
|
|
movhi r3, ip
|
|
ldrhi r2, [r2, #4]
|
|
strhi r2, [r9, r3, lsl #2]
|
|
.L1803:
|
|
ldrh r3, [r0]
|
|
sxth ip, r1
|
|
sub r3, r3, #1
|
|
cmp ip, r3
|
|
blt .L1805
|
|
.L1811:
|
|
add r6, r6, #1
|
|
b .L1793
|
|
.L1818:
|
|
ldr r0, .L1831+4
|
|
mov r1, #0
|
|
b .L1803
|
|
.L1810:
|
|
ldr r2, [fp, #-52]
|
|
ldr r0, .L1831+8
|
|
str r3, [fp, #-72]
|
|
ldrh r2, [r2]
|
|
orr r2, r3, r2, lsl #10
|
|
str r2, [r5, #3456]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [r5, #3464]
|
|
ldr r2, [r2, #12]
|
|
str r2, [fp, #-68]
|
|
cmp r2, #0
|
|
beq .L1806
|
|
ldr r1, [r5, #3452]
|
|
cmn r1, #1
|
|
beq .L1815
|
|
ldr r1, .L1831+12
|
|
ldr r0, [r5, #3460]
|
|
ldrh r1, [r1]
|
|
bl js_hash
|
|
ldr r2, [fp, #-68]
|
|
cmp r2, r0
|
|
beq .L1808
|
|
ldr r3, [fp, #-72]
|
|
str r0, [sp, #4]
|
|
str r2, [sp]
|
|
mov r2, r7
|
|
ldr r1, .L1831+16
|
|
ldr r0, .L1831+24
|
|
bl sftl_printk
|
|
mvn r3, #0
|
|
str r3, [r5, #3452]
|
|
.L1815:
|
|
add r10, r10, #1
|
|
.L1809:
|
|
ldr r2, .L1831+4
|
|
sxth r3, r10
|
|
ldrh r2, [r2]
|
|
cmp r3, r2
|
|
blt .L1810
|
|
b .L1811
|
|
.L1806:
|
|
ldr r3, [r5, #3452]
|
|
cmn r3, #1
|
|
beq .L1815
|
|
.L1808:
|
|
ldrh r3, [r8, #8]
|
|
ldr r2, [fp, #-48]
|
|
cmp r3, r2
|
|
bcs .L1815
|
|
ldrh r2, [r4, #4]
|
|
ldrh r1, [r8]
|
|
cmp r1, r2
|
|
ldreq r2, [r5, #3456]
|
|
streq r2, [r9, r3, lsl #2]
|
|
b .L1815
|
|
.L1832:
|
|
.align 2
|
|
.L1831:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+304
|
|
.word .LANCHOR0+3452
|
|
.word .LANCHOR0+310
|
|
.word .LANCHOR1+615
|
|
.word .LC128
|
|
.word .LC129
|
|
.size FtlMapTblRecovery, .-FtlMapTblRecovery
|
|
.align 2
|
|
.global FtlLoadVonderInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadVonderInfo, %function
|
|
FtlLoadVonderInfo:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L1834
|
|
add r0, r3, #3600
|
|
add r2, r3, #320
|
|
add r0, r0, #8
|
|
ldrh r2, [r2]
|
|
strh r2, [r0, #10] @ movhi
|
|
ldr r2, .L1834+4
|
|
strh r2, [r0, #4] @ movhi
|
|
add r2, r3, #344
|
|
ldrh r2, [r2]
|
|
strh r2, [r0, #8] @ movhi
|
|
movw r2, #322
|
|
ldrh r2, [r3, r2]
|
|
strh r2, [r0, #6] @ movhi
|
|
ldr r2, [r3, #348]
|
|
str r2, [r3, #3620]
|
|
ldr r2, [r3, #3368]
|
|
str r2, [r3, #3624]
|
|
ldr r2, [r3, #3364]
|
|
str r2, [r3, #3628]
|
|
ldr r2, [r3, #3372]
|
|
str r2, [r3, #3632]
|
|
bl FtlMapTblRecovery
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L1835:
|
|
.align 2
|
|
.L1834:
|
|
.word .LANCHOR0
|
|
.word -3962
|
|
.size FtlLoadVonderInfo, .-FtlLoadVonderInfo
|
|
.align 2
|
|
.global FtlLoadMapInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadMapInfo, %function
|
|
FtlLoadMapInfo:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
bl FtlL2PDataInit
|
|
ldr r0, .L1837
|
|
bl FtlMapTblRecovery
|
|
mov r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L1838:
|
|
.align 2
|
|
.L1837:
|
|
.word .LANCHOR0+3392
|
|
.size FtlLoadMapInfo, .-FtlLoadMapInfo
|
|
.align 2
|
|
.global FtlSysBlkInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSysBlkInit, %function
|
|
FtlSysBlkInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1855
|
|
mov r3, #0
|
|
add r7, r4, #3472
|
|
ldrh r0, [r4, #236]
|
|
strh r3, [r7] @ movhi
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlScanSysBlk
|
|
add r3, r4, #2624
|
|
ldrh r2, [r3]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L1840
|
|
.L1842:
|
|
mvn r5, #0
|
|
.L1839:
|
|
mov r0, r5
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1840:
|
|
bl FtlLoadSysInfo
|
|
subs r5, r0, #0
|
|
bne .L1842
|
|
bl FtlLoadMapInfo
|
|
bl FtlLoadVonderInfo
|
|
bl Ftl_load_ext_data
|
|
bl FtlLoadEctTbl
|
|
bl FtlFreeSysBLkSort
|
|
bl SupperBlkListInit
|
|
bl FtlPowerLostRecovery
|
|
mov r0, #1
|
|
bl FtlUpdateVaildLpn
|
|
movw r3, #338
|
|
ldr r2, [r4, #2540]
|
|
mov r0, #12
|
|
ldrh r1, [r4, r3]
|
|
mov r3, r5
|
|
add r2, r2, #4
|
|
.L1843:
|
|
cmp r3, r1
|
|
bge .L1848
|
|
mul ip, r0, r3
|
|
ldr ip, [r2, ip]
|
|
cmp ip, #0
|
|
bge .L1844
|
|
.L1848:
|
|
ldr r6, .L1855+4
|
|
cmp r3, r1
|
|
ldrh r2, [r6, #28]
|
|
add r2, r2, #1
|
|
strh r2, [r6, #28] @ movhi
|
|
bge .L1854
|
|
.L1845:
|
|
ldr r0, .L1855+8
|
|
bl FtlSuperblockPowerLostFix
|
|
ldr r0, .L1855+12
|
|
bl FtlSuperblockPowerLostFix
|
|
ldrh r3, [r4, #24]
|
|
ldr r1, [r4, #72]
|
|
ldrh r0, [r4, #28]
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r1, r3]
|
|
sub r2, r2, r0
|
|
strh r2, [r1, r3] @ movhi
|
|
movw r0, #302
|
|
ldrh r2, [r4, #76]
|
|
ldr ip, [r4, #72]
|
|
ldrh r3, [r4, r0]
|
|
lsl r2, r2, #1
|
|
strh r3, [r4, #26] @ movhi
|
|
mov r3, #0
|
|
strb r3, [r4, #30]
|
|
strh r3, [r4, #28] @ movhi
|
|
ldrh lr, [r4, #80]
|
|
ldrh r1, [ip, r2]
|
|
sub r1, r1, lr
|
|
strh r1, [ip, r2] @ movhi
|
|
strb r3, [r4, #82]
|
|
strh r3, [r4, #80] @ movhi
|
|
ldrh r3, [r6, #30]
|
|
ldrh r2, [r4, r0]
|
|
add r3, r3, #1
|
|
strh r2, [r4, #78] @ movhi
|
|
strh r3, [r6, #30] @ movhi
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
bl FtlVpcTblFlush
|
|
b .L1849
|
|
.L1844:
|
|
add r3, r3, #1
|
|
b .L1843
|
|
.L1854:
|
|
ldrh r3, [r7]
|
|
cmp r3, #0
|
|
bne .L1845
|
|
.L1849:
|
|
ldrh r0, [r4, #24]
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
beq .L1850
|
|
ldrh r2, [r4, #28]
|
|
ldrh r3, [r4, #80]
|
|
orrs r3, r2, r3
|
|
bne .L1850
|
|
bl FtlGcRefreshBlock
|
|
ldrh r0, [r4, #76]
|
|
bl FtlGcRefreshBlock
|
|
bl FtlVpcTblFlush
|
|
ldr r0, .L1855+8
|
|
bl allocate_new_data_superblock
|
|
ldr r0, .L1855+12
|
|
bl allocate_new_data_superblock
|
|
.L1850:
|
|
bl FtlVpcCheckAndModify
|
|
b .L1839
|
|
.L1856:
|
|
.align 2
|
|
.L1855:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2468
|
|
.word .LANCHOR0+24
|
|
.word .LANCHOR0+76
|
|
.size FtlSysBlkInit, .-FtlSysBlkInit
|
|
.align 2
|
|
.global ftl_low_format
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_low_format, %function
|
|
ftl_low_format:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r4, .L1881
|
|
mov r3, #0
|
|
ldrh r0, [r4, #236]
|
|
str r3, [r4, #2588]
|
|
str r3, [r4, #2592]
|
|
str r3, [r4, #2604]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlLoadBbt
|
|
cmp r0, #0
|
|
beq .L1858
|
|
bl FtlMakeBbt
|
|
.L1858:
|
|
ldr r0, .L1881+4
|
|
mov r2, #0
|
|
ldr ip, .L1881+8
|
|
.L1859:
|
|
ldrh r1, [r0]
|
|
uxth r3, r2
|
|
add r2, r2, #1
|
|
cmp r3, r1, lsl #7
|
|
blt .L1860
|
|
ldrh r6, [r4, #240]
|
|
mov r5, #0
|
|
.L1861:
|
|
ldrh r3, [r4, #242]
|
|
cmp r3, r6
|
|
bhi .L1862
|
|
ldrh r1, [r4, #232]
|
|
sub r3, r5, #3
|
|
cmp r3, r1, lsl #1
|
|
bge .L1863
|
|
.L1867:
|
|
mov r5, #0
|
|
mov r6, r5
|
|
.L1864:
|
|
ldrh r3, [r4, #240]
|
|
uxth r0, r5
|
|
cmp r3, r0
|
|
bhi .L1868
|
|
ldrh r9, [r4, #232]
|
|
movw r8, #2620
|
|
ldr r10, [r4, #244]
|
|
ldrh r3, [r4, #242]
|
|
mov r1, r9
|
|
mov r0, r10
|
|
str r3, [r4, #3284]
|
|
bl __aeabi_uidiv
|
|
ubfx r7, r0, #5, #16
|
|
add r3, r7, #36
|
|
strh r3, [r4, r8] @ movhi
|
|
mov r3, #24
|
|
mov r5, r0
|
|
str r0, [r4, #2552]
|
|
mul r3, r3, r9
|
|
cmp r6, r3
|
|
ble .L1869
|
|
mov r1, r9
|
|
sub r0, r10, r6
|
|
bl __aeabi_uidiv
|
|
lsr r3, r0, #5
|
|
add r3, r3, #24
|
|
str r0, [r4, #2552]
|
|
strh r3, [r4, r8] @ movhi
|
|
.L1869:
|
|
movw r3, #294
|
|
ldrh r3, [r4, r3]
|
|
cmp r3, #0
|
|
beq .L1871
|
|
movw r2, #2620
|
|
ldrh r1, [r4, r2]
|
|
add r1, r1, r3, lsr #1
|
|
strh r1, [r4, r2] @ movhi
|
|
mul r1, r9, r3
|
|
cmp r6, r1
|
|
strlt r5, [r4, #2552]
|
|
addlt r3, r3, #32
|
|
addlt r3, r7, r3
|
|
strhlt r3, [r4, r2] @ movhi
|
|
.L1871:
|
|
movw r3, #2620
|
|
ldr r1, [r4, #2552]
|
|
ldr r6, .L1881+12
|
|
mvn r5, #0
|
|
ldrh r3, [r4, r3]
|
|
sub r1, r1, r3
|
|
movw r3, #302
|
|
ldrh r3, [r4, r3]
|
|
mul r1, r9, r1
|
|
str r1, [r4, #3672]
|
|
mul r1, r1, r3
|
|
movw r3, #258
|
|
str r1, [r4, #2552]
|
|
ldrh r3, [r4, r3]
|
|
mul r1, r1, r3
|
|
str r1, [r4, #340]
|
|
bl FtlBbmTblFlush
|
|
ldrh r2, [r4, #242]
|
|
mov r1, #0
|
|
ldr r0, [r4, #72]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
mov r3, #0
|
|
movw r2, #65535
|
|
str r3, [r4, #2548]
|
|
strb r3, [r4, #178]
|
|
strb r3, [r4, #180]
|
|
strb r3, [r4, #30]
|
|
str r3, [r4, #24]
|
|
mov r3, #1
|
|
str r2, [r4, #172]
|
|
strb r3, [r4, #32]
|
|
.L1873:
|
|
mov r0, r6
|
|
bl make_superblock
|
|
ldrb r3, [r4, #31] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
ldrh r3, [r4, #24]
|
|
bne .L1874
|
|
lsl r3, r3, #1
|
|
ldr r2, [r4, #72]
|
|
strh r5, [r2, r3] @ movhi
|
|
ldrh r3, [r4, #24]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #24] @ movhi
|
|
b .L1873
|
|
.L1860:
|
|
ldr lr, [r4, #3312]
|
|
mvn r1, r3
|
|
orr r1, r3, r1, lsl #16
|
|
str r1, [lr, r3, lsl #2]
|
|
ldr r1, [r4, #3316]
|
|
str ip, [r1, r3, lsl #2]
|
|
b .L1859
|
|
.L1862:
|
|
mov r0, r6
|
|
mov r1, #1
|
|
add r6, r6, #1
|
|
bl FtlLowFormatEraseBlock
|
|
add r5, r0, r5
|
|
uxth r6, r6
|
|
uxth r5, r5
|
|
b .L1861
|
|
.L1863:
|
|
mov r0, r5
|
|
bl __aeabi_uidiv
|
|
ldr r3, [r4, #332]
|
|
add r0, r0, r3
|
|
uxth r0, r0
|
|
bl FtlSysBlkNumInit
|
|
ldrh r0, [r4, #236]
|
|
bl FtlFreeSysBlkQueueInit
|
|
ldrh r5, [r4, #240]
|
|
.L1865:
|
|
ldrh r3, [r4, #242]
|
|
cmp r3, r5
|
|
bls .L1867
|
|
mov r0, r5
|
|
add r5, r5, #1
|
|
mov r1, #1
|
|
uxth r5, r5
|
|
bl FtlLowFormatEraseBlock
|
|
b .L1865
|
|
.L1868:
|
|
mov r1, #0
|
|
add r5, r5, #1
|
|
bl FtlLowFormatEraseBlock
|
|
add r6, r0, r6
|
|
uxth r6, r6
|
|
b .L1864
|
|
.L1874:
|
|
ldr r2, [r4, #2588]
|
|
lsl r3, r3, #1
|
|
str r2, [r4, #36]
|
|
mvn r5, #0
|
|
add r2, r2, #1
|
|
str r2, [r4, #2588]
|
|
ldr r2, [r4, #72]
|
|
ldrh r1, [r4, #28]
|
|
ldr r6, .L1881+16
|
|
strh r1, [r2, r3] @ movhi
|
|
mov r3, #0
|
|
strh r3, [r4, #78] @ movhi
|
|
strb r3, [r4, #82]
|
|
ldrh r3, [r4, #24]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #76] @ movhi
|
|
mov r3, #1
|
|
strb r3, [r4, #84]
|
|
.L1875:
|
|
mov r0, r6
|
|
bl make_superblock
|
|
ldrb r3, [r4, #83] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
ldrh r3, [r4, #76]
|
|
bne .L1876
|
|
lsl r3, r3, #1
|
|
ldr r2, [r4, #72]
|
|
strh r5, [r2, r3] @ movhi
|
|
ldrh r3, [r4, #76]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #76] @ movhi
|
|
b .L1875
|
|
.L1876:
|
|
ldr r2, [r4, #2588]
|
|
lsl r3, r3, #1
|
|
str r2, [r4, #88]
|
|
mvn r5, #0
|
|
add r2, r2, #1
|
|
str r2, [r4, #2588]
|
|
ldr r2, [r4, #72]
|
|
ldrh r1, [r4, #80]
|
|
strh r1, [r2, r3] @ movhi
|
|
strh r5, [r4, #124] @ movhi
|
|
bl FtlFreeSysBlkQueueOut
|
|
ldr r3, .L1881+20
|
|
mov r2, #0
|
|
strh r2, [r3, #2] @ movhi
|
|
ldr r2, [r4, #3672]
|
|
strh r2, [r3, #6] @ movhi
|
|
strh r5, [r3, #4] @ movhi
|
|
strh r0, [r3] @ movhi
|
|
ldr r3, [r4, #2588]
|
|
str r3, [r4, #2632]
|
|
add r3, r3, #1
|
|
str r3, [r4, #2588]
|
|
bl FtlVpcTblFlush
|
|
bl FtlSysBlkInit
|
|
cmp r0, #0
|
|
mov r0, #0
|
|
moveq r2, #1
|
|
ldreq r3, .L1881+24
|
|
streq r2, [r3]
|
|
ldmfd sp, {r3, r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1882:
|
|
.align 2
|
|
.L1881:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+258
|
|
.word 168778952
|
|
.word .LANCHOR0+24
|
|
.word .LANCHOR0+76
|
|
.word .LANCHOR0+2624
|
|
.word .LANCHOR2
|
|
.size ftl_low_format, .-ftl_low_format
|
|
.align 2
|
|
.global sftl_init
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type sftl_init, %function
|
|
sftl_init:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L1887
|
|
mvn r3, #0
|
|
ldr r4, .L1887+4
|
|
ldr r1, .L1887+8
|
|
ldr r0, .L1887+12
|
|
str r3, [r5]
|
|
bl sftl_printk
|
|
mov r0, r4
|
|
bl FtlConstantsInit
|
|
bl FtlMemInit
|
|
bl FtlVariablesInit
|
|
ldrh r0, [r4, #236]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlLoadBbt
|
|
cmp r0, #0
|
|
bne .L1884
|
|
bl FtlSysBlkInit
|
|
cmp r0, #0
|
|
bne .L1884
|
|
mov r3, #1
|
|
str r3, [r5]
|
|
ldrh r3, [r4, #224]
|
|
cmp r3, #15
|
|
bhi .L1884
|
|
movw r4, #8129
|
|
.L1885:
|
|
mov r1, #1
|
|
mov r0, #0
|
|
bl rk_ftl_garbage_collect
|
|
subs r4, r4, #1
|
|
bne .L1885
|
|
.L1884:
|
|
mov r0, #0
|
|
ldmfd sp, {r4, r5, fp, sp, pc}
|
|
.L1888:
|
|
.align 2
|
|
.L1887:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LC0
|
|
.word .LC77
|
|
.size sftl_init, .-sftl_init
|
|
.section .rodata.str1.1
|
|
.LC130:
|
|
.ascii "write_idblock %x %x\012\000"
|
|
.LC131:
|
|
.ascii "write_idblock fail! %x %x %x %x\012\000"
|
|
.LC132:
|
|
.ascii "%s idb buffer alloc fail\012\000"
|
|
.text
|
|
.align 2
|
|
.global FtlWriteToIDB
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlWriteToIDB, %function
|
|
FtlWriteToIDB:
|
|
@ args = 0, pretend = 0, frame = 104
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #116
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r3, sp
|
|
add r8, r1, r0
|
|
bic r3, r3, #8128
|
|
sub r9, r8, #1
|
|
bic r3, r3, #63
|
|
cmp r9, #63
|
|
ldr r5, .L1948
|
|
mov r4, r0
|
|
movhi r10, #0
|
|
movls r10, #1
|
|
ldr r3, [r3, #24]
|
|
cmp r0, #576
|
|
orrcs r10, r10, #1
|
|
mov r6, r1
|
|
mov r7, r2
|
|
cmp r10, #0
|
|
str r3, [fp, #-48]
|
|
beq .L1890
|
|
ldr r3, [r5, #3676]
|
|
cmp r3, #0
|
|
bne .L1891
|
|
.L1947:
|
|
mov r4, #0
|
|
b .L1889
|
|
.L1891:
|
|
ldr r8, [r5, #3680]
|
|
ldr r3, .L1948+4
|
|
ldr r2, [r8]
|
|
cmp r2, r3
|
|
bne .L1893
|
|
ldrh r1, [r5, #10]
|
|
add r0, r8, #260096
|
|
mov r2, #0
|
|
movw r3, #65023
|
|
.L1897:
|
|
ldr ip, [r0, #-4]!
|
|
cmp ip, #0
|
|
bne .L1894
|
|
ldr ip, [r8, r2, lsl #2]
|
|
add r2, r2, #1
|
|
cmp r2, #4096
|
|
sub r3, r3, #1
|
|
str ip, [r0, #2048]
|
|
movhi r2, #0
|
|
cmp r3, #4096
|
|
bne .L1897
|
|
mov r3, #512
|
|
b .L1946
|
|
.L1894:
|
|
add r3, r3, #127
|
|
lsr r3, r3, #7
|
|
.L1946:
|
|
str r3, [fp, #-120]
|
|
lsl r1, r1, #2
|
|
ldr r3, [fp, #-120]
|
|
uxth r1, r1
|
|
add r0, r3, #4
|
|
bl __aeabi_uidiv
|
|
add r3, r0, #1
|
|
mov r2, r3
|
|
ldr r1, [fp, #-120]
|
|
ldr r0, .L1948+8
|
|
str r3, [fp, #-124]
|
|
bl sftl_printk
|
|
ldr r3, [fp, #-120]
|
|
lsl r3, r3, #7
|
|
str r3, [fp, #-140]
|
|
mov r3, #0
|
|
mov r10, r3
|
|
str r3, [fp, #-128]
|
|
.L1898:
|
|
ldr r3, [fp, #-124]
|
|
add r3, r3, r10
|
|
str r3, [fp, #-132]
|
|
cmp r3, #8
|
|
bls .L1920
|
|
ldr r3, [fp, #-128]
|
|
cmp r3, #0
|
|
bne .L1919
|
|
.L1893:
|
|
mvn r3, #0
|
|
str r3, [fp, #-120]
|
|
b .L1919
|
|
.L1920:
|
|
ldr r4, .L1948
|
|
mov r2, #512
|
|
mov r1, #0
|
|
ldr r0, [r4, #3684]
|
|
bl memset
|
|
ldrh r5, [r4, #10]
|
|
mul r3, r5, r10
|
|
str r3, [fp, #-136]
|
|
ldr r3, [r4, #3260]
|
|
cmp r3, #0
|
|
moveq r6, #6
|
|
beq .L1899
|
|
ldr r3, [r4, #3264]
|
|
cmp r3, #0
|
|
moveq r6, #6
|
|
movne r6, #9
|
|
.L1899:
|
|
mul r9, r5, r10
|
|
ldr r7, .L1948
|
|
mov r4, #0
|
|
.L1900:
|
|
ldr r3, [r7, #3248]
|
|
mov r1, r9
|
|
mov r0, #0
|
|
add r4, r4, #1
|
|
blx r3
|
|
ldr r3, [fp, #-124]
|
|
add r9, r9, r5
|
|
cmp r3, r4
|
|
bhi .L1900
|
|
cmp r6, #9
|
|
movne r4, #0
|
|
bne .L1901
|
|
ldr r4, [r7, #3684]
|
|
mov r2, #1024
|
|
mov r1, #0
|
|
mov r0, r4
|
|
bl ftl_memset
|
|
ldr r3, .L1948+12
|
|
str r3, [r4]
|
|
mov r1, #12
|
|
str r1, [r4, #4]
|
|
mov r3, #0
|
|
str r3, [r4, #12]
|
|
mov r3, #1024
|
|
strh r3, [r4, #16] @ movhi
|
|
add r0, r4, r1
|
|
ldrh r3, [r7, #10]
|
|
strh r3, [r4, #18] @ movhi
|
|
mov r3, #4096
|
|
str r3, [r4, #20]
|
|
bl js_hash
|
|
str r0, [r4, #8]
|
|
.L1901:
|
|
ldr r3, [fp, #-124]
|
|
mov r9, r8
|
|
ldr r7, .L1948
|
|
mul r3, r5, r3
|
|
mov r5, #0
|
|
str r3, [fp, #-144]
|
|
.L1902:
|
|
ldr r3, [fp, #-144]
|
|
cmp r5, r3
|
|
beq .L1909
|
|
cmp r6, #9
|
|
addeq r3, r5, #1
|
|
lslne r3, r5, #2
|
|
cmp r5, #0
|
|
cmpeq r6, #9
|
|
str r3, [fp, #-112]
|
|
movw r3, #61424
|
|
str r3, [fp, #-108]
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
bne .L1905
|
|
ldr r3, [r7, #3260]
|
|
mov r0, #70
|
|
blx r3
|
|
mov r2, r4
|
|
ldr r1, [fp, #-136]
|
|
sub r3, fp, #112
|
|
ldr ip, [r7, #3252]
|
|
mov r0, #0
|
|
blx ip
|
|
ldr r3, [r7, #3260]
|
|
str r0, [fp, #-148]
|
|
ldrb r0, [r7, #22] @ zero_extendqisi2
|
|
blx r3
|
|
ldr r2, [fp, #-148]
|
|
cmn r2, #1
|
|
bne .L1906
|
|
.L1909:
|
|
ldr r3, .L1948
|
|
ldrb r2, [r3, #14] @ zero_extendqisi2
|
|
ldr r1, [r3, #3260]
|
|
str r2, [fp, #-136]
|
|
ldrh r2, [r3, #10]
|
|
cmp r1, #0
|
|
ldr r9, [r3, #3684]
|
|
moveq r6, #6
|
|
mul r7, r2, r10
|
|
beq .L1908
|
|
ldr r3, [r3, #3264]
|
|
cmp r3, #0
|
|
moveq r6, #6
|
|
movne r6, #9
|
|
.L1908:
|
|
ldr r3, [fp, #-124]
|
|
mov r5, #0
|
|
ldr r4, .L1948
|
|
mul r3, r2, r3
|
|
str r3, [fp, #-144]
|
|
.L1911:
|
|
ldr r3, [fp, #-144]
|
|
cmp r5, r3
|
|
beq .L1915
|
|
cmp r5, #0
|
|
cmpeq r6, #9
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
bne .L1912
|
|
ldr r3, [r4, #3260]
|
|
mov r0, #70
|
|
blx r3
|
|
ldr r3, [r4, #3264]
|
|
mov r0, #2
|
|
blx r3
|
|
mov r2, r9
|
|
ldr ip, [r4, #3256]
|
|
mov r1, r7
|
|
sub r3, fp, #112
|
|
mov r0, #0
|
|
blx ip
|
|
ldr r3, [r4, #3264]
|
|
ldr r0, [fp, #-136]
|
|
blx r3
|
|
ldr r3, [r4, #3260]
|
|
ldrb r0, [r4, #22] @ zero_extendqisi2
|
|
blx r3
|
|
ldr r3, [r9]
|
|
ldr r2, .L1948+12
|
|
cmp r3, r2
|
|
beq .L1913
|
|
.L1915:
|
|
ldr r3, .L1948
|
|
mov r4, #0
|
|
ldr r0, [r3, #3684]
|
|
mov r3, r8
|
|
mov r2, r0
|
|
.L1914:
|
|
mov r5, r2
|
|
mov r6, r3
|
|
add r2, r2, #4
|
|
add r3, r3, #4
|
|
ldr ip, [r5]
|
|
ldr r1, [r6]
|
|
cmp ip, r1
|
|
beq .L1917
|
|
mov r2, #512
|
|
mov r1, #0
|
|
bl memset
|
|
str r4, [sp]
|
|
ldr r0, .L1948+16
|
|
mov r1, r10
|
|
ldr r3, [r6]
|
|
ldr r2, [r5]
|
|
bl sftl_printk
|
|
ldr r3, .L1948
|
|
mov r0, #0
|
|
ldrh r1, [r3, #10]
|
|
ldr r3, [r3, #3248]
|
|
mul r1, r10, r1
|
|
blx r3
|
|
.L1918:
|
|
ldr r10, [fp, #-132]
|
|
b .L1898
|
|
.L1905:
|
|
ldr r1, [fp, #-136]
|
|
sub r3, fp, #112
|
|
ldr ip, [r7, #3252]
|
|
mov r2, r9
|
|
add r1, r1, r5
|
|
blx ip
|
|
cmn r0, #1
|
|
beq .L1909
|
|
add r9, r9, #2048
|
|
.L1906:
|
|
add r5, r5, #1
|
|
b .L1902
|
|
.L1912:
|
|
ldr ip, [r4, #3256]
|
|
sub r3, fp, #112
|
|
mov r2, r9
|
|
add r1, r7, r5
|
|
blx ip
|
|
cmn r0, #1
|
|
beq .L1915
|
|
ldr r1, [fp, #-108]
|
|
movw r3, #61424
|
|
cmp r1, r3
|
|
bne .L1915
|
|
add r9, r9, #2048
|
|
.L1913:
|
|
add r5, r5, #1
|
|
b .L1911
|
|
.L1917:
|
|
ldr r1, [fp, #-140]
|
|
add r4, r4, #1
|
|
cmp r4, r1
|
|
bcc .L1914
|
|
ldr r3, [fp, #-128]
|
|
add r3, r3, #1
|
|
str r3, [fp, #-128]
|
|
cmp r3, #5
|
|
bls .L1918
|
|
.L1919:
|
|
ldr r5, .L1948
|
|
mov r3, #0
|
|
ldr r4, [fp, #-120]
|
|
ldr r0, [r5, #3680]
|
|
str r3, [r5, #3676]
|
|
bl kfree
|
|
ldr r0, [r5, #3684]
|
|
bl kfree
|
|
.L1889:
|
|
mov r3, sp
|
|
ldr r2, [fp, #-48]
|
|
bic r3, r3, #8128
|
|
bic r3, r3, #63
|
|
ldr r3, [r3, #24]
|
|
cmp r2, r3
|
|
beq .L1928
|
|
bl __stack_chk_fail
|
|
.L1890:
|
|
cmp r0, #64
|
|
bne .L1921
|
|
mov r0, #262144
|
|
bl ftl_malloc
|
|
str r0, [r5, #3680]
|
|
mov r0, #262144
|
|
bl ftl_malloc
|
|
mov r3, r0
|
|
str r0, [r5, #3684]
|
|
ldr r0, [r5, #3680]
|
|
cmp r0, #0
|
|
cmpne r3, #0
|
|
beq .L1922
|
|
mov r1, r10
|
|
mov r2, #262144
|
|
mov r3, #1
|
|
str r3, [r5, #3676]
|
|
bl ftl_memset
|
|
.L1923:
|
|
cmp r4, #63
|
|
ldr r0, [r5, #3680]
|
|
sub r3, r4, #64
|
|
rsbls r4, r4, #64
|
|
addls r6, r6, r3
|
|
addls r7, r7, r4, lsl #9
|
|
addhi r0, r0, r3, lsl #9
|
|
cmp r9, #576
|
|
mov r1, r7
|
|
rsbcs r8, r8, #576
|
|
addcs r6, r6, r8
|
|
lsl r2, r6, #9
|
|
bl ftl_memcpy
|
|
b .L1947
|
|
.L1922:
|
|
ldr r1, .L1948+20
|
|
ldr r0, .L1948+24
|
|
bl sftl_printk
|
|
.L1921:
|
|
ldr r3, [r5, #3676]
|
|
cmp r3, #0
|
|
bne .L1923
|
|
b .L1947
|
|
.L1928:
|
|
mov r0, r4
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1949:
|
|
.align 2
|
|
.L1948:
|
|
.word .LANCHOR0
|
|
.word -52655045
|
|
.word .LC130
|
|
.word 1179535694
|
|
.word .LC131
|
|
.word .LANCHOR1+633
|
|
.word .LC132
|
|
.size FtlWriteToIDB, .-FtlWriteToIDB
|
|
.align 2
|
|
.global sftl_write
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type sftl_write, %function
|
|
sftl_write:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r5, r1
|
|
mov r6, r2
|
|
mov r4, r0
|
|
bl FtlWriteToIDB
|
|
mov r3, r6
|
|
mov r2, r5
|
|
mov r1, r4
|
|
mov r0, #0
|
|
bl FtlWrite
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.size sftl_write, .-sftl_write
|
|
.align 2
|
|
.global rk_sftl_vendor_dev_ops_register
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_sftl_vendor_dev_ops_register, %function
|
|
rk_sftl_vendor_dev_ops_register:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L1954
|
|
mov r2, r0
|
|
ldr r0, [r3, #3688]
|
|
cmp r0, #0
|
|
streq r2, [r3, #3688]
|
|
streq r1, [r3, #3692]
|
|
mvnne r0, #0
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L1955:
|
|
.align 2
|
|
.L1954:
|
|
.word .LANCHOR0
|
|
.size rk_sftl_vendor_dev_ops_register, .-rk_sftl_vendor_dev_ops_register
|
|
.align 2
|
|
.global rk_sftl_vendor_storage_init
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_sftl_vendor_storage_init, %function
|
|
rk_sftl_vendor_storage_init:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r5, .L1965
|
|
mov r0, #65536
|
|
bl ftl_malloc
|
|
cmp r0, #0
|
|
mvneq r4, #11
|
|
str r0, [r5, #3696]
|
|
beq .L1956
|
|
ldr r9, .L1965+4
|
|
mov r8, #0
|
|
mov r7, r8
|
|
mov r6, r8
|
|
.L1960:
|
|
ldr r3, [r5, #3688]
|
|
lsl r0, r6, #7
|
|
ldr r2, [r5, #3696]
|
|
mov r1, #128
|
|
blx r3
|
|
subs r4, r0, #0
|
|
bne .L1958
|
|
ldr r3, [r5, #3696]
|
|
ldr r2, [r3]
|
|
cmp r2, r9
|
|
bne .L1959
|
|
add r1, r3, #61440
|
|
ldr r2, [r3, #4]
|
|
cmp r2, r7
|
|
ldr r1, [r1, #4092]
|
|
sub r1, r1, r2
|
|
clz r1, r1
|
|
lsr r1, r1, #5
|
|
movls r1, #0
|
|
cmp r1, #0
|
|
movne r8, r6
|
|
movne r7, r2
|
|
.L1959:
|
|
cmp r6, #1
|
|
bne .L1964
|
|
cmp r7, #0
|
|
beq .L1961
|
|
ldr r4, [r5, #3688]
|
|
mov r2, r3
|
|
lsl r0, r8, #7
|
|
mov r1, #128
|
|
blx r4
|
|
subs r4, r0, #0
|
|
beq .L1956
|
|
.L1958:
|
|
ldr r0, [r5, #3696]
|
|
mvn r4, #0
|
|
bl kfree
|
|
mov r3, #0
|
|
str r3, [r5, #3696]
|
|
b .L1956
|
|
.L1964:
|
|
mov r6, #1
|
|
b .L1960
|
|
.L1961:
|
|
mov r2, #65536
|
|
mov r1, r7
|
|
mov r0, r3
|
|
bl memset
|
|
add r2, r0, #61440
|
|
str r6, [r0, #4]
|
|
str r9, [r0]
|
|
str r6, [r2, #4092]
|
|
ldr r2, .L1965+8
|
|
strh r2, [r0, #14] @ movhi
|
|
.L1956:
|
|
mov r0, r4
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, fp, sp, pc}
|
|
.L1966:
|
|
.align 2
|
|
.L1965:
|
|
.word .LANCHOR0
|
|
.word 1380668996
|
|
.word -1032
|
|
.size rk_sftl_vendor_storage_init, .-rk_sftl_vendor_storage_init
|
|
.align 2
|
|
.global rk_sftl_vendor_read
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_sftl_vendor_read, %function
|
|
rk_sftl_vendor_read:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r3, .L1973
|
|
mov r4, r0
|
|
mov r0, r1
|
|
ldr r3, [r3, #3696]
|
|
cmp r3, #0
|
|
addne r5, r3, #16
|
|
movne lr, #0
|
|
ldrhne r1, [r3, #10]
|
|
bne .L1969
|
|
.L1972:
|
|
mvn r0, #0
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1970:
|
|
add lr, lr, #1
|
|
.L1969:
|
|
cmp r1, lr
|
|
bls .L1972
|
|
lsl ip, lr, #3
|
|
ldrh r6, [r5, ip]
|
|
cmp r6, r4
|
|
bne .L1970
|
|
add ip, r3, ip
|
|
ldrh r4, [ip, #20]
|
|
ldrh r1, [ip, #18]
|
|
cmp r4, r2
|
|
movcs r4, r2
|
|
add r1, r1, #1024
|
|
mov r2, r4
|
|
add r1, r3, r1
|
|
bl memcpy
|
|
mov r0, r4
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1974:
|
|
.align 2
|
|
.L1973:
|
|
.word .LANCHOR0
|
|
.size rk_sftl_vendor_read, .-rk_sftl_vendor_read
|
|
.align 2
|
|
.global rk_sftl_vendor_write
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_sftl_vendor_write, %function
|
|
rk_sftl_vendor_write:
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
sub sp, sp, #28
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r9, .L1994
|
|
mov r8, r1
|
|
mov r7, r2
|
|
str r0, [fp, #-52]
|
|
ldr r4, [r9, #3696]
|
|
cmp r4, #0
|
|
beq .L1990
|
|
add r3, r7, #63
|
|
ldrh r2, [r4, #10]
|
|
bic r3, r3, #63
|
|
str r3, [fp, #-48]
|
|
ldrh r3, [r4, #8]
|
|
mov r6, #0
|
|
str r3, [fp, #-56]
|
|
add r3, r4, #16
|
|
.L1977:
|
|
cmp r6, r2
|
|
bcc .L1985
|
|
ldrh r1, [r4, #14]
|
|
ldr r3, [fp, #-48]
|
|
cmp r1, r3
|
|
bcc .L1990
|
|
add r3, r4, r2, lsl #3
|
|
ldr r2, [fp, #-52]
|
|
strh r2, [r3, #16] @ movhi
|
|
ldrh r0, [r4, #12]
|
|
strh r0, [r3, #18] @ movhi
|
|
strh r7, [r3, #20] @ movhi
|
|
ldrh r3, [fp, #-48]
|
|
add r2, r0, r3
|
|
add r0, r0, #1024
|
|
sub r3, r1, r3
|
|
strh r2, [r4, #12] @ movhi
|
|
strh r3, [r4, #14] @ movhi
|
|
mov r2, r7
|
|
mov r1, r8
|
|
add r0, r4, r0
|
|
bl memcpy
|
|
ldrh r3, [r4, #10]
|
|
add r2, r4, #61440
|
|
add r3, r3, #1
|
|
strh r3, [r4, #10] @ movhi
|
|
ldr r3, [r4, #4]
|
|
add r3, r3, #1
|
|
str r3, [r4, #4]
|
|
str r3, [r2, #4092]
|
|
ldrh r3, [r4, #8]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
cmp r3, #1
|
|
movhi r3, #0
|
|
strh r3, [r4, #8] @ movhi
|
|
ldr r3, [r9, #3692]
|
|
b .L1993
|
|
.L1985:
|
|
lsl r5, r6, #3
|
|
ldr r0, [fp, #-52]
|
|
ldrh r1, [r3, r5]
|
|
cmp r1, r0
|
|
bne .L1978
|
|
add r5, r4, r5
|
|
add r3, r4, #1024
|
|
ldrh r1, [r5, #20]
|
|
add r1, r1, #63
|
|
bic r1, r1, #63
|
|
str r1, [fp, #-60]
|
|
cmp r7, r1
|
|
bls .L1979
|
|
ldrh r1, [r4, #14]
|
|
ldr r0, [fp, #-48]
|
|
cmp r1, r0
|
|
subcs r2, r2, #1
|
|
strcs r2, [fp, #-64]
|
|
ldrhcs r10, [r5, #18]
|
|
bcs .L1980
|
|
.L1990:
|
|
mvn r0, #0
|
|
b .L1975
|
|
.L1981:
|
|
ldrh r2, [r5, #16]
|
|
add r0, r3, r10
|
|
strh r2, [r5, #8] @ movhi
|
|
add r6, r6, #1
|
|
ldrh r2, [r5, #20]
|
|
ldrh r1, [r5, #18]
|
|
strh r2, [r5, #12] @ movhi
|
|
add r2, r2, #63
|
|
strh r9, [r5, #10] @ movhi
|
|
bic r9, r2, #63
|
|
add r1, r3, r1
|
|
mov r2, r9
|
|
str r3, [fp, #-68]
|
|
bl memcpy
|
|
ldr r3, [fp, #-68]
|
|
add r10, r10, r9
|
|
.L1980:
|
|
ldr r2, [fp, #-64]
|
|
uxth r9, r10
|
|
add r5, r5, #8
|
|
cmp r2, r6
|
|
bhi .L1981
|
|
add r6, r4, r6, lsl #3
|
|
ldr r2, [fp, #-52]
|
|
uxtah r0, r3, r10
|
|
mov r1, r8
|
|
strh r2, [r6, #16] @ movhi
|
|
mov r2, r7
|
|
strh r9, [r6, #18] @ movhi
|
|
strh r7, [r6, #20] @ movhi
|
|
bl memcpy
|
|
ldrh r2, [fp, #-48]
|
|
ldrh r3, [r4, #14]
|
|
add r9, r2, r9
|
|
strh r9, [r4, #12] @ movhi
|
|
sub r3, r3, r2
|
|
ldr r2, [fp, #-60]
|
|
add r3, r3, r2
|
|
strh r3, [r4, #14] @ movhi
|
|
.L1982:
|
|
add r2, r4, #61440
|
|
ldr r3, [r4, #4]
|
|
add r3, r3, #1
|
|
str r3, [r4, #4]
|
|
str r3, [r2, #4092]
|
|
ldrh r3, [r4, #8]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
cmp r3, #1
|
|
movhi r3, #0
|
|
strh r3, [r4, #8] @ movhi
|
|
ldr r3, .L1994
|
|
ldr r3, [r3, #3692]
|
|
.L1993:
|
|
ldr r0, [fp, #-56]
|
|
mov r2, r4
|
|
mov r1, #128
|
|
lsl r0, r0, #7
|
|
blx r3
|
|
mov r0, #0
|
|
.L1975:
|
|
sub sp, fp, #40
|
|
ldmfd sp, {r4, r5, r6, r7, r8, r9, r10, fp, sp, pc}
|
|
.L1979:
|
|
ldrh r0, [r5, #18]
|
|
mov r2, r7
|
|
mov r1, r8
|
|
add r0, r3, r0
|
|
bl memcpy
|
|
strh r7, [r5, #20] @ movhi
|
|
b .L1982
|
|
.L1978:
|
|
add r6, r6, #1
|
|
b .L1977
|
|
.L1995:
|
|
.align 2
|
|
.L1994:
|
|
.word .LANCHOR0
|
|
.size rk_sftl_vendor_write, .-rk_sftl_vendor_write
|
|
.section .rodata.str1.1
|
|
.LC133:
|
|
.ascii "copy_from_user error %d %p %p\012\000"
|
|
.text
|
|
.align 2
|
|
.global rk_sftl_vendor_storage_ioctl
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_sftl_vendor_storage_ioctl, %function
|
|
rk_sftl_vendor_storage_ioctl:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {r4, r5, r6, r7, fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
mov r0, #4096
|
|
mov r4, r2
|
|
mov r6, r1
|
|
bl ftl_malloc
|
|
subs r5, r0, #0
|
|
mvneq r4, #0
|
|
beq .L1996
|
|
ldr r3, .L2014
|
|
cmp r6, r3
|
|
beq .L1998
|
|
add r3, r3, #1
|
|
cmp r6, r3
|
|
beq .L1999
|
|
.L2012:
|
|
mvn r4, #13
|
|
.L2000:
|
|
mov r0, r5
|
|
bl kfree
|
|
.L1996:
|
|
mov r0, r4
|
|
ldmfd sp, {r4, r5, r6, r7, fp, sp, pc}
|
|
.L1998:
|
|
mov r1, r4
|
|
mov r2, #8
|
|
bl _copy_from_user
|
|
cmp r0, #0
|
|
beq .L2001
|
|
mov r2, r4
|
|
mov r1, #256
|
|
.L2013:
|
|
ldr r0, .L2014+4
|
|
bl sftl_printk
|
|
b .L2012
|
|
.L2001:
|
|
ldr r2, [r5]
|
|
ldr r3, .L2014+8
|
|
cmp r2, r3
|
|
beq .L2002
|
|
.L2003:
|
|
mvn r4, #0
|
|
b .L2000
|
|
.L2002:
|
|
ldrh r2, [r5, #6]
|
|
add r1, r5, #8
|
|
ldrh r0, [r5, #4]
|
|
bl rk_sftl_vendor_read
|
|
cmn r0, #1
|
|
beq .L2003
|
|
mov r3, sp
|
|
strh r0, [r5, #6] @ movhi
|
|
bic r1, r3, #8128
|
|
uxth r2, r0
|
|
bic r1, r1, #63
|
|
add r2, r2, #8
|
|
ldr r3, [r1, #8]
|
|
.syntax divided
|
|
@ 177 "./include/linux/uaccess.h" 1
|
|
.syntax unified
|
|
adds r0, r4, r2; sbcscc r0, r0, r3; movcc r3, #0
|
|
@ 0 "" 2
|
|
.arm
|
|
.syntax unified
|
|
cmp r3, #0
|
|
bne .L2012
|
|
.syntax divided
|
|
@ 89 "./arch/arm/include/asm/domain.h" 1
|
|
mrc p15, 0, r6, c3, c0 @ get domain
|
|
@ 0 "" 2
|
|
.arm
|
|
.syntax unified
|
|
bic r3, r6, #12
|
|
orr r3, r3, #4
|
|
.syntax divided
|
|
@ 99 "./arch/arm/include/asm/domain.h" 1
|
|
mcr p15, 0, r3, c3, c0 @ set domain
|
|
@ 0 "" 2
|
|
@ 102 "./arch/arm/include/asm/domain.h" 1
|
|
isb
|
|
@ 0 "" 2
|
|
.arm
|
|
.syntax unified
|
|
mov r1, r5
|
|
mov r0, r4
|
|
bl arm_copy_to_user
|
|
mov r4, r0
|
|
.syntax divided
|
|
@ 99 "./arch/arm/include/asm/domain.h" 1
|
|
mcr p15, 0, r6, c3, c0 @ set domain
|
|
@ 0 "" 2
|
|
@ 102 "./arch/arm/include/asm/domain.h" 1
|
|
isb
|
|
@ 0 "" 2
|
|
.arm
|
|
.syntax unified
|
|
cmp r0, #0
|
|
beq .L2000
|
|
b .L2012
|
|
.L1999:
|
|
mov r1, r4
|
|
mov r2, #8
|
|
bl _copy_from_user
|
|
cmp r0, #0
|
|
movne r2, r4
|
|
movne r1, #276
|
|
bne .L2013
|
|
ldr r2, [r5]
|
|
ldr r3, .L2014+8
|
|
cmp r2, r3
|
|
bne .L2003
|
|
ldrh r2, [r5, #6]
|
|
movw r3, #4087
|
|
cmp r2, r3
|
|
bhi .L2003
|
|
add r2, r2, #8
|
|
mov r1, r4
|
|
mov r0, r5
|
|
uxth r2, r2
|
|
bl _copy_from_user
|
|
cmp r0, #0
|
|
movne r2, r4
|
|
movwne r1, #283
|
|
bne .L2013
|
|
ldrh r2, [r5, #6]
|
|
add r1, r5, #8
|
|
ldrh r0, [r5, #4]
|
|
bl rk_sftl_vendor_write
|
|
mov r4, r0
|
|
b .L2000
|
|
.L2015:
|
|
.align 2
|
|
.L2014:
|
|
.word 1074034177
|
|
.word .LC133
|
|
.word 1448232273
|
|
.size rk_sftl_vendor_storage_ioctl, .-rk_sftl_vendor_storage_ioctl
|
|
.align 2
|
|
.global rk_sftl_vendor_register
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_sftl_vendor_register, %function
|
|
rk_sftl_vendor_register:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 1, uses_anonymous_args = 0
|
|
mov ip, sp
|
|
push {fp, ip, lr, pc}
|
|
sub fp, ip, #4
|
|
push {lr}
|
|
bl __gnu_mcount_nc
|
|
ldr r0, .L2017
|
|
bl misc_register
|
|
ldmfd sp, {fp, sp, pc}
|
|
.L2018:
|
|
.align 2
|
|
.L2017:
|
|
.word .LANCHOR2+12
|
|
.size rk_sftl_vendor_register, .-rk_sftl_vendor_register
|
|
.section .rodata.str1.1
|
|
.LC134:
|
|
.ascii "vendor_storage\000"
|
|
.global g_nand_ops
|
|
.global g_nand_phy_info
|
|
.global gc_ink_free_return_value
|
|
.global check_vpc_table
|
|
.global FtlUpdateVaildLpnCount
|
|
.global g_ect_tbl_power_up_flush
|
|
.global power_up_flag
|
|
.global gFtlInitStatus
|
|
.global DeviceCapacity
|
|
.global g_power_lost_recovery_flag
|
|
.global c_mlc_erase_count_value
|
|
.global g_recovery_ppa_tbl
|
|
.global g_recovery_page_min_ver
|
|
.global g_recovery_page_num
|
|
.global sftl_nand_check_spare_buf
|
|
.global sftl_temp_buf
|
|
.global sftl_nand_check_buf
|
|
.global g_cur_erase_blk
|
|
.global g_gc_skip_write_count
|
|
.global g_gc_head_data_block_count
|
|
.global g_gc_head_data_block
|
|
.global g_ftl_nand_free_count
|
|
.global g_in_swl_replace
|
|
.global g_in_gc_progress
|
|
.global g_max_erase_count
|
|
.global g_totle_sys_slc_erase_count
|
|
.global g_totle_slc_erase_count
|
|
.global g_min_erase_count
|
|
.global g_totle_avg_erase_count
|
|
.global g_totle_mlc_erase_count
|
|
.global g_totle_l2p_write_count
|
|
.global g_totle_cache_write_count
|
|
.global g_tmp_data_superblock_id
|
|
.global g_totle_read_page_count
|
|
.global g_totle_discard_page_count
|
|
.global g_totle_read_sector
|
|
.global g_totle_write_sector
|
|
.global g_totle_write_page_count
|
|
.global g_totle_gc_page_count
|
|
.global g_gc_blk_index
|
|
.global g_gc_merge_free_blk_threshold
|
|
.global g_gc_free_blk_threshold
|
|
.global g_gc_bad_block_temp_tbl
|
|
.global g_gc_bad_block_gc_index
|
|
.global g_gc_bad_block_temp_num
|
|
.global g_gc_next_blk_1
|
|
.global g_gc_next_blk
|
|
.global g_gc_cur_blk_max_valid_pages
|
|
.global g_gc_cur_blk_valid_pages
|
|
.global g_gc_page_offset
|
|
.global g_gc_blk_num
|
|
.global p_gc_blk_tbl
|
|
.global p_gc_page_info
|
|
.global g_sys_ext_data
|
|
.global g_sys_save_data
|
|
.global gp_last_act_superblock
|
|
.global g_gc_superblock
|
|
.global g_gc_temp_superblock
|
|
.global g_buffer_superblock
|
|
.global g_active_superblock
|
|
.global g_num_data_superblocks
|
|
.global g_num_free_superblocks
|
|
.global p_data_block_list_tail
|
|
.global p_data_block_list_head
|
|
.global p_free_data_block_list_head
|
|
.global p_data_block_list_table
|
|
.global g_l2p_last_update_region_id
|
|
.global p_l2p_map_buf
|
|
.global p_l2p_ram_map
|
|
.global g_totle_vendor_block
|
|
.global p_vendor_region_ppn_table
|
|
.global p_vendor_block_ver_table
|
|
.global p_vendor_block_valid_page_count
|
|
.global p_vendor_block_table
|
|
.global g_totle_map_block
|
|
.global p_map_region_ppn_table
|
|
.global p_map_block_ver_table
|
|
.global p_map_block_valid_page_count
|
|
.global p_map_block_table
|
|
.global p_valid_page_count_check_table
|
|
.global p_valid_page_count_table
|
|
.global g_totle_swl_count
|
|
.global p_swl_mul_table
|
|
.global p_erase_count_table
|
|
.global g_ect_tbl_info_size
|
|
.global gp_ect_tbl_info
|
|
.global g_gc_num_req
|
|
.global c_gc_page_buf_num
|
|
.global gp_gc_page_buf_info
|
|
.global p_gc_data_buf
|
|
.global p_gc_spare_buf
|
|
.global p_io_spare_buf
|
|
.global p_io_data_buf_1
|
|
.global p_io_data_buf_0
|
|
.global p_sys_spare_buf
|
|
.global p_vendor_data_buf
|
|
.global p_sys_data_buf_1
|
|
.global p_sys_data_buf
|
|
.global p_plane_order_table
|
|
.global req_gc_dst
|
|
.global req_gc
|
|
.global req_erase
|
|
.global req_prgm
|
|
.global req_read
|
|
.global req_sys
|
|
.global gVendorBlkInfo
|
|
.global gL2pMapInfo
|
|
.global gSysFreeQueue
|
|
.global gSysInfo
|
|
.global gBbtInfo
|
|
.global g_MaxLbn
|
|
.global g_VaildLpn
|
|
.global g_MaxLpn
|
|
.global g_MaxLbaSector
|
|
.global g_GlobalDataVersion
|
|
.global g_GlobalSysVersion
|
|
.global ftl_gc_temp_power_lost_recovery_flag
|
|
.global c_ftl_nand_max_data_blks
|
|
.global c_ftl_nand_data_op_blks_per_plane
|
|
.global c_ftl_nand_data_blks_per_plane
|
|
.global c_ftl_nand_max_sys_blks
|
|
.global c_ftl_nand_init_sys_blks_per_plane
|
|
.global c_ftl_nand_sys_blks_per_plane
|
|
.global c_ftl_vendor_part_size
|
|
.global c_ftl_nand_max_vendor_blks
|
|
.global c_ftl_nand_max_map_blks
|
|
.global c_ftl_nand_map_blks_per_plane
|
|
.global c_ftl_nand_vendor_region_num
|
|
.global c_ftl_nand_l2pmap_ram_region_num
|
|
.global c_ftl_nand_map_region_num
|
|
.global c_ftl_nand_totle_phy_blks
|
|
.global c_ftl_nand_reserved_blks
|
|
.global c_ftl_nand_byte_pre_oob
|
|
.global c_ftl_nand_byte_pre_page
|
|
.global c_ftl_nand_sec_pre_page_shift
|
|
.global c_ftl_nand_sec_pre_page
|
|
.global c_ftl_nand_page_pre_super_blk
|
|
.global c_ftl_nand_page_pre_slc_blk
|
|
.global c_ftl_nand_page_pre_blk
|
|
.global c_ftl_nand_bbm_buf_size
|
|
.global c_ftl_nand_ext_blk_pre_plane
|
|
.global c_ftl_nand_blk_pre_plane
|
|
.global c_ftl_nand_planes_num
|
|
.global c_ftl_nand_blks_per_die_shift
|
|
.global c_ftl_nand_blks_per_die
|
|
.global c_ftl_nand_planes_per_die
|
|
.global c_ftl_nand_die_num
|
|
.global c_ftl_nand_type
|
|
.section .rodata
|
|
.align 2
|
|
.set .LANCHOR1,. + 0
|
|
.type __func__.30, %object
|
|
.size __func__.30, 17
|
|
__func__.30:
|
|
.ascii "INSERT_DATA_LIST\000"
|
|
.type __func__.31, %object
|
|
.size __func__.31, 17
|
|
__func__.31:
|
|
.ascii "INSERT_FREE_LIST\000"
|
|
.type __func__.29, %object
|
|
.size __func__.29, 17
|
|
__func__.29:
|
|
.ascii "List_remove_node\000"
|
|
.type __func__.28, %object
|
|
.size __func__.28, 22
|
|
__func__.28:
|
|
.ascii "List_update_data_list\000"
|
|
.type __func__.22, %object
|
|
.size __func__.22, 22
|
|
__func__.22:
|
|
.ascii "select_l2p_ram_region\000"
|
|
.type __func__.14, %object
|
|
.size __func__.14, 16
|
|
__func__.14:
|
|
.ascii "make_superblock\000"
|
|
.type __func__.8, %object
|
|
.size __func__.8, 19
|
|
__func__.8:
|
|
.ascii "get_new_active_ppa\000"
|
|
.type __func__.1, %object
|
|
.size __func__.1, 17
|
|
__func__.1:
|
|
.ascii "FlashEraseBlocks\000"
|
|
.type __func__.26, %object
|
|
.size __func__.26, 26
|
|
__func__.26:
|
|
.ascii "ftl_map_blk_alloc_new_blk\000"
|
|
.type __func__.37, %object
|
|
.size __func__.37, 11
|
|
__func__.37:
|
|
.ascii "FtlMemInit\000"
|
|
.type __func__.34, %object
|
|
.size __func__.34, 14
|
|
__func__.34:
|
|
.ascii "FtlBbt2Bitmap\000"
|
|
.type __func__.13, %object
|
|
.size __func__.13, 18
|
|
__func__.13:
|
|
.ascii "SupperBlkListInit\000"
|
|
.type __func__.3, %object
|
|
.size __func__.3, 15
|
|
__func__.3:
|
|
.ascii "FlashReadPages\000"
|
|
.type __func__.19, %object
|
|
.size __func__.19, 14
|
|
__func__.19:
|
|
.ascii "FtlScanSysBlk\000"
|
|
.type __func__.32, %object
|
|
.size __func__.32, 11
|
|
__func__.32:
|
|
.ascii "FtlLoadBbt\000"
|
|
.type __func__.2, %object
|
|
.size __func__.2, 15
|
|
__func__.2:
|
|
.ascii "FlashProgPages\000"
|
|
.type __func__.10, %object
|
|
.size __func__.10, 25
|
|
__func__.10:
|
|
.ascii "allocate_data_superblock\000"
|
|
.type __func__.7, %object
|
|
.size __func__.7, 16
|
|
__func__.7:
|
|
.ascii "update_vpc_list\000"
|
|
.type __func__.6, %object
|
|
.size __func__.6, 20
|
|
__func__.6:
|
|
.ascii "decrement_vpc_count\000"
|
|
.type __func__.23, %object
|
|
.size __func__.23, 16
|
|
__func__.23:
|
|
.ascii "FtlMapWritePage\000"
|
|
.type __func__.27, %object
|
|
.size __func__.27, 16
|
|
__func__.27:
|
|
.ascii "load_l2p_region\000"
|
|
.type __func__.25, %object
|
|
.size __func__.25, 15
|
|
__func__.25:
|
|
.ascii "ftl_map_blk_gc\000"
|
|
.type __func__.24, %object
|
|
.size __func__.24, 31
|
|
__func__.24:
|
|
.ascii "Ftl_write_map_blk_to_last_page\000"
|
|
.type __func__.21, %object
|
|
.size __func__.21, 9
|
|
__func__.21:
|
|
.ascii "log2phys\000"
|
|
.type __func__.16, %object
|
|
.size __func__.16, 16
|
|
__func__.16:
|
|
.ascii "FtlReUsePrevPpa\000"
|
|
.type __func__.15, %object
|
|
.size __func__.15, 22
|
|
__func__.15:
|
|
.ascii "FtlRecoverySuperblock\000"
|
|
.type __func__.11, %object
|
|
.size __func__.11, 14
|
|
__func__.11:
|
|
.ascii "ftl_check_vpc\000"
|
|
.type __func__.20, %object
|
|
.size __func__.20, 15
|
|
__func__.20:
|
|
.ascii "FtlVpcTblFlush\000"
|
|
.type __func__.12, %object
|
|
.size __func__.12, 21
|
|
__func__.12:
|
|
.ascii "FtlVpcCheckAndModify\000"
|
|
.type __func__.9, %object
|
|
.size __func__.9, 29
|
|
__func__.9:
|
|
.ascii "allocate_new_data_superblock\000"
|
|
.type __func__.36, %object
|
|
.size __func__.36, 13
|
|
__func__.36:
|
|
.ascii "FtlProgPages\000"
|
|
.type __func__.5, %object
|
|
.size __func__.5, 19
|
|
__func__.5:
|
|
.ascii "FtlGcFreeTempBlock\000"
|
|
.type __func__.4, %object
|
|
.size __func__.4, 23
|
|
__func__.4:
|
|
.ascii "rk_ftl_garbage_collect\000"
|
|
.type __func__.35, %object
|
|
.size __func__.35, 9
|
|
__func__.35:
|
|
.ascii "FtlWrite\000"
|
|
.type __func__.18, %object
|
|
.size __func__.18, 15
|
|
__func__.18:
|
|
.ascii "FtlLoadSysInfo\000"
|
|
.type __func__.17, %object
|
|
.size __func__.17, 18
|
|
__func__.17:
|
|
.ascii "FtlMapTblRecovery\000"
|
|
.type __func__.0, %object
|
|
.size __func__.0, 14
|
|
__func__.0:
|
|
.ascii "FtlWriteToIDB\000"
|
|
.space 1
|
|
.type rk_sftl_vendor_storage_fops, %object
|
|
.size rk_sftl_vendor_storage_fops, 128
|
|
rk_sftl_vendor_storage_fops:
|
|
.space 40
|
|
.word rk_sftl_vendor_storage_ioctl
|
|
.word rk_sftl_vendor_storage_ioctl
|
|
.space 80
|
|
.data
|
|
.align 2
|
|
.set .LANCHOR2,. + 0
|
|
.type gFtlInitStatus, %object
|
|
.size gFtlInitStatus, 4
|
|
gFtlInitStatus:
|
|
.word -1
|
|
.type ftl_gc_temp_block_bops_scan_page_addr, %object
|
|
.size ftl_gc_temp_block_bops_scan_page_addr, 2
|
|
ftl_gc_temp_block_bops_scan_page_addr:
|
|
.short -1
|
|
.space 2
|
|
.type power_up_flag, %object
|
|
.size power_up_flag, 4
|
|
power_up_flag:
|
|
.word 1
|
|
.type rkflash_vender_storage_dev, %object
|
|
.size rkflash_vender_storage_dev, 40
|
|
rkflash_vender_storage_dev:
|
|
.word 255
|
|
.word .LC134
|
|
.word rk_sftl_vendor_storage_fops
|
|
.space 28
|
|
.bss
|
|
.align 2
|
|
.set .LANCHOR0,. + 0
|
|
.type g_nand_phy_info, %object
|
|
.size g_nand_phy_info, 24
|
|
g_nand_phy_info:
|
|
.space 24
|
|
.type g_active_superblock, %object
|
|
.size g_active_superblock, 48
|
|
g_active_superblock:
|
|
.space 48
|
|
.type p_valid_page_count_table, %object
|
|
.size p_valid_page_count_table, 4
|
|
p_valid_page_count_table:
|
|
.space 4
|
|
.type g_buffer_superblock, %object
|
|
.size g_buffer_superblock, 48
|
|
g_buffer_superblock:
|
|
.space 48
|
|
.type g_gc_temp_superblock, %object
|
|
.size g_gc_temp_superblock, 48
|
|
g_gc_temp_superblock:
|
|
.space 48
|
|
.type g_gc_superblock, %object
|
|
.size g_gc_superblock, 48
|
|
g_gc_superblock:
|
|
.space 48
|
|
.type g_gc_next_blk_1, %object
|
|
.size g_gc_next_blk_1, 2
|
|
g_gc_next_blk_1:
|
|
.space 2
|
|
.type g_gc_next_blk, %object
|
|
.size g_gc_next_blk, 2
|
|
g_gc_next_blk:
|
|
.space 2
|
|
.type g_num_free_superblocks, %object
|
|
.size g_num_free_superblocks, 2
|
|
g_num_free_superblocks:
|
|
.space 2
|
|
.space 2
|
|
.type c_ftl_nand_sys_blks_per_plane, %object
|
|
.size c_ftl_nand_sys_blks_per_plane, 4
|
|
c_ftl_nand_sys_blks_per_plane:
|
|
.space 4
|
|
.type c_ftl_nand_planes_num, %object
|
|
.size c_ftl_nand_planes_num, 2
|
|
c_ftl_nand_planes_num:
|
|
.space 2
|
|
.space 2
|
|
.type c_ftl_nand_max_sys_blks, %object
|
|
.size c_ftl_nand_max_sys_blks, 4
|
|
c_ftl_nand_max_sys_blks:
|
|
.space 4
|
|
.type c_ftl_nand_data_blks_per_plane, %object
|
|
.size c_ftl_nand_data_blks_per_plane, 2
|
|
c_ftl_nand_data_blks_per_plane:
|
|
.space 2
|
|
.type c_ftl_nand_blk_pre_plane, %object
|
|
.size c_ftl_nand_blk_pre_plane, 2
|
|
c_ftl_nand_blk_pre_plane:
|
|
.space 2
|
|
.type c_ftl_nand_max_data_blks, %object
|
|
.size c_ftl_nand_max_data_blks, 4
|
|
c_ftl_nand_max_data_blks:
|
|
.space 4
|
|
.type c_ftl_nand_totle_phy_blks, %object
|
|
.size c_ftl_nand_totle_phy_blks, 4
|
|
c_ftl_nand_totle_phy_blks:
|
|
.space 4
|
|
.type c_ftl_nand_type, %object
|
|
.size c_ftl_nand_type, 2
|
|
c_ftl_nand_type:
|
|
.space 2
|
|
.type c_ftl_nand_die_num, %object
|
|
.size c_ftl_nand_die_num, 2
|
|
c_ftl_nand_die_num:
|
|
.space 2
|
|
.type c_ftl_nand_planes_per_die, %object
|
|
.size c_ftl_nand_planes_per_die, 2
|
|
c_ftl_nand_planes_per_die:
|
|
.space 2
|
|
.type c_ftl_nand_sec_pre_page, %object
|
|
.size c_ftl_nand_sec_pre_page, 2
|
|
c_ftl_nand_sec_pre_page:
|
|
.space 2
|
|
.type p_plane_order_table, %object
|
|
.size p_plane_order_table, 32
|
|
p_plane_order_table:
|
|
.space 32
|
|
.type c_mlc_erase_count_value, %object
|
|
.size c_mlc_erase_count_value, 2
|
|
c_mlc_erase_count_value:
|
|
.space 2
|
|
.type c_ftl_nand_ext_blk_pre_plane, %object
|
|
.size c_ftl_nand_ext_blk_pre_plane, 2
|
|
c_ftl_nand_ext_blk_pre_plane:
|
|
.space 2
|
|
.type c_ftl_vendor_part_size, %object
|
|
.size c_ftl_vendor_part_size, 2
|
|
c_ftl_vendor_part_size:
|
|
.space 2
|
|
.type c_ftl_nand_blks_per_die, %object
|
|
.size c_ftl_nand_blks_per_die, 2
|
|
c_ftl_nand_blks_per_die:
|
|
.space 2
|
|
.type c_ftl_nand_blks_per_die_shift, %object
|
|
.size c_ftl_nand_blks_per_die_shift, 2
|
|
c_ftl_nand_blks_per_die_shift:
|
|
.space 2
|
|
.type c_ftl_nand_page_pre_blk, %object
|
|
.size c_ftl_nand_page_pre_blk, 2
|
|
c_ftl_nand_page_pre_blk:
|
|
.space 2
|
|
.type c_ftl_nand_page_pre_slc_blk, %object
|
|
.size c_ftl_nand_page_pre_slc_blk, 2
|
|
c_ftl_nand_page_pre_slc_blk:
|
|
.space 2
|
|
.type c_ftl_nand_page_pre_super_blk, %object
|
|
.size c_ftl_nand_page_pre_super_blk, 2
|
|
c_ftl_nand_page_pre_super_blk:
|
|
.space 2
|
|
.type c_ftl_nand_sec_pre_page_shift, %object
|
|
.size c_ftl_nand_sec_pre_page_shift, 2
|
|
c_ftl_nand_sec_pre_page_shift:
|
|
.space 2
|
|
.type c_ftl_nand_byte_pre_page, %object
|
|
.size c_ftl_nand_byte_pre_page, 2
|
|
c_ftl_nand_byte_pre_page:
|
|
.space 2
|
|
.type c_ftl_nand_byte_pre_oob, %object
|
|
.size c_ftl_nand_byte_pre_oob, 2
|
|
c_ftl_nand_byte_pre_oob:
|
|
.space 2
|
|
.type c_ftl_nand_reserved_blks, %object
|
|
.size c_ftl_nand_reserved_blks, 2
|
|
c_ftl_nand_reserved_blks:
|
|
.space 2
|
|
.type DeviceCapacity, %object
|
|
.size DeviceCapacity, 4
|
|
DeviceCapacity:
|
|
.space 4
|
|
.type c_ftl_nand_max_vendor_blks, %object
|
|
.size c_ftl_nand_max_vendor_blks, 2
|
|
c_ftl_nand_max_vendor_blks:
|
|
.space 2
|
|
.type c_ftl_nand_vendor_region_num, %object
|
|
.size c_ftl_nand_vendor_region_num, 2
|
|
c_ftl_nand_vendor_region_num:
|
|
.space 2
|
|
.type c_ftl_nand_map_blks_per_plane, %object
|
|
.size c_ftl_nand_map_blks_per_plane, 2
|
|
c_ftl_nand_map_blks_per_plane:
|
|
.space 2
|
|
.space 2
|
|
.type c_ftl_nand_max_map_blks, %object
|
|
.size c_ftl_nand_max_map_blks, 4
|
|
c_ftl_nand_max_map_blks:
|
|
.space 4
|
|
.type c_ftl_nand_init_sys_blks_per_plane, %object
|
|
.size c_ftl_nand_init_sys_blks_per_plane, 4
|
|
c_ftl_nand_init_sys_blks_per_plane:
|
|
.space 4
|
|
.type c_ftl_nand_map_region_num, %object
|
|
.size c_ftl_nand_map_region_num, 2
|
|
c_ftl_nand_map_region_num:
|
|
.space 2
|
|
.type c_ftl_nand_l2pmap_ram_region_num, %object
|
|
.size c_ftl_nand_l2pmap_ram_region_num, 2
|
|
c_ftl_nand_l2pmap_ram_region_num:
|
|
.space 2
|
|
.type g_MaxLbaSector, %object
|
|
.size g_MaxLbaSector, 4
|
|
g_MaxLbaSector:
|
|
.space 4
|
|
.type g_totle_vendor_block, %object
|
|
.size g_totle_vendor_block, 2
|
|
g_totle_vendor_block:
|
|
.space 2
|
|
.space 2
|
|
.type p_vendor_block_table, %object
|
|
.size p_vendor_block_table, 4
|
|
p_vendor_block_table:
|
|
.space 4
|
|
.type gBbtInfo, %object
|
|
.size gBbtInfo, 60
|
|
gBbtInfo:
|
|
.space 60
|
|
.type gSysFreeQueue, %object
|
|
.size gSysFreeQueue, 2056
|
|
gSysFreeQueue:
|
|
.space 2056
|
|
.type g_sys_save_data, %object
|
|
.size g_sys_save_data, 48
|
|
g_sys_save_data:
|
|
.space 48
|
|
.type p_data_block_list_table, %object
|
|
.size p_data_block_list_table, 4
|
|
p_data_block_list_table:
|
|
.space 4
|
|
.type p_data_block_list_head, %object
|
|
.size p_data_block_list_head, 4
|
|
p_data_block_list_head:
|
|
.space 4
|
|
.type p_data_block_list_tail, %object
|
|
.size p_data_block_list_tail, 4
|
|
p_data_block_list_tail:
|
|
.space 4
|
|
.type g_num_data_superblocks, %object
|
|
.size g_num_data_superblocks, 2
|
|
g_num_data_superblocks:
|
|
.space 2
|
|
.space 2
|
|
.type p_free_data_block_list_head, %object
|
|
.size p_free_data_block_list_head, 4
|
|
p_free_data_block_list_head:
|
|
.space 4
|
|
.type p_erase_count_table, %object
|
|
.size p_erase_count_table, 4
|
|
p_erase_count_table:
|
|
.space 4
|
|
.type p_l2p_ram_map, %object
|
|
.size p_l2p_ram_map, 4
|
|
p_l2p_ram_map:
|
|
.space 4
|
|
.type g_l2p_last_update_region_id, %object
|
|
.size g_l2p_last_update_region_id, 2
|
|
g_l2p_last_update_region_id:
|
|
.space 2
|
|
.type FtlUpdateVaildLpnCount, %object
|
|
.size FtlUpdateVaildLpnCount, 2
|
|
FtlUpdateVaildLpnCount:
|
|
.space 2
|
|
.type g_VaildLpn, %object
|
|
.size g_VaildLpn, 4
|
|
g_VaildLpn:
|
|
.space 4
|
|
.type g_MaxLpn, %object
|
|
.size g_MaxLpn, 4
|
|
g_MaxLpn:
|
|
.space 4
|
|
.type g_totle_read_page_count, %object
|
|
.size g_totle_read_page_count, 4
|
|
g_totle_read_page_count:
|
|
.space 4
|
|
.type g_totle_discard_page_count, %object
|
|
.size g_totle_discard_page_count, 4
|
|
g_totle_discard_page_count:
|
|
.space 4
|
|
.type g_totle_write_page_count, %object
|
|
.size g_totle_write_page_count, 4
|
|
g_totle_write_page_count:
|
|
.space 4
|
|
.type g_totle_cache_write_count, %object
|
|
.size g_totle_cache_write_count, 4
|
|
g_totle_cache_write_count:
|
|
.space 4
|
|
.type g_totle_l2p_write_count, %object
|
|
.size g_totle_l2p_write_count, 4
|
|
g_totle_l2p_write_count:
|
|
.space 4
|
|
.type g_totle_gc_page_count, %object
|
|
.size g_totle_gc_page_count, 4
|
|
g_totle_gc_page_count:
|
|
.space 4
|
|
.type g_totle_write_sector, %object
|
|
.size g_totle_write_sector, 4
|
|
g_totle_write_sector:
|
|
.space 4
|
|
.type g_totle_read_sector, %object
|
|
.size g_totle_read_sector, 4
|
|
g_totle_read_sector:
|
|
.space 4
|
|
.type g_GlobalSysVersion, %object
|
|
.size g_GlobalSysVersion, 4
|
|
g_GlobalSysVersion:
|
|
.space 4
|
|
.type g_GlobalDataVersion, %object
|
|
.size g_GlobalDataVersion, 4
|
|
g_GlobalDataVersion:
|
|
.space 4
|
|
.type g_totle_mlc_erase_count, %object
|
|
.size g_totle_mlc_erase_count, 4
|
|
g_totle_mlc_erase_count:
|
|
.space 4
|
|
.type g_totle_slc_erase_count, %object
|
|
.size g_totle_slc_erase_count, 4
|
|
g_totle_slc_erase_count:
|
|
.space 4
|
|
.type g_totle_avg_erase_count, %object
|
|
.size g_totle_avg_erase_count, 4
|
|
g_totle_avg_erase_count:
|
|
.space 4
|
|
.type g_totle_sys_slc_erase_count, %object
|
|
.size g_totle_sys_slc_erase_count, 4
|
|
g_totle_sys_slc_erase_count:
|
|
.space 4
|
|
.type g_max_erase_count, %object
|
|
.size g_max_erase_count, 4
|
|
g_max_erase_count:
|
|
.space 4
|
|
.type g_min_erase_count, %object
|
|
.size g_min_erase_count, 4
|
|
g_min_erase_count:
|
|
.space 4
|
|
.type c_ftl_nand_data_op_blks_per_plane, %object
|
|
.size c_ftl_nand_data_op_blks_per_plane, 2
|
|
c_ftl_nand_data_op_blks_per_plane:
|
|
.space 2
|
|
.space 2
|
|
.type gSysInfo, %object
|
|
.size gSysInfo, 16
|
|
gSysInfo:
|
|
.space 16
|
|
.type g_sys_ext_data, %object
|
|
.size g_sys_ext_data, 512
|
|
g_sys_ext_data:
|
|
.space 512
|
|
.type g_gc_free_blk_threshold, %object
|
|
.size g_gc_free_blk_threshold, 2
|
|
g_gc_free_blk_threshold:
|
|
.space 2
|
|
.type g_gc_merge_free_blk_threshold, %object
|
|
.size g_gc_merge_free_blk_threshold, 2
|
|
g_gc_merge_free_blk_threshold:
|
|
.space 2
|
|
.type g_gc_skip_write_count, %object
|
|
.size g_gc_skip_write_count, 4
|
|
g_gc_skip_write_count:
|
|
.space 4
|
|
.type g_gc_blk_index, %object
|
|
.size g_gc_blk_index, 2
|
|
g_gc_blk_index:
|
|
.space 2
|
|
.space 2
|
|
.type g_in_swl_replace, %object
|
|
.size g_in_swl_replace, 4
|
|
g_in_swl_replace:
|
|
.space 4
|
|
.type g_gc_num_req, %object
|
|
.size g_gc_num_req, 4
|
|
g_gc_num_req:
|
|
.space 4
|
|
.type gp_gc_page_buf_info, %object
|
|
.size gp_gc_page_buf_info, 4
|
|
gp_gc_page_buf_info:
|
|
.space 4
|
|
.type p_gc_data_buf, %object
|
|
.size p_gc_data_buf, 4
|
|
p_gc_data_buf:
|
|
.space 4
|
|
.type p_gc_spare_buf, %object
|
|
.size p_gc_spare_buf, 4
|
|
p_gc_spare_buf:
|
|
.space 4
|
|
.type req_gc, %object
|
|
.size req_gc, 4
|
|
req_gc:
|
|
.space 4
|
|
.type c_gc_page_buf_num, %object
|
|
.size c_gc_page_buf_num, 4
|
|
c_gc_page_buf_num:
|
|
.space 4
|
|
.type p_gc_blk_tbl, %object
|
|
.size p_gc_blk_tbl, 4
|
|
p_gc_blk_tbl:
|
|
.space 4
|
|
.type g_gc_blk_num, %object
|
|
.size g_gc_blk_num, 2
|
|
g_gc_blk_num:
|
|
.space 2
|
|
.space 2
|
|
.type p_gc_page_info, %object
|
|
.size p_gc_page_info, 4
|
|
p_gc_page_info:
|
|
.space 4
|
|
.type g_gc_page_offset, %object
|
|
.size g_gc_page_offset, 2
|
|
g_gc_page_offset:
|
|
.space 2
|
|
.type g_gc_bad_block_temp_num, %object
|
|
.size g_gc_bad_block_temp_num, 2
|
|
g_gc_bad_block_temp_num:
|
|
.space 2
|
|
.type g_gc_bad_block_temp_tbl, %object
|
|
.size g_gc_bad_block_temp_tbl, 34
|
|
g_gc_bad_block_temp_tbl:
|
|
.space 34
|
|
.type g_gc_bad_block_gc_index, %object
|
|
.size g_gc_bad_block_gc_index, 2
|
|
g_gc_bad_block_gc_index:
|
|
.space 2
|
|
.type g_nand_ops, %object
|
|
.size g_nand_ops, 24
|
|
g_nand_ops:
|
|
.space 24
|
|
.type req_erase, %object
|
|
.size req_erase, 4
|
|
req_erase:
|
|
.space 4
|
|
.type g_in_gc_progress, %object
|
|
.size g_in_gc_progress, 4
|
|
g_in_gc_progress:
|
|
.space 4
|
|
.type g_gc_head_data_block, %object
|
|
.size g_gc_head_data_block, 4
|
|
g_gc_head_data_block:
|
|
.space 4
|
|
.type g_gc_head_data_block_count, %object
|
|
.size g_gc_head_data_block_count, 4
|
|
g_gc_head_data_block_count:
|
|
.space 4
|
|
.type g_cur_erase_blk, %object
|
|
.size g_cur_erase_blk, 4
|
|
g_cur_erase_blk:
|
|
.space 4
|
|
.type req_read, %object
|
|
.size req_read, 4
|
|
req_read:
|
|
.space 4
|
|
.type req_gc_dst, %object
|
|
.size req_gc_dst, 4
|
|
req_gc_dst:
|
|
.space 4
|
|
.type req_prgm, %object
|
|
.size req_prgm, 4
|
|
req_prgm:
|
|
.space 4
|
|
.type p_sys_data_buf, %object
|
|
.size p_sys_data_buf, 4
|
|
p_sys_data_buf:
|
|
.space 4
|
|
.type p_sys_data_buf_1, %object
|
|
.size p_sys_data_buf_1, 4
|
|
p_sys_data_buf_1:
|
|
.space 4
|
|
.type p_vendor_data_buf, %object
|
|
.size p_vendor_data_buf, 4
|
|
p_vendor_data_buf:
|
|
.space 4
|
|
.type p_io_data_buf_0, %object
|
|
.size p_io_data_buf_0, 4
|
|
p_io_data_buf_0:
|
|
.space 4
|
|
.type p_io_data_buf_1, %object
|
|
.size p_io_data_buf_1, 4
|
|
p_io_data_buf_1:
|
|
.space 4
|
|
.type sftl_nand_check_buf, %object
|
|
.size sftl_nand_check_buf, 4
|
|
sftl_nand_check_buf:
|
|
.space 4
|
|
.type sftl_temp_buf, %object
|
|
.size sftl_temp_buf, 4
|
|
sftl_temp_buf:
|
|
.space 4
|
|
.type sftl_nand_check_spare_buf, %object
|
|
.size sftl_nand_check_spare_buf, 4
|
|
sftl_nand_check_spare_buf:
|
|
.space 4
|
|
.type p_sys_spare_buf, %object
|
|
.size p_sys_spare_buf, 4
|
|
p_sys_spare_buf:
|
|
.space 4
|
|
.type p_io_spare_buf, %object
|
|
.size p_io_spare_buf, 4
|
|
p_io_spare_buf:
|
|
.space 4
|
|
.type g_ect_tbl_info_size, %object
|
|
.size g_ect_tbl_info_size, 2
|
|
g_ect_tbl_info_size:
|
|
.space 2
|
|
.space 2
|
|
.type p_swl_mul_table, %object
|
|
.size p_swl_mul_table, 4
|
|
p_swl_mul_table:
|
|
.space 4
|
|
.type gp_ect_tbl_info, %object
|
|
.size gp_ect_tbl_info, 4
|
|
gp_ect_tbl_info:
|
|
.space 4
|
|
.type p_valid_page_count_check_table, %object
|
|
.size p_valid_page_count_check_table, 4
|
|
p_valid_page_count_check_table:
|
|
.space 4
|
|
.type p_map_block_table, %object
|
|
.size p_map_block_table, 4
|
|
p_map_block_table:
|
|
.space 4
|
|
.type p_map_block_valid_page_count, %object
|
|
.size p_map_block_valid_page_count, 4
|
|
p_map_block_valid_page_count:
|
|
.space 4
|
|
.type p_vendor_block_valid_page_count, %object
|
|
.size p_vendor_block_valid_page_count, 4
|
|
p_vendor_block_valid_page_count:
|
|
.space 4
|
|
.type p_vendor_block_ver_table, %object
|
|
.size p_vendor_block_ver_table, 4
|
|
p_vendor_block_ver_table:
|
|
.space 4
|
|
.type p_vendor_region_ppn_table, %object
|
|
.size p_vendor_region_ppn_table, 4
|
|
p_vendor_region_ppn_table:
|
|
.space 4
|
|
.type p_map_region_ppn_table, %object
|
|
.size p_map_region_ppn_table, 4
|
|
p_map_region_ppn_table:
|
|
.space 4
|
|
.type p_map_block_ver_table, %object
|
|
.size p_map_block_ver_table, 4
|
|
p_map_block_ver_table:
|
|
.space 4
|
|
.type p_l2p_map_buf, %object
|
|
.size p_l2p_map_buf, 4
|
|
p_l2p_map_buf:
|
|
.space 4
|
|
.type c_ftl_nand_bbm_buf_size, %object
|
|
.size c_ftl_nand_bbm_buf_size, 2
|
|
c_ftl_nand_bbm_buf_size:
|
|
.space 2
|
|
.space 2
|
|
.type gL2pMapInfo, %object
|
|
.size gL2pMapInfo, 44
|
|
gL2pMapInfo:
|
|
.space 44
|
|
.type g_totle_map_block, %object
|
|
.size g_totle_map_block, 2
|
|
g_totle_map_block:
|
|
.space 2
|
|
.type g_tmp_data_superblock_id, %object
|
|
.size g_tmp_data_superblock_id, 2
|
|
g_tmp_data_superblock_id:
|
|
.space 2
|
|
.type g_totle_swl_count, %object
|
|
.size g_totle_swl_count, 4
|
|
g_totle_swl_count:
|
|
.space 4
|
|
.type ftl_gc_temp_power_lost_recovery_flag, %object
|
|
.size ftl_gc_temp_power_lost_recovery_flag, 4
|
|
ftl_gc_temp_power_lost_recovery_flag:
|
|
.space 4
|
|
.type g_recovery_page_min_ver, %object
|
|
.size g_recovery_page_min_ver, 4
|
|
g_recovery_page_min_ver:
|
|
.space 4
|
|
.type req_sys, %object
|
|
.size req_sys, 20
|
|
req_sys:
|
|
.space 20
|
|
.type g_power_lost_recovery_flag, %object
|
|
.size g_power_lost_recovery_flag, 2
|
|
g_power_lost_recovery_flag:
|
|
.space 2
|
|
.space 2
|
|
.type g_recovery_page_num, %object
|
|
.size g_recovery_page_num, 4
|
|
g_recovery_page_num:
|
|
.space 4
|
|
.type g_recovery_ppa_tbl, %object
|
|
.size g_recovery_ppa_tbl, 128
|
|
g_recovery_ppa_tbl:
|
|
.space 128
|
|
.type gVendorBlkInfo, %object
|
|
.size gVendorBlkInfo, 44
|
|
gVendorBlkInfo:
|
|
.space 44
|
|
.type g_ect_tbl_power_up_flush, %object
|
|
.size g_ect_tbl_power_up_flush, 2
|
|
g_ect_tbl_power_up_flush:
|
|
.space 2
|
|
.space 2
|
|
.type gc_discard_updated, %object
|
|
.size gc_discard_updated, 4
|
|
gc_discard_updated:
|
|
.space 4
|
|
.type gc_ink_free_return_value, %object
|
|
.size gc_ink_free_return_value, 2
|
|
gc_ink_free_return_value:
|
|
.space 2
|
|
.type g_gc_cur_blk_valid_pages, %object
|
|
.size g_gc_cur_blk_valid_pages, 2
|
|
g_gc_cur_blk_valid_pages:
|
|
.space 2
|
|
.type g_gc_cur_blk_max_valid_pages, %object
|
|
.size g_gc_cur_blk_max_valid_pages, 2
|
|
g_gc_cur_blk_max_valid_pages:
|
|
.space 2
|
|
.space 2
|
|
.type g_ftl_nand_free_count, %object
|
|
.size g_ftl_nand_free_count, 4
|
|
g_ftl_nand_free_count:
|
|
.space 4
|
|
.type g_MaxLbn, %object
|
|
.size g_MaxLbn, 4
|
|
g_MaxLbn:
|
|
.space 4
|
|
.type idb_need_write_back, %object
|
|
.size idb_need_write_back, 4
|
|
idb_need_write_back:
|
|
.space 4
|
|
.type idb_buf, %object
|
|
.size idb_buf, 4
|
|
idb_buf:
|
|
.space 4
|
|
.type gp_flash_check_buf, %object
|
|
.size gp_flash_check_buf, 4
|
|
gp_flash_check_buf:
|
|
.space 4
|
|
.type _flash_read, %object
|
|
.size _flash_read, 4
|
|
_flash_read:
|
|
.space 4
|
|
.type _flash_write, %object
|
|
.size _flash_write, 4
|
|
_flash_write:
|
|
.space 4
|
|
.type g_vendor, %object
|
|
.size g_vendor, 4
|
|
g_vendor:
|
|
.space 4
|
|
.type check_vpc_table, %object
|
|
.size check_vpc_table, 16384
|
|
check_vpc_table:
|
|
.space 16384
|
|
.type gp_last_act_superblock, %object
|
|
.size gp_last_act_superblock, 4
|
|
gp_last_act_superblock:
|
|
.space 4
|
|
.ident "GCC: (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621"
|
|
.section .note.GNU-stack,"",%progbits
|