You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
14607 lines
257 KiB
14607 lines
257 KiB
/*
|
|
* Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0
|
|
* date: 2022-08-15
|
|
*/
|
|
.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, 0
|
|
.eabi_attribute 18, 2
|
|
.file "rk_sftl.c"
|
|
.global __aeabi_uidiv
|
|
.section .text.l2p_addr_tran.isra.0,"ax",%progbits
|
|
.align 1
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type l2p_addr_tran.isra.0, %function
|
|
l2p_addr_tran.isra.0:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, r8, r10, lr}
|
|
lsrs r7, r0, #10
|
|
ldr r3, .L3
|
|
mov r8, r1
|
|
mov r6, r0
|
|
uxth r0, r7
|
|
mov r10, r2
|
|
uxth r7, r7
|
|
ldrh r4, [r3, #8]
|
|
ubfx r6, r6, #0, #10
|
|
ldrh r5, [r3, #10]
|
|
ldrh r3, [r3, #14]
|
|
cmp r3, #4
|
|
itt eq
|
|
lsreq r4, r4, #1
|
|
lsleq r5, r5, #1
|
|
mov r1, r4
|
|
it eq
|
|
uxtheq r5, r5
|
|
bl __aeabi_uidiv
|
|
uxth r0, r0
|
|
mls r4, r0, r4, r7
|
|
mla r4, r5, r4, r6
|
|
str r4, [r8]
|
|
str r0, [r10]
|
|
movs r0, #0
|
|
pop {r3, r4, r5, r6, r7, r8, r10, pc}
|
|
.L4:
|
|
.align 2
|
|
.L3:
|
|
.word .LANCHOR0
|
|
.size l2p_addr_tran.isra.0, .-l2p_addr_tran.isra.0
|
|
.section .text.Ftl_log2,"ax",%progbits
|
|
.align 1
|
|
.global Ftl_log2
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type Ftl_log2, %function
|
|
Ftl_log2:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
movs r1, #0
|
|
movs r2, #1
|
|
.L6:
|
|
cmp r2, r0
|
|
uxth r3, r1
|
|
add r1, r1, #1
|
|
bls .L7
|
|
subs r0, r3, #1
|
|
uxth r0, r0
|
|
bx lr
|
|
.L7:
|
|
lsls r2, r2, #1
|
|
b .L6
|
|
.size Ftl_log2, .-Ftl_log2
|
|
.section .text.FtlPrintInfo,"ax",%progbits
|
|
.align 1
|
|
.global FtlPrintInfo
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlPrintInfo, %function
|
|
FtlPrintInfo:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
bx lr
|
|
.size FtlPrintInfo, .-FtlPrintInfo
|
|
.section .text.FtlSysBlkNumInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlSysBlkNumInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlSysBlkNumInit, %function
|
|
FtlSysBlkNumInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L10
|
|
cmp r0, #24
|
|
it cc
|
|
movcc r0, #24
|
|
ldr r2, .L10+4
|
|
str r0, [r3]
|
|
ldr r3, .L10+8
|
|
ldrh r3, [r3]
|
|
muls r3, r0, r3
|
|
str r3, [r2]
|
|
ldr r2, .L10+12
|
|
ldrh r2, [r2]
|
|
subs r0, r2, r0
|
|
ldr r2, .L10+16
|
|
strh r0, [r2] @ movhi
|
|
movs r0, #0
|
|
ldr r2, .L10+20
|
|
ldr r2, [r2]
|
|
subs r3, r2, r3
|
|
ldr r2, .L10+24
|
|
str r3, [r2]
|
|
bx lr
|
|
.L11:
|
|
.align 2
|
|
.L10:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR3
|
|
.word .LANCHOR2
|
|
.word .LANCHOR5
|
|
.word .LANCHOR4
|
|
.word .LANCHOR7
|
|
.word .LANCHOR6
|
|
.size FtlSysBlkNumInit, .-FtlSysBlkNumInit
|
|
.global __aeabi_idiv
|
|
.section .text.FtlConstantsInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlConstantsInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlConstantsInit, %function
|
|
FtlConstantsInit:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r3, r0
|
|
ldrh r4, [r0]
|
|
ldr r2, .L23
|
|
ldrh r5, [r0, #2]
|
|
ldrh r7, [r3, #14]
|
|
strh r4, [r2] @ movhi
|
|
ldr r2, .L23+4
|
|
ldrh ip, [r0, #4]
|
|
cmp r7, #4
|
|
ldr r0, .L23+8
|
|
strh r5, [r2] @ movhi
|
|
ldr r1, .L23+12
|
|
ldrh r2, [r3, #6]
|
|
ldr r6, .L23+16
|
|
strh ip, [r0] @ movhi
|
|
strh r2, [r1] @ movhi
|
|
strh r7, [r6] @ movhi
|
|
bne .L13
|
|
lsrs r2, r2, #1
|
|
strh r2, [r1] @ movhi
|
|
movs r2, #8
|
|
strh r2, [r6] @ movhi
|
|
.L14:
|
|
ldr r7, .L23+20
|
|
movs r2, #0
|
|
.L15:
|
|
strb r2, [r2, r7]
|
|
adds r2, r2, #1
|
|
cmp r2, #32
|
|
bne .L15
|
|
ldr r2, .L23+24
|
|
cmp r4, #1
|
|
mov r7, #5
|
|
ldrh r0, [r0]
|
|
mov ip, #0
|
|
str r3, [sp, #4]
|
|
strh r7, [r2] @ movhi
|
|
it eq
|
|
strheq r4, [r2] @ movhi
|
|
mov r4, #640
|
|
ldr r2, .L23+28
|
|
smulbb r5, r5, r0
|
|
ldr r7, .L23+32
|
|
strh r4, [r2] @ movhi
|
|
uxth r5, r5
|
|
ldrh r4, [r1]
|
|
ldr r2, .L23+36
|
|
strh ip, [r7] @ movhi
|
|
ldr r7, .L23+40
|
|
smulbb r0, r0, r4
|
|
strh r5, [r2] @ movhi
|
|
ldr r2, .L23+44
|
|
uxth r0, r0
|
|
strh r0, [r2] @ movhi
|
|
bl Ftl_log2
|
|
ldr r3, [sp, #4]
|
|
ldr r2, .L23+48
|
|
ldrh fp, [r6]
|
|
ldrh r8, [r3, #12]
|
|
strh r0, [r2] @ movhi
|
|
ldr r2, .L23+52
|
|
mov r0, fp
|
|
strh r8, [r7] @ movhi
|
|
smulbb r1, r5, r8
|
|
ldr r6, .L23+56
|
|
strh r8, [r2] @ movhi
|
|
ldr r2, .L23+60
|
|
strh r1, [r2] @ movhi
|
|
bl Ftl_log2
|
|
lsl r2, fp, #9
|
|
ldr r1, .L23+64
|
|
ldr r3, [sp, #4]
|
|
mov r10, r0
|
|
uxth r2, r2
|
|
strh r0, [r6] @ movhi
|
|
mov r0, #5120
|
|
strh r2, [r1] @ movhi
|
|
lsrs r2, r2, #8
|
|
ldr r1, .L23+68
|
|
strh r2, [r1] @ movhi
|
|
mul r1, r8, fp
|
|
ldrh r2, [r3, #20]
|
|
ldr r3, .L23+72
|
|
strh r2, [r3] @ movhi
|
|
mul r3, r4, r5
|
|
ldr r2, .L23+76
|
|
lsls r4, r4, #6
|
|
str r3, [r2]
|
|
mul r3, fp, r3
|
|
ldr r2, .L23+80
|
|
mul r3, r8, r3
|
|
ldr r8, .L23+116
|
|
asrs r3, r3, #11
|
|
str r3, [r2]
|
|
bl __aeabi_idiv
|
|
uxth r0, r0
|
|
ldr r2, .L23+84
|
|
mov r1, r5
|
|
cmp r0, #4
|
|
itet ls
|
|
movls r3, #4
|
|
strhhi r0, [r8] @ movhi
|
|
strhls r3, [r8] @ movhi
|
|
mov r3, #640
|
|
asr r3, r3, r10
|
|
add r10, r10, #9
|
|
asr r4, r4, r10
|
|
ldr r10, .L23+120
|
|
adds r3, r3, #2
|
|
ldrh r0, [r8]
|
|
strh r3, [r2] @ movhi
|
|
ldr r3, .L23+88
|
|
strh r4, [r3] @ movhi
|
|
uxth r4, r4
|
|
mul r3, r5, r4
|
|
adds r4, r4, #8
|
|
str r3, [r10]
|
|
bl __aeabi_uidiv
|
|
uxtah r0, r4, r0
|
|
ldr r4, .L23+92
|
|
cmp r5, #1
|
|
it eq
|
|
addeq r0, r0, #4
|
|
str r0, [r4]
|
|
ldrh r0, [r4]
|
|
bl FtlSysBlkNumInit
|
|
ldr r2, [r4]
|
|
movs r0, #0
|
|
ldr r3, .L23+96
|
|
str r2, [r3]
|
|
ldr r3, .L23+100
|
|
ldr r2, [r3]
|
|
ldrh r3, [r7]
|
|
lsls r2, r2, #2
|
|
muls r3, r2, r3
|
|
ldrh r2, [r6]
|
|
adds r2, r2, #9
|
|
lsrs r3, r3, r2
|
|
ldr r2, .L23+104
|
|
adds r3, r3, #2
|
|
strh r3, [r2] @ movhi
|
|
movs r2, #32
|
|
ldr r3, .L23+108
|
|
strh r2, [r3] @ movhi
|
|
ldr r3, .L23+112
|
|
str r0, [r3]
|
|
ldrh r3, [r8]
|
|
adds r3, r3, #3
|
|
strh r3, [r8] @ movhi
|
|
ldr r3, [r10]
|
|
adds r3, r3, #3
|
|
str r3, [r10]
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L13:
|
|
cmp r7, #8
|
|
bne .L14
|
|
cmp ip, #1
|
|
itttt eq
|
|
lsreq r2, r2, #1
|
|
strheq r2, [r1] @ movhi
|
|
moveq r2, #2
|
|
strheq r2, [r0] @ movhi
|
|
b .L14
|
|
.L24:
|
|
.align 2
|
|
.L23:
|
|
.word .LANCHOR8
|
|
.word .LANCHOR9
|
|
.word .LANCHOR10
|
|
.word .LANCHOR5
|
|
.word .LANCHOR11
|
|
.word .LANCHOR12
|
|
.word .LANCHOR13
|
|
.word .LANCHOR15
|
|
.word .LANCHOR14
|
|
.word .LANCHOR2
|
|
.word .LANCHOR18
|
|
.word .LANCHOR16
|
|
.word .LANCHOR17
|
|
.word .LANCHOR19
|
|
.word .LANCHOR21
|
|
.word .LANCHOR20
|
|
.word .LANCHOR22
|
|
.word .LANCHOR23
|
|
.word .LANCHOR24
|
|
.word .LANCHOR7
|
|
.word .LANCHOR25
|
|
.word .LANCHOR27
|
|
.word .LANCHOR28
|
|
.word .LANCHOR1
|
|
.word .LANCHOR30
|
|
.word .LANCHOR6
|
|
.word .LANCHOR31
|
|
.word .LANCHOR32
|
|
.word .LANCHOR33
|
|
.word .LANCHOR26
|
|
.word .LANCHOR29
|
|
.size FtlConstantsInit, .-FtlConstantsInit
|
|
.section .text.IsBlkInVendorPart,"ax",%progbits
|
|
.align 1
|
|
.global IsBlkInVendorPart
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type IsBlkInVendorPart, %function
|
|
IsBlkInVendorPart:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L32
|
|
ldrh r3, [r3]
|
|
cbz r3, .L31
|
|
ldr r3, .L32+4
|
|
ldr r2, .L32+8
|
|
ldr r3, [r3]
|
|
ldrh r2, [r2]
|
|
add r2, r3, r2, lsl #1
|
|
.L27:
|
|
cmp r3, r2
|
|
bne .L28
|
|
.L31:
|
|
movs r0, #0
|
|
bx lr
|
|
.L28:
|
|
ldrh r1, [r3], #2
|
|
cmp r0, r1
|
|
bne .L27
|
|
movs r0, #1
|
|
bx lr
|
|
.L33:
|
|
.align 2
|
|
.L32:
|
|
.word .LANCHOR34
|
|
.word .LANCHOR35
|
|
.word .LANCHOR26
|
|
.size IsBlkInVendorPart, .-IsBlkInVendorPart
|
|
.section .text.FtlCacheWriteBack,"ax",%progbits
|
|
.align 1
|
|
.global FtlCacheWriteBack
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlCacheWriteBack, %function
|
|
FtlCacheWriteBack:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
movs r0, #0
|
|
bx lr
|
|
.size FtlCacheWriteBack, .-FtlCacheWriteBack
|
|
.section .text.sftl_get_density,"ax",%progbits
|
|
.align 1
|
|
.global sftl_get_density
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type sftl_get_density, %function
|
|
sftl_get_density:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L36
|
|
ldr r0, [r3]
|
|
bx lr
|
|
.L37:
|
|
.align 2
|
|
.L36:
|
|
.word .LANCHOR33
|
|
.size sftl_get_density, .-sftl_get_density
|
|
.global __aeabi_uidivmod
|
|
.section .text.FtlBbmMapBadBlock,"ax",%progbits
|
|
.align 1
|
|
.global FtlBbmMapBadBlock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlBbmMapBadBlock, %function
|
|
FtlBbmMapBadBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L39
|
|
push {r0, r1, r2, r4, r5, r6, r7, lr}
|
|
mov r5, r0
|
|
ldrh r4, [r3]
|
|
mov r1, r4
|
|
bl __aeabi_uidiv
|
|
mov r1, r4
|
|
ldr r4, .L39+4
|
|
uxth r6, r0
|
|
mov r0, r5
|
|
bl __aeabi_uidivmod
|
|
add r2, r4, r6, lsl #2
|
|
uxth r3, r1
|
|
ldr r2, [r2, #28]
|
|
lsrs r1, r3, #5
|
|
and r7, r3, #31
|
|
movs r0, #1
|
|
lsls r0, r0, r7
|
|
ldr r7, [r2, r1, lsl #2]
|
|
orrs r0, r0, r7
|
|
str r0, [r2, r1, lsl #2]
|
|
mov r2, r6
|
|
str r0, [sp]
|
|
mov r1, r5
|
|
ldr r0, .L39+8
|
|
bl printf
|
|
ldrh r3, [r4, #6]
|
|
movs r0, #0
|
|
adds r3, r3, #1
|
|
strh r3, [r4, #6] @ movhi
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, pc}
|
|
.L40:
|
|
.align 2
|
|
.L39:
|
|
.word .LANCHOR16
|
|
.word .LANCHOR36
|
|
.word .LC0
|
|
.size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
|
|
.section .text.FtlBbmIsBadBlock,"ax",%progbits
|
|
.align 1
|
|
.global FtlBbmIsBadBlock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlBbmIsBadBlock, %function
|
|
FtlBbmIsBadBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L42
|
|
push {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldrh r5, [r3]
|
|
mov r1, r5
|
|
bl __aeabi_uidivmod
|
|
mov r0, r6
|
|
uxth r4, r1
|
|
mov r1, r5
|
|
bl __aeabi_uidiv
|
|
ldr r3, .L42+4
|
|
uxth r0, r0
|
|
lsrs r2, r4, #5
|
|
and r4, r4, #31
|
|
add r0, r3, r0, lsl #2
|
|
ldr r3, [r0, #28]
|
|
ldr r0, [r3, r2, lsl #2]
|
|
lsrs r0, r0, r4
|
|
and r0, r0, #1
|
|
pop {r4, r5, r6, pc}
|
|
.L43:
|
|
.align 2
|
|
.L42:
|
|
.word .LANCHOR16
|
|
.word .LANCHOR36
|
|
.size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
|
|
.section .text.FtlBbtInfoPrint,"ax",%progbits
|
|
.align 1
|
|
.global FtlBbtInfoPrint
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlBbtInfoPrint, %function
|
|
FtlBbtInfoPrint:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
bx lr
|
|
.size FtlBbtInfoPrint, .-FtlBbtInfoPrint
|
|
.section .text.V2P_block,"ax",%progbits
|
|
.align 1
|
|
.global V2P_block
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type V2P_block, %function
|
|
V2P_block:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
mov r5, r1
|
|
ldr r3, .L46
|
|
mov r7, r0
|
|
ldrh r6, [r3]
|
|
mov r1, r6
|
|
bl __aeabi_uidiv
|
|
ldr r3, .L46+4
|
|
smulbb r5, r6, r5
|
|
mov r1, r6
|
|
ldrh r4, [r3]
|
|
smulbb r4, r4, r0
|
|
mov r0, r7
|
|
bl __aeabi_uidivmod
|
|
adds r0, r5, r1
|
|
add r0, r0, r4
|
|
uxth r0, r0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.L47:
|
|
.align 2
|
|
.L46:
|
|
.word .LANCHOR10
|
|
.word .LANCHOR16
|
|
.size V2P_block, .-V2P_block
|
|
.section .text.P2V_plane,"ax",%progbits
|
|
.align 1
|
|
.global P2V_plane
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type P2V_plane, %function
|
|
P2V_plane:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L49
|
|
push {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldrh r5, [r3]
|
|
ldr r3, .L49+4
|
|
ldrh r1, [r3]
|
|
bl __aeabi_uidiv
|
|
smulbb r4, r0, r5
|
|
mov r1, r5
|
|
mov r0, r6
|
|
bl __aeabi_uidivmod
|
|
add r1, r1, r4
|
|
uxth r0, r1
|
|
pop {r4, r5, r6, pc}
|
|
.L50:
|
|
.align 2
|
|
.L49:
|
|
.word .LANCHOR10
|
|
.word .LANCHOR16
|
|
.size P2V_plane, .-P2V_plane
|
|
.section .text.P2V_block_in_plane,"ax",%progbits
|
|
.align 1
|
|
.global P2V_block_in_plane
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type P2V_block_in_plane, %function
|
|
P2V_block_in_plane:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, lr}
|
|
ldr r3, .L52
|
|
ldrh r1, [r3]
|
|
bl __aeabi_uidivmod
|
|
ldr r3, .L52+4
|
|
uxth r0, r1
|
|
ldrh r1, [r3]
|
|
bl __aeabi_uidiv
|
|
uxth r0, r0
|
|
pop {r3, pc}
|
|
.L53:
|
|
.align 2
|
|
.L52:
|
|
.word .LANCHOR16
|
|
.word .LANCHOR10
|
|
.size P2V_block_in_plane, .-P2V_block_in_plane
|
|
.section .text.ftl_cmp_data_ver,"ax",%progbits
|
|
.align 1
|
|
.global ftl_cmp_data_ver
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_cmp_data_ver, %function
|
|
ftl_cmp_data_ver:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
cmp r0, r1
|
|
bls .L55
|
|
subs r0, r0, r1
|
|
cmp r0, #-2147483648
|
|
ite hi
|
|
movhi r0, #0
|
|
movls r0, #1
|
|
bx lr
|
|
.L55:
|
|
subs r0, r1, r0
|
|
cmp r0, #-2147483648
|
|
ite ls
|
|
movls r0, #0
|
|
movhi r0, #1
|
|
bx lr
|
|
.size ftl_cmp_data_ver, .-ftl_cmp_data_ver
|
|
.section .text.FtlFreeSysBlkQueueEmpty,"ax",%progbits
|
|
.align 1
|
|
.global FtlFreeSysBlkQueueEmpty
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueEmpty, %function
|
|
FtlFreeSysBlkQueueEmpty:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L58
|
|
ldrh r0, [r3, #6]
|
|
clz r0, r0
|
|
lsrs r0, r0, #5
|
|
bx lr
|
|
.L59:
|
|
.align 2
|
|
.L58:
|
|
.word .LANCHOR37
|
|
.size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
|
|
.section .text.FtlFreeSysBlkQueueFull,"ax",%progbits
|
|
.align 1
|
|
.global FtlFreeSysBlkQueueFull
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueFull, %function
|
|
FtlFreeSysBlkQueueFull:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L61
|
|
ldrh r0, [r3, #6]
|
|
sub r3, r0, #1024
|
|
rsbs r0, r3, #0
|
|
adcs r0, r0, r3
|
|
bx lr
|
|
.L62:
|
|
.align 2
|
|
.L61:
|
|
.word .LANCHOR37
|
|
.size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
|
|
.section .text.FtlFreeSysBLkSort,"ax",%progbits
|
|
.align 1
|
|
.global FtlFreeSysBLkSort
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlFreeSysBLkSort, %function
|
|
FtlFreeSysBLkSort:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L72
|
|
push {r4, r5, r6, lr}
|
|
ldrh r2, [r3, #6]
|
|
cbz r2, .L63
|
|
ldr r2, .L72+4
|
|
movs r6, #0
|
|
ldrh r1, [r3, #2]
|
|
mov r5, r6
|
|
ldrh r4, [r2, #28]
|
|
ldrh r2, [r3, #4]
|
|
and r4, r4, #31
|
|
.L65:
|
|
uxth r0, r6
|
|
adds r6, r6, #1
|
|
cmp r4, r0
|
|
bgt .L66
|
|
cbz r5, .L63
|
|
strh r1, [r3, #2] @ movhi
|
|
strh r2, [r3, #4] @ movhi
|
|
.L63:
|
|
pop {r4, r5, r6, pc}
|
|
.L66:
|
|
adds r0, r1, #4
|
|
adds r1, r1, #1
|
|
ldrh r5, [r3, r0, lsl #1]
|
|
adds r0, r2, #4
|
|
ubfx r1, r1, #0, #10
|
|
strh r5, [r3, r0, lsl #1] @ movhi
|
|
movs r5, #1
|
|
add r2, r2, r5
|
|
ubfx r2, r2, #0, #10
|
|
b .L65
|
|
.L73:
|
|
.align 2
|
|
.L72:
|
|
.word .LANCHOR37
|
|
.word .LANCHOR38
|
|
.size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
|
|
.section .text.IsInFreeQueue,"ax",%progbits
|
|
.align 1
|
|
.global IsInFreeQueue
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type IsInFreeQueue, %function
|
|
IsInFreeQueue:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L80
|
|
push {r4, r5, lr}
|
|
ldrh r4, [r3, #6]
|
|
cmp r4, #1024
|
|
beq .L78
|
|
ldrh r5, [r3, #2]
|
|
movs r1, #0
|
|
.L76:
|
|
cmp r1, r4
|
|
bcc .L77
|
|
.L78:
|
|
movs r0, #0
|
|
pop {r4, r5, pc}
|
|
.L77:
|
|
adds r2, r1, r5
|
|
ubfx r2, r2, #0, #10
|
|
adds r2, r2, #4
|
|
ldrh r2, [r3, r2, lsl #1]
|
|
cmp r2, r0
|
|
beq .L79
|
|
adds r1, r1, #1
|
|
b .L76
|
|
.L79:
|
|
movs r0, #1
|
|
pop {r4, r5, pc}
|
|
.L81:
|
|
.align 2
|
|
.L80:
|
|
.word .LANCHOR37
|
|
.size IsInFreeQueue, .-IsInFreeQueue
|
|
.section .text.insert_data_list,"ax",%progbits
|
|
.align 1
|
|
.global insert_data_list
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type insert_data_list, %function
|
|
insert_data_list:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L97
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
ldrh r8, [r3]
|
|
cmp r8, r0
|
|
bls .L84
|
|
ldr r3, .L97+4
|
|
movs r5, #6
|
|
muls r5, r0, r5
|
|
ldr r4, [r3]
|
|
movw r3, #65535
|
|
adds r1, r4, r5
|
|
strh r3, [r1, #2] @ movhi
|
|
strh r3, [r4, r5] @ movhi
|
|
ldr r3, .L97+8
|
|
ldr ip, [r3]
|
|
cmp ip, #0
|
|
bne .L85
|
|
.L96:
|
|
str r1, [r3]
|
|
.L84:
|
|
movs r0, #0
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L85:
|
|
ldr r3, .L97+12
|
|
ldrh r6, [r1, #4]
|
|
ldr r10, [r3]
|
|
ldrh r3, [r10, r0, lsl #1]
|
|
cbz r6, .L92
|
|
muls r6, r3, r6
|
|
.L86:
|
|
sub r2, ip, r4
|
|
movs r7, #0
|
|
asrs r3, r2, #1
|
|
ldr r2, .L97+16
|
|
muls r2, r3, r2
|
|
mov r3, ip
|
|
uxth r2, r2
|
|
.L90:
|
|
adds r7, r7, #1
|
|
uxth r7, r7
|
|
cmp r8, r7
|
|
bcc .L84
|
|
cmp r2, r0
|
|
beq .L84
|
|
ldrh lr, [r3, #4]
|
|
cmp lr, #0
|
|
beq .L88
|
|
ldrh fp, [r10, r2, lsl #1]
|
|
mul lr, lr, fp
|
|
cmp r6, lr
|
|
bls .L88
|
|
ldrh lr, [r3]
|
|
movw fp, #65535
|
|
cmp lr, fp
|
|
bne .L89
|
|
strh r2, [r1, #2] @ movhi
|
|
strh r0, [r3] @ movhi
|
|
ldr r3, .L97+20
|
|
b .L96
|
|
.L92:
|
|
mov r6, #-1
|
|
b .L86
|
|
.L89:
|
|
movs r3, #6
|
|
mov r2, lr
|
|
mla r3, r3, lr, r4
|
|
b .L90
|
|
.L88:
|
|
strh r2, [r4, r5] @ movhi
|
|
cmp r3, ip
|
|
ldrh r2, [r3, #2]
|
|
strh r2, [r1, #2] @ movhi
|
|
bne .L91
|
|
strh r0, [r3, #2] @ movhi
|
|
ldr r3, .L97+8
|
|
b .L96
|
|
.L91:
|
|
ldrh r1, [r3, #2]
|
|
movs r2, #6
|
|
muls r2, r1, r2
|
|
strh r0, [r4, r2] @ movhi
|
|
strh r0, [r3, #2] @ movhi
|
|
b .L84
|
|
.L98:
|
|
.align 2
|
|
.L97:
|
|
.word .LANCHOR4
|
|
.word .LANCHOR39
|
|
.word .LANCHOR40
|
|
.word .LANCHOR41
|
|
.word -1431655765
|
|
.word .LANCHOR42
|
|
.size insert_data_list, .-insert_data_list
|
|
.section .text.INSERT_DATA_LIST,"ax",%progbits
|
|
.align 1
|
|
.global INSERT_DATA_LIST
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type INSERT_DATA_LIST, %function
|
|
INSERT_DATA_LIST:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, lr}
|
|
bl insert_data_list
|
|
ldr r2, .L101
|
|
ldrh r3, [r2]
|
|
adds r3, r3, #1
|
|
uxth r3, r3
|
|
strh r3, [r2] @ movhi
|
|
ldr r2, .L101+4
|
|
ldrh r2, [r2]
|
|
cmp r2, r3
|
|
bcs .L99
|
|
movs r2, #214
|
|
ldr r1, .L101+8
|
|
ldr r0, .L101+12
|
|
pop {r3, lr}
|
|
b printf
|
|
.L99:
|
|
pop {r3, pc}
|
|
.L102:
|
|
.align 2
|
|
.L101:
|
|
.word .LANCHOR43
|
|
.word .LANCHOR4
|
|
.word .LANCHOR44
|
|
.word .LC1
|
|
.size INSERT_DATA_LIST, .-INSERT_DATA_LIST
|
|
.section .text.insert_free_list,"ax",%progbits
|
|
.align 1
|
|
.global insert_free_list
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type insert_free_list, %function
|
|
insert_free_list:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
movw r1, #65535
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
cmp r0, r1
|
|
beq .L104
|
|
ldr r3, .L110
|
|
mov r10, #6
|
|
mul r7, r10, r0
|
|
ldr r4, [r3]
|
|
ldr r3, .L110+4
|
|
adds r5, r4, r7
|
|
ldr r6, [r3]
|
|
mov lr, r3
|
|
strh r1, [r5, #2] @ movhi
|
|
strh r1, [r4, r7] @ movhi
|
|
cbnz r6, .L105
|
|
str r5, [r3]
|
|
.L104:
|
|
movs r0, #0
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L105:
|
|
ldr r3, .L110+8
|
|
subs r2, r6, r4
|
|
mov fp, r1
|
|
ldr ip, [r3]
|
|
asrs r3, r2, #1
|
|
ldr r2, .L110+12
|
|
ldrh r8, [ip, r0, lsl #1]
|
|
muls r2, r3, r2
|
|
mov r3, r6
|
|
uxth r2, r2
|
|
.L108:
|
|
ldrh r1, [ip, r2, lsl #1]
|
|
cmp r1, r8
|
|
bcs .L106
|
|
ldrh r1, [r3]
|
|
cmp r1, fp
|
|
bne .L107
|
|
strh r2, [r5, #2] @ movhi
|
|
strh r0, [r3] @ movhi
|
|
b .L104
|
|
.L107:
|
|
mla r3, r10, r1, r4
|
|
mov r2, r1
|
|
b .L108
|
|
.L106:
|
|
ldrh r1, [r3, #2]
|
|
cmp r3, r6
|
|
strh r1, [r5, #2] @ movhi
|
|
it ne
|
|
ldrhne r1, [r3, #2]
|
|
strh r2, [r4, r7] @ movhi
|
|
iteet ne
|
|
movne r2, #6
|
|
strheq r0, [r3, #2] @ movhi
|
|
streq r5, [lr]
|
|
mulne r2, r2, r1
|
|
itt ne
|
|
strhne r0, [r4, r2] @ movhi
|
|
strhne r0, [r3, #2] @ movhi
|
|
b .L104
|
|
.L111:
|
|
.align 2
|
|
.L110:
|
|
.word .LANCHOR39
|
|
.word .LANCHOR45
|
|
.word .LANCHOR46
|
|
.word -1431655765
|
|
.size insert_free_list, .-insert_free_list
|
|
.section .text.INSERT_FREE_LIST,"ax",%progbits
|
|
.align 1
|
|
.global INSERT_FREE_LIST
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type INSERT_FREE_LIST, %function
|
|
INSERT_FREE_LIST:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, lr}
|
|
bl insert_free_list
|
|
ldr r2, .L114
|
|
ldrh r3, [r2]
|
|
adds r3, r3, #1
|
|
uxth r3, r3
|
|
strh r3, [r2] @ movhi
|
|
ldr r2, .L114+4
|
|
ldrh r2, [r2]
|
|
cmp r2, r3
|
|
bcs .L112
|
|
movs r2, #207
|
|
ldr r1, .L114+8
|
|
ldr r0, .L114+12
|
|
pop {r3, lr}
|
|
b printf
|
|
.L112:
|
|
pop {r3, pc}
|
|
.L115:
|
|
.align 2
|
|
.L114:
|
|
.word .LANCHOR47
|
|
.word .LANCHOR4
|
|
.word .LANCHOR48
|
|
.word .LC1
|
|
.size INSERT_FREE_LIST, .-INSERT_FREE_LIST
|
|
.section .text.List_remove_node,"ax",%progbits
|
|
.align 1
|
|
.global List_remove_node
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type List_remove_node, %function
|
|
List_remove_node:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
movs r6, #6
|
|
ldr r5, .L122
|
|
muls r6, r1, r6
|
|
movw r3, #65535
|
|
mov r8, r0
|
|
ldr r7, [r5]
|
|
adds r4, r7, r6
|
|
ldrh r2, [r4, #2]
|
|
cmp r2, r3
|
|
bne .L117
|
|
ldr r3, [r0]
|
|
cmp r4, r3
|
|
beq .L117
|
|
mov r2, #372
|
|
ldr r1, .L122+4
|
|
ldr r0, .L122+8
|
|
bl printf
|
|
.L117:
|
|
ldr r3, [r8]
|
|
movw r1, #65535
|
|
cmp r4, r3
|
|
ldrh r3, [r7, r6]
|
|
bne .L118
|
|
cmp r3, r1
|
|
ittee ne
|
|
ldrne r0, [r5]
|
|
movne r2, #6
|
|
moveq r3, #0
|
|
streq r3, [r8]
|
|
ittt ne
|
|
mlane r3, r2, r3, r0
|
|
strne r3, [r8]
|
|
strhne r1, [r3, #2] @ movhi
|
|
.L120:
|
|
movw r3, #65535
|
|
movs r0, #0
|
|
strh r3, [r7, r6] @ movhi
|
|
strh r3, [r4, #2] @ movhi
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L118:
|
|
cmp r3, r1
|
|
ldrh r1, [r4, #2]
|
|
bne .L121
|
|
cmp r1, r3
|
|
beq .L120
|
|
movs r2, #6
|
|
ldr r0, [r5]
|
|
muls r1, r2, r1
|
|
strh r3, [r0, r1] @ movhi
|
|
b .L120
|
|
.L121:
|
|
ldr r0, [r5]
|
|
movs r2, #6
|
|
mla r5, r2, r3, r0
|
|
strh r1, [r5, #2] @ movhi
|
|
ldrh r1, [r4, #2]
|
|
muls r2, r1, r2
|
|
strh r3, [r0, r2] @ movhi
|
|
b .L120
|
|
.L123:
|
|
.align 2
|
|
.L122:
|
|
.word .LANCHOR39
|
|
.word .LANCHOR49
|
|
.word .LC1
|
|
.size List_remove_node, .-List_remove_node
|
|
.section .text.List_pop_index_node,"ax",%progbits
|
|
.align 1
|
|
.global List_pop_index_node
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type List_pop_index_node, %function
|
|
List_pop_index_node:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, [r0]
|
|
push {r4, r5, r6, lr}
|
|
cbz r3, .L130
|
|
ldr r2, .L131
|
|
movw r5, #65535
|
|
movs r6, #6
|
|
ldr r2, [r2]
|
|
.L126:
|
|
cbnz r1, .L127
|
|
.L129:
|
|
ldr r4, .L131+4
|
|
subs r3, r3, r2
|
|
asrs r3, r3, #1
|
|
muls r4, r3, r4
|
|
uxth r1, r4
|
|
bl List_remove_node
|
|
uxth r0, r4
|
|
pop {r4, r5, r6, pc}
|
|
.L127:
|
|
ldrh r4, [r3]
|
|
cmp r4, r5
|
|
beq .L129
|
|
subs r1, r1, #1
|
|
mla r3, r6, r4, r2
|
|
uxth r1, r1
|
|
b .L126
|
|
.L130:
|
|
movw r0, #65535
|
|
pop {r4, r5, r6, pc}
|
|
.L132:
|
|
.align 2
|
|
.L131:
|
|
.word .LANCHOR39
|
|
.word -1431655765
|
|
.size List_pop_index_node, .-List_pop_index_node
|
|
.section .text.List_pop_head_node,"ax",%progbits
|
|
.align 1
|
|
.global List_pop_head_node
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type List_pop_head_node, %function
|
|
List_pop_head_node:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
movs r1, #0
|
|
b List_pop_index_node
|
|
.size List_pop_head_node, .-List_pop_head_node
|
|
.section .text.List_get_gc_head_node,"ax",%progbits
|
|
.align 1
|
|
.global List_get_gc_head_node
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type List_get_gc_head_node, %function
|
|
List_get_gc_head_node:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L140
|
|
push {r4, lr}
|
|
ldr r3, [r3]
|
|
cbz r3, .L139
|
|
ldr r2, .L140+4
|
|
movs r4, #6
|
|
ldr r1, [r2]
|
|
movw r2, #65535
|
|
.L136:
|
|
cbz r0, .L137
|
|
ldrh r3, [r3]
|
|
cmp r3, r2
|
|
bne .L138
|
|
.L139:
|
|
movw r0, #65535
|
|
pop {r4, pc}
|
|
.L138:
|
|
subs r0, r0, #1
|
|
mla r3, r4, r3, r1
|
|
uxth r0, r0
|
|
b .L136
|
|
.L137:
|
|
ldr r0, .L140+8
|
|
subs r3, r3, r1
|
|
asrs r3, r3, #1
|
|
muls r3, r0, r3
|
|
uxth r0, r3
|
|
pop {r4, pc}
|
|
.L141:
|
|
.align 2
|
|
.L140:
|
|
.word .LANCHOR40
|
|
.word .LANCHOR39
|
|
.word -1431655765
|
|
.size List_get_gc_head_node, .-List_get_gc_head_node
|
|
.section .text.List_update_data_list,"ax",%progbits
|
|
.align 1
|
|
.global List_update_data_list
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type List_update_data_list, %function
|
|
List_update_data_list:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L153
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r4, r0
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
beq .L144
|
|
ldr r3, .L153+4
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
beq .L144
|
|
ldr r3, .L153+8
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
beq .L144
|
|
ldr r7, .L153+12
|
|
movs r6, #6
|
|
ldr r3, .L153+16
|
|
muls r6, r0, r6
|
|
ldr fp, [r7]
|
|
ldr r3, [r3]
|
|
add r10, fp, r6
|
|
cmp r10, r3
|
|
beq .L144
|
|
ldr r3, .L153+20
|
|
ldrh r5, [r10, #4]
|
|
ldr r2, [r3]
|
|
mov r8, r3
|
|
ldrh r2, [r2, r0, lsl #1]
|
|
cmp r5, #0
|
|
beq .L151
|
|
muls r5, r2, r5
|
|
.L146:
|
|
ldrh r3, [r10, #2]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
bne .L147
|
|
ldrh r2, [fp, r6]
|
|
cmp r2, r3
|
|
bne .L147
|
|
movw r2, #463
|
|
ldr r1, .L153+24
|
|
ldr r0, .L153+28
|
|
bl printf
|
|
.L147:
|
|
ldrh r3, [r10, #2]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
bne .L148
|
|
ldrh r2, [fp, r6]
|
|
cmp r2, r3
|
|
beq .L144
|
|
.L148:
|
|
movs r2, #6
|
|
muls r2, r3, r2
|
|
ldr r3, .L153+32
|
|
asrs r1, r2, #1
|
|
muls r3, r1, r3
|
|
ldr r1, [r8]
|
|
ldrh r0, [r1, r3, lsl #1]
|
|
ldr r1, [r7]
|
|
add r2, r2, r1
|
|
ldrh r3, [r2, #4]
|
|
cbz r3, .L152
|
|
muls r3, r0, r3
|
|
.L149:
|
|
cmp r5, r3
|
|
bcs .L144
|
|
ldr r5, .L153+36
|
|
mov r1, r4
|
|
ldr r0, .L153+16
|
|
bl List_remove_node
|
|
ldrh r3, [r5]
|
|
cbnz r3, .L150
|
|
mov r2, #474
|
|
ldr r1, .L153+24
|
|
ldr r0, .L153+28
|
|
bl printf
|
|
.L150:
|
|
ldrh r3, [r5]
|
|
mov r0, r4
|
|
subs r3, r3, #1
|
|
strh r3, [r5] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
.L144:
|
|
movs r0, #0
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L151:
|
|
mov r5, #-1
|
|
b .L146
|
|
.L152:
|
|
mov r3, #-1
|
|
b .L149
|
|
.L154:
|
|
.align 2
|
|
.L153:
|
|
.word .LANCHOR50
|
|
.word .LANCHOR51
|
|
.word .LANCHOR52
|
|
.word .LANCHOR39
|
|
.word .LANCHOR40
|
|
.word .LANCHOR41
|
|
.word .LANCHOR53
|
|
.word .LC1
|
|
.word -1431655765
|
|
.word .LANCHOR43
|
|
.size List_update_data_list, .-List_update_data_list
|
|
.section .text.select_l2p_ram_region,"ax",%progbits
|
|
.align 1
|
|
.global select_l2p_ram_region
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type select_l2p_ram_region, %function
|
|
select_l2p_ram_region:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
movs r1, #0
|
|
ldr r3, .L165
|
|
movs r0, #12
|
|
movw r5, #65535
|
|
ldrh r2, [r3]
|
|
ldr r3, .L165+4
|
|
ldr r3, [r3]
|
|
.L156:
|
|
uxth r4, r1
|
|
cmp r4, r2
|
|
bcc .L158
|
|
mov r4, r2
|
|
movs r1, #0
|
|
mov r6, #-2147483648
|
|
movs r7, #12
|
|
.L159:
|
|
uxth r5, r1
|
|
cmp r5, r2
|
|
bcc .L161
|
|
cmp r4, r2
|
|
bcc .L157
|
|
ldr r1, .L165+8
|
|
mov r4, r2
|
|
mov r0, #-1
|
|
ldrh r7, [r1]
|
|
movs r1, #0
|
|
.L162:
|
|
uxth r5, r1
|
|
cmp r5, r2
|
|
bcc .L164
|
|
cmp r4, r2
|
|
bcc .L157
|
|
mov r2, #796
|
|
ldr r1, .L165+12
|
|
ldr r0, .L165+16
|
|
bl printf
|
|
b .L157
|
|
.L158:
|
|
adds r1, r1, #1
|
|
mla r6, r0, r1, r3
|
|
ldrh r6, [r6, #-12]
|
|
cmp r6, r5
|
|
bne .L156
|
|
.L157:
|
|
mov r0, r4
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.L161:
|
|
mla r0, r7, r1, r3
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
blt .L160
|
|
cmp r6, r0
|
|
itt hi
|
|
movhi r6, r0
|
|
movhi r4, r5
|
|
.L160:
|
|
adds r1, r1, #1
|
|
b .L159
|
|
.L164:
|
|
ldr r6, [r3, #4]
|
|
cmp r0, r6
|
|
bls .L163
|
|
ldrh ip, [r3]
|
|
cmp ip, r7
|
|
itt ne
|
|
movne r0, r6
|
|
movne r4, r5
|
|
.L163:
|
|
adds r1, r1, #1
|
|
adds r3, r3, #12
|
|
b .L162
|
|
.L166:
|
|
.align 2
|
|
.L165:
|
|
.word .LANCHOR32
|
|
.word .LANCHOR54
|
|
.word .LANCHOR55
|
|
.word .LANCHOR56
|
|
.word .LC1
|
|
.size select_l2p_ram_region, .-select_l2p_ram_region
|
|
.section .text.FtlUpdateVaildLpn,"ax",%progbits
|
|
.align 1
|
|
.global FtlUpdateVaildLpn
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlUpdateVaildLpn, %function
|
|
FtlUpdateVaildLpn:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L177
|
|
push {r4, r5, r6, lr}
|
|
mov r1, r2
|
|
ldrh r3, [r2]
|
|
cmp r3, #4
|
|
bhi .L168
|
|
cbnz r0, .L168
|
|
adds r3, r3, #1
|
|
strh r3, [r2] @ movhi
|
|
pop {r4, r5, r6, pc}
|
|
.L168:
|
|
movs r3, #0
|
|
ldr r0, .L177+4
|
|
strh r3, [r1] @ movhi
|
|
movw r6, #65535
|
|
ldr r1, .L177+8
|
|
ldrh r4, [r0]
|
|
mov r0, r3
|
|
ldr r2, .L177+12
|
|
ldr r1, [r1]
|
|
str r3, [r2]
|
|
add r4, r1, r4, lsl #1
|
|
.L169:
|
|
cmp r1, r4
|
|
bne .L171
|
|
cbz r3, .L167
|
|
str r0, [r2]
|
|
.L167:
|
|
pop {r4, r5, r6, pc}
|
|
.L171:
|
|
ldrh r5, [r1], #2
|
|
cmp r5, r6
|
|
itt ne
|
|
addne r0, r0, r5
|
|
movne r3, #1
|
|
b .L169
|
|
.L178:
|
|
.align 2
|
|
.L177:
|
|
.word .LANCHOR57
|
|
.word .LANCHOR4
|
|
.word .LANCHOR41
|
|
.word .LANCHOR58
|
|
.size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
|
|
.section .text.ftl_sb_update_avl_pages,"ax",%progbits
|
|
.align 1
|
|
.global ftl_sb_update_avl_pages
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_sb_update_avl_pages, %function
|
|
ftl_sb_update_avl_pages:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
movs r3, #0
|
|
push {r4, r5, r6, lr}
|
|
strh r3, [r0, #4] @ movhi
|
|
movw r6, #65535
|
|
ldr r3, .L186
|
|
ldrh r4, [r3]
|
|
add r3, r0, r2, lsl #1
|
|
adds r3, r3, #14
|
|
.L180:
|
|
cmp r2, r4
|
|
bcc .L182
|
|
ldr r3, .L186+4
|
|
add r5, r0, #16
|
|
movw r6, #65535
|
|
ldrh r3, [r3]
|
|
subs r3, r3, #1
|
|
subs r1, r3, r1
|
|
movs r3, #0
|
|
uxth r1, r1
|
|
.L183:
|
|
uxth r2, r3
|
|
cmp r4, r2
|
|
bhi .L185
|
|
pop {r4, r5, r6, pc}
|
|
.L182:
|
|
ldrh r5, [r3, #2]!
|
|
adds r2, r2, #1
|
|
uxth r2, r2
|
|
cmp r5, r6
|
|
ittt ne
|
|
ldrhne r5, [r0, #4]
|
|
addne r5, r5, #1
|
|
strhne r5, [r0, #4] @ movhi
|
|
b .L180
|
|
.L185:
|
|
ldrh r2, [r5], #2
|
|
adds r3, r3, #1
|
|
cmp r2, r6
|
|
ittt ne
|
|
ldrhne r2, [r0, #4]
|
|
addne r2, r2, r1
|
|
strhne r2, [r0, #4] @ movhi
|
|
b .L183
|
|
.L187:
|
|
.align 2
|
|
.L186:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR18
|
|
.size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
|
|
.section .text.FtlSlcSuperblockCheck,"ax",%progbits
|
|
.align 1
|
|
.global FtlSlcSuperblockCheck
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlSlcSuperblockCheck, %function
|
|
FtlSlcSuperblockCheck:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldrh r3, [r0, #4]
|
|
push {r4, r5, lr}
|
|
cbz r3, .L188
|
|
ldrh r2, [r0]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L188
|
|
ldrb r2, [r0, #6] @ zero_extendqisi2
|
|
movs r5, #0
|
|
adds r2, r2, #8
|
|
ldrh r1, [r0, r2, lsl #1]
|
|
ldr r2, .L194
|
|
ldrh r4, [r2]
|
|
mov r2, r3
|
|
.L191:
|
|
cmp r1, r2
|
|
beq .L193
|
|
.L188:
|
|
pop {r4, r5, pc}
|
|
.L193:
|
|
ldrb r3, [r0, #6] @ zero_extendqisi2
|
|
adds r3, r3, #1
|
|
uxtb r3, r3
|
|
cmp r3, r4
|
|
strb r3, [r0, #6]
|
|
itttt eq
|
|
ldrheq r3, [r0, #2]
|
|
strbeq r5, [r0, #6]
|
|
addeq r3, r3, #1
|
|
strheq r3, [r0, #2] @ movhi
|
|
ldrb r3, [r0, #6] @ zero_extendqisi2
|
|
adds r3, r3, #8
|
|
ldrh r1, [r0, r3, lsl #1]
|
|
b .L191
|
|
.L195:
|
|
.align 2
|
|
.L194:
|
|
.word .LANCHOR2
|
|
.size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
|
|
.section .text.make_superblock,"ax",%progbits
|
|
.align 1
|
|
.global make_superblock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type make_superblock, %function
|
|
make_superblock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L202
|
|
ldrh r2, [r0]
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r4, r0
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bcc .L197
|
|
movw r2, #2157
|
|
ldr r1, .L202+4
|
|
ldr r0, .L202+8
|
|
bl printf
|
|
.L197:
|
|
ldr r3, .L202+12
|
|
add r6, r4, #16
|
|
ldr r10, .L202+24
|
|
movw r7, #65535
|
|
movs r5, #0
|
|
ldrh r8, [r3]
|
|
strh r5, [r4, #4] @ movhi
|
|
strb r5, [r4, #7]
|
|
.L198:
|
|
uxth r3, r5
|
|
ldrh r1, [r4]
|
|
cmp r8, r3
|
|
bhi .L200
|
|
ldr r2, .L202+16
|
|
movs r0, #0
|
|
ldrb r3, [r4, #7] @ zero_extendqisi2
|
|
ldrh r2, [r2]
|
|
smulbb r3, r3, r2
|
|
strh r3, [r4, #4] @ movhi
|
|
movs r3, #0
|
|
strb r3, [r4, #9]
|
|
ldr r3, .L202+20
|
|
ldr r3, [r3]
|
|
ldrh r2, [r3, r1, lsl #1]
|
|
movw r3, #10000
|
|
cmp r2, r3
|
|
itt hi
|
|
movhi r3, #1
|
|
strbhi r3, [r4, #9]
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L200:
|
|
ldrb r0, [r10, r5] @ zero_extendqisi2
|
|
bl V2P_block
|
|
strh r7, [r6] @ movhi
|
|
mov fp, r0
|
|
bl FtlBbmIsBadBlock
|
|
cbnz r0, .L199
|
|
strh fp, [r6] @ movhi
|
|
ldrb r3, [r4, #7] @ zero_extendqisi2
|
|
adds r3, r3, #1
|
|
strb r3, [r4, #7]
|
|
.L199:
|
|
adds r5, r5, #1
|
|
adds r6, r6, #2
|
|
b .L198
|
|
.L203:
|
|
.align 2
|
|
.L202:
|
|
.word .LANCHOR4
|
|
.word .LANCHOR59
|
|
.word .LC1
|
|
.word .LANCHOR2
|
|
.word .LANCHOR18
|
|
.word .LANCHOR46
|
|
.word .LANCHOR12
|
|
.size make_superblock, .-make_superblock
|
|
.section .text.update_multiplier_value,"ax",%progbits
|
|
.align 1
|
|
.global update_multiplier_value
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type update_multiplier_value, %function
|
|
update_multiplier_value:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, r8, r10, lr}
|
|
movs r5, #0
|
|
ldr r3, .L210
|
|
mov r6, r0
|
|
mov r4, r5
|
|
ldr r10, .L210+12
|
|
ldrh r7, [r3]
|
|
ldr r3, .L210+4
|
|
ldrh r8, [r3]
|
|
.L205:
|
|
uxth r3, r5
|
|
cmp r7, r3
|
|
bhi .L207
|
|
cbz r4, .L209
|
|
mov r1, r4
|
|
mov r0, #32768
|
|
bl __aeabi_idiv
|
|
.L208:
|
|
ldr r3, .L210+8
|
|
movs r2, #6
|
|
ldr r3, [r3]
|
|
mla r6, r2, r6, r3
|
|
strh r0, [r6, #4] @ movhi
|
|
movs r0, #0
|
|
pop {r3, r4, r5, r6, r7, r8, r10, pc}
|
|
.L207:
|
|
mov r1, r6
|
|
ldrb r0, [r10, r5] @ zero_extendqisi2
|
|
bl V2P_block
|
|
bl FtlBbmIsBadBlock
|
|
cbnz r0, .L206
|
|
add r4, r4, r8
|
|
uxth r4, r4
|
|
.L206:
|
|
adds r5, r5, #1
|
|
b .L205
|
|
.L209:
|
|
mov r0, r4
|
|
b .L208
|
|
.L211:
|
|
.align 2
|
|
.L210:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR18
|
|
.word .LANCHOR39
|
|
.word .LANCHOR12
|
|
.size update_multiplier_value, .-update_multiplier_value
|
|
.section .text.GetFreeBlockMinEraseCount,"ax",%progbits
|
|
.align 1
|
|
.global GetFreeBlockMinEraseCount
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type GetFreeBlockMinEraseCount, %function
|
|
GetFreeBlockMinEraseCount:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L215
|
|
ldr r0, [r3]
|
|
cbz r0, .L213
|
|
ldr r3, .L215+4
|
|
ldr r3, [r3]
|
|
subs r0, r0, r3
|
|
ldr r3, .L215+8
|
|
asrs r0, r0, #1
|
|
muls r0, r3, r0
|
|
ldr r3, .L215+12
|
|
ldr r3, [r3]
|
|
uxth r0, r0
|
|
ldrh r0, [r3, r0, lsl #1]
|
|
.L213:
|
|
bx lr
|
|
.L216:
|
|
.align 2
|
|
.L215:
|
|
.word .LANCHOR45
|
|
.word .LANCHOR39
|
|
.word -1431655765
|
|
.word .LANCHOR46
|
|
.size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
|
|
.section .text.GetFreeBlockMaxEraseCount,"ax",%progbits
|
|
.align 1
|
|
.global GetFreeBlockMaxEraseCount
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type GetFreeBlockMaxEraseCount, %function
|
|
GetFreeBlockMaxEraseCount:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L225
|
|
push {r4, r5, r6, lr}
|
|
ldr r3, [r3]
|
|
cbz r3, .L223
|
|
ldr r2, .L225+4
|
|
movs r5, #6
|
|
movw r6, #65535
|
|
ldrh r2, [r2]
|
|
rsb r2, r2, r2, lsl #3
|
|
asrs r2, r2, #3
|
|
cmp r0, r2
|
|
it gt
|
|
uxthgt r0, r2
|
|
ldr r2, .L225+8
|
|
ldr r1, [r2]
|
|
ldr r2, .L225+12
|
|
subs r3, r3, r1
|
|
asrs r3, r3, #1
|
|
muls r3, r2, r3
|
|
movs r2, #0
|
|
uxth r3, r3
|
|
.L220:
|
|
uxth r4, r2
|
|
cmp r0, r4
|
|
bls .L222
|
|
mul r4, r5, r3
|
|
adds r2, r2, #1
|
|
ldrh r4, [r1, r4]
|
|
cmp r4, r6
|
|
bne .L224
|
|
.L222:
|
|
ldr r2, .L225+16
|
|
ldr r2, [r2]
|
|
ldrh r0, [r2, r3, lsl #1]
|
|
pop {r4, r5, r6, pc}
|
|
.L224:
|
|
mov r3, r4
|
|
b .L220
|
|
.L223:
|
|
mov r0, r3
|
|
pop {r4, r5, r6, pc}
|
|
.L226:
|
|
.align 2
|
|
.L225:
|
|
.word .LANCHOR45
|
|
.word .LANCHOR47
|
|
.word .LANCHOR39
|
|
.word -1431655765
|
|
.word .LANCHOR46
|
|
.size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
|
|
.section .text.free_data_superblock,"ax",%progbits
|
|
.align 1
|
|
.global free_data_superblock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type free_data_superblock, %function
|
|
free_data_superblock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
movw r2, #65535
|
|
push {r3, lr}
|
|
cmp r0, r2
|
|
beq .L228
|
|
ldr r2, .L229
|
|
movs r1, #0
|
|
ldr r2, [r2]
|
|
strh r1, [r2, r0, lsl #1] @ movhi
|
|
bl INSERT_FREE_LIST
|
|
.L228:
|
|
movs r0, #0
|
|
pop {r3, pc}
|
|
.L230:
|
|
.align 2
|
|
.L229:
|
|
.word .LANCHOR41
|
|
.size free_data_superblock, .-free_data_superblock
|
|
.section .text.get_new_active_ppa,"ax",%progbits
|
|
.align 1
|
|
.global get_new_active_ppa
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type get_new_active_ppa, %function
|
|
get_new_active_ppa:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldrh r2, [r0]
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
movw r3, #65535
|
|
mov r4, r0
|
|
cmp r2, r3
|
|
bne .L232
|
|
movw r2, #2792
|
|
ldr r1, .L246
|
|
ldr r0, .L246+4
|
|
bl printf
|
|
.L232:
|
|
ldr r6, .L246+8
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [r6]
|
|
cmp r2, r3
|
|
bne .L233
|
|
movw r2, #2793
|
|
ldr r1, .L246
|
|
ldr r0, .L246+4
|
|
bl printf
|
|
.L233:
|
|
ldrh r3, [r4, #4]
|
|
cbnz r3, .L234
|
|
movw r2, #2794
|
|
ldr r1, .L246
|
|
ldr r0, .L246+4
|
|
bl printf
|
|
.L234:
|
|
ldrb r2, [r4, #6] @ zero_extendqisi2
|
|
movs r3, #0
|
|
strb r3, [r4, #10]
|
|
movw r5, #65535
|
|
adds r2, r2, #8
|
|
ldrh r0, [r4, r2, lsl #1]
|
|
ldr r2, .L246+12
|
|
ldrh r1, [r2]
|
|
mov r2, r3
|
|
.L235:
|
|
cmp r0, r5
|
|
beq .L237
|
|
ldrh r5, [r4, #2]
|
|
ldrh r6, [r6]
|
|
cmp r5, r6
|
|
bcs .L241
|
|
ldrh r2, [r4, #4]
|
|
orr r5, r5, r0, lsl #10
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
movw r0, #65535
|
|
subs r2, r2, #1
|
|
uxth r2, r2
|
|
strh r2, [r4, #4] @ movhi
|
|
.L240:
|
|
adds r3, r3, #1
|
|
uxtb r3, r3
|
|
cmp r1, r3
|
|
itttt eq
|
|
ldrheq r3, [r4, #2]
|
|
addeq r3, r3, #1
|
|
strheq r3, [r4, #2] @ movhi
|
|
moveq r3, #0
|
|
add r7, r3, #8
|
|
ldrh r7, [r4, r7, lsl #1]
|
|
cmp r7, r0
|
|
beq .L240
|
|
strb r3, [r4, #6]
|
|
ldrh r3, [r4, #2]
|
|
cmp r3, r6
|
|
bne .L231
|
|
cbz r2, .L231
|
|
movw r2, #2817
|
|
ldr r1, .L246
|
|
ldr r0, .L246+4
|
|
bl printf
|
|
.L231:
|
|
mov r0, r5
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.L237:
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
adds r3, r3, #1
|
|
uxtb r3, r3
|
|
cmp r3, r1
|
|
strb r3, [r4, #6]
|
|
itttt eq
|
|
ldrheq r3, [r4, #2]
|
|
strbeq r2, [r4, #6]
|
|
addeq r3, r3, #1
|
|
strheq r3, [r4, #2] @ movhi
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
adds r3, r3, #8
|
|
ldrh r0, [r4, r3, lsl #1]
|
|
b .L235
|
|
.L241:
|
|
movw r5, #65535
|
|
b .L231
|
|
.L247:
|
|
.align 2
|
|
.L246:
|
|
.word .LANCHOR60
|
|
.word .LC1
|
|
.word .LANCHOR18
|
|
.word .LANCHOR2
|
|
.size get_new_active_ppa, .-get_new_active_ppa
|
|
.section .text.FtlGcBufInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcBufInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcBufInit, %function
|
|
FtlGcBufInit:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r3, #0
|
|
ldr r1, .L253
|
|
mov fp, #1
|
|
ldr r2, .L253+4
|
|
ldr r5, [r1]
|
|
ldr r1, .L253+8
|
|
str r3, [r2]
|
|
ldr r2, .L253+12
|
|
mov r0, r5
|
|
ldr r1, [r1]
|
|
ldrh r2, [r2]
|
|
str r1, [sp, #4]
|
|
ldr r1, .L253+16
|
|
ldrh r1, [r1]
|
|
str r1, [sp]
|
|
ldr r1, .L253+20
|
|
ldr r10, [r1]
|
|
ldr r1, .L253+24
|
|
ldrh r7, [r1]
|
|
ldr r1, .L253+28
|
|
ldr r4, [r1]
|
|
movs r1, #12
|
|
mla r1, r2, r1, r1
|
|
adds r4, r4, #8
|
|
add r8, r5, r1
|
|
mov r1, r3
|
|
.L249:
|
|
adds r0, r0, #12
|
|
ldr r6, [sp]
|
|
cmp r0, r8
|
|
add ip, r3, r7
|
|
add r4, r4, #20
|
|
add lr, r1, r6
|
|
bne .L250
|
|
ldr r3, .L253+32
|
|
mov lr, #12
|
|
mov r8, #0
|
|
ldr r0, [r3]
|
|
ldr r3, .L253+8
|
|
ldr r4, [r3]
|
|
ldr r3, .L253+20
|
|
ldr ip, [r3]
|
|
.L251:
|
|
cmp r2, r0
|
|
bcc .L252
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L250:
|
|
bic r1, r1, #3
|
|
bic r3, r3, #3
|
|
mov r6, r1
|
|
ldr r1, [sp, #4]
|
|
add r3, r3, r10
|
|
str fp, [r0, #-4]
|
|
str r3, [r0, #-8]
|
|
add r6, r6, r1
|
|
mov r1, lr
|
|
str r6, [r0, #-12]
|
|
str r3, [r4, #-16]
|
|
mov r3, ip
|
|
str r6, [r4, #-20]
|
|
b .L249
|
|
.L252:
|
|
ldr r3, [sp]
|
|
mul r10, lr, r2
|
|
muls r3, r2, r3
|
|
add r1, r5, r10
|
|
str r8, [r1, #8]
|
|
bic r3, r3, #3
|
|
add r3, r3, r4
|
|
str r3, [r5, r10]
|
|
mul r3, r2, r7
|
|
adds r2, r2, #1
|
|
uxth r2, r2
|
|
bic r3, r3, #3
|
|
add r3, r3, ip
|
|
str r3, [r1, #4]
|
|
b .L251
|
|
.L254:
|
|
.align 2
|
|
.L253:
|
|
.word .LANCHOR62
|
|
.word .LANCHOR61
|
|
.word .LANCHOR63
|
|
.word .LANCHOR2
|
|
.word .LANCHOR22
|
|
.word .LANCHOR64
|
|
.word .LANCHOR23
|
|
.word .LANCHOR65
|
|
.word .LANCHOR66
|
|
.size FtlGcBufInit, .-FtlGcBufInit
|
|
.section .text.FtlGcBufFree,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcBufFree
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcBufFree, %function
|
|
FtlGcBufFree:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L262
|
|
mov ip, #12
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r4, #0
|
|
mov fp, #20
|
|
mov lr, r4
|
|
ldr r7, [r3]
|
|
ldr r3, .L262+4
|
|
ldr r5, [r3]
|
|
.L256:
|
|
uxth r3, r4
|
|
cmp r1, r3
|
|
bls .L255
|
|
mla r8, fp, r3, r0
|
|
movs r2, #0
|
|
.L257:
|
|
uxth r3, r2
|
|
cmp r7, r3
|
|
bls .L258
|
|
mul r3, ip, r3
|
|
ldr r6, [r8, #8]
|
|
adds r2, r2, #1
|
|
add r10, r5, r3
|
|
ldr r3, [r5, r3]
|
|
cmp r3, r6
|
|
bne .L257
|
|
str lr, [r10, #8]
|
|
.L258:
|
|
adds r4, r4, #1
|
|
b .L256
|
|
.L255:
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L263:
|
|
.align 2
|
|
.L262:
|
|
.word .LANCHOR66
|
|
.word .LANCHOR62
|
|
.size FtlGcBufFree, .-FtlGcBufFree
|
|
.section .text.FtlGcBufAlloc,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcBufAlloc
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcBufAlloc, %function
|
|
FtlGcBufAlloc:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L271
|
|
movs r2, #0
|
|
push {r4, r5, r6, r7, r8, r10, lr}
|
|
mov ip, #12
|
|
movs r7, #1
|
|
mov lr, #20
|
|
ldr r4, [r3]
|
|
ldr r3, .L271+4
|
|
ldr r5, [r3]
|
|
.L265:
|
|
uxth r8, r2
|
|
cmp r1, r8
|
|
bhi .L269
|
|
pop {r4, r5, r6, r7, r8, r10, pc}
|
|
.L269:
|
|
mov r10, #0
|
|
.L266:
|
|
uxth r3, r10
|
|
cmp r4, r3
|
|
bls .L267
|
|
mla r3, ip, r3, r5
|
|
add r10, r10, #1
|
|
ldr r6, [r3, #8]
|
|
cmp r6, #0
|
|
bne .L266
|
|
mla r8, lr, r8, r0
|
|
str r7, [r3, #8]
|
|
ldr r6, [r3]
|
|
ldr r3, [r3, #4]
|
|
str r6, [r8, #8]
|
|
str r3, [r8, #12]
|
|
.L267:
|
|
adds r2, r2, #1
|
|
b .L265
|
|
.L272:
|
|
.align 2
|
|
.L271:
|
|
.word .LANCHOR66
|
|
.word .LANCHOR62
|
|
.size FtlGcBufAlloc, .-FtlGcBufAlloc
|
|
.section .text.IsBlkInGcList,"ax",%progbits
|
|
.align 1
|
|
.global IsBlkInGcList
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type IsBlkInGcList, %function
|
|
IsBlkInGcList:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L278
|
|
ldr r2, .L278+4
|
|
ldr r3, [r3]
|
|
ldrh r2, [r2]
|
|
add r2, r3, r2, lsl #1
|
|
.L274:
|
|
cmp r3, r2
|
|
bne .L276
|
|
movs r0, #0
|
|
bx lr
|
|
.L276:
|
|
ldrh r1, [r3], #2
|
|
cmp r1, r0
|
|
bne .L274
|
|
movs r0, #1
|
|
bx lr
|
|
.L279:
|
|
.align 2
|
|
.L278:
|
|
.word .LANCHOR67
|
|
.word .LANCHOR68
|
|
.size IsBlkInGcList, .-IsBlkInGcList
|
|
.section .text.FtlGcUpdatePage,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcUpdatePage
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcUpdatePage, %function
|
|
FtlGcUpdatePage:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
mov r5, r0
|
|
ldr r4, .L284
|
|
ubfx r0, r0, #10, #16
|
|
mov r6, r1
|
|
mov r7, r2
|
|
bl P2V_block_in_plane
|
|
ldr r3, .L284+4
|
|
ldrh r1, [r4]
|
|
ldr r2, [r3]
|
|
movs r3, #0
|
|
.L281:
|
|
uxth ip, r3
|
|
cmp ip, r1
|
|
bcc .L283
|
|
bne .L282
|
|
strh r0, [r2, ip, lsl #1] @ movhi
|
|
ldrh r3, [r4]
|
|
adds r3, r3, #1
|
|
strh r3, [r4] @ movhi
|
|
b .L282
|
|
.L283:
|
|
adds r3, r3, #1
|
|
add ip, r2, r3, lsl #1
|
|
ldrh ip, [ip, #-2]
|
|
cmp ip, r0
|
|
bne .L281
|
|
.L282:
|
|
ldr r2, .L284+8
|
|
movs r0, #12
|
|
ldr r1, .L284+12
|
|
ldrh r3, [r2]
|
|
ldr r1, [r1]
|
|
muls r0, r3, r0
|
|
adds r3, r3, #1
|
|
adds r4, r1, r0
|
|
str r6, [r4, #4]
|
|
str r7, [r4, #8]
|
|
str r5, [r1, r0]
|
|
strh r3, [r2] @ movhi
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.L285:
|
|
.align 2
|
|
.L284:
|
|
.word .LANCHOR68
|
|
.word .LANCHOR67
|
|
.word .LANCHOR69
|
|
.word .LANCHOR70
|
|
.size FtlGcUpdatePage, .-FtlGcUpdatePage
|
|
.section .text.FtlGcRefreshBlock,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcRefreshBlock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcRefreshBlock, %function
|
|
FtlGcRefreshBlock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, lr}
|
|
ldr r4, .L289
|
|
ldrh r5, [r4]
|
|
cmp r5, r0
|
|
beq .L287
|
|
ldr r3, .L289+4
|
|
ldrh r1, [r3]
|
|
cmp r0, r1
|
|
beq .L287
|
|
movw r2, #65535
|
|
cmp r5, r2
|
|
bne .L288
|
|
strh r0, [r4] @ movhi
|
|
.L287:
|
|
movs r0, #0
|
|
pop {r4, r5, pc}
|
|
.L288:
|
|
cmp r1, r2
|
|
it eq
|
|
strheq r0, [r3] @ movhi
|
|
b .L287
|
|
.L290:
|
|
.align 2
|
|
.L289:
|
|
.word .LANCHOR71
|
|
.word .LANCHOR72
|
|
.size FtlGcRefreshBlock, .-FtlGcRefreshBlock
|
|
.section .text.FtlGcMarkBadPhyBlk,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcMarkBadPhyBlk
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcMarkBadPhyBlk, %function
|
|
FtlGcMarkBadPhyBlk:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
ldr r2, .L295
|
|
movs r1, #0
|
|
ldr r5, .L295+4
|
|
ldrh r3, [r2]
|
|
.L292:
|
|
uxth r0, r1
|
|
cmp r3, r0
|
|
bhi .L294
|
|
cmp r3, #15
|
|
itttt ls
|
|
addls r1, r3, #1
|
|
strhls r1, [r2] @ movhi
|
|
ldrls r2, .L295+4
|
|
strhls r4, [r2, r3, lsl #1] @ movhi
|
|
b .L293
|
|
.L294:
|
|
adds r1, r1, #1
|
|
add r0, r5, r1, lsl #1
|
|
ldrh r0, [r0, #-2]
|
|
cmp r0, r4
|
|
bne .L292
|
|
.L293:
|
|
movs r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
.L296:
|
|
.align 2
|
|
.L295:
|
|
.word .LANCHOR73
|
|
.word .LANCHOR74
|
|
.size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
|
|
.section .text.FtlGcReFreshBadBlk,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcReFreshBadBlk
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcReFreshBadBlk, %function
|
|
FtlGcReFreshBadBlk:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L303
|
|
push {r4, lr}
|
|
ldrh r3, [r3]
|
|
cbz r3, .L298
|
|
ldr r2, .L303+4
|
|
ldrh r1, [r2]
|
|
movw r2, #65535
|
|
cmp r1, r2
|
|
bne .L298
|
|
ldr r4, .L303+8
|
|
ldrh r2, [r4]
|
|
cmp r2, r3
|
|
itt cs
|
|
movcs r3, #0
|
|
strhcs r3, [r4] @ movhi
|
|
ldr r3, .L303+12
|
|
ldrh r2, [r4]
|
|
ldrh r0, [r3, r2, lsl #1]
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
ldrh r3, [r4]
|
|
adds r3, r3, #1
|
|
strh r3, [r4] @ movhi
|
|
.L298:
|
|
movs r0, #0
|
|
pop {r4, pc}
|
|
.L304:
|
|
.align 2
|
|
.L303:
|
|
.word .LANCHOR73
|
|
.word .LANCHOR71
|
|
.word .LANCHOR75
|
|
.word .LANCHOR74
|
|
.size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
|
|
.section .text.ftl_malloc,"ax",%progbits
|
|
.align 1
|
|
.global ftl_malloc
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_malloc, %function
|
|
ftl_malloc:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
movs r1, #0
|
|
b kmalloc
|
|
.size ftl_malloc, .-ftl_malloc
|
|
.section .text.ftl_free,"ax",%progbits
|
|
.align 1
|
|
.global ftl_free
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_free, %function
|
|
ftl_free:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b free
|
|
.size ftl_free, .-ftl_free
|
|
.section .text.rknand_print_hex,"ax",%progbits
|
|
.align 1
|
|
.global rknand_print_hex
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type rknand_print_hex, %function
|
|
rknand_print_hex:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r6, #0
|
|
mov fp, r0
|
|
mov r7, r1
|
|
mov r8, r2
|
|
mov r10, r3
|
|
mov r5, r6
|
|
mov r4, r6
|
|
.L308:
|
|
cmp r4, r10
|
|
bcc .L314
|
|
ldr r0, .L317
|
|
pop {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
b printf
|
|
.L314:
|
|
cbnz r5, .L309
|
|
mov r2, r6
|
|
mov r1, fp
|
|
ldr r0, .L317+4
|
|
bl printf
|
|
.L309:
|
|
cmp r8, #4
|
|
bne .L310
|
|
ldr r1, [r7, r4, lsl #2]
|
|
.L316:
|
|
ldr r0, .L317+8
|
|
.L315:
|
|
adds r5, r5, #1
|
|
bl printf
|
|
cmp r5, #15
|
|
bls .L313
|
|
movs r5, #0
|
|
ldr r0, .L317
|
|
bl printf
|
|
.L313:
|
|
adds r4, r4, #1
|
|
add r6, r6, r8
|
|
b .L308
|
|
.L310:
|
|
cmp r8, #2
|
|
bne .L312
|
|
ldrh r1, [r7, r4, lsl #1]
|
|
b .L316
|
|
.L312:
|
|
ldrb r1, [r7, r4] @ zero_extendqisi2
|
|
ldr r0, .L317+12
|
|
b .L315
|
|
.L318:
|
|
.align 2
|
|
.L317:
|
|
.word .LC5
|
|
.word .LC2
|
|
.word .LC3
|
|
.word .LC4
|
|
.size rknand_print_hex, .-rknand_print_hex
|
|
.section .text.FlashEraseBlocks,"ax",%progbits
|
|
.align 1
|
|
.global FlashEraseBlocks
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FlashEraseBlocks, %function
|
|
FlashEraseBlocks:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r4, r0
|
|
ldr r6, .L335
|
|
add r8, r0, #4
|
|
movs r7, #0
|
|
ldr fp, .L335+20
|
|
ldrh r10, [r6, #12]
|
|
str r2, [sp]
|
|
lsl r3, r10, #3
|
|
str r3, [sp, #4]
|
|
.L320:
|
|
ldr r3, [sp]
|
|
cmp r7, r3
|
|
beq .L334
|
|
add r2, sp, #8
|
|
add r1, sp, #12
|
|
ldr r0, [r8]
|
|
bl l2p_addr_tran.isra.0
|
|
ldr r5, [sp, #8]
|
|
cbnz r5, .L321
|
|
ldr r2, [sp, #12]
|
|
ldr r3, [sp, #4]
|
|
cmp r3, r2
|
|
bls .L321
|
|
ldr r6, .L335+4
|
|
ldr r7, .L335+8
|
|
.L322:
|
|
ldr r3, [sp]
|
|
adds r4, r4, #20
|
|
cmp r5, r3
|
|
bne .L323
|
|
.L334:
|
|
movs r0, #0
|
|
add sp, sp, #16
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L323:
|
|
mov r3, #-1
|
|
ldr r2, [sp, #12]
|
|
str r3, [r4, #-20]
|
|
mov r1, r6
|
|
mov r0, r7
|
|
adds r5, r5, #1
|
|
bl printf
|
|
movs r3, #16
|
|
movs r2, #4
|
|
ldr r1, [r4, #-12]
|
|
ldr r0, .L335+12
|
|
bl rknand_print_hex
|
|
movs r3, #4
|
|
ldr r1, [r4, #-8]
|
|
mov r2, r3
|
|
ldr r0, .L335+16
|
|
bl rknand_print_hex
|
|
b .L322
|
|
.L321:
|
|
ldr r2, [fp, #4]
|
|
uxtb r0, r5
|
|
ldr r1, [sp, #12]
|
|
blx r2
|
|
cbnz r0, .L324
|
|
str r0, [r8, #-4]
|
|
.L325:
|
|
ldrh r2, [r6, #14]
|
|
cmp r2, #4
|
|
bne .L327
|
|
ldr r1, [sp, #12]
|
|
ldr r2, [fp, #4]
|
|
ldrb r0, [sp, #8] @ zero_extendqisi2
|
|
add r1, r1, r10
|
|
blx r2
|
|
cbz r0, .L327
|
|
mov r2, #-1
|
|
str r2, [r8, #-4]
|
|
.L327:
|
|
adds r7, r7, #1
|
|
add r8, r8, #20
|
|
b .L320
|
|
.L324:
|
|
mov r2, #-1
|
|
str r2, [r8, #-4]
|
|
b .L325
|
|
.L336:
|
|
.align 2
|
|
.L335:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR76
|
|
.word .LC6
|
|
.word .LC7
|
|
.word .LC8
|
|
.word .LANCHOR77
|
|
.size FlashEraseBlocks, .-FlashEraseBlocks
|
|
.section .text.FtlFreeSysBlkQueueIn,"ax",%progbits
|
|
.align 1
|
|
.global FtlFreeSysBlkQueueIn
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueIn, %function
|
|
FtlFreeSysBlkQueueIn:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
subs r3, r0, #1
|
|
movw r2, #65533
|
|
uxth r3, r3
|
|
push {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
cmp r3, r2
|
|
bhi .L337
|
|
ldr r4, .L346
|
|
ldrh r3, [r4, #6]
|
|
cmp r3, #1024
|
|
beq .L337
|
|
cbz r1, .L339
|
|
bl P2V_block_in_plane
|
|
ldr r3, .L346+4
|
|
mov r6, r0
|
|
movs r2, #1
|
|
mov r1, r2
|
|
ldr r0, [r3]
|
|
lsls r3, r5, #10
|
|
str r3, [r0, #4]
|
|
bl FlashEraseBlocks
|
|
ldr r3, .L346+8
|
|
ldr r2, [r3]
|
|
ldrh r3, [r2, r6, lsl #1]
|
|
adds r3, r3, #1
|
|
strh r3, [r2, r6, lsl #1] @ movhi
|
|
ldr r2, .L346+12
|
|
ldr r3, [r2]
|
|
adds r3, r3, #1
|
|
str r3, [r2]
|
|
.L339:
|
|
ldrh r3, [r4, #6]
|
|
adds r3, r3, #1
|
|
strh r3, [r4, #6] @ movhi
|
|
ldrh r3, [r4, #4]
|
|
adds r2, r3, #4
|
|
adds r3, r3, #1
|
|
ubfx r3, r3, #0, #10
|
|
strh r5, [r4, r2, lsl #1] @ movhi
|
|
strh r3, [r4, #4] @ movhi
|
|
.L337:
|
|
pop {r4, r5, r6, pc}
|
|
.L347:
|
|
.align 2
|
|
.L346:
|
|
.word .LANCHOR37
|
|
.word .LANCHOR78
|
|
.word .LANCHOR46
|
|
.word .LANCHOR79
|
|
.size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
|
|
.section .text.FtlFreeSysBlkQueueOut,"ax",%progbits
|
|
.align 1
|
|
.global FtlFreeSysBlkQueueOut
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueOut, %function
|
|
FtlFreeSysBlkQueueOut:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
ldr r4, .L353
|
|
ldrh r2, [r4, #6]
|
|
cbz r2, .L352
|
|
ldrh r3, [r4, #2]
|
|
subs r2, r2, #1
|
|
strh r2, [r4, #6] @ movhi
|
|
movs r2, #1
|
|
adds r1, r3, #4
|
|
adds r3, r3, #1
|
|
ubfx r3, r3, #0, #10
|
|
ldrh r5, [r4, r1, lsl #1]
|
|
strh r3, [r4, #2] @ movhi
|
|
mov r1, r2
|
|
ldr r3, .L353+4
|
|
ldr r0, [r3]
|
|
lsls r3, r5, #10
|
|
str r3, [r0, #4]
|
|
bl FlashEraseBlocks
|
|
ldr r2, .L353+8
|
|
ldr r3, [r2]
|
|
adds r3, r3, #1
|
|
str r3, [r2]
|
|
.L349:
|
|
subs r3, r5, #1
|
|
movw r2, #65533
|
|
uxth r3, r3
|
|
cmp r3, r2
|
|
bls .L350
|
|
ldrh r2, [r4, #6]
|
|
mov r1, r5
|
|
ldr r0, .L353+12
|
|
bl printf
|
|
.L351:
|
|
b .L351
|
|
.L352:
|
|
movw r5, #65535
|
|
b .L349
|
|
.L350:
|
|
mov r0, r5
|
|
pop {r3, r4, r5, pc}
|
|
.L354:
|
|
.align 2
|
|
.L353:
|
|
.word .LANCHOR37
|
|
.word .LANCHOR78
|
|
.word .LANCHOR79
|
|
.word .LC9
|
|
.size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
|
|
.section .text.ftl_map_blk_alloc_new_blk,"ax",%progbits
|
|
.align 1
|
|
.global ftl_map_blk_alloc_new_blk
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_map_blk_alloc_new_blk, %function
|
|
ftl_map_blk_alloc_new_blk:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldrh r1, [r0, #10]
|
|
ldr r2, [r0, #12]
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
mov r4, r0
|
|
movs r3, #0
|
|
.L356:
|
|
uxth r5, r3
|
|
cmp r5, r1
|
|
bcs .L359
|
|
mov r7, r2
|
|
adds r3, r3, #1
|
|
ldrh r6, [r7]
|
|
adds r2, r2, #2
|
|
cmp r6, #0
|
|
bne .L356
|
|
bl FtlFreeSysBlkQueueOut
|
|
subs r3, r0, #1
|
|
movw r2, #65533
|
|
uxth r3, r3
|
|
mov r1, r0
|
|
strh r0, [r7] @ movhi
|
|
cmp r3, r2
|
|
bls .L357
|
|
ldr r3, .L363
|
|
ldr r0, .L363+4
|
|
ldrh r2, [r3, #6]
|
|
bl printf
|
|
.L358:
|
|
b .L358
|
|
.L357:
|
|
ldr r3, [r4, #28]
|
|
strh r6, [r4, #2] @ movhi
|
|
strh r5, [r4] @ movhi
|
|
adds r3, r3, #1
|
|
str r3, [r4, #28]
|
|
ldrh r3, [r4, #8]
|
|
adds r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
.L359:
|
|
ldrh r3, [r4, #10]
|
|
cmp r3, r5
|
|
bhi .L361
|
|
movw r2, #578
|
|
ldr r1, .L363+8
|
|
ldr r0, .L363+12
|
|
bl printf
|
|
.L361:
|
|
movs r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.L364:
|
|
.align 2
|
|
.L363:
|
|
.word .LANCHOR37
|
|
.word .LC10
|
|
.word .LANCHOR80
|
|
.word .LC1
|
|
.size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
|
|
.section .text.ftl_memset,"ax",%progbits
|
|
.align 1
|
|
.global ftl_memset
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_memset, %function
|
|
ftl_memset:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b memset
|
|
.size ftl_memset, .-ftl_memset
|
|
.section .text.FtlMemInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlMemInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlMemInit, %function
|
|
FtlMemInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L371
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r4, #0
|
|
ldr r2, .L371+4
|
|
movs r6, #12
|
|
str r4, [r3]
|
|
ldr r3, .L371+8
|
|
ldr r5, .L371+12
|
|
ldr r10, .L371+292
|
|
str r4, [r3]
|
|
ldr r3, .L371+16
|
|
ldrh r0, [r5]
|
|
ldr r8, .L371+296
|
|
str r4, [r3]
|
|
ldr r3, .L371+20
|
|
lsls r0, r0, #1
|
|
ldr fp, .L371+300
|
|
str r4, [r3]
|
|
ldr r3, .L371+24
|
|
str r4, [r3]
|
|
ldr r3, .L371+28
|
|
str r4, [r3]
|
|
ldr r3, .L371+32
|
|
str r4, [r3]
|
|
ldr r3, .L371+36
|
|
str r4, [r3]
|
|
ldr r3, .L371+40
|
|
str r4, [r3]
|
|
ldr r3, .L371+44
|
|
str r4, [r3]
|
|
ldr r3, .L371+48
|
|
str r4, [r3]
|
|
ldr r3, .L371+52
|
|
str r4, [r3]
|
|
ldr r3, .L371+56
|
|
str r4, [r3]
|
|
ldr r3, .L371+60
|
|
str r4, [r3]
|
|
ldr r3, .L371+64
|
|
str r4, [r3]
|
|
movw r3, #65535
|
|
str r3, [r2]
|
|
ldr r2, .L371+68
|
|
str r4, [r2]
|
|
ldr r2, .L371+72
|
|
str r4, [r2]
|
|
ldr r2, .L371+76
|
|
str r4, [r2]
|
|
ldr r2, .L371+80
|
|
strh r3, [r2] @ movhi
|
|
ldr r2, .L371+84
|
|
strh r3, [r2] @ movhi
|
|
movs r2, #32
|
|
ldr r3, .L371+88
|
|
strh r2, [r3] @ movhi
|
|
movs r2, #128
|
|
ldr r3, .L371+92
|
|
strh r2, [r3] @ movhi
|
|
ldr r3, .L371+96
|
|
strh r4, [r3] @ movhi
|
|
ldr r3, .L371+100
|
|
strh r4, [r3] @ movhi
|
|
ldr r3, .L371+104
|
|
strh r4, [r3] @ movhi
|
|
bl ftl_malloc
|
|
ldr r3, .L371+108
|
|
str r0, [r3]
|
|
ldrh r0, [r5]
|
|
movs r5, #20
|
|
muls r0, r6, r0
|
|
bl ftl_malloc
|
|
ldr r3, .L371+112
|
|
str r0, [r3]
|
|
ldrh r3, [r10]
|
|
muls r5, r3, r5
|
|
lsls r7, r5, #2
|
|
mov r0, r7
|
|
bl ftl_malloc
|
|
ldr r3, .L371+116
|
|
str r0, [r3]
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+120
|
|
str r0, [r3]
|
|
mov r0, r7
|
|
bl ftl_malloc
|
|
ldr r3, .L371+124
|
|
ldr r7, .L371+128
|
|
str r0, [r3]
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+132
|
|
str r0, [r3]
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+136
|
|
ldrh r5, [r7]
|
|
str r0, [r3]
|
|
ldrh r3, [r10]
|
|
mov r0, r5
|
|
lsls r3, r3, #1
|
|
adds r3, r3, #1
|
|
str r3, [r8]
|
|
bl ftl_malloc
|
|
ldr r3, .L371+140
|
|
str r0, [r3]
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+144
|
|
str r0, [r3]
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+148
|
|
str r0, [r3]
|
|
ldr r0, [r8]
|
|
muls r0, r5, r0
|
|
bl ftl_malloc
|
|
ldr r3, .L371+152
|
|
str r0, [r3]
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+156
|
|
str r0, [r3]
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+160
|
|
str r0, [r3]
|
|
ldr r0, [r8]
|
|
muls r0, r6, r0
|
|
bl ftl_malloc
|
|
ldr r3, .L371+164
|
|
str r0, [r3]
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+168
|
|
str r0, [r3]
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+172
|
|
str r0, [r3]
|
|
ldr r3, .L371+176
|
|
ldrh r0, [r3]
|
|
lsls r0, r0, #2
|
|
bl ftl_malloc
|
|
ldr r3, .L371+180
|
|
ldrh r5, [r10]
|
|
ldr r10, .L371+304
|
|
str r0, [r3]
|
|
ldrh r3, [fp]
|
|
muls r5, r3, r5
|
|
mov r0, r5
|
|
bl ftl_malloc
|
|
ldr r3, .L371+184
|
|
str r0, [r3]
|
|
lsls r0, r5, #2
|
|
ldr r5, .L371+188
|
|
bl ftl_malloc
|
|
ldr r3, .L371+192
|
|
str r0, [r3]
|
|
ldrh r3, [fp]
|
|
ldr r0, [r8]
|
|
ldr r8, .L371+308
|
|
muls r0, r3, r0
|
|
bl ftl_malloc
|
|
ldr r3, .L371+196
|
|
str r0, [r3]
|
|
ldrh r0, [r5]
|
|
lsls r0, r0, #1
|
|
uxth r0, r0
|
|
strh r0, [r8] @ movhi
|
|
bl ftl_malloc
|
|
ldr r3, .L371+200
|
|
str r0, [r3]
|
|
ldrh r3, [r8]
|
|
ldr r0, .L371+204
|
|
addw r3, r3, #547
|
|
lsrs r3, r3, #9
|
|
and r0, r0, r3, lsl #9
|
|
strh r3, [r8] @ movhi
|
|
bl ftl_malloc
|
|
ldr r3, .L371+208
|
|
str r0, [r3]
|
|
adds r0, r0, #32
|
|
ldr r3, .L371+212
|
|
str r0, [r3]
|
|
ldrh r0, [r5]
|
|
lsls r0, r0, #1
|
|
bl ftl_malloc
|
|
ldr r3, .L371+216
|
|
str r0, [r3]
|
|
ldr r3, [r10]
|
|
lsl r8, r3, #1
|
|
mov r0, r8
|
|
bl ftl_malloc
|
|
ldr r3, .L371+220
|
|
str r0, [r3]
|
|
mov r0, r8
|
|
bl ftl_malloc
|
|
ldr r8, .L371+312
|
|
ldr r3, .L371+224
|
|
str r0, [r3]
|
|
ldrh r0, [r8]
|
|
lsls r0, r0, #1
|
|
bl ftl_malloc
|
|
ldr r3, .L371+228
|
|
str r0, [r3]
|
|
ldrh r0, [r8]
|
|
lsls r0, r0, #1
|
|
bl ftl_malloc
|
|
ldr r3, .L371+232
|
|
str r0, [r3]
|
|
ldrh r0, [r8]
|
|
ldr r8, .L371+316
|
|
lsls r0, r0, #2
|
|
bl ftl_malloc
|
|
ldr r3, .L371+236
|
|
str r0, [r3]
|
|
ldrh r0, [r8]
|
|
lsls r0, r0, #2
|
|
bl ftl_malloc
|
|
ldrh r2, [r8]
|
|
mov r1, r4
|
|
ldr r3, .L371+240
|
|
ldr r4, .L371+244
|
|
lsls r2, r2, #2
|
|
str r0, [r3]
|
|
bl ftl_memset
|
|
ldr r3, .L371+248
|
|
ldrh r0, [r3]
|
|
lsls r0, r0, #2
|
|
bl ftl_malloc
|
|
ldr r3, .L371+252
|
|
str r0, [r3]
|
|
ldr r0, [r10]
|
|
lsls r0, r0, #2
|
|
bl ftl_malloc
|
|
ldr r3, .L371+256
|
|
str r0, [r3]
|
|
ldrh r0, [r4]
|
|
muls r0, r6, r0
|
|
ldr r6, .L371+260
|
|
bl ftl_malloc
|
|
ldr r3, .L371+264
|
|
str r0, [r3]
|
|
ldrh r3, [r4]
|
|
ldrh r0, [r7]
|
|
muls r0, r3, r0
|
|
bl ftl_malloc
|
|
ldr r3, .L371+268
|
|
str r0, [r3]
|
|
movs r0, #6
|
|
ldrh r3, [r5]
|
|
ldr r5, .L371+272
|
|
muls r0, r3, r0
|
|
bl ftl_malloc
|
|
ldr r3, .L371+276
|
|
str r0, [r3]
|
|
ldr r3, .L371+280
|
|
ldrh r0, [r3]
|
|
ldrh r3, [r6]
|
|
adds r0, r0, #31
|
|
asrs r0, r0, #5
|
|
strh r0, [r5] @ movhi
|
|
muls r0, r3, r0
|
|
lsls r0, r0, #2
|
|
bl ftl_malloc
|
|
ldrh r1, [r5]
|
|
movs r2, #1
|
|
ldr r3, .L371+284
|
|
ldrh r6, [r6]
|
|
lsls r1, r1, #2
|
|
mov r4, r3
|
|
str r0, [r4, #28]!
|
|
mov r0, r1
|
|
.L367:
|
|
cmp r2, r6
|
|
bcc .L368
|
|
add r3, r3, r2, lsl #2
|
|
ldr r2, .L371+288
|
|
movs r1, #0
|
|
adds r3, r3, #24
|
|
.L369:
|
|
cmp r3, r2
|
|
bne .L370
|
|
movs r0, #0
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L372:
|
|
.align 2
|
|
.L371:
|
|
.word .LANCHOR81
|
|
.word .LANCHOR95
|
|
.word .LANCHOR82
|
|
.word .LANCHOR20
|
|
.word .LANCHOR83
|
|
.word .LANCHOR84
|
|
.word .LANCHOR85
|
|
.word .LANCHOR86
|
|
.word .LANCHOR87
|
|
.word .LANCHOR88
|
|
.word .LANCHOR89
|
|
.word .LANCHOR90
|
|
.word .LANCHOR79
|
|
.word .LANCHOR91
|
|
.word .LANCHOR92
|
|
.word .LANCHOR93
|
|
.word .LANCHOR94
|
|
.word .LANCHOR96
|
|
.word .LANCHOR97
|
|
.word .LANCHOR98
|
|
.word .LANCHOR71
|
|
.word .LANCHOR72
|
|
.word .LANCHOR99
|
|
.word .LANCHOR100
|
|
.word .LANCHOR101
|
|
.word .LANCHOR73
|
|
.word .LANCHOR75
|
|
.word .LANCHOR67
|
|
.word .LANCHOR70
|
|
.word .LANCHOR102
|
|
.word .LANCHOR103
|
|
.word .LANCHOR104
|
|
.word .LANCHOR22
|
|
.word .LANCHOR78
|
|
.word .LANCHOR65
|
|
.word .LANCHOR105
|
|
.word .LANCHOR106
|
|
.word .LANCHOR107
|
|
.word .LANCHOR63
|
|
.word .LANCHOR108
|
|
.word .LANCHOR109
|
|
.word .LANCHOR62
|
|
.word .LANCHOR110
|
|
.word .LANCHOR111
|
|
.word .LANCHOR11
|
|
.word .LANCHOR112
|
|
.word .LANCHOR113
|
|
.word .LANCHOR5
|
|
.word .LANCHOR114
|
|
.word .LANCHOR64
|
|
.word .LANCHOR116
|
|
.word 33553920
|
|
.word .LANCHOR117
|
|
.word .LANCHOR46
|
|
.word .LANCHOR41
|
|
.word .LANCHOR118
|
|
.word .LANCHOR119
|
|
.word .LANCHOR35
|
|
.word .LANCHOR120
|
|
.word .LANCHOR121
|
|
.word .LANCHOR122
|
|
.word .LANCHOR32
|
|
.word .LANCHOR31
|
|
.word .LANCHOR123
|
|
.word .LANCHOR124
|
|
.word .LANCHOR9
|
|
.word .LANCHOR54
|
|
.word .LANCHOR125
|
|
.word .LANCHOR126
|
|
.word .LANCHOR39
|
|
.word .LANCHOR16
|
|
.word .LANCHOR36
|
|
.word .LANCHOR36+56
|
|
.word .LANCHOR2
|
|
.word .LANCHOR66
|
|
.word .LANCHOR23
|
|
.word .LANCHOR29
|
|
.word .LANCHOR115
|
|
.word .LANCHOR26
|
|
.word .LANCHOR27
|
|
.L368:
|
|
ldr r5, [r3, #28]
|
|
adds r2, r2, #1
|
|
add r5, r5, r0
|
|
add r0, r0, r1
|
|
str r5, [r4, #4]!
|
|
b .L367
|
|
.L370:
|
|
str r1, [r3, #4]!
|
|
b .L369
|
|
.size FtlMemInit, .-FtlMemInit
|
|
.section .text.FtlBbt2Bitmap,"ax",%progbits
|
|
.align 1
|
|
.global FtlBbt2Bitmap
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlBbt2Bitmap, %function
|
|
FtlBbt2Bitmap:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L379
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
mov r5, r0
|
|
ldr r7, .L379+4
|
|
mov r6, r1
|
|
subs r4, r5, #2
|
|
addw r5, r5, #1022
|
|
ldrh r2, [r3]
|
|
movs r1, #0
|
|
ldr r8, .L379+12
|
|
mov r0, r6
|
|
lsls r2, r2, #2
|
|
bl ftl_memset
|
|
.L376:
|
|
ldrh r3, [r4, #2]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
beq .L373
|
|
ldrh r2, [r7]
|
|
cmp r2, r3
|
|
bhi .L375
|
|
movs r2, #74
|
|
mov r1, r8
|
|
ldr r0, .L379+8
|
|
bl printf
|
|
.L375:
|
|
ldrh r3, [r4, #2]!
|
|
movs r2, #1
|
|
cmp r5, r4
|
|
lsr r1, r3, #5
|
|
and r3, r3, #31
|
|
lsl r3, r2, r3
|
|
ldr r2, [r6, r1, lsl #2]
|
|
orr r2, r2, r3
|
|
str r2, [r6, r1, lsl #2]
|
|
bne .L376
|
|
.L373:
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L380:
|
|
.align 2
|
|
.L379:
|
|
.word .LANCHOR126
|
|
.word .LANCHOR16
|
|
.word .LC1
|
|
.word .LANCHOR127
|
|
.size FtlBbt2Bitmap, .-FtlBbt2Bitmap
|
|
.section .text.FtlBbtMemInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlBbtMemInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlBbtMemInit, %function
|
|
FtlBbtMemInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r0, .L382
|
|
movw r3, #65535
|
|
movs r2, #16
|
|
movs r1, #255
|
|
strh r3, [r0] @ movhi
|
|
movs r3, #0
|
|
strh r3, [r0, #6] @ movhi
|
|
adds r0, r0, #12
|
|
b ftl_memset
|
|
.L383:
|
|
.align 2
|
|
.L382:
|
|
.word .LANCHOR36
|
|
.size FtlBbtMemInit, .-FtlBbtMemInit
|
|
.section .text.FtlFreeSysBlkQueueInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlFreeSysBlkQueueInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueInit, %function
|
|
FtlFreeSysBlkQueueInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L385
|
|
mov r2, #2048
|
|
push {r4, lr}
|
|
movs r4, #0
|
|
mov r1, r4
|
|
strh r4, [r3, #2] @ movhi
|
|
strh r4, [r3, #4] @ movhi
|
|
strh r4, [r3, #6] @ movhi
|
|
strh r0, [r3], #8 @ movhi
|
|
mov r0, r3
|
|
bl ftl_memset
|
|
mov r0, r4
|
|
pop {r4, pc}
|
|
.L386:
|
|
.align 2
|
|
.L385:
|
|
.word .LANCHOR37
|
|
.size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
|
|
.section .text.ftl_free_no_use_map_blk,"ax",%progbits
|
|
.align 1
|
|
.global ftl_free_no_use_map_blk
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_free_no_use_map_blk, %function
|
|
ftl_free_no_use_map_blk:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldrh r2, [r0, #10]
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r4, r0
|
|
ldr r5, [r0, #20]
|
|
movs r1, #0
|
|
ldr r7, [r0, #12]
|
|
lsls r2, r2, #1
|
|
ldr r6, [r0, #24]
|
|
mov r0, r5
|
|
bl ftl_memset
|
|
movs r3, #0
|
|
.L388:
|
|
ldrh r1, [r4, #6]
|
|
uxth r2, r3
|
|
cmp r1, r2
|
|
bhi .L392
|
|
ldr r3, .L407
|
|
movs r6, #0
|
|
mov r10, r6
|
|
ldrh r2, [r3]
|
|
ldrh r3, [r4]
|
|
strh r2, [r5, r3, lsl #1] @ movhi
|
|
mov r2, r6
|
|
ldrh fp, [r5]
|
|
.L393:
|
|
ldrh r3, [r4, #10]
|
|
uxth ip, r6
|
|
cmp r3, ip
|
|
bhi .L397
|
|
mov r0, r10
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L392:
|
|
uxth r2, r3
|
|
ldr r1, [r6, r2, lsl #2]
|
|
movs r2, #0
|
|
ubfx r1, r1, #10, #16
|
|
.L389:
|
|
ldrh ip, [r4, #10]
|
|
uxth r0, r2
|
|
cmp ip, r0
|
|
bhi .L391
|
|
adds r3, r3, #1
|
|
b .L388
|
|
.L391:
|
|
uxth r0, r2
|
|
ldrh ip, [r7, r0, lsl #1]
|
|
cmp ip, r1
|
|
bne .L390
|
|
cbz r1, .L390
|
|
ldrh ip, [r5, r0, lsl #1]
|
|
add ip, ip, #1
|
|
strh ip, [r5, r0, lsl #1] @ movhi
|
|
.L390:
|
|
adds r2, r2, #1
|
|
b .L389
|
|
.L397:
|
|
uxth r1, r6
|
|
ldrh r3, [r5, r1, lsl #1]
|
|
lsl r8, r1, #1
|
|
cmp fp, r3
|
|
bls .L394
|
|
ldrh r0, [r7, r1, lsl #1]
|
|
add r8, r8, r7
|
|
cbnz r0, .L395
|
|
.L396:
|
|
adds r6, r6, #1
|
|
b .L393
|
|
.L394:
|
|
cmp r3, #0
|
|
bne .L396
|
|
ldrh r0, [r7, r1, lsl #1]
|
|
add r8, r8, r7
|
|
cmp r0, #0
|
|
beq .L396
|
|
.L398:
|
|
movs r1, #1
|
|
str r2, [sp, #4]
|
|
bl FtlFreeSysBlkQueueIn
|
|
ldr r2, [sp, #4]
|
|
strh r2, [r8] @ movhi
|
|
ldrh r3, [r4, #8]
|
|
subs r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
b .L396
|
|
.L395:
|
|
mov r10, ip
|
|
mov fp, r3
|
|
cmp r3, #0
|
|
beq .L398
|
|
b .L396
|
|
.L408:
|
|
.align 2
|
|
.L407:
|
|
.word .LANCHOR19
|
|
.size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
|
|
.section .text.FtlL2PDataInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlL2PDataInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlL2PDataInit, %function
|
|
FtlL2PDataInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
movs r1, #0
|
|
ldr r5, .L412
|
|
ldr r4, .L412+4
|
|
ldr r2, [r5]
|
|
ldr r7, .L412+8
|
|
ldr r6, .L412+12
|
|
ldr r0, [r4]
|
|
lsls r2, r2, #1
|
|
ldr r8, .L412+44
|
|
bl ftl_memset
|
|
ldrh r3, [r7]
|
|
movs r1, #255
|
|
ldrh r2, [r6]
|
|
ldr r0, [r8]
|
|
muls r2, r3, r2
|
|
bl ftl_memset
|
|
ldr r3, .L412+16
|
|
movw r0, #65535
|
|
ldrh r1, [r6]
|
|
ldr ip, [r8]
|
|
ldr r2, [r3]
|
|
movs r3, #12
|
|
ldrh r7, [r7]
|
|
mla r3, r1, r3, r3
|
|
adds r1, r2, r3
|
|
movs r3, #0
|
|
mov lr, r3
|
|
.L410:
|
|
adds r2, r2, #12
|
|
adds r6, r3, r7
|
|
cmp r2, r1
|
|
bne .L411
|
|
ldr r3, .L412+20
|
|
ldr r2, [r5]
|
|
strh r0, [r3, #2] @ movhi
|
|
strh r2, [r3, #10] @ movhi
|
|
movw r2, #61634
|
|
strh r2, [r3, #4] @ movhi
|
|
ldr r2, .L412+24
|
|
strh r0, [r3] @ movhi
|
|
ldrh r2, [r2]
|
|
strh r2, [r3, #8] @ movhi
|
|
ldr r2, .L412+28
|
|
ldrh r2, [r2]
|
|
strh r2, [r3, #6] @ movhi
|
|
ldr r2, .L412+32
|
|
ldr r2, [r2]
|
|
str r2, [r3, #12]
|
|
ldr r2, .L412+36
|
|
ldr r2, [r2]
|
|
str r2, [r3, #16]
|
|
ldr r2, [r4]
|
|
str r2, [r3, #20]
|
|
ldr r2, .L412+40
|
|
ldr r2, [r2]
|
|
str r2, [r3, #24]
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L411:
|
|
bic r3, r3, #3
|
|
str lr, [r2, #-8]
|
|
add r3, r3, ip
|
|
strh r0, [r2, #-12] @ movhi
|
|
str r3, [r2, #-4]
|
|
mov r3, r6
|
|
b .L410
|
|
.L413:
|
|
.align 2
|
|
.L412:
|
|
.word .LANCHOR29
|
|
.word .LANCHOR119
|
|
.word .LANCHOR22
|
|
.word .LANCHOR32
|
|
.word .LANCHOR54
|
|
.word .LANCHOR128
|
|
.word .LANCHOR129
|
|
.word .LANCHOR31
|
|
.word .LANCHOR118
|
|
.word .LANCHOR124
|
|
.word .LANCHOR123
|
|
.word .LANCHOR125
|
|
.size FtlL2PDataInit, .-FtlL2PDataInit
|
|
.section .text.FtlVariablesInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlVariablesInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlVariablesInit, %function
|
|
FtlVariablesInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
movw r2, #65535
|
|
ldr r3, .L415
|
|
movs r4, #0
|
|
mov r1, r4
|
|
ldr r5, .L415+4
|
|
strh r2, [r3] @ movhi
|
|
mov r2, #-1
|
|
ldr r3, .L415+8
|
|
str r4, [r3]
|
|
ldr r3, .L415+12
|
|
str r4, [r3]
|
|
ldr r3, .L415+16
|
|
str r2, [r3]
|
|
ldr r3, .L415+20
|
|
strh r4, [r3] @ movhi
|
|
ldr r3, .L415+24
|
|
ldrh r2, [r3]
|
|
ldr r3, .L415+28
|
|
lsls r2, r2, #1
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
ldrh r2, [r5]
|
|
mov r1, r4
|
|
ldr r3, .L415+32
|
|
lsls r2, r2, #1
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
ldrh r2, [r5]
|
|
mov r1, r4
|
|
ldr r3, .L415+36
|
|
lsls r2, r2, #1
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
mov r1, r4
|
|
movs r2, #48
|
|
ldr r0, .L415+40
|
|
bl ftl_memset
|
|
mov r2, #512
|
|
mov r1, r4
|
|
ldr r0, .L415+44
|
|
bl ftl_memset
|
|
bl FtlGcBufInit
|
|
bl FtlL2PDataInit
|
|
mov r0, r4
|
|
pop {r3, r4, r5, pc}
|
|
.L416:
|
|
.align 2
|
|
.L415:
|
|
.word .LANCHOR130
|
|
.word .LANCHOR5
|
|
.word .LANCHOR131
|
|
.word .LANCHOR132
|
|
.word .LANCHOR133
|
|
.word .LANCHOR34
|
|
.word .LANCHOR26
|
|
.word .LANCHOR35
|
|
.word .LANCHOR46
|
|
.word .LANCHOR116
|
|
.word .LANCHOR38
|
|
.word .LANCHOR134
|
|
.size FtlVariablesInit, .-FtlVariablesInit
|
|
.section .text.SupperBlkListInit,"ax",%progbits
|
|
.align 1
|
|
.global SupperBlkListInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type SupperBlkListInit, %function
|
|
SupperBlkListInit:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r2, #6
|
|
ldr r3, .L428
|
|
movs r1, #0
|
|
movs r4, #0
|
|
ldr r6, .L428+4
|
|
mov r8, r4
|
|
ldrh r3, [r3]
|
|
mov r5, r4
|
|
ldr r0, [r6]
|
|
mov r10, r6
|
|
muls r2, r3, r2
|
|
bl ftl_memset
|
|
ldr r3, .L428+8
|
|
ldr r2, .L428+12
|
|
str r4, [r3]
|
|
ldr r3, .L428+16
|
|
strh r4, [r2] @ movhi
|
|
str r2, [sp, #4]
|
|
str r4, [r3]
|
|
ldr r3, .L428+20
|
|
str r4, [r3]
|
|
ldr r3, .L428+24
|
|
mov fp, r3
|
|
strh r4, [r3] @ movhi
|
|
.L418:
|
|
ldr r3, .L428+28
|
|
uxth r7, r4
|
|
ldrh r3, [r3]
|
|
cmp r7, r3
|
|
bcs .L425
|
|
ldr r3, .L428+32
|
|
ldrh r2, [r3]
|
|
ldr r3, .L428+36
|
|
ldrh r3, [r3]
|
|
str r3, [sp]
|
|
movs r3, #0
|
|
mov r6, r3
|
|
b .L426
|
|
.L420:
|
|
str r2, [sp, #12]
|
|
mov r1, r7
|
|
ldr r2, .L428+40
|
|
str r3, [sp, #8]
|
|
ldrb r0, [r2, r3] @ zero_extendqisi2
|
|
bl V2P_block
|
|
bl FtlBbmIsBadBlock
|
|
ldr r3, [sp, #8]
|
|
ldr r2, [sp, #12]
|
|
cbnz r0, .L419
|
|
ldr r1, [sp]
|
|
add r6, r6, r1
|
|
uxth r6, r6
|
|
.L419:
|
|
adds r3, r3, #1
|
|
.L426:
|
|
uxth r1, r3
|
|
cmp r2, r1
|
|
bhi .L420
|
|
uxth r3, r4
|
|
cbz r6, .L421
|
|
mov r1, r6
|
|
str r3, [sp]
|
|
mov r0, #32768
|
|
bl __aeabi_idiv
|
|
ldr r3, [sp]
|
|
uxth r6, r0
|
|
.L422:
|
|
ldr r1, [r10]
|
|
movs r2, #6
|
|
mla r2, r2, r3, r1
|
|
strh r6, [r2, #4] @ movhi
|
|
ldr r2, .L428+44
|
|
ldrh r2, [r2]
|
|
cmp r2, r7
|
|
beq .L423
|
|
ldr r2, .L428+48
|
|
ldrh r2, [r2]
|
|
cmp r2, r7
|
|
beq .L423
|
|
ldr r2, .L428+52
|
|
ldrh r2, [r2]
|
|
cmp r2, r7
|
|
beq .L423
|
|
ldr r2, .L428+56
|
|
ldr r2, [r2]
|
|
ldrh r3, [r2, r3, lsl #1]
|
|
cbnz r3, .L424
|
|
add r8, r8, #1
|
|
mov r0, r7
|
|
uxth r8, r8
|
|
bl INSERT_FREE_LIST
|
|
.L423:
|
|
adds r4, r4, #1
|
|
b .L418
|
|
.L421:
|
|
ldr r2, .L428+56
|
|
movw r1, #65535
|
|
ldr r2, [r2]
|
|
strh r1, [r2, r3, lsl #1] @ movhi
|
|
b .L422
|
|
.L424:
|
|
adds r5, r5, #1
|
|
mov r0, r7
|
|
uxth r5, r5
|
|
bl INSERT_DATA_LIST
|
|
b .L423
|
|
.L425:
|
|
ldr r2, [sp, #4]
|
|
strh r8, [fp] @ movhi
|
|
strh r5, [r2] @ movhi
|
|
add r5, r5, r8
|
|
cmp r5, r3
|
|
ble .L427
|
|
movw r2, #2219
|
|
ldr r1, .L428+60
|
|
ldr r0, .L428+64
|
|
bl printf
|
|
.L427:
|
|
movs r0, #0
|
|
add sp, sp, #16
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L429:
|
|
.align 2
|
|
.L428:
|
|
.word .LANCHOR5
|
|
.word .LANCHOR39
|
|
.word .LANCHOR45
|
|
.word .LANCHOR43
|
|
.word .LANCHOR40
|
|
.word .LANCHOR42
|
|
.word .LANCHOR47
|
|
.word .LANCHOR4
|
|
.word .LANCHOR2
|
|
.word .LANCHOR18
|
|
.word .LANCHOR12
|
|
.word .LANCHOR50
|
|
.word .LANCHOR51
|
|
.word .LANCHOR52
|
|
.word .LANCHOR41
|
|
.word .LANCHOR135
|
|
.word .LC1
|
|
.size SupperBlkListInit, .-SupperBlkListInit
|
|
.section .text.FtlGcPageVarInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcPageVarInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcPageVarInit, %function
|
|
FtlGcPageVarInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L431
|
|
movs r3, #0
|
|
push {r4, lr}
|
|
movs r1, #255
|
|
ldr r4, .L431+4
|
|
strh r3, [r2] @ movhi
|
|
ldr r2, .L431+8
|
|
strh r3, [r2] @ movhi
|
|
ldrh r2, [r4]
|
|
ldr r3, .L431+12
|
|
lsls r2, r2, #1
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
ldrh r3, [r4]
|
|
movs r2, #12
|
|
movs r1, #255
|
|
muls r2, r3, r2
|
|
ldr r3, .L431+16
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
pop {r4, lr}
|
|
b FtlGcBufInit
|
|
.L432:
|
|
.align 2
|
|
.L431:
|
|
.word .LANCHOR68
|
|
.word .LANCHOR20
|
|
.word .LANCHOR69
|
|
.word .LANCHOR67
|
|
.word .LANCHOR70
|
|
.size FtlGcPageVarInit, .-FtlGcPageVarInit
|
|
.section .text.FlashGetBadBlockList,"ax",%progbits
|
|
.align 1
|
|
.global FlashGetBadBlockList
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FlashGetBadBlockList, %function
|
|
FlashGetBadBlockList:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
mov r2, #256
|
|
mov r5, r1
|
|
movs r1, #255
|
|
mov r4, r0
|
|
bl ftl_memset
|
|
ldr r3, .L440
|
|
mov r1, r5
|
|
mov r0, r4
|
|
ldr r3, [r3]
|
|
blx r3
|
|
uxth r0, r0
|
|
cmp r0, #50
|
|
bls .L434
|
|
mov r2, #256
|
|
movs r1, #255
|
|
mov r0, r4
|
|
bl ftl_memset
|
|
movs r0, #0
|
|
.L434:
|
|
ldr r3, .L440+4
|
|
ldrh r3, [r3, #14]
|
|
cmp r3, #4
|
|
bne .L439
|
|
add r1, r4, r0, lsl #1
|
|
mov r3, r4
|
|
.L436:
|
|
cmp r3, r1
|
|
bne .L437
|
|
.L439:
|
|
pop {r3, r4, r5, pc}
|
|
.L437:
|
|
ldrh r2, [r3]
|
|
lsrs r2, r2, #1
|
|
strh r2, [r3], #2 @ movhi
|
|
b .L436
|
|
.L441:
|
|
.align 2
|
|
.L440:
|
|
.word .LANCHOR77
|
|
.word .LANCHOR0
|
|
.size FlashGetBadBlockList, .-FlashGetBadBlockList
|
|
.section .text.ftl_memcpy,"ax",%progbits
|
|
.align 1
|
|
.global ftl_memcpy
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_memcpy, %function
|
|
ftl_memcpy:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b memcpy
|
|
.size ftl_memcpy, .-ftl_memcpy
|
|
.section .text.FlashReadPages,"ax",%progbits
|
|
.align 1
|
|
.global FlashReadPages
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FlashReadPages, %function
|
|
FlashReadPages:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov fp, r1
|
|
ldr r3, .L483
|
|
mov r4, r0
|
|
mov r10, #0
|
|
ldrh r2, [r3, #12]
|
|
str r3, [sp, #4]
|
|
str r2, [sp]
|
|
.L444:
|
|
cmp r10, fp
|
|
bne .L458
|
|
movs r0, #0
|
|
add sp, sp, #16
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L458:
|
|
ldr r3, [r4, #8]
|
|
cbz r3, .L445
|
|
ldr r3, [r4, #12]
|
|
cbnz r3, .L446
|
|
.L445:
|
|
movs r2, #90
|
|
ldr r1, .L483+4
|
|
ldr r0, .L483+8
|
|
bl printf
|
|
.L446:
|
|
add r2, sp, #8
|
|
add r1, sp, #12
|
|
ldr r0, [r4, #4]
|
|
bl l2p_addr_tran.isra.0
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #3
|
|
bls .L447
|
|
mov r3, #-1
|
|
str r3, [r4]
|
|
.L448:
|
|
add r10, r10, #1
|
|
adds r4, r4, #20
|
|
b .L444
|
|
.L447:
|
|
ldr r5, [r4, #8]
|
|
uxtb r0, r0
|
|
ldr r8, .L483+32
|
|
ldr r7, .L483+12
|
|
tst r5, #63
|
|
ldr r3, [r4, #12]
|
|
it ne
|
|
ldrne r5, [r8]
|
|
ldr r1, [sp, #12]
|
|
ldr r6, [r7, #12]
|
|
mov r2, r5
|
|
blx r6
|
|
ldr r3, [sp, #4]
|
|
str r0, [r4]
|
|
ldrh r3, [r3, #14]
|
|
cmp r3, #4
|
|
bne .L451
|
|
ldr r0, [sp]
|
|
add r2, r5, #2048
|
|
ldr r3, [r4, #12]
|
|
ldr r1, [sp, #12]
|
|
ldr r7, [r7, #12]
|
|
adds r3, r3, #8
|
|
add r1, r1, r0
|
|
ldrb r0, [sp, #8] @ zero_extendqisi2
|
|
blx r7
|
|
adds r1, r0, #1
|
|
beq .L452
|
|
ldr r3, [r4, #12]
|
|
ldr r2, [r3, #12]
|
|
adds r2, r2, #1
|
|
bne .L453
|
|
ldr r2, [r3, #8]
|
|
adds r2, r2, #1
|
|
bne .L453
|
|
ldr r3, [r3]
|
|
adds r3, r3, #1
|
|
beq .L453
|
|
.L452:
|
|
mov r3, #-1
|
|
str r3, [r4]
|
|
.L453:
|
|
ldr r3, [r4]
|
|
adds r3, r3, #1
|
|
beq .L454
|
|
cmp r0, #256
|
|
it eq
|
|
streq r0, [r4]
|
|
.L454:
|
|
ldr r3, [r4]
|
|
adds r2, r3, #1
|
|
beq .L455
|
|
cmp r3, #256
|
|
bne .L451
|
|
.L455:
|
|
ldr r1, [r4, #4]
|
|
ldr r2, [sp, #12]
|
|
ldr r0, .L483+16
|
|
bl printf
|
|
ldr r1, [r4, #8]
|
|
cbz r1, .L457
|
|
movs r3, #4
|
|
ldr r0, .L483+20
|
|
mov r2, r3
|
|
bl rknand_print_hex
|
|
.L457:
|
|
ldr r1, [r4, #12]
|
|
cbz r1, .L451
|
|
movs r3, #4
|
|
ldr r0, .L483+24
|
|
mov r2, r3
|
|
bl rknand_print_hex
|
|
.L451:
|
|
ldr r3, [r8]
|
|
cmp r5, r3
|
|
bne .L448
|
|
ldr r0, [r4, #8]
|
|
cmp r5, r0
|
|
beq .L448
|
|
ldr r3, .L483+28
|
|
mov r1, r5
|
|
ldrh r2, [r3]
|
|
lsls r2, r2, #9
|
|
bl ftl_memcpy
|
|
b .L448
|
|
.L484:
|
|
.align 2
|
|
.L483:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR136
|
|
.word .LC1
|
|
.word .LANCHOR77
|
|
.word .LC11
|
|
.word .LC12
|
|
.word .LC13
|
|
.word .LANCHOR11
|
|
.word .LANCHOR110
|
|
.size FlashReadPages, .-FlashReadPages
|
|
.section .text.FtlLoadFactoryBbt,"ax",%progbits
|
|
.align 1
|
|
.global FtlLoadFactoryBbt
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlLoadFactoryBbt, %function
|
|
FtlLoadFactoryBbt:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L495
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r6, #0
|
|
ldr r5, .L495+4
|
|
ldr r3, [r3]
|
|
ldr r7, .L495+8
|
|
ldr r10, .L495+20
|
|
str r3, [r5, #8]
|
|
ldr r3, .L495+12
|
|
ldr r8, [r3]
|
|
str r8, [r5, #12]
|
|
.L486:
|
|
ldr r3, .L495+16
|
|
ldrh r3, [r3]
|
|
cmp r6, r3
|
|
bcc .L491
|
|
movs r0, #0
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L491:
|
|
ldrh r4, [r10]
|
|
movw r3, #65535
|
|
ldr fp, .L495+4
|
|
strh r3, [r7, #2]! @ movhi
|
|
subs r4, r4, #1
|
|
uxth r4, r4
|
|
.L487:
|
|
ldrh r3, [r10]
|
|
sub r2, r3, #15
|
|
cmp r2, r4
|
|
bgt .L489
|
|
mla r3, r6, r3, r4
|
|
movs r2, #1
|
|
mov r1, r2
|
|
mov r0, fp
|
|
lsls r3, r3, #10
|
|
str r3, [r5, #4]
|
|
bl FlashReadPages
|
|
ldr r3, [r5]
|
|
adds r3, r3, #1
|
|
beq .L488
|
|
ldrh r2, [r8]
|
|
movw r3, #61664
|
|
cmp r2, r3
|
|
bne .L488
|
|
strh r4, [r7] @ movhi
|
|
.L489:
|
|
adds r6, r6, #1
|
|
b .L486
|
|
.L488:
|
|
subs r4, r4, #1
|
|
uxth r4, r4
|
|
b .L487
|
|
.L496:
|
|
.align 2
|
|
.L495:
|
|
.word .LANCHOR105
|
|
.word .LANCHOR137
|
|
.word .LANCHOR36+10
|
|
.word .LANCHOR113
|
|
.word .LANCHOR9
|
|
.word .LANCHOR16
|
|
.size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
|
|
.section .text.FtlGetLastWrittenPage,"ax",%progbits
|
|
.align 1
|
|
.global FtlGetLastWrittenPage
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGetLastWrittenPage, %function
|
|
FtlGetLastWrittenPage:
|
|
@ args = 0, pretend = 0, frame = 88
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
cmp r1, #1
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
it eq
|
|
ldreq r3, .L509
|
|
sub sp, sp, #88
|
|
lsl r7, r0, #10
|
|
mov r2, r1
|
|
it ne
|
|
ldrne r3, .L509+4
|
|
mov r6, r1
|
|
add r0, sp, #4
|
|
movs r1, #1
|
|
ldrh r5, [r3]
|
|
ldr r3, .L509+8
|
|
subs r5, r5, #1
|
|
ldr r3, [r3]
|
|
sxth r5, r5
|
|
str r3, [sp, #12]
|
|
add r3, sp, #24
|
|
str r3, [sp, #16]
|
|
orr r3, r5, r7
|
|
str r3, [sp, #8]
|
|
bl FlashReadPages
|
|
ldr r3, [sp, #24]
|
|
adds r3, r3, #1
|
|
bne .L500
|
|
mov r8, #0
|
|
.L501:
|
|
cmp r8, r5
|
|
ble .L504
|
|
.L500:
|
|
mov r0, r5
|
|
add sp, sp, #88
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L504:
|
|
add r3, r8, r5
|
|
mov r2, r6
|
|
add r3, r3, r3, lsr #31
|
|
movs r1, #1
|
|
add r0, sp, #4
|
|
asrs r4, r3, #1
|
|
sxth r3, r4
|
|
orrs r3, r3, r7
|
|
str r3, [sp, #8]
|
|
bl FlashReadPages
|
|
ldr r3, [sp, #24]
|
|
adds r3, r3, #1
|
|
bne .L502
|
|
ldr r3, [sp, #28]
|
|
adds r3, r3, #1
|
|
bne .L502
|
|
ldr r3, [sp, #4]
|
|
adds r3, r3, #1
|
|
beq .L502
|
|
subs r4, r4, #1
|
|
sxth r5, r4
|
|
b .L501
|
|
.L502:
|
|
adds r4, r4, #1
|
|
sxth r8, r4
|
|
b .L501
|
|
.L510:
|
|
.align 2
|
|
.L509:
|
|
.word .LANCHOR19
|
|
.word .LANCHOR18
|
|
.word .LANCHOR111
|
|
.size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
|
|
.section .text.FtlScanSysBlk,"ax",%progbits
|
|
.align 1
|
|
.global FtlScanSysBlk
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlScanSysBlk, %function
|
|
FtlScanSysBlk:
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r4, #0
|
|
ldr r5, .L592
|
|
sub sp, sp, #32
|
|
mov r1, r4
|
|
ldr r3, .L592+4
|
|
ldr r2, [r5]
|
|
ldr r6, .L592+8
|
|
strh r4, [r3] @ movhi
|
|
ldr r3, .L592+12
|
|
lsls r2, r2, #2
|
|
strh r4, [r6] @ movhi
|
|
ldr r7, .L592+16
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
ldr r2, [r5]
|
|
mov r1, r4
|
|
ldr r3, .L592+20
|
|
lsls r2, r2, #1
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
ldrh r2, [r7]
|
|
mov r1, r4
|
|
ldr r3, .L592+24
|
|
lsls r2, r2, #2
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
ldrh r2, [r7]
|
|
mov r1, r4
|
|
ldr r3, .L592+28
|
|
lsls r2, r2, #1
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
movs r2, #16
|
|
movs r1, #255
|
|
ldr r0, .L592+32
|
|
bl ftl_memset
|
|
ldr r3, .L592+36
|
|
str r6, [sp, #12]
|
|
str r5, [sp, #16]
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #4]
|
|
.L512:
|
|
ldr r3, .L592+40
|
|
ldr r2, [sp, #4]
|
|
ldrh r3, [r3]
|
|
cmp r3, r2
|
|
bls .L553
|
|
ldr r3, .L592+44
|
|
movs r5, #0
|
|
ldr r1, .L592+48
|
|
mov fp, r5
|
|
movs r7, #20
|
|
ldrh r8, [r3]
|
|
ldr r3, .L592+52
|
|
ldr r2, [r1]
|
|
ldr r1, .L592+56
|
|
ldr r6, [r3]
|
|
ldr r3, .L592+60
|
|
str r2, [sp, #8]
|
|
ldrh r10, [r1]
|
|
ldr r3, [r3]
|
|
ldr r2, .L592+64
|
|
b .L554
|
|
.L514:
|
|
ldrb r0, [r2, r5] @ zero_extendqisi2
|
|
ldr r1, [sp, #4]
|
|
str r3, [sp, #28]
|
|
str r2, [sp, #24]
|
|
bl V2P_block
|
|
str r0, [sp, #20]
|
|
bl FtlBbmIsBadBlock
|
|
ldr r2, [sp, #24]
|
|
ldr r3, [sp, #28]
|
|
cbnz r0, .L513
|
|
ldr r1, [sp, #20]
|
|
mla r0, r7, fp, r6
|
|
ldr r4, [sp, #8]
|
|
lsls r1, r1, #10
|
|
str r3, [r0, #8]
|
|
str r1, [r0, #4]
|
|
mul r1, r10, fp
|
|
bic r1, r1, #3
|
|
add r1, r1, r4
|
|
str r1, [r0, #12]
|
|
add r1, fp, #1
|
|
uxth fp, r1
|
|
.L513:
|
|
adds r5, r5, #1
|
|
.L554:
|
|
uxth r1, r5
|
|
cmp r8, r1
|
|
bhi .L514
|
|
cmp fp, #0
|
|
bne .L515
|
|
.L552:
|
|
ldr r3, [sp, #4]
|
|
adds r3, r3, #1
|
|
uxth r3, r3
|
|
str r3, [sp, #4]
|
|
b .L512
|
|
.L515:
|
|
movs r7, #0
|
|
movs r2, #1
|
|
mov r1, fp
|
|
mov r0, r6
|
|
bl FlashReadPages
|
|
.L516:
|
|
uxth r3, r7
|
|
cmp fp, r3
|
|
bls .L552
|
|
ldr r3, .L592+52
|
|
mov r8, #20
|
|
mul r8, r8, r7
|
|
ldr r3, [r3]
|
|
add r2, r3, r8
|
|
ldr r3, [r3, r8]
|
|
ldr r5, [r2, #4]
|
|
ldr r6, [r2, #12]
|
|
adds r3, r3, #1
|
|
ubfx r5, r5, #10, #16
|
|
bne .L519
|
|
mov r10, #16
|
|
.L521:
|
|
ldr r3, .L592+52
|
|
movs r2, #1
|
|
mov r1, r2
|
|
ldr r0, [r3]
|
|
add r0, r0, r8
|
|
ldr r3, [r0, #4]
|
|
adds r3, r3, #1
|
|
str r3, [r0, #4]
|
|
bl FlashReadPages
|
|
ldrh r2, [r6]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
ldr r3, .L592+52
|
|
ldr r3, [r3]
|
|
bne .L518
|
|
mov r2, #-1
|
|
str r2, [r3, r8]
|
|
ldr r3, .L592+52
|
|
ldr r3, [r3]
|
|
ldr r3, [r3, r8]
|
|
cmp r3, r2
|
|
bne .L519
|
|
.L520:
|
|
movs r1, #1
|
|
b .L591
|
|
.L518:
|
|
ldr r3, [r3, r8]
|
|
adds r3, r3, #1
|
|
bne .L519
|
|
add r10, r10, #-1
|
|
uxth r10, r10
|
|
cmp r10, #0
|
|
bne .L521
|
|
b .L520
|
|
.L519:
|
|
ldr r3, .L592+68
|
|
ldr r2, [r3]
|
|
ldr r3, [r6, #4]
|
|
adds r1, r2, #1
|
|
beq .L522
|
|
cmp r2, r3
|
|
bhi .L523
|
|
.L522:
|
|
adds r2, r3, #1
|
|
ittt ne
|
|
ldrne r1, .L592+68
|
|
addne r2, r3, #1
|
|
strne r2, [r1]
|
|
.L523:
|
|
ldrh r2, [r6]
|
|
movw r1, #61604
|
|
cmp r2, r1
|
|
beq .L525
|
|
bhi .L526
|
|
movw r3, #61574
|
|
cmp r2, r3
|
|
beq .L527
|
|
.L524:
|
|
adds r7, r7, #1
|
|
b .L516
|
|
.L526:
|
|
movw r3, #61634
|
|
cmp r2, r3
|
|
beq .L528
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L524
|
|
movs r1, #0
|
|
.L591:
|
|
mov r0, r5
|
|
bl FtlFreeSysBlkQueueIn
|
|
b .L524
|
|
.L528:
|
|
ldr r3, .L592+8
|
|
ldrh r2, [r3]
|
|
ldr r3, .L592
|
|
ldr r3, [r3]
|
|
cmp r2, r3
|
|
bls .L530
|
|
mov r2, #1232
|
|
ldr r1, .L592+72
|
|
ldr r0, .L592+76
|
|
bl printf
|
|
.L530:
|
|
ldr r3, [sp, #16]
|
|
ldr r2, [sp, #12]
|
|
ldr r1, [r3]
|
|
ldrh r0, [r2]
|
|
ldr r2, .L592+12
|
|
uxth r10, r1
|
|
ldr ip, [r2]
|
|
add r3, r10, #-1
|
|
sub r10, r10, r0
|
|
add r10, r10, #-1
|
|
sxth r3, r3
|
|
sxth r10, r10
|
|
.L531:
|
|
cmp r3, r10
|
|
bgt .L537
|
|
cmp r3, #0
|
|
bge .L569
|
|
b .L524
|
|
.L537:
|
|
ldr r2, [ip, r3, lsl #2]
|
|
add r8, ip, r3, lsl #2
|
|
ldr r4, [r6, #4]
|
|
cmp r4, r2
|
|
bls .L532
|
|
ldr r2, [ip]
|
|
cbnz r2, .L533
|
|
cmp r1, r0
|
|
ittt ne
|
|
ldrne r2, .L592+8
|
|
addne r0, r0, #1
|
|
strhne r0, [r2] @ movhi
|
|
.L533:
|
|
ldr r2, .L592+20
|
|
uxth r10, r3
|
|
ldr r0, [r2]
|
|
movs r2, #0
|
|
.L534:
|
|
uxth lr, r2
|
|
sxth r1, r2
|
|
cmp r10, lr
|
|
bhi .L535
|
|
ldr r2, [r6, #4]
|
|
cmp r3, #0
|
|
str r2, [r8]
|
|
strh r5, [r0, r3, lsl #1] @ movhi
|
|
blt .L524
|
|
ldr r2, .L592+8
|
|
ldrh r0, [r2]
|
|
ldr r2, .L592
|
|
ldr r2, [r2]
|
|
subs r2, r2, r0
|
|
subs r2, r2, #1
|
|
sxth r2, r2
|
|
cmp r3, r2
|
|
bgt .L524
|
|
.L569:
|
|
ldr r2, .L592+8
|
|
adds r0, r0, #1
|
|
strh r0, [r2] @ movhi
|
|
ldr r2, [r6, #4]
|
|
str r2, [ip, r3, lsl #2]
|
|
ldr r2, .L592+20
|
|
.L589:
|
|
ldr r2, [r2]
|
|
strh r5, [r2, r3, lsl #1] @ movhi
|
|
b .L524
|
|
.L535:
|
|
add lr, ip, r1, lsl #2
|
|
adds r2, r2, #1
|
|
ldr r4, [lr, #4]
|
|
add lr, r0, r1, lsl #1
|
|
ldrh lr, [lr, #2]
|
|
str r4, [ip, r1, lsl #2]
|
|
strh lr, [r0, r1, lsl #1] @ movhi
|
|
b .L534
|
|
.L532:
|
|
subs r3, r3, #1
|
|
sxth r3, r3
|
|
b .L531
|
|
.L593:
|
|
.align 2
|
|
.L592:
|
|
.word .LANCHOR29
|
|
.word .LANCHOR34
|
|
.word .LANCHOR129
|
|
.word .LANCHOR124
|
|
.word .LANCHOR26
|
|
.word .LANCHOR118
|
|
.word .LANCHOR121
|
|
.word .LANCHOR35
|
|
.word .LANCHOR138
|
|
.word .LANCHOR4
|
|
.word .LANCHOR5
|
|
.word .LANCHOR2
|
|
.word .LANCHOR64
|
|
.word .LANCHOR102
|
|
.word .LANCHOR23
|
|
.word .LANCHOR63
|
|
.word .LANCHOR12
|
|
.word .LANCHOR81
|
|
.word .LANCHOR139
|
|
.word .LC1
|
|
.L527:
|
|
ldr r8, .L594+12
|
|
ldr r10, .L594+20
|
|
ldrh r2, [r8]
|
|
ldrh r3, [r10]
|
|
cmp r2, r3
|
|
bls .L540
|
|
movw r2, #1273
|
|
ldr r1, .L594
|
|
ldr r0, .L594+4
|
|
bl printf
|
|
.L540:
|
|
ldr r2, .L594+8
|
|
ldrh lr, [r10]
|
|
ldrh ip, [r8]
|
|
ldr r0, [r2]
|
|
add r10, lr, #-1
|
|
sxth r3, r10
|
|
sub r10, r10, ip
|
|
.L541:
|
|
cmp r3, r10
|
|
ble .L546
|
|
ldr r1, [r6, #4]
|
|
add r8, r0, r3, lsl #2
|
|
ldr r2, [r0, r3, lsl #2]
|
|
cmp r1, r2
|
|
bls .L542
|
|
ldr r2, [r0]
|
|
cbnz r2, .L543
|
|
cmp lr, ip
|
|
ittt ne
|
|
ldrne r2, .L594+12
|
|
addne ip, ip, #1
|
|
strhne ip, [r2] @ movhi
|
|
.L543:
|
|
ldr r2, .L594+16
|
|
uxth r10, r3
|
|
ldr ip, [r2]
|
|
movs r2, #0
|
|
.L544:
|
|
uxth lr, r2
|
|
sxth r1, r2
|
|
cmp r10, lr
|
|
bhi .L545
|
|
ldr r2, [r6, #4]
|
|
str r2, [r8]
|
|
strh r5, [ip, r3, lsl #1] @ movhi
|
|
.L546:
|
|
cmp r3, #0
|
|
blt .L524
|
|
ldr r2, .L594+20
|
|
ldr ip, .L594+12
|
|
ldrh r2, [r2]
|
|
ldrh r1, [ip]
|
|
subs r2, r2, #1
|
|
subs r2, r2, r1
|
|
sxth r2, r2
|
|
cmp r3, r2
|
|
bgt .L524
|
|
ldr r2, [r6, #4]
|
|
adds r1, r1, #1
|
|
strh r1, [ip] @ movhi
|
|
str r2, [r0, r3, lsl #2]
|
|
ldr r2, .L594+16
|
|
b .L589
|
|
.L545:
|
|
add lr, r0, r1, lsl #2
|
|
adds r2, r2, #1
|
|
ldr r4, [lr, #4]
|
|
add lr, ip, r1, lsl #1
|
|
ldrh lr, [lr, #2]
|
|
str r4, [r0, r1, lsl #2]
|
|
strh lr, [ip, r1, lsl #1] @ movhi
|
|
b .L544
|
|
.L542:
|
|
subs r3, r3, #1
|
|
sxth r3, r3
|
|
b .L541
|
|
.L525:
|
|
ldr r8, .L594+40
|
|
movw r2, #65535
|
|
ldrh r1, [r8]
|
|
cmp r1, r2
|
|
bne .L548
|
|
.L590:
|
|
strh r5, [r8] @ movhi
|
|
str r3, [r8, #8]
|
|
b .L524
|
|
.L548:
|
|
ldrh r0, [r8, #4]
|
|
cmp r0, r2
|
|
beq .L549
|
|
movs r1, #1
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L549:
|
|
ldr r3, [r6, #4]
|
|
ldr r2, [r8, #8]
|
|
cmp r2, r3
|
|
bcs .L550
|
|
ldrh r2, [r8]
|
|
strh r2, [r8, #4] @ movhi
|
|
b .L590
|
|
.L550:
|
|
strh r5, [r8, #4] @ movhi
|
|
b .L524
|
|
.L553:
|
|
ldr r3, .L594+24
|
|
ldr r2, [r3]
|
|
ldrh r3, [r2]
|
|
cbz r3, .L555
|
|
.L558:
|
|
ldr r3, .L594+16
|
|
ldr r4, [r3]
|
|
ldrh r2, [r4]
|
|
cmp r2, #0
|
|
beq .L556
|
|
.L557:
|
|
ldr r3, .L594+28
|
|
ldrh r2, [r3]
|
|
ldr r3, .L594+32
|
|
ldr r3, [r3]
|
|
cmp r2, r3
|
|
bls .L588
|
|
movw r2, #1398
|
|
ldr r1, .L594
|
|
ldr r0, .L594+4
|
|
bl printf
|
|
.L588:
|
|
movs r0, #0
|
|
add sp, sp, #32
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L555:
|
|
ldr r1, .L594+28
|
|
ldrh r1, [r1]
|
|
cmp r1, #0
|
|
beq .L558
|
|
ldr r5, .L594+32
|
|
ldr r0, [r5]
|
|
.L559:
|
|
sxth r1, r3
|
|
cmp r1, r0
|
|
bcs .L558
|
|
ldrh r4, [r2, r1, lsl #1]
|
|
adds r3, r3, #1
|
|
cmp r4, #0
|
|
beq .L559
|
|
ldr r3, .L594+36
|
|
movs r6, #0
|
|
ldr r0, [r3]
|
|
mov r3, r1
|
|
.L560:
|
|
ldr r4, [r5]
|
|
cmp r3, r4
|
|
bcs .L558
|
|
ldrh r7, [r2, r3, lsl #1]
|
|
subs r4, r3, r1
|
|
strh r7, [r2, r4, lsl #1] @ movhi
|
|
ldr r7, [r0, r3, lsl #2]
|
|
str r7, [r0, r4, lsl #2]
|
|
strh r6, [r2, r3, lsl #1] @ movhi
|
|
adds r3, r3, #1
|
|
sxth r3, r3
|
|
b .L560
|
|
.L556:
|
|
ldr r3, .L594+12
|
|
ldrh r3, [r3]
|
|
cmp r3, #0
|
|
beq .L557
|
|
ldr r5, .L594+20
|
|
ldrh r1, [r5]
|
|
.L565:
|
|
sxth r3, r2
|
|
cmp r3, r1
|
|
mov r6, r3
|
|
bge .L557
|
|
ldrh r0, [r4, r3, lsl #1]
|
|
adds r2, r2, #1
|
|
cmp r0, #0
|
|
beq .L565
|
|
ldr r2, .L594+8
|
|
movs r0, #0
|
|
ldr r2, [r2]
|
|
.L566:
|
|
ldrh r1, [r5]
|
|
cmp r3, r1
|
|
bge .L557
|
|
ldrh r7, [r4, r3, lsl #1]
|
|
subs r1, r3, r6
|
|
strh r7, [r4, r1, lsl #1] @ movhi
|
|
ldr r7, [r2, r3, lsl #2]
|
|
str r7, [r2, r1, lsl #2]
|
|
adds r1, r3, #1
|
|
strh r0, [r4, r3, lsl #1] @ movhi
|
|
sxth r3, r1
|
|
b .L566
|
|
.L595:
|
|
.align 2
|
|
.L594:
|
|
.word .LANCHOR139
|
|
.word .LC1
|
|
.word .LANCHOR121
|
|
.word .LANCHOR34
|
|
.word .LANCHOR35
|
|
.word .LANCHOR26
|
|
.word .LANCHOR118
|
|
.word .LANCHOR129
|
|
.word .LANCHOR29
|
|
.word .LANCHOR124
|
|
.word .LANCHOR138
|
|
.size FtlScanSysBlk, .-FtlScanSysBlk
|
|
.section .text.FtlLoadBbt,"ax",%progbits
|
|
.align 1
|
|
.global FtlLoadBbt
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlLoadBbt, %function
|
|
FtlLoadBbt:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, r8, r10, lr}
|
|
ldr r8, .L625+40
|
|
ldr r4, .L625
|
|
ldr r3, [r8]
|
|
ldr r7, .L625+4
|
|
mov r10, r4
|
|
str r3, [r4, #8]
|
|
ldr r3, .L625+8
|
|
ldr r6, [r3]
|
|
str r6, [r4, #12]
|
|
bl FtlBbtMemInit
|
|
ldrh r5, [r7]
|
|
subs r5, r5, #1
|
|
uxth r5, r5
|
|
.L597:
|
|
ldrh r3, [r7]
|
|
subs r3, r3, #15
|
|
cmp r3, r5
|
|
bgt .L600
|
|
lsls r3, r5, #10
|
|
movs r2, #1
|
|
mov r1, r2
|
|
mov r0, r10
|
|
str r3, [r4, #4]
|
|
bl FlashReadPages
|
|
ldr r3, [r4]
|
|
adds r3, r3, #1
|
|
bne .L598
|
|
ldr r3, [r4, #4]
|
|
movs r2, #1
|
|
mov r1, r2
|
|
mov r0, r10
|
|
adds r3, r3, #1
|
|
str r3, [r4, #4]
|
|
bl FlashReadPages
|
|
.L598:
|
|
ldr r3, [r4]
|
|
adds r3, r3, #1
|
|
beq .L599
|
|
ldrh r2, [r6]
|
|
movw r3, #61649
|
|
cmp r2, r3
|
|
bne .L599
|
|
ldr r3, .L625+12
|
|
ldr r2, [r6, #4]
|
|
strh r5, [r3] @ movhi
|
|
str r2, [r3, #8]
|
|
ldrh r2, [r6, #8]
|
|
strh r2, [r3, #4] @ movhi
|
|
.L600:
|
|
ldr r5, .L625+12
|
|
movw r2, #65535
|
|
ldrh r3, [r5]
|
|
cmp r3, r2
|
|
beq .L614
|
|
ldrh r3, [r5, #4]
|
|
cmp r3, r2
|
|
beq .L604
|
|
lsls r3, r3, #10
|
|
movs r2, #1
|
|
mov r1, r2
|
|
ldr r0, .L625
|
|
str r3, [r4, #4]
|
|
bl FlashReadPages
|
|
ldr r3, [r4]
|
|
adds r3, r3, #1
|
|
beq .L604
|
|
ldrh r2, [r6]
|
|
movw r3, #61649
|
|
cmp r2, r3
|
|
bne .L604
|
|
ldr r3, [r6, #4]
|
|
ldr r2, [r5, #8]
|
|
cmp r3, r2
|
|
bls .L604
|
|
ldrh r2, [r5, #4]
|
|
str r3, [r5, #8]
|
|
ldrh r3, [r6, #8]
|
|
strh r2, [r5] @ movhi
|
|
strh r3, [r5, #4] @ movhi
|
|
.L604:
|
|
ldr r10, .L625
|
|
movs r1, #1
|
|
ldrh r0, [r5]
|
|
bl FtlGetLastWrittenPage
|
|
sxth r7, r0
|
|
adds r0, r0, #1
|
|
strh r0, [r5, #2] @ movhi
|
|
.L606:
|
|
cmp r7, #0
|
|
bge .L609
|
|
movs r2, #251
|
|
ldr r1, .L625+16
|
|
ldr r0, .L625+20
|
|
bl printf
|
|
.L608:
|
|
ldrh r3, [r6, #10]
|
|
ldrh r0, [r6, #12]
|
|
strh r3, [r5, #6] @ movhi
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
beq .L611
|
|
ldr r3, .L625+24
|
|
ldr r2, [r3]
|
|
cmp r0, r2
|
|
beq .L611
|
|
ldr r3, .L625+28
|
|
ldrh r3, [r3]
|
|
lsrs r3, r3, #2
|
|
cmp r2, r3
|
|
bcs .L611
|
|
cmp r0, r3
|
|
bcs .L611
|
|
bl FtlSysBlkNumInit
|
|
.L611:
|
|
ldr r6, .L625+32
|
|
movs r5, #0
|
|
ldr r7, .L625+36
|
|
ldr r8, .L625+44
|
|
.L612:
|
|
ldrh r3, [r7]
|
|
cmp r5, r3
|
|
bcc .L613
|
|
movs r0, #0
|
|
pop {r3, r4, r5, r6, r7, r8, r10, pc}
|
|
.L599:
|
|
subs r5, r5, #1
|
|
uxth r5, r5
|
|
b .L597
|
|
.L609:
|
|
ldrh r3, [r5]
|
|
movs r2, #1
|
|
mov r1, r2
|
|
mov r0, r10
|
|
orr r3, r7, r3, lsl #10
|
|
str r3, [r4, #4]
|
|
ldr r3, [r8]
|
|
str r3, [r4, #8]
|
|
bl FlashReadPages
|
|
ldr r3, [r4]
|
|
adds r3, r3, #1
|
|
beq .L607
|
|
ldrh r2, [r6]
|
|
movw r3, #61649
|
|
cmp r2, r3
|
|
beq .L608
|
|
.L607:
|
|
subs r7, r7, #1
|
|
sxth r7, r7
|
|
b .L606
|
|
.L613:
|
|
ldrh r2, [r8]
|
|
ldr r1, [r4, #8]
|
|
ldr r0, [r6, #4]!
|
|
lsls r2, r2, #2
|
|
mla r1, r5, r2, r1
|
|
adds r5, r5, #1
|
|
bl ftl_memcpy
|
|
b .L612
|
|
.L614:
|
|
mov r0, #-1
|
|
pop {r3, r4, r5, r6, r7, r8, r10, pc}
|
|
.L626:
|
|
.align 2
|
|
.L625:
|
|
.word .LANCHOR137
|
|
.word .LANCHOR16
|
|
.word .LANCHOR113
|
|
.word .LANCHOR36
|
|
.word .LANCHOR140
|
|
.word .LC1
|
|
.word .LANCHOR1
|
|
.word .LANCHOR5
|
|
.word .LANCHOR36+24
|
|
.word .LANCHOR9
|
|
.word .LANCHOR105
|
|
.word .LANCHOR126
|
|
.size FtlLoadBbt, .-FtlLoadBbt
|
|
.section .text.FlashProgPages,"ax",%progbits
|
|
.align 1
|
|
.global FlashProgPages
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FlashProgPages, %function
|
|
FlashProgPages:
|
|
@ args = 0, pretend = 0, frame = 48
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L667
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
sub sp, sp, #56
|
|
ldr fp, .L667+52
|
|
mov r10, r1
|
|
mov r4, r0
|
|
mov r5, r0
|
|
ldrh r3, [r3, #12]
|
|
mov r8, #0
|
|
str r2, [sp, #20]
|
|
str r3, [sp, #12]
|
|
lsls r3, r3, #3
|
|
str r3, [sp, #16]
|
|
.L628:
|
|
cmp r8, r10
|
|
bne .L641
|
|
ldr fp, .L667+44
|
|
movs r5, #0
|
|
.L642:
|
|
cmp r8, r5
|
|
beq .L665
|
|
ldr r7, .L667+4
|
|
movs r1, #0
|
|
ldr r2, [fp]
|
|
add r0, sp, #36
|
|
ldr r3, [r7]
|
|
str r1, [r2]
|
|
str r1, [r3]
|
|
ldr r1, [r4, #4]
|
|
str r2, [sp, #44]
|
|
ldr r2, [sp, #20]
|
|
str r1, [sp, #40]
|
|
movs r1, #1
|
|
str r3, [sp, #48]
|
|
bl FlashReadPages
|
|
ldr r10, [sp, #36]
|
|
cmp r10, #-1
|
|
bne .L643
|
|
ldr r1, [r4, #4]
|
|
ldr r0, .L667+8
|
|
bl printf
|
|
str r10, [r4]
|
|
.L643:
|
|
ldr r10, [sp, #36]
|
|
cmp r10, #256
|
|
bne .L644
|
|
ldr r1, [r4, #4]
|
|
ldr r0, .L667+12
|
|
bl printf
|
|
str r10, [r4]
|
|
.L644:
|
|
ldr r3, [r4, #12]
|
|
cbz r3, .L645
|
|
ldr r1, [r7]
|
|
ldr r2, [r3]
|
|
ldr r0, [r1]
|
|
cmp r2, r0
|
|
bne .L646
|
|
ldr r7, [r3, #8]
|
|
ldr r6, [r1, #8]
|
|
cmp r7, r6
|
|
beq .L645
|
|
.L646:
|
|
ldr r1, [r1, #4]
|
|
stm sp, {r0, r1}
|
|
ldr r0, .L667+16
|
|
ldr r3, [r3, #4]
|
|
ldr r1, [r4, #4]
|
|
bl printf
|
|
mov r3, #-1
|
|
str r3, [r4]
|
|
.L645:
|
|
ldr r3, [r4, #8]
|
|
cbz r3, .L647
|
|
ldr r1, [fp]
|
|
ldr r2, [r3]
|
|
ldr r0, [r1]
|
|
cmp r2, r0
|
|
bne .L648
|
|
ldr r7, [r3, #2048]
|
|
ldr r6, [r1, #2048]
|
|
cmp r7, r6
|
|
beq .L647
|
|
.L648:
|
|
ldr r1, [r1, #4]
|
|
stm sp, {r0, r1}
|
|
ldr r0, .L667+20
|
|
ldr r3, [r3, #4]
|
|
ldr r1, [r4, #4]
|
|
bl printf
|
|
mov r3, #-1
|
|
str r3, [r4]
|
|
.L647:
|
|
adds r5, r5, #1
|
|
adds r4, r4, #20
|
|
b .L642
|
|
.L641:
|
|
ldr r3, [r5, #8]
|
|
cbz r3, .L629
|
|
ldr r3, [r5, #12]
|
|
cbnz r3, .L630
|
|
.L629:
|
|
movs r2, #142
|
|
ldr r1, .L667+24
|
|
ldr r0, .L667+28
|
|
bl printf
|
|
.L630:
|
|
add r2, sp, #28
|
|
add r1, sp, #32
|
|
ldr r0, [r5, #4]
|
|
bl l2p_addr_tran.isra.0
|
|
ldr r6, [sp, #28]
|
|
cmp r6, #3
|
|
bls .L631
|
|
.L666:
|
|
mov r3, #-1
|
|
str r3, [r5]
|
|
b .L632
|
|
.L631:
|
|
cbnz r6, .L633
|
|
ldr r3, [sp, #32]
|
|
ldr r2, [sp, #16]
|
|
cmp r2, r3
|
|
bls .L633
|
|
ldr r5, .L667+24
|
|
ldr r7, .L667+32
|
|
b .L664
|
|
.L635:
|
|
mov r3, #-1
|
|
ldr r2, [r4, #-16]
|
|
str r3, [r4, #-20]
|
|
mov r1, r5
|
|
mov r0, r7
|
|
adds r6, r6, #1
|
|
bl printf
|
|
movs r3, #16
|
|
movs r2, #4
|
|
ldr r1, [r4, #-12]
|
|
ldr r0, .L667+36
|
|
bl rknand_print_hex
|
|
movs r3, #4
|
|
ldr r1, [r4, #-8]
|
|
mov r2, r3
|
|
ldr r0, .L667+40
|
|
bl rknand_print_hex
|
|
.L664:
|
|
cmp r6, r10
|
|
add r4, r4, #20
|
|
bne .L635
|
|
.L665:
|
|
movs r0, #0
|
|
add sp, sp, #56
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L633:
|
|
ldr r1, [r5, #8]
|
|
lsls r3, r1, #26
|
|
beq .L651
|
|
ldr r3, .L667+44
|
|
ldr r6, [r3]
|
|
cmp r1, r6
|
|
beq .L636
|
|
ldr r3, .L667+48
|
|
mov r0, r6
|
|
ldrh r2, [r3]
|
|
lsls r2, r2, #9
|
|
bl ftl_memcpy
|
|
.L636:
|
|
ldr r3, [r5, #12]
|
|
mov r2, r6
|
|
ldr r1, [sp, #32]
|
|
ldrb r0, [sp, #28] @ zero_extendqisi2
|
|
ldr r7, [fp, #8]
|
|
blx r7
|
|
cbnz r0, .L637
|
|
str r0, [r5]
|
|
.L638:
|
|
ldr r3, .L667
|
|
ldrh r3, [r3, #14]
|
|
cmp r3, #4
|
|
bne .L632
|
|
ldr r0, [sp, #12]
|
|
add r2, r6, #2048
|
|
ldr r3, [r5, #12]
|
|
ldr r1, [sp, #32]
|
|
ldr r6, [fp, #8]
|
|
adds r3, r3, #8
|
|
add r1, r1, r0
|
|
ldrb r0, [sp, #28] @ zero_extendqisi2
|
|
blx r6
|
|
cmp r0, #0
|
|
bne .L666
|
|
.L632:
|
|
add r8, r8, #1
|
|
adds r5, r5, #20
|
|
b .L628
|
|
.L651:
|
|
mov r6, r1
|
|
b .L636
|
|
.L637:
|
|
mov r3, #-1
|
|
str r3, [r5]
|
|
b .L638
|
|
.L668:
|
|
.align 2
|
|
.L667:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR112
|
|
.word .LC14
|
|
.word .LC15
|
|
.word .LC16
|
|
.word .LC17
|
|
.word .LANCHOR141
|
|
.word .LC1
|
|
.word .LC6
|
|
.word .LC7
|
|
.word .LC8
|
|
.word .LANCHOR110
|
|
.word .LANCHOR11
|
|
.word .LANCHOR77
|
|
.size FlashProgPages, .-FlashProgPages
|
|
.section .text.FtlLowFormatEraseBlock,"ax",%progbits
|
|
.align 1
|
|
.global FtlLowFormatEraseBlock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlLowFormatEraseBlock, %function
|
|
FtlLowFormatEraseBlock:
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L712
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
sub sp, sp, #32
|
|
ldr r7, .L712+4
|
|
mov r8, #0
|
|
mov r6, r1
|
|
mov r5, r8
|
|
str r0, [r3]
|
|
mov r4, r8
|
|
ldr r3, .L712+8
|
|
mov fp, #20
|
|
ldr r10, [r7]
|
|
str r0, [sp, #4]
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #12]
|
|
ldr r3, .L712+12
|
|
ldr r3, [r3]
|
|
str r3, [sp, #16]
|
|
ldr r3, .L712+16
|
|
ldr r3, [r3]
|
|
str r3, [sp, #20]
|
|
ldr r3, .L712+20
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #24]
|
|
.L670:
|
|
ldr r3, [sp, #12]
|
|
uxth r2, r8
|
|
cmp r3, r2
|
|
bhi .L674
|
|
cmp r5, #0
|
|
beq .L669
|
|
mov r0, r10
|
|
mov r8, #0
|
|
mov r10, #20
|
|
mov r2, r5
|
|
movs r1, #0
|
|
bl FlashEraseBlocks
|
|
.L677:
|
|
uxth r3, r8
|
|
cmp r5, r3
|
|
bhi .L679
|
|
cmp r6, #0
|
|
beq .L695
|
|
ldr r3, .L712+24
|
|
mov r10, #1
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #8]
|
|
.L680:
|
|
movs r7, #0
|
|
.L689:
|
|
ldr r3, .L712+8
|
|
mov r8, #0
|
|
mov r5, r8
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #16]
|
|
ldr r3, .L712+4
|
|
ldr fp, [r3]
|
|
ldr r3, .L712+28
|
|
ldr r3, [r3]
|
|
str r3, [sp, #20]
|
|
ldr r3, .L712+12
|
|
ldr r3, [r3]
|
|
str r3, [sp, #24]
|
|
ldr r3, .L712+20
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #28]
|
|
.L681:
|
|
ldr r3, [sp, #16]
|
|
uxth r2, r8
|
|
cmp r3, r2
|
|
bhi .L684
|
|
cbz r5, .L669
|
|
mov r0, fp
|
|
ldr fp, .L712+4
|
|
movs r3, #1
|
|
mov r2, r10
|
|
mov r1, r5
|
|
mov r8, #0
|
|
bl FlashProgPages
|
|
movs r3, #20
|
|
.L686:
|
|
uxth r2, r8
|
|
cmp r5, r2
|
|
bhi .L688
|
|
adds r7, r7, #1
|
|
ldr r2, [sp, #8]
|
|
uxth r3, r7
|
|
cmp r2, r3
|
|
bhi .L689
|
|
ldr r8, .L712+4
|
|
movs r7, #0
|
|
mov fp, #20
|
|
.L690:
|
|
uxth r3, r7
|
|
cmp r5, r3
|
|
bhi .L692
|
|
ldr r3, [sp, #4]
|
|
cmp r3, #63
|
|
bls .L693
|
|
cbz r6, .L669
|
|
.L693:
|
|
ldr r3, .L712+4
|
|
mov r2, r5
|
|
mov r1, r10
|
|
ldr r0, [r3]
|
|
bl FlashEraseBlocks
|
|
.L669:
|
|
mov r0, r4
|
|
add sp, sp, #32
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L674:
|
|
mul r2, fp, r8
|
|
movs r3, #0
|
|
ldr r1, [sp, #4]
|
|
str r3, [r10, r2]
|
|
ldr r3, .L712+32
|
|
ldrb r0, [r3, r8] @ zero_extendqisi2
|
|
bl V2P_block
|
|
str r0, [sp, #8]
|
|
cbz r6, .L671
|
|
bl IsBlkInVendorPart
|
|
cbnz r0, .L672
|
|
.L671:
|
|
ldr r0, [sp, #8]
|
|
bl FtlBbmIsBadBlock
|
|
cbnz r0, .L673
|
|
ldr r3, [sp, #8]
|
|
mla r1, fp, r5, r10
|
|
lsls r2, r3, #10
|
|
ldr r3, [sp, #16]
|
|
str r2, [r1, #4]
|
|
str r3, [r1, #8]
|
|
ldr r3, [sp, #24]
|
|
mul r2, r3, r5
|
|
ldr r3, [sp, #20]
|
|
adds r5, r5, #1
|
|
uxth r5, r5
|
|
bic r2, r2, #3
|
|
add r2, r2, r3
|
|
str r2, [r1, #12]
|
|
.L672:
|
|
add r8, r8, #1
|
|
b .L670
|
|
.L673:
|
|
adds r4, r4, #1
|
|
uxth r4, r4
|
|
b .L672
|
|
.L679:
|
|
mul r3, r10, r8
|
|
ldr r2, [r7]
|
|
adds r1, r2, r3
|
|
ldr r3, [r2, r3]
|
|
adds r3, r3, #1
|
|
bne .L678
|
|
ldr r0, [r1, #4]
|
|
adds r4, r4, #1
|
|
uxth r4, r4
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
.L678:
|
|
add r8, r8, #1
|
|
b .L677
|
|
.L695:
|
|
movs r3, #2
|
|
mov r10, r6
|
|
str r3, [sp, #8]
|
|
b .L680
|
|
.L684:
|
|
movs r3, #20
|
|
ldr r1, [sp, #4]
|
|
mul r2, r3, r8
|
|
movs r3, #0
|
|
str r3, [fp, r2]
|
|
ldr r3, .L712+32
|
|
ldrb r0, [r3, r8] @ zero_extendqisi2
|
|
bl V2P_block
|
|
str r0, [sp, #12]
|
|
cbz r6, .L682
|
|
bl IsBlkInVendorPart
|
|
cbnz r0, .L683
|
|
.L682:
|
|
ldr r0, [sp, #12]
|
|
bl FtlBbmIsBadBlock
|
|
cbnz r0, .L683
|
|
movs r3, #20
|
|
mla r1, r3, r5, fp
|
|
ldr r3, [sp, #12]
|
|
add r2, r7, r3, lsl #10
|
|
ldr r3, [sp, #20]
|
|
str r2, [r1, #4]
|
|
str r3, [r1, #8]
|
|
ldr r3, [sp, #28]
|
|
mul r2, r3, r5
|
|
ldr r3, [sp, #24]
|
|
adds r5, r5, #1
|
|
uxth r5, r5
|
|
bic r2, r2, #3
|
|
add r2, r2, r3
|
|
str r2, [r1, #12]
|
|
.L683:
|
|
add r8, r8, #1
|
|
b .L681
|
|
.L688:
|
|
mul r2, r3, r8
|
|
ldr r1, [fp]
|
|
adds r0, r1, r2
|
|
ldr r2, [r1, r2]
|
|
cbz r2, .L687
|
|
ldr r0, [r0, #4]
|
|
adds r4, r4, #1
|
|
str r3, [sp, #12]
|
|
uxth r4, r4
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
ldr r3, [sp, #12]
|
|
.L687:
|
|
add r8, r8, #1
|
|
b .L686
|
|
.L692:
|
|
cbz r6, .L691
|
|
mul r3, fp, r7
|
|
ldr r2, [r8]
|
|
adds r1, r2, r3
|
|
ldr r3, [r2, r3]
|
|
cbnz r3, .L691
|
|
ldr r0, [r1, #4]
|
|
movs r1, #1
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L691:
|
|
adds r7, r7, #1
|
|
b .L690
|
|
.L713:
|
|
.align 2
|
|
.L712:
|
|
.word .LANCHOR98
|
|
.word .LANCHOR78
|
|
.word .LANCHOR2
|
|
.word .LANCHOR109
|
|
.word .LANCHOR114
|
|
.word .LANCHOR23
|
|
.word .LANCHOR19
|
|
.word .LANCHOR108
|
|
.word .LANCHOR12
|
|
.size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
|
|
.section .text.FlashTestBlk,"ax",%progbits
|
|
.align 1
|
|
.global FlashTestBlk
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FlashTestBlk, %function
|
|
FlashTestBlk:
|
|
@ args = 0, pretend = 0, frame = 88
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
cmp r0, #11
|
|
push {r4, r5, lr}
|
|
mov r5, r0
|
|
sub sp, sp, #92
|
|
bls .L717
|
|
ldr r4, .L719
|
|
add r0, sp, #24
|
|
movs r2, #32
|
|
movs r1, #165
|
|
str r0, [sp, #16]
|
|
lsls r5, r5, #10
|
|
ldr r3, [r4]
|
|
str r3, [sp, #12]
|
|
bl ftl_memset
|
|
movs r2, #8
|
|
movs r1, #90
|
|
ldr r0, [r4]
|
|
bl ftl_memset
|
|
movs r2, #1
|
|
add r0, sp, #4
|
|
mov r1, r2
|
|
str r5, [sp, #8]
|
|
bl FlashEraseBlocks
|
|
movs r3, #1
|
|
add r0, sp, #4
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldr r3, [sp, #4]
|
|
cbnz r3, .L718
|
|
adds r3, r5, #1
|
|
add r0, sp, #4
|
|
str r3, [sp, #8]
|
|
movs r3, #1
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldr r4, [sp, #4]
|
|
adds r4, r4, #0
|
|
it ne
|
|
movne r4, #1
|
|
negs r4, r4
|
|
.L716:
|
|
movs r2, #1
|
|
movs r1, #0
|
|
add r0, sp, #4
|
|
str r5, [sp, #8]
|
|
bl FlashEraseBlocks
|
|
.L714:
|
|
mov r0, r4
|
|
add sp, sp, #92
|
|
@ sp needed
|
|
pop {r4, r5, pc}
|
|
.L718:
|
|
mov r4, #-1
|
|
b .L716
|
|
.L717:
|
|
movs r4, #0
|
|
b .L714
|
|
.L720:
|
|
.align 2
|
|
.L719:
|
|
.word .LANCHOR111
|
|
.size FlashTestBlk, .-FlashTestBlk
|
|
.section .text.FtlBbmTblFlush,"ax",%progbits
|
|
.align 1
|
|
.global FtlBbmTblFlush
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlBbmTblFlush, %function
|
|
FtlBbmTblFlush:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r1, #0
|
|
ldr r7, .L735
|
|
movs r4, #0
|
|
ldr r5, .L735+4
|
|
ldr r3, [r7]
|
|
ldr fp, .L735+52
|
|
ldr r6, .L735+8
|
|
str r3, [r5, #12]
|
|
ldr r3, .L735+12
|
|
ldr r0, [fp]
|
|
ldr r8, .L735+56
|
|
ldrh r2, [r3]
|
|
str r0, [r5, #8]
|
|
bl ftl_memset
|
|
str r7, [sp, #12]
|
|
ldr r7, .L735+16
|
|
.L722:
|
|
ldrh r3, [r7]
|
|
cmp r4, r3
|
|
blt .L723
|
|
ldr r6, [r5, #12]
|
|
movs r2, #16
|
|
ldr r4, .L735+20
|
|
movs r1, #255
|
|
movs r7, #0
|
|
mov r0, r6
|
|
mov r8, r7
|
|
bl ftl_memset
|
|
movw r3, #61649
|
|
mov r10, r4
|
|
strh r3, [r6] @ movhi
|
|
ldr r3, [r4, #8]
|
|
str r3, [r6, #4]
|
|
ldrh r3, [r4]
|
|
strh r3, [r6, #2] @ movhi
|
|
ldrh r3, [r4, #4]
|
|
strh r3, [r6, #8] @ movhi
|
|
ldrh r3, [r4, #6]
|
|
strh r3, [r6, #10] @ movhi
|
|
ldr r3, .L735+24
|
|
ldr r3, [r3]
|
|
strh r3, [r6, #12] @ movhi
|
|
ldr r3, .L735+28
|
|
ldr r3, [r3]
|
|
strh r3, [r6, #14] @ movhi
|
|
.L724:
|
|
ldr r3, [fp]
|
|
ldrh r2, [r4, #2]
|
|
ldrh r1, [r4]
|
|
str r3, [r5, #8]
|
|
ldr r3, [sp, #12]
|
|
ldrh r0, [r6, #10]
|
|
ldr r3, [r3]
|
|
str r3, [r5, #12]
|
|
movs r3, #0
|
|
str r3, [r5]
|
|
orr r3, r2, r1, lsl #10
|
|
str r3, [r5, #4]
|
|
ldrh r3, [r4, #4]
|
|
str r0, [sp]
|
|
ldr r0, .L735+32
|
|
bl printf
|
|
ldr r3, .L735+36
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [r3]
|
|
subs r3, r3, #1
|
|
cmp r2, r3
|
|
blt .L725
|
|
ldr r3, [r4, #8]
|
|
mov r1, #0 @ movhi
|
|
ldrh r2, [r4]
|
|
strh r1, [r4, #2] @ movhi
|
|
adds r3, r3, #1
|
|
str r3, [r4, #8]
|
|
str r3, [r6, #4]
|
|
strh r2, [r6, #8] @ movhi
|
|
ldrh r3, [r4, #4]
|
|
strh r2, [r4, #4] @ movhi
|
|
ldr r2, .L735+40
|
|
strh r3, [r4] @ movhi
|
|
lsls r3, r3, #10
|
|
ldr r0, [r2]
|
|
movs r2, #1
|
|
str r3, [r5, #4]
|
|
mov r1, r2
|
|
str r3, [r0, #4]
|
|
bl FlashEraseBlocks
|
|
.L725:
|
|
movs r3, #1
|
|
ldr r0, .L735+4
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldrh r3, [r10, #2]
|
|
adds r3, r3, #1
|
|
strh r3, [r10, #2] @ movhi
|
|
ldr r3, [r5]
|
|
adds r2, r3, #1
|
|
bne .L726
|
|
adds r7, r7, #1
|
|
ldr r1, [r5, #4]
|
|
uxth r7, r7
|
|
ldr r0, .L735+44
|
|
bl printf
|
|
cmp r7, #3
|
|
bls .L724
|
|
mov r2, r7
|
|
ldr r1, [r5, #4]
|
|
ldr r0, .L735+48
|
|
bl printf
|
|
.L728:
|
|
b .L728
|
|
.L723:
|
|
ldrh r2, [r8]
|
|
ldr r3, [r5, #8]
|
|
ldr r1, [r6, #4]!
|
|
mul r0, r2, r4
|
|
lsls r2, r2, #2
|
|
adds r4, r4, #1
|
|
add r0, r3, r0, lsl #2
|
|
bl ftl_memcpy
|
|
b .L722
|
|
.L726:
|
|
add r8, r8, #1
|
|
cmp r8, #1
|
|
beq .L724
|
|
cmp r3, #256
|
|
beq .L724
|
|
movs r0, #0
|
|
add sp, sp, #16
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L736:
|
|
.align 2
|
|
.L735:
|
|
.word .LANCHOR113
|
|
.word .LANCHOR137
|
|
.word .LANCHOR36+24
|
|
.word .LANCHOR22
|
|
.word .LANCHOR9
|
|
.word .LANCHOR36
|
|
.word .LANCHOR1
|
|
.word .LANCHOR142
|
|
.word .LC18
|
|
.word .LANCHOR19
|
|
.word .LANCHOR78
|
|
.word .LC19
|
|
.word .LC20
|
|
.word .LANCHOR105
|
|
.word .LANCHOR126
|
|
.size FtlBbmTblFlush, .-FtlBbmTblFlush
|
|
.section .text.allocate_data_superblock,"ax",%progbits
|
|
.align 1
|
|
.global allocate_data_superblock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type allocate_data_superblock, %function
|
|
allocate_data_superblock:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r4, r0
|
|
ldr r10, .L776
|
|
.L738:
|
|
ldr r3, .L776
|
|
ldr r8, .L776+80
|
|
ldr r7, .L776+4
|
|
ldrh r3, [r3]
|
|
ldrh r2, [r8]
|
|
add r3, r3, r2
|
|
ldrh r2, [r7]
|
|
cmp r3, r2
|
|
ble .L739
|
|
movw r2, #2667
|
|
ldr r1, .L776+8
|
|
ldr r0, .L776+12
|
|
bl printf
|
|
.L739:
|
|
ldr r3, .L776+16
|
|
cmp r4, r3
|
|
bne .L765
|
|
ldr r2, .L776+20
|
|
ldrh r3, [r10]
|
|
ldr r2, [r2]
|
|
lsrs r1, r3, #1
|
|
muls r2, r3, r2
|
|
adds r1, r1, #1
|
|
add r1, r1, r2, lsr #2
|
|
uxth r1, r1
|
|
cbz r1, .L740
|
|
subs r1, r1, #1
|
|
uxth r1, r1
|
|
.L740:
|
|
ldr r0, .L776+24
|
|
bl List_pop_index_node
|
|
ldrh r3, [r10]
|
|
mov r5, r0
|
|
uxth fp, r0
|
|
cbnz r3, .L741
|
|
movw r2, #2676
|
|
ldr r1, .L776+8
|
|
ldr r0, .L776+12
|
|
bl printf
|
|
.L741:
|
|
ldrh r3, [r10]
|
|
subs r3, r3, #1
|
|
strh r3, [r10] @ movhi
|
|
ldrh r3, [r7]
|
|
cmp r3, fp
|
|
bls .L738
|
|
uxth r5, r5
|
|
lsls r3, r5, #1
|
|
str r3, [sp]
|
|
ldr r3, .L776+28
|
|
ldr r3, [r3]
|
|
ldrh r6, [r3, r5, lsl #1]
|
|
cmp r6, #0
|
|
bne .L738
|
|
strh fp, [r4] @ movhi
|
|
mov r0, r4
|
|
bl make_superblock
|
|
ldrb r3, [r4, #7] @ zero_extendqisi2
|
|
cbnz r3, .L743
|
|
ldr r3, .L776+28
|
|
movw r2, #65535
|
|
mov r0, fp
|
|
ldr r3, [r3]
|
|
strh r2, [r3, r5, lsl #1] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
ldrh r2, [r8]
|
|
ldrh r3, [r10]
|
|
add r3, r3, r2
|
|
ldrh r2, [r7]
|
|
cmp r3, r2
|
|
ble .L738
|
|
movw r2, #2690
|
|
ldr r1, .L776+8
|
|
ldr r0, .L776+12
|
|
bl printf
|
|
b .L738
|
|
.L765:
|
|
movs r1, #0
|
|
b .L740
|
|
.L743:
|
|
ldrh r2, [r8]
|
|
ldrh r3, [r10]
|
|
add r3, r3, r2
|
|
ldrh r2, [r7]
|
|
cmp r3, r2
|
|
ble .L745
|
|
movw r2, #2693
|
|
ldr r1, .L776+8
|
|
ldr r0, .L776+12
|
|
bl printf
|
|
.L745:
|
|
ldr r3, .L776+32
|
|
add lr, r4, #16
|
|
ldr r2, .L776+36
|
|
mov r8, #0
|
|
ldr ip, [r3]
|
|
ldrh r0, [r2]
|
|
movs r2, #20
|
|
str r2, [sp, #4]
|
|
mov r3, ip
|
|
mla r0, r2, r0, ip
|
|
.L746:
|
|
cmp r0, r3
|
|
bne .L748
|
|
cbnz r6, .L749
|
|
mov r2, #2704
|
|
ldr r1, .L776+8
|
|
ldr r0, .L776+12
|
|
bl printf
|
|
.L749:
|
|
ldr r3, .L776+40
|
|
ldrh r3, [r3]
|
|
cmp r3, fp
|
|
bne .L750
|
|
movw r2, #2706
|
|
ldr r1, .L776+8
|
|
ldr r0, .L776+12
|
|
bl printf
|
|
.L750:
|
|
ldrb r3, [r4, #8] @ zero_extendqisi2
|
|
ldr r0, .L776+44
|
|
ldr ip, .L776+84
|
|
ldr r1, .L776+48
|
|
ldr r2, .L776+52
|
|
ldr lr, [r0]
|
|
cmp r3, #0
|
|
bne .L751
|
|
ldrh r3, [lr, r5, lsl #1]
|
|
cmp r3, #0
|
|
beq .L752
|
|
ldrh r8, [ip]
|
|
add r3, r3, r8
|
|
.L775:
|
|
strh r3, [lr, r5, lsl #1] @ movhi
|
|
ldr r3, [r1]
|
|
adds r3, r3, #1
|
|
str r3, [r1]
|
|
.L754:
|
|
ldr r3, [r0]
|
|
ldr r0, .L776+56
|
|
ldrh lr, [r3, r5, lsl #1]
|
|
ldr r3, [r0]
|
|
cmp lr, r3
|
|
ldr r3, [r2]
|
|
it hi
|
|
strhi lr, [r0]
|
|
ldrh r0, [ip]
|
|
ldr ip, [r1]
|
|
ldrh r1, [r7]
|
|
ldr r7, .L776+60
|
|
mla r0, ip, r0, r3
|
|
bl __aeabi_uidiv
|
|
ldr r3, .L776+64
|
|
str r0, [r3]
|
|
ldr r3, .L776+68
|
|
ldr r2, [r3]
|
|
ldr r3, [r2, #16]
|
|
adds r3, r3, #1
|
|
str r3, [r2, #16]
|
|
movs r2, #20
|
|
ldr r3, .L776+32
|
|
ldr r0, [r3]
|
|
adds r3, r0, #4
|
|
mla r2, r2, r6, r0
|
|
adds r2, r2, #24
|
|
.L756:
|
|
adds r3, r3, #20
|
|
cmp r2, r3
|
|
bne .L757
|
|
movs r7, #0
|
|
mov r2, r6
|
|
mov r8, r7
|
|
ldrb r1, [r4, #8] @ zero_extendqisi2
|
|
bl FlashEraseBlocks
|
|
.L758:
|
|
uxth r3, r7
|
|
cmp r6, r3
|
|
bhi .L760
|
|
cmp r8, #0
|
|
beq .L761
|
|
mov r0, fp
|
|
bl update_multiplier_value
|
|
bl FtlBbmTblFlush
|
|
.L761:
|
|
ldrb r2, [r4, #7] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
bne .L762
|
|
ldr r3, .L776+28
|
|
movw r2, #65535
|
|
ldr r3, [r3]
|
|
strh r2, [r3, r5, lsl #1] @ movhi
|
|
b .L738
|
|
.L748:
|
|
ldrh r1, [lr], #2
|
|
movw r2, #65535
|
|
str r8, [r3, #8]
|
|
str r8, [r3, #12]
|
|
cmp r1, r2
|
|
beq .L747
|
|
ldr r2, [sp, #4]
|
|
lsls r1, r1, #10
|
|
mla r2, r2, r6, ip
|
|
adds r6, r6, #1
|
|
uxth r6, r6
|
|
str r1, [r2, #4]
|
|
.L747:
|
|
adds r3, r3, #20
|
|
b .L746
|
|
.L752:
|
|
movs r3, #2
|
|
b .L775
|
|
.L751:
|
|
ldrh r3, [lr, r5, lsl #1]
|
|
adds r3, r3, #1
|
|
strh r3, [lr, r5, lsl #1] @ movhi
|
|
ldr r3, [r2]
|
|
adds r3, r3, #1
|
|
str r3, [r2]
|
|
b .L754
|
|
.L757:
|
|
ldr r1, [r3, #-20]
|
|
ands r1, r1, r7
|
|
str r1, [r3, #-20]
|
|
b .L756
|
|
.L760:
|
|
ldr r2, .L776+32
|
|
movs r3, #20
|
|
muls r3, r7, r3
|
|
ldr r2, [r2]
|
|
adds r1, r2, r3
|
|
ldr r2, [r2, r3]
|
|
adds r3, r2, #1
|
|
bne .L759
|
|
ldr r0, [r1, #4]
|
|
add r8, r8, #1
|
|
str r2, [sp, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
ldr r2, [sp, #4]
|
|
add r3, r4, r7, lsl #1
|
|
strh r2, [r3, #16] @ movhi
|
|
ldrb r3, [r4, #7] @ zero_extendqisi2
|
|
subs r3, r3, #1
|
|
strb r3, [r4, #7]
|
|
.L759:
|
|
adds r7, r7, #1
|
|
b .L758
|
|
.L762:
|
|
ldr r3, .L776+72
|
|
ldr r1, .L776+76
|
|
ldrh r3, [r3]
|
|
strh fp, [r4] @ movhi
|
|
smulbb r3, r3, r2
|
|
movs r2, #0
|
|
strh r2, [r4, #2] @ movhi
|
|
strb r2, [r4, #6]
|
|
ldr r2, [r1]
|
|
uxth r3, r3
|
|
strh r3, [r4, #4] @ movhi
|
|
str r2, [r4, #12]
|
|
adds r2, r2, #1
|
|
str r2, [r1]
|
|
ldr r2, .L776+28
|
|
ldr r1, [sp]
|
|
ldr r2, [r2]
|
|
strh r3, [r2, r1] @ movhi
|
|
ldrh r3, [r4, #4]
|
|
cbz r3, .L763
|
|
ldrb r3, [r4, #7] @ zero_extendqisi2
|
|
cbnz r3, .L764
|
|
.L763:
|
|
movw r2, #2759
|
|
ldr r1, .L776+8
|
|
ldr r0, .L776+12
|
|
bl printf
|
|
.L764:
|
|
movs r0, #0
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L777:
|
|
.align 2
|
|
.L776:
|
|
.word .LANCHOR47
|
|
.word .LANCHOR4
|
|
.word .LANCHOR143
|
|
.word .LC1
|
|
.word .LANCHOR52
|
|
.word .LANCHOR94
|
|
.word .LANCHOR45
|
|
.word .LANCHOR41
|
|
.word .LANCHOR78
|
|
.word .LANCHOR2
|
|
.word .LANCHOR144
|
|
.word .LANCHOR46
|
|
.word .LANCHOR89
|
|
.word .LANCHOR90
|
|
.word .LANCHOR91
|
|
.word -1024
|
|
.word .LANCHOR142
|
|
.word .LANCHOR117
|
|
.word .LANCHOR18
|
|
.word .LANCHOR81
|
|
.word .LANCHOR43
|
|
.word .LANCHOR13
|
|
.size allocate_data_superblock, .-allocate_data_superblock
|
|
.section .text.FtlGcFreeBadSuperBlk,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcFreeBadSuperBlk
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcFreeBadSuperBlk, %function
|
|
FtlGcFreeBadSuperBlk:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r10, r0
|
|
ldr r4, .L790
|
|
ldrh r3, [r4]
|
|
cbz r3, .L779
|
|
ldr r8, .L790+12
|
|
movs r7, #0
|
|
.L780:
|
|
ldr r3, .L790+4
|
|
ldrh r2, [r3]
|
|
uxth r3, r7
|
|
cmp r2, r3
|
|
bhi .L786
|
|
bl FtlGcReFreshBadBlk
|
|
.L779:
|
|
movs r0, #0
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L786:
|
|
ldr r2, .L790+8
|
|
uxth r3, r7
|
|
mov r1, r10
|
|
mov fp, #0
|
|
ldrb r0, [r2, r3] @ zero_extendqisi2
|
|
bl V2P_block
|
|
mov r1, r0
|
|
.L781:
|
|
ldrh r3, [r4]
|
|
uxth r5, fp
|
|
cmp r3, r5
|
|
bhi .L785
|
|
adds r7, r7, #1
|
|
b .L780
|
|
.L785:
|
|
uxth r6, fp
|
|
ldrh r3, [r8, r6, lsl #1]
|
|
cmp r3, r1
|
|
bne .L782
|
|
mov r0, r1
|
|
str r1, [sp, #4]
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
ldrh r2, [r4]
|
|
add r3, r8, r6, lsl #1
|
|
ldr r1, [sp, #4]
|
|
.L783:
|
|
cmp r5, r2
|
|
bcc .L784
|
|
subs r2, r2, #1
|
|
strh r2, [r4] @ movhi
|
|
.L782:
|
|
add fp, fp, #1
|
|
b .L781
|
|
.L784:
|
|
ldrh r0, [r3, #2]!
|
|
adds r5, r5, #1
|
|
uxth r5, r5
|
|
strh r0, [r3, #-2] @ movhi
|
|
b .L783
|
|
.L791:
|
|
.align 2
|
|
.L790:
|
|
.word .LANCHOR73
|
|
.word .LANCHOR2
|
|
.word .LANCHOR12
|
|
.word .LANCHOR74
|
|
.size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
|
|
.section .text.update_vpc_list,"ax",%progbits
|
|
.align 1
|
|
.global update_vpc_list
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type update_vpc_list, %function
|
|
update_vpc_list:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
ldr r3, .L804
|
|
ldr r3, [r3]
|
|
ldrh r3, [r3, r0, lsl #1]
|
|
cmp r3, #0
|
|
bne .L793
|
|
ldr r3, .L804+4
|
|
ldrh r2, [r3]
|
|
cmp r2, r0
|
|
itt eq
|
|
movweq r2, #65535
|
|
strheq r2, [r3] @ movhi
|
|
ldr r3, .L804+8
|
|
ldrh r2, [r3]
|
|
cmp r2, r0
|
|
itt eq
|
|
movweq r2, #65535
|
|
strheq r2, [r3] @ movhi
|
|
ldr r3, .L804+12
|
|
ldrh r2, [r3]
|
|
cmp r2, r0
|
|
bne .L796
|
|
movw r2, #65535
|
|
strh r2, [r3] @ movhi
|
|
.L797:
|
|
ldr r5, .L804+16
|
|
mov r1, r4
|
|
ldr r0, .L804+20
|
|
bl List_remove_node
|
|
ldrh r3, [r5]
|
|
cbnz r3, .L799
|
|
movw r2, #2835
|
|
ldr r1, .L804+24
|
|
ldr r0, .L804+28
|
|
bl printf
|
|
.L799:
|
|
ldrh r3, [r5]
|
|
mov r0, r4
|
|
subs r3, r3, #1
|
|
strh r3, [r5] @ movhi
|
|
bl free_data_superblock
|
|
mov r0, r4
|
|
bl FtlGcFreeBadSuperBlk
|
|
ldr r3, .L804+32
|
|
ldrh r2, [r5]
|
|
ldrh r3, [r3]
|
|
add r3, r3, r2
|
|
ldr r2, .L804+36
|
|
ldrh r2, [r2]
|
|
cmp r3, r2
|
|
ble .L803
|
|
movw r2, #2838
|
|
ldr r1, .L804+24
|
|
ldr r0, .L804+28
|
|
bl printf
|
|
.L803:
|
|
movs r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
.L796:
|
|
ldr r3, .L804+40
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
beq .L802
|
|
ldr r3, .L804+44
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
beq .L802
|
|
ldr r3, .L804+48
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
bne .L797
|
|
.L802:
|
|
movs r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
.L793:
|
|
bl List_update_data_list
|
|
b .L802
|
|
.L805:
|
|
.align 2
|
|
.L804:
|
|
.word .LANCHOR41
|
|
.word .LANCHOR71
|
|
.word .LANCHOR72
|
|
.word .LANCHOR144
|
|
.word .LANCHOR43
|
|
.word .LANCHOR40
|
|
.word .LANCHOR145
|
|
.word .LC1
|
|
.word .LANCHOR47
|
|
.word .LANCHOR4
|
|
.word .LANCHOR50
|
|
.word .LANCHOR51
|
|
.word .LANCHOR52
|
|
.size update_vpc_list, .-update_vpc_list
|
|
.section .text.decrement_vpc_count,"ax",%progbits
|
|
.align 1
|
|
.global decrement_vpc_count
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type decrement_vpc_count, %function
|
|
decrement_vpc_count:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
movw r3, #65535
|
|
push {r4, r5, r6, lr}
|
|
cmp r0, r3
|
|
mov r4, r0
|
|
beq .L807
|
|
ldr r5, .L815
|
|
ldr r3, [r5]
|
|
ldrh r2, [r3, r0, lsl #1]
|
|
cbnz r2, .L808
|
|
mov r1, r0
|
|
ldr r0, .L815+4
|
|
bl printf
|
|
ldr r3, [r5]
|
|
ldrh r5, [r3, r4, lsl #1]
|
|
cbz r5, .L809
|
|
.L813:
|
|
movs r5, #0
|
|
.L806:
|
|
mov r0, r5
|
|
pop {r4, r5, r6, pc}
|
|
.L809:
|
|
movw r2, #2853
|
|
.L814:
|
|
ldr r1, .L815+8
|
|
ldr r0, .L815+12
|
|
bl printf
|
|
b .L806
|
|
.L808:
|
|
subs r2, r2, #1
|
|
strh r2, [r3, r0, lsl #1] @ movhi
|
|
.L807:
|
|
ldr r6, .L815+16
|
|
movw r3, #65535
|
|
ldrh r0, [r6]
|
|
cmp r0, r3
|
|
bne .L811
|
|
strh r4, [r6] @ movhi
|
|
b .L813
|
|
.L811:
|
|
cmp r4, r0
|
|
beq .L813
|
|
bl update_vpc_list
|
|
ldr r3, .L815+20
|
|
adds r5, r0, #0
|
|
ldr r2, .L815+24
|
|
it ne
|
|
movne r5, #1
|
|
strh r4, [r6] @ movhi
|
|
ldr r3, [r3]
|
|
ldr r2, [r2]
|
|
subs r3, r3, r2
|
|
asrs r2, r3, #1
|
|
ldr r3, .L815+28
|
|
muls r3, r2, r3
|
|
ldr r2, .L815
|
|
ldr r2, [r2]
|
|
uxth r1, r3
|
|
ldrh r2, [r2, r1, lsl #1]
|
|
cmp r2, #0
|
|
bne .L806
|
|
cmp r4, r1
|
|
beq .L806
|
|
movw r2, #2869
|
|
b .L814
|
|
.L816:
|
|
.align 2
|
|
.L815:
|
|
.word .LANCHOR41
|
|
.word .LC21
|
|
.word .LANCHOR146
|
|
.word .LC1
|
|
.word .LANCHOR130
|
|
.word .LANCHOR40
|
|
.word .LANCHOR39
|
|
.word -1431655765
|
|
.size decrement_vpc_count, .-decrement_vpc_count
|
|
.section .text.FtlSuperblockPowerLostFix,"ax",%progbits
|
|
.align 1
|
|
.global FtlSuperblockPowerLostFix
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlSuperblockPowerLostFix, %function
|
|
FtlSuperblockPowerLostFix:
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
mov r3, #-1
|
|
sub sp, sp, #24
|
|
ldr r2, .L830
|
|
movs r6, #0
|
|
mov r4, r0
|
|
str r3, [sp, #20]
|
|
ldr r3, .L830+4
|
|
ldr r5, [r2]
|
|
mvn r2, #2
|
|
ldr r8, .L830+16
|
|
ldr r3, [r3]
|
|
str r5, [sp, #16]
|
|
str r3, [sp, #12]
|
|
str r2, [r5, #8]
|
|
mvn r2, #1
|
|
str r2, [r5, #12]
|
|
ldrh r2, [r0]
|
|
strh r6, [r5] @ movhi
|
|
strh r2, [r5, #2] @ movhi
|
|
movw r2, #61589
|
|
str r2, [r3]
|
|
add r2, r2, #304087040
|
|
add r2, r2, #1269760
|
|
addw r2, r2, #1507
|
|
str r2, [r3, #4]
|
|
ldrh r3, [r0, #4]
|
|
tst r3, #1
|
|
ite eq
|
|
moveq r7, #6
|
|
movne r7, #7
|
|
.L823:
|
|
ldrh r3, [r4, #4]
|
|
cbnz r3, .L819
|
|
.L820:
|
|
ldr r3, .L830+8
|
|
ldrh r1, [r4]
|
|
ldrh r0, [r4, #4]
|
|
ldr r2, [r3]
|
|
ldrh r3, [r2, r1, lsl #1]
|
|
subs r3, r3, r0
|
|
strh r3, [r2, r1, lsl #1] @ movhi
|
|
ldr r3, .L830+12
|
|
ldrh r3, [r3]
|
|
strh r3, [r4, #2] @ movhi
|
|
movs r3, #0
|
|
strb r3, [r4, #6]
|
|
strh r3, [r4, #4] @ movhi
|
|
add sp, sp, #24
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L819:
|
|
mov r0, r4
|
|
bl get_new_active_ppa
|
|
str r0, [sp, #8]
|
|
adds r0, r0, #1
|
|
beq .L820
|
|
ldr r3, [r8]
|
|
movs r1, #1
|
|
add r0, sp, #4
|
|
str r3, [r5, #4]
|
|
adds r3, r3, #1
|
|
adds r2, r3, #1
|
|
it eq
|
|
moveq r3, r6
|
|
str r3, [r8]
|
|
movs r3, #0
|
|
mov r2, r3
|
|
bl FlashProgPages
|
|
ldrh r0, [r4]
|
|
bl decrement_vpc_count
|
|
subs r7, r7, #1
|
|
bne .L823
|
|
b .L820
|
|
.L831:
|
|
.align 2
|
|
.L830:
|
|
.word .LANCHOR113
|
|
.word .LANCHOR105
|
|
.word .LANCHOR41
|
|
.word .LANCHOR18
|
|
.word .LANCHOR82
|
|
.size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
|
|
.section .text.FtlMakeBbt,"ax",%progbits
|
|
.align 1
|
|
.global FtlMakeBbt
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlMakeBbt, %function
|
|
FtlMakeBbt:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r6, #0
|
|
ldr r7, .L851
|
|
bl FtlBbtMemInit
|
|
sub r8, r7, #18
|
|
bl FtlLoadFactoryBbt
|
|
.L833:
|
|
ldr r3, .L851+4
|
|
ldrh r3, [r3]
|
|
cmp r6, r3
|
|
bcc .L839
|
|
ldr r5, .L851+8
|
|
movs r4, #0
|
|
.L840:
|
|
ldrh r3, [r5]
|
|
uxth r0, r4
|
|
adds r4, r4, #1
|
|
cmp r3, r0
|
|
bhi .L841
|
|
ldr r4, .L851+12
|
|
movw r6, #65535
|
|
ldrh r5, [r4, #12]
|
|
subs r5, r5, #1
|
|
uxth r5, r5
|
|
.L842:
|
|
ldrh r3, [r4, #12]
|
|
subs r3, r3, #47
|
|
cmp r3, r5
|
|
bgt .L846
|
|
mov r0, r5
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #1
|
|
beq .L843
|
|
mov r0, r5
|
|
bl FlashTestBlk
|
|
cmp r0, #0
|
|
beq .L844
|
|
mov r0, r5
|
|
bl FtlBbmMapBadBlock
|
|
.L843:
|
|
subs r5, r5, #1
|
|
uxth r5, r5
|
|
b .L842
|
|
.L839:
|
|
ldr r3, .L851+16
|
|
ldr r5, .L851+20
|
|
ldrh r2, [r8, #2]!
|
|
ldr r4, .L851+24
|
|
ldr r0, [r3]
|
|
movw r3, #65535
|
|
ldr r10, [r5]
|
|
cmp r2, r3
|
|
mov fp, r4
|
|
ldr r3, .L851+28
|
|
str r0, [r4, #8]
|
|
str r10, [r4, #12]
|
|
beq .L834
|
|
ldrh r5, [r3]
|
|
mov r0, r4
|
|
str r3, [sp]
|
|
mla r5, r6, r5, r2
|
|
lsls r2, r5, #10
|
|
str r2, [r4, #4]
|
|
movs r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r3, [sp]
|
|
ldr r1, [r4, #8]
|
|
ldr r0, [r7]
|
|
ldrh r2, [r3]
|
|
adds r2, r2, #7
|
|
asrs r2, r2, #3
|
|
bl ftl_memcpy
|
|
.L835:
|
|
uxth r0, r5
|
|
adds r6, r6, #1
|
|
adds r7, r7, #4
|
|
bl FtlBbmMapBadBlock
|
|
b .L833
|
|
.L834:
|
|
mov r1, r6
|
|
str r3, [sp]
|
|
bl FlashGetBadBlockList
|
|
ldr r0, [r4, #8]
|
|
ldr r1, [r7]
|
|
bl FtlBbt2Bitmap
|
|
ldr r3, [sp]
|
|
str r5, [sp, #4]
|
|
ldrh r4, [r3]
|
|
subs r4, r4, #1
|
|
uxth r4, r4
|
|
.L836:
|
|
ldr r3, [sp]
|
|
ldrh r0, [r3]
|
|
smlabb r0, r0, r6, r4
|
|
uxth r0, r0
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #1
|
|
beq .L837
|
|
ldr r3, [sp, #4]
|
|
movs r2, #16
|
|
movs r1, #0
|
|
strh r4, [r8] @ movhi
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
ldr r3, .L851+16
|
|
mov r2, #4096
|
|
movs r1, #0
|
|
ldr r0, [r3]
|
|
bl ftl_memset
|
|
ldr r2, [sp]
|
|
movw r3, #61664
|
|
strh r3, [r10] @ movhi
|
|
movs r3, #0
|
|
str r3, [r10, #4]
|
|
ldrh r5, [r2]
|
|
ldrh r3, [r8]
|
|
ldr r1, [r7]
|
|
ldr r0, [fp, #8]
|
|
strh r3, [r10, #2] @ movhi
|
|
mla r5, r6, r5, r3
|
|
lsls r3, r5, #10
|
|
str r3, [fp, #4]
|
|
ldr r3, .L851+32
|
|
ldrh r2, [r3]
|
|
lsls r2, r2, #2
|
|
bl ftl_memcpy
|
|
movs r2, #1
|
|
ldr r0, .L851+24
|
|
mov r1, r2
|
|
bl FlashEraseBlocks
|
|
movs r3, #1
|
|
ldr r0, .L851+24
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldr r3, [fp]
|
|
adds r3, r3, #1
|
|
bne .L835
|
|
uxth r0, r5
|
|
bl FtlBbmMapBadBlock
|
|
b .L836
|
|
.L837:
|
|
subs r4, r4, #1
|
|
uxth r4, r4
|
|
b .L836
|
|
.L841:
|
|
bl FtlBbmMapBadBlock
|
|
b .L840
|
|
.L844:
|
|
ldrh r3, [r4]
|
|
cmp r3, r6
|
|
bne .L845
|
|
strh r5, [r4] @ movhi
|
|
b .L843
|
|
.L845:
|
|
strh r5, [r4, #4] @ movhi
|
|
.L846:
|
|
ldr r3, .L851+36
|
|
movs r5, #0
|
|
str r5, [r4, #8]
|
|
movs r1, #1
|
|
movs r2, #2
|
|
strh r5, [r4, #2] @ movhi
|
|
ldr r0, [r3]
|
|
ldrh r3, [r4]
|
|
lsls r3, r3, #10
|
|
str r3, [r0, #4]
|
|
ldrh r3, [r4, #4]
|
|
lsls r3, r3, #10
|
|
str r3, [r0, #24]
|
|
bl FlashEraseBlocks
|
|
ldrh r0, [r4]
|
|
bl FtlBbmMapBadBlock
|
|
ldrh r0, [r4, #4]
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
ldr r3, [r4, #8]
|
|
ldrh r2, [r4, #4]
|
|
strh r5, [r4, #2] @ movhi
|
|
adds r3, r3, #1
|
|
str r3, [r4, #8]
|
|
ldrh r3, [r4]
|
|
strh r2, [r4] @ movhi
|
|
strh r3, [r4, #4] @ movhi
|
|
bl FtlBbmTblFlush
|
|
mov r0, r5
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L852:
|
|
.align 2
|
|
.L851:
|
|
.word .LANCHOR36+28
|
|
.word .LANCHOR9
|
|
.word .LANCHOR24
|
|
.word .LANCHOR36
|
|
.word .LANCHOR105
|
|
.word .LANCHOR113
|
|
.word .LANCHOR137
|
|
.word .LANCHOR16
|
|
.word .LANCHOR126
|
|
.word .LANCHOR78
|
|
.size FtlMakeBbt, .-FtlMakeBbt
|
|
.section .text.ftl_memcmp,"ax",%progbits
|
|
.align 1
|
|
.global ftl_memcmp
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_memcmp, %function
|
|
ftl_memcmp:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b memcmp
|
|
.size ftl_memcmp, .-ftl_memcmp
|
|
.section .text.js_hash,"ax",%progbits
|
|
.align 1
|
|
.global js_hash
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type js_hash, %function
|
|
js_hash:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L857
|
|
add r1, r1, r0
|
|
push {r4, lr}
|
|
.L855:
|
|
cmp r0, r1
|
|
bne .L856
|
|
mov r0, r3
|
|
pop {r4, pc}
|
|
.L856:
|
|
lsrs r2, r3, #2
|
|
ldrb r4, [r0], #1 @ zero_extendqisi2
|
|
add r2, r2, r3, lsl #5
|
|
add r2, r2, r4
|
|
eors r3, r3, r2
|
|
b .L855
|
|
.L858:
|
|
.align 2
|
|
.L857:
|
|
.word 1204201446
|
|
.size js_hash, .-js_hash
|
|
.section .text.Ftl_write_map_blk_to_last_page,"ax",%progbits
|
|
.align 1
|
|
.global Ftl_write_map_blk_to_last_page
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.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 = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, r8, r10, lr}
|
|
movw r2, #65535
|
|
ldrh r3, [r0]
|
|
mov r4, r0
|
|
ldr r5, [r0, #12]
|
|
cmp r3, r2
|
|
bne .L860
|
|
ldrh r3, [r0, #8]
|
|
cbz r3, .L861
|
|
movw r2, #641
|
|
ldr r1, .L869
|
|
ldr r0, .L869+4
|
|
bl printf
|
|
.L861:
|
|
ldrh r3, [r4, #8]
|
|
adds r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
bl FtlFreeSysBlkQueueOut
|
|
movs r3, #0
|
|
strh r0, [r5] @ movhi
|
|
strh r3, [r4, #2] @ movhi
|
|
strh r3, [r4] @ movhi
|
|
ldr r3, [r4, #28]
|
|
adds r3, r3, #1
|
|
str r3, [r4, #28]
|
|
.L862:
|
|
movs r0, #0
|
|
pop {r3, r4, r5, r6, r7, r8, r10, pc}
|
|
.L860:
|
|
ldrh r7, [r5, r3, lsl #1]
|
|
movs r1, #255
|
|
ldrh r3, [r0, #2]
|
|
ldr r6, .L869+8
|
|
ldr r10, .L869+24
|
|
ldr r8, [r0, #24]
|
|
orr r3, r3, r7, lsl #10
|
|
ldr r0, [r10]
|
|
str r3, [r6, #4]
|
|
ldr r3, .L869+12
|
|
str r0, [r6, #8]
|
|
ldr r5, [r3]
|
|
ldr r3, [r4, #28]
|
|
str r5, [r6, #12]
|
|
str r3, [r5, #4]
|
|
movw r3, #64245
|
|
strh r3, [r5, #8] @ movhi
|
|
ldrh r3, [r4, #4]
|
|
strh r7, [r5, #2] @ movhi
|
|
strh r3, [r5] @ movhi
|
|
ldr r3, .L869+16
|
|
ldrh r2, [r3]
|
|
lsls r2, r2, #3
|
|
bl ftl_memset
|
|
ldrh ip, [r4, #6]
|
|
movs r3, #0
|
|
ldr r1, [r10]
|
|
mov r2, r3
|
|
.L863:
|
|
uxth r0, r3
|
|
cmp ip, r0
|
|
bhi .L865
|
|
ldr r3, .L869+20
|
|
ldr r0, [r6, #8]
|
|
ldrh r1, [r3]
|
|
bl js_hash
|
|
movs r2, #1
|
|
str r0, [r5, #12]
|
|
movs r3, #0
|
|
mov r1, r2
|
|
ldr r0, .L869+8
|
|
bl FlashProgPages
|
|
ldrh r3, [r4, #2]
|
|
mov r0, r4
|
|
adds r3, r3, #1
|
|
strh r3, [r4, #2] @ movhi
|
|
bl ftl_map_blk_gc
|
|
b .L862
|
|
.L865:
|
|
ldr r0, [r8, r3, lsl #2]
|
|
cmp r7, r0, lsr #10
|
|
bne .L864
|
|
adds r2, r2, #1
|
|
uxth r2, r2
|
|
str r3, [r1, r2, lsl #3]
|
|
add lr, r1, r2, lsl #3
|
|
ldr r0, [r8, r3, lsl #2]
|
|
str r0, [lr, #4]
|
|
.L864:
|
|
adds r3, r3, #1
|
|
b .L863
|
|
.L870:
|
|
.align 2
|
|
.L869:
|
|
.word .LANCHOR147
|
|
.word .LC1
|
|
.word .LANCHOR137
|
|
.word .LANCHOR113
|
|
.word .LANCHOR19
|
|
.word .LANCHOR22
|
|
.word .LANCHOR105
|
|
.size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
|
|
.section .text.FtlMapWritePage,"ax",%progbits
|
|
.align 1
|
|
.global FtlMapWritePage
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlMapWritePage, %function
|
|
FtlMapWritePage:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
lsl r10, r1, #2
|
|
ldr r8, .L896+32
|
|
mov r4, r0
|
|
mov r7, r1
|
|
movs r6, #0
|
|
str r2, [sp]
|
|
mov fp, r8
|
|
.L872:
|
|
ldr r2, .L896
|
|
ldr r3, [r2]
|
|
adds r3, r3, #1
|
|
str r3, [r2]
|
|
ldrh r3, [r8]
|
|
ldrh r2, [r4, #2]
|
|
subs r3, r3, #1
|
|
cmp r2, r3
|
|
bge .L873
|
|
ldrh r2, [r4]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L874
|
|
.L873:
|
|
mov r0, r4
|
|
bl Ftl_write_map_blk_to_last_page
|
|
.L874:
|
|
ldrh r2, [r4]
|
|
ldr r3, [r4, #12]
|
|
ldrh r3, [r3, r2, lsl #1]
|
|
cbnz r3, .L875
|
|
mov r2, #700
|
|
ldr r1, .L896+4
|
|
ldr r0, .L896+8
|
|
bl printf
|
|
.L875:
|
|
ldrh r2, [r4]
|
|
ldrh r3, [r4, #10]
|
|
cmp r2, r3
|
|
bcc .L876
|
|
movw r2, #701
|
|
ldr r1, .L896+4
|
|
ldr r0, .L896+8
|
|
bl printf
|
|
.L876:
|
|
ldrh r2, [r4]
|
|
movs r1, #0
|
|
ldr r3, [r4, #12]
|
|
ldr r5, .L896+12
|
|
ldrh r3, [r3, r2, lsl #1]
|
|
ldrh r2, [r4, #2]
|
|
str r3, [sp, #4]
|
|
orr r2, r2, r3, lsl #10
|
|
ldr r3, [sp]
|
|
str r2, [r5, #4]
|
|
ldr r2, .L896+16
|
|
str r3, [r5, #8]
|
|
ldr r0, [r2]
|
|
movs r2, #16
|
|
str r0, [r5, #12]
|
|
bl ftl_memset
|
|
ldr r2, [r5, #12]
|
|
ldr r1, [r4, #28]
|
|
ldr r3, [sp, #4]
|
|
strh r7, [r2, #8] @ movhi
|
|
str r1, [r2, #4]
|
|
ldrh r1, [r4, #4]
|
|
strh r3, [r2, #2] @ movhi
|
|
ldr r3, .L896+20
|
|
strh r1, [r2] @ movhi
|
|
ldr r0, [r5, #8]
|
|
ldrh r1, [r3]
|
|
str r2, [sp, #4]
|
|
bl js_hash
|
|
ldr r2, [sp, #4]
|
|
movs r3, #1
|
|
mov r1, r3
|
|
str r0, [r2, #12]
|
|
mov r2, r3
|
|
mov r0, r5
|
|
bl FlashProgPages
|
|
ldrh r2, [r4, #2]
|
|
ldr r3, [r5]
|
|
adds r2, r2, #1
|
|
uxth r2, r2
|
|
adds r3, r3, #1
|
|
strh r2, [r4, #2] @ movhi
|
|
bne .L877
|
|
ldr r1, [r5, #4]
|
|
adds r6, r6, #1
|
|
ldr r0, .L896+24
|
|
uxth r6, r6
|
|
str r5, [sp, #4]
|
|
bl printf
|
|
ldrh r2, [r4, #2]
|
|
ldr r3, [sp, #4]
|
|
cmp r2, #2
|
|
ittt ls
|
|
ldrhls r2, [fp]
|
|
addls r2, r2, #-1
|
|
strhls r2, [r4, #2] @ movhi
|
|
cmp r6, #3
|
|
bls .L879
|
|
mov r2, r6
|
|
ldr r1, [r3, #4]
|
|
ldr r0, .L896+28
|
|
bl printf
|
|
.L880:
|
|
b .L880
|
|
.L879:
|
|
ldr r3, [r4, #32]
|
|
cmp r3, #0
|
|
beq .L872
|
|
.L895:
|
|
b .L895
|
|
.L877:
|
|
ldr r1, [r5, #4]
|
|
cmp r2, #1
|
|
ldr r3, [r4, #24]
|
|
str r1, [r3, r10]
|
|
beq .L883
|
|
ldr r3, [r5]
|
|
cmp r3, #256
|
|
beq .L883
|
|
ldr r2, [r4, #36]
|
|
cbz r2, .L884
|
|
.L883:
|
|
movs r3, #0
|
|
str r3, [r4, #36]
|
|
b .L872
|
|
.L884:
|
|
adds r3, r3, #1
|
|
bne .L885
|
|
movw r2, #745
|
|
ldr r1, .L896+4
|
|
ldr r0, .L896+8
|
|
bl printf
|
|
.L885:
|
|
movs r0, #0
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L897:
|
|
.align 2
|
|
.L896:
|
|
.word .LANCHOR87
|
|
.word .LANCHOR148
|
|
.word .LC1
|
|
.word .LANCHOR137
|
|
.word .LANCHOR113
|
|
.word .LANCHOR22
|
|
.word .LC22
|
|
.word .LC23
|
|
.word .LANCHOR19
|
|
.size FtlMapWritePage, .-FtlMapWritePage
|
|
.section .text.load_l2p_region,"ax",%progbits
|
|
.align 1
|
|
.global load_l2p_region
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type load_l2p_region, %function
|
|
load_l2p_region:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L905
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r5, r0
|
|
mov r10, r1
|
|
ldrh r2, [r3]
|
|
str r3, [sp, #4]
|
|
cmp r2, r0
|
|
bcs .L899
|
|
movw r2, #485
|
|
ldr r1, .L905+4
|
|
ldr r0, .L905+8
|
|
bl printf
|
|
.L899:
|
|
ldr fp, .L905+48
|
|
movs r4, #12
|
|
ldr r7, .L905+12
|
|
ldr r3, [fp]
|
|
ldr r8, [r3, r5, lsl #2]
|
|
cmp r8, #0
|
|
bne .L900
|
|
mul r4, r4, r10
|
|
ldr r2, [r7]
|
|
movs r1, #255
|
|
adds r0, r2, r4
|
|
ldr r2, .L905+16
|
|
ldr r0, [r0, #8]
|
|
ldrh r2, [r2]
|
|
bl ftl_memset
|
|
ldr r2, [r7]
|
|
adds r1, r2, r4
|
|
strh r5, [r2, r4] @ movhi
|
|
str r8, [r1, #4]
|
|
.L901:
|
|
movs r0, #0
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L900:
|
|
mul r4, r4, r10
|
|
ldr r2, [r7]
|
|
ldr r6, .L905+20
|
|
add r2, r2, r4
|
|
mov r0, r6
|
|
ldr r2, [r2, #8]
|
|
str r8, [r6, #4]
|
|
str r2, [r6, #8]
|
|
ldr r2, .L905+24
|
|
ldr r2, [r2]
|
|
str r2, [r6, #12]
|
|
movs r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r10, [r6, #12]
|
|
ldrh r2, [r10, #8]
|
|
cmp r2, r5
|
|
beq .L902
|
|
mov r2, r8
|
|
mov r1, r5
|
|
ldr r0, .L905+28
|
|
bl printf
|
|
movs r3, #4
|
|
ldr r1, [r6, #12]
|
|
mov r2, r3
|
|
ldr r0, .L905+32
|
|
bl rknand_print_hex
|
|
ldr r3, [sp, #4]
|
|
movs r2, #4
|
|
ldr r1, [fp]
|
|
ldr r0, .L905+36
|
|
ldrh r3, [r3]
|
|
bl rknand_print_hex
|
|
.L903:
|
|
ldrh r3, [r10, #8]
|
|
cmp r3, r5
|
|
beq .L904
|
|
mov r2, #508
|
|
ldr r1, .L905+4
|
|
ldr r0, .L905+8
|
|
bl printf
|
|
.L904:
|
|
ldr r3, [r7]
|
|
movs r1, #0
|
|
adds r2, r3, r4
|
|
str r1, [r2, #4]
|
|
strh r5, [r3, r4] @ movhi
|
|
b .L901
|
|
.L902:
|
|
ldr r2, [r6]
|
|
cmp r2, #256
|
|
bne .L903
|
|
mov r2, r8
|
|
mov r1, r5
|
|
ldr r0, .L905+40
|
|
bl printf
|
|
ldr r3, [r7]
|
|
mov r1, r5
|
|
ldr r0, .L905+44
|
|
add r3, r3, r4
|
|
ldr r2, [r3, #8]
|
|
bl FtlMapWritePage
|
|
b .L903
|
|
.L906:
|
|
.align 2
|
|
.L905:
|
|
.word .LANCHOR31
|
|
.word .LANCHOR149
|
|
.word .LC1
|
|
.word .LANCHOR54
|
|
.word .LANCHOR22
|
|
.word .LANCHOR137
|
|
.word .LANCHOR113
|
|
.word .LC24
|
|
.word .LC13
|
|
.word .LC25
|
|
.word .LC26
|
|
.word .LANCHOR128
|
|
.word .LANCHOR123
|
|
.size load_l2p_region, .-load_l2p_region
|
|
.section .text.ftl_map_blk_gc,"ax",%progbits
|
|
.align 1
|
|
.global ftl_map_blk_gc
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_map_blk_gc, %function
|
|
ftl_map_blk_gc:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, [r0, #24]
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r4, r0
|
|
ldr r5, [r0, #12]
|
|
str r3, [sp]
|
|
bl ftl_free_no_use_map_blk
|
|
ldrh r3, [r4, #10]
|
|
ldrh r2, [r4, #8]
|
|
subs r3, r3, #5
|
|
cmp r2, r3
|
|
blt .L908
|
|
uxth r0, r0
|
|
ldrh r8, [r5, r0, lsl #1]
|
|
cmp r8, #0
|
|
beq .L908
|
|
ldr r3, [r4, #32]
|
|
cbnz r3, .L908
|
|
movs r2, #1
|
|
str r2, [r4, #32]
|
|
strh r3, [r5, r0, lsl #1] @ movhi
|
|
ldrh r3, [r4, #8]
|
|
ldrh r2, [r4, #2]
|
|
subs r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
ldr r3, .L923
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bcc .L909
|
|
mov r0, r4
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L909:
|
|
ldr r5, .L923+4
|
|
movs r6, #0
|
|
.L910:
|
|
ldrh r3, [r4, #6]
|
|
uxth r10, r6
|
|
cmp r3, r10
|
|
bhi .L917
|
|
movs r1, #1
|
|
mov r0, r8
|
|
bl FtlFreeSysBlkQueueIn
|
|
movs r3, #0
|
|
str r3, [r4, #32]
|
|
.L908:
|
|
ldr r3, .L923
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bcc .L918
|
|
mov r0, r4
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L918:
|
|
movs r0, #0
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L917:
|
|
ldr r3, [sp]
|
|
uxth fp, r6
|
|
add r3, r3, fp, lsl #2
|
|
str r3, [sp, #4]
|
|
ldr r3, [sp]
|
|
ldr r2, [r3, fp, lsl #2]
|
|
cmp r8, r2, lsr #10
|
|
bne .L911
|
|
ldr r3, .L923+8
|
|
str r2, [r5, #4]
|
|
movs r2, #1
|
|
ldr r0, .L923+4
|
|
ldr r1, [r3]
|
|
str r1, [r5, #8]
|
|
ldr r1, .L923+12
|
|
ldr r7, [r1]
|
|
mov r1, r2
|
|
str r7, [r5, #12]
|
|
bl FlashReadPages
|
|
ldrh r2, [r7, #8]
|
|
cmp r2, r10
|
|
beq .L912
|
|
movw r2, #611
|
|
ldr r1, .L923+16
|
|
ldr r0, .L923+20
|
|
bl printf
|
|
.L912:
|
|
ldr r2, [r5]
|
|
adds r2, r2, #1
|
|
bne .L913
|
|
.L915:
|
|
ldr r2, [sp, #4]
|
|
movs r3, #0
|
|
str r3, [r2]
|
|
.L914:
|
|
b .L914
|
|
.L913:
|
|
ldrh r2, [r7, #8]
|
|
cmp r2, r10
|
|
bne .L915
|
|
ldrh r1, [r7]
|
|
ldrh r2, [r4, #4]
|
|
cmp r1, r2
|
|
bne .L915
|
|
ldr r2, [r5, #8]
|
|
mov r1, fp
|
|
mov r0, r4
|
|
bl FtlMapWritePage
|
|
.L911:
|
|
adds r6, r6, #1
|
|
b .L910
|
|
.L924:
|
|
.align 2
|
|
.L923:
|
|
.word .LANCHOR19
|
|
.word .LANCHOR137
|
|
.word .LANCHOR106
|
|
.word .LANCHOR113
|
|
.word .LANCHOR150
|
|
.word .LC1
|
|
.size ftl_map_blk_gc, .-ftl_map_blk_gc
|
|
.section .text.flush_l2p_region,"ax",%progbits
|
|
.align 1
|
|
.global flush_l2p_region
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type flush_l2p_region, %function
|
|
flush_l2p_region:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
movs r4, #12
|
|
ldr r5, .L926
|
|
muls r4, r0, r4
|
|
ldr r0, .L926+4
|
|
ldr r3, [r5]
|
|
adds r2, r3, r4
|
|
ldrh r1, [r3, r4]
|
|
ldr r2, [r2, #8]
|
|
bl FtlMapWritePage
|
|
ldr r3, [r5]
|
|
movs r0, #0
|
|
add r4, r4, r3
|
|
ldr r3, [r4, #4]
|
|
bic r3, r3, #-2147483648
|
|
str r3, [r4, #4]
|
|
pop {r3, r4, r5, pc}
|
|
.L927:
|
|
.align 2
|
|
.L926:
|
|
.word .LANCHOR54
|
|
.word .LANCHOR128
|
|
.size flush_l2p_region, .-flush_l2p_region
|
|
.section .text.l2p_flush,"ax",%progbits
|
|
.align 1
|
|
.global l2p_flush
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type l2p_flush, %function
|
|
l2p_flush:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
movs r4, #0
|
|
ldr r5, .L932
|
|
ldr r6, .L932+4
|
|
.L929:
|
|
ldrh r3, [r5]
|
|
uxth r0, r4
|
|
cmp r3, r0
|
|
bhi .L931
|
|
movs r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
.L931:
|
|
ldr r2, [r6]
|
|
uxth r3, r4
|
|
movs r1, #12
|
|
mla r3, r1, r3, r2
|
|
ldr r3, [r3, #4]
|
|
cmp r3, #0
|
|
bge .L930
|
|
bl flush_l2p_region
|
|
.L930:
|
|
adds r4, r4, #1
|
|
b .L929
|
|
.L933:
|
|
.align 2
|
|
.L932:
|
|
.word .LANCHOR32
|
|
.word .LANCHOR54
|
|
.size l2p_flush, .-l2p_flush
|
|
.section .text.log2phys,"ax",%progbits
|
|
.align 1
|
|
.global log2phys
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type log2phys, %function
|
|
log2phys:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r7, r2
|
|
ldr r4, .L947
|
|
mov r10, r0
|
|
mov r5, r1
|
|
ldr r3, .L947+4
|
|
ldr r2, [r4]
|
|
ldrh fp, [r3]
|
|
cmp r0, r2
|
|
bcc .L935
|
|
mov r2, #820
|
|
ldr r1, .L947+8
|
|
ldr r0, .L947+12
|
|
bl printf
|
|
.L935:
|
|
ldr r3, [r4]
|
|
cmp r10, r3
|
|
bcs .L936
|
|
ldr r3, .L947+16
|
|
add fp, fp, #7
|
|
lsr r6, r10, fp
|
|
movs r2, #0
|
|
ldrh r1, [r3]
|
|
uxth r6, r6
|
|
ldr r3, .L947+20
|
|
ldr r0, [r3]
|
|
mov r8, r3
|
|
movs r3, #12
|
|
.L937:
|
|
uxth r4, r2
|
|
cmp r4, r1
|
|
bcc .L942
|
|
str r3, [sp, #4]
|
|
bl select_l2p_ram_region
|
|
ldr r3, [sp, #4]
|
|
mov r4, r0
|
|
ldr r2, [r8]
|
|
muls r3, r0, r3
|
|
adds r1, r2, r3
|
|
ldrh r2, [r2, r3]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L943
|
|
ldr r3, [r1, #4]
|
|
cmp r3, #0
|
|
bge .L943
|
|
bl flush_l2p_region
|
|
.L943:
|
|
mov r1, r4
|
|
mov r0, r6
|
|
bl load_l2p_region
|
|
b .L939
|
|
.L936:
|
|
mov r0, #-1
|
|
cbnz r7, .L934
|
|
str r0, [r5]
|
|
.L934:
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L942:
|
|
adds r2, r2, #1
|
|
mla ip, r3, r2, r0
|
|
ldrh ip, [ip, #-12]
|
|
cmp ip, r6
|
|
bne .L937
|
|
.L939:
|
|
movs r0, #1
|
|
ldr r2, [r8]
|
|
lsl r0, r0, fp
|
|
movs r3, #12
|
|
subs r0, r0, #1
|
|
and r0, r0, r10
|
|
uxth r0, r0
|
|
mla r3, r3, r4, r2
|
|
cbnz r7, .L940
|
|
ldr r3, [r3, #8]
|
|
ldr r3, [r3, r0, lsl #2]
|
|
str r3, [r5]
|
|
.L941:
|
|
ldr r2, [r8]
|
|
movs r3, #12
|
|
mla r4, r3, r4, r2
|
|
ldr r3, [r4, #4]
|
|
adds r2, r3, #1
|
|
beq .L945
|
|
adds r3, r3, #1
|
|
str r3, [r4, #4]
|
|
.L945:
|
|
movs r0, #0
|
|
b .L934
|
|
.L940:
|
|
ldr r1, [r5]
|
|
ldr r2, [r3, #8]
|
|
str r1, [r2, r0, lsl #2]
|
|
ldr r2, [r3, #4]
|
|
orr r2, r2, #-2147483648
|
|
str r2, [r3, #4]
|
|
ldr r3, .L947+24
|
|
strh r6, [r3] @ movhi
|
|
b .L941
|
|
.L948:
|
|
.align 2
|
|
.L947:
|
|
.word .LANCHOR151
|
|
.word .LANCHOR21
|
|
.word .LANCHOR152
|
|
.word .LC1
|
|
.word .LANCHOR32
|
|
.word .LANCHOR54
|
|
.word .LANCHOR55
|
|
.size log2phys, .-log2phys
|
|
.section .text.FtlReUsePrevPpa,"ax",%progbits
|
|
.align 1
|
|
.global FtlReUsePrevPpa
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlReUsePrevPpa, %function
|
|
FtlReUsePrevPpa:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, lr}
|
|
mov r6, r0
|
|
ldr r5, .L959
|
|
ubfx r0, r1, #10, #16
|
|
str r1, [sp, #4]
|
|
bl P2V_block_in_plane
|
|
ldr r2, [r5]
|
|
mov r7, r0
|
|
ldrh r3, [r2, r0, lsl #1]
|
|
cbnz r3, .L950
|
|
ldr r2, .L959+4
|
|
ldr r4, [r2]
|
|
cmp r4, #0
|
|
beq .L951
|
|
ldr r2, .L959+8
|
|
movw lr, #65535
|
|
ldr ip, .L959+24
|
|
ldr r0, .L959+12
|
|
ldr r2, [r2]
|
|
ldrh r1, [r0]
|
|
mov r8, r0
|
|
subs r4, r4, r2
|
|
asrs r4, r4, #1
|
|
mul r4, ip, r4
|
|
mov ip, #6
|
|
uxth r4, r4
|
|
.L952:
|
|
uxth r0, r3
|
|
cmp r1, r0
|
|
bls .L951
|
|
cmp r4, r7
|
|
bne .L953
|
|
mov r1, r4
|
|
ldr r0, .L959+4
|
|
bl List_remove_node
|
|
ldrh r3, [r8]
|
|
cbnz r3, .L954
|
|
movw r2, #1742
|
|
ldr r1, .L959+16
|
|
ldr r0, .L959+20
|
|
bl printf
|
|
.L954:
|
|
ldrh r3, [r8]
|
|
mov r0, r4
|
|
subs r3, r3, #1
|
|
strh r3, [r8] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
ldr r2, [r5]
|
|
ldrh r3, [r2, r7, lsl #1]
|
|
.L950:
|
|
adds r3, r3, #1
|
|
strh r3, [r2, r7, lsl #1] @ movhi
|
|
b .L951
|
|
.L953:
|
|
mul r4, ip, r4
|
|
adds r3, r3, #1
|
|
ldrh r4, [r2, r4]
|
|
cmp r4, lr
|
|
bne .L952
|
|
.L951:
|
|
movs r2, #1
|
|
add r1, sp, #4
|
|
mov r0, r6
|
|
bl log2phys
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L960:
|
|
.align 2
|
|
.L959:
|
|
.word .LANCHOR41
|
|
.word .LANCHOR45
|
|
.word .LANCHOR39
|
|
.word .LANCHOR47
|
|
.word .LANCHOR153
|
|
.word .LC1
|
|
.word -1431655765
|
|
.size FtlReUsePrevPpa, .-FtlReUsePrevPpa
|
|
.section .text.FtlRecoverySuperblock,"ax",%progbits
|
|
.align 1
|
|
.global FtlRecoverySuperblock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlRecoverySuperblock, %function
|
|
FtlRecoverySuperblock:
|
|
@ args = 0, pretend = 0, frame = 48
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldrh r3, [r0]
|
|
movw r2, #65535
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r8, r0
|
|
sub sp, sp, #48
|
|
cmp r3, r2
|
|
beq .L1093
|
|
ldrh r3, [r0, #2]
|
|
str r3, [sp, #4]
|
|
ldrb r3, [r0, #6] @ zero_extendqisi2
|
|
ldr r1, [sp, #4]
|
|
str r3, [sp, #20]
|
|
ldr r3, .L1102
|
|
ldrh r3, [r3]
|
|
cmp r3, r1
|
|
mov r3, #0
|
|
bne .L964
|
|
strh r3, [r0, #4] @ movhi
|
|
.L1100:
|
|
strb r3, [r8, #6]
|
|
.L1093:
|
|
movs r0, #0
|
|
add sp, sp, #48
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L964:
|
|
ldrh r0, [r0, #16]
|
|
.L965:
|
|
cmp r0, r2
|
|
uxth r5, r3
|
|
add r3, r3, #1
|
|
beq .L966
|
|
movs r1, #1
|
|
bl FtlGetLastWrittenPage
|
|
mov r4, r0
|
|
adds r0, r0, #1
|
|
beq .L967
|
|
ldr r3, .L1102+4
|
|
movs r2, #0
|
|
mov r5, r2
|
|
movw fp, #65535
|
|
mov r10, #20
|
|
ldrh ip, [r3]
|
|
ldr r3, .L1102+8
|
|
ldr r0, [r3]
|
|
ldr r3, .L1102+12
|
|
ldr r3, [r3]
|
|
str r3, [sp, #8]
|
|
ldr r3, .L1102+16
|
|
ldrh r7, [r3]
|
|
ldr r3, .L1102+20
|
|
ldr r3, [r3]
|
|
str r3, [sp, #12]
|
|
ldr r3, .L1102+24
|
|
ldrh lr, [r3]
|
|
add r3, r8, #16
|
|
str r3, [sp, #16]
|
|
str r3, [sp]
|
|
.L968:
|
|
uxth r3, r2
|
|
cmp ip, r3
|
|
bhi .L972
|
|
movs r2, #0
|
|
mov r1, r5
|
|
bl FlashReadPages
|
|
ldr r2, .L1102+28
|
|
uxth r1, r4
|
|
movw fp, #65535
|
|
str r1, [sp, #12]
|
|
ldr r3, [r2]
|
|
subs r3, r3, #1
|
|
str r3, [sp]
|
|
ldr r3, .L1102+8
|
|
ldr r10, [r3]
|
|
movs r3, #0
|
|
mov r7, r10
|
|
.L973:
|
|
uxth r1, r3
|
|
cmp r5, r1
|
|
bhi .L978
|
|
bne .L976
|
|
adds r3, r4, #1
|
|
uxth r3, r3
|
|
str r3, [sp, #8]
|
|
.L1094:
|
|
ldr r0, [r10, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_plane
|
|
ldr r3, .L1102
|
|
mov r10, r0
|
|
ldr r2, [sp, #8]
|
|
ldrh r3, [r3]
|
|
cmp r3, r2
|
|
bne .L980
|
|
ldrh r3, [sp, #8]
|
|
strh r3, [r8, #2] @ movhi
|
|
movs r3, #0
|
|
strb r3, [r8, #6]
|
|
strh r3, [r8, #4] @ movhi
|
|
.L980:
|
|
ldr r3, [sp, #8]
|
|
ldr r2, [sp, #4]
|
|
cmp r3, r2
|
|
bne .L981
|
|
ldr r3, [sp, #20]
|
|
cmp r10, r3
|
|
bne .L981
|
|
ldr r1, [sp, #8]
|
|
mov r2, r10
|
|
.L1101:
|
|
mov r0, r8
|
|
bl ftl_sb_update_avl_pages
|
|
b .L1093
|
|
.L966:
|
|
uxth r1, r3
|
|
adds r1, r1, #8
|
|
ldrh r0, [r8, r1, lsl #1]
|
|
b .L965
|
|
.L967:
|
|
ldr r3, [sp, #4]
|
|
cbz r3, .L969
|
|
movw r2, #1809
|
|
ldr r1, .L1102+32
|
|
ldr r0, .L1102+36
|
|
bl printf
|
|
.L969:
|
|
ldr r3, [sp, #20]
|
|
cbz r3, .L970
|
|
cmp r5, r3
|
|
beq .L970
|
|
movw r2, #1810
|
|
ldr r1, .L1102+32
|
|
ldr r0, .L1102+36
|
|
bl printf
|
|
.L970:
|
|
movs r3, #0
|
|
strh r3, [r8, #2] @ movhi
|
|
b .L1100
|
|
.L972:
|
|
ldr r1, [sp]
|
|
ldrh r3, [r1], #2
|
|
cmp r3, fp
|
|
str r1, [sp]
|
|
beq .L971
|
|
mla r1, r10, r5, r0
|
|
ldr r6, [sp, #8]
|
|
orr r3, r4, r3, lsl #10
|
|
str r3, [r1, #4]
|
|
mul r3, r7, r5
|
|
bic r3, r3, #3
|
|
add r3, r3, r6
|
|
ldr r6, [sp, #12]
|
|
str r3, [r1, #8]
|
|
mul r3, lr, r5
|
|
adds r5, r5, #1
|
|
uxth r5, r5
|
|
bic r3, r3, #3
|
|
add r3, r3, r6
|
|
str r3, [r1, #12]
|
|
.L971:
|
|
adds r2, r2, #1
|
|
b .L968
|
|
.L978:
|
|
ldr r1, [r7]
|
|
cbnz r1, .L974
|
|
ldr r1, [r7, #12]
|
|
ldr r6, [r1, #4]
|
|
str r1, [sp, #8]
|
|
adds r1, r6, #1
|
|
beq .L975
|
|
ldr r1, [r2]
|
|
mov r0, r6
|
|
bl ftl_cmp_data_ver
|
|
cbz r0, .L975
|
|
adds r6, r6, #1
|
|
str r6, [r2]
|
|
.L975:
|
|
ldr r1, [sp, #8]
|
|
ldr r1, [r1]
|
|
adds r1, r1, #1
|
|
bne .L977
|
|
.L976:
|
|
uxth r2, r4
|
|
uxth r3, r3
|
|
str r2, [sp, #8]
|
|
movs r2, #20
|
|
mla r10, r2, r3, r10
|
|
b .L1094
|
|
.L974:
|
|
ldr fp, [sp, #12]
|
|
.L977:
|
|
adds r3, r3, #1
|
|
adds r7, r7, #20
|
|
b .L973
|
|
.L981:
|
|
movw r3, #65535
|
|
cmp fp, r3
|
|
bne .L982
|
|
ldrb r3, [r8, #8] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L983
|
|
.L982:
|
|
ldr r3, .L1102+40
|
|
uxth r6, r4
|
|
uxth r4, r4
|
|
ldr r7, .L1102+8
|
|
ldr r2, [r3]
|
|
adds r2, r2, #1
|
|
itt eq
|
|
ldreq r2, [sp]
|
|
streq r2, [r3]
|
|
ldr r3, [sp, #4]
|
|
adds r3, r3, #7
|
|
cmp r4, r3
|
|
itet gt
|
|
subgt r4, r6, #7
|
|
ldrle r4, [sp, #4]
|
|
uxthgt r4, r4
|
|
.L986:
|
|
cmp r4, r6
|
|
bhi .L996
|
|
ldr r3, .L1102+4
|
|
movw lr, #65535
|
|
ldr r0, [r7]
|
|
mov ip, #20
|
|
ldrh fp, [r3]
|
|
ldr r3, [sp, #16]
|
|
str r3, [sp, #12]
|
|
movs r3, #0
|
|
mov r5, r3
|
|
b .L997
|
|
.L988:
|
|
ldr r1, [sp, #12]
|
|
ldrh r2, [r1], #2
|
|
cmp r2, lr
|
|
str r1, [sp, #12]
|
|
beq .L987
|
|
mla r1, ip, r5, r0
|
|
adds r5, r5, #1
|
|
orr r2, r4, r2, lsl #10
|
|
uxth r5, r5
|
|
str r2, [r1, #4]
|
|
.L987:
|
|
adds r3, r3, #1
|
|
.L997:
|
|
uxth r2, r3
|
|
cmp fp, r2
|
|
bhi .L988
|
|
mov r1, r5
|
|
movs r2, #0
|
|
bl FlashReadPages
|
|
ldr r3, .L1102+40
|
|
movs r1, #20
|
|
movs r0, #0
|
|
movw ip, #65535
|
|
ldr r2, [r3]
|
|
ldr r3, [r7]
|
|
mla r5, r1, r5, r3
|
|
.L989:
|
|
cmp r5, r3
|
|
bne .L994
|
|
cbz r0, .L995
|
|
ldr r3, .L1102+40
|
|
str r2, [r3]
|
|
.L995:
|
|
adds r4, r4, #1
|
|
uxth r4, r4
|
|
b .L986
|
|
.L1103:
|
|
.align 2
|
|
.L1102:
|
|
.word .LANCHOR18
|
|
.word .LANCHOR2
|
|
.word .LANCHOR102
|
|
.word .LANCHOR63
|
|
.word .LANCHOR22
|
|
.word .LANCHOR64
|
|
.word .LANCHOR23
|
|
.word .LANCHOR82
|
|
.word .LANCHOR154
|
|
.word .LC1
|
|
.word .LANCHOR133
|
|
.L994:
|
|
ldr r1, [r3]
|
|
cmp r1, #0
|
|
beq .L990
|
|
cbz r0, .L983
|
|
.L1095:
|
|
ldr r3, .L1104
|
|
str r2, [r3]
|
|
.L983:
|
|
ldr fp, [sp, #4]
|
|
movs r2, #1
|
|
ldr r6, .L1104+4
|
|
ldr r3, .L1104+8
|
|
strh r2, [r3] @ movhi
|
|
.L998:
|
|
ldr r3, .L1104+12
|
|
movw lr, #65535
|
|
ldr r0, [r6]
|
|
movs r7, #20
|
|
ldr r1, [sp, #16]
|
|
ldrh r4, [r3]
|
|
movs r3, #0
|
|
str r3, [sp, #12]
|
|
.L999:
|
|
uxth r2, r3
|
|
cmp r4, r2
|
|
bhi .L1001
|
|
movs r2, #0
|
|
ldr r1, [sp, #12]
|
|
bl FlashReadPages
|
|
movs r3, #0
|
|
.L1099:
|
|
str r3, [sp, #24]
|
|
ldr r2, [sp, #12]
|
|
ldrh r3, [sp, #24]
|
|
cmp r2, r3
|
|
bhi .L1030
|
|
ldr r3, .L1104+16
|
|
add fp, fp, #1
|
|
uxth fp, fp
|
|
ldrh r3, [r3]
|
|
cmp r3, fp
|
|
bne .L998
|
|
ldr r2, .L1104+12
|
|
movw r0, #65535
|
|
movs r3, #0
|
|
strh fp, [r8, #2] @ movhi
|
|
strh r3, [r8, #4] @ movhi
|
|
ldrh r2, [r2]
|
|
.L1031:
|
|
uxth r1, r3
|
|
cmp r1, r2
|
|
bcs .L1093
|
|
ldr r1, [sp, #16]
|
|
ldrh r4, [r1], #2
|
|
cmp r4, r0
|
|
str r1, [sp, #16]
|
|
add r1, r3, #1
|
|
bne .L1100
|
|
mov r3, r1
|
|
b .L1031
|
|
.L990:
|
|
ldr r1, [r3, #12]
|
|
ldrh lr, [r1]
|
|
cmp lr, ip
|
|
beq .L993
|
|
ldr r1, [r1, #4]
|
|
cmp r1, #-1
|
|
itt ne
|
|
movne r2, r1
|
|
movne r0, #1
|
|
.L993:
|
|
adds r3, r3, #20
|
|
b .L989
|
|
.L996:
|
|
mov r2, #-1
|
|
b .L1095
|
|
.L1001:
|
|
ldrh r2, [r1], #2
|
|
cmp r2, lr
|
|
beq .L1000
|
|
ldr r5, [sp, #12]
|
|
orr r2, fp, r2, lsl #10
|
|
mla ip, r7, r5, r0
|
|
str r2, [ip, #4]
|
|
mov r2, r5
|
|
adds r2, r2, #1
|
|
uxth r2, r2
|
|
str r2, [sp, #12]
|
|
.L1000:
|
|
adds r3, r3, #1
|
|
b .L999
|
|
.L1030:
|
|
ldr r3, [sp, #24]
|
|
movs r5, #20
|
|
muls r5, r3, r5
|
|
ldr r3, [r6]
|
|
str r3, [sp, #28]
|
|
adds r7, r3, r5
|
|
ldr r4, [r7, #4]
|
|
ubfx r0, r4, #10, #16
|
|
str r4, [sp, #44]
|
|
bl P2V_plane
|
|
ldr r3, [sp, #4]
|
|
cmp fp, r3
|
|
bcc .L1003
|
|
ldr r3, [sp, #28]
|
|
bne .L1004
|
|
ldr r2, [sp, #20]
|
|
cmp r2, r0
|
|
bhi .L1003
|
|
.L1004:
|
|
ldr r2, [sp, #8]
|
|
cmp fp, r2
|
|
bne .L1005
|
|
cmp r10, r0
|
|
beq .L1006
|
|
.L1005:
|
|
ldr r3, [r3, r5]
|
|
adds r3, r3, #1
|
|
beq .L1007
|
|
ldr r3, [r7, #12]
|
|
movw r2, #61589
|
|
ldrh r1, [r3]
|
|
cmp r1, r2
|
|
beq .L1008
|
|
ldrh r0, [r8]
|
|
.L1096:
|
|
bl decrement_vpc_count
|
|
b .L1003
|
|
.L1008:
|
|
ldr r2, [r3, #4]
|
|
str r2, [sp]
|
|
adds r2, r2, #1
|
|
beq .L1009
|
|
ldr r2, .L1104+20
|
|
ldr r0, [sp]
|
|
ldr r1, [r2]
|
|
bl ftl_cmp_data_ver
|
|
cbz r0, .L1009
|
|
ldr r1, [sp]
|
|
adds r1, r1, #1
|
|
str r1, [r2]
|
|
.L1009:
|
|
ldr r4, [r3, #8]
|
|
add r1, sp, #40
|
|
ldr r3, [r3, #12]
|
|
movs r2, #0
|
|
mov r0, r4
|
|
str r3, [sp, #36]
|
|
bl log2phys
|
|
ldr r3, .L1104
|
|
ldr r1, [r3]
|
|
adds r3, r1, #1
|
|
beq .L1010
|
|
ldr r0, [sp]
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L1010
|
|
ldr r3, [sp, #36]
|
|
adds r7, r3, #1
|
|
beq .L1011
|
|
ldr r0, [r6]
|
|
movs r2, #0
|
|
movs r1, #1
|
|
add r0, r0, r5
|
|
str r3, [r0, #4]
|
|
ldr r7, [r0, #12]
|
|
bl FlashReadPages
|
|
ldr r2, [r6]
|
|
ldr r1, [r2, r5]
|
|
adds r3, r2, r5
|
|
adds r1, r1, #1
|
|
bne .L1012
|
|
.L1013:
|
|
mov r3, #-1
|
|
str r3, [sp, #36]
|
|
.L1020:
|
|
ldr r7, [sp, #36]
|
|
adds r0, r7, #1
|
|
beq .L1003
|
|
.L1034:
|
|
ubfx r0, r7, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldr r3, .L1104+24
|
|
mov r4, r0
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
bhi .L1026
|
|
movw r2, #2066
|
|
ldr r1, .L1104+28
|
|
ldr r0, .L1104+32
|
|
bl printf
|
|
.L1026:
|
|
ldr r3, .L1104+36
|
|
ldr r3, [r3]
|
|
ldrh r3, [r3, r4, lsl #1]
|
|
cmp r3, #0
|
|
beq .L1027
|
|
mov r0, r4
|
|
b .L1096
|
|
.L1011:
|
|
ldr r3, [sp, #44]
|
|
ldr r2, [sp, #40]
|
|
cmp r2, r3
|
|
bne .L1003
|
|
movs r2, #1
|
|
add r1, sp, #36
|
|
mov r0, r4
|
|
bl log2phys
|
|
.L1003:
|
|
ldr r3, [sp, #24]
|
|
adds r3, r3, #1
|
|
b .L1099
|
|
.L1012:
|
|
ldr r1, [r7, #8]
|
|
cmp r4, r1
|
|
bne .L1013
|
|
ldr r0, .L1104
|
|
ldr r1, [r7, #4]
|
|
ldr r0, [r0]
|
|
str r1, [sp, #28]
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L1013
|
|
ldr r1, [sp, #40]
|
|
ldr r0, [sp, #44]
|
|
cmp r1, r0
|
|
bne .L1015
|
|
.L1018:
|
|
ldr r1, [sp, #36]
|
|
mov r0, r4
|
|
bl FtlReUsePrevPpa
|
|
b .L1013
|
|
.L1015:
|
|
ldr r0, [sp, #36]
|
|
cmp r1, r0
|
|
beq .L1013
|
|
adds r0, r1, #1
|
|
beq .L1016
|
|
str r1, [r3, #4]
|
|
movs r2, #0
|
|
movs r1, #1
|
|
mov r0, r3
|
|
ldr r7, [r3, #12]
|
|
bl FlashReadPages
|
|
.L1017:
|
|
ldr r3, [r6]
|
|
ldr r3, [r3, r5]
|
|
adds r3, r3, #1
|
|
beq .L1018
|
|
ldr r3, [r7, #4]
|
|
ldr r2, .L1104
|
|
mov r1, r3
|
|
ldr r0, [r2]
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L1018
|
|
mov r1, r3
|
|
ldr r0, [sp, #28]
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L1013
|
|
b .L1018
|
|
.L1016:
|
|
str r1, [r2, r5]
|
|
b .L1017
|
|
.L1010:
|
|
ldr r3, [sp, #44]
|
|
ldr r2, [sp, #40]
|
|
cmp r2, r3
|
|
beq .L1020
|
|
ldr r1, [sp, #36]
|
|
adds r7, r1, #1
|
|
beq .L1022
|
|
ldr r3, .L1104+40
|
|
ldr r3, [r3]
|
|
cmp r3, r1, lsr #10
|
|
bhi .L1022
|
|
ldr r0, .L1104+44
|
|
.L1098:
|
|
bl printf
|
|
b .L1003
|
|
.L1105:
|
|
.align 2
|
|
.L1104:
|
|
.word .LANCHOR133
|
|
.word .LANCHOR102
|
|
.word .LANCHOR155
|
|
.word .LANCHOR2
|
|
.word .LANCHOR18
|
|
.word .LANCHOR82
|
|
.word .LANCHOR4
|
|
.word .LANCHOR154
|
|
.word .LC1
|
|
.word .LANCHOR41
|
|
.word .LANCHOR7
|
|
.word .LC27
|
|
.L1022:
|
|
movs r2, #1
|
|
add r1, sp, #44
|
|
mov r0, r4
|
|
bl log2phys
|
|
ldr r7, [sp, #40]
|
|
adds r5, r7, #1
|
|
beq .L1020
|
|
ldr r3, [sp, #36]
|
|
cmp r7, r3
|
|
beq .L1034
|
|
ubfx r0, r7, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldr r3, .L1106
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
beq .L1025
|
|
ldr r3, .L1106+4
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
beq .L1025
|
|
ldr r3, .L1106+8
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
bne .L1020
|
|
.L1025:
|
|
ldr r0, [r6]
|
|
movs r2, #0
|
|
movs r1, #1
|
|
str r7, [r0, #4]
|
|
ldr r5, [r0, #12]
|
|
bl FlashReadPages
|
|
ldr r3, [r6]
|
|
ldr r3, [r3]
|
|
adds r3, r3, #1
|
|
beq .L1020
|
|
ldr r1, [r5, #4]
|
|
ldr r0, [sp]
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
bne .L1020
|
|
movs r2, #1
|
|
add r1, sp, #40
|
|
mov r0, r4
|
|
bl log2phys
|
|
b .L1020
|
|
.L1027:
|
|
mov r1, r4
|
|
ldr r0, .L1106+12
|
|
b .L1098
|
|
.L1007:
|
|
ldr r3, .L1106+16
|
|
ldr r3, [r3]
|
|
cmp r3, #31
|
|
bhi .L1028
|
|
ldr r2, .L1106+20
|
|
str r4, [r2, r3, lsl #2]
|
|
adds r3, r3, #1
|
|
ldr r2, .L1106+16
|
|
str r3, [r2]
|
|
.L1028:
|
|
ldrh r0, [r8]
|
|
bl decrement_vpc_count
|
|
ldr r3, .L1106+24
|
|
ldr r2, [r3]
|
|
adds r1, r2, #1
|
|
bne .L1029
|
|
ldr r2, [sp]
|
|
.L1097:
|
|
str r2, [r3]
|
|
b .L1003
|
|
.L1029:
|
|
ldr r1, [sp]
|
|
cmp r1, r2
|
|
bcs .L1003
|
|
mov r2, r1
|
|
b .L1097
|
|
.L1006:
|
|
strb r10, [r8, #6]
|
|
mov r2, r10
|
|
strh fp, [r8, #2] @ movhi
|
|
mov r1, fp
|
|
b .L1101
|
|
.L1107:
|
|
.align 2
|
|
.L1106:
|
|
.word .LANCHOR50
|
|
.word .LANCHOR51
|
|
.word .LANCHOR52
|
|
.word .LC28
|
|
.word .LANCHOR156
|
|
.word .LANCHOR157
|
|
.word .LANCHOR133
|
|
.size FtlRecoverySuperblock, .-FtlRecoverySuperblock
|
|
.section .text.ftl_check_vpc,"ax",%progbits
|
|
.align 1
|
|
.global ftl_check_vpc
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_check_vpc, %function
|
|
ftl_check_vpc:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r4, #0
|
|
ldr r6, .L1132
|
|
ldr r5, .L1132+4
|
|
ldr r1, .L1132+8
|
|
ldr r0, .L1132+12
|
|
bl printf
|
|
mov r2, #8192
|
|
movs r1, #0
|
|
ldr r0, .L1132+4
|
|
bl ftl_memset
|
|
.L1109:
|
|
ldr r3, [r6]
|
|
cmp r4, r3
|
|
bcc .L1111
|
|
ldr r10, .L1132+48
|
|
movs r4, #0
|
|
ldr r7, .L1132+16
|
|
mov r6, r4
|
|
.L1112:
|
|
ldrh r2, [r10]
|
|
uxth r3, r4
|
|
cmp r2, r3
|
|
bhi .L1114
|
|
ldr r3, .L1132+20
|
|
ldr r4, [r3]
|
|
cbz r4, .L1115
|
|
ldr r3, .L1132+24
|
|
mov r8, #0
|
|
ldr r5, .L1132+28
|
|
ldr r10, .L1132+16
|
|
ldrh r7, [r3]
|
|
ldr r3, [r5]
|
|
ldr fp, .L1132+4
|
|
subs r4, r4, r3
|
|
ldr r3, .L1132+32
|
|
asrs r4, r4, #1
|
|
muls r4, r3, r4
|
|
uxth r4, r4
|
|
.L1116:
|
|
uxth r3, r8
|
|
cmp r7, r3
|
|
bls .L1115
|
|
ldr r3, [r10]
|
|
ldrh r2, [r3, r4, lsl #1]
|
|
cbz r2, .L1117
|
|
movs r6, #1
|
|
ldrh r3, [fp, r4, lsl #1]
|
|
mov r1, r4
|
|
ldr r0, .L1132+36
|
|
bl printf
|
|
.L1117:
|
|
movs r3, #6
|
|
ldr r2, [r5]
|
|
muls r4, r3, r4
|
|
movw r3, #65535
|
|
add r8, r8, #1
|
|
ldrh r4, [r2, r4]
|
|
cmp r4, r3
|
|
bne .L1116
|
|
.L1115:
|
|
cbz r6, .L1108
|
|
movw r2, #2394
|
|
ldr r1, .L1132+8
|
|
ldr r0, .L1132+40
|
|
bl printf
|
|
.L1108:
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1111:
|
|
movs r2, #0
|
|
add r1, sp, #4
|
|
mov r0, r4
|
|
bl log2phys
|
|
ldr r0, [sp, #4]
|
|
adds r3, r0, #1
|
|
beq .L1110
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldrh r3, [r5, r0, lsl #1]
|
|
adds r3, r3, #1
|
|
strh r3, [r5, r0, lsl #1] @ movhi
|
|
.L1110:
|
|
adds r4, r4, #1
|
|
b .L1109
|
|
.L1114:
|
|
ldr r3, [r7]
|
|
uxth r5, r4
|
|
ldr r8, .L1132+4
|
|
ldrh r2, [r3, r5, lsl #1]
|
|
ldrh r3, [r8, r5, lsl #1]
|
|
cmp r2, r3
|
|
beq .L1113
|
|
mov r1, r5
|
|
ldr r0, .L1132+44
|
|
bl printf
|
|
ldr r3, [r7]
|
|
movw r2, #65535
|
|
ldrh r3, [r3, r5, lsl #1]
|
|
cmp r3, r2
|
|
beq .L1113
|
|
ldrh r2, [r8, r5, lsl #1]
|
|
cmp r2, r3
|
|
it hi
|
|
movhi r6, #1
|
|
.L1113:
|
|
adds r4, r4, #1
|
|
b .L1112
|
|
.L1133:
|
|
.align 2
|
|
.L1132:
|
|
.word .LANCHOR151
|
|
.word check_vpc_table
|
|
.word .LANCHOR158
|
|
.word .LC29
|
|
.word .LANCHOR41
|
|
.word .LANCHOR45
|
|
.word .LANCHOR47
|
|
.word .LANCHOR39
|
|
.word -1431655765
|
|
.word .LC31
|
|
.word .LC1
|
|
.word .LC30
|
|
.word .LANCHOR4
|
|
.size ftl_check_vpc, .-ftl_check_vpc
|
|
.section .text.ftl_scan_all_data,"ax",%progbits
|
|
.align 1
|
|
.global ftl_scan_all_data
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_scan_all_data, %function
|
|
ftl_scan_all_data:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
movs r5, #0
|
|
ldr r7, .L1148
|
|
sub sp, sp, #32
|
|
movs r1, #0
|
|
ldr r8, .L1148+24
|
|
ldr r0, .L1148+4
|
|
bl printf
|
|
.L1135:
|
|
ldr r3, [r7]
|
|
cmp r5, r3
|
|
bcc .L1141
|
|
add sp, sp, #32
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L1141:
|
|
movs r2, #0
|
|
add r1, sp, #28
|
|
mov r0, r5
|
|
bl log2phys
|
|
ubfx r3, r5, #0, #11
|
|
cbnz r3, .L1136
|
|
ldr r2, [sp, #28]
|
|
mov r1, r5
|
|
mov r0, r8
|
|
bl printf
|
|
.L1136:
|
|
ldr r3, [sp, #28]
|
|
adds r2, r3, #1
|
|
beq .L1138
|
|
ldr r4, .L1148+8
|
|
movs r2, #0
|
|
movs r1, #1
|
|
str r3, [r4, #4]
|
|
mov r0, r4
|
|
ldr r3, .L1148+12
|
|
str r5, [r4, #16]
|
|
str r2, [r4]
|
|
ldr r3, [r3]
|
|
str r3, [r4, #8]
|
|
ldr r3, .L1148+16
|
|
ldr r6, [r3]
|
|
str r6, [r4, #12]
|
|
bl FlashReadPages
|
|
ldr r3, [r4]
|
|
cmp r3, #256
|
|
beq .L1139
|
|
adds r3, r3, #1
|
|
beq .L1139
|
|
ldr r3, [r6, #8]
|
|
cmp r5, r3
|
|
beq .L1138
|
|
.L1139:
|
|
ldr r2, [r4, #8]
|
|
ldr r3, [r4, #12]
|
|
ldr r0, .L1148+20
|
|
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, #4]
|
|
ldr r3, [r3]
|
|
bl printf
|
|
.L1138:
|
|
adds r5, r5, #1
|
|
b .L1135
|
|
.L1149:
|
|
.align 2
|
|
.L1148:
|
|
.word .LANCHOR151
|
|
.word .LC32
|
|
.word .LANCHOR137
|
|
.word .LANCHOR105
|
|
.word .LANCHOR113
|
|
.word .LC34
|
|
.word .LC33
|
|
.size ftl_scan_all_data, .-ftl_scan_all_data
|
|
.section .text.FtlGcScanTempBlk,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcScanTempBlk
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcScanTempBlk, %function
|
|
FtlGcScanTempBlk:
|
|
@ args = 0, pretend = 0, frame = 48
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L1182
|
|
movw r2, #65535
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
sub sp, sp, #48
|
|
mov r4, r0
|
|
ldrh r5, [r3]
|
|
str r3, [sp, #20]
|
|
cmp r5, r2
|
|
beq .L1172
|
|
cbnz r5, .L1151
|
|
.L1152:
|
|
bl FtlGcPageVarInit
|
|
b .L1153
|
|
.L1172:
|
|
movs r5, #0
|
|
.L1151:
|
|
ldr r3, .L1182+4
|
|
ldrh r3, [r3]
|
|
cmp r3, r1
|
|
beq .L1152
|
|
.L1153:
|
|
ldr fp, .L1182+56
|
|
.L1169:
|
|
ldrh r2, [r4]
|
|
movs r3, #0
|
|
strb r3, [r4, #8]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L1154
|
|
.L1171:
|
|
ldr r3, .L1182+8
|
|
movs r2, #0
|
|
ldr r0, [fp]
|
|
mov r10, r2
|
|
movw lr, #65535
|
|
mov r8, #20
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #8]
|
|
ldr r3, .L1182+12
|
|
ldr r3, [r3]
|
|
str r3, [sp, #12]
|
|
ldr r3, .L1182+16
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #16]
|
|
ldr r3, .L1182+20
|
|
ldr r7, [r3]
|
|
ldr r3, .L1182+24
|
|
ldrh ip, [r3]
|
|
add r3, r4, #16
|
|
str r3, [sp, #4]
|
|
.L1155:
|
|
ldr r1, [sp, #8]
|
|
uxth r3, r2
|
|
cmp r1, r3
|
|
bhi .L1157
|
|
mov r8, #0
|
|
movs r2, #0
|
|
mov r1, r10
|
|
bl FlashReadPages
|
|
.L1158:
|
|
uxth r3, r8
|
|
cmp r10, r3
|
|
bhi .L1170
|
|
ldr r3, .L1182+4
|
|
adds r5, r5, #1
|
|
uxth r5, r5
|
|
ldrh r3, [r3]
|
|
cmp r3, r5
|
|
bhi .L1171
|
|
.L1154:
|
|
ldr r2, [sp, #20]
|
|
movw r3, #65535
|
|
mov r0, r4
|
|
strh r5, [r4, #2] @ movhi
|
|
mov r1, r5
|
|
strh r3, [r2] @ movhi
|
|
movs r2, #0
|
|
strb r2, [r4, #6]
|
|
bl ftl_sb_update_avl_pages
|
|
mov r0, #-1
|
|
add sp, sp, #48
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1157:
|
|
ldr r1, [sp, #4]
|
|
ldrh r3, [r1], #2
|
|
cmp r3, lr
|
|
str r1, [sp, #4]
|
|
beq .L1156
|
|
mla r1, r8, r10, r0
|
|
orr r3, r5, r3, lsl #10
|
|
str r3, [r1, #4]
|
|
ldr r3, [sp, #16]
|
|
mul r3, r3, r10
|
|
bic r3, r3, #3
|
|
mov r6, r3
|
|
ldr r3, [sp, #12]
|
|
add r6, r6, r3
|
|
mul r3, ip, r10
|
|
str r6, [r1, #8]
|
|
bic r3, r3, #3
|
|
add r3, r3, r7
|
|
str r3, [r1, #12]
|
|
add r3, r10, #1
|
|
uxth r10, r3
|
|
.L1156:
|
|
adds r2, r2, #1
|
|
b .L1155
|
|
.L1170:
|
|
movs r3, #20
|
|
ldr r2, [fp]
|
|
mul r3, r3, r8
|
|
adds r1, r2, r3
|
|
ldr r6, [r2, r3]
|
|
ldr r0, [r1, #4]
|
|
ldr r7, [r1, #12]
|
|
str r0, [sp, #4]
|
|
cmp r6, #0
|
|
bne .L1159
|
|
ldrh r1, [r7]
|
|
movw r2, #65535
|
|
cmp r1, r2
|
|
beq .L1180
|
|
ldr r2, .L1182+28
|
|
ldr r0, [r7, #8]
|
|
ldr r2, [r2]
|
|
cmp r0, r2
|
|
bls .L1161
|
|
.L1180:
|
|
ldr r3, .L1182+32
|
|
movs r1, #0
|
|
ldrh r2, [r4]
|
|
movs r5, #0
|
|
ldr r3, [r3]
|
|
strh r1, [r3, r2, lsl #1] @ movhi
|
|
ldrh r0, [r4]
|
|
bl INSERT_FREE_LIST
|
|
ldr r2, .L1182+36
|
|
movw r3, #65535
|
|
strh r3, [r4] @ movhi
|
|
strh r3, [r2] @ movhi
|
|
bl FtlGcPageVarInit
|
|
b .L1169
|
|
.L1161:
|
|
mov r2, r6
|
|
add r1, sp, #24
|
|
str r3, [sp, #8]
|
|
bl log2phys
|
|
ldr r2, [r7, #12]
|
|
ldr r1, [sp, #24]
|
|
ldr r3, [sp, #8]
|
|
cmp r2, r1
|
|
beq .L1163
|
|
.L1165:
|
|
ldr r2, [r7, #8]
|
|
.L1181:
|
|
ldr r1, [sp, #4]
|
|
add r8, r8, #1
|
|
ldr r0, [r7, #12]
|
|
bl FtlGcUpdatePage
|
|
b .L1158
|
|
.L1163:
|
|
str r3, [sp, #8]
|
|
adds r3, r2, #1
|
|
beq .L1165
|
|
str r2, [sp, #32]
|
|
movs r1, #1
|
|
ldr r2, .L1182+40
|
|
add r0, sp, #28
|
|
ldr r2, [r2]
|
|
str r2, [sp, #36]
|
|
ldr r2, .L1182+44
|
|
ldr r2, [r2]
|
|
str r2, [sp, #40]
|
|
mov r2, r6
|
|
bl FlashReadPages
|
|
ldr r2, .L1182+48
|
|
ldr r1, [fp]
|
|
ldr r3, [sp, #8]
|
|
ldrh r2, [r2]
|
|
ldr r0, [sp, #36]
|
|
add ip, r3, r1
|
|
lsls r2, r2, #7
|
|
.L1166:
|
|
cmp r6, r2
|
|
beq .L1165
|
|
ldr r1, [ip, #8]
|
|
ldr r3, [r0, r6, lsl #2]
|
|
ldr r1, [r1, r6, lsl #2]
|
|
cmp r1, r3
|
|
beq .L1167
|
|
ldr r2, [sp, #32]
|
|
ldrh r1, [r4]
|
|
ldr r0, .L1182+52
|
|
bl printf
|
|
b .L1180
|
|
.L1167:
|
|
adds r6, r6, #1
|
|
b .L1166
|
|
.L1159:
|
|
mov r2, #-1
|
|
b .L1181
|
|
.L1183:
|
|
.align 2
|
|
.L1182:
|
|
.word .LANCHOR159
|
|
.word .LANCHOR18
|
|
.word .LANCHOR2
|
|
.word .LANCHOR63
|
|
.word .LANCHOR22
|
|
.word .LANCHOR64
|
|
.word .LANCHOR23
|
|
.word .LANCHOR151
|
|
.word .LANCHOR41
|
|
.word .LANCHOR144
|
|
.word .LANCHOR109
|
|
.word .LANCHOR114
|
|
.word .LANCHOR11
|
|
.word .LC35
|
|
.word .LANCHOR102
|
|
.size FtlGcScanTempBlk, .-FtlGcScanTempBlk
|
|
.section .text.FtlVendorPartWrite,"ax",%progbits
|
|
.align 1
|
|
.global FtlVendorPartWrite
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlVendorPartWrite, %function
|
|
FtlVendorPartWrite:
|
|
@ args = 0, pretend = 0, frame = 104
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L1196
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
sub sp, sp, #104
|
|
str r2, [sp]
|
|
adds r2, r0, r1
|
|
mov r7, r0
|
|
mov r5, r1
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bhi .L1192
|
|
ldr r3, .L1196+4
|
|
mov r8, #0
|
|
ldrh r6, [r3]
|
|
lsr r6, r0, r6
|
|
lsl fp, r6, #2
|
|
.L1186:
|
|
cbnz r5, .L1191
|
|
.L1184:
|
|
mov r0, r8
|
|
add sp, sp, #104
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1191:
|
|
ldr r3, .L1196+8
|
|
mov r0, r7
|
|
ldr r10, .L1196+24
|
|
ldr r3, [r3]
|
|
ldr r2, [r3, fp]
|
|
ldr r3, .L1196+12
|
|
str r2, [sp, #12]
|
|
ldrh r3, [r3]
|
|
mov r1, r3
|
|
str r3, [sp, #8]
|
|
bl __aeabi_uidivmod
|
|
ldr r3, [sp, #8]
|
|
ldr r2, [sp, #12]
|
|
str r1, [sp, #4]
|
|
subs r4, r3, r1
|
|
uxth r4, r4
|
|
cmp r5, r4
|
|
it cc
|
|
uxthcc r4, r5
|
|
cbz r2, .L1188
|
|
cmp r4, r3
|
|
beq .L1188
|
|
ldr r3, [r10]
|
|
add r0, sp, #20
|
|
str r2, [sp, #24]
|
|
movs r2, #1
|
|
mov r1, r2
|
|
str r3, [sp, #28]
|
|
add r3, sp, #40
|
|
str r3, [sp, #32]
|
|
bl FlashReadPages
|
|
.L1189:
|
|
lsls r3, r4, #9
|
|
ldr r0, [r10]
|
|
subs r5, r5, r4
|
|
mov r2, r3
|
|
str r3, [sp, #8]
|
|
ldm sp, {r1, r3}
|
|
add r7, r7, r4
|
|
add fp, fp, #4
|
|
add r0, r0, r3, lsl #9
|
|
bl ftl_memcpy
|
|
ldr r2, [r10]
|
|
mov r1, r6
|
|
ldr r0, .L1196+16
|
|
adds r6, r6, #1
|
|
bl FtlMapWritePage
|
|
ldr r3, [sp]
|
|
adds r0, r0, #1
|
|
it eq
|
|
moveq r8, #-1
|
|
mov r2, r3
|
|
ldr r3, [sp, #8]
|
|
add r2, r2, r3
|
|
str r2, [sp]
|
|
b .L1186
|
|
.L1188:
|
|
ldr r3, .L1196+20
|
|
movs r1, #0
|
|
ldr r0, [r10]
|
|
ldrh r2, [r3]
|
|
bl ftl_memset
|
|
b .L1189
|
|
.L1192:
|
|
mov r8, #-1
|
|
b .L1184
|
|
.L1197:
|
|
.align 2
|
|
.L1196:
|
|
.word .LANCHOR15
|
|
.word .LANCHOR21
|
|
.word .LANCHOR122
|
|
.word .LANCHOR11
|
|
.word .LANCHOR160
|
|
.word .LANCHOR22
|
|
.word .LANCHOR107
|
|
.size FtlVendorPartWrite, .-FtlVendorPartWrite
|
|
.section .text.Ftl_save_ext_data,"ax",%progbits
|
|
.align 1
|
|
.global Ftl_save_ext_data
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type Ftl_save_ext_data, %function
|
|
Ftl_save_ext_data:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, .L1200
|
|
ldr r3, .L1200+4
|
|
ldr r1, [r2]
|
|
cmp r1, r3
|
|
bne .L1198
|
|
ldr r3, .L1200+8
|
|
movs r1, #1
|
|
movs r0, #0
|
|
str r3, [r2, #4]
|
|
ldr r3, .L1200+12
|
|
ldr r3, [r3]
|
|
str r3, [r2, #88]
|
|
ldr r3, .L1200+16
|
|
ldr r3, [r3]
|
|
str r3, [r2, #92]
|
|
ldr r3, .L1200+20
|
|
ldr r3, [r3]
|
|
str r3, [r2, #8]
|
|
ldr r3, .L1200+24
|
|
ldr r3, [r3]
|
|
str r3, [r2, #12]
|
|
ldr r3, .L1200+28
|
|
ldr r3, [r3]
|
|
str r3, [r2, #16]
|
|
ldr r3, .L1200+32
|
|
ldr r3, [r3]
|
|
str r3, [r2, #20]
|
|
ldr r3, .L1200+36
|
|
ldr r3, [r3]
|
|
str r3, [r2, #28]
|
|
ldr r3, .L1200+40
|
|
ldr r3, [r3]
|
|
str r3, [r2, #32]
|
|
ldr r3, .L1200+44
|
|
ldr r3, [r3]
|
|
str r3, [r2, #36]
|
|
ldr r3, .L1200+48
|
|
ldr r3, [r3]
|
|
str r3, [r2, #40]
|
|
ldr r3, .L1200+52
|
|
ldr r3, [r3]
|
|
str r3, [r2, #44]
|
|
ldr r3, .L1200+56
|
|
ldr r3, [r3]
|
|
str r3, [r2, #48]
|
|
b FtlVendorPartWrite
|
|
.L1198:
|
|
bx lr
|
|
.L1201:
|
|
.align 2
|
|
.L1200:
|
|
.word .LANCHOR134
|
|
.word 1179929683
|
|
.word 1342177367
|
|
.word .LANCHOR161
|
|
.word .LANCHOR162
|
|
.word .LANCHOR83
|
|
.word .LANCHOR84
|
|
.word .LANCHOR88
|
|
.word .LANCHOR87
|
|
.word .LANCHOR90
|
|
.word .LANCHOR79
|
|
.word .LANCHOR85
|
|
.word .LANCHOR86
|
|
.word .LANCHOR91
|
|
.word .LANCHOR92
|
|
.size Ftl_save_ext_data, .-Ftl_save_ext_data
|
|
.section .text.FtlEctTblFlush,"ax",%progbits
|
|
.align 1
|
|
.global FtlEctTblFlush
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlEctTblFlush, %function
|
|
FtlEctTblFlush:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L1207
|
|
push {r3, lr}
|
|
ldrh r3, [r2]
|
|
cmp r3, #31
|
|
itett ls
|
|
addls r3, r3, #1
|
|
movhi r3, #32
|
|
strhls r3, [r2] @ movhi
|
|
movls r3, #1
|
|
ldr r2, .L1207+4
|
|
cbnz r0, .L1204
|
|
ldr r1, [r2]
|
|
ldr r0, [r1, #20]
|
|
ldr r1, [r1, #16]
|
|
add r3, r3, r0
|
|
cmp r1, r3
|
|
bcc .L1205
|
|
.L1204:
|
|
ldr r2, [r2]
|
|
movs r0, #64
|
|
ldr r3, [r2, #16]
|
|
str r3, [r2, #20]
|
|
ldr r3, .L1207+8
|
|
str r3, [r2]
|
|
ldr r3, .L1207+12
|
|
ldrh r1, [r3]
|
|
lsls r3, r1, #9
|
|
str r3, [r2, #12]
|
|
ldr r3, [r2, #8]
|
|
adds r3, r3, #1
|
|
str r3, [r2, #8]
|
|
movs r3, #0
|
|
str r3, [r2, #4]
|
|
bl FtlVendorPartWrite
|
|
bl Ftl_save_ext_data
|
|
.L1205:
|
|
movs r0, #0
|
|
pop {r3, pc}
|
|
.L1208:
|
|
.align 2
|
|
.L1207:
|
|
.word .LANCHOR163
|
|
.word .LANCHOR117
|
|
.word 1112818501
|
|
.word .LANCHOR115
|
|
.size FtlEctTblFlush, .-FtlEctTblFlush
|
|
.section .text.sftl_vendor_write,"ax",%progbits
|
|
.align 1
|
|
.global sftl_vendor_write
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type sftl_vendor_write, %function
|
|
sftl_vendor_write:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
add r0, r0, #256
|
|
b FtlVendorPartWrite
|
|
.size sftl_vendor_write, .-sftl_vendor_write
|
|
.section .text.FtlVendorPartRead,"ax",%progbits
|
|
.align 1
|
|
.global FtlVendorPartRead
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlVendorPartRead, %function
|
|
FtlVendorPartRead:
|
|
@ args = 0, pretend = 0, frame = 104
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L1220
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r10, r2
|
|
adds r2, r0, r1
|
|
sub sp, sp, #104
|
|
mov r7, r0
|
|
mov r6, r1
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bhi .L1219
|
|
ldr r3, .L1220+4
|
|
mov r8, #0
|
|
ldr fp, .L1220+28
|
|
ldrh r5, [r3]
|
|
lsr r5, r0, r5
|
|
lsls r3, r5, #2
|
|
str r3, [sp]
|
|
.L1212:
|
|
cbnz r6, .L1218
|
|
.L1210:
|
|
mov r0, r8
|
|
add sp, sp, #104
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1218:
|
|
ldr r3, .L1220+8
|
|
mov r0, r7
|
|
ldr r2, [sp]
|
|
ldr r3, [r3]
|
|
ldr r3, [r3, r2]
|
|
ldr r2, .L1220+12
|
|
str r3, [sp, #8]
|
|
ldrh r4, [r2]
|
|
mov r1, r4
|
|
bl __aeabi_uidivmod
|
|
subs r4, r4, r1
|
|
ldr r3, [sp, #8]
|
|
uxth r4, r4
|
|
str r1, [sp, #4]
|
|
cmp r6, r4
|
|
it cc
|
|
uxthcc r4, r6
|
|
lsls r2, r4, #9
|
|
str r2, [sp, #8]
|
|
cmp r3, #0
|
|
beq .L1214
|
|
ldr r2, [fp]
|
|
add r0, sp, #20
|
|
str r3, [sp, #24]
|
|
str r3, [sp, #12]
|
|
str r2, [sp, #28]
|
|
add r2, sp, #40
|
|
str r2, [sp, #32]
|
|
movs r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [sp, #20]
|
|
ldr r3, [sp, #12]
|
|
adds r2, r2, #1
|
|
ldr r2, .L1220+16
|
|
it eq
|
|
moveq r8, #-1
|
|
ldr r2, [r2]
|
|
cmp r2, #256
|
|
bne .L1216
|
|
mov r2, r3
|
|
mov r1, r5
|
|
ldr r0, .L1220+20
|
|
bl printf
|
|
ldr r2, [fp]
|
|
mov r1, r5
|
|
ldr r0, .L1220+24
|
|
bl FtlMapWritePage
|
|
.L1216:
|
|
ldr r1, [fp]
|
|
lsls r2, r4, #9
|
|
ldr r3, [sp, #4]
|
|
mov r0, r10
|
|
add r1, r1, r3, lsl #9
|
|
bl ftl_memcpy
|
|
.L1217:
|
|
ldr r3, [sp, #8]
|
|
adds r5, r5, #1
|
|
subs r6, r6, r4
|
|
add r7, r7, r4
|
|
add r10, r10, r3
|
|
ldr r3, [sp]
|
|
adds r3, r3, #4
|
|
str r3, [sp]
|
|
b .L1212
|
|
.L1214:
|
|
lsls r2, r4, #9
|
|
mov r1, r3
|
|
mov r0, r10
|
|
bl ftl_memset
|
|
b .L1217
|
|
.L1219:
|
|
mov r8, #-1
|
|
b .L1210
|
|
.L1221:
|
|
.align 2
|
|
.L1220:
|
|
.word .LANCHOR15
|
|
.word .LANCHOR21
|
|
.word .LANCHOR122
|
|
.word .LANCHOR11
|
|
.word .LANCHOR137
|
|
.word .LC36
|
|
.word .LANCHOR160
|
|
.word .LANCHOR107
|
|
.size FtlVendorPartRead, .-FtlVendorPartRead
|
|
.section .text.FtlLoadEctTbl,"ax",%progbits
|
|
.align 1
|
|
.global FtlLoadEctTbl
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlLoadEctTbl, %function
|
|
FtlLoadEctTbl:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
movs r0, #64
|
|
ldr r4, .L1224
|
|
ldr r5, .L1224+4
|
|
ldr r2, [r4]
|
|
ldrh r1, [r5]
|
|
bl FtlVendorPartRead
|
|
ldr r3, [r4]
|
|
ldr r2, [r3]
|
|
ldr r3, .L1224+8
|
|
cmp r2, r3
|
|
beq .L1223
|
|
ldr r1, .L1224+12
|
|
ldr r0, .L1224+16
|
|
bl printf
|
|
ldrh r2, [r5]
|
|
movs r1, #0
|
|
ldr r0, [r4]
|
|
lsls r2, r2, #9
|
|
bl ftl_memset
|
|
.L1223:
|
|
movs r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
.L1225:
|
|
.align 2
|
|
.L1224:
|
|
.word .LANCHOR117
|
|
.word .LANCHOR115
|
|
.word 1112818501
|
|
.word .LC37
|
|
.word .LC38
|
|
.size FtlLoadEctTbl, .-FtlLoadEctTbl
|
|
.section .text.Ftl_load_ext_data,"ax",%progbits
|
|
.align 1
|
|
.global Ftl_load_ext_data
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type Ftl_load_ext_data, %function
|
|
Ftl_load_ext_data:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
movs r1, #1
|
|
ldr r4, .L1229
|
|
movs r0, #0
|
|
ldr r5, .L1229+4
|
|
mov r2, r4
|
|
bl FtlVendorPartRead
|
|
ldr r3, [r4]
|
|
cmp r3, r5
|
|
beq .L1227
|
|
mov r2, #512
|
|
movs r1, #0
|
|
mov r0, r4
|
|
bl ftl_memset
|
|
str r5, [r4]
|
|
.L1227:
|
|
ldr r3, [r4]
|
|
cmp r3, r5
|
|
ldr r3, .L1229+8
|
|
bne .L1228
|
|
ldr r1, [r4, #88]
|
|
ldr r2, .L1229+12
|
|
str r1, [r2]
|
|
ldr r1, [r4, #92]
|
|
ldr r2, .L1229+16
|
|
str r1, [r2]
|
|
ldr r1, [r4, #8]
|
|
ldr r2, .L1229+20
|
|
str r1, [r2]
|
|
ldr r1, [r4, #12]
|
|
ldr r2, .L1229+24
|
|
str r1, [r2]
|
|
ldr r1, [r4, #16]
|
|
ldr r2, .L1229+28
|
|
str r1, [r2]
|
|
ldr r1, [r4, #20]
|
|
ldr r2, .L1229+32
|
|
str r1, [r2]
|
|
ldr r2, [r4, #28]
|
|
ldr r1, [r4, #32]
|
|
str r2, [r3]
|
|
ldr r2, .L1229+36
|
|
str r1, [r2]
|
|
ldr r1, [r4, #36]
|
|
ldr r2, .L1229+40
|
|
str r1, [r2]
|
|
ldr r1, [r4, #40]
|
|
ldr r2, .L1229+44
|
|
str r1, [r2]
|
|
ldr r1, [r4, #44]
|
|
ldr r2, .L1229+48
|
|
str r1, [r2]
|
|
ldr r1, [r4, #48]
|
|
ldr r2, .L1229+52
|
|
str r1, [r2]
|
|
.L1228:
|
|
ldr r1, .L1229+56
|
|
ldr r2, .L1229+60
|
|
ldr r3, [r3]
|
|
ldr r0, [r1]
|
|
ldrh r2, [r2]
|
|
ldr r1, .L1229+64
|
|
mla r0, r0, r2, r3
|
|
ldrh r1, [r1]
|
|
bl __aeabi_uidiv
|
|
ldr r3, .L1229+68
|
|
str r0, [r3]
|
|
pop {r3, r4, r5, pc}
|
|
.L1230:
|
|
.align 2
|
|
.L1229:
|
|
.word .LANCHOR134
|
|
.word 1179929683
|
|
.word .LANCHOR90
|
|
.word .LANCHOR161
|
|
.word .LANCHOR162
|
|
.word .LANCHOR83
|
|
.word .LANCHOR84
|
|
.word .LANCHOR88
|
|
.word .LANCHOR87
|
|
.word .LANCHOR79
|
|
.word .LANCHOR85
|
|
.word .LANCHOR86
|
|
.word .LANCHOR91
|
|
.word .LANCHOR92
|
|
.word .LANCHOR89
|
|
.word .LANCHOR13
|
|
.word .LANCHOR4
|
|
.word .LANCHOR142
|
|
.size Ftl_load_ext_data, .-Ftl_load_ext_data
|
|
.section .text.sftl_vendor_read,"ax",%progbits
|
|
.align 1
|
|
.global sftl_vendor_read
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type sftl_vendor_read, %function
|
|
sftl_vendor_read:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
add r0, r0, #256
|
|
b FtlVendorPartRead
|
|
.size sftl_vendor_read, .-sftl_vendor_read
|
|
.section .text.FtlMapBlkWriteDump_data,"ax",%progbits
|
|
.align 1
|
|
.global FtlMapBlkWriteDump_data
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlMapBlkWriteDump_data, %function
|
|
FtlMapBlkWriteDump_data:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, r8, r10, lr}
|
|
mov r4, r0
|
|
ldr r3, [r0, #36]
|
|
cmp r3, #0
|
|
beq .L1232
|
|
movs r3, #0
|
|
ldr r5, .L1244
|
|
str r3, [r0, #36]
|
|
ldr r3, .L1244+4
|
|
ldrh r6, [r0, #6]
|
|
mov r7, r5
|
|
ldr r10, [r0, #24]
|
|
ldr r3, [r3]
|
|
str r3, [r5, #8]
|
|
ldr r3, .L1244+8
|
|
ldr r8, [r3]
|
|
ldrh r3, [r0, #2]
|
|
str r8, [r5, #12]
|
|
cbz r3, .L1234
|
|
ldr r2, .L1244+12
|
|
ldrh r2, [r2]
|
|
subs r2, r2, #1
|
|
cmp r3, r2
|
|
bge .L1234
|
|
ldrh r2, [r0]
|
|
movw r1, #65535
|
|
cmp r2, r1
|
|
beq .L1234
|
|
ldr r1, [r0, #12]
|
|
subs r3, r3, #1
|
|
mov r0, r5
|
|
ldrh r2, [r1, r2, lsl #1]
|
|
orr r3, r3, r2, lsl #10
|
|
movs r2, #1
|
|
mov r1, r2
|
|
str r3, [r5, #4]
|
|
bl FlashReadPages
|
|
ldr r3, [r5]
|
|
adds r3, r3, #1
|
|
beq .L1234
|
|
ldr r3, [r4, #24]
|
|
ldrh r1, [r8, #8]
|
|
ldr r2, [r3, r1, lsl #2]
|
|
ldr r3, [r5, #4]
|
|
cmp r2, r3
|
|
bne .L1234
|
|
ldr r2, [r5, #8]
|
|
.L1243:
|
|
mov r0, r4
|
|
pop {r3, r4, r5, r6, r7, r8, r10, lr}
|
|
b FtlMapWritePage
|
|
.L1234:
|
|
subs r6, r6, #1
|
|
uxth r6, r6
|
|
ldr r3, [r10, r6, lsl #2]
|
|
str r3, [r7, #4]
|
|
cbz r3, .L1235
|
|
movs r2, #1
|
|
ldr r0, .L1244
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
.L1236:
|
|
ldr r2, [r7, #8]
|
|
mov r1, r6
|
|
b .L1243
|
|
.L1235:
|
|
ldr r3, .L1244+16
|
|
movs r1, #255
|
|
ldr r0, [r7, #8]
|
|
ldrh r2, [r3]
|
|
bl ftl_memset
|
|
b .L1236
|
|
.L1232:
|
|
pop {r3, r4, r5, r6, r7, r8, r10, pc}
|
|
.L1245:
|
|
.align 2
|
|
.L1244:
|
|
.word .LANCHOR137
|
|
.word .LANCHOR106
|
|
.word .LANCHOR113
|
|
.word .LANCHOR19
|
|
.word .LANCHOR22
|
|
.size FtlMapBlkWriteDump_data, .-FtlMapBlkWriteDump_data
|
|
.section .text.FtlVpcTblFlush,"ax",%progbits
|
|
.align 1
|
|
.global FtlVpcTblFlush
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlVpcTblFlush, %function
|
|
FtlVpcTblFlush:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
mov r8, #0
|
|
ldr r3, .L1261
|
|
ldr r5, .L1261+4
|
|
ldr fp, .L1261+72
|
|
ldr r0, [r3]
|
|
ldr r6, .L1261+8
|
|
ldr r7, [fp]
|
|
ldrh r2, [r5]
|
|
str r0, [r6, #8]
|
|
str r7, [r6, #12]
|
|
strh r2, [r7, #2] @ movhi
|
|
movw r2, #61604
|
|
strh r2, [r7] @ movhi
|
|
ldr r2, [r5, #8]
|
|
ldr r4, .L1261+12
|
|
ldr ip, .L1261+76
|
|
str r2, [r7, #4]
|
|
ldr r2, .L1261+16
|
|
str r8, [r7, #8]
|
|
str r8, [r7, #12]
|
|
stm r4, {r2, ip}
|
|
ldrh r2, [r5, #6]
|
|
str r3, [sp]
|
|
ldr r10, .L1261+80
|
|
strh r2, [r4, #8] @ movhi
|
|
ldr r2, .L1261+20
|
|
ldr r3, .L1261+24
|
|
ldrh r2, [r2]
|
|
strb r2, [r4, #10]
|
|
ldr r2, .L1261+28
|
|
ldrh r1, [r2]
|
|
ldrh ip, [r2, #2]
|
|
strh r1, [r4, #14] @ movhi
|
|
ldrb r1, [r2, #6] @ zero_extendqisi2
|
|
ldrb r2, [r2, #8] @ zero_extendqisi2
|
|
strb r2, [r4, #11]
|
|
orr r1, r1, ip, lsl #6
|
|
ldr r2, .L1261+32
|
|
strh r1, [r4, #16] @ movhi
|
|
ldrh r1, [r2]
|
|
ldrh ip, [r2, #2]
|
|
strh r1, [r4, #18] @ movhi
|
|
ldrb r1, [r2, #6] @ zero_extendqisi2
|
|
ldrb r2, [r2, #8] @ zero_extendqisi2
|
|
orr r1, r1, ip, lsl #6
|
|
strh r1, [r4, #20] @ movhi
|
|
strb r2, [r4, #12]
|
|
ldr r2, .L1261+36
|
|
ldrh r1, [r2]
|
|
ldrh ip, [r2, #2]
|
|
strh r1, [r4, #22] @ movhi
|
|
ldrb r1, [r2, #6] @ zero_extendqisi2
|
|
ldrb r2, [r2, #8] @ zero_extendqisi2
|
|
strb r2, [r4, #13]
|
|
orr r1, r1, ip, lsl #6
|
|
ldr r2, .L1261+40
|
|
strh r1, [r4, #24] @ movhi
|
|
movs r1, #255
|
|
ldr r2, [r2]
|
|
str r2, [r4, #32]
|
|
ldr r2, [r10]
|
|
str r2, [r4, #40]
|
|
ldr r2, .L1261+44
|
|
ldr r2, [r2]
|
|
str r2, [r4, #36]
|
|
ldrh r2, [r3]
|
|
bl ftl_memset
|
|
mov r1, r4
|
|
movs r2, #48
|
|
ldr r0, [r6, #8]
|
|
movw r4, #65535
|
|
bl ftl_memcpy
|
|
ldr r2, .L1261+48
|
|
ldr r0, [r6, #8]
|
|
ldr r1, .L1261+52
|
|
ldrh r2, [r2]
|
|
adds r0, r0, #48
|
|
ldr r1, [r1]
|
|
lsls r2, r2, #1
|
|
bl ftl_memcpy
|
|
mov r0, r8
|
|
bl FtlUpdateVaildLpn
|
|
ldr r3, .L1261+24
|
|
str r3, [sp, #4]
|
|
.L1247:
|
|
ldr r3, [sp]
|
|
ldrh r1, [r5, #2]
|
|
ldrh r2, [r5]
|
|
ldr r3, [r3]
|
|
str r3, [r6, #8]
|
|
ldr r3, [fp]
|
|
str r3, [r6, #12]
|
|
orr r3, r1, r2, lsl #10
|
|
str r3, [r6, #4]
|
|
ldr r3, .L1261+56
|
|
ldrh r3, [r3]
|
|
subs r3, r3, #1
|
|
cmp r1, r3
|
|
blt .L1248
|
|
movs r3, #0
|
|
ldrh r4, [r5, #4]
|
|
strh r3, [r5, #2] @ movhi
|
|
strh r2, [r5, #4] @ movhi
|
|
bl FtlFreeSysBlkQueueOut
|
|
ldr r3, [r10]
|
|
strh r0, [r5] @ movhi
|
|
adds r2, r3, #1
|
|
str r3, [r5, #8]
|
|
str r2, [r10]
|
|
lsls r2, r0, #10
|
|
str r2, [r6, #4]
|
|
str r3, [r7, #4]
|
|
strh r0, [r7, #2] @ movhi
|
|
.L1248:
|
|
ldr r3, [sp, #4]
|
|
ldrh r1, [r3]
|
|
ldr r3, [sp]
|
|
ldr r0, [r3]
|
|
bl js_hash
|
|
movs r3, #1
|
|
str r0, [r7, #12]
|
|
mov r2, r3
|
|
mov r1, r3
|
|
ldr r0, .L1261+8
|
|
bl FlashProgPages
|
|
ldrh r3, [r5, #2]
|
|
ldr r2, [r6]
|
|
adds r3, r3, #1
|
|
uxth r3, r3
|
|
adds r1, r2, #1
|
|
strh r3, [r5, #2] @ movhi
|
|
bne .L1249
|
|
cmp r3, #1
|
|
bne .L1250
|
|
movw r2, #1145
|
|
ldr r1, .L1261+60
|
|
ldr r0, .L1261+64
|
|
bl printf
|
|
.L1250:
|
|
ldrh r3, [r5, #2]
|
|
add r8, r8, #1
|
|
uxth r8, r8
|
|
cmp r3, #1
|
|
itttt eq
|
|
ldreq r3, .L1261+56
|
|
ldrheq r3, [r3]
|
|
addeq r3, r3, #-1
|
|
strheq r3, [r5, #2] @ movhi
|
|
cmp r8, #3
|
|
bls .L1247
|
|
mov r2, r8
|
|
ldr r1, [r6, #4]
|
|
ldr r0, .L1261+68
|
|
bl printf
|
|
.L1253:
|
|
b .L1253
|
|
.L1249:
|
|
cmp r3, #1
|
|
beq .L1247
|
|
cmp r2, #256
|
|
beq .L1247
|
|
movw r3, #65535
|
|
cmp r4, r3
|
|
beq .L1254
|
|
movs r1, #1
|
|
mov r0, r4
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L1254:
|
|
movs r0, #0
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1262:
|
|
.align 2
|
|
.L1261:
|
|
.word .LANCHOR105
|
|
.word .LANCHOR138
|
|
.word .LANCHOR137
|
|
.word .LANCHOR38
|
|
.word 1179929683
|
|
.word .LANCHOR9
|
|
.word .LANCHOR22
|
|
.word .LANCHOR50
|
|
.word .LANCHOR51
|
|
.word .LANCHOR52
|
|
.word .LANCHOR89
|
|
.word .LANCHOR82
|
|
.word .LANCHOR4
|
|
.word .LANCHOR41
|
|
.word .LANCHOR19
|
|
.word .LANCHOR164
|
|
.word .LC1
|
|
.word .LC39
|
|
.word .LANCHOR113
|
|
.word 1342177367
|
|
.word .LANCHOR81
|
|
.size FtlVpcTblFlush, .-FtlVpcTblFlush
|
|
.section .text.FtlSysFlush,"ax",%progbits
|
|
.align 1
|
|
.global FtlSysFlush
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlSysFlush, %function
|
|
FtlSysFlush:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, lr}
|
|
bl l2p_flush
|
|
movs r0, #1
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
movs r0, #0
|
|
pop {r3, pc}
|
|
.size FtlSysFlush, .-FtlSysFlush
|
|
.section .text.sftl_deinit,"ax",%progbits
|
|
.align 1
|
|
.global sftl_deinit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type sftl_deinit, %function
|
|
sftl_deinit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, lr}
|
|
ldr r3, .L1266
|
|
ldr r3, [r3]
|
|
cmp r3, #1
|
|
bne .L1265
|
|
bl FtlSysFlush
|
|
.L1265:
|
|
movs r0, #0
|
|
pop {r3, pc}
|
|
.L1267:
|
|
.align 2
|
|
.L1266:
|
|
.word .LANCHOR165
|
|
.size sftl_deinit, .-sftl_deinit
|
|
.section .text.FtlDiscard,"ax",%progbits
|
|
.align 1
|
|
.global FtlDiscard
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlDiscard, %function
|
|
FtlDiscard:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L1285
|
|
push {r0, r1, r4, r5, r6, r7, r8, lr}
|
|
mov r6, r0
|
|
mov r4, r1
|
|
ldr r3, [r3]
|
|
cmp r3, r0
|
|
bls .L1278
|
|
cmp r3, r1
|
|
bcc .L1278
|
|
adds r2, r0, r1
|
|
cmp r3, r2
|
|
bcc .L1278
|
|
cmp r1, #31
|
|
bhi .L1270
|
|
.L1275:
|
|
movs r0, #0
|
|
.L1268:
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L1270:
|
|
ldr r8, .L1285+12
|
|
ldrh r5, [r8]
|
|
mov r1, r5
|
|
bl __aeabi_uidiv
|
|
smulbb r3, r0, r5
|
|
mov r7, r0
|
|
subs r6, r6, r3
|
|
uxth r6, r6
|
|
cbz r6, .L1271
|
|
subs r5, r5, r6
|
|
adds r7, r7, #1
|
|
cmp r5, r4
|
|
it cs
|
|
movcs r5, r4
|
|
uxth r5, r5
|
|
subs r4, r4, r5
|
|
.L1271:
|
|
ldr r5, .L1285+4
|
|
mov r3, #-1
|
|
ldr r6, .L1285+8
|
|
str r3, [sp, #4]
|
|
.L1272:
|
|
ldrh r3, [r8]
|
|
cmp r4, r3
|
|
bcs .L1274
|
|
ldr r3, .L1285+4
|
|
ldr r2, [r3]
|
|
cmp r2, #32
|
|
bls .L1275
|
|
movs r4, #0
|
|
str r4, [r3]
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
b .L1275
|
|
.L1274:
|
|
movs r2, #0
|
|
mov r1, sp
|
|
mov r0, r7
|
|
bl log2phys
|
|
ldr r3, [sp]
|
|
adds r3, r3, #1
|
|
beq .L1273
|
|
ldr r3, [r5]
|
|
movs r2, #1
|
|
add r1, sp, #4
|
|
mov r0, r7
|
|
adds r3, r3, #1
|
|
str r3, [r5]
|
|
ldr r3, [r6]
|
|
adds r3, r3, #1
|
|
str r3, [r6]
|
|
bl log2phys
|
|
ldr r0, [sp]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl decrement_vpc_count
|
|
.L1273:
|
|
ldrh r3, [r8]
|
|
adds r7, r7, #1
|
|
subs r4, r4, r3
|
|
b .L1272
|
|
.L1278:
|
|
mov r0, #-1
|
|
b .L1268
|
|
.L1286:
|
|
.align 2
|
|
.L1285:
|
|
.word .LANCHOR33
|
|
.word .LANCHOR166
|
|
.word .LANCHOR85
|
|
.word .LANCHOR11
|
|
.size FtlDiscard, .-FtlDiscard
|
|
.section .text.allocate_new_data_superblock,"ax",%progbits
|
|
.align 1
|
|
.global allocate_new_data_superblock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type allocate_new_data_superblock, %function
|
|
allocate_new_data_superblock:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L1297
|
|
push {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldrh r4, [r0]
|
|
ldrh r3, [r3]
|
|
cmp r3, r4
|
|
bcs .L1288
|
|
movw r2, #2766
|
|
ldr r1, .L1297+4
|
|
ldr r0, .L1297+8
|
|
bl printf
|
|
.L1288:
|
|
movw r3, #65535
|
|
cmp r4, r3
|
|
beq .L1289
|
|
ldr r3, .L1297+12
|
|
mov r0, r4
|
|
ldr r3, [r3]
|
|
ldrh r3, [r3, r4, lsl #1]
|
|
cbz r3, .L1290
|
|
bl INSERT_DATA_LIST
|
|
.L1289:
|
|
ldr r5, .L1297+16
|
|
movw r2, #65535
|
|
movs r3, #1
|
|
strb r3, [r6, #8]
|
|
ldrh r0, [r5]
|
|
cmp r0, r2
|
|
beq .L1291
|
|
cmp r4, r0
|
|
bne .L1292
|
|
ldr r3, .L1297+12
|
|
ldr r3, [r3]
|
|
ldrh r3, [r3, r0, lsl #1]
|
|
cbz r3, .L1293
|
|
.L1292:
|
|
bl update_vpc_list
|
|
.L1293:
|
|
movw r3, #65535
|
|
strh r3, [r5] @ movhi
|
|
.L1291:
|
|
mov r0, r6
|
|
bl allocate_data_superblock
|
|
bl l2p_flush
|
|
movs r0, #0
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
movs r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
.L1290:
|
|
bl INSERT_FREE_LIST
|
|
b .L1289
|
|
.L1298:
|
|
.align 2
|
|
.L1297:
|
|
.word .LANCHOR4
|
|
.word .LANCHOR167
|
|
.word .LC1
|
|
.word .LANCHOR41
|
|
.word .LANCHOR130
|
|
.size allocate_new_data_superblock, .-allocate_new_data_superblock
|
|
.section .text.FtlProgPages,"ax",%progbits
|
|
.align 1
|
|
.global FtlProgPages
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlProgPages, %function
|
|
FtlProgPages:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r6, #0
|
|
ldr r10, .L1318+20
|
|
mov r5, r3
|
|
movs r2, #0
|
|
mov r4, r0
|
|
ldr fp, .L1318
|
|
mov r8, r1
|
|
ldrb r3, [r3, #9] @ zero_extendqisi2
|
|
bl FlashProgPages
|
|
.L1300:
|
|
cmp r6, r8
|
|
bne .L1307
|
|
ldr r3, .L1318
|
|
ldrb r2, [r5, #6] @ zero_extendqisi2
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bcc .L1299
|
|
mov r2, #1000
|
|
ldr r1, .L1318+4
|
|
ldr r0, .L1318+8
|
|
bl printf
|
|
.L1299:
|
|
add sp, sp, #16
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1302:
|
|
ldr r1, [r4, #4]
|
|
mov r0, r10
|
|
bl printf
|
|
ldr r0, [r4, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl decrement_vpc_count
|
|
ldrh r3, [r5, #4]
|
|
cbnz r3, .L1301
|
|
mov r0, r5
|
|
bl allocate_new_data_superblock
|
|
.L1301:
|
|
mov r0, r5
|
|
bl get_new_active_ppa
|
|
movs r2, #0
|
|
str r0, [r4, #4]
|
|
str r0, [sp, #12]
|
|
movs r1, #1
|
|
ldrb r3, [r5, #9] @ zero_extendqisi2
|
|
mov r0, r4
|
|
bl FlashProgPages
|
|
.L1307:
|
|
ldr r2, [r4]
|
|
adds r3, r2, #1
|
|
beq .L1302
|
|
cmp r2, #256
|
|
beq .L1302
|
|
ldrb r2, [r5, #6] @ zero_extendqisi2
|
|
ldrh r3, [fp]
|
|
cmp r2, r3
|
|
bcc .L1303
|
|
movw r2, #985
|
|
ldr r1, .L1318+4
|
|
ldr r0, .L1318+8
|
|
bl printf
|
|
.L1303:
|
|
ldr r3, [r4, #4]
|
|
add r1, sp, #16
|
|
movs r2, #1
|
|
ldr r0, [r4, #16]
|
|
str r3, [r1, #-4]!
|
|
bl log2phys
|
|
ldr r3, [r4, #12]
|
|
ldr r3, [r3, #12]
|
|
ubfx r0, r3, #10, #16
|
|
str r3, [sp, #4]
|
|
bl P2V_block_in_plane
|
|
ldr r3, [sp, #4]
|
|
mov r7, r0
|
|
adds r3, r3, #1
|
|
beq .L1304
|
|
ldr r3, .L1318+12
|
|
ldr r3, [r3]
|
|
ldrh r2, [r3, r0, lsl #1]
|
|
cbnz r2, .L1305
|
|
mov r1, r0
|
|
ldr r0, .L1318+16
|
|
bl printf
|
|
.L1305:
|
|
mov r0, r7
|
|
bl decrement_vpc_count
|
|
.L1304:
|
|
adds r6, r6, #1
|
|
adds r4, r4, #20
|
|
b .L1300
|
|
.L1319:
|
|
.align 2
|
|
.L1318:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR168
|
|
.word .LC1
|
|
.word .LANCHOR41
|
|
.word .LC41
|
|
.word .LC40
|
|
.size FtlProgPages, .-FtlProgPages
|
|
.section .text.FtlGcFreeTempBlock,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcFreeTempBlock
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcFreeTempBlock, %function
|
|
FtlGcFreeTempBlock:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movw r3, #65535
|
|
ldr r4, .L1335
|
|
ldrh r2, [r4]
|
|
cmp r2, r3
|
|
beq .L1321
|
|
ldr r3, .L1335+4
|
|
mov r0, r4
|
|
ldrh r1, [r3]
|
|
bl FtlGcScanTempBlk
|
|
str r0, [sp, #12]
|
|
.L1321:
|
|
ldr r3, .L1335+8
|
|
movs r2, #0
|
|
str r2, [r3]
|
|
movw r3, #65535
|
|
ldrh r2, [r4]
|
|
cmp r2, r3
|
|
beq .L1323
|
|
ldr r6, .L1335+4
|
|
ldrb r0, [r4, #7] @ zero_extendqisi2
|
|
ldr r5, .L1335+12
|
|
ldrh r2, [r6]
|
|
ldrh r1, [r5]
|
|
muls r2, r0, r2
|
|
cmp r1, r2
|
|
beq .L1324
|
|
movs r2, #164
|
|
ldr r1, .L1335+16
|
|
ldr r0, .L1335+20
|
|
bl printf
|
|
.L1324:
|
|
ldrh r6, [r6]
|
|
ldrb r3, [r4, #7] @ zero_extendqisi2
|
|
ldr r2, .L1335+24
|
|
ldrh r0, [r4]
|
|
ldr fp, .L1335+56
|
|
smulbb r3, r3, r6
|
|
ldr r1, [r2]
|
|
movs r6, #0
|
|
mov r10, r2
|
|
strh r3, [r1, r0, lsl #1] @ movhi
|
|
ldr r1, .L1335+28
|
|
ldrh r3, [r5]
|
|
ldr r0, [r1]
|
|
add r3, r3, r0
|
|
str r3, [r1]
|
|
.L1325:
|
|
ldrh r2, [r5]
|
|
uxth r3, r6
|
|
cmp r2, r3
|
|
bhi .L1329
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
ldrh r0, [r4]
|
|
ldr r3, [r10]
|
|
ldrh r3, [r3, r0, lsl #1]
|
|
cmp r3, #0
|
|
beq .L1330
|
|
bl INSERT_DATA_LIST
|
|
.L1331:
|
|
ldr r2, .L1335+32
|
|
movs r3, #0
|
|
movw r6, #65535
|
|
strh r3, [r5] @ movhi
|
|
strh r6, [r4] @ movhi
|
|
strh r3, [r2] @ movhi
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
ldr r3, .L1335+36
|
|
strh r6, [r3] @ movhi
|
|
ldr r3, .L1335+40
|
|
ldrh r2, [r3]
|
|
ldr r3, .L1335+44
|
|
ldrh r3, [r3]
|
|
add r3, r3, r3, lsl #1
|
|
cmp r2, r3, asr #2
|
|
ittt gt
|
|
ldrgt r3, .L1335+48
|
|
movgt r2, #20
|
|
strhgt r2, [r3] @ movhi
|
|
.L1323:
|
|
movs r0, #0
|
|
add sp, sp, #16
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1329:
|
|
uxth r3, r6
|
|
mov r8, #12
|
|
ldr r2, [fp]
|
|
mul r8, r8, r3
|
|
ldr r3, .L1335+52
|
|
ldr r3, [r3]
|
|
add r7, r3, r8
|
|
ldr r0, [r7, #8]
|
|
cmp r0, r2
|
|
bcc .L1326
|
|
.L1333:
|
|
ldrh r0, [r4]
|
|
b .L1334
|
|
.L1326:
|
|
movs r2, #0
|
|
add r1, sp, #12
|
|
str r3, [sp, #4]
|
|
bl log2phys
|
|
ldr r3, [sp, #4]
|
|
ldr r2, [sp, #12]
|
|
ldr r0, [r3, r8]
|
|
cmp r0, r2
|
|
bne .L1328
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
movs r2, #1
|
|
mov r8, r0
|
|
adds r1, r7, #4
|
|
ldr r0, [r7, #8]
|
|
bl log2phys
|
|
mov r0, r8
|
|
.L1334:
|
|
bl decrement_vpc_count
|
|
b .L1327
|
|
.L1328:
|
|
ldr r3, [r7, #4]
|
|
cmp r2, r3
|
|
bne .L1333
|
|
.L1327:
|
|
adds r6, r6, #1
|
|
b .L1325
|
|
.L1330:
|
|
bl INSERT_FREE_LIST
|
|
b .L1331
|
|
.L1336:
|
|
.align 2
|
|
.L1335:
|
|
.word .LANCHOR52
|
|
.word .LANCHOR18
|
|
.word .LANCHOR132
|
|
.word .LANCHOR69
|
|
.word .LANCHOR169
|
|
.word .LC1
|
|
.word .LANCHOR41
|
|
.word .LANCHOR83
|
|
.word .LANCHOR68
|
|
.word .LANCHOR144
|
|
.word .LANCHOR47
|
|
.word .LANCHOR170
|
|
.word .LANCHOR99
|
|
.word .LANCHOR70
|
|
.word .LANCHOR151
|
|
.size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
|
|
.section .text.FtlGcPageRecovery,"ax",%progbits
|
|
.align 1
|
|
.global FtlGcPageRecovery
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlGcPageRecovery, %function
|
|
FtlGcPageRecovery:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
ldr r4, .L1339
|
|
ldr r5, .L1339+4
|
|
ldrh r1, [r4]
|
|
mov r0, r5
|
|
bl FtlGcScanTempBlk
|
|
ldrh r2, [r5, #2]
|
|
ldrh r3, [r4]
|
|
cmp r2, r3
|
|
bcc .L1337
|
|
ldr r0, .L1339+8
|
|
bl FtlMapBlkWriteDump_data
|
|
movs r0, #0
|
|
bl FtlGcFreeTempBlock
|
|
ldr r3, .L1339+12
|
|
movs r2, #0
|
|
str r2, [r3]
|
|
.L1337:
|
|
pop {r3, r4, r5, pc}
|
|
.L1340:
|
|
.align 2
|
|
.L1339:
|
|
.word .LANCHOR18
|
|
.word .LANCHOR52
|
|
.word .LANCHOR128
|
|
.word .LANCHOR132
|
|
.size FtlGcPageRecovery, .-FtlGcPageRecovery
|
|
.section .text.FtlPowerLostRecovery,"ax",%progbits
|
|
.align 1
|
|
.global FtlPowerLostRecovery
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlPowerLostRecovery, %function
|
|
FtlPowerLostRecovery:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
movs r4, #0
|
|
ldr r5, .L1342
|
|
ldr r3, .L1342+4
|
|
mov r0, r5
|
|
str r4, [r3]
|
|
bl FtlRecoverySuperblock
|
|
mov r0, r5
|
|
ldr r5, .L1342+8
|
|
bl FtlSlcSuperblockCheck
|
|
mov r0, r5
|
|
bl FtlRecoverySuperblock
|
|
mov r0, r5
|
|
bl FtlSlcSuperblockCheck
|
|
bl FtlGcPageRecovery
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
mov r0, r4
|
|
pop {r3, r4, r5, pc}
|
|
.L1343:
|
|
.align 2
|
|
.L1342:
|
|
.word .LANCHOR50
|
|
.word .LANCHOR156
|
|
.word .LANCHOR51
|
|
.size FtlPowerLostRecovery, .-FtlPowerLostRecovery
|
|
.section .text.Ftl_gc_temp_data_write_back,"ax",%progbits
|
|
.align 1
|
|
.global Ftl_gc_temp_data_write_back
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type Ftl_gc_temp_data_write_back, %function
|
|
Ftl_gc_temp_data_write_back:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
movs r3, #0
|
|
ldr r4, .L1352
|
|
movs r6, #0
|
|
movs r7, #20
|
|
mov r2, r3
|
|
ldr r5, .L1352+4
|
|
ldr r1, [r4]
|
|
ldr r0, [r5]
|
|
bl FlashProgPages
|
|
.L1345:
|
|
ldr r1, [r4]
|
|
uxth r3, r6
|
|
cmp r1, r3
|
|
bhi .L1348
|
|
ldr r0, [r5]
|
|
bl FtlGcBufFree
|
|
ldr r3, .L1352+8
|
|
movs r0, #0
|
|
str r0, [r4]
|
|
ldrh r3, [r3, #4]
|
|
cbnz r3, .L1344
|
|
movs r0, #1
|
|
bl FtlGcFreeTempBlock
|
|
movs r0, #1
|
|
.L1344:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.L1348:
|
|
muls r3, r7, r3
|
|
ldr r2, [r5]
|
|
adds r6, r6, #1
|
|
adds r1, r2, r3
|
|
ldr r2, [r2, r3]
|
|
ldr r0, [r1, #12]
|
|
ldr r1, [r1, #4]
|
|
adds r3, r2, #1
|
|
it ne
|
|
ldrne r2, [r0, #8]
|
|
ldr r0, [r0, #12]
|
|
bl FtlGcUpdatePage
|
|
b .L1345
|
|
.L1353:
|
|
.align 2
|
|
.L1352:
|
|
.word .LANCHOR61
|
|
.word .LANCHOR103
|
|
.word .LANCHOR52
|
|
.size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
|
|
.section .text.Ftl_get_new_temp_ppa,"ax",%progbits
|
|
.align 1
|
|
.global Ftl_get_new_temp_ppa
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type Ftl_get_new_temp_ppa, %function
|
|
Ftl_get_new_temp_ppa:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, lr}
|
|
movw r3, #65535
|
|
ldr r4, .L1357
|
|
ldrh r2, [r4]
|
|
cmp r2, r3
|
|
beq .L1355
|
|
ldrh r3, [r4, #4]
|
|
cbnz r3, .L1356
|
|
.L1355:
|
|
movs r0, #0
|
|
movs r5, #0
|
|
bl FtlGcFreeTempBlock
|
|
ldr r0, .L1357
|
|
strb r5, [r4, #8]
|
|
bl allocate_data_superblock
|
|
ldr r3, .L1357+4
|
|
strh r5, [r3] @ movhi
|
|
ldr r3, .L1357+8
|
|
strh r5, [r3] @ movhi
|
|
bl l2p_flush
|
|
mov r0, r5
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
.L1356:
|
|
ldr r0, .L1357
|
|
pop {r3, r4, r5, lr}
|
|
b get_new_active_ppa
|
|
.L1358:
|
|
.align 2
|
|
.L1357:
|
|
.word .LANCHOR52
|
|
.word .LANCHOR68
|
|
.word .LANCHOR69
|
|
.size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
|
|
.section .text.rk_ftl_garbage_collect,"ax",%progbits
|
|
.align 1
|
|
.global rk_ftl_garbage_collect
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type rk_ftl_garbage_collect, %function
|
|
rk_ftl_garbage_collect:
|
|
@ args = 0, pretend = 0, frame = 40
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L1449
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
sub sp, sp, #48
|
|
str r0, [sp, #28]
|
|
ldr r0, [r3]
|
|
cmp r0, #0
|
|
bne .L1416
|
|
ldr r3, .L1449+4
|
|
ldrh r3, [r3]
|
|
cmp r3, #47
|
|
bls .L1359
|
|
ldr r3, .L1449+8
|
|
movw r4, #65535
|
|
ldrh r0, [r3]
|
|
cmp r0, r4
|
|
beq .L1361
|
|
ldr r1, .L1449+12
|
|
ldrh r2, [r1]
|
|
cmp r2, r4
|
|
itt eq
|
|
strheq r0, [r1] @ movhi
|
|
strheq r2, [r3] @ movhi
|
|
.L1361:
|
|
ldr r3, [sp, #28]
|
|
cmp r3, #0
|
|
bne .L1418
|
|
ldr r3, .L1449+16
|
|
ldrh r3, [r3]
|
|
cmp r3, #24
|
|
bhi .L1419
|
|
ldr r2, .L1449+20
|
|
cmp r3, #16
|
|
ldrh r4, [r2]
|
|
bls .L1364
|
|
lsrs r4, r4, #5
|
|
.L1363:
|
|
ldr r2, .L1449+24
|
|
ldrh r1, [r2]
|
|
cmp r1, r3
|
|
mov r1, r2
|
|
bcs .L1367
|
|
ldr r3, .L1449+28
|
|
movw r0, #65535
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
bne .L1368
|
|
ldr r0, .L1449+12
|
|
ldrh r0, [r0]
|
|
cmp r0, r3
|
|
bne .L1368
|
|
ldr r3, .L1449+32
|
|
ldrh r0, [r3]
|
|
cbnz r0, .L1369
|
|
ldr r3, .L1449+36
|
|
ldr r4, .L1449+40
|
|
ldr r3, [r3]
|
|
ldr r4, [r4]
|
|
add r3, r3, r3, lsl #1
|
|
cmp r4, r3, lsr #2
|
|
bcs .L1370
|
|
.L1369:
|
|
ldr r3, .L1449+44
|
|
ldrh r3, [r3]
|
|
add r3, r3, r3, lsl #1
|
|
asrs r3, r3, #2
|
|
strh r3, [r1] @ movhi
|
|
.L1371:
|
|
ldr r3, .L1449+48
|
|
movs r2, #0
|
|
str r2, [r3]
|
|
.L1359:
|
|
add sp, sp, #48
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1364:
|
|
cmp r3, #12
|
|
bls .L1365
|
|
lsrs r4, r4, #4
|
|
b .L1363
|
|
.L1365:
|
|
cmp r3, #8
|
|
bls .L1363
|
|
lsrs r4, r4, #2
|
|
b .L1363
|
|
.L1419:
|
|
movs r4, #1
|
|
b .L1363
|
|
.L1370:
|
|
movs r3, #18
|
|
strh r3, [r2] @ movhi
|
|
b .L1371
|
|
.L1368:
|
|
ldr r3, .L1449+44
|
|
ldrh r3, [r3]
|
|
add r3, r3, r3, lsl #1
|
|
asrs r3, r3, #2
|
|
strh r3, [r1] @ movhi
|
|
.L1367:
|
|
ldr r3, .L1449+52
|
|
ldrh r3, [r3]
|
|
cbz r3, .L1362
|
|
adds r4, r4, #32
|
|
uxth r4, r4
|
|
.L1362:
|
|
ldr r5, .L1449+56
|
|
movw r3, #65535
|
|
ldrh r2, [r5]
|
|
cmp r2, r3
|
|
bne .L1374
|
|
ldr r3, .L1449+12
|
|
ldrh r1, [r3]
|
|
cmp r1, r2
|
|
beq .L1375
|
|
ldr r0, .L1449+60
|
|
ldr r0, [r0]
|
|
ldrh r1, [r0, r1, lsl #1]
|
|
cbnz r1, .L1376
|
|
strh r2, [r3] @ movhi
|
|
.L1376:
|
|
ldrh r2, [r3]
|
|
strh r2, [r5] @ movhi
|
|
movw r2, #65535
|
|
strh r2, [r3] @ movhi
|
|
.L1375:
|
|
ldrh r0, [r5]
|
|
movw r6, #65535
|
|
movs r3, #0
|
|
strb r3, [r5, #8]
|
|
cmp r0, r6
|
|
beq .L1374
|
|
bl IsBlkInGcList
|
|
cbz r0, .L1378
|
|
strh r6, [r5] @ movhi
|
|
.L1378:
|
|
ldrh r2, [r5]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L1374
|
|
ldr r0, .L1449+56
|
|
bl make_superblock
|
|
ldr r2, .L1449+64
|
|
movs r3, #0
|
|
strh r3, [r5, #2] @ movhi
|
|
strb r3, [r5, #6]
|
|
strh r3, [r2] @ movhi
|
|
ldr r3, .L1449+60
|
|
ldrh r2, [r5]
|
|
ldr r3, [r3]
|
|
ldrh r2, [r3, r2, lsl #1]
|
|
ldr r3, .L1449+68
|
|
strh r2, [r3] @ movhi
|
|
.L1374:
|
|
ldr r2, .L1449+72
|
|
ldrh r3, [r5]
|
|
ldrh r2, [r2]
|
|
cmp r2, r3
|
|
beq .L1379
|
|
ldr r2, .L1449+76
|
|
ldrh r2, [r2]
|
|
cmp r2, r3
|
|
beq .L1379
|
|
ldr r2, .L1449+28
|
|
ldrh r2, [r2]
|
|
cmp r2, r3
|
|
bne .L1380
|
|
.L1379:
|
|
movw r3, #65535
|
|
strh r3, [r5] @ movhi
|
|
.L1380:
|
|
ldr r5, .L1449+56
|
|
mov r6, r5
|
|
.L1415:
|
|
ldrh r2, [r5]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L1381
|
|
ldr fp, .L1449+88
|
|
movs r2, #0
|
|
ldr r3, .L1449+48
|
|
mov r8, fp
|
|
str r2, [r3]
|
|
.L1382:
|
|
ldrh r7, [fp]
|
|
mov r0, r7
|
|
bl List_get_gc_head_node
|
|
uxth r3, r0
|
|
movw r1, #65535
|
|
cmp r3, r1
|
|
strh r3, [r6] @ movhi
|
|
bne .L1383
|
|
movs r3, #0
|
|
movs r0, #8
|
|
strh r3, [fp] @ movhi
|
|
b .L1359
|
|
.L1418:
|
|
movs r4, #1
|
|
b .L1362
|
|
.L1383:
|
|
str r0, [sp, #16]
|
|
mov r0, r3
|
|
str r3, [sp, #12]
|
|
adds r7, r7, #1
|
|
bl IsBlkInGcList
|
|
ldr r3, [sp, #12]
|
|
ldr r2, [sp, #16]
|
|
cbz r0, .L1384
|
|
strh r7, [fp] @ movhi
|
|
b .L1382
|
|
.L1384:
|
|
uxth r0, r2
|
|
ldr r2, .L1449+20
|
|
ldr r10, .L1449+60
|
|
uxth r7, r7
|
|
ldrh lr, [r2]
|
|
ldr r2, .L1449+80
|
|
ldr r1, [r10]
|
|
strh r7, [fp] @ movhi
|
|
ldrh r2, [r2]
|
|
ldrh ip, [r1, r0, lsl #1]
|
|
mul r2, r2, lr
|
|
cmp ip, r2, asr #1
|
|
bgt .L1386
|
|
cmp r7, #48
|
|
bls .L1387
|
|
cmp ip, #8
|
|
bls .L1387
|
|
ldr r7, .L1449+84
|
|
ldrh r7, [r7]
|
|
cmp r7, #35
|
|
bhi .L1387
|
|
.L1386:
|
|
movs r7, #0
|
|
strh r7, [r8] @ movhi
|
|
.L1387:
|
|
ldrh r1, [r1, r0, lsl #1]
|
|
cmp r2, r1
|
|
bgt .L1388
|
|
ldrh r2, [r8]
|
|
cmp r2, #3
|
|
bhi .L1388
|
|
movw r3, #65535
|
|
strh r3, [r6] @ movhi
|
|
movs r3, #0
|
|
strh r3, [r8] @ movhi
|
|
.L1448:
|
|
ldr r3, .L1449+32
|
|
ldrh r0, [r3]
|
|
b .L1359
|
|
.L1388:
|
|
cbnz r1, .L1389
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
ldrh r3, [r8]
|
|
adds r3, r3, #1
|
|
strh r3, [r8] @ movhi
|
|
b .L1382
|
|
.L1450:
|
|
.align 2
|
|
.L1449:
|
|
.word .LANCHOR93
|
|
.word .LANCHOR43
|
|
.word .LANCHOR72
|
|
.word .LANCHOR71
|
|
.word .LANCHOR47
|
|
.word .LANCHOR18
|
|
.word .LANCHOR99
|
|
.word .LANCHOR52
|
|
.word .LANCHOR171
|
|
.word .LANCHOR151
|
|
.word .LANCHOR58
|
|
.word .LANCHOR170
|
|
.word .LANCHOR94
|
|
.word .LANCHOR73
|
|
.word .LANCHOR144
|
|
.word .LANCHOR41
|
|
.word .LANCHOR172
|
|
.word .LANCHOR173
|
|
.word .LANCHOR50
|
|
.word .LANCHOR51
|
|
.word .LANCHOR2
|
|
.word .LANCHOR68
|
|
.word .LANCHOR101
|
|
.L1389:
|
|
movs r2, #0
|
|
strb r2, [r6, #8]
|
|
ldr r2, .L1451
|
|
ldrh r2, [r2]
|
|
cmp r2, r3
|
|
bne .L1390
|
|
movw r2, #717
|
|
ldr r1, .L1451+4
|
|
ldr r0, .L1451+8
|
|
bl printf
|
|
.L1390:
|
|
ldr r3, .L1451+12
|
|
ldrh r2, [r6]
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bne .L1391
|
|
movw r2, #718
|
|
ldr r1, .L1451+4
|
|
ldr r0, .L1451+8
|
|
bl printf
|
|
.L1391:
|
|
ldr r3, .L1451+16
|
|
ldrh r2, [r6]
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bne .L1392
|
|
movw r2, #719
|
|
ldr r1, .L1451+4
|
|
ldr r0, .L1451+8
|
|
bl printf
|
|
.L1392:
|
|
mov r0, r5
|
|
bl make_superblock
|
|
ldr r2, .L1451+20
|
|
movs r3, #0
|
|
ldrh r1, [r6]
|
|
strh r3, [r2] @ movhi
|
|
ldr r2, [r10]
|
|
ldrh r1, [r2, r1, lsl #1]
|
|
ldr r2, .L1451+24
|
|
strh r3, [r6, #2] @ movhi
|
|
strb r3, [r6, #6]
|
|
strh r1, [r2] @ movhi
|
|
.L1381:
|
|
ldr r3, .L1451+28
|
|
movs r2, #1
|
|
str r2, [r3]
|
|
ldr r3, .L1451+32
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #16]
|
|
ldr r3, [sp, #28]
|
|
cbz r3, .L1393
|
|
ldr r3, .L1451+36
|
|
ldr r2, [sp, #16]
|
|
ldrh r1, [r6]
|
|
ldrh r3, [r3]
|
|
muls r3, r2, r3
|
|
ldr r2, .L1451+40
|
|
ldr r2, [r2]
|
|
ldrh r2, [r2, r1, lsl #1]
|
|
subs r3, r3, r2
|
|
it mi
|
|
addmi r3, r3, #3
|
|
add r4, r4, r3, asr #2
|
|
uxth r4, r4
|
|
.L1393:
|
|
ldrh r3, [r6, #2]
|
|
ldr r1, [sp, #16]
|
|
ldr fp, .L1451+64
|
|
adds r2, r3, r4
|
|
cmp r2, r1
|
|
itt gt
|
|
movgt r2, r1
|
|
subgt r4, r2, r3
|
|
mov r3, #0
|
|
it gt
|
|
uxthgt r4, r4
|
|
str r3, [sp, #24]
|
|
.L1396:
|
|
ldrh r3, [sp, #24]
|
|
cmp r4, r3
|
|
bls .L1404
|
|
ldr r3, .L1451+36
|
|
movw r10, #65535
|
|
ldrh r1, [r5, #2]
|
|
mov ip, #20
|
|
ldr r0, [fp]
|
|
ldrh lr, [r3]
|
|
ldr r3, [sp, #24]
|
|
ldr r7, .L1451+44
|
|
adds r3, r1, r3
|
|
str r3, [sp, #20]
|
|
movs r3, #0
|
|
str r3, [sp, #12]
|
|
b .L1405
|
|
.L1398:
|
|
ldrh r2, [r7, #2]!
|
|
cmp r2, r10
|
|
beq .L1397
|
|
ldr r1, [sp, #12]
|
|
mla r8, ip, r1, r0
|
|
ldr r1, [sp, #20]
|
|
orr r2, r1, r2, lsl #10
|
|
str r2, [r8, #4]
|
|
ldr r2, [sp, #12]
|
|
adds r2, r2, #1
|
|
uxth r2, r2
|
|
str r2, [sp, #12]
|
|
.L1397:
|
|
adds r3, r3, #1
|
|
.L1405:
|
|
uxth r2, r3
|
|
cmp lr, r2
|
|
bhi .L1398
|
|
ldrb r2, [r5, #8] @ zero_extendqisi2
|
|
ldr r1, [sp, #12]
|
|
bl FlashReadPages
|
|
movs r3, #0
|
|
.L1447:
|
|
str r3, [sp, #20]
|
|
ldr r2, [sp, #12]
|
|
ldrh r3, [sp, #20]
|
|
cmp r2, r3
|
|
bhi .L1403
|
|
ldr r3, [sp, #24]
|
|
adds r3, r3, #1
|
|
str r3, [sp, #24]
|
|
b .L1396
|
|
.L1403:
|
|
ldr r3, [sp, #20]
|
|
movs r7, #20
|
|
muls r7, r3, r7
|
|
ldr r3, [fp]
|
|
adds r2, r3, r7
|
|
ldr r3, [r3, r7]
|
|
adds r3, r3, #1
|
|
beq .L1400
|
|
ldr r8, [r2, #12]
|
|
movw r3, #61589
|
|
ldrh r2, [r8]
|
|
cmp r2, r3
|
|
bne .L1400
|
|
ldr r10, [r8, #8]
|
|
cmp r10, #-1
|
|
bne .L1401
|
|
movw r2, #753
|
|
ldr r1, .L1451+4
|
|
ldr r0, .L1451+8
|
|
bl printf
|
|
.L1401:
|
|
movs r2, #0
|
|
add r1, sp, #40
|
|
mov r0, r10
|
|
bl log2phys
|
|
ldr r0, [fp]
|
|
ldr r3, [sp, #40]
|
|
add r0, r0, r7
|
|
ldr r2, [r0, #4]
|
|
cmp r2, r3
|
|
bne .L1400
|
|
ldr r2, .L1451+20
|
|
ldr r10, .L1451+60
|
|
ldr r1, .L1451+48
|
|
ldrh r3, [r2]
|
|
str r1, [sp, #36]
|
|
adds r3, r3, #1
|
|
strh r3, [r2] @ movhi
|
|
ldr r2, [r1]
|
|
movs r1, #20
|
|
ldr r3, [r10]
|
|
mla r3, r1, r3, r2
|
|
ldr r2, [r0, #16]
|
|
str r2, [r3, #16]
|
|
str r3, [sp, #32]
|
|
bl Ftl_get_new_temp_ppa
|
|
ldr r3, [sp, #32]
|
|
ldr r1, [sp, #36]
|
|
str r0, [r3, #4]
|
|
ldr r2, [r1]
|
|
movs r1, #20
|
|
ldr r3, [r10]
|
|
ldr r0, [fp]
|
|
mla r2, r1, r3, r2
|
|
add r0, r0, r7
|
|
ldr r7, .L1451+16
|
|
ldr r1, [r0, #8]
|
|
adds r3, r3, #1
|
|
str r1, [r2, #8]
|
|
ldr r1, [r0, #12]
|
|
str r1, [r2, #12]
|
|
movs r1, #1
|
|
ldr r2, [sp, #40]
|
|
str r2, [r8, #12]
|
|
ldrh r2, [r7]
|
|
strh r2, [r8, #2] @ movhi
|
|
ldr r2, .L1451+52
|
|
str r3, [r10]
|
|
ldr r2, [r2]
|
|
str r2, [r8, #4]
|
|
bl FtlGcBufAlloc
|
|
ldrb r2, [r7, #7] @ zero_extendqisi2
|
|
ldr r3, [r10]
|
|
cmp r2, r3
|
|
beq .L1402
|
|
ldrh r3, [r7, #4]
|
|
cbnz r3, .L1400
|
|
.L1402:
|
|
bl Ftl_gc_temp_data_write_back
|
|
cbz r0, .L1400
|
|
ldr r3, .L1451+28
|
|
movs r2, #0
|
|
movw r1, #65535
|
|
str r2, [r3]
|
|
ldr r3, .L1451+56
|
|
strh r1, [r3] @ movhi
|
|
strh r2, [r3, #2] @ movhi
|
|
b .L1448
|
|
.L1400:
|
|
ldr r3, [sp, #20]
|
|
adds r3, r3, #1
|
|
b .L1447
|
|
.L1404:
|
|
ldrh r3, [r5, #2]
|
|
add r4, r4, r3
|
|
ldr r3, [sp, #16]
|
|
uxth r4, r4
|
|
cmp r3, r4
|
|
strh r4, [r5, #2] @ movhi
|
|
bhi .L1406
|
|
ldr r3, .L1451+60
|
|
ldr r3, [r3]
|
|
cbz r3, .L1407
|
|
bl Ftl_gc_temp_data_write_back
|
|
cbz r0, .L1407
|
|
ldr r3, .L1451+28
|
|
movs r2, #0
|
|
str r2, [r3]
|
|
b .L1448
|
|
.L1452:
|
|
.align 2
|
|
.L1451:
|
|
.word .LANCHOR50
|
|
.word .LANCHOR174
|
|
.word .LC1
|
|
.word .LANCHOR51
|
|
.word .LANCHOR52
|
|
.word .LANCHOR172
|
|
.word .LANCHOR173
|
|
.word .LANCHOR93
|
|
.word .LANCHOR18
|
|
.word .LANCHOR2
|
|
.word .LANCHOR41
|
|
.word .LANCHOR144+14
|
|
.word .LANCHOR103
|
|
.word .LANCHOR82
|
|
.word .LANCHOR144
|
|
.word .LANCHOR61
|
|
.word .LANCHOR65
|
|
.L1407:
|
|
ldr r3, .L1453
|
|
ldrh r4, [r3]
|
|
cmp r4, #0
|
|
bne .L1408
|
|
ldr r8, .L1453+28
|
|
ldrh r1, [r5]
|
|
ldr r3, [r8]
|
|
ldrh r3, [r3, r1, lsl #1]
|
|
cmp r3, #0
|
|
beq .L1408
|
|
ldr r0, .L1453+4
|
|
ldr r10, .L1453+32
|
|
ldrh r2, [r5, #2]
|
|
ldrh r0, [r0]
|
|
str r3, [sp]
|
|
mov r3, r4
|
|
str r0, [sp, #4]
|
|
ldr r0, .L1453+8
|
|
bl printf
|
|
.L1409:
|
|
ldr r3, [r10]
|
|
cmp r4, r3
|
|
bcs .L1411
|
|
movs r2, #0
|
|
add r1, sp, #44
|
|
mov r0, r4
|
|
bl log2phys
|
|
ldr r7, [sp, #44]
|
|
adds r3, r7, #1
|
|
beq .L1410
|
|
ubfx r0, r7, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldrh r3, [r5]
|
|
cmp r3, r0
|
|
bne .L1410
|
|
mov r2, r7
|
|
mov r1, r4
|
|
ldr r0, .L1453+12
|
|
bl printf
|
|
.L1411:
|
|
ldr r3, [r10]
|
|
cmp r4, r3
|
|
bcc .L1408
|
|
ldrh r2, [r5]
|
|
movs r1, #0
|
|
ldr r3, [r8]
|
|
strh r1, [r3, r2, lsl #1] @ movhi
|
|
ldrh r0, [r5]
|
|
bl update_vpc_list
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
.L1408:
|
|
movw r3, #65535
|
|
strh r3, [r5] @ movhi
|
|
.L1406:
|
|
ldr r3, .L1453+16
|
|
movs r2, #0
|
|
str r2, [r3]
|
|
ldr r3, .L1453+20
|
|
ldrh r0, [r3]
|
|
cmp r0, #2
|
|
bhi .L1414
|
|
ldr r3, .L1453+24
|
|
ldrh r4, [r3]
|
|
b .L1415
|
|
.L1410:
|
|
adds r4, r4, #1
|
|
b .L1409
|
|
.L1414:
|
|
adds r0, r0, #1
|
|
b .L1359
|
|
.L1416:
|
|
movs r0, #0
|
|
b .L1359
|
|
.L1454:
|
|
.align 2
|
|
.L1453:
|
|
.word .LANCHOR172
|
|
.word .LANCHOR173
|
|
.word .LC42
|
|
.word .LC43
|
|
.word .LANCHOR93
|
|
.word .LANCHOR47
|
|
.word .LANCHOR18
|
|
.word .LANCHOR41
|
|
.word .LANCHOR151
|
|
.size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
|
|
.section .text.FtlRead,"ax",%progbits
|
|
.align 1
|
|
.global FtlRead
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlRead, %function
|
|
FtlRead:
|
|
@ args = 0, pretend = 0, frame = 56
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
cmp r0, #16
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
sub sp, sp, #56
|
|
mov r5, r1
|
|
mov r10, r3
|
|
str r2, [sp, #4]
|
|
bne .L1456
|
|
mov r2, r3
|
|
ldr r1, [sp, #4]
|
|
add r0, r5, #256
|
|
bl FtlVendorPartRead
|
|
mov r4, r0
|
|
.L1455:
|
|
mov r0, r4
|
|
add sp, sp, #56
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1456:
|
|
ldr r3, .L1490
|
|
ldr r3, [r3]
|
|
cmp r1, r3
|
|
bcs .L1479
|
|
ldr r2, [sp, #4]
|
|
cmp r2, r3
|
|
bhi .L1479
|
|
adds r2, r1, r2
|
|
cmp r3, r2
|
|
str r2, [sp, #12]
|
|
bcc .L1479
|
|
ldr r3, .L1490+4
|
|
ldr r4, [r3]
|
|
adds r6, r4, #1
|
|
beq .L1455
|
|
ldr r3, .L1490+8
|
|
mov r0, r5
|
|
mov r8, #0
|
|
mov r7, r8
|
|
ldrh r4, [r3]
|
|
mov r1, r4
|
|
bl __aeabi_uidiv
|
|
ldr r3, [sp, #12]
|
|
mov r1, r4
|
|
str r0, [sp, #16]
|
|
mov r4, r8
|
|
subs r0, r3, #1
|
|
bl __aeabi_uidiv
|
|
ldr r3, [sp, #16]
|
|
ldr r2, .L1490+12
|
|
ldr r1, [sp, #4]
|
|
rsb r3, r3, #1
|
|
ldr r6, [sp, #16]
|
|
add r3, r3, r0
|
|
str r0, [sp, #20]
|
|
str r3, [sp, #8]
|
|
ldr r3, [r2]
|
|
str r8, [sp, #28]
|
|
str r8, [sp, #24]
|
|
add r3, r3, r1
|
|
ldr r1, [sp, #8]
|
|
str r3, [r2]
|
|
ldr r2, .L1490+16
|
|
ldr r3, [r2]
|
|
add r3, r3, r1
|
|
str r3, [r2]
|
|
.L1458:
|
|
ldr r3, [sp, #8]
|
|
cbnz r3, .L1475
|
|
ldr r3, .L1490+20
|
|
ldrh r3, [r3]
|
|
cbnz r3, .L1476
|
|
ldr r3, .L1490+24
|
|
ldrh r3, [r3]
|
|
cmp r3, #31
|
|
bhi .L1455
|
|
.L1476:
|
|
movs r1, #1
|
|
movs r0, #0
|
|
bl rk_ftl_garbage_collect
|
|
b .L1455
|
|
.L1475:
|
|
movs r2, #0
|
|
add r1, sp, #52
|
|
mov r0, r6
|
|
bl log2phys
|
|
ldr r3, [sp, #52]
|
|
adds r0, r3, #1
|
|
bne .L1459
|
|
ldr r3, .L1490+8
|
|
mov fp, #0
|
|
.L1460:
|
|
ldrh r0, [r3]
|
|
cmp fp, r0
|
|
bcc .L1462
|
|
.L1463:
|
|
ldr r3, [sp, #8]
|
|
adds r6, r6, #1
|
|
subs r3, r3, #1
|
|
str r3, [sp, #8]
|
|
beq .L1467
|
|
ldr r3, .L1490+28
|
|
ldrh r3, [r3]
|
|
cmp r7, r3, lsl #2
|
|
bne .L1458
|
|
.L1467:
|
|
cmp r7, #0
|
|
beq .L1458
|
|
ldr r3, .L1490+32
|
|
movs r2, #0
|
|
mov r1, r7
|
|
mov fp, #0
|
|
ldr r0, [r3]
|
|
bl FlashReadPages
|
|
lsl r3, r8, #9
|
|
str r3, [sp, #44]
|
|
ldr r3, [sp, #24]
|
|
lsls r3, r3, #9
|
|
str r3, [sp, #36]
|
|
ldr r3, [sp, #28]
|
|
lsls r3, r3, #9
|
|
str r3, [sp, #40]
|
|
.L1474:
|
|
movs r3, #20
|
|
mul r3, r3, fp
|
|
str r3, [sp, #32]
|
|
ldr r3, .L1490+32
|
|
ldr r2, [r3]
|
|
ldr r3, [sp, #32]
|
|
add r2, r2, r3
|
|
ldr r3, [sp, #16]
|
|
ldr r1, [r2, #16]
|
|
cmp r3, r1
|
|
bne .L1469
|
|
ldr r1, [r2, #8]
|
|
ldr r2, .L1490+36
|
|
ldr r2, [r2]
|
|
cmp r1, r2
|
|
bne .L1470
|
|
ldr r3, [sp, #36]
|
|
mov r0, r10
|
|
ldr r2, [sp, #40]
|
|
add r1, r1, r3
|
|
.L1489:
|
|
bl ftl_memcpy
|
|
.L1470:
|
|
ldr r3, .L1490+32
|
|
ldr r2, [sp, #32]
|
|
ldr r3, [r3]
|
|
adds r2, r3, r2
|
|
ldr r0, [r2, #12]
|
|
ldr r1, [r2, #16]
|
|
ldr r0, [r0, #8]
|
|
cmp r1, r0
|
|
itttt ne
|
|
ldrne r0, .L1490+40
|
|
ldrne r1, [r0, #72]
|
|
addne r1, r1, #1
|
|
strne r1, [r0, #72]
|
|
ldr r1, [sp, #32]
|
|
ldr r3, [r3, r1]
|
|
adds r1, r3, #1
|
|
bne .L1472
|
|
ldr r1, .L1490+40
|
|
mov r4, r3
|
|
ldr r2, [r1, #72]
|
|
adds r2, r2, #1
|
|
str r2, [r1, #72]
|
|
.L1473:
|
|
add fp, fp, #1
|
|
cmp r7, fp
|
|
bne .L1474
|
|
movs r7, #0
|
|
b .L1458
|
|
.L1462:
|
|
mla r0, r0, r6, fp
|
|
cmp r5, r0
|
|
bhi .L1461
|
|
ldr r2, [sp, #12]
|
|
cmp r2, r0
|
|
bls .L1461
|
|
subs r0, r0, r5
|
|
mov r2, #512
|
|
movs r1, #0
|
|
add r0, r10, r0, lsl #9
|
|
str r3, [sp, #32]
|
|
bl ftl_memset
|
|
ldr r3, [sp, #32]
|
|
.L1461:
|
|
add fp, fp, #1
|
|
b .L1460
|
|
.L1459:
|
|
ldr r2, .L1490+32
|
|
mov fp, #20
|
|
ldr r2, [r2]
|
|
mla fp, fp, r7, r2
|
|
str r3, [fp, #4]
|
|
ldr r3, [sp, #16]
|
|
cmp r6, r3
|
|
ldr r3, .L1490+8
|
|
bne .L1464
|
|
ldr r2, .L1490+36
|
|
mov r0, r5
|
|
ldrh r3, [r3]
|
|
ldr r2, [r2]
|
|
mov r1, r3
|
|
str r3, [sp, #28]
|
|
str r2, [fp, #8]
|
|
bl __aeabi_uidivmod
|
|
ldr r3, [sp, #28]
|
|
str r1, [sp, #24]
|
|
subs r2, r3, r1
|
|
ldr r1, [sp, #4]
|
|
cmp r2, r1
|
|
it cs
|
|
movcs r2, r1
|
|
cmp r3, r2
|
|
str r2, [sp, #28]
|
|
bne .L1465
|
|
str r10, [fp, #8]
|
|
.L1465:
|
|
ldr r3, .L1490+44
|
|
ldr r2, .L1490+48
|
|
str r6, [fp, #16]
|
|
ldrh r3, [r3]
|
|
ldr r2, [r2]
|
|
muls r3, r7, r3
|
|
adds r7, r7, #1
|
|
bic r3, r3, #3
|
|
add r3, r3, r2
|
|
str r3, [fp, #12]
|
|
b .L1463
|
|
.L1464:
|
|
ldr r2, [sp, #20]
|
|
cmp r6, r2
|
|
bne .L1466
|
|
ldr r2, .L1490+52
|
|
ldr r1, [sp, #12]
|
|
ldr r2, [r2]
|
|
str r2, [fp, #8]
|
|
ldrh r2, [r3]
|
|
mul r3, r2, r6
|
|
sub r8, r1, r3
|
|
cmp r2, r8
|
|
bne .L1465
|
|
.L1488:
|
|
subs r3, r3, r5
|
|
add r3, r10, r3, lsl #9
|
|
str r3, [fp, #8]
|
|
b .L1465
|
|
.L1466:
|
|
ldrh r3, [r3]
|
|
muls r3, r6, r3
|
|
b .L1488
|
|
.L1469:
|
|
ldr r3, [sp, #20]
|
|
cmp r3, r1
|
|
bne .L1470
|
|
ldr r3, .L1490+52
|
|
ldr r1, [r2, #8]
|
|
ldr r2, [r3]
|
|
cmp r1, r2
|
|
bne .L1470
|
|
ldr r2, .L1490+8
|
|
ldr r3, [sp, #20]
|
|
ldrh r0, [r2]
|
|
ldr r2, [sp, #44]
|
|
muls r0, r3, r0
|
|
subs r0, r0, r5
|
|
add r0, r10, r0, lsl #9
|
|
b .L1489
|
|
.L1472:
|
|
cmp r3, #256
|
|
bne .L1473
|
|
ldr r0, [r2, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
b .L1473
|
|
.L1479:
|
|
mov r4, #-1
|
|
b .L1455
|
|
.L1491:
|
|
.align 2
|
|
.L1490:
|
|
.word .LANCHOR33
|
|
.word .LANCHOR165
|
|
.word .LANCHOR11
|
|
.word .LANCHOR162
|
|
.word .LANCHOR88
|
|
.word .LANCHOR73
|
|
.word .LANCHOR47
|
|
.word .LANCHOR2
|
|
.word .LANCHOR102
|
|
.word .LANCHOR108
|
|
.word .LANCHOR134
|
|
.word .LANCHOR23
|
|
.word .LANCHOR114
|
|
.word .LANCHOR109
|
|
.size FtlRead, .-FtlRead
|
|
.section .text.sftl_read,"ax",%progbits
|
|
.align 1
|
|
.global sftl_read
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type sftl_read, %function
|
|
sftl_read:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r3, r2
|
|
mov r2, r1
|
|
mov r1, r0
|
|
movs r0, #0
|
|
b FtlRead
|
|
.size sftl_read, .-sftl_read
|
|
.section .text.FtlWrite,"ax",%progbits
|
|
.align 1
|
|
.global FtlWrite
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlWrite, %function
|
|
FtlWrite:
|
|
@ args = 0, pretend = 0, frame = 72
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
cmp r0, #16
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
sub sp, sp, #72
|
|
mov r10, r1
|
|
str r2, [sp, #16]
|
|
str r3, [sp, #20]
|
|
bne .L1494
|
|
mov r2, r3
|
|
ldr r1, [sp, #16]
|
|
add r0, r10, #256
|
|
bl FtlVendorPartWrite
|
|
.L1493:
|
|
add sp, sp, #72
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1494:
|
|
ldr r3, .L1540
|
|
ldr r3, [r3]
|
|
cmp r1, r3
|
|
bcs .L1529
|
|
ldr r2, [sp, #16]
|
|
cmp r2, r3
|
|
bhi .L1529
|
|
adds r4, r1, r2
|
|
cmp r3, r4
|
|
bcc .L1529
|
|
ldr r3, .L1540+4
|
|
ldr r0, [r3]
|
|
adds r1, r0, #1
|
|
beq .L1493
|
|
ldr r3, .L1540+8
|
|
mov r2, #2048
|
|
mov r0, r10
|
|
ldr r7, .L1540+12
|
|
str r2, [r3]
|
|
ldr r3, .L1540+16
|
|
ldrh r5, [r3]
|
|
mov r1, r5
|
|
bl __aeabi_uidiv
|
|
mov r1, r5
|
|
str r0, [sp, #12]
|
|
subs r0, r4, #1
|
|
bl __aeabi_uidiv
|
|
ldr r2, [sp, #12]
|
|
ldr r1, [sp, #16]
|
|
ldr r5, [sp, #12]
|
|
subs r3, r0, r2
|
|
ldr r2, .L1540+20
|
|
str r3, [sp, #32]
|
|
adds r3, r3, #1
|
|
str r3, [sp, #8]
|
|
ldr r3, [r2]
|
|
str r0, [sp, #28]
|
|
add r3, r3, r1
|
|
ldr r1, [sp, #8]
|
|
str r3, [r2]
|
|
ldr r2, .L1540+24
|
|
ldr r3, [r2]
|
|
add r3, r3, r1
|
|
str r3, [r2]
|
|
.L1496:
|
|
ldr r3, [sp, #8]
|
|
cbnz r3, .L1522
|
|
ldr r5, .L1540+28
|
|
mov r0, r3
|
|
ldr r1, [sp, #32]
|
|
bl rk_ftl_garbage_collect
|
|
ldrh r2, [r5]
|
|
cmp r2, #5
|
|
bls .L1523
|
|
.L1525:
|
|
movs r0, #0
|
|
b .L1493
|
|
.L1522:
|
|
ldr r4, .L1540+32
|
|
ldrb r2, [r7, #6] @ zero_extendqisi2
|
|
ldrh r3, [r4]
|
|
cmp r2, r3
|
|
bcc .L1497
|
|
movw r2, #1041
|
|
ldr r1, .L1540+36
|
|
ldr r0, .L1540+40
|
|
bl printf
|
|
.L1497:
|
|
ldrh r3, [r7, #4]
|
|
cbnz r3, .L1498
|
|
mov r0, r7
|
|
bl allocate_new_data_superblock
|
|
.L1498:
|
|
ldrb r3, [r7, #7] @ zero_extendqisi2
|
|
ldrh r2, [r7, #4]
|
|
lsls r3, r3, #2
|
|
cmp r3, r2
|
|
it cs
|
|
movcs r3, r2
|
|
ldr r2, [sp, #8]
|
|
cmp r3, r2
|
|
it cs
|
|
movcs r3, r2
|
|
ldrb r2, [r7, #6] @ zero_extendqisi2
|
|
str r3, [sp, #44]
|
|
ldrh r3, [r4]
|
|
cmp r2, r3
|
|
bcc .L1499
|
|
movw r2, #1074
|
|
ldr r1, .L1540+36
|
|
ldr r0, .L1540+40
|
|
bl printf
|
|
.L1499:
|
|
ldr r8, .L1540+44
|
|
movs r3, #0
|
|
str r3, [sp, #4]
|
|
.L1500:
|
|
ldr r3, [sp, #4]
|
|
ldr r2, [sp, #44]
|
|
cmp r3, r2
|
|
bne .L1520
|
|
.L1501:
|
|
ldr r0, .L1540+44
|
|
mov r3, r7
|
|
movs r2, #0
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [r0]
|
|
bl FtlProgPages
|
|
ldr r3, [sp, #4]
|
|
ldr r2, [sp, #8]
|
|
cmp r3, r2
|
|
bls .L1521
|
|
mov r2, #1152
|
|
ldr r1, .L1540+36
|
|
ldr r0, .L1540+40
|
|
bl printf
|
|
.L1521:
|
|
ldr r3, [sp, #8]
|
|
ldr r2, [sp, #4]
|
|
subs r3, r3, r2
|
|
str r3, [sp, #8]
|
|
b .L1496
|
|
.L1520:
|
|
ldrh r3, [r7, #4]
|
|
cmp r3, #0
|
|
beq .L1501
|
|
movs r2, #0
|
|
add r1, sp, #48
|
|
mov r0, r5
|
|
movs r6, #20
|
|
bl log2phys
|
|
mov r0, r7
|
|
bl get_new_active_ppa
|
|
ldr r2, .L1540+48
|
|
ldr r1, [sp, #4]
|
|
ldr r3, [sp, #4]
|
|
ldrh r2, [r2]
|
|
muls r6, r3, r6
|
|
ldr r3, [r8]
|
|
muls r1, r2, r1
|
|
add r3, r3, r6
|
|
str r0, [r3, #4]
|
|
bic r1, r1, #3
|
|
str r5, [r3, #16]
|
|
str r1, [sp, #36]
|
|
ldr r1, .L1540+52
|
|
ldr r0, [sp, #36]
|
|
ldr r1, [r1]
|
|
add fp, r1, r0
|
|
str r1, [sp, #40]
|
|
str fp, [r3, #12]
|
|
movs r1, #0
|
|
mov r0, fp
|
|
bl ftl_memset
|
|
ldr r3, [sp, #12]
|
|
ldr r2, .L1540+16
|
|
cmp r5, r3
|
|
beq .L1502
|
|
ldr r3, [sp, #28]
|
|
cmp r5, r3
|
|
bne .L1535
|
|
ldrh r2, [r2]
|
|
ldr r3, [sp, #16]
|
|
smulbb r2, r2, r5
|
|
add r4, r10, r3
|
|
movs r3, #0
|
|
str r3, [sp, #24]
|
|
subs r4, r4, r2
|
|
uxth r4, r4
|
|
b .L1505
|
|
.L1502:
|
|
ldrh r4, [r2]
|
|
mov r0, r10
|
|
mov r1, r4
|
|
bl __aeabi_uidivmod
|
|
ldr r3, [sp, #16]
|
|
subs r4, r4, r1
|
|
str r1, [sp, #24]
|
|
cmp r4, r3
|
|
it cs
|
|
movcs r4, r3
|
|
.L1505:
|
|
ldr r3, .L1540+16
|
|
ldrh r3, [r3]
|
|
cmp r4, r3
|
|
ldr r3, [sp, #12]
|
|
bne .L1506
|
|
cmp r5, r3
|
|
ldr r3, [r8]
|
|
add r6, r6, r3
|
|
bne .L1507
|
|
ldr r3, [sp, #20]
|
|
.L1537:
|
|
str r3, [r6, #8]
|
|
b .L1508
|
|
.L1507:
|
|
muls r4, r5, r4
|
|
ldr r3, [sp, #20]
|
|
sub r4, r4, r10
|
|
add r4, r3, r4, lsl #9
|
|
str r4, [r6, #8]
|
|
.L1508:
|
|
ldr r3, .L1540+32
|
|
ldrb r2, [r7, #6] @ zero_extendqisi2
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bcc .L1517
|
|
movw r2, #1143
|
|
ldr r1, .L1540+36
|
|
ldr r0, .L1540+40
|
|
bl printf
|
|
.L1517:
|
|
ldr r2, [sp, #40]
|
|
movw r3, #61589
|
|
ldr r1, [sp, #36]
|
|
strh r3, [r2, r1] @ movhi
|
|
ldr r2, .L1540+56
|
|
str r5, [fp, #8]
|
|
adds r5, r5, #1
|
|
ldr r3, [r2]
|
|
str r3, [fp, #4]
|
|
adds r3, r3, #1
|
|
adds r1, r3, #1
|
|
it eq
|
|
moveq r3, #0
|
|
str r3, [r2]
|
|
ldr r3, [sp, #48]
|
|
str r3, [fp, #12]
|
|
ldrh r3, [r7]
|
|
strh r3, [fp, #2] @ movhi
|
|
ldr r3, [sp, #4]
|
|
adds r3, r3, #1
|
|
str r3, [sp, #4]
|
|
b .L1500
|
|
.L1506:
|
|
cmp r5, r3
|
|
ldr r3, [r8]
|
|
ite eq
|
|
ldreq r2, .L1540+60
|
|
ldrne r2, .L1540+64
|
|
add r3, r3, r6
|
|
ldr r2, [r2]
|
|
str r2, [r3, #8]
|
|
ldr r3, [sp, #48]
|
|
adds r2, r3, #1
|
|
beq .L1511
|
|
str r3, [sp, #56]
|
|
movs r1, #1
|
|
ldr r3, [r8]
|
|
add r0, sp, #52
|
|
str r5, [sp, #68]
|
|
add r3, r3, r6
|
|
ldr r2, [r3, #8]
|
|
ldr r3, [r3, #12]
|
|
str r2, [sp, #60]
|
|
movs r2, #0
|
|
str r3, [sp, #64]
|
|
bl FlashReadPages
|
|
ldr r3, [sp, #52]
|
|
adds r0, r3, #1
|
|
bne .L1512
|
|
ldr r1, .L1540+68
|
|
ldr r0, .L1540+72
|
|
ldr r2, [r1, #72]
|
|
adds r2, r2, #1
|
|
str r2, [r1, #72]
|
|
mov r2, r5
|
|
ldr r1, [fp, #8]
|
|
bl printf
|
|
.L1515:
|
|
ldr r3, [sp, #12]
|
|
lsls r2, r4, #9
|
|
cmp r5, r3
|
|
bne .L1516
|
|
ldr r3, [r8]
|
|
ldr r1, [sp, #20]
|
|
add r6, r6, r3
|
|
ldr r3, [sp, #24]
|
|
ldr r0, [r6, #8]
|
|
add r0, r0, r3, lsl #9
|
|
.L1538:
|
|
bl ftl_memcpy
|
|
b .L1508
|
|
.L1512:
|
|
ldr r1, [fp, #8]
|
|
cmp r5, r1
|
|
beq .L1514
|
|
ldr r2, .L1540+68
|
|
ldr r0, .L1540+76
|
|
ldr r3, [r2, #72]
|
|
adds r3, r3, #1
|
|
str r3, [r2, #72]
|
|
mov r2, r5
|
|
bl printf
|
|
.L1514:
|
|
ldr r3, [fp, #8]
|
|
cmp r5, r3
|
|
beq .L1515
|
|
mov r2, #1128
|
|
ldr r1, .L1540+36
|
|
ldr r0, .L1540+40
|
|
bl printf
|
|
b .L1515
|
|
.L1541:
|
|
.align 2
|
|
.L1540:
|
|
.word .LANCHOR33
|
|
.word .LANCHOR165
|
|
.word .LANCHOR175
|
|
.word .LANCHOR50
|
|
.word .LANCHOR11
|
|
.word .LANCHOR161
|
|
.word .LANCHOR84
|
|
.word .LANCHOR47
|
|
.word .LANCHOR2
|
|
.word .LANCHOR176
|
|
.word .LC1
|
|
.word .LANCHOR104
|
|
.word .LANCHOR23
|
|
.word .LANCHOR114
|
|
.word .LANCHOR82
|
|
.word .LANCHOR108
|
|
.word .LANCHOR109
|
|
.word .LANCHOR134
|
|
.word .LC44
|
|
.word .LC45
|
|
.L1511:
|
|
ldr r3, [r8]
|
|
movs r1, #0
|
|
ldr r2, .L1542
|
|
add r3, r3, r6
|
|
ldrh r2, [r2]
|
|
ldr r0, [r3, #8]
|
|
bl ftl_memset
|
|
b .L1515
|
|
.L1516:
|
|
ldr r3, .L1542+4
|
|
ldrh r1, [r3]
|
|
ldr r3, [r8]
|
|
muls r1, r5, r1
|
|
add r6, r6, r3
|
|
ldr r3, [sp, #20]
|
|
ldr r0, [r6, #8]
|
|
sub r1, r1, r10
|
|
add r1, r3, r1, lsl #9
|
|
b .L1538
|
|
.L1535:
|
|
ldr r3, [r8]
|
|
add r6, r6, r3
|
|
ldrh r3, [r2]
|
|
ldr r2, [sp, #20]
|
|
muls r3, r5, r3
|
|
sub r3, r3, r10
|
|
add r3, r2, r3, lsl #9
|
|
b .L1537
|
|
.L1523:
|
|
ldr r6, .L1542+8
|
|
mov r4, #256
|
|
ldr r7, .L1542+12
|
|
.L1526:
|
|
ldrh r3, [r6]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
bne .L1524
|
|
ldrh r2, [r7]
|
|
cmp r2, r3
|
|
bne .L1524
|
|
movs r0, #0
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
bl FtlGcRefreshBlock
|
|
.L1524:
|
|
ldr r2, .L1542+16
|
|
movs r3, #128
|
|
movs r1, #1
|
|
mov r0, r1
|
|
strh r3, [r2] @ movhi
|
|
ldr r2, .L1542+20
|
|
strh r3, [r2] @ movhi
|
|
bl rk_ftl_garbage_collect
|
|
movs r1, #1
|
|
movs r0, #0
|
|
bl rk_ftl_garbage_collect
|
|
ldrh r3, [r5]
|
|
cmp r3, #2
|
|
bhi .L1525
|
|
subs r4, r4, #1
|
|
bne .L1526
|
|
b .L1525
|
|
.L1529:
|
|
mov r0, #-1
|
|
b .L1493
|
|
.L1543:
|
|
.align 2
|
|
.L1542:
|
|
.word .LANCHOR22
|
|
.word .LANCHOR11
|
|
.word .LANCHOR144
|
|
.word .LANCHOR71
|
|
.word .LANCHOR100
|
|
.word .LANCHOR99
|
|
.size FtlWrite, .-FtlWrite
|
|
.section .text.sftl_gc,"ax",%progbits
|
|
.align 1
|
|
.global sftl_gc
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type sftl_gc, %function
|
|
sftl_gc:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
movs r1, #1
|
|
mov r0, r1
|
|
b rk_ftl_garbage_collect
|
|
.size sftl_gc, .-sftl_gc
|
|
.section .text.FtlLoadSysInfo,"ax",%progbits
|
|
.align 1
|
|
.global FtlLoadSysInfo
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlLoadSysInfo, %function
|
|
FtlLoadSysInfo:
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r1, #0
|
|
ldr r8, .L1575+140
|
|
sub sp, sp, #24
|
|
ldr r7, .L1575
|
|
ldr r3, [r8]
|
|
ldr r4, .L1575+4
|
|
ldr fp, .L1575+144
|
|
ldrh r2, [r7]
|
|
ldr r5, .L1575+8
|
|
str r3, [r4, #8]
|
|
ldr r6, .L1575+12
|
|
ldr r3, [fp]
|
|
lsls r2, r2, #1
|
|
ldr r0, [r5]
|
|
str r3, [r4, #12]
|
|
bl ftl_memset
|
|
ldrh r0, [r6]
|
|
movw r3, #65535
|
|
str r5, [sp, #16]
|
|
cmp r0, r3
|
|
bne .L1546
|
|
.L1557:
|
|
mov r0, #-1
|
|
.L1545:
|
|
add sp, sp, #24
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1546:
|
|
movs r1, #1
|
|
bl FtlGetLastWrittenPage
|
|
ldrsh r10, [r6]
|
|
sxth r5, r0
|
|
adds r0, r0, #1
|
|
strh r0, [r6, #2] @ movhi
|
|
.L1548:
|
|
cmp r5, #0
|
|
bge .L1554
|
|
movw r2, #1474
|
|
ldr r1, .L1575+16
|
|
ldr r0, .L1575+20
|
|
bl printf
|
|
b .L1553
|
|
.L1554:
|
|
orr r3, r5, r10, lsl #10
|
|
movs r2, #1
|
|
mov r1, r2
|
|
ldr r0, .L1575+4
|
|
str r3, [r4, #4]
|
|
ldr r3, [r8]
|
|
str r3, [r4, #8]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #12]
|
|
ldr r3, [r3, #12]
|
|
str r3, [sp, #20]
|
|
cbz r3, .L1549
|
|
ldr r2, [r4]
|
|
adds r2, r2, #1
|
|
beq .L1549
|
|
ldr r2, .L1575+24
|
|
ldr r0, [r4, #8]
|
|
ldrh r1, [r2]
|
|
bl js_hash
|
|
ldr r3, [sp, #20]
|
|
cmp r3, r0
|
|
beq .L1549
|
|
str r0, [sp, #8]
|
|
mov r2, r10
|
|
str r3, [sp, #4]
|
|
ldrh r3, [r6, #4]
|
|
ldr r1, .L1575+16
|
|
ldr r0, .L1575+28
|
|
str r3, [sp]
|
|
mov r3, r5
|
|
bl printf
|
|
cbnz r5, .L1550
|
|
ldrh r3, [r6, #4]
|
|
cmp r10, r3
|
|
beq .L1550
|
|
sxth r10, r3
|
|
ldr r3, .L1575+32
|
|
ldrh r5, [r3]
|
|
.L1552:
|
|
subs r5, r5, #1
|
|
sxth r5, r5
|
|
b .L1548
|
|
.L1550:
|
|
mov r3, #-1
|
|
str r3, [r4]
|
|
.L1549:
|
|
ldr r3, [r4]
|
|
adds r3, r3, #1
|
|
beq .L1552
|
|
ldr r3, [r8]
|
|
ldr r2, .L1575+36
|
|
ldr r3, [r3]
|
|
cmp r3, r2
|
|
bne .L1552
|
|
ldr r3, [fp]
|
|
ldrh r2, [r3]
|
|
movw r3, #61604
|
|
cmp r2, r3
|
|
bne .L1552
|
|
.L1553:
|
|
ldr r2, .L1575+24
|
|
ldrh r3, [r7]
|
|
ldrh r2, [r2]
|
|
adds r3, r3, #24
|
|
cmp r2, r3, lsl #1
|
|
bcs .L1556
|
|
movw r2, #1476
|
|
ldr r1, .L1575+16
|
|
ldr r0, .L1575+20
|
|
bl printf
|
|
.L1556:
|
|
ldr r5, .L1575+40
|
|
movs r2, #48
|
|
ldr r1, [r4, #8]
|
|
mov r0, r5
|
|
bl ftl_memcpy
|
|
ldrh r2, [r7]
|
|
ldr r1, [r4, #8]
|
|
mov r4, r5
|
|
ldr r3, [sp, #16]
|
|
lsls r2, r2, #1
|
|
adds r1, r1, #48
|
|
ldr r0, [r3]
|
|
bl ftl_memcpy
|
|
ldr r2, [r5]
|
|
ldr r3, .L1575+36
|
|
cmp r2, r3
|
|
bne .L1557
|
|
ldr r3, .L1575+44
|
|
ldrb r2, [r4, #10] @ zero_extendqisi2
|
|
ldrh r5, [r5, #8]
|
|
ldrh r3, [r3]
|
|
strh r5, [r6, #6] @ movhi
|
|
cmp r2, r3
|
|
bne .L1557
|
|
ldr r3, .L1575+48
|
|
ldr r2, .L1575+52
|
|
str r5, [r3]
|
|
ldr r3, .L1575+56
|
|
ldrh r3, [r3]
|
|
muls r3, r5, r3
|
|
str r3, [r2]
|
|
ldr r2, .L1575+60
|
|
ldrh r2, [r2]
|
|
muls r3, r2, r3
|
|
ldr r2, .L1575+64
|
|
str r3, [r2]
|
|
ldr r3, .L1575+68
|
|
ldr r6, [r3]
|
|
ldr r3, .L1575+72
|
|
ldrh r0, [r3, #6]
|
|
ldr r3, .L1575+76
|
|
subs r0, r6, r0
|
|
ldrh r1, [r3]
|
|
subs r0, r0, r5
|
|
bl __aeabi_uidiv
|
|
ldr r3, .L1575+80
|
|
cmp r5, r6
|
|
strh r0, [r3] @ movhi
|
|
bls .L1558
|
|
movw r2, #1498
|
|
ldr r1, .L1575+16
|
|
ldr r0, .L1575+20
|
|
bl printf
|
|
.L1558:
|
|
ldrh r2, [r4, #16]
|
|
ldr r3, .L1575+84
|
|
ldrh ip, [r4, #14]
|
|
ldr r7, .L1575+88
|
|
lsrs r1, r2, #6
|
|
and r2, r2, #63
|
|
strb r2, [r3, #6]
|
|
ldrb r2, [r4, #11] @ zero_extendqisi2
|
|
strh r1, [r3, #2] @ movhi
|
|
ldr r1, .L1575+92
|
|
strb r2, [r3, #8]
|
|
ldrh r2, [r4, #18]
|
|
strh ip, [r3] @ movhi
|
|
movw r3, #65535
|
|
strh r3, [r7] @ movhi
|
|
movs r3, #0
|
|
strh r2, [r1] @ movhi
|
|
ldrh r2, [r4, #20]
|
|
strh r3, [r7, #2] @ movhi
|
|
strb r3, [r7, #6]
|
|
strb r3, [r7, #8]
|
|
lsrs r5, r2, #6
|
|
and r2, r2, #63
|
|
strb r2, [r1, #6]
|
|
ldrb r2, [r4, #12] @ zero_extendqisi2
|
|
strh r5, [r1, #2] @ movhi
|
|
ldrh r5, [r4, #22]
|
|
strb r2, [r1, #8]
|
|
ldr r2, .L1575+96
|
|
strh r5, [r2] @ movhi
|
|
ldrh r5, [r4, #24]
|
|
lsrs r6, r5, #6
|
|
and r5, r5, #63
|
|
strb r5, [r2, #6]
|
|
ldrb r5, [r4, #13] @ zero_extendqisi2
|
|
strh r6, [r2, #2] @ movhi
|
|
ldr r6, [r4, #32]
|
|
strb r5, [r2, #8]
|
|
ldr r5, .L1575+100
|
|
str r3, [r5]
|
|
ldr r5, .L1575+104
|
|
str r3, [r5]
|
|
ldr r5, .L1575+108
|
|
str r3, [r5]
|
|
ldr r5, .L1575+112
|
|
str r3, [r5]
|
|
ldr r5, .L1575+116
|
|
str r6, [r5]
|
|
mov r6, r1
|
|
ldr r5, .L1575+120
|
|
str r3, [r5]
|
|
ldr r5, .L1575+124
|
|
str r3, [r5]
|
|
ldr r5, .L1575+128
|
|
ldr lr, [r4, #40]
|
|
str r3, [r5]
|
|
ldr r3, .L1575+132
|
|
ldr r5, [r3]
|
|
cmp lr, r5
|
|
mov r5, r2
|
|
it hi
|
|
strhi lr, [r3]
|
|
ldr r3, .L1575+136
|
|
ldr r2, [r4, #36]
|
|
ldr r1, [r3]
|
|
cmp r2, r1
|
|
it hi
|
|
strhi r2, [r3]
|
|
movw r3, #65535
|
|
cmp ip, r3
|
|
beq .L1561
|
|
ldr r0, .L1575+84
|
|
bl make_superblock
|
|
.L1561:
|
|
ldrh r2, [r6]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L1562
|
|
ldr r0, .L1575+92
|
|
bl make_superblock
|
|
.L1562:
|
|
ldrh r2, [r5]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L1563
|
|
ldr r0, .L1575+96
|
|
bl make_superblock
|
|
.L1563:
|
|
ldrh r2, [r7]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L1564
|
|
ldr r0, .L1575+88
|
|
bl make_superblock
|
|
.L1564:
|
|
movs r0, #0
|
|
b .L1545
|
|
.L1576:
|
|
.align 2
|
|
.L1575:
|
|
.word .LANCHOR4
|
|
.word .LANCHOR137
|
|
.word .LANCHOR41
|
|
.word .LANCHOR138
|
|
.word .LANCHOR177
|
|
.word .LC1
|
|
.word .LANCHOR22
|
|
.word .LC46
|
|
.word .LANCHOR19
|
|
.word 1179929683
|
|
.word .LANCHOR38
|
|
.word .LANCHOR9
|
|
.word .LANCHOR178
|
|
.word .LANCHOR151
|
|
.word .LANCHOR18
|
|
.word .LANCHOR11
|
|
.word .LANCHOR33
|
|
.word .LANCHOR6
|
|
.word .LANCHOR36
|
|
.word .LANCHOR2
|
|
.word .LANCHOR170
|
|
.word .LANCHOR50
|
|
.word .LANCHOR144
|
|
.word .LANCHOR51
|
|
.word .LANCHOR52
|
|
.word .LANCHOR83
|
|
.word .LANCHOR84
|
|
.word .LANCHOR88
|
|
.word .LANCHOR87
|
|
.word .LANCHOR89
|
|
.word .LANCHOR90
|
|
.word .LANCHOR91
|
|
.word .LANCHOR86
|
|
.word .LANCHOR81
|
|
.word .LANCHOR82
|
|
.word .LANCHOR105
|
|
.word .LANCHOR113
|
|
.size FtlLoadSysInfo, .-FtlLoadSysInfo
|
|
.section .text.FtlMapTblRecovery,"ax",%progbits
|
|
.align 1
|
|
.global FtlMapTblRecovery
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlMapTblRecovery, %function
|
|
FtlMapTblRecovery:
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, [r0, #24]
|
|
movs r1, #0
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
sub sp, sp, #40
|
|
mov r4, r0
|
|
ldr r8, [r0, #12]
|
|
movs r7, #0
|
|
str r3, [sp, #8]
|
|
ldr r3, [r0, #16]
|
|
ldr r6, .L1618
|
|
str r3, [sp, #24]
|
|
ldrh r3, [r0, #6]
|
|
str r3, [sp, #12]
|
|
ldrh r3, [r0, #8]
|
|
ldr r0, [sp, #8]
|
|
str r3, [sp, #16]
|
|
ldr r3, [sp, #12]
|
|
lsls r2, r3, #2
|
|
bl ftl_memset
|
|
ldr r3, .L1618+4
|
|
str r7, [r4, #32]
|
|
str r7, [r4, #28]
|
|
ldr r2, [r3]
|
|
str r3, [sp, #20]
|
|
str r2, [r6, #8]
|
|
ldr r2, .L1618+8
|
|
ldr fp, [r2]
|
|
movw r2, #65535
|
|
str fp, [r6, #12]
|
|
strh r2, [r4] @ movhi
|
|
strh r2, [r4, #2] @ movhi
|
|
movs r2, #1
|
|
str r2, [r4, #36]
|
|
.L1578:
|
|
ldr r3, [sp, #16]
|
|
sxth r5, r7
|
|
cmp r5, r3
|
|
bge .L1597
|
|
ldr r3, [sp, #16]
|
|
subs r3, r3, #1
|
|
cmp r5, r3
|
|
bne .L1579
|
|
movs r1, #1
|
|
ldrh r0, [r8, r5, lsl #1]
|
|
bl FtlGetLastWrittenPage
|
|
sxth r3, r0
|
|
ldr r6, .L1618
|
|
add r10, r8, r5, lsl #1
|
|
strh r7, [r4] @ movhi
|
|
str r3, [sp, #16]
|
|
movs r7, #0
|
|
ldr r3, [sp, #24]
|
|
adds r0, r0, #1
|
|
strh r0, [r4, #2] @ movhi
|
|
ldr r3, [r3, r5, lsl #2]
|
|
str r3, [r4, #28]
|
|
.L1580:
|
|
ldr r3, [sp, #16]
|
|
sxth r8, r7
|
|
cmp r8, r3
|
|
ble .L1583
|
|
.L1597:
|
|
mov r0, r4
|
|
bl ftl_free_no_use_map_blk
|
|
ldr r3, .L1618+12
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bne .L1585
|
|
mov r0, r4
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L1585:
|
|
mov r0, r4
|
|
bl ftl_map_blk_gc
|
|
mov r0, r4
|
|
bl ftl_map_blk_gc
|
|
movs r0, #0
|
|
add sp, sp, #40
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1583:
|
|
ldrh r2, [r10]
|
|
ldr r0, .L1618
|
|
orr r2, r8, r2, lsl #10
|
|
str r2, [r6, #4]
|
|
movs r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [r6, #12]
|
|
ldr r2, [r2, #12]
|
|
str r2, [sp, #20]
|
|
cbz r2, .L1581
|
|
ldr r1, [r6]
|
|
adds r1, r1, #1
|
|
beq .L1581
|
|
ldr r3, .L1618+16
|
|
ldr r0, [r6, #8]
|
|
ldrh r1, [r3]
|
|
bl js_hash
|
|
ldr r2, [sp, #20]
|
|
cmp r2, r0
|
|
beq .L1581
|
|
str r0, [sp, #4]
|
|
mov r3, r8
|
|
str r2, [sp]
|
|
mov r2, r5
|
|
ldr r1, .L1618+20
|
|
ldr r0, .L1618+24
|
|
bl printf
|
|
mov r3, #-1
|
|
str r3, [r6]
|
|
.L1581:
|
|
ldr r3, [r6]
|
|
adds r3, r3, #1
|
|
beq .L1582
|
|
ldrh r3, [fp, #8]
|
|
ldr r2, [sp, #12]
|
|
cmp r2, r3
|
|
bls .L1582
|
|
ldrh r1, [fp]
|
|
ldrh r2, [r4, #4]
|
|
cmp r1, r2
|
|
ittt eq
|
|
ldreq r2, [r6, #4]
|
|
ldreq r1, [sp, #8]
|
|
streq r2, [r1, r3, lsl #2]
|
|
.L1582:
|
|
adds r7, r7, #1
|
|
b .L1580
|
|
.L1579:
|
|
ldr r3, [sp, #20]
|
|
ldr r10, .L1618+12
|
|
ldrh r2, [r8, r5, lsl #1]
|
|
ldr r3, [r3]
|
|
ldr r0, .L1618
|
|
str r3, [r6, #8]
|
|
add r3, r8, r5, lsl #1
|
|
str r3, [sp, #28]
|
|
ldrh r3, [r10]
|
|
subs r3, r3, #1
|
|
orr r3, r3, r2, lsl #10
|
|
movs r2, #1
|
|
mov r1, r2
|
|
str r3, [r6, #4]
|
|
bl FlashReadPages
|
|
ldr r3, [r6]
|
|
adds r3, r3, #1
|
|
beq .L1599
|
|
ldrh r2, [fp]
|
|
ldrh r3, [r4, #4]
|
|
cmp r2, r3
|
|
bne .L1599
|
|
ldrh r2, [fp, #8]
|
|
movw r3, #64245
|
|
cmp r2, r3
|
|
beq .L1587
|
|
.L1599:
|
|
mov r10, #0
|
|
.L1588:
|
|
ldr r2, .L1618+12
|
|
sxth r3, r10
|
|
ldrh r2, [r2]
|
|
cmp r3, r2
|
|
bge .L1595
|
|
ldr r2, [sp, #28]
|
|
ldr r0, .L1618
|
|
str r3, [sp, #36]
|
|
ldrh r2, [r2]
|
|
orr r2, r3, r2, lsl #10
|
|
str r2, [r6, #4]
|
|
movs r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [r6, #12]
|
|
ldr r2, [r2, #12]
|
|
str r2, [sp, #32]
|
|
cbz r2, .L1592
|
|
ldr r1, [r6]
|
|
adds r1, r1, #1
|
|
beq .L1592
|
|
ldr r1, .L1618+16
|
|
ldr r0, [r6, #8]
|
|
ldrh r1, [r1]
|
|
bl js_hash
|
|
ldr r2, [sp, #32]
|
|
cmp r2, r0
|
|
beq .L1592
|
|
str r0, [sp, #4]
|
|
str r2, [sp]
|
|
mov r2, r5
|
|
ldr r3, [sp, #36]
|
|
ldr r1, .L1618+20
|
|
ldr r0, .L1618+28
|
|
bl printf
|
|
mov r3, #-1
|
|
str r3, [r6]
|
|
.L1592:
|
|
ldr r3, [r6]
|
|
adds r3, r3, #1
|
|
beq .L1593
|
|
ldrh r3, [fp, #8]
|
|
ldr r2, [sp, #12]
|
|
cmp r2, r3
|
|
bls .L1593
|
|
ldrh r1, [fp]
|
|
ldrh r2, [r4, #4]
|
|
cmp r1, r2
|
|
ittt eq
|
|
ldreq r2, [r6, #4]
|
|
ldreq r1, [sp, #8]
|
|
streq r2, [r1, r3, lsl #2]
|
|
.L1593:
|
|
add r10, r10, #1
|
|
b .L1588
|
|
.L1587:
|
|
ldr r3, [sp, #20]
|
|
movs r1, #0
|
|
ldrh r2, [r10]
|
|
ldr r0, [r3]
|
|
add lr, r2, #-1
|
|
.L1589:
|
|
sxth r3, r1
|
|
cmp r3, lr
|
|
blt .L1591
|
|
.L1595:
|
|
adds r7, r7, #1
|
|
b .L1578
|
|
.L1591:
|
|
lsls r5, r3, #3
|
|
ldr r3, [r0, r3, lsl #3]
|
|
ldr r2, [sp, #12]
|
|
uxth ip, r3
|
|
cmp r2, ip
|
|
bls .L1590
|
|
add r5, r5, r0
|
|
ldr r2, [sp, #8]
|
|
ldr r5, [r5, #4]
|
|
str r5, [r2, ip, lsl #2]
|
|
.L1590:
|
|
adds r1, r1, #1
|
|
b .L1589
|
|
.L1619:
|
|
.align 2
|
|
.L1618:
|
|
.word .LANCHOR137
|
|
.word .LANCHOR105
|
|
.word .LANCHOR113
|
|
.word .LANCHOR19
|
|
.word .LANCHOR22
|
|
.word .LANCHOR179
|
|
.word .LC47
|
|
.word .LC48
|
|
.size FtlMapTblRecovery, .-FtlMapTblRecovery
|
|
.section .text.FtlLoadVonderInfo,"ax",%progbits
|
|
.align 1
|
|
.global FtlLoadVonderInfo
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlLoadVonderInfo, %function
|
|
FtlLoadVonderInfo:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, lr}
|
|
ldr r3, .L1621
|
|
ldr r0, .L1621+4
|
|
ldrh r3, [r3]
|
|
strh r3, [r0, #10] @ movhi
|
|
movw r3, #61574
|
|
strh r3, [r0, #4] @ movhi
|
|
ldr r3, .L1621+8
|
|
ldrh r3, [r3]
|
|
strh r3, [r0, #8] @ movhi
|
|
ldr r3, .L1621+12
|
|
ldrh r3, [r3]
|
|
strh r3, [r0, #6] @ movhi
|
|
ldr r3, .L1621+16
|
|
ldr r3, [r3]
|
|
str r3, [r0, #12]
|
|
ldr r3, .L1621+20
|
|
ldr r3, [r3]
|
|
str r3, [r0, #16]
|
|
ldr r3, .L1621+24
|
|
ldr r3, [r3]
|
|
str r3, [r0, #20]
|
|
ldr r3, .L1621+28
|
|
ldr r3, [r3]
|
|
str r3, [r0, #24]
|
|
bl FtlMapTblRecovery
|
|
movs r0, #0
|
|
pop {r3, pc}
|
|
.L1622:
|
|
.align 2
|
|
.L1621:
|
|
.word .LANCHOR26
|
|
.word .LANCHOR160
|
|
.word .LANCHOR34
|
|
.word .LANCHOR27
|
|
.word .LANCHOR35
|
|
.word .LANCHOR121
|
|
.word .LANCHOR120
|
|
.word .LANCHOR122
|
|
.size FtlLoadVonderInfo, .-FtlLoadVonderInfo
|
|
.section .text.FtlLoadMapInfo,"ax",%progbits
|
|
.align 1
|
|
.global FtlLoadMapInfo
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlLoadMapInfo, %function
|
|
FtlLoadMapInfo:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, lr}
|
|
bl FtlL2PDataInit
|
|
ldr r0, .L1624
|
|
bl FtlMapTblRecovery
|
|
movs r0, #0
|
|
pop {r3, pc}
|
|
.L1625:
|
|
.align 2
|
|
.L1624:
|
|
.word .LANCHOR128
|
|
.size FtlLoadMapInfo, .-FtlLoadMapInfo
|
|
.section .text.FtlSysBlkInit,"ax",%progbits
|
|
.align 1
|
|
.global FtlSysBlkInit
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlSysBlkInit, %function
|
|
FtlSysBlkInit:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
movs r3, #0
|
|
ldr r4, .L1639
|
|
strh r3, [r4] @ movhi
|
|
ldr r3, .L1639+4
|
|
ldrh r0, [r3]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlScanSysBlk
|
|
ldr r3, .L1639+8
|
|
ldrh r2, [r3]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L1627
|
|
.L1629:
|
|
mov r6, #-1
|
|
.L1626:
|
|
mov r0, r6
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.L1627:
|
|
bl FtlLoadSysInfo
|
|
mov r6, r0
|
|
cmp r0, #0
|
|
bne .L1629
|
|
bl FtlLoadMapInfo
|
|
bl FtlLoadVonderInfo
|
|
bl Ftl_load_ext_data
|
|
bl FtlLoadEctTbl
|
|
bl FtlFreeSysBLkSort
|
|
bl SupperBlkListInit
|
|
bl FtlPowerLostRecovery
|
|
movs r0, #1
|
|
bl FtlUpdateVaildLpn
|
|
ldr r3, .L1639+12
|
|
movs r0, #12
|
|
ldrh r1, [r3]
|
|
ldr r3, .L1639+16
|
|
ldr r2, [r3]
|
|
mov r3, r6
|
|
.L1630:
|
|
cmp r3, r1
|
|
bge .L1635
|
|
mla r5, r0, r3, r2
|
|
ldr r5, [r5, #4]
|
|
cmp r5, #0
|
|
bge .L1631
|
|
.L1635:
|
|
ldr r0, .L1639+20
|
|
cmp r3, r1
|
|
ldr r2, [r0]
|
|
add r2, r2, #32
|
|
str r2, [r0]
|
|
bge .L1637
|
|
.L1632:
|
|
ldr r5, .L1639+24
|
|
ldr r4, .L1639+28
|
|
mov r0, r5
|
|
bl FtlSuperblockPowerLostFix
|
|
mov r0, r4
|
|
bl FtlSuperblockPowerLostFix
|
|
ldr r3, .L1639+32
|
|
ldrh r1, [r5]
|
|
ldrh r0, [r5, #4]
|
|
ldr r2, [r3]
|
|
ldrh r3, [r2, r1, lsl #1]
|
|
subs r3, r3, r0
|
|
ldr r0, .L1639+36
|
|
strh r3, [r2, r1, lsl #1] @ movhi
|
|
ldrh r7, [r4, #4]
|
|
ldrh r3, [r0]
|
|
strh r3, [r5, #2] @ movhi
|
|
movs r3, #0
|
|
strb r3, [r5, #6]
|
|
strh r3, [r5, #4] @ movhi
|
|
ldrh r5, [r4]
|
|
ldrh r1, [r2, r5, lsl #1]
|
|
subs r1, r1, r7
|
|
strh r1, [r2, r5, lsl #1] @ movhi
|
|
ldrh r2, [r0]
|
|
strb r3, [r4, #6]
|
|
strh r3, [r4, #4] @ movhi
|
|
strh r2, [r4, #2] @ movhi
|
|
ldr r2, .L1639+40
|
|
ldrh r3, [r2, #30]
|
|
adds r3, r3, #1
|
|
strh r3, [r2, #30] @ movhi
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
.L1638:
|
|
bl FtlVpcTblFlush
|
|
b .L1626
|
|
.L1631:
|
|
adds r3, r3, #1
|
|
b .L1630
|
|
.L1637:
|
|
ldrh r3, [r4]
|
|
cmp r3, #0
|
|
bne .L1632
|
|
bl l2p_flush
|
|
b .L1638
|
|
.L1640:
|
|
.align 2
|
|
.L1639:
|
|
.word .LANCHOR155
|
|
.word .LANCHOR3
|
|
.word .LANCHOR138
|
|
.word .LANCHOR32
|
|
.word .LANCHOR54
|
|
.word .LANCHOR82
|
|
.word .LANCHOR50
|
|
.word .LANCHOR51
|
|
.word .LANCHOR41
|
|
.word .LANCHOR18
|
|
.word .LANCHOR38
|
|
.size FtlSysBlkInit, .-FtlSysBlkInit
|
|
.section .text.ftl_low_format,"ax",%progbits
|
|
.align 1
|
|
.global ftl_low_format
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type ftl_low_format, %function
|
|
ftl_low_format:
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r10, fp, lr}
|
|
movs r3, #0
|
|
ldr r2, .L1665
|
|
ldr r4, .L1665+4
|
|
str r3, [r2]
|
|
ldr r5, .L1665+8
|
|
ldr r2, .L1665+12
|
|
mov r8, r4
|
|
ldrh r0, [r4]
|
|
str r3, [r5]
|
|
str r3, [r2]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlLoadBbt
|
|
cbz r0, .L1642
|
|
bl FtlMakeBbt
|
|
.L1642:
|
|
ldr r3, .L1665+16
|
|
ldr r2, .L1665+20
|
|
ldr r7, .L1665+24
|
|
ldrh r1, [r3]
|
|
ldr r4, [r2]
|
|
ldr r2, .L1665+28
|
|
str r3, [sp, #4]
|
|
lsls r1, r1, #7
|
|
ldr r6, [r2]
|
|
movs r2, #0
|
|
.L1643:
|
|
uxth r3, r2
|
|
adds r2, r2, #1
|
|
cmp r3, r1
|
|
blt .L1644
|
|
ldr r7, .L1665+32
|
|
mov r10, #0
|
|
ldr r6, .L1665+36
|
|
ldrh r4, [r7]
|
|
mov fp, r6
|
|
.L1645:
|
|
ldrh r3, [r6]
|
|
cmp r3, r4
|
|
bhi .L1646
|
|
ldr r6, .L1665+40
|
|
sub r3, r10, #2
|
|
ldrh r1, [r6]
|
|
cmp r3, r1, lsl #1
|
|
bgt .L1647
|
|
.L1651:
|
|
movs r4, #0
|
|
mov r8, r4
|
|
.L1648:
|
|
ldrh r3, [r7]
|
|
uxth r0, r4
|
|
adds r4, r4, #1
|
|
cmp r3, r0
|
|
bhi .L1652
|
|
ldrh r2, [fp]
|
|
ldr r3, .L1665+44
|
|
ldrh r4, [r6]
|
|
ldr r6, .L1665+48
|
|
str r2, [r3]
|
|
ldr r3, .L1665+52
|
|
mov r1, r4
|
|
ldr r7, .L1665+56
|
|
ldr r2, [r3]
|
|
mov r0, r2
|
|
str r2, [sp, #12]
|
|
bl __aeabi_uidiv
|
|
ubfx r10, r0, #5, #16
|
|
mov r3, r0
|
|
add r1, r10, #36
|
|
str r0, [r7]
|
|
strh r1, [r6] @ movhi
|
|
movs r1, #24
|
|
muls r1, r4, r1
|
|
cmp r8, r1
|
|
ble .L1653
|
|
ldr r2, [sp, #12]
|
|
mov r1, r4
|
|
str r0, [sp, #8]
|
|
sub r0, r2, r8
|
|
bl __aeabi_uidiv
|
|
ldr r3, [sp, #8]
|
|
str r0, [r7]
|
|
lsrs r0, r0, #5
|
|
adds r0, r0, #24
|
|
strh r0, [r6] @ movhi
|
|
.L1653:
|
|
ldr r2, .L1665+60
|
|
ldrh r2, [r2]
|
|
cbz r2, .L1655
|
|
ldrh r1, [r6]
|
|
add r1, r1, r2, lsr #1
|
|
strh r1, [r6] @ movhi
|
|
mul r1, r4, r2
|
|
cmp r8, r1
|
|
itttt lt
|
|
addlt r2, r2, #32
|
|
strlt r3, [r7]
|
|
addlt r2, r2, r10
|
|
strhlt r2, [r6] @ movhi
|
|
.L1655:
|
|
ldrh r2, [r6]
|
|
ldr r3, [r7]
|
|
ldr r6, .L1665+64
|
|
subs r3, r3, r2
|
|
muls r4, r3, r4
|
|
ldr r3, .L1665+68
|
|
ldrh r3, [r3]
|
|
str r4, [r6]
|
|
muls r4, r3, r4
|
|
ldr r3, [sp, #4]
|
|
ldrh r3, [r3]
|
|
str r4, [r7]
|
|
ldr r7, .L1665+72
|
|
muls r4, r3, r4
|
|
ldr r3, .L1665+76
|
|
str r4, [r3]
|
|
bl FtlBbmTblFlush
|
|
ldrh r2, [fp]
|
|
movs r1, #0
|
|
ldr r0, [r7]
|
|
ldr r4, .L1665+80
|
|
lsls r2, r2, #1
|
|
mov r10, r4
|
|
bl ftl_memset
|
|
ldr r2, .L1665+84
|
|
movs r3, #0
|
|
movw r1, #65535
|
|
strh r3, [r4, #2] @ movhi
|
|
mov r8, r1
|
|
strb r3, [r4, #6]
|
|
str r3, [r2]
|
|
ldr r2, .L1665+88
|
|
strh r3, [r4] @ movhi
|
|
strh r3, [r2, #2] @ movhi
|
|
strb r3, [r2, #6]
|
|
strb r3, [r2, #8]
|
|
movs r3, #1
|
|
strh r1, [r2] @ movhi
|
|
strb r3, [r4, #8]
|
|
.L1657:
|
|
mov r0, r10
|
|
bl make_superblock
|
|
ldrb r3, [r4, #7] @ zero_extendqisi2
|
|
ldrh r2, [r4]
|
|
cmp r3, #0
|
|
bne .L1658
|
|
ldr r3, [r7]
|
|
strh r8, [r3, r2, lsl #1] @ movhi
|
|
ldrh r3, [r4]
|
|
adds r3, r3, #1
|
|
strh r3, [r4] @ movhi
|
|
b .L1657
|
|
.L1644:
|
|
mvns r0, r3
|
|
orr r0, r3, r0, lsl #16
|
|
str r0, [r4, r3, lsl #2]
|
|
str r7, [r6, r3, lsl #2]
|
|
b .L1643
|
|
.L1646:
|
|
mov r0, r4
|
|
movs r1, #1
|
|
bl FtlLowFormatEraseBlock
|
|
adds r4, r4, #1
|
|
add r10, r10, r0
|
|
uxth r10, r10
|
|
uxth r4, r4
|
|
b .L1645
|
|
.L1647:
|
|
mov r0, r10
|
|
bl __aeabi_uidiv
|
|
ldr r3, .L1665+92
|
|
ldr r3, [r3]
|
|
add r0, r0, r3
|
|
uxth r0, r0
|
|
bl FtlSysBlkNumInit
|
|
ldrh r0, [r8]
|
|
bl FtlFreeSysBlkQueueInit
|
|
ldrh r4, [r7]
|
|
.L1649:
|
|
ldrh r3, [fp]
|
|
cmp r3, r4
|
|
bls .L1651
|
|
mov r0, r4
|
|
movs r1, #1
|
|
adds r4, r4, #1
|
|
bl FtlLowFormatEraseBlock
|
|
uxth r4, r4
|
|
b .L1649
|
|
.L1652:
|
|
movs r1, #0
|
|
bl FtlLowFormatEraseBlock
|
|
add r8, r8, r0
|
|
uxth r8, r8
|
|
b .L1648
|
|
.L1658:
|
|
ldr r3, [r5]
|
|
movw r8, #65535
|
|
ldrh r1, [r4, #4]
|
|
str r3, [r4, #12]
|
|
adds r3, r3, #1
|
|
str r3, [r5]
|
|
ldr r3, [r7]
|
|
strh r1, [r3, r2, lsl #1] @ movhi
|
|
movs r2, #0
|
|
ldr r3, .L1665+96
|
|
strh r2, [r3, #2] @ movhi
|
|
mov r10, r3
|
|
strb r2, [r3, #6]
|
|
ldrh r2, [r4]
|
|
mov r4, r3
|
|
adds r2, r2, #1
|
|
strh r2, [r3] @ movhi
|
|
movs r2, #1
|
|
strb r2, [r3, #8]
|
|
.L1659:
|
|
mov r0, r10
|
|
bl make_superblock
|
|
ldrb r3, [r4, #7] @ zero_extendqisi2
|
|
ldrh r2, [r4]
|
|
cbnz r3, .L1660
|
|
ldr r3, [r7]
|
|
strh r8, [r3, r2, lsl #1] @ movhi
|
|
ldrh r3, [r4]
|
|
adds r3, r3, #1
|
|
strh r3, [r4] @ movhi
|
|
b .L1659
|
|
.L1660:
|
|
ldr r3, [r5]
|
|
ldrh r1, [r4, #4]
|
|
str r3, [r4, #12]
|
|
adds r3, r3, #1
|
|
str r3, [r5]
|
|
movw r4, #65535
|
|
ldr r3, [r7]
|
|
strh r1, [r3, r2, lsl #1] @ movhi
|
|
ldr r3, .L1665+100
|
|
strh r4, [r3] @ movhi
|
|
bl FtlFreeSysBlkQueueOut
|
|
ldr r3, .L1665+104
|
|
movs r2, #0
|
|
strh r2, [r3, #2] @ movhi
|
|
ldr r2, [r6]
|
|
strh r0, [r3] @ movhi
|
|
strh r4, [r3, #4] @ movhi
|
|
strh r2, [r3, #6] @ movhi
|
|
ldr r2, [r5]
|
|
str r2, [r3, #8]
|
|
adds r2, r2, #1
|
|
str r2, [r5]
|
|
bl FtlVpcTblFlush
|
|
bl FtlSysBlkInit
|
|
cbnz r0, .L1661
|
|
ldr r3, .L1665+108
|
|
movs r2, #1
|
|
str r2, [r3]
|
|
.L1661:
|
|
movs r0, #0
|
|
add sp, sp, #16
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1666:
|
|
.align 2
|
|
.L1665:
|
|
.word .LANCHOR82
|
|
.word .LANCHOR3
|
|
.word .LANCHOR81
|
|
.word .LANCHOR142
|
|
.word .LANCHOR11
|
|
.word .LANCHOR108
|
|
.word 168778952
|
|
.word .LANCHOR109
|
|
.word .LANCHOR4
|
|
.word .LANCHOR5
|
|
.word .LANCHOR2
|
|
.word .LANCHOR98
|
|
.word .LANCHOR170
|
|
.word .LANCHOR6
|
|
.word .LANCHOR151
|
|
.word .LANCHOR14
|
|
.word .LANCHOR178
|
|
.word .LANCHOR18
|
|
.word .LANCHOR41
|
|
.word .LANCHOR33
|
|
.word .LANCHOR50
|
|
.word .LANCHOR58
|
|
.word .LANCHOR144
|
|
.word .LANCHOR30
|
|
.word .LANCHOR51
|
|
.word .LANCHOR52
|
|
.word .LANCHOR138
|
|
.word .LANCHOR165
|
|
.size ftl_low_format, .-ftl_low_format
|
|
.section .text.sftl_init,"ax",%progbits
|
|
.align 1
|
|
.global sftl_init
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type sftl_init, %function
|
|
sftl_init:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
mov r3, #-1
|
|
ldr r4, .L1679
|
|
movs r6, #0
|
|
ldr r1, .L1679+4
|
|
ldr r0, .L1679+8
|
|
str r3, [r4]
|
|
bl printf
|
|
ldr r0, .L1679+12
|
|
bl FtlConstantsInit
|
|
ldr r5, .L1679+16
|
|
bl FtlMemInit
|
|
bl FtlVariablesInit
|
|
ldr r3, .L1679+20
|
|
ldrh r0, [r3]
|
|
bl FtlFreeSysBlkQueueInit
|
|
.L1668:
|
|
bl FtlLoadBbt
|
|
cbz r0, .L1669
|
|
.L1678:
|
|
ldr r3, [r5]
|
|
cmp r3, #1
|
|
bne .L1668
|
|
str r6, [r5]
|
|
bl ftl_low_format
|
|
b .L1668
|
|
.L1669:
|
|
bl FtlSysBlkInit
|
|
cmp r0, #0
|
|
bne .L1678
|
|
movs r3, #1
|
|
str r3, [r4]
|
|
pop {r4, r5, r6, pc}
|
|
.L1680:
|
|
.align 2
|
|
.L1679:
|
|
.word .LANCHOR165
|
|
.word .LC49
|
|
.word .LC38
|
|
.word .LANCHOR0
|
|
.word .LANCHOR180
|
|
.word .LANCHOR3
|
|
.size sftl_init, .-sftl_init
|
|
.section .text.FtlWriteToIDB,"ax",%progbits
|
|
.align 1
|
|
.global FtlWriteToIDB
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type FtlWriteToIDB, %function
|
|
FtlWriteToIDB:
|
|
@ args = 0, pretend = 0, frame = 96
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r10, fp, lr}
|
|
adds r7, r1, r0
|
|
add r8, r7, #-1
|
|
sub sp, sp, #104
|
|
cmp r8, #63
|
|
mov r4, r0
|
|
mov r5, r1
|
|
mov r6, r2
|
|
ldr r10, .L1749+16
|
|
bls .L1682
|
|
cmp r0, #576
|
|
bcc .L1683
|
|
.L1682:
|
|
ldr r3, [r10]
|
|
cbnz r3, .L1684
|
|
.L1748:
|
|
movs r4, #0
|
|
b .L1681
|
|
.L1684:
|
|
ldr r3, .L1749
|
|
ldr fp, [r3]
|
|
ldr r3, .L1749+4
|
|
ldr r2, [fp]
|
|
cmp r2, r3
|
|
bne .L1686
|
|
ldr r3, .L1749+8
|
|
add r0, fp, #260096
|
|
movs r2, #0
|
|
ldrh r1, [r3, #10]
|
|
movw r3, #65023
|
|
.L1690:
|
|
ldr r4, [r0, #-4]!
|
|
cbnz r4, .L1687
|
|
ldr r4, [fp, r2, lsl #2]
|
|
adds r2, r2, #1
|
|
cmp r2, #4096
|
|
add r3, r3, #-1
|
|
it hi
|
|
movhi r2, #0
|
|
cmp r3, #4096
|
|
str r4, [r0, #2048]
|
|
bne .L1690
|
|
mov r3, #512
|
|
b .L1745
|
|
.L1687:
|
|
adds r3, r3, #127
|
|
lsrs r3, r3, #7
|
|
.L1745:
|
|
str r3, [sp, #8]
|
|
lsls r1, r1, #2
|
|
ldr r3, [sp, #8]
|
|
uxth r1, r1
|
|
adds r0, r3, #4
|
|
bl __aeabi_uidiv
|
|
adds r3, r0, #1
|
|
ldr r1, [sp, #8]
|
|
mov r2, r3
|
|
ldr r0, .L1749+12
|
|
str r3, [sp, #16]
|
|
bl printf
|
|
ldr r3, [sp, #8]
|
|
lsls r3, r3, #7
|
|
str r3, [sp, #32]
|
|
movs r3, #0
|
|
str r3, [sp, #20]
|
|
.L1747:
|
|
str r3, [sp, #12]
|
|
ldr r2, [sp, #12]
|
|
ldr r3, [sp, #16]
|
|
add r3, r3, r2
|
|
cmp r3, #8
|
|
str r3, [sp, #28]
|
|
bls .L1713
|
|
ldr r3, [sp, #20]
|
|
cbnz r3, .L1714
|
|
.L1686:
|
|
mov r3, #-1
|
|
str r3, [sp, #8]
|
|
.L1714:
|
|
ldr r3, .L1749+16
|
|
movs r2, #0
|
|
ldr r4, [sp, #8]
|
|
str r2, [r3]
|
|
ldr r3, .L1749
|
|
ldr r0, [r3]
|
|
bl free
|
|
ldr r3, .L1749+20
|
|
ldr r0, [r3]
|
|
bl free
|
|
.L1681:
|
|
mov r0, r4
|
|
add sp, sp, #104
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r10, fp, pc}
|
|
.L1713:
|
|
ldr r3, .L1749+20
|
|
mov r2, #512
|
|
movs r1, #0
|
|
ldr r0, [r3]
|
|
bl memset
|
|
ldr r3, .L1749+8
|
|
ldrh r5, [r3, #10]
|
|
ldr r3, [sp, #12]
|
|
muls r3, r5, r3
|
|
str r3, [sp, #24]
|
|
ldr r3, .L1749+24
|
|
ldr r2, [r3, #16]
|
|
cmp r2, #0
|
|
beq .L1721
|
|
ldr r3, [r3, #20]
|
|
cmp r3, #0
|
|
ite eq
|
|
moveq r6, #6
|
|
movne r6, #9
|
|
.L1692:
|
|
ldr r7, [sp, #24]
|
|
movs r4, #0
|
|
ldr r8, .L1749+24
|
|
.L1693:
|
|
mov r1, r7
|
|
ldr r3, [r8, #4]
|
|
movs r0, #0
|
|
adds r4, r4, #1
|
|
blx r3
|
|
ldr r3, [sp, #16]
|
|
add r7, r7, r5
|
|
cmp r3, r4
|
|
bhi .L1693
|
|
cmp r6, #9
|
|
bne .L1723
|
|
ldr r3, .L1749+20
|
|
mov r2, #1024
|
|
movs r1, #0
|
|
ldr r4, [r3]
|
|
mov r0, r4
|
|
bl ftl_memset
|
|
movs r2, #4
|
|
ldr r3, .L1749+28
|
|
strb r2, [r4, #17]
|
|
movs r1, #12
|
|
ldr r2, .L1749+8
|
|
adds r0, r4, r1
|
|
str r3, [r4]
|
|
movs r3, #0
|
|
str r1, [r4, #4]
|
|
ldrh r2, [r2, #10]
|
|
str r3, [r4, #12]
|
|
strb r3, [r4, #16]
|
|
strh r2, [r4, #18] @ movhi
|
|
movs r2, #16
|
|
strb r3, [r4, #20]
|
|
strb r2, [r4, #21]
|
|
strh r3, [r4, #22] @ movhi
|
|
bl js_hash
|
|
str r0, [r4, #8]
|
|
.L1694:
|
|
ldr r3, [sp, #16]
|
|
mov r10, fp
|
|
ldr r8, .L1749+24
|
|
muls r3, r5, r3
|
|
movs r5, #0
|
|
str r3, [sp, #36]
|
|
.L1695:
|
|
ldr r3, [sp, #36]
|
|
cmp r5, r3
|
|
beq .L1702
|
|
cmp r6, #9
|
|
ite ne
|
|
lslne r3, r5, #2
|
|
addeq r3, r5, #1
|
|
str r3, [sp, #40]
|
|
movw r3, #61424
|
|
str r3, [sp, #44]
|
|
cmp r5, #0
|
|
bne .L1698
|
|
cmp r6, #9
|
|
bne .L1698
|
|
ldr r3, [r8, #16]
|
|
movs r0, #70
|
|
blx r3
|
|
ldr r7, [r8, #8]
|
|
add r3, sp, #40
|
|
mov r2, r4
|
|
ldr r1, [sp, #24]
|
|
mov r0, r5
|
|
blx r7
|
|
ldr r2, .L1749+8
|
|
mov r7, r0
|
|
ldr r3, [r8, #16]
|
|
ldrb r0, [r2, #22] @ zero_extendqisi2
|
|
blx r3
|
|
adds r7, r7, #1
|
|
bne .L1699
|
|
.L1702:
|
|
ldr r3, .L1749+20
|
|
ldr r7, [r3]
|
|
ldr r3, .L1749+8
|
|
ldrb r2, [r3, #14] @ zero_extendqisi2
|
|
ldrh r3, [r3, #10]
|
|
str r2, [sp, #24]
|
|
ldr r2, [sp, #12]
|
|
mul r10, r3, r2
|
|
ldr r2, .L1749+24
|
|
ldr r1, [r2, #16]
|
|
cmp r1, #0
|
|
bne .L1700
|
|
mov r8, #6
|
|
.L1701:
|
|
ldr r2, [sp, #16]
|
|
movs r4, #0
|
|
ldr r5, .L1749+24
|
|
muls r3, r2, r3
|
|
str r3, [sp, #36]
|
|
.L1704:
|
|
ldr r3, [sp, #36]
|
|
cmp r4, r3
|
|
beq .L1708
|
|
cmp r4, #0
|
|
bne .L1705
|
|
cmp r8, #9
|
|
bne .L1705
|
|
ldr r3, [r5, #16]
|
|
movs r0, #70
|
|
blx r3
|
|
ldr r3, [r5, #20]
|
|
movs r0, #2
|
|
blx r3
|
|
mov r2, r7
|
|
mov r1, r10
|
|
add r3, sp, #40
|
|
mov r0, r4
|
|
ldr r6, [r5, #12]
|
|
blx r6
|
|
ldr r3, [r5, #20]
|
|
ldr r0, [sp, #24]
|
|
blx r3
|
|
ldr r2, .L1749+8
|
|
ldr r3, [r5, #16]
|
|
ldrb r0, [r2, #22] @ zero_extendqisi2
|
|
blx r3
|
|
ldr r3, [r7]
|
|
ldr r2, .L1749+28
|
|
cmp r3, r2
|
|
beq .L1706
|
|
.L1708:
|
|
ldr r3, .L1749+20
|
|
mov r1, fp
|
|
movs r4, #0
|
|
ldr r0, [r3]
|
|
.L1707:
|
|
mov r6, r1
|
|
ldr r2, [r0, r4, lsl #2]
|
|
ldr r3, [r6]
|
|
lsls r5, r4, #2
|
|
adds r1, r1, #4
|
|
cmp r2, r3
|
|
beq .L1710
|
|
mov r2, #512
|
|
movs r1, #0
|
|
bl memset
|
|
ldr r3, .L1749+20
|
|
ldr r1, [sp, #12]
|
|
ldr r0, .L1749+32
|
|
ldr r2, [r3]
|
|
str r4, [sp]
|
|
ldr r3, [r6]
|
|
ldr r2, [r2, r5]
|
|
bl printf
|
|
ldr r3, .L1749+8
|
|
movs r0, #0
|
|
ldr r2, [sp, #12]
|
|
ldrh r1, [r3, #10]
|
|
ldr r3, .L1749+24
|
|
muls r2, r1, r2
|
|
ldr r3, [r3, #4]
|
|
mov r1, r2
|
|
blx r3
|
|
.L1711:
|
|
ldr r3, [sp, #28]
|
|
b .L1747
|
|
.L1721:
|
|
movs r6, #6
|
|
b .L1692
|
|
.L1723:
|
|
movs r4, #0
|
|
b .L1694
|
|
.L1698:
|
|
ldr r1, [sp, #24]
|
|
add r3, sp, #40
|
|
ldr r7, [r8, #8]
|
|
mov r2, r10
|
|
movs r0, #0
|
|
add r1, r1, r5
|
|
blx r7
|
|
adds r0, r0, #1
|
|
beq .L1702
|
|
add r10, r10, #2048
|
|
.L1699:
|
|
adds r5, r5, #1
|
|
b .L1695
|
|
.L1700:
|
|
ldr r2, [r2, #20]
|
|
cmp r2, #0
|
|
ite eq
|
|
moveq r8, #6
|
|
movne r8, #9
|
|
b .L1701
|
|
.L1705:
|
|
add r3, sp, #40
|
|
mov r2, r7
|
|
add r1, r10, r4
|
|
movs r0, #0
|
|
ldr r6, [r5, #12]
|
|
blx r6
|
|
adds r0, r0, #1
|
|
beq .L1708
|
|
ldr r2, [sp, #44]
|
|
movw r3, #61424
|
|
cmp r2, r3
|
|
bne .L1708
|
|
add r7, r7, #2048
|
|
.L1706:
|
|
adds r4, r4, #1
|
|
b .L1704
|
|
.L1710:
|
|
ldr r3, [sp, #32]
|
|
adds r4, r4, #1
|
|
cmp r4, r3
|
|
bne .L1707
|
|
ldr r3, [sp, #20]
|
|
adds r3, r3, #1
|
|
cmp r3, #5
|
|
str r3, [sp, #20]
|
|
bls .L1711
|
|
b .L1714
|
|
.L1750:
|
|
.align 2
|
|
.L1749:
|
|
.word .LANCHOR182
|
|
.word -52655045
|
|
.word .LANCHOR0
|
|
.word .LC50
|
|
.word .LANCHOR181
|
|
.word .LANCHOR183
|
|
.word .LANCHOR77
|
|
.word 1179535694
|
|
.word .LC51
|
|
.L1683:
|
|
cmp r0, #64
|
|
bne .L1715
|
|
ldr fp, .L1751+4
|
|
mov r0, #262144
|
|
bl ftl_malloc
|
|
str r0, [fp]
|
|
mov r0, #262144
|
|
bl ftl_malloc
|
|
ldr r3, .L1751
|
|
str r0, [r3]
|
|
ldr r3, [fp]
|
|
cbz r3, .L1716
|
|
cbz r0, .L1716
|
|
movs r2, #1
|
|
movs r1, #0
|
|
str r2, [r10]
|
|
mov r0, r3
|
|
mov r2, #262144
|
|
bl ftl_memset
|
|
.L1715:
|
|
ldr r3, [r10]
|
|
cmp r3, #0
|
|
beq .L1748
|
|
ldr r3, .L1751+4
|
|
cmp r4, #63
|
|
itett ls
|
|
rsbls r1, r4, #64
|
|
movhi r1, r6
|
|
subls r5, r5, r1
|
|
addls r1, r6, r1, lsl #9
|
|
ldr r0, [r3]
|
|
ittt hi
|
|
ldrhi r3, .L1751+8
|
|
addhi r3, r3, r4
|
|
addhi r0, r0, r3, lsl #9
|
|
cmp r8, #576
|
|
itt cs
|
|
subcs r5, r5, r7
|
|
subcs r5, r5, #446
|
|
lsls r2, r5, #9
|
|
bl ftl_memcpy
|
|
b .L1748
|
|
.L1716:
|
|
ldr r1, .L1751+12
|
|
ldr r0, .L1751+16
|
|
bl printf
|
|
b .L1715
|
|
.L1752:
|
|
.align 2
|
|
.L1751:
|
|
.word .LANCHOR183
|
|
.word .LANCHOR182
|
|
.word 8388544
|
|
.word .LANCHOR184
|
|
.word .LC52
|
|
.size FtlWriteToIDB, .-FtlWriteToIDB
|
|
.section .text.sftl_write,"ax",%progbits
|
|
.align 1
|
|
.global sftl_write
|
|
.syntax unified
|
|
.thumb
|
|
.thumb_func
|
|
.fpu softvfp
|
|
.type sftl_write, %function
|
|
sftl_write:
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r4, r1
|
|
mov r5, r2
|
|
add r6, r6, r4
|
|
bl FtlWriteToIDB
|
|
.L1754:
|
|
cmp r4, #256
|
|
sub r1, r6, r4
|
|
mov r3, r5
|
|
bhi .L1756
|
|
mov r2, r4
|
|
movs r0, #0
|
|
pop {r4, r5, r6, lr}
|
|
b FtlWrite
|
|
.L1756:
|
|
mov r2, #256
|
|
movs r0, #0
|
|
bl FtlWrite
|
|
cbnz r0, .L1753
|
|
add r5, r5, #131072
|
|
sub r4, r4, #256
|
|
b .L1754
|
|
.L1753:
|
|
pop {r4, r5, r6, pc}
|
|
.size sftl_write, .-sftl_write
|
|
.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 low_format_en
|
|
.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 .bss.DeviceCapacity,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR25,. + 0
|
|
.type DeviceCapacity, %object
|
|
.size DeviceCapacity, 4
|
|
DeviceCapacity:
|
|
.space 4
|
|
.section .bss.FtlUpdateVaildLpnCount,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR57,. + 0
|
|
.type FtlUpdateVaildLpnCount, %object
|
|
.size FtlUpdateVaildLpnCount, 2
|
|
FtlUpdateVaildLpnCount:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_bbm_buf_size,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR126,. + 0
|
|
.type c_ftl_nand_bbm_buf_size, %object
|
|
.size c_ftl_nand_bbm_buf_size, 2
|
|
c_ftl_nand_bbm_buf_size:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_blk_pre_plane,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR5,. + 0
|
|
.type c_ftl_nand_blk_pre_plane, %object
|
|
.size c_ftl_nand_blk_pre_plane, 2
|
|
c_ftl_nand_blk_pre_plane:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_blks_per_die,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR16,. + 0
|
|
.type c_ftl_nand_blks_per_die, %object
|
|
.size c_ftl_nand_blks_per_die, 2
|
|
c_ftl_nand_blks_per_die:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_blks_per_die_shift,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR17,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_byte_pre_oob,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR23,. + 0
|
|
.type c_ftl_nand_byte_pre_oob, %object
|
|
.size c_ftl_nand_byte_pre_oob, 2
|
|
c_ftl_nand_byte_pre_oob:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_byte_pre_page,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR22,. + 0
|
|
.type c_ftl_nand_byte_pre_page, %object
|
|
.size c_ftl_nand_byte_pre_page, 2
|
|
c_ftl_nand_byte_pre_page:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_data_blks_per_plane,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR4,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_data_op_blks_per_plane,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR170,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_die_num,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR9,. + 0
|
|
.type c_ftl_nand_die_num, %object
|
|
.size c_ftl_nand_die_num, 2
|
|
c_ftl_nand_die_num:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_ext_blk_pre_plane,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR14,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_init_sys_blks_per_plane,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR30,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_l2pmap_ram_region_num,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR32,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_map_blks_per_plane,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR28,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_map_region_num,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR31,. + 0
|
|
.type c_ftl_nand_map_region_num, %object
|
|
.size c_ftl_nand_map_region_num, 2
|
|
c_ftl_nand_map_region_num:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_max_data_blks,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR6,. + 0
|
|
.type c_ftl_nand_max_data_blks, %object
|
|
.size c_ftl_nand_max_data_blks, 4
|
|
c_ftl_nand_max_data_blks:
|
|
.space 4
|
|
.section .bss.c_ftl_nand_max_map_blks,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR29,. + 0
|
|
.type c_ftl_nand_max_map_blks, %object
|
|
.size c_ftl_nand_max_map_blks, 4
|
|
c_ftl_nand_max_map_blks:
|
|
.space 4
|
|
.section .bss.c_ftl_nand_max_sys_blks,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR3,. + 0
|
|
.type c_ftl_nand_max_sys_blks, %object
|
|
.size c_ftl_nand_max_sys_blks, 4
|
|
c_ftl_nand_max_sys_blks:
|
|
.space 4
|
|
.section .bss.c_ftl_nand_max_vendor_blks,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR26,. + 0
|
|
.type c_ftl_nand_max_vendor_blks, %object
|
|
.size c_ftl_nand_max_vendor_blks, 2
|
|
c_ftl_nand_max_vendor_blks:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_page_pre_blk,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR18,. + 0
|
|
.type c_ftl_nand_page_pre_blk, %object
|
|
.size c_ftl_nand_page_pre_blk, 2
|
|
c_ftl_nand_page_pre_blk:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_page_pre_slc_blk,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR19,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_page_pre_super_blk,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR20,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_planes_num,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR2,. + 0
|
|
.type c_ftl_nand_planes_num, %object
|
|
.size c_ftl_nand_planes_num, 2
|
|
c_ftl_nand_planes_num:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_planes_per_die,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR10,. + 0
|
|
.type c_ftl_nand_planes_per_die, %object
|
|
.size c_ftl_nand_planes_per_die, 2
|
|
c_ftl_nand_planes_per_die:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_reserved_blks,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR24,. + 0
|
|
.type c_ftl_nand_reserved_blks, %object
|
|
.size c_ftl_nand_reserved_blks, 2
|
|
c_ftl_nand_reserved_blks:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_sec_pre_page,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR11,. + 0
|
|
.type c_ftl_nand_sec_pre_page, %object
|
|
.size c_ftl_nand_sec_pre_page, 2
|
|
c_ftl_nand_sec_pre_page:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_sec_pre_page_shift,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR21,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_sys_blks_per_plane,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR1,. + 0
|
|
.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
|
|
.section .bss.c_ftl_nand_totle_phy_blks,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR7,. + 0
|
|
.type c_ftl_nand_totle_phy_blks, %object
|
|
.size c_ftl_nand_totle_phy_blks, 4
|
|
c_ftl_nand_totle_phy_blks:
|
|
.space 4
|
|
.section .bss.c_ftl_nand_type,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR8,. + 0
|
|
.type c_ftl_nand_type, %object
|
|
.size c_ftl_nand_type, 2
|
|
c_ftl_nand_type:
|
|
.space 2
|
|
.section .bss.c_ftl_nand_vendor_region_num,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR27,. + 0
|
|
.type c_ftl_nand_vendor_region_num, %object
|
|
.size c_ftl_nand_vendor_region_num, 2
|
|
c_ftl_nand_vendor_region_num:
|
|
.space 2
|
|
.section .bss.c_ftl_vendor_part_size,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR15,. + 0
|
|
.type c_ftl_vendor_part_size, %object
|
|
.size c_ftl_vendor_part_size, 2
|
|
c_ftl_vendor_part_size:
|
|
.space 2
|
|
.section .bss.c_gc_page_buf_num,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR66,. + 0
|
|
.type c_gc_page_buf_num, %object
|
|
.size c_gc_page_buf_num, 4
|
|
c_gc_page_buf_num:
|
|
.space 4
|
|
.section .bss.c_mlc_erase_count_value,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR13,. + 0
|
|
.type c_mlc_erase_count_value, %object
|
|
.size c_mlc_erase_count_value, 2
|
|
c_mlc_erase_count_value:
|
|
.space 2
|
|
.section .bss.check_vpc_table,"aw",%nobits
|
|
.align 1
|
|
.type check_vpc_table, %object
|
|
.size check_vpc_table, 16384
|
|
check_vpc_table:
|
|
.space 16384
|
|
.section .bss.ftl_gc_temp_power_lost_recovery_flag,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR132,. + 0
|
|
.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
|
|
.section .bss.gBbtInfo,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR36,. + 0
|
|
.type gBbtInfo, %object
|
|
.size gBbtInfo, 60
|
|
gBbtInfo:
|
|
.space 60
|
|
.section .bss.gL2pMapInfo,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR128,. + 0
|
|
.type gL2pMapInfo, %object
|
|
.size gL2pMapInfo, 44
|
|
gL2pMapInfo:
|
|
.space 44
|
|
.section .bss.gSysFreeQueue,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR37,. + 0
|
|
.type gSysFreeQueue, %object
|
|
.size gSysFreeQueue, 2056
|
|
gSysFreeQueue:
|
|
.space 2056
|
|
.section .bss.gSysInfo,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR138,. + 0
|
|
.type gSysInfo, %object
|
|
.size gSysInfo, 16
|
|
gSysInfo:
|
|
.space 16
|
|
.section .bss.gVendorBlkInfo,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR160,. + 0
|
|
.type gVendorBlkInfo, %object
|
|
.size gVendorBlkInfo, 44
|
|
gVendorBlkInfo:
|
|
.space 44
|
|
.section .bss.g_GlobalDataVersion,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR82,. + 0
|
|
.type g_GlobalDataVersion, %object
|
|
.size g_GlobalDataVersion, 4
|
|
g_GlobalDataVersion:
|
|
.space 4
|
|
.section .bss.g_GlobalSysVersion,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR81,. + 0
|
|
.type g_GlobalSysVersion, %object
|
|
.size g_GlobalSysVersion, 4
|
|
g_GlobalSysVersion:
|
|
.space 4
|
|
.section .bss.g_MaxLbaSector,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR33,. + 0
|
|
.type g_MaxLbaSector, %object
|
|
.size g_MaxLbaSector, 4
|
|
g_MaxLbaSector:
|
|
.space 4
|
|
.section .bss.g_MaxLbn,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR178,. + 0
|
|
.type g_MaxLbn, %object
|
|
.size g_MaxLbn, 4
|
|
g_MaxLbn:
|
|
.space 4
|
|
.section .bss.g_MaxLpn,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR151,. + 0
|
|
.type g_MaxLpn, %object
|
|
.size g_MaxLpn, 4
|
|
g_MaxLpn:
|
|
.space 4
|
|
.section .bss.g_VaildLpn,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR58,. + 0
|
|
.type g_VaildLpn, %object
|
|
.size g_VaildLpn, 4
|
|
g_VaildLpn:
|
|
.space 4
|
|
.section .bss.g_active_superblock,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR50,. + 0
|
|
.type g_active_superblock, %object
|
|
.size g_active_superblock, 48
|
|
g_active_superblock:
|
|
.space 48
|
|
.section .bss.g_buffer_superblock,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR51,. + 0
|
|
.type g_buffer_superblock, %object
|
|
.size g_buffer_superblock, 48
|
|
g_buffer_superblock:
|
|
.space 48
|
|
.section .bss.g_cur_erase_blk,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR98,. + 0
|
|
.type g_cur_erase_blk, %object
|
|
.size g_cur_erase_blk, 4
|
|
g_cur_erase_blk:
|
|
.space 4
|
|
.section .bss.g_ect_tbl_info_size,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR115,. + 0
|
|
.type g_ect_tbl_info_size, %object
|
|
.size g_ect_tbl_info_size, 2
|
|
g_ect_tbl_info_size:
|
|
.space 2
|
|
.section .bss.g_ect_tbl_power_up_flush,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR163,. + 0
|
|
.type g_ect_tbl_power_up_flush, %object
|
|
.size g_ect_tbl_power_up_flush, 2
|
|
g_ect_tbl_power_up_flush:
|
|
.space 2
|
|
.section .bss.g_ftl_nand_free_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR175,. + 0
|
|
.type g_ftl_nand_free_count, %object
|
|
.size g_ftl_nand_free_count, 4
|
|
g_ftl_nand_free_count:
|
|
.space 4
|
|
.section .bss.g_gc_bad_block_gc_index,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR75,. + 0
|
|
.type g_gc_bad_block_gc_index, %object
|
|
.size g_gc_bad_block_gc_index, 2
|
|
g_gc_bad_block_gc_index:
|
|
.space 2
|
|
.section .bss.g_gc_bad_block_temp_num,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR73,. + 0
|
|
.type g_gc_bad_block_temp_num, %object
|
|
.size g_gc_bad_block_temp_num, 2
|
|
g_gc_bad_block_temp_num:
|
|
.space 2
|
|
.section .bss.g_gc_bad_block_temp_tbl,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR74,. + 0
|
|
.type g_gc_bad_block_temp_tbl, %object
|
|
.size g_gc_bad_block_temp_tbl, 34
|
|
g_gc_bad_block_temp_tbl:
|
|
.space 34
|
|
.section .bss.g_gc_blk_index,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR101,. + 0
|
|
.type g_gc_blk_index, %object
|
|
.size g_gc_blk_index, 2
|
|
g_gc_blk_index:
|
|
.space 2
|
|
.section .bss.g_gc_blk_num,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR68,. + 0
|
|
.type g_gc_blk_num, %object
|
|
.size g_gc_blk_num, 2
|
|
g_gc_blk_num:
|
|
.space 2
|
|
.section .bss.g_gc_cur_blk_max_valid_pages,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR173,. + 0
|
|
.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
|
|
.section .bss.g_gc_cur_blk_valid_pages,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR172,. + 0
|
|
.type g_gc_cur_blk_valid_pages, %object
|
|
.size g_gc_cur_blk_valid_pages, 2
|
|
g_gc_cur_blk_valid_pages:
|
|
.space 2
|
|
.section .bss.g_gc_free_blk_threshold,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR99,. + 0
|
|
.type g_gc_free_blk_threshold, %object
|
|
.size g_gc_free_blk_threshold, 2
|
|
g_gc_free_blk_threshold:
|
|
.space 2
|
|
.section .bss.g_gc_head_data_block,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR95,. + 0
|
|
.type g_gc_head_data_block, %object
|
|
.size g_gc_head_data_block, 4
|
|
g_gc_head_data_block:
|
|
.space 4
|
|
.section .bss.g_gc_head_data_block_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR96,. + 0
|
|
.type g_gc_head_data_block_count, %object
|
|
.size g_gc_head_data_block_count, 4
|
|
g_gc_head_data_block_count:
|
|
.space 4
|
|
.section .bss.g_gc_merge_free_blk_threshold,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR100,. + 0
|
|
.type g_gc_merge_free_blk_threshold, %object
|
|
.size g_gc_merge_free_blk_threshold, 2
|
|
g_gc_merge_free_blk_threshold:
|
|
.space 2
|
|
.section .bss.g_gc_next_blk,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR71,. + 0
|
|
.type g_gc_next_blk, %object
|
|
.size g_gc_next_blk, 2
|
|
g_gc_next_blk:
|
|
.space 2
|
|
.section .bss.g_gc_next_blk_1,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR72,. + 0
|
|
.type g_gc_next_blk_1, %object
|
|
.size g_gc_next_blk_1, 2
|
|
g_gc_next_blk_1:
|
|
.space 2
|
|
.section .bss.g_gc_num_req,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR61,. + 0
|
|
.type g_gc_num_req, %object
|
|
.size g_gc_num_req, 4
|
|
g_gc_num_req:
|
|
.space 4
|
|
.section .bss.g_gc_page_offset,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR69,. + 0
|
|
.type g_gc_page_offset, %object
|
|
.size g_gc_page_offset, 2
|
|
g_gc_page_offset:
|
|
.space 2
|
|
.section .bss.g_gc_skip_write_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR97,. + 0
|
|
.type g_gc_skip_write_count, %object
|
|
.size g_gc_skip_write_count, 4
|
|
g_gc_skip_write_count:
|
|
.space 4
|
|
.section .bss.g_gc_superblock,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR144,. + 0
|
|
.type g_gc_superblock, %object
|
|
.size g_gc_superblock, 48
|
|
g_gc_superblock:
|
|
.space 48
|
|
.section .bss.g_gc_temp_superblock,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR52,. + 0
|
|
.type g_gc_temp_superblock, %object
|
|
.size g_gc_temp_superblock, 48
|
|
g_gc_temp_superblock:
|
|
.space 48
|
|
.section .bss.g_in_gc_progress,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR93,. + 0
|
|
.type g_in_gc_progress, %object
|
|
.size g_in_gc_progress, 4
|
|
g_in_gc_progress:
|
|
.space 4
|
|
.section .bss.g_in_swl_replace,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR94,. + 0
|
|
.type g_in_swl_replace, %object
|
|
.size g_in_swl_replace, 4
|
|
g_in_swl_replace:
|
|
.space 4
|
|
.section .bss.g_l2p_last_update_region_id,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR55,. + 0
|
|
.type g_l2p_last_update_region_id, %object
|
|
.size g_l2p_last_update_region_id, 2
|
|
g_l2p_last_update_region_id:
|
|
.space 2
|
|
.section .bss.g_max_erase_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR91,. + 0
|
|
.type g_max_erase_count, %object
|
|
.size g_max_erase_count, 4
|
|
g_max_erase_count:
|
|
.space 4
|
|
.section .bss.g_min_erase_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR92,. + 0
|
|
.type g_min_erase_count, %object
|
|
.size g_min_erase_count, 4
|
|
g_min_erase_count:
|
|
.space 4
|
|
.section .bss.g_nand_ops,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR77,. + 0
|
|
.type g_nand_ops, %object
|
|
.size g_nand_ops, 24
|
|
g_nand_ops:
|
|
.space 24
|
|
.section .bss.g_nand_phy_info,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR0,. + 0
|
|
.type g_nand_phy_info, %object
|
|
.size g_nand_phy_info, 24
|
|
g_nand_phy_info:
|
|
.space 24
|
|
.section .bss.g_num_data_superblocks,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR43,. + 0
|
|
.type g_num_data_superblocks, %object
|
|
.size g_num_data_superblocks, 2
|
|
g_num_data_superblocks:
|
|
.space 2
|
|
.section .bss.g_num_free_superblocks,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR47,. + 0
|
|
.type g_num_free_superblocks, %object
|
|
.size g_num_free_superblocks, 2
|
|
g_num_free_superblocks:
|
|
.space 2
|
|
.section .bss.g_power_lost_recovery_flag,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR155,. + 0
|
|
.type g_power_lost_recovery_flag, %object
|
|
.size g_power_lost_recovery_flag, 2
|
|
g_power_lost_recovery_flag:
|
|
.space 2
|
|
.section .bss.g_recovery_page_min_ver,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR133,. + 0
|
|
.type g_recovery_page_min_ver, %object
|
|
.size g_recovery_page_min_ver, 4
|
|
g_recovery_page_min_ver:
|
|
.space 4
|
|
.section .bss.g_recovery_page_num,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR156,. + 0
|
|
.type g_recovery_page_num, %object
|
|
.size g_recovery_page_num, 4
|
|
g_recovery_page_num:
|
|
.space 4
|
|
.section .bss.g_recovery_ppa_tbl,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR157,. + 0
|
|
.type g_recovery_ppa_tbl, %object
|
|
.size g_recovery_ppa_tbl, 128
|
|
g_recovery_ppa_tbl:
|
|
.space 128
|
|
.section .bss.g_sys_ext_data,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR134,. + 0
|
|
.type g_sys_ext_data, %object
|
|
.size g_sys_ext_data, 512
|
|
g_sys_ext_data:
|
|
.space 512
|
|
.section .bss.g_sys_save_data,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR38,. + 0
|
|
.type g_sys_save_data, %object
|
|
.size g_sys_save_data, 48
|
|
g_sys_save_data:
|
|
.space 48
|
|
.section .bss.g_tmp_data_superblock_id,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR130,. + 0
|
|
.type g_tmp_data_superblock_id, %object
|
|
.size g_tmp_data_superblock_id, 2
|
|
g_tmp_data_superblock_id:
|
|
.space 2
|
|
.section .bss.g_totle_avg_erase_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR142,. + 0
|
|
.type g_totle_avg_erase_count, %object
|
|
.size g_totle_avg_erase_count, 4
|
|
g_totle_avg_erase_count:
|
|
.space 4
|
|
.section .bss.g_totle_cache_write_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR86,. + 0
|
|
.type g_totle_cache_write_count, %object
|
|
.size g_totle_cache_write_count, 4
|
|
g_totle_cache_write_count:
|
|
.space 4
|
|
.section .bss.g_totle_discard_page_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR85,. + 0
|
|
.type g_totle_discard_page_count, %object
|
|
.size g_totle_discard_page_count, 4
|
|
g_totle_discard_page_count:
|
|
.space 4
|
|
.section .bss.g_totle_gc_page_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR83,. + 0
|
|
.type g_totle_gc_page_count, %object
|
|
.size g_totle_gc_page_count, 4
|
|
g_totle_gc_page_count:
|
|
.space 4
|
|
.section .bss.g_totle_l2p_write_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR87,. + 0
|
|
.type g_totle_l2p_write_count, %object
|
|
.size g_totle_l2p_write_count, 4
|
|
g_totle_l2p_write_count:
|
|
.space 4
|
|
.section .bss.g_totle_map_block,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR129,. + 0
|
|
.type g_totle_map_block, %object
|
|
.size g_totle_map_block, 2
|
|
g_totle_map_block:
|
|
.space 2
|
|
.section .bss.g_totle_mlc_erase_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR89,. + 0
|
|
.type g_totle_mlc_erase_count, %object
|
|
.size g_totle_mlc_erase_count, 4
|
|
g_totle_mlc_erase_count:
|
|
.space 4
|
|
.section .bss.g_totle_read_page_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR88,. + 0
|
|
.type g_totle_read_page_count, %object
|
|
.size g_totle_read_page_count, 4
|
|
g_totle_read_page_count:
|
|
.space 4
|
|
.section .bss.g_totle_read_sector,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR162,. + 0
|
|
.type g_totle_read_sector, %object
|
|
.size g_totle_read_sector, 4
|
|
g_totle_read_sector:
|
|
.space 4
|
|
.section .bss.g_totle_slc_erase_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR90,. + 0
|
|
.type g_totle_slc_erase_count, %object
|
|
.size g_totle_slc_erase_count, 4
|
|
g_totle_slc_erase_count:
|
|
.space 4
|
|
.section .bss.g_totle_swl_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR131,. + 0
|
|
.type g_totle_swl_count, %object
|
|
.size g_totle_swl_count, 4
|
|
g_totle_swl_count:
|
|
.space 4
|
|
.section .bss.g_totle_sys_slc_erase_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR79,. + 0
|
|
.type g_totle_sys_slc_erase_count, %object
|
|
.size g_totle_sys_slc_erase_count, 4
|
|
g_totle_sys_slc_erase_count:
|
|
.space 4
|
|
.section .bss.g_totle_vendor_block,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR34,. + 0
|
|
.type g_totle_vendor_block, %object
|
|
.size g_totle_vendor_block, 2
|
|
g_totle_vendor_block:
|
|
.space 2
|
|
.section .bss.g_totle_write_page_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR84,. + 0
|
|
.type g_totle_write_page_count, %object
|
|
.size g_totle_write_page_count, 4
|
|
g_totle_write_page_count:
|
|
.space 4
|
|
.section .bss.g_totle_write_sector,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR161,. + 0
|
|
.type g_totle_write_sector, %object
|
|
.size g_totle_write_sector, 4
|
|
g_totle_write_sector:
|
|
.space 4
|
|
.section .bss.gc_discard_updated,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR166,. + 0
|
|
.type gc_discard_updated, %object
|
|
.size gc_discard_updated, 4
|
|
gc_discard_updated:
|
|
.space 4
|
|
.section .bss.gc_ink_free_return_value,"aw",%nobits
|
|
.align 1
|
|
.set .LANCHOR171,. + 0
|
|
.type gc_ink_free_return_value, %object
|
|
.size gc_ink_free_return_value, 2
|
|
gc_ink_free_return_value:
|
|
.space 2
|
|
.section .bss.gp_ect_tbl_info,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR117,. + 0
|
|
.type gp_ect_tbl_info, %object
|
|
.size gp_ect_tbl_info, 4
|
|
gp_ect_tbl_info:
|
|
.space 4
|
|
.section .bss.gp_flash_check_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR183,. + 0
|
|
.type gp_flash_check_buf, %object
|
|
.size gp_flash_check_buf, 4
|
|
gp_flash_check_buf:
|
|
.space 4
|
|
.section .bss.gp_gc_page_buf_info,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR62,. + 0
|
|
.type gp_gc_page_buf_info, %object
|
|
.size gp_gc_page_buf_info, 4
|
|
gp_gc_page_buf_info:
|
|
.space 4
|
|
.section .bss.gp_last_act_superblock,"aw",%nobits
|
|
.align 2
|
|
.type gp_last_act_superblock, %object
|
|
.size gp_last_act_superblock, 4
|
|
gp_last_act_superblock:
|
|
.space 4
|
|
.section .bss.idb_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR182,. + 0
|
|
.type idb_buf, %object
|
|
.size idb_buf, 4
|
|
idb_buf:
|
|
.space 4
|
|
.section .bss.idb_need_write_back,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR181,. + 0
|
|
.type idb_need_write_back, %object
|
|
.size idb_need_write_back, 4
|
|
idb_need_write_back:
|
|
.space 4
|
|
.section .bss.low_format_en,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR180,. + 0
|
|
.type low_format_en, %object
|
|
.size low_format_en, 4
|
|
low_format_en:
|
|
.space 4
|
|
.section .bss.p_data_block_list_head,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR40,. + 0
|
|
.type p_data_block_list_head, %object
|
|
.size p_data_block_list_head, 4
|
|
p_data_block_list_head:
|
|
.space 4
|
|
.section .bss.p_data_block_list_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR39,. + 0
|
|
.type p_data_block_list_table, %object
|
|
.size p_data_block_list_table, 4
|
|
p_data_block_list_table:
|
|
.space 4
|
|
.section .bss.p_data_block_list_tail,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR42,. + 0
|
|
.type p_data_block_list_tail, %object
|
|
.size p_data_block_list_tail, 4
|
|
p_data_block_list_tail:
|
|
.space 4
|
|
.section .bss.p_erase_count_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR46,. + 0
|
|
.type p_erase_count_table, %object
|
|
.size p_erase_count_table, 4
|
|
p_erase_count_table:
|
|
.space 4
|
|
.section .bss.p_free_data_block_list_head,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR45,. + 0
|
|
.type p_free_data_block_list_head, %object
|
|
.size p_free_data_block_list_head, 4
|
|
p_free_data_block_list_head:
|
|
.space 4
|
|
.section .bss.p_gc_blk_tbl,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR67,. + 0
|
|
.type p_gc_blk_tbl, %object
|
|
.size p_gc_blk_tbl, 4
|
|
p_gc_blk_tbl:
|
|
.space 4
|
|
.section .bss.p_gc_data_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR63,. + 0
|
|
.type p_gc_data_buf, %object
|
|
.size p_gc_data_buf, 4
|
|
p_gc_data_buf:
|
|
.space 4
|
|
.section .bss.p_gc_page_info,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR70,. + 0
|
|
.type p_gc_page_info, %object
|
|
.size p_gc_page_info, 4
|
|
p_gc_page_info:
|
|
.space 4
|
|
.section .bss.p_gc_spare_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR64,. + 0
|
|
.type p_gc_spare_buf, %object
|
|
.size p_gc_spare_buf, 4
|
|
p_gc_spare_buf:
|
|
.space 4
|
|
.section .bss.p_io_data_buf_0,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR108,. + 0
|
|
.type p_io_data_buf_0, %object
|
|
.size p_io_data_buf_0, 4
|
|
p_io_data_buf_0:
|
|
.space 4
|
|
.section .bss.p_io_data_buf_1,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR109,. + 0
|
|
.type p_io_data_buf_1, %object
|
|
.size p_io_data_buf_1, 4
|
|
p_io_data_buf_1:
|
|
.space 4
|
|
.section .bss.p_io_spare_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR114,. + 0
|
|
.type p_io_spare_buf, %object
|
|
.size p_io_spare_buf, 4
|
|
p_io_spare_buf:
|
|
.space 4
|
|
.section .bss.p_l2p_map_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR125,. + 0
|
|
.type p_l2p_map_buf, %object
|
|
.size p_l2p_map_buf, 4
|
|
p_l2p_map_buf:
|
|
.space 4
|
|
.section .bss.p_l2p_ram_map,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR54,. + 0
|
|
.type p_l2p_ram_map, %object
|
|
.size p_l2p_ram_map, 4
|
|
p_l2p_ram_map:
|
|
.space 4
|
|
.section .bss.p_map_block_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR118,. + 0
|
|
.type p_map_block_table, %object
|
|
.size p_map_block_table, 4
|
|
p_map_block_table:
|
|
.space 4
|
|
.section .bss.p_map_block_valid_page_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR119,. + 0
|
|
.type p_map_block_valid_page_count, %object
|
|
.size p_map_block_valid_page_count, 4
|
|
p_map_block_valid_page_count:
|
|
.space 4
|
|
.section .bss.p_map_block_ver_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR124,. + 0
|
|
.type p_map_block_ver_table, %object
|
|
.size p_map_block_ver_table, 4
|
|
p_map_block_ver_table:
|
|
.space 4
|
|
.section .bss.p_map_region_ppn_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR123,. + 0
|
|
.type p_map_region_ppn_table, %object
|
|
.size p_map_region_ppn_table, 4
|
|
p_map_region_ppn_table:
|
|
.space 4
|
|
.section .bss.p_plane_order_table,"aw",%nobits
|
|
.set .LANCHOR12,. + 0
|
|
.type p_plane_order_table, %object
|
|
.size p_plane_order_table, 32
|
|
p_plane_order_table:
|
|
.space 32
|
|
.section .bss.p_swl_mul_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR116,. + 0
|
|
.type p_swl_mul_table, %object
|
|
.size p_swl_mul_table, 4
|
|
p_swl_mul_table:
|
|
.space 4
|
|
.section .bss.p_sys_data_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR105,. + 0
|
|
.type p_sys_data_buf, %object
|
|
.size p_sys_data_buf, 4
|
|
p_sys_data_buf:
|
|
.space 4
|
|
.section .bss.p_sys_data_buf_1,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR106,. + 0
|
|
.type p_sys_data_buf_1, %object
|
|
.size p_sys_data_buf_1, 4
|
|
p_sys_data_buf_1:
|
|
.space 4
|
|
.section .bss.p_sys_spare_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR113,. + 0
|
|
.type p_sys_spare_buf, %object
|
|
.size p_sys_spare_buf, 4
|
|
p_sys_spare_buf:
|
|
.space 4
|
|
.section .bss.p_valid_page_count_check_table,"aw",%nobits
|
|
.align 2
|
|
.type p_valid_page_count_check_table, %object
|
|
.size p_valid_page_count_check_table, 4
|
|
p_valid_page_count_check_table:
|
|
.space 4
|
|
.section .bss.p_valid_page_count_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR41,. + 0
|
|
.type p_valid_page_count_table, %object
|
|
.size p_valid_page_count_table, 4
|
|
p_valid_page_count_table:
|
|
.space 4
|
|
.section .bss.p_vendor_block_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR35,. + 0
|
|
.type p_vendor_block_table, %object
|
|
.size p_vendor_block_table, 4
|
|
p_vendor_block_table:
|
|
.space 4
|
|
.section .bss.p_vendor_block_valid_page_count,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR120,. + 0
|
|
.type p_vendor_block_valid_page_count, %object
|
|
.size p_vendor_block_valid_page_count, 4
|
|
p_vendor_block_valid_page_count:
|
|
.space 4
|
|
.section .bss.p_vendor_block_ver_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR121,. + 0
|
|
.type p_vendor_block_ver_table, %object
|
|
.size p_vendor_block_ver_table, 4
|
|
p_vendor_block_ver_table:
|
|
.space 4
|
|
.section .bss.p_vendor_data_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR107,. + 0
|
|
.type p_vendor_data_buf, %object
|
|
.size p_vendor_data_buf, 4
|
|
p_vendor_data_buf:
|
|
.space 4
|
|
.section .bss.p_vendor_region_ppn_table,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR122,. + 0
|
|
.type p_vendor_region_ppn_table, %object
|
|
.size p_vendor_region_ppn_table, 4
|
|
p_vendor_region_ppn_table:
|
|
.space 4
|
|
.section .bss.req_erase,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR78,. + 0
|
|
.type req_erase, %object
|
|
.size req_erase, 4
|
|
req_erase:
|
|
.space 4
|
|
.section .bss.req_gc,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR65,. + 0
|
|
.type req_gc, %object
|
|
.size req_gc, 4
|
|
req_gc:
|
|
.space 4
|
|
.section .bss.req_gc_dst,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR103,. + 0
|
|
.type req_gc_dst, %object
|
|
.size req_gc_dst, 4
|
|
req_gc_dst:
|
|
.space 4
|
|
.section .bss.req_prgm,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR104,. + 0
|
|
.type req_prgm, %object
|
|
.size req_prgm, 4
|
|
req_prgm:
|
|
.space 4
|
|
.section .bss.req_read,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR102,. + 0
|
|
.type req_read, %object
|
|
.size req_read, 4
|
|
req_read:
|
|
.space 4
|
|
.section .bss.req_sys,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR137,. + 0
|
|
.type req_sys, %object
|
|
.size req_sys, 20
|
|
req_sys:
|
|
.space 20
|
|
.section .bss.sftl_nand_check_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR110,. + 0
|
|
.type sftl_nand_check_buf, %object
|
|
.size sftl_nand_check_buf, 4
|
|
sftl_nand_check_buf:
|
|
.space 4
|
|
.section .bss.sftl_nand_check_spare_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR112,. + 0
|
|
.type sftl_nand_check_spare_buf, %object
|
|
.size sftl_nand_check_spare_buf, 4
|
|
sftl_nand_check_spare_buf:
|
|
.space 4
|
|
.section .bss.sftl_temp_buf,"aw",%nobits
|
|
.align 2
|
|
.set .LANCHOR111,. + 0
|
|
.type sftl_temp_buf, %object
|
|
.size sftl_temp_buf, 4
|
|
sftl_temp_buf:
|
|
.space 4
|
|
.section .data.ftl_gc_temp_block_bops_scan_page_addr,"aw",%progbits
|
|
.align 1
|
|
.set .LANCHOR159,. + 0
|
|
.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
|
|
.section .data.gFtlInitStatus,"aw",%progbits
|
|
.align 2
|
|
.set .LANCHOR165,. + 0
|
|
.type gFtlInitStatus, %object
|
|
.size gFtlInitStatus, 4
|
|
gFtlInitStatus:
|
|
.word -1
|
|
.section .data.power_up_flag,"aw",%progbits
|
|
.align 2
|
|
.type power_up_flag, %object
|
|
.size power_up_flag, 4
|
|
power_up_flag:
|
|
.word 1
|
|
.section .rodata.FlashEraseBlocks.str1.1,"aMS",%progbits,1
|
|
.LC6:
|
|
.ascii "%s: addr: %x is in id block!!!!!!!!!!\012\000"
|
|
.LC7:
|
|
.ascii "not free: w: d:\000"
|
|
.LC8:
|
|
.ascii "not free: w: s:\000"
|
|
.section .rodata.FlashProgPages.str1.1,"aMS",%progbits,1
|
|
.LC14:
|
|
.ascii "prog read error: = %x\012\000"
|
|
.LC15:
|
|
.ascii "prog read REFRESH: = %x\012\000"
|
|
.LC16:
|
|
.ascii "prog read s error: = %x %x %x %x %x\012\000"
|
|
.LC17:
|
|
.ascii "prog read d error: = %x %x %x %x %x\012\000"
|
|
.section .rodata.FlashReadPages.str1.1,"aMS",%progbits,1
|
|
.LC11:
|
|
.ascii "FlashReadPages %x %x error_ecc_bits %d\012\000"
|
|
.LC12:
|
|
.ascii "data:\000"
|
|
.LC13:
|
|
.ascii "spare:\000"
|
|
.section .rodata.FtlBbmMapBadBlock.str1.1,"aMS",%progbits,1
|
|
.LC0:
|
|
.ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
|
|
.ascii "\000"
|
|
.section .rodata.FtlBbmTblFlush.str1.1,"aMS",%progbits,1
|
|
.LC18:
|
|
.ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
|
|
.LC19:
|
|
.ascii "FtlBbmTblFlush error:%x\012\000"
|
|
.LC20:
|
|
.ascii "FtlBbmTblFlush error = %x error count = %d\012\000"
|
|
.section .rodata.FtlFreeSysBlkQueueOut.str1.1,"aMS",%progbits,1
|
|
.LC9:
|
|
.ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
|
|
.ascii "\000"
|
|
.section .rodata.FtlGcScanTempBlk.str1.1,"aMS",%progbits,1
|
|
.LC35:
|
|
.ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
|
|
.section .rodata.FtlLoadEctTbl.str1.1,"aMS",%progbits,1
|
|
.LC37:
|
|
.ascii "no ect\000"
|
|
.LC38:
|
|
.ascii "%s\012\000"
|
|
.section .rodata.FtlLoadSysInfo.str1.1,"aMS",%progbits,1
|
|
.LC46:
|
|
.ascii "%s hash error this.id =%x page =%x pre_id =%x hash "
|
|
.ascii "=%x hash_r =%x\012\000"
|
|
.section .rodata.FtlMapTblRecovery.str1.1,"aMS",%progbits,1
|
|
.LC47:
|
|
.ascii "%s last blk_id =%x page =%x hash error hash =%x has"
|
|
.ascii "h_r =%x\012\000"
|
|
.LC48:
|
|
.ascii "%s scan blk_id =%x page =%x hash error hash =%x has"
|
|
.ascii "h_r =%x\012\000"
|
|
.section .rodata.FtlMapWritePage.str1.1,"aMS",%progbits,1
|
|
.LC22:
|
|
.ascii "FtlMapWritePage error = %x \012\000"
|
|
.LC23:
|
|
.ascii "FtlMapWritePage error = %x error count = %d\012\000"
|
|
.section .rodata.FtlProgPages.str1.1,"aMS",%progbits,1
|
|
.LC40:
|
|
.ascii "FtlProgPages error %x = %d\012\000"
|
|
.LC41:
|
|
.ascii "Ftlwrite decrement_vpc_count %x = %d\012\000"
|
|
.section .rodata.FtlRecoverySuperblock.str1.1,"aMS",%progbits,1
|
|
.LC27:
|
|
.ascii "data prev_ppa = %x error...................\012\000"
|
|
.LC28:
|
|
.ascii "spuer block %x vpn is 0\012 \000"
|
|
.section .rodata.FtlVendorPartRead.str1.1,"aMS",%progbits,1
|
|
.LC36:
|
|
.ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
|
|
.section .rodata.FtlVpcTblFlush.str1.1,"aMS",%progbits,1
|
|
.LC39:
|
|
.ascii "FtlVpcTblFlush error = %x error count = %d\012\000"
|
|
.section .rodata.FtlWrite.str1.1,"aMS",%progbits,1
|
|
.LC44:
|
|
.ascii "FtlWrite: ecc error:%x %x %x\012\000"
|
|
.LC45:
|
|
.ascii "FtlWrite: lpa error:%x %x\012\000"
|
|
.section .rodata.FtlWriteToIDB.str1.1,"aMS",%progbits,1
|
|
.LC50:
|
|
.ascii "write_idblock %x %x\012\000"
|
|
.LC51:
|
|
.ascii "write_idblock fail! %x %x %x %x\012\000"
|
|
.LC52:
|
|
.ascii "%s idb buffer alloc fail\012\000"
|
|
.section .rodata.INSERT_DATA_LIST.str1.1,"aMS",%progbits,1
|
|
.LC1:
|
|
.ascii "\012!!!!! error @ func:%s - line:%d\012\000"
|
|
.section .rodata.__func__.10007,"a",%progbits
|
|
.set .LANCHOR167,. + 0
|
|
.type __func__.10007, %object
|
|
.size __func__.10007, 29
|
|
__func__.10007:
|
|
.ascii "allocate_new_data_superblock\000"
|
|
.section .rodata.__func__.10014,"a",%progbits
|
|
.set .LANCHOR60,. + 0
|
|
.type __func__.10014, %object
|
|
.size __func__.10014, 19
|
|
__func__.10014:
|
|
.ascii "get_new_active_ppa\000"
|
|
.section .rodata.__func__.10027,"a",%progbits
|
|
.set .LANCHOR145,. + 0
|
|
.type __func__.10027, %object
|
|
.size __func__.10027, 16
|
|
__func__.10027:
|
|
.ascii "update_vpc_list\000"
|
|
.section .rodata.__func__.10034,"a",%progbits
|
|
.set .LANCHOR146,. + 0
|
|
.type __func__.10034, %object
|
|
.size __func__.10034, 20
|
|
__func__.10034:
|
|
.ascii "decrement_vpc_count\000"
|
|
.section .rodata.__func__.10104,"a",%progbits
|
|
.set .LANCHOR169,. + 0
|
|
.type __func__.10104, %object
|
|
.size __func__.10104, 19
|
|
__func__.10104:
|
|
.ascii "FtlGcFreeTempBlock\000"
|
|
.section .rodata.__func__.10203,"a",%progbits
|
|
.set .LANCHOR174,. + 0
|
|
.type __func__.10203, %object
|
|
.size __func__.10203, 23
|
|
__func__.10203:
|
|
.ascii "rk_ftl_garbage_collect\000"
|
|
.section .rodata.__func__.10471,"a",%progbits
|
|
.set .LANCHOR136,. + 0
|
|
.type __func__.10471, %object
|
|
.size __func__.10471, 15
|
|
__func__.10471:
|
|
.ascii "FlashReadPages\000"
|
|
.section .rodata.__func__.10490,"a",%progbits
|
|
.set .LANCHOR141,. + 0
|
|
.type __func__.10490, %object
|
|
.size __func__.10490, 15
|
|
__func__.10490:
|
|
.ascii "FlashProgPages\000"
|
|
.section .rodata.__func__.10514,"a",%progbits
|
|
.set .LANCHOR76,. + 0
|
|
.type __func__.10514, %object
|
|
.size __func__.10514, 17
|
|
__func__.10514:
|
|
.ascii "FlashEraseBlocks\000"
|
|
.section .rodata.__func__.10633,"a",%progbits
|
|
.set .LANCHOR184,. + 0
|
|
.type __func__.10633, %object
|
|
.size __func__.10633, 14
|
|
__func__.10633:
|
|
.ascii "FtlWriteToIDB\000"
|
|
.section .rodata.__func__.9127,"a",%progbits
|
|
.set .LANCHOR168,. + 0
|
|
.type __func__.9127, %object
|
|
.size __func__.9127, 13
|
|
__func__.9127:
|
|
.ascii "FtlProgPages\000"
|
|
.section .rodata.__func__.9155,"a",%progbits
|
|
.set .LANCHOR176,. + 0
|
|
.type __func__.9155, %object
|
|
.size __func__.9155, 9
|
|
__func__.9155:
|
|
.ascii "FtlWrite\000"
|
|
.section .rodata.__func__.9237,"a",%progbits
|
|
.set .LANCHOR127,. + 0
|
|
.type __func__.9237, %object
|
|
.size __func__.9237, 14
|
|
__func__.9237:
|
|
.ascii "FtlBbt2Bitmap\000"
|
|
.section .rodata.__func__.9272,"a",%progbits
|
|
.set .LANCHOR140,. + 0
|
|
.type __func__.9272, %object
|
|
.size __func__.9272, 11
|
|
__func__.9272:
|
|
.ascii "FtlLoadBbt\000"
|
|
.section .rodata.__func__.9387,"a",%progbits
|
|
.set .LANCHOR48,. + 0
|
|
.type __func__.9387, %object
|
|
.size __func__.9387, 17
|
|
__func__.9387:
|
|
.ascii "INSERT_FREE_LIST\000"
|
|
.section .rodata.__func__.9392,"a",%progbits
|
|
.set .LANCHOR44,. + 0
|
|
.type __func__.9392, %object
|
|
.size __func__.9392, 17
|
|
__func__.9392:
|
|
.ascii "INSERT_DATA_LIST\000"
|
|
.section .rodata.__func__.9423,"a",%progbits
|
|
.set .LANCHOR49,. + 0
|
|
.type __func__.9423, %object
|
|
.size __func__.9423, 17
|
|
__func__.9423:
|
|
.ascii "List_remove_node\000"
|
|
.section .rodata.__func__.9455,"a",%progbits
|
|
.set .LANCHOR53,. + 0
|
|
.type __func__.9455, %object
|
|
.size __func__.9455, 22
|
|
__func__.9455:
|
|
.ascii "List_update_data_list\000"
|
|
.section .rodata.__func__.9464,"a",%progbits
|
|
.set .LANCHOR149,. + 0
|
|
.type __func__.9464, %object
|
|
.size __func__.9464, 16
|
|
__func__.9464:
|
|
.ascii "load_l2p_region\000"
|
|
.section .rodata.__func__.9497,"a",%progbits
|
|
.set .LANCHOR80,. + 0
|
|
.type __func__.9497, %object
|
|
.size __func__.9497, 26
|
|
__func__.9497:
|
|
.ascii "ftl_map_blk_alloc_new_blk\000"
|
|
.section .rodata.__func__.9508,"a",%progbits
|
|
.set .LANCHOR150,. + 0
|
|
.type __func__.9508, %object
|
|
.size __func__.9508, 15
|
|
__func__.9508:
|
|
.ascii "ftl_map_blk_gc\000"
|
|
.section .rodata.__func__.9523,"a",%progbits
|
|
.set .LANCHOR147,. + 0
|
|
.type __func__.9523, %object
|
|
.size __func__.9523, 31
|
|
__func__.9523:
|
|
.ascii "Ftl_write_map_blk_to_last_page\000"
|
|
.section .rodata.__func__.9537,"a",%progbits
|
|
.set .LANCHOR148,. + 0
|
|
.type __func__.9537, %object
|
|
.size __func__.9537, 16
|
|
__func__.9537:
|
|
.ascii "FtlMapWritePage\000"
|
|
.section .rodata.__func__.9562,"a",%progbits
|
|
.set .LANCHOR56,. + 0
|
|
.type __func__.9562, %object
|
|
.size __func__.9562, 22
|
|
__func__.9562:
|
|
.ascii "select_l2p_ram_region\000"
|
|
.section .rodata.__func__.9579,"a",%progbits
|
|
.set .LANCHOR152,. + 0
|
|
.type __func__.9579, %object
|
|
.size __func__.9579, 9
|
|
__func__.9579:
|
|
.ascii "log2phys\000"
|
|
.section .rodata.__func__.9643,"a",%progbits
|
|
.set .LANCHOR164,. + 0
|
|
.type __func__.9643, %object
|
|
.size __func__.9643, 15
|
|
__func__.9643:
|
|
.ascii "FtlVpcTblFlush\000"
|
|
.section .rodata.__func__.9665,"a",%progbits
|
|
.set .LANCHOR139,. + 0
|
|
.type __func__.9665, %object
|
|
.size __func__.9665, 14
|
|
__func__.9665:
|
|
.ascii "FtlScanSysBlk\000"
|
|
.section .rodata.__func__.9714,"a",%progbits
|
|
.set .LANCHOR177,. + 0
|
|
.type __func__.9714, %object
|
|
.size __func__.9714, 15
|
|
__func__.9714:
|
|
.ascii "FtlLoadSysInfo\000"
|
|
.section .rodata.__func__.9736,"a",%progbits
|
|
.set .LANCHOR179,. + 0
|
|
.type __func__.9736, %object
|
|
.size __func__.9736, 18
|
|
__func__.9736:
|
|
.ascii "FtlMapTblRecovery\000"
|
|
.section .rodata.__func__.9782,"a",%progbits
|
|
.set .LANCHOR153,. + 0
|
|
.type __func__.9782, %object
|
|
.size __func__.9782, 16
|
|
__func__.9782:
|
|
.ascii "FtlReUsePrevPpa\000"
|
|
.section .rodata.__func__.9816,"a",%progbits
|
|
.set .LANCHOR154,. + 0
|
|
.type __func__.9816, %object
|
|
.size __func__.9816, 22
|
|
__func__.9816:
|
|
.ascii "FtlRecoverySuperblock\000"
|
|
.section .rodata.__func__.9873,"a",%progbits
|
|
.set .LANCHOR59,. + 0
|
|
.type __func__.9873, %object
|
|
.size __func__.9873, 16
|
|
__func__.9873:
|
|
.ascii "make_superblock\000"
|
|
.section .rodata.__func__.9894,"a",%progbits
|
|
.set .LANCHOR135,. + 0
|
|
.type __func__.9894, %object
|
|
.size __func__.9894, 18
|
|
__func__.9894:
|
|
.ascii "SupperBlkListInit\000"
|
|
.section .rodata.__func__.9921,"a",%progbits
|
|
.set .LANCHOR158,. + 0
|
|
.type __func__.9921, %object
|
|
.size __func__.9921, 14
|
|
__func__.9921:
|
|
.ascii "ftl_check_vpc\000"
|
|
.section .rodata.__func__.9986,"a",%progbits
|
|
.set .LANCHOR143,. + 0
|
|
.type __func__.9986, %object
|
|
.size __func__.9986, 25
|
|
__func__.9986:
|
|
.ascii "allocate_data_superblock\000"
|
|
.section .rodata.decrement_vpc_count.str1.1,"aMS",%progbits,1
|
|
.LC21:
|
|
.ascii "decrement_vpc_count %x = %d\012\000"
|
|
.section .rodata.ftl_check_vpc.str1.1,"aMS",%progbits,1
|
|
.LC29:
|
|
.ascii "...%s enter...\012\000"
|
|
.LC30:
|
|
.ascii "FtlCheckVpc2 %x = %x %x\012\000"
|
|
.LC31:
|
|
.ascii "free blk vpc error %x = %x %x\012\000"
|
|
.section .rodata.ftl_map_blk_alloc_new_blk.str1.1,"aMS",%progbits,1
|
|
.LC10:
|
|
.ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
|
|
.section .rodata.ftl_scan_all_data.str1.1,"aMS",%progbits,1
|
|
.LC32:
|
|
.ascii "ftl_scan_all_data = %x\012\000"
|
|
.LC33:
|
|
.ascii "scan lpa = %x ppa= %x\012\000"
|
|
.LC34:
|
|
.ascii "lpa = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
|
|
.ascii "\000"
|
|
.section .rodata.load_l2p_region.str1.1,"aMS",%progbits,1
|
|
.LC24:
|
|
.ascii "region_id = %x phyAddr = %x\012\000"
|
|
.LC25:
|
|
.ascii "map_ppn:\000"
|
|
.LC26:
|
|
.ascii "load_l2p_region refresh = %x phyAddr = %x\012\000"
|
|
.section .rodata.rk_ftl_garbage_collect.str1.1,"aMS",%progbits,1
|
|
.LC42:
|
|
.ascii "g_gc_superblock_free %x %x %x %x %x\012\000"
|
|
.LC43:
|
|
.ascii "lpa=%x, ppa=%x\012\000"
|
|
.section .rodata.rknand_print_hex.str1.1,"aMS",%progbits,1
|
|
.LC2:
|
|
.ascii "%s 0x%x:\000"
|
|
.LC3:
|
|
.ascii "%x \000"
|
|
.LC4:
|
|
.ascii "%02x \000"
|
|
.LC5:
|
|
.ascii "\012\000"
|
|
.section .rodata.sftl_init.str1.1,"aMS",%progbits,1
|
|
.LC49:
|
|
.ascii "SFTL version: 5.0.58 20220814\000"
|
|
.hidden free
|
|
|