30165 lines
502 KiB
ArmAsm
30165 lines
502 KiB
ArmAsm
/*
|
|
* Copyright (c) 2016-2018, Fuzhou Rockchip Electronics Co., Ltd
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
* date: 2021-07-26
|
|
*/
|
|
.arch armv7-a
|
|
.eabi_attribute 20, 1
|
|
.eabi_attribute 21, 1
|
|
.eabi_attribute 23, 3
|
|
.eabi_attribute 24, 1
|
|
.eabi_attribute 25, 1
|
|
.eabi_attribute 26, 2
|
|
.eabi_attribute 30, 4
|
|
.eabi_attribute 34, 1
|
|
.file "rk_ftl_arm_v7.c"
|
|
.syntax unified
|
|
.text
|
|
.align 2
|
|
.fpu softvfp
|
|
.type ndelay, %function
|
|
ndelay:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L2
|
|
add r0, r0, #996
|
|
add r0, r0, #3
|
|
umull r0, r1, r0, r3
|
|
ldr r3, .L2+4
|
|
ldr r3, [r3, #8]
|
|
lsr r0, r1, #6
|
|
bx r3 @ indirect register sibling call
|
|
.L3:
|
|
.align 2
|
|
.L2:
|
|
.word 274877907
|
|
.word arm_delay_ops
|
|
.fnend
|
|
.size ndelay, .-ndelay
|
|
.align 2
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type flash_read_ecc, %function
|
|
flash_read_ecc:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L6
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
ldr r4, [r3, r0, lsl #3]
|
|
add r3, r3, r0, lsl #3
|
|
mov r0, #80
|
|
ldrb r3, [r3, #4] @ zero_extendqisi2
|
|
add r4, r4, r3, lsl #8
|
|
mov r3, #122
|
|
str r3, [r4, #2056]
|
|
bl ndelay
|
|
ldr r3, [r4, #2048]
|
|
ldr r0, [r4, #2048]
|
|
and r3, r3, #15
|
|
and r0, r0, #15
|
|
cmp r0, r3
|
|
movcc r0, r3
|
|
ldr r3, [r4, #2048]
|
|
and r3, r3, #15
|
|
cmp r3, r0
|
|
movcc r3, r0
|
|
ldr r0, [r4, #2048]
|
|
and r0, r0, #15
|
|
cmp r0, r3
|
|
movcc r0, r3
|
|
pop {r4, pc}
|
|
.L7:
|
|
.align 2
|
|
.L6:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size flash_read_ecc, .-flash_read_ecc
|
|
.align 2
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_set_blk_mode.part.9, %function
|
|
ftl_set_blk_mode.part.9:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L9
|
|
lsr r1, r0, #5
|
|
mov ip, #1
|
|
and r0, r0, #31
|
|
ldr r2, [r3, #32]
|
|
ldr r3, [r2, r1, lsl #2]
|
|
orr r0, r3, ip, lsl r0
|
|
str r0, [r2, r1, lsl #2]
|
|
bx lr
|
|
.L10:
|
|
.align 2
|
|
.L9:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size ftl_set_blk_mode.part.9, .-ftl_set_blk_mode.part.9
|
|
.align 2
|
|
.global FlashMemCmp8
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashMemCmp8, %function
|
|
FlashMemCmp8:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L25
|
|
ldrb r3, [r3, #36] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L20
|
|
ldrb r3, [r1, #1] @ zero_extendqisi2
|
|
ldrb ip, [r0, #1] @ zero_extendqisi2
|
|
cmp ip, r3
|
|
movne r3, #0
|
|
bne .L20
|
|
.L24:
|
|
mov r0, #0
|
|
bx lr
|
|
.L14:
|
|
cmp r3, r2
|
|
bne .L16
|
|
mov r0, #0
|
|
ldr pc, [sp], #4
|
|
.L20:
|
|
cmp r3, r2
|
|
beq .L24
|
|
str lr, [sp, #-4]!
|
|
.save {lr}
|
|
.L16:
|
|
ldrb lr, [r0, r3] @ zero_extendqisi2
|
|
ldrb ip, [r1, r3] @ zero_extendqisi2
|
|
add r3, r3, #1
|
|
cmp lr, ip
|
|
beq .L14
|
|
mov r0, r3
|
|
ldr pc, [sp], #4
|
|
.L26:
|
|
.align 2
|
|
.L25:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashMemCmp8, .-FlashMemCmp8
|
|
.align 2
|
|
.global FlashRsvdBlkChk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashRsvdBlkChk, %function
|
|
FlashRsvdBlkChk:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, .L28
|
|
ldrb ip, [r2, #37] @ zero_extendqisi2
|
|
ldr r3, [r2, #40]
|
|
mul r3, r3, ip
|
|
cmp r3, r1
|
|
movls r2, #0
|
|
movhi r2, #1
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
eor r0, r2, #1
|
|
bx lr
|
|
.L29:
|
|
.align 2
|
|
.L28:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashRsvdBlkChk, .-FlashRsvdBlkChk
|
|
.align 2
|
|
.global FlashGetRandomizer
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashGetRandomizer, %function
|
|
FlashGetRandomizer:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
and r3, r1, #127
|
|
ldr r2, .L39
|
|
lsl r3, r3, #1
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
ldrh r4, [r2, r3]
|
|
ldr r3, .L39+4
|
|
ldrb r3, [r3, #44] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L30
|
|
bl FlashRsvdBlkChk
|
|
cmp r0, #0
|
|
orrne r4, r4, #-1073741824
|
|
.L30:
|
|
mov r0, r4
|
|
pop {r4, pc}
|
|
.L40:
|
|
.align 2
|
|
.L39:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashGetRandomizer, .-FlashGetRandomizer
|
|
.align 2
|
|
.global FlashSetRandomizer
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashSetRandomizer, %function
|
|
FlashSetRandomizer:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L50
|
|
and r3, r1, #127
|
|
lsl r3, r3, #1
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldrh r5, [r2, r3]
|
|
ldr r3, .L50+4
|
|
ldrb r2, [r3, #44] @ zero_extendqisi2
|
|
mov r4, r3
|
|
cmp r2, #0
|
|
beq .L42
|
|
bl FlashRsvdBlkChk
|
|
cmp r0, #0
|
|
orrne r5, r5, #-1073741824
|
|
.L42:
|
|
ldr r3, [r4, r6, lsl #3]
|
|
str r5, [r3, #336]
|
|
pop {r4, r5, r6, pc}
|
|
.L51:
|
|
.align 2
|
|
.L50:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashSetRandomizer, .-FlashSetRandomizer
|
|
.align 2
|
|
.global FlashBlockAlignInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashBlockAlignInit, %function
|
|
FlashBlockAlignInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
cmp r0, #512
|
|
ldr r3, .L58
|
|
movhi r2, #1024
|
|
bhi .L57
|
|
cmp r0, #256
|
|
movhi r2, #512
|
|
bhi .L57
|
|
cmp r0, #128
|
|
movhi r2, #256
|
|
bhi .L57
|
|
str r0, [r3, #40]
|
|
bx lr
|
|
.L57:
|
|
str r2, [r3, #40]
|
|
bx lr
|
|
.L59:
|
|
.align 2
|
|
.L58:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashBlockAlignInit, .-FlashBlockAlignInit
|
|
.align 2
|
|
.global FlashReadCmd
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadCmd, %function
|
|
FlashReadCmd:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr ip, .L63
|
|
str lr, [sp, #-4]!
|
|
.save {lr}
|
|
add r2, ip, r0, lsl #3
|
|
ldr r3, [ip, r0, lsl #3]
|
|
ldr ip, [ip, #48]
|
|
ldrb r2, [r2, #4] @ zero_extendqisi2
|
|
ldrb ip, [ip, #7] @ zero_extendqisi2
|
|
lsl r2, r2, #8
|
|
cmp ip, #1
|
|
addeq ip, r3, r2
|
|
moveq lr, #38
|
|
add r3, r3, r2
|
|
mov r2, #0
|
|
streq lr, [ip, #2056]
|
|
str r2, [r3, #2056]
|
|
str r2, [r3, #2052]
|
|
str r2, [r3, #2052]
|
|
uxtb r2, r1
|
|
str r2, [r3, #2052]
|
|
lsr r2, r1, #8
|
|
str r2, [r3, #2052]
|
|
lsr r2, r1, #16
|
|
str r2, [r3, #2052]
|
|
mov r2, #48
|
|
str r2, [r3, #2056]
|
|
ldr lr, [sp], #4
|
|
b FlashSetRandomizer
|
|
.L64:
|
|
.align 2
|
|
.L63:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashReadCmd, .-FlashReadCmd
|
|
.align 2
|
|
.global FlashReadDpDataOutCmd
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadDpDataOutCmd, %function
|
|
FlashReadDpDataOutCmd:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr ip, .L70
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
uxtb r4, r1
|
|
lsr lr, r1, #8
|
|
add r2, ip, r0, lsl #3
|
|
ldr r3, [ip, r0, lsl #3]
|
|
ldrb ip, [ip, #68] @ zero_extendqisi2
|
|
ldrb r2, [r2, #4] @ zero_extendqisi2
|
|
cmp ip, #1
|
|
lsr ip, r1, #16
|
|
lsl r2, r2, #8
|
|
add r3, r3, r2
|
|
bne .L66
|
|
mov r2, #6
|
|
str r2, [r3, #2056]
|
|
mov r2, #0
|
|
str r2, [r3, #2052]
|
|
str r2, [r3, #2052]
|
|
str r4, [r3, #2052]
|
|
str lr, [r3, #2052]
|
|
str ip, [r3, #2052]
|
|
.L69:
|
|
mov r2, #224
|
|
str r2, [r3, #2056]
|
|
pop {r4, lr}
|
|
b FlashSetRandomizer
|
|
.L66:
|
|
mov r2, #0
|
|
str r2, [r3, #2056]
|
|
str r2, [r3, #2052]
|
|
str r2, [r3, #2052]
|
|
str r4, [r3, #2052]
|
|
str lr, [r3, #2052]
|
|
str ip, [r3, #2052]
|
|
mov ip, #5
|
|
str ip, [r3, #2056]
|
|
str r2, [r3, #2052]
|
|
str r2, [r3, #2052]
|
|
b .L69
|
|
.L71:
|
|
.align 2
|
|
.L70:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashReadDpDataOutCmd, .-FlashReadDpDataOutCmd
|
|
.align 2
|
|
.global FlashProgFirstCmd
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashProgFirstCmd, %function
|
|
FlashProgFirstCmd:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr ip, .L74
|
|
lsr r2, r1, #16
|
|
str lr, [sp, #-4]!
|
|
.save {lr}
|
|
ldr r3, [ip, r0, lsl #3]
|
|
add ip, ip, r0, lsl #3
|
|
ldrb ip, [ip, #4] @ zero_extendqisi2
|
|
add r3, r3, ip, lsl #8
|
|
mov ip, #128
|
|
str ip, [r3, #2056]
|
|
mov ip, #0
|
|
str ip, [r3, #2052]
|
|
str ip, [r3, #2052]
|
|
uxtb ip, r1
|
|
str ip, [r3, #2052]
|
|
lsr ip, r1, #8
|
|
str ip, [r3, #2052]
|
|
str r2, [r3, #2052]
|
|
ldr lr, [sp], #4
|
|
b FlashSetRandomizer
|
|
.L75:
|
|
.align 2
|
|
.L74:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashProgFirstCmd, .-FlashProgFirstCmd
|
|
.align 2
|
|
.global FlashEraseCmd
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashEraseCmd, %function
|
|
FlashEraseCmd:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr ip, .L82
|
|
cmp r2, #0
|
|
str lr, [sp, #-4]!
|
|
.save {lr}
|
|
ldr r3, [ip, r0, lsl #3]
|
|
add r0, ip, r0, lsl #3
|
|
ldrb r0, [r0, #4] @ zero_extendqisi2
|
|
lsl r0, r0, #8
|
|
beq .L77
|
|
add r2, r3, r0
|
|
mov lr, #96
|
|
str lr, [r2, #2056]
|
|
uxtb lr, r1
|
|
str lr, [r2, #2052]
|
|
lsr lr, r1, #8
|
|
str lr, [r2, #2052]
|
|
lsr lr, r1, #16
|
|
str lr, [r2, #2052]
|
|
ldr r2, [ip, #40]
|
|
add r1, r1, r2
|
|
.L77:
|
|
add r3, r3, r0
|
|
mov r2, #96
|
|
str r2, [r3, #2056]
|
|
uxtb r2, r1
|
|
str r2, [r3, #2052]
|
|
lsr r2, r1, #8
|
|
lsr r1, r1, #16
|
|
str r2, [r3, #2052]
|
|
mov r2, #208
|
|
str r1, [r3, #2052]
|
|
str r2, [r3, #2056]
|
|
ldr pc, [sp], #4
|
|
.L83:
|
|
.align 2
|
|
.L82:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashEraseCmd, .-FlashEraseCmd
|
|
.align 2
|
|
.global FlashProgDpSecondCmd
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashProgDpSecondCmd, %function
|
|
FlashProgDpSecondCmd:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
lsr r2, r1, #16
|
|
ldr lr, .L86
|
|
ldr r3, [lr, r0, lsl #3]
|
|
add ip, lr, r0, lsl #3
|
|
ldrb r4, [ip, #4] @ zero_extendqisi2
|
|
ldrb ip, [lr, #63] @ zero_extendqisi2
|
|
add r3, r3, r4, lsl #8
|
|
str ip, [r3, #2056]
|
|
mov ip, #0
|
|
str ip, [r3, #2052]
|
|
str ip, [r3, #2052]
|
|
uxtb ip, r1
|
|
str ip, [r3, #2052]
|
|
lsr ip, r1, #8
|
|
str ip, [r3, #2052]
|
|
str r2, [r3, #2052]
|
|
pop {r4, lr}
|
|
b FlashSetRandomizer
|
|
.L87:
|
|
.align 2
|
|
.L86:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashProgDpSecondCmd, .-FlashProgDpSecondCmd
|
|
.align 2
|
|
.global FlashProgSecondCmd
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashProgSecondCmd, %function
|
|
FlashProgSecondCmd:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L90
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
ldr r4, [r3, r0, lsl #3]
|
|
add r3, r3, r0, lsl #3
|
|
ldr r0, .L90+4
|
|
ldrb r5, [r3, #4] @ zero_extendqisi2
|
|
ldr r3, .L90+8
|
|
add r4, r4, r5, lsl #8
|
|
ldr r3, [r3, #4]
|
|
blx r3
|
|
mov r3, #16
|
|
str r3, [r4, #2056]
|
|
pop {r4, r5, r6, pc}
|
|
.L91:
|
|
.align 2
|
|
.L90:
|
|
.word .LANCHOR0
|
|
.word 64424500
|
|
.word arm_delay_ops
|
|
.fnend
|
|
.size FlashProgSecondCmd, .-FlashProgSecondCmd
|
|
.align 2
|
|
.global FlashProgDpFirstCmd
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashProgDpFirstCmd, %function
|
|
FlashProgDpFirstCmd:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, .L93
|
|
ldr r3, [r2, r0, lsl #3]
|
|
add r0, r2, r0, lsl #3
|
|
ldrb r2, [r2, #62] @ zero_extendqisi2
|
|
ldrb r1, [r0, #4] @ zero_extendqisi2
|
|
add r3, r3, r1, lsl #8
|
|
str r2, [r3, #2056]
|
|
bx lr
|
|
.L94:
|
|
.align 2
|
|
.L93:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashProgDpFirstCmd, .-FlashProgDpFirstCmd
|
|
.align 2
|
|
.global FlashReadStatus
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadStatus, %function
|
|
FlashReadStatus:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L97
|
|
mov r2, #112
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
ldr r5, [r3, r0, lsl #3]
|
|
add r3, r3, r0, lsl #3
|
|
mov r0, #80
|
|
ldrb r4, [r3, #4] @ zero_extendqisi2
|
|
add r3, r5, r4, lsl #8
|
|
add r4, r4, #8
|
|
str r2, [r3, #2056]
|
|
bl ndelay
|
|
ldr r0, [r5, r4, lsl #8]
|
|
pop {r4, r5, r6, pc}
|
|
.L98:
|
|
.align 2
|
|
.L97:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashReadStatus, .-FlashReadStatus
|
|
.align 2
|
|
.global js_hash
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type js_hash, %function
|
|
js_hash:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L102
|
|
add r1, r0, r1
|
|
.L100:
|
|
cmp r0, r1
|
|
bne .L101
|
|
mov r0, r3
|
|
bx lr
|
|
.L101:
|
|
lsr r2, r3, #2
|
|
ldrb ip, [r0], #1 @ zero_extendqisi2
|
|
add r2, r2, r3, lsl #5
|
|
add r2, r2, ip
|
|
eor r3, r3, r2
|
|
b .L100
|
|
.L103:
|
|
.align 2
|
|
.L102:
|
|
.word 1204201446
|
|
.fnend
|
|
.size js_hash, .-js_hash
|
|
.align 2
|
|
.global FlashLoadIdbInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashLoadIdbInfo, %function
|
|
FlashLoadIdbInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r0, #0
|
|
bx lr
|
|
.fnend
|
|
.size FlashLoadIdbInfo, .-FlashLoadIdbInfo
|
|
.align 2
|
|
.global FlashPrintInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashPrintInfo, %function
|
|
FlashPrintInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
bx lr
|
|
.fnend
|
|
.size FlashPrintInfo, .-FlashPrintInfo
|
|
.align 2
|
|
.global ToshibaSetRRPara
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ToshibaSetRRPara, %function
|
|
ToshibaSetRRPara:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
add r9, r1, r1, lsl #2
|
|
ldr r7, .L114
|
|
mov r6, r0
|
|
mov r5, #0
|
|
add r7, r1, r7
|
|
.L107:
|
|
ldr r8, .L114+4
|
|
ldrb r3, [r8, #85] @ zero_extendqisi2
|
|
cmp r5, r3
|
|
bcc .L111
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L111:
|
|
ldr r4, .L114+8
|
|
mov r3, #85
|
|
str r3, [r6, #8]
|
|
mov r0, #200
|
|
ldrsb r3, [r5, r4]
|
|
str r3, [r6, #4]
|
|
bl ndelay
|
|
ldrb r3, [r8, #84] @ zero_extendqisi2
|
|
cmp r3, #34
|
|
addeq r3, r5, r9
|
|
addeq r4, r4, r3
|
|
ldrsbeq r3, [r4, #5]
|
|
beq .L113
|
|
cmp r3, #35
|
|
addeq r3, r5, r9
|
|
ldrsbne r3, [r7]
|
|
addeq r4, r4, r3
|
|
ldrsbeq r3, [r4, #50]
|
|
.L113:
|
|
str r3, [r6]
|
|
add r5, r5, #1
|
|
b .L107
|
|
.L115:
|
|
.align 2
|
|
.L114:
|
|
.word .LANCHOR1+396
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+256
|
|
.fnend
|
|
.size ToshibaSetRRPara, .-ToshibaSetRRPara
|
|
.align 2
|
|
.global SamsungSetRRPara
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type SamsungSetRRPara, %function
|
|
SamsungSetRRPara:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L120
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r4, #0
|
|
ldr r8, .L120+4
|
|
mov r6, r0
|
|
mov r7, r3
|
|
mov r9, #161
|
|
add r1, r3, r1, lsl #2
|
|
mov r10, r4
|
|
add r5, r1, #3
|
|
.L117:
|
|
ldrb r3, [r8, #85] @ zero_extendqisi2
|
|
cmp r4, r3
|
|
bcc .L118
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L118:
|
|
str r9, [r6, #8]
|
|
mov r0, #300
|
|
str r10, [r6]
|
|
ldrsb r3, [r7, r4]
|
|
add r4, r4, #1
|
|
str r3, [r6]
|
|
ldrsb r3, [r5, #1]!
|
|
str r3, [r6]
|
|
bl ndelay
|
|
b .L117
|
|
.L121:
|
|
.align 2
|
|
.L120:
|
|
.word .LANCHOR1+404
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size SamsungSetRRPara, .-SamsungSetRRPara
|
|
.align 2
|
|
.global ftl_flash_suspend
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_flash_suspend, %function
|
|
ftl_flash_suspend:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L123
|
|
ldr r2, [r3, #88]
|
|
ldr r1, [r2]
|
|
str r1, [r3, #92]
|
|
ldr r1, [r2, #4]
|
|
str r1, [r3, #96]
|
|
ldr r1, [r2, #8]
|
|
str r1, [r3, #100]
|
|
ldr r1, [r2, #12]
|
|
str r1, [r3, #104]
|
|
ldr r1, [r2, #304]
|
|
str r1, [r3, #108]
|
|
ldr r1, [r2, #308]
|
|
str r1, [r3, #112]
|
|
ldr r1, [r2, #336]
|
|
ldr r2, [r2, #344]
|
|
str r1, [r3, #116]
|
|
str r2, [r3, #120]
|
|
bx lr
|
|
.L124:
|
|
.align 2
|
|
.L123:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size ftl_flash_suspend, .-ftl_flash_suspend
|
|
.global __aeabi_uidiv
|
|
.global __aeabi_uidivmod
|
|
.align 2
|
|
.global LogAddr2PhyAddr
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type LogAddr2PhyAddr, %function
|
|
LogAddr2PhyAddr:
|
|
.fnstart
|
|
@ args = 4, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
mov r9, r2
|
|
ldr r4, .L131
|
|
mov fp, r3
|
|
mov r10, r1
|
|
mov r7, r0
|
|
ldr r5, [r0, #4]
|
|
ldrh r2, [r4, #136]
|
|
ldrh r3, [r4, #138]
|
|
ldrh r6, [r4, #40]
|
|
smulbb r3, r3, r2
|
|
ldrb r2, [r4, #36] @ zero_extendqisi2
|
|
uxth r3, r3
|
|
cmp r2, #1
|
|
lsleq r6, r6, #1
|
|
ubfx r2, r5, #10, #16
|
|
mov r1, r3
|
|
str r3, [sp, #4]
|
|
mov r0, r2
|
|
uxtheq r6, r6
|
|
str r2, [sp]
|
|
bl __aeabi_uidiv
|
|
ldr r3, [sp, #4]
|
|
uxth r8, r0
|
|
ldr r2, [sp]
|
|
mov r1, r3
|
|
mov r0, r2
|
|
bl __aeabi_uidivmod
|
|
cmp r10, #1
|
|
uxth r1, r1
|
|
ubfx r0, r5, #0, #10
|
|
bne .L127
|
|
ldrb r3, [r4, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
addeq r0, r4, r0, lsl #1
|
|
ldrheq r0, [r0, #156]
|
|
.L127:
|
|
add r4, r4, r8, lsl #2
|
|
ldr r3, [r4, #1180]
|
|
mla r6, r6, r1, r3
|
|
ldrb r3, [sp, #48] @ zero_extendqisi2
|
|
cmp r3, #1
|
|
add r0, r6, r0
|
|
str r0, [r9]
|
|
movls r0, #0
|
|
str r8, [fp]
|
|
ldrhi r0, [r7, #4]
|
|
ldrhi r3, [r7, #40]
|
|
addhi r0, r0, #1024
|
|
subhi r0, r0, r3
|
|
clzhi r0, r0
|
|
lsrhi r0, r0, #5
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L132:
|
|
.align 2
|
|
.L131:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size LogAddr2PhyAddr, .-LogAddr2PhyAddr
|
|
.align 2
|
|
.global FlashReadStatusEN
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadStatusEN, %function
|
|
FlashReadStatusEN:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L146
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
ldr r4, [r3, r0, lsl #3]
|
|
add r0, r3, r0, lsl #3
|
|
ldrb r5, [r0, #4] @ zero_extendqisi2
|
|
ldr r0, [r3, #48]
|
|
ldrb r0, [r0, #8] @ zero_extendqisi2
|
|
cmp r0, #2
|
|
mov r0, r3
|
|
lsl r3, r5, #8
|
|
movne r2, #112
|
|
add r5, r5, #8
|
|
addne r3, r4, r3
|
|
strne r2, [r3, #2056]
|
|
bne .L139
|
|
cmp r2, #0
|
|
add r3, r4, r3
|
|
ldrbne r2, [r0, #66] @ zero_extendqisi2
|
|
ldrbeq r2, [r0, #65] @ zero_extendqisi2
|
|
str r2, [r3, #2056]
|
|
ldrb r0, [r0, #67] @ zero_extendqisi2
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
addne ip, r4, r5, lsl #8
|
|
bne .L138
|
|
.L139:
|
|
mov r0, #80
|
|
bl ndelay
|
|
ldr r0, [r4, r5, lsl #8]
|
|
uxtb r0, r0
|
|
pop {r4, r5, r6, pc}
|
|
.L140:
|
|
lsl r3, r2, #3
|
|
add r2, r2, #1
|
|
lsr r3, r1, r3
|
|
uxtb r3, r3
|
|
str r3, [ip, #4]
|
|
.L138:
|
|
cmp r2, r0
|
|
bcc .L140
|
|
b .L139
|
|
.L147:
|
|
.align 2
|
|
.L146:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashReadStatusEN, .-FlashReadStatusEN
|
|
.align 2
|
|
.global FlashWaitReadyEN
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashWaitReadyEN, %function
|
|
FlashWaitReadyEN:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
mov r6, r2
|
|
.L149:
|
|
mov r2, r6
|
|
mov r1, r5
|
|
mov r0, r4
|
|
bl FlashReadStatusEN
|
|
cmp r0, #255
|
|
beq .L149
|
|
tst r0, #64
|
|
popne {r4, r5, r6, pc}
|
|
mov r1, #3
|
|
mov r0, #1
|
|
bl usleep_range
|
|
b .L149
|
|
.fnend
|
|
.size FlashWaitReadyEN, .-FlashWaitReadyEN
|
|
.align 2
|
|
.global FlashScheduleEnSet
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashScheduleEnSet, %function
|
|
FlashScheduleEnSet:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L156
|
|
ldr r2, [r3, #1212]
|
|
str r0, [r3, #1212]
|
|
mov r0, r2
|
|
bx lr
|
|
.L157:
|
|
.align 2
|
|
.L156:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashScheduleEnSet, .-FlashScheduleEnSet
|
|
.align 2
|
|
.global FlashGetPageSize
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashGetPageSize, %function
|
|
FlashGetPageSize:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L159
|
|
ldr r3, [r3, #48]
|
|
ldrb r0, [r3, #9] @ zero_extendqisi2
|
|
bx lr
|
|
.L160:
|
|
.align 2
|
|
.L159:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashGetPageSize, .-FlashGetPageSize
|
|
.align 2
|
|
.global NandcReadDontCaseBusyEn
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcReadDontCaseBusyEn, %function
|
|
NandcReadDontCaseBusyEn:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
bx lr
|
|
.fnend
|
|
.size NandcReadDontCaseBusyEn, .-NandcReadDontCaseBusyEn
|
|
.align 2
|
|
.global NandcGetChipIf
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcGetChipIf, %function
|
|
NandcGetChipIf:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, .L163
|
|
add r3, r2, r0, lsl #3
|
|
ldr r0, [r2, r0, lsl #3]
|
|
ldrb r3, [r3, #4] @ zero_extendqisi2
|
|
add r3, r3, #8
|
|
add r0, r0, r3, lsl #8
|
|
bx lr
|
|
.L164:
|
|
.align 2
|
|
.L163:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcGetChipIf, .-NandcGetChipIf
|
|
.align 2
|
|
.global NandcSetDdrPara
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcSetDdrPara, %function
|
|
NandcSetDdrPara:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L166
|
|
ldr r2, [r3, #88]
|
|
lsl r3, r0, #8
|
|
orr r0, r3, r0, lsl #16
|
|
orr r0, r0, #1
|
|
str r0, [r2, #304]
|
|
bx lr
|
|
.L167:
|
|
.align 2
|
|
.L166:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcSetDdrPara, .-NandcSetDdrPara
|
|
.align 2
|
|
.global NandcSetDdrDiv
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcSetDdrDiv, %function
|
|
NandcSetDdrDiv:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L169
|
|
orr r0, r0, #16640
|
|
ldr r3, [r3, #88]
|
|
str r0, [r3, #344]
|
|
bx lr
|
|
.L170:
|
|
.align 2
|
|
.L169:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcSetDdrDiv, .-NandcSetDdrDiv
|
|
.align 2
|
|
.global NandcSetDdrMode
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcSetDdrMode, %function
|
|
NandcSetDdrMode:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L174
|
|
cmp r0, #0
|
|
ldr r2, [r3, #88]
|
|
ldr r3, [r2]
|
|
bfieq r3, r0, #13, #1
|
|
orrne r3, r3, #253952
|
|
str r3, [r2]
|
|
bx lr
|
|
.L175:
|
|
.align 2
|
|
.L174:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcSetDdrMode, .-NandcSetDdrMode
|
|
.align 2
|
|
.global NandcSetMode
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcSetMode, %function
|
|
NandcSetMode:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L183
|
|
ands r1, r0, #6
|
|
ldr r2, [r3, #88]
|
|
ldr r3, [r2]
|
|
bfieq r3, r1, #13, #1
|
|
beq .L179
|
|
movw r1, #8322
|
|
orr r3, r3, #24576
|
|
str r1, [r2, #344]
|
|
bfc r3, #15, #1
|
|
ldr r1, .L183+4
|
|
orr r3, r3, #196608
|
|
tst r0, #4
|
|
orrne r3, r3, #32768
|
|
str r1, [r2, #304]
|
|
mov r1, #38
|
|
str r1, [r2, #308]
|
|
mov r1, #39
|
|
str r1, [r2, #308]
|
|
.L179:
|
|
str r3, [r2]
|
|
mov r0, #0
|
|
bx lr
|
|
.L184:
|
|
.align 2
|
|
.L183:
|
|
.word .LANCHOR0
|
|
.word 1052675
|
|
.fnend
|
|
.size NandcSetMode, .-NandcSetMode
|
|
.align 2
|
|
.global NandcFlashCs
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcFlashCs, %function
|
|
NandcFlashCs:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L186
|
|
mov r2, #1
|
|
ldr r1, [r3, r0, lsl #3]
|
|
add r0, r3, r0, lsl #3
|
|
ldrb r0, [r0, #4] @ zero_extendqisi2
|
|
ldr r3, [r1]
|
|
lsl r2, r2, r0
|
|
bfi r3, r2, #0, #8
|
|
str r3, [r1]
|
|
bx lr
|
|
.L187:
|
|
.align 2
|
|
.L186:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcFlashCs, .-NandcFlashCs
|
|
.align 2
|
|
.global NandcFlashDeCs
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcFlashDeCs, %function
|
|
NandcFlashDeCs:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L189
|
|
ldr r2, [r3, r0, lsl #3]
|
|
ldr r3, [r2]
|
|
bfc r3, #0, #8
|
|
bfc r3, #17, #1
|
|
str r3, [r2]
|
|
bx lr
|
|
.L190:
|
|
.align 2
|
|
.L189:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcFlashDeCs, .-NandcFlashDeCs
|
|
.align 2
|
|
.global HynixSetRRPara
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type HynixSetRRPara, %function
|
|
HynixSetRRPara:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
mov r6, r0
|
|
ldr r0, .L200
|
|
mov r7, r3
|
|
mov r8, r1
|
|
mov r10, r2
|
|
ldr r3, [r0, #48]
|
|
mov r5, r0
|
|
add r4, r0, #1216
|
|
ldrb r3, [r3, #19] @ zero_extendqisi2
|
|
cmp r3, #6
|
|
moveq r3, #20
|
|
addeq r3, r3, r6, lsl #6
|
|
addeq r3, r3, r7, lsl #2
|
|
beq .L199
|
|
cmp r3, #7
|
|
bne .L194
|
|
mov r3, #160
|
|
mov r2, #28
|
|
smlabb r2, r3, r6, r2
|
|
mov r3, #10
|
|
smlabb r3, r3, r7, r2
|
|
.L199:
|
|
add r4, r4, r3
|
|
.L193:
|
|
add r3, r5, r6, lsl #3
|
|
ldr r9, [r5, r6, lsl #3]
|
|
mov r0, r6
|
|
ldrb fp, [r3, #4] @ zero_extendqisi2
|
|
sub r8, r8, #1
|
|
bl NandcFlashCs
|
|
mov r3, #54
|
|
add r8, r10, r8
|
|
sub r4, r4, #1
|
|
lsl fp, fp, #8
|
|
add r0, r9, fp
|
|
str r3, [r0, #2056]
|
|
sub r3, r10, #1
|
|
mov r10, r0
|
|
.L196:
|
|
cmp r3, r8
|
|
bne .L197
|
|
mov r3, #22
|
|
add r9, r9, fp
|
|
mov r0, r6
|
|
str r3, [r9, #2056]
|
|
bl NandcFlashDeCs
|
|
add r0, r5, r6
|
|
strb r7, [r0, #2068]
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L194:
|
|
cmp r3, #8
|
|
addeq r4, r4, #28
|
|
addeq r3, r7, r7, lsl #2
|
|
beq .L199
|
|
add r3, r7, #2
|
|
add r3, r3, r6, lsl #3
|
|
add r4, r4, r3, lsl #3
|
|
add r4, r4, #4
|
|
b .L193
|
|
.L197:
|
|
ldrb r2, [r3, #1]! @ zero_extendqisi2
|
|
mov r0, #200
|
|
str r2, [r10, #2052]
|
|
str r3, [sp, #4]
|
|
bl ndelay
|
|
ldrsb r2, [r4, #1]!
|
|
ldr r3, [sp, #4]
|
|
str r2, [r10, #2048]
|
|
b .L196
|
|
.L201:
|
|
.align 2
|
|
.L200:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size HynixSetRRPara, .-HynixSetRRPara
|
|
.align 2
|
|
.global FlashSetReadRetryDefault
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashSetReadRetryDefault, %function
|
|
FlashSetReadRetryDefault:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
ldr r5, .L209
|
|
ldr r3, [r5, #48]
|
|
ldrb r3, [r3, #19] @ zero_extendqisi2
|
|
sub r3, r3, #1
|
|
cmp r3, #7
|
|
pophi {r4, r5, r6, r7, r8, pc}
|
|
ldr r7, .L209+4
|
|
add r6, r5, #1216
|
|
mov r4, #0
|
|
add r6, r6, #4
|
|
.L205:
|
|
ldrb r3, [r7, r4, lsl #3] @ zero_extendqisi2
|
|
uxtb r0, r4
|
|
cmp r3, #173
|
|
bne .L204
|
|
mov r3, #0
|
|
mov r2, r6
|
|
ldrb r1, [r5, #1217] @ zero_extendqisi2
|
|
bl HynixSetRRPara
|
|
.L204:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
bne .L205
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L210:
|
|
.align 2
|
|
.L209:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2072
|
|
.fnend
|
|
.size FlashSetReadRetryDefault, .-FlashSetReadRetryDefault
|
|
.align 2
|
|
.global FlashWaitCmdDone
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashWaitCmdDone, %function
|
|
FlashWaitCmdDone:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
ldr r5, .L219
|
|
add r4, r5, r0, lsl #4
|
|
ldr r3, [r4, #2112]
|
|
cmp r3, #0
|
|
beq .L213
|
|
ldrb r7, [r4, #2104] @ zero_extendqisi2
|
|
mov r6, r0
|
|
add r5, r5, r6, lsl #2
|
|
mov r0, r7
|
|
bl NandcFlashCs
|
|
ldr r2, [r5, #1180]
|
|
mov r0, r7
|
|
ldr r1, [r4, #2108]
|
|
adds r2, r2, #0
|
|
movne r2, #1
|
|
bl FlashWaitReadyEN
|
|
mov r1, r0
|
|
mov r0, r7
|
|
bl NandcFlashDeCs
|
|
ldr r3, [r4, #2112]
|
|
sbfx r0, r1, #0, #1
|
|
str r0, [r3]
|
|
mov r3, #0
|
|
ldr r2, [r4, #2116]
|
|
str r3, [r4, #2112]
|
|
cmp r2, r3
|
|
strne r0, [r2]
|
|
strne r3, [r4, #2116]
|
|
.L213:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L220:
|
|
.align 2
|
|
.L219:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashWaitCmdDone, .-FlashWaitCmdDone
|
|
.align 2
|
|
.global NandcDelayns
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcDelayns, %function
|
|
NandcDelayns:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
bl ndelay
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.fnend
|
|
.size NandcDelayns, .-NandcDelayns
|
|
.align 2
|
|
.global NandcWaitFlashReadyNoDelay
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcWaitFlashReadyNoDelay, %function
|
|
NandcWaitFlashReadyNoDelay:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L229
|
|
push {r0, r1, r2, r4, r5, lr}
|
|
.save {r4, r5, lr}
|
|
.pad #12
|
|
ldr r4, .L229+4
|
|
ldr r5, [r3, r0, lsl #3]
|
|
.L225:
|
|
ldr r3, [r5]
|
|
str r3, [sp, #4]
|
|
ldr r3, [sp, #4]
|
|
tst r3, #512
|
|
bne .L226
|
|
mov r0, #10
|
|
bl ndelay
|
|
subs r4, r4, #1
|
|
bne .L225
|
|
mvn r0, #0
|
|
.L223:
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, pc}
|
|
.L226:
|
|
mov r0, #0
|
|
b .L223
|
|
.L230:
|
|
.align 2
|
|
.L229:
|
|
.word .LANCHOR0
|
|
.word 100000
|
|
.fnend
|
|
.size NandcWaitFlashReadyNoDelay, .-NandcWaitFlashReadyNoDelay
|
|
.align 2
|
|
.global NandcWaitFlashReady
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcWaitFlashReady, %function
|
|
NandcWaitFlashReady:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, lr}
|
|
.save {r4, r5, lr}
|
|
.pad #12
|
|
ldr r3, .L237
|
|
ldr r4, .L237+4
|
|
ldr r5, [r3, r0, lsl #3]
|
|
mov r0, #130
|
|
bl ndelay
|
|
.L233:
|
|
ldr r3, [r5]
|
|
str r3, [sp, #4]
|
|
ldr r3, [sp, #4]
|
|
tst r3, #512
|
|
bne .L234
|
|
mov r1, #2
|
|
mov r0, #1
|
|
bl usleep_range
|
|
subs r4, r4, #1
|
|
bne .L233
|
|
mvn r0, #0
|
|
.L231:
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, pc}
|
|
.L234:
|
|
mov r0, #0
|
|
b .L231
|
|
.L238:
|
|
.align 2
|
|
.L237:
|
|
.word .LANCHOR0
|
|
.word 100000
|
|
.fnend
|
|
.size NandcWaitFlashReady, .-NandcWaitFlashReady
|
|
.align 2
|
|
.global FlashReset
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReset, %function
|
|
FlashReset:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L241
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
ldr r5, [r3, r0, lsl #3]
|
|
add r3, r3, r0, lsl #3
|
|
ldrb r6, [r3, #4] @ zero_extendqisi2
|
|
bl NandcFlashCs
|
|
mov r3, #255
|
|
mov r0, r4
|
|
add r5, r5, r6, lsl #8
|
|
str r3, [r5, #2056]
|
|
bl NandcWaitFlashReady
|
|
mov r0, r4
|
|
pop {r4, r5, r6, lr}
|
|
b NandcFlashDeCs
|
|
.L242:
|
|
.align 2
|
|
.L241:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashReset, .-FlashReset
|
|
.align 2
|
|
.global flash_enter_slc_mode
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type flash_enter_slc_mode, %function
|
|
flash_enter_slc_mode:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
ldr r5, .L250
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
popeq {r4, r5, r6, r7, r8, pc}
|
|
mov r6, r0
|
|
bl NandcFlashCs
|
|
add r3, r5, r6, lsl #3
|
|
ldr r7, [r5, r6, lsl #3]
|
|
ldrb r8, [r3, #4] @ zero_extendqisi2
|
|
ldrb r3, [r3, #2072] @ zero_extendqisi2
|
|
cmp r3, #44
|
|
lsl r8, r8, #8
|
|
bne .L245
|
|
add r4, r7, r8
|
|
mov r3, #239
|
|
str r3, [r4, #2056]
|
|
mov r3, #145
|
|
str r3, [r4, #2052]
|
|
mov r0, #50
|
|
bl ndelay
|
|
mov r3, #0
|
|
mov r2, #1
|
|
str r3, [r4, #2048]
|
|
mov r0, #100
|
|
str r2, [r4, #2048]
|
|
str r3, [r4, #2048]
|
|
str r3, [r4, #2048]
|
|
bl ndelay
|
|
.L245:
|
|
mov r0, r6
|
|
add r7, r7, r8
|
|
bl NandcWaitFlashReadyNoDelay
|
|
mov r3, #218
|
|
mov r0, r6
|
|
str r3, [r7, #2056]
|
|
bl NandcWaitFlashReady
|
|
mov r3, #2
|
|
strb r3, [r5, #2232]
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L251:
|
|
.align 2
|
|
.L250:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size flash_enter_slc_mode, .-flash_enter_slc_mode
|
|
.align 2
|
|
.global flash_exit_slc_mode
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type flash_exit_slc_mode, %function
|
|
flash_exit_slc_mode:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
ldr r5, .L259
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
popeq {r4, r5, r6, r7, r8, pc}
|
|
mov r6, r0
|
|
bl NandcFlashCs
|
|
add r3, r5, r6, lsl #3
|
|
ldr r7, [r5, r6, lsl #3]
|
|
ldrb r8, [r3, #4] @ zero_extendqisi2
|
|
ldrb r3, [r3, #2072] @ zero_extendqisi2
|
|
cmp r3, #44
|
|
lsl r8, r8, #8
|
|
bne .L254
|
|
add r4, r7, r8
|
|
mov r3, #239
|
|
str r3, [r4, #2056]
|
|
mov r3, #145
|
|
str r3, [r4, #2052]
|
|
mov r0, #50
|
|
bl ndelay
|
|
mov r3, #2
|
|
mov r0, #100
|
|
str r3, [r4, #2048]
|
|
mov r3, #1
|
|
str r3, [r4, #2048]
|
|
mov r3, #0
|
|
str r3, [r4, #2048]
|
|
str r3, [r4, #2048]
|
|
bl ndelay
|
|
.L254:
|
|
mov r0, r6
|
|
add r7, r7, r8
|
|
bl NandcWaitFlashReadyNoDelay
|
|
mov r3, #223
|
|
mov r0, r6
|
|
str r3, [r7, #2056]
|
|
bl NandcWaitFlashReady
|
|
mov r3, #0
|
|
strb r3, [r5, #2232]
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L260:
|
|
.align 2
|
|
.L259:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size flash_exit_slc_mode, .-flash_exit_slc_mode
|
|
.align 2
|
|
.global FlashEraseBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashEraseBlock, %function
|
|
FlashEraseBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
mov r6, r2
|
|
bl NandcWaitFlashReady
|
|
mov r0, r4
|
|
bl NandcFlashCs
|
|
mov r2, r6
|
|
mov r1, r5
|
|
mov r0, r4
|
|
bl FlashEraseCmd
|
|
mov r0, r4
|
|
bl NandcWaitFlashReady
|
|
mov r1, r5
|
|
mov r0, r4
|
|
bl FlashReadStatus
|
|
mov r1, r0
|
|
mov r0, r4
|
|
bl NandcFlashDeCs
|
|
and r0, r1, #1
|
|
pop {r4, r5, r6, pc}
|
|
.fnend
|
|
.size FlashEraseBlock, .-FlashEraseBlock
|
|
.align 2
|
|
.global FlashSetInterfaceMode
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashSetInterfaceMode, %function
|
|
FlashSetInterfaceMode:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
mov lr, #0
|
|
ldr r4, .L286
|
|
mov r5, #239
|
|
mov r6, #128
|
|
mov r7, #1
|
|
mov r8, #35
|
|
mov r9, #32
|
|
ldrb r3, [r4, #2233] @ zero_extendqisi2
|
|
mov r10, #5
|
|
and r2, r3, #4
|
|
and r3, r3, #1
|
|
str r2, [sp, #4]
|
|
mov r2, lr
|
|
str r3, [sp]
|
|
.L273:
|
|
ldr r1, .L286+4
|
|
add r3, r4, lr
|
|
ldrb r3, [r3, #4] @ zero_extendqisi2
|
|
ldrb ip, [lr, r1] @ zero_extendqisi2
|
|
cmp ip, #69
|
|
cmpne ip, #152
|
|
beq .L264
|
|
cmp ip, #44
|
|
cmpne ip, #173
|
|
bne .L265
|
|
.L264:
|
|
cmp r0, #1
|
|
ldr r1, [r4, lr]
|
|
bne .L266
|
|
ldr fp, [sp]
|
|
cmp fp, #0
|
|
beq .L265
|
|
lsl r3, r3, #8
|
|
cmp ip, #173
|
|
add fp, r1, r3
|
|
str r5, [fp, #2056]
|
|
streq r0, [fp, #2052]
|
|
beq .L285
|
|
cmp ip, #44
|
|
streq r0, [fp, #2052]
|
|
strne r6, [fp, #2052]
|
|
streq r10, [fp, #2048]
|
|
strne r0, [fp, #2048]
|
|
.L271:
|
|
add r3, r1, r3
|
|
str r2, [r3, #2048]
|
|
str r2, [r3, #2048]
|
|
str r2, [r3, #2048]
|
|
.L265:
|
|
add lr, lr, #8
|
|
cmp lr, #32
|
|
bne .L273
|
|
mov r0, #0
|
|
bl NandcWaitFlashReady
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L266:
|
|
ldr fp, [sp, #4]
|
|
cmp fp, #0
|
|
beq .L265
|
|
lsl r3, r3, #8
|
|
cmp ip, #173
|
|
add fp, r1, r3
|
|
str r5, [fp, #2056]
|
|
streq r7, [fp, #2052]
|
|
streq r9, [fp, #2048]
|
|
beq .L271
|
|
cmp ip, #44
|
|
streq r7, [fp, #2052]
|
|
streq r8, [fp, #2048]
|
|
beq .L271
|
|
str r6, [fp, #2052]
|
|
.L285:
|
|
str r2, [fp, #2048]
|
|
b .L271
|
|
.L287:
|
|
.align 2
|
|
.L286:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2072
|
|
.fnend
|
|
.size FlashSetInterfaceMode, .-FlashSetInterfaceMode
|
|
.align 2
|
|
.global FlashReadSpare
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadSpare, %function
|
|
FlashReadSpare:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr ip, .L290
|
|
ldr r3, .L290+4
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r5, r2
|
|
ldr r4, [ip, r0, lsl #3]
|
|
add ip, ip, r0, lsl #3
|
|
ldrb r3, [r3, #477] @ zero_extendqisi2
|
|
ldrb r2, [ip, #4] @ zero_extendqisi2
|
|
lsl r3, r3, #9
|
|
add r4, r4, r2, lsl #8
|
|
mov r2, #0
|
|
str r2, [r4, #2056]
|
|
str r3, [r4, #2052]
|
|
lsr r3, r3, #8
|
|
str r3, [r4, #2052]
|
|
uxtb r3, r1
|
|
str r3, [r4, #2052]
|
|
lsr r3, r1, #8
|
|
lsr r1, r1, #16
|
|
str r3, [r4, #2052]
|
|
mov r3, #48
|
|
str r1, [r4, #2052]
|
|
str r3, [r4, #2056]
|
|
bl NandcWaitFlashReady
|
|
ldr r3, [r4, #2048]
|
|
strb r3, [r5]
|
|
pop {r4, r5, r6, pc}
|
|
.L291:
|
|
.align 2
|
|
.L290:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1
|
|
.fnend
|
|
.size FlashReadSpare, .-FlashReadSpare
|
|
.align 2
|
|
.global SandiskProgTestBadBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type SandiskProgTestBadBlock, %function
|
|
SandiskProgTestBadBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L294
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
ldr r4, [r3, r0, lsl #3]
|
|
add r3, r3, r0, lsl #3
|
|
ldrb r3, [r3, #4] @ zero_extendqisi2
|
|
add r4, r4, r3, lsl #8
|
|
mov r3, #162
|
|
str r3, [r4, #2056]
|
|
mov r3, #128
|
|
str r3, [r4, #2056]
|
|
mov r3, #0
|
|
str r3, [r4, #2052]
|
|
str r3, [r4, #2052]
|
|
uxtb r3, r1
|
|
str r3, [r4, #2052]
|
|
lsr r3, r1, #8
|
|
lsr r1, r1, #16
|
|
str r3, [r4, #2052]
|
|
mov r3, #16
|
|
str r1, [r4, #2052]
|
|
str r3, [r4, #2056]
|
|
bl NandcWaitFlashReady
|
|
mov r3, #112
|
|
mov r0, #80
|
|
str r3, [r4, #2056]
|
|
bl ndelay
|
|
ldr r0, [r4, #2048]
|
|
and r0, r0, #1
|
|
pop {r4, pc}
|
|
.L295:
|
|
.align 2
|
|
.L294:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size SandiskProgTestBadBlock, .-SandiskProgTestBadBlock
|
|
.align 2
|
|
.global SandiskSetRRPara
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type SandiskSetRRPara, %function
|
|
SandiskSetRRPara:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
mov r3, #239
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
str r3, [r0, #8]
|
|
mov r3, #17
|
|
mov r5, r0
|
|
mov r4, r1
|
|
str r3, [r0, #4]
|
|
mov r0, #200
|
|
bl ndelay
|
|
ldr r0, .L303
|
|
add r4, r4, r4, lsl #2
|
|
ldr r1, .L303+4
|
|
mov r2, #0
|
|
sub ip, r0, #45
|
|
.L297:
|
|
ldrb r3, [r1, #85] @ zero_extendqisi2
|
|
cmp r2, r3
|
|
bcc .L300
|
|
mov r0, #0
|
|
pop {r4, r5, r6, lr}
|
|
b NandcWaitFlashReady
|
|
.L300:
|
|
ldrb r3, [r1, #84] @ zero_extendqisi2
|
|
cmp r3, #67
|
|
add r3, r2, r4
|
|
addeq r3, ip, r3
|
|
addne r3, r0, r3
|
|
ldrsb r3, [r3, #5]
|
|
add r2, r2, #1
|
|
str r3, [r5]
|
|
b .L297
|
|
.L304:
|
|
.align 2
|
|
.L303:
|
|
.word .LANCHOR1+301
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size SandiskSetRRPara, .-SandiskSetRRPara
|
|
.align 2
|
|
.global micron_auto_read_calibration_config
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type micron_auto_read_calibration_config, %function
|
|
micron_auto_read_calibration_config:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
mov r6, r1
|
|
bl NandcWaitFlashReady
|
|
ldr r0, .L307
|
|
ldr r4, [r0, r5, lsl #3]
|
|
add r0, r0, r5, lsl #3
|
|
ldrb r3, [r0, #4] @ zero_extendqisi2
|
|
mov r0, #200
|
|
add r4, r4, r3, lsl #8
|
|
mov r3, #239
|
|
str r3, [r4, #2056]
|
|
mov r3, #150
|
|
str r3, [r4, #2052]
|
|
bl ndelay
|
|
mov r3, #0
|
|
str r6, [r4, #2048]
|
|
str r3, [r4, #2048]
|
|
str r3, [r4, #2048]
|
|
str r3, [r4, #2048]
|
|
pop {r4, r5, r6, pc}
|
|
.L308:
|
|
.align 2
|
|
.L307:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size micron_auto_read_calibration_config, .-micron_auto_read_calibration_config
|
|
.align 2
|
|
.global FlashEraseSLc2KBlocks
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashEraseSLc2KBlocks, %function
|
|
FlashEraseSLc2KBlocks:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.pad #16
|
|
mov r5, #0
|
|
ldr r8, .L320
|
|
mov r6, r0
|
|
mov r9, r1
|
|
mov r7, r5
|
|
ldr r10, .L320+4
|
|
.L310:
|
|
cmp r7, r9
|
|
bne .L315
|
|
mov r0, #0
|
|
add sp, sp, #16
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L315:
|
|
sub r3, r9, r7
|
|
add r2, sp, #8
|
|
uxtb r3, r3
|
|
mov r1, #0
|
|
add r0, r6, r5
|
|
str r3, [sp]
|
|
add r3, sp, #12
|
|
bl LogAddr2PhyAddr
|
|
ldrb r2, [r8, #2234] @ zero_extendqisi2
|
|
ldr r3, [sp, #12]
|
|
cmp r2, r3
|
|
mvnls r3, #0
|
|
strls r3, [r6, r5]
|
|
bls .L312
|
|
add r2, r8, r3
|
|
add r3, r8, r3, lsl #4
|
|
ldrb r4, [r2, #2236] @ zero_extendqisi2
|
|
strb r4, [r3, #2104]
|
|
mov r0, r4
|
|
bl NandcWaitFlashReady
|
|
mov r0, r4
|
|
bl NandcFlashCs
|
|
mov r2, #0
|
|
ldr r1, [sp, #8]
|
|
mov r0, r4
|
|
bl FlashEraseCmd
|
|
mov r0, r4
|
|
bl NandcWaitFlashReady
|
|
mov r0, r4
|
|
ldr r1, [sp, #8]
|
|
bl FlashReadStatus
|
|
sbfx r0, r0, #0, #1
|
|
ldr r1, [sp, #8]
|
|
str r0, [r6, r5]
|
|
mov r2, #0
|
|
ldr r3, [r8, #40]
|
|
mov r0, r4
|
|
add r1, r1, r3
|
|
bl FlashEraseCmd
|
|
mov r0, r4
|
|
bl NandcWaitFlashReady
|
|
mov r0, r4
|
|
ldr r1, [sp, #8]
|
|
bl FlashReadStatus
|
|
tst r0, #1
|
|
mvnne r3, #0
|
|
strne r3, [r6, r5]
|
|
ldr r3, [r6, r5]
|
|
cmn r3, #1
|
|
bne .L314
|
|
ldr r1, [sp, #8]
|
|
mov r0, r10
|
|
bl printk
|
|
.L314:
|
|
mov r0, r4
|
|
bl NandcFlashDeCs
|
|
.L312:
|
|
add r7, r7, #1
|
|
add r5, r5, #36
|
|
b .L310
|
|
.L321:
|
|
.align 2
|
|
.L320:
|
|
.word .LANCHOR0
|
|
.word .LC1
|
|
.fnend
|
|
.size FlashEraseSLc2KBlocks, .-FlashEraseSLc2KBlocks
|
|
.align 2
|
|
.global FlashEraseBlocks
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashEraseBlocks, %function
|
|
FlashEraseBlocks:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r8, r2
|
|
ldr r4, .L355
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
ldrb r5, [r4, #36] @ zero_extendqisi2
|
|
cmp r5, #0
|
|
moveq r9, r0
|
|
moveq r10, r1
|
|
beq .L324
|
|
mov r1, r2
|
|
bl FlashEraseSLc2KBlocks
|
|
.L322:
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L333:
|
|
mov r3, #36
|
|
add r2, sp, #8
|
|
mul r6, r3, r5
|
|
sub r3, r8, r5
|
|
uxtb r3, r3
|
|
mov r1, #0
|
|
str r3, [sp]
|
|
add r3, sp, #12
|
|
add fp, r9, r6
|
|
mov r0, fp
|
|
bl LogAddr2PhyAddr
|
|
ldrb r3, [r4, #2234] @ zero_extendqisi2
|
|
mov r7, r0
|
|
ldr r0, [sp, #12]
|
|
cmp r3, r0
|
|
mvnls r3, #0
|
|
strls r3, [r9, r6]
|
|
bls .L327
|
|
ldrb r3, [r4, #2244] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
add r3, r4, r0, lsl #4
|
|
moveq r7, #0
|
|
ldr r3, [r3, #2112]
|
|
cmp r3, #0
|
|
beq .L329
|
|
uxtb r0, r0
|
|
bl FlashWaitCmdDone
|
|
.L329:
|
|
ldr r2, [sp, #12]
|
|
cmp r7, #0
|
|
addne r6, r6, #36
|
|
mov r0, #0
|
|
addne r6, r9, r6
|
|
lsl r3, r2, #4
|
|
add r2, r4, r2
|
|
add r1, r4, r3
|
|
add r3, r4, r3
|
|
str r0, [r1, #2116]
|
|
ldr r0, [sp, #8]
|
|
strne r6, [r1, #2116]
|
|
ldrb r6, [r2, #2236] @ zero_extendqisi2
|
|
str r0, [r1, #2108]
|
|
str fp, [r1, #2112]
|
|
mov r0, r6
|
|
strb r6, [r3, #2104]
|
|
bl NandcFlashCs
|
|
cmp r10, #1
|
|
mov r0, r6
|
|
bne .L331
|
|
ldrb r3, [r4, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L331
|
|
bl flash_enter_slc_mode
|
|
.L332:
|
|
ldr r3, [sp, #12]
|
|
mov r0, r6
|
|
ldr r1, [sp, #8]
|
|
add r5, r5, r7
|
|
add r3, r4, r3, lsl #2
|
|
ldr r2, [r3, #1180]
|
|
adds r2, r2, #0
|
|
movne r2, #1
|
|
bl FlashWaitReadyEN
|
|
mov r2, r7
|
|
ldr r1, [sp, #8]
|
|
mov r0, r6
|
|
bl FlashEraseCmd
|
|
mov r0, r6
|
|
bl NandcFlashDeCs
|
|
.L327:
|
|
add r5, r5, #1
|
|
.L324:
|
|
cmp r5, r8
|
|
bcc .L333
|
|
ldr r6, .L355+4
|
|
mov r5, #0
|
|
.L334:
|
|
ldrb r3, [r4, #2234] @ zero_extendqisi2
|
|
cmp r5, r3
|
|
bcc .L336
|
|
ldr r3, [r4, #2248]
|
|
cmp r3, #0
|
|
bne .L337
|
|
.L338:
|
|
mov r0, #0
|
|
b .L322
|
|
.L331:
|
|
bl flash_exit_slc_mode
|
|
b .L332
|
|
.L336:
|
|
uxtb r0, r5
|
|
bl FlashWaitCmdDone
|
|
cmp r10, #1
|
|
bne .L335
|
|
ldrb r3, [r4, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L335
|
|
ldrb r0, [r6, r5, lsl #4] @ zero_extendqisi2
|
|
bl flash_exit_slc_mode
|
|
.L335:
|
|
add r5, r5, #1
|
|
b .L334
|
|
.L337:
|
|
ldrb r3, [r4, #2072] @ zero_extendqisi2
|
|
cmp r3, #69
|
|
moveq r3, #0
|
|
moveq r2, #36
|
|
moveq r1, r3
|
|
bne .L338
|
|
.L339:
|
|
cmp r3, r8
|
|
beq .L338
|
|
mul r0, r2, r3
|
|
add r3, r3, #1
|
|
str r1, [r9, r0]
|
|
b .L339
|
|
.L356:
|
|
.align 2
|
|
.L355:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2104
|
|
.fnend
|
|
.size FlashEraseBlocks, .-FlashEraseBlocks
|
|
.align 2
|
|
.global FlashReadDpCmd
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadDpCmd, %function
|
|
FlashReadDpCmd:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r7, r0
|
|
ldr r0, .L363
|
|
mov r8, r1
|
|
uxtb r10, r2
|
|
lsr r9, r2, #8
|
|
lsr r6, r2, #16
|
|
uxtb lr, r8
|
|
ldr r2, [r0, #48]
|
|
lsr ip, r8, #8
|
|
add r1, r0, r7, lsl #3
|
|
ldr r3, [r0, r7, lsl #3]
|
|
ldrb r4, [r1, #4] @ zero_extendqisi2
|
|
ldrb r1, [r0, #68] @ zero_extendqisi2
|
|
ldrb r2, [r2, #7] @ zero_extendqisi2
|
|
cmp r1, #1
|
|
lsl r4, r4, #8
|
|
lsr r1, r8, #16
|
|
bne .L358
|
|
cmp r2, #1
|
|
addeq r2, r3, r4
|
|
moveq r5, #38
|
|
add r4, r3, r4
|
|
streq r5, [r2, #2056]
|
|
ldrb r3, [r0, #61] @ zero_extendqisi2
|
|
mov r5, #0
|
|
ldrb r2, [r0, #60] @ zero_extendqisi2
|
|
mov r0, r7
|
|
str r2, [r4, #2056]
|
|
str r5, [r4, #2052]
|
|
str r5, [r4, #2052]
|
|
str lr, [r4, #2052]
|
|
str ip, [r4, #2052]
|
|
str r1, [r4, #2052]
|
|
str r3, [r4, #2056]
|
|
bl NandcWaitFlashReady
|
|
mov r3, #48
|
|
str r5, [r4, #2056]
|
|
str r5, [r4, #2052]
|
|
str r5, [r4, #2052]
|
|
str r10, [r4, #2052]
|
|
str r9, [r4, #2052]
|
|
str r6, [r4, #2052]
|
|
str r3, [r4, #2056]
|
|
.L360:
|
|
mov r1, r8
|
|
mov r0, r7
|
|
pop {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
b FlashSetRandomizer
|
|
.L358:
|
|
cmp r2, #1
|
|
addeq r2, r3, r4
|
|
moveq r5, #38
|
|
streq r5, [r2, #2056]
|
|
add r3, r3, r4
|
|
ldrb r2, [r0, #60] @ zero_extendqisi2
|
|
str r2, [r3, #2056]
|
|
ldrb r2, [r0, #61] @ zero_extendqisi2
|
|
str lr, [r3, #2052]
|
|
str ip, [r3, #2052]
|
|
str r1, [r3, #2052]
|
|
str r2, [r3, #2056]
|
|
mov r2, #48
|
|
str r10, [r3, #2052]
|
|
str r9, [r3, #2052]
|
|
str r6, [r3, #2052]
|
|
str r2, [r3, #2056]
|
|
b .L360
|
|
.L364:
|
|
.align 2
|
|
.L363:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashReadDpCmd, .-FlashReadDpCmd
|
|
.align 2
|
|
.global ftl_flash_de_init
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_flash_de_init, %function
|
|
ftl_flash_de_init:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
mov r0, #0
|
|
ldr r4, .L376
|
|
bl NandcWaitFlashReady
|
|
bl FlashSetReadRetryDefault
|
|
ldr r0, [r4, #2252]
|
|
cmp r0, #0
|
|
beq .L366
|
|
mov r0, #0
|
|
bl flash_enter_slc_mode
|
|
.L367:
|
|
ldrb r3, [r4, #2256] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L368
|
|
ldrb r3, [r4, #2233] @ zero_extendqisi2
|
|
tst r3, #1
|
|
beq .L368
|
|
mov r0, #1
|
|
bl FlashSetInterfaceMode
|
|
mov r0, #1
|
|
bl NandcSetMode
|
|
mov r3, #0
|
|
strb r3, [r4, #2256]
|
|
.L368:
|
|
ldr r3, [r4]
|
|
mov r0, #0
|
|
str r0, [r3, #336]
|
|
pop {r4, pc}
|
|
.L366:
|
|
bl flash_exit_slc_mode
|
|
b .L367
|
|
.L377:
|
|
.align 2
|
|
.L376:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size ftl_flash_de_init, .-ftl_flash_de_init
|
|
.align 2
|
|
.global NandcRandmzSel
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcRandmzSel, %function
|
|
NandcRandmzSel:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L379
|
|
ldr r3, [r3, r0, lsl #3]
|
|
str r1, [r3, #336]
|
|
bx lr
|
|
.L380:
|
|
.align 2
|
|
.L379:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcRandmzSel, .-NandcRandmzSel
|
|
.global __aeabi_idiv
|
|
.align 2
|
|
.global NandcTimeCfg
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcTimeCfg, %function
|
|
NandcTimeCfg:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #0
|
|
bl rknand_get_clk_rate
|
|
ldr r1, .L392
|
|
bl __aeabi_idiv
|
|
ldr r3, .L392+4
|
|
cmp r0, #250
|
|
movwgt r2, #8354
|
|
ldr r3, [r3, #88]
|
|
bgt .L390
|
|
cmp r0, #220
|
|
ble .L384
|
|
.L391:
|
|
movw r2, #8322
|
|
b .L390
|
|
.L384:
|
|
cmp r0, #185
|
|
movwgt r2, #4226
|
|
bgt .L390
|
|
cmp r0, #160
|
|
movwgt r2, #4194
|
|
bgt .L390
|
|
cmp r4, #35
|
|
movwls r2, #4193
|
|
bls .L390
|
|
cmp r4, #99
|
|
movwls r2, #4225
|
|
bhi .L391
|
|
.L390:
|
|
str r2, [r3, #4]
|
|
pop {r4, pc}
|
|
.L393:
|
|
.align 2
|
|
.L392:
|
|
.word 1000000
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcTimeCfg, .-NandcTimeCfg
|
|
.align 2
|
|
.global FlashTimingCfg
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashTimingCfg, %function
|
|
FlashTimingCfg:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
sub r3, r0, #4160
|
|
sub r3, r3, #33
|
|
bic r3, r3, #32
|
|
cmp r3, #1
|
|
bls .L395
|
|
movw r3, #8322
|
|
cmp r0, r3
|
|
bne .L396
|
|
.L395:
|
|
ldr r3, .L397
|
|
ldr r3, [r3, #88]
|
|
str r0, [r3, #4]
|
|
.L396:
|
|
ldr r3, .L397+4
|
|
ldrb r0, [r3, #489] @ zero_extendqisi2
|
|
b NandcTimeCfg
|
|
.L398:
|
|
.align 2
|
|
.L397:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1
|
|
.fnend
|
|
.size FlashTimingCfg, .-FlashTimingCfg
|
|
.align 2
|
|
.global NandcInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcInit, %function
|
|
NandcInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L402
|
|
mov r2, #1
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r1, #0
|
|
mov r5, #0
|
|
mov r4, r3
|
|
str r2, [r3, #12]
|
|
mov r2, #2
|
|
str r2, [r3, #20]
|
|
mov r2, #3
|
|
stm r3, {r0, r1}
|
|
str r0, [r3, #8]
|
|
str r0, [r3, #16]
|
|
str r0, [r3, #24]
|
|
str r0, [r3, #88]
|
|
str r2, [r3, #28]
|
|
ldr r2, [r0]
|
|
and r2, r2, #253952
|
|
ubfx ip, r2, #13, #1
|
|
bfi r2, r1, #13, #1
|
|
ldr r1, [r0, #352]
|
|
orr r2, r2, #256
|
|
str ip, [r3, #2260]
|
|
movw ip, #2049
|
|
ubfx r1, r1, #16, #4
|
|
str r1, [r3, #2264]
|
|
ldr r1, [r0, #352]
|
|
cmp r1, ip
|
|
str r1, [r3, #2268]
|
|
moveq r3, #8
|
|
streq r3, [r4, #2264]
|
|
str r2, [r0]
|
|
mov r0, #40
|
|
ldr r3, [r4, #88]
|
|
str r5, [r3, #336]
|
|
bl NandcTimeCfg
|
|
ldr r3, [r4, #88]
|
|
movw r2, #8322
|
|
mov r0, #36864
|
|
str r2, [r3, #344]
|
|
ldr r2, .L402+4
|
|
str r2, [r3, #304]
|
|
bl ftl_malloc
|
|
str r0, [r4, #2272]
|
|
str r0, [r4, #2276]
|
|
add r0, r0, #32768
|
|
str r0, [r4, #2280]
|
|
str r5, [r4, #2300]
|
|
str r5, [r4, #2308]
|
|
pop {r4, r5, r6, pc}
|
|
.L403:
|
|
.align 2
|
|
.L402:
|
|
.word .LANCHOR0
|
|
.word 1579009
|
|
.fnend
|
|
.size NandcInit, .-NandcInit
|
|
.align 2
|
|
.global NandcGetTimeCfg
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcGetTimeCfg, %function
|
|
NandcGetTimeCfg:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr ip, .L406
|
|
str lr, [sp, #-4]!
|
|
.save {lr}
|
|
ldr lr, [ip, #88]
|
|
ldr lr, [lr, #4]
|
|
str lr, [r0]
|
|
ldr r0, [ip, #88]
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldr r1, [ip, #88]
|
|
ldr r1, [r1, #304]
|
|
str r1, [r2]
|
|
ldr r1, [ip, #88]
|
|
ldr r2, [r1, #308]
|
|
ldr r1, [r1, #344]
|
|
uxtb r2, r2
|
|
orr r2, r2, r1, lsl #16
|
|
str r2, [r3]
|
|
ldr pc, [sp], #4
|
|
.L407:
|
|
.align 2
|
|
.L406:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcGetTimeCfg, .-NandcGetTimeCfg
|
|
.align 2
|
|
.global NandcBchSel
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcBchSel, %function
|
|
NandcBchSel:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L416
|
|
mov ip, #1
|
|
mov r1, #0
|
|
ldr r2, [r3, #88]
|
|
str r0, [r3, #2312]
|
|
mov r3, r1
|
|
str ip, [r2, #8]
|
|
mov ip, #16
|
|
cmp r0, ip
|
|
bfi r3, ip, #8, #8
|
|
bfi r3, r1, #18, #1
|
|
bne .L409
|
|
.L412:
|
|
bfc r3, #4, #1
|
|
.L410:
|
|
orr r3, r3, #1
|
|
str r3, [r2, #12]
|
|
bx lr
|
|
.L409:
|
|
cmp r0, #24
|
|
orreq r3, r3, #16
|
|
beq .L410
|
|
cmp r0, #40
|
|
orr r3, r3, #262144
|
|
orr r3, r3, #16
|
|
bne .L410
|
|
b .L412
|
|
.L417:
|
|
.align 2
|
|
.L416:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcBchSel, .-NandcBchSel
|
|
.align 2
|
|
.global FlashBchSel
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashBchSel, %function
|
|
FlashBchSel:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L419
|
|
strb r0, [r3, #2316]
|
|
b NandcBchSel
|
|
.L420:
|
|
.align 2
|
|
.L419:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashBchSel, .-FlashBchSel
|
|
.align 2
|
|
.global ftl_flash_resume
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_flash_resume, %function
|
|
ftl_flash_resume:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L430
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r5, #0
|
|
ldr r6, .L430+4
|
|
mov r4, r3
|
|
ldr r2, [r3, #88]
|
|
ldr r1, [r3, #92]
|
|
str r1, [r2]
|
|
ldr r1, [r3, #96]
|
|
ldr r2, [r3, #88]
|
|
str r1, [r2, #4]
|
|
ldr r1, [r3, #100]
|
|
str r1, [r2, #8]
|
|
ldr r1, [r3, #104]
|
|
str r1, [r2, #12]
|
|
ldr r1, [r3, #108]
|
|
str r1, [r2, #304]
|
|
ldr r1, [r3, #112]
|
|
str r1, [r2, #308]
|
|
ldr r1, [r3, #116]
|
|
str r1, [r2, #336]
|
|
ldr r1, [r3, #120]
|
|
str r1, [r2, #344]
|
|
.L423:
|
|
ldrb r3, [r6, r5, lsl #3] @ zero_extendqisi2
|
|
sub r3, r3, #1
|
|
uxtb r3, r3
|
|
cmp r3, #253
|
|
bhi .L422
|
|
uxtb r0, r5
|
|
bl FlashReset
|
|
.L422:
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
bne .L423
|
|
ldrb r3, [r4, #2256] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L424
|
|
mov r0, #1
|
|
bl NandcSetMode
|
|
ldrb r0, [r4, #2233] @ zero_extendqisi2
|
|
bl FlashSetInterfaceMode
|
|
ldrb r0, [r4, #2233] @ zero_extendqisi2
|
|
bl NandcSetMode
|
|
ldrb r0, [r4, #109] @ zero_extendqisi2
|
|
bl NandcSetDdrPara
|
|
.L424:
|
|
ldr r3, [r4, #48]
|
|
pop {r4, r5, r6, lr}
|
|
ldrb r0, [r3, #20] @ zero_extendqisi2
|
|
b FlashBchSel
|
|
.L431:
|
|
.align 2
|
|
.L430:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2072
|
|
.fnend
|
|
.size ftl_flash_resume, .-ftl_flash_resume
|
|
.align 2
|
|
.global ftl_nandc_get_irq_status
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_nandc_get_irq_status, %function
|
|
ftl_nandc_get_irq_status:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r0, [r0, #372]
|
|
bx lr
|
|
.fnend
|
|
.size ftl_nandc_get_irq_status, .-ftl_nandc_get_irq_status
|
|
.align 2
|
|
.global rk_nandc_flash_ready
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_nandc_flash_ready, %function
|
|
rk_nandc_flash_ready:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, [r0, #368]
|
|
orr r3, r3, #2
|
|
str r3, [r0, #368]
|
|
ldr r3, [r0, #364]
|
|
bic r3, r3, #2
|
|
str r3, [r0, #364]
|
|
bx lr
|
|
.fnend
|
|
.size rk_nandc_flash_ready, .-rk_nandc_flash_ready
|
|
.align 2
|
|
.global NandcIqrWaitFlashReady
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcIqrWaitFlashReady, %function
|
|
NandcIqrWaitFlashReady:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
bx lr
|
|
.fnend
|
|
.size NandcIqrWaitFlashReady, .-NandcIqrWaitFlashReady
|
|
.align 2
|
|
.global rk_nandc_flash_xfer_completed
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_nandc_flash_xfer_completed, %function
|
|
rk_nandc_flash_xfer_completed:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, [r0, #368]
|
|
orr r3, r3, #1
|
|
str r3, [r0, #368]
|
|
ldr r3, [r0, #364]
|
|
bic r3, r3, #1
|
|
str r3, [r0, #364]
|
|
bx lr
|
|
.fnend
|
|
.size rk_nandc_flash_xfer_completed, .-rk_nandc_flash_xfer_completed
|
|
.align 2
|
|
.global NandcSendDumpDataStart
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcSendDumpDataStart, %function
|
|
NandcSendDumpDataStart:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, [r0, #16]
|
|
.pad #8
|
|
sub sp, sp, #8
|
|
ldr r3, .L438
|
|
str r2, [sp, #4]
|
|
ldr r2, [sp, #4]
|
|
bfc r2, #2, #1
|
|
str r2, [sp, #4]
|
|
ldr r2, [sp, #4]
|
|
str r2, [r0, #16]
|
|
str r3, [r0, #8]
|
|
orr r3, r3, #4
|
|
str r3, [r0, #8]
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
bx lr
|
|
.L439:
|
|
.align 2
|
|
.L438:
|
|
.word 538969130
|
|
.fnend
|
|
.size NandcSendDumpDataStart, .-NandcSendDumpDataStart
|
|
.align 2
|
|
.global NandcSendDumpDataDone
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcSendDumpDataDone, %function
|
|
NandcSendDumpDataDone:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
.pad #8
|
|
sub sp, sp, #8
|
|
.L441:
|
|
ldr r3, [r0, #8]
|
|
str r3, [sp, #4]
|
|
ldr r3, [sp, #4]
|
|
tst r3, #1048576
|
|
beq .L441
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
bx lr
|
|
.fnend
|
|
.size NandcSendDumpDataDone, .-NandcSendDumpDataDone
|
|
.align 2
|
|
.global NandcXferStart
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcXferStart, %function
|
|
NandcXferStart:
|
|
.fnstart
|
|
@ args = 8, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov ip, #16
|
|
ldr r4, .L463
|
|
mov r5, #0
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
ldr r8, [sp, #56]
|
|
ldr r6, [r4, r0, lsl #3]
|
|
add r0, r4, r0, lsl #3
|
|
ldr r7, [r6, #12]
|
|
ldrb r0, [r0, #4] @ zero_extendqisi2
|
|
bfi r7, ip, #8, #8
|
|
bfi r7, r5, #3, #1
|
|
bfi r5, r1, #1, #1
|
|
bfi r7, r0, #5, #3
|
|
orr r5, r5, #8
|
|
mov r0, #1
|
|
bfi r5, r0, #5, #2
|
|
lsr r3, r3, r0
|
|
orr r5, r5, #536870912
|
|
orr r5, r5, #1024
|
|
bfi r5, r3, #4, #1
|
|
ldr r3, [r4, #2264]
|
|
cmp r3, #3
|
|
bls .L446
|
|
ldr r3, [r6, #16]
|
|
str r3, [sp, #12]
|
|
ldr r3, [sp, #12]
|
|
bfc r3, #2, #1
|
|
str r3, [sp, #12]
|
|
ldr r3, [sp, #60]
|
|
cmp r8, #0
|
|
cmpeq r3, #0
|
|
beq .L447
|
|
cmp r1, #0
|
|
bne .L448
|
|
.L456:
|
|
add r2, r2, #1
|
|
cmp r8, #0
|
|
asr r2, r2, #1
|
|
movne r0, r8
|
|
bfi r5, r2, #22, #6
|
|
ldreq r0, [r4, #2276]
|
|
.L450:
|
|
ldr r3, [r4, #2280]
|
|
ubfx r10, r5, #22, #5
|
|
mov r9, r1
|
|
mov r2, r1
|
|
lsl r1, r10, #10
|
|
str r0, [r4, #2284]
|
|
str r3, [r4, #2288]
|
|
bl rknand_dma_map_single
|
|
mov r2, r9
|
|
str r0, [r4, #2292]
|
|
lsl r1, r10, #7
|
|
ldr r0, [r4, #2288]
|
|
bl rknand_dma_map_single
|
|
mov r3, #1
|
|
str r0, [r4, #2296]
|
|
str r3, [r4, #2300]
|
|
mov r2, #16
|
|
ldr r3, [r4, #2292]
|
|
tst r8, #3
|
|
clz r1, r9
|
|
lsr r1, r1, #5
|
|
str r3, [r6, #20]
|
|
ldr r3, [r4, #2296]
|
|
str r3, [r6, #24]
|
|
mov r3, #0
|
|
str r3, [sp, #12]
|
|
ldr r3, [sp, #12]
|
|
bfi r3, r2, #9, #5
|
|
moveq r2, #2
|
|
str r3, [sp, #12]
|
|
ldr r3, [sp, #12]
|
|
orr r3, r3, #448
|
|
str r3, [sp, #12]
|
|
ldreq r3, [sp, #12]
|
|
bfieq r3, r2, #3, #3
|
|
streq r3, [sp, #12]
|
|
ldr r3, [sp, #12]
|
|
orr r3, r3, #4
|
|
str r3, [sp, #12]
|
|
ldr r3, [sp, #12]
|
|
bfi r3, r1, #1, #1
|
|
str r3, [sp, #12]
|
|
ldr r3, [sp, #12]
|
|
orr r3, r3, #1
|
|
str r3, [sp, #12]
|
|
.L447:
|
|
ldr r3, [sp, #12]
|
|
str r3, [r6, #16]
|
|
.L446:
|
|
str r7, [r6, #12]
|
|
str r5, [r6, #8]
|
|
orr r5, r5, #4
|
|
str r5, [r6, #8]
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L448:
|
|
ldr r3, [r4, #2312]
|
|
lsr r10, r2, #1
|
|
ldr ip, [sp, #60]
|
|
cmp r3, #25
|
|
movcc r3, #64
|
|
movcs r3, #128
|
|
str r3, [sp, #4]
|
|
mov r3, #0
|
|
mov r0, r3
|
|
.L452:
|
|
cmp r0, r10
|
|
bcs .L456
|
|
ldr lr, [sp, #60]
|
|
add r0, r0, #1
|
|
cmp lr, #0
|
|
bic lr, r3, #3
|
|
ldrne fp, [ip], #4 @ unaligned
|
|
mvneq r9, #0
|
|
ldrne r9, [r4, #2280]
|
|
ldreq fp, [r4, #2280]
|
|
strne fp, [r9, lr]
|
|
streq r9, [fp, lr]
|
|
ldr lr, [sp, #4]
|
|
add r3, r3, lr
|
|
b .L452
|
|
.L464:
|
|
.align 2
|
|
.L463:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcXferStart, .-NandcXferStart
|
|
.align 2
|
|
.global Ftl_log2
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_log2, %function
|
|
Ftl_log2:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r1, #0
|
|
mov r2, #1
|
|
.L466:
|
|
cmp r2, r0
|
|
uxth r3, r1
|
|
add r1, r1, #1
|
|
bls .L467
|
|
sub r0, r3, #1
|
|
uxth r0, r0
|
|
bx lr
|
|
.L467:
|
|
lsl r2, r2, #1
|
|
b .L466
|
|
.fnend
|
|
.size Ftl_log2, .-Ftl_log2
|
|
.align 2
|
|
.global FtlPrintInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlPrintInfo, %function
|
|
FtlPrintInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
bx lr
|
|
.fnend
|
|
.size FtlPrintInfo, .-FtlPrintInfo
|
|
.align 2
|
|
.global FtlSysBlkNumInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSysBlkNumInit, %function
|
|
FtlSysBlkNumInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L470
|
|
movw r2, #2324
|
|
movw r1, #2334
|
|
cmp r0, #24
|
|
movcc r0, #24
|
|
ldrh r2, [r3, r2]
|
|
ldrh r1, [r3, r1]
|
|
str r0, [r3, #2320]
|
|
mul r2, r0, r2
|
|
sub r0, r1, r0
|
|
movw r1, #2332
|
|
strh r0, [r3, r1] @ movhi
|
|
mov r0, #0
|
|
ldr r1, [r3, #2340]
|
|
str r2, [r3, #2328]
|
|
sub r2, r1, r2
|
|
str r2, [r3, #2336]
|
|
bx lr
|
|
.L471:
|
|
.align 2
|
|
.L470:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlSysBlkNumInit, .-FtlSysBlkNumInit
|
|
.align 2
|
|
.global FtlConstantsInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlConstantsInit, %function
|
|
FtlConstantsInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
movw r3, #2344
|
|
ldr r4, .L500
|
|
movw r1, #2348
|
|
mov r5, r0
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
ldrh r6, [r0, #8]
|
|
ldrh r2, [r0, #10]
|
|
ldrh lr, [r0, #14]
|
|
strh r6, [r4, r3] @ movhi
|
|
movw r3, #2346
|
|
strh r2, [r4, r3] @ movhi
|
|
ldrh r3, [r0, #12]
|
|
ldr r0, .L500+4
|
|
strh r3, [r4, r1] @ movhi
|
|
movw r1, #2334
|
|
strh lr, [r4, r1] @ movhi
|
|
mov r1, #0
|
|
.L473:
|
|
strb r1, [r1, r0]
|
|
add r1, r1, #1
|
|
cmp r1, #32
|
|
bne .L473
|
|
ldrh r0, [r5, #14]
|
|
ldrh r1, [r5, #20]
|
|
cmp r1, r0, lsr #8
|
|
bcs .L474
|
|
uxtb r10, r3
|
|
ldr r9, .L500+4
|
|
lsl r1, r10, #1
|
|
uxtb r1, r1
|
|
str r1, [sp]
|
|
sub r1, r2, #1
|
|
mul r1, r3, r1
|
|
str r1, [sp, #8]
|
|
mov r1, #0
|
|
.L475:
|
|
cmp r1, r3
|
|
bcs .L477
|
|
ldr ip, [sp, #8]
|
|
sub r7, r1, r3
|
|
add r7, r9, r7
|
|
uxtb r0, r1
|
|
str r7, [sp, #12]
|
|
add ip, r1, ip
|
|
add ip, r9, ip
|
|
str ip, [sp, #4]
|
|
mov ip, #0
|
|
mov r8, ip
|
|
b .L478
|
|
.L476:
|
|
ldr r7, [sp, #12]
|
|
add fp, r10, r0
|
|
add r8, r8, #1
|
|
strb r0, [r7, ip]
|
|
ldr r7, [sp, #4]
|
|
strb fp, [r7, ip]
|
|
ldr r7, [sp]
|
|
add r0, r7, r0
|
|
uxtb r0, r0
|
|
.L478:
|
|
cmp r8, r2
|
|
add ip, ip, r3
|
|
bcc .L476
|
|
add r1, r1, #1
|
|
b .L475
|
|
.L477:
|
|
lsl r2, r2, #1
|
|
movw r1, #2346
|
|
lsr lr, lr, #1
|
|
strh r2, [r4, r1] @ movhi
|
|
movw r2, #2334
|
|
strh lr, [r4, r2] @ movhi
|
|
.L474:
|
|
ldr fp, .L500+8
|
|
movw r2, #2382
|
|
ldrb r9, [r4, #36] @ zero_extendqisi2
|
|
mov r1, #5
|
|
strh r1, [r4, r2] @ movhi
|
|
cmp r6, #1
|
|
mov r1, #0
|
|
strheq r6, [r4, r2] @ movhi
|
|
strh r1, [fp] @ movhi
|
|
cmp r9, #0
|
|
mov r1, #4352
|
|
movw r2, #2386
|
|
strh r1, [r4, r2] @ movhi
|
|
movne r1, #384
|
|
strhne r1, [r4, r2] @ movhi
|
|
movw r2, #2346
|
|
ldrh r7, [r4, r2]
|
|
movw r2, #2324
|
|
ldrh r8, [r5, #16]
|
|
ldrh r1, [r5, #18]
|
|
smulbb r7, r7, r3
|
|
str r1, [sp, #4]
|
|
uxth r7, r7
|
|
strh r7, [r4, r2] @ movhi
|
|
movw r2, #2334
|
|
ldrh r6, [r4, r2]
|
|
movw r2, #2388
|
|
smulbb r3, r3, r6
|
|
strh r3, [r4, r2] @ movhi
|
|
smulbb r2, r7, r8
|
|
movw r3, #2390
|
|
strh r8, [r4, r3] @ movhi
|
|
movw r3, #2392
|
|
strh r1, [r4, r3] @ movhi
|
|
movw r3, #2394
|
|
strh r2, [r4, r3] @ movhi
|
|
movw r2, #2396
|
|
ldrh r3, [r5, #20]
|
|
mov r0, r3
|
|
strh r3, [r4, r2] @ movhi
|
|
str r3, [sp]
|
|
bl Ftl_log2
|
|
ldr r3, [sp]
|
|
movw r2, #2398
|
|
strh r0, [r4, r2] @ movhi
|
|
mov r10, r0
|
|
ldr r0, .L500+12
|
|
cmp r6, #1024
|
|
ldr r1, [sp, #4]
|
|
lsl r2, r3, #9
|
|
uxth r2, r2
|
|
mul r1, r3, r1
|
|
strh r2, [r0] @ movhi
|
|
lsr r2, r2, #8
|
|
movw r0, #2402
|
|
strh r2, [r4, r0] @ movhi
|
|
movw r2, #2404
|
|
ldrh r0, [r5, #26]
|
|
strh r0, [r4, r2] @ movhi
|
|
mul r2, r6, r7
|
|
str r2, [r4, #2340]
|
|
uxtbhi r2, r6
|
|
strhhi r2, [fp] @ movhi
|
|
ldrh r2, [fp]
|
|
sub r2, r6, r2
|
|
lsl r6, r6, #6
|
|
mul r2, r7, r2
|
|
mul r2, r3, r2
|
|
mul r8, r8, r2
|
|
movw r2, #2386
|
|
ldrh r0, [r4, r2]
|
|
asr r8, r8, #11
|
|
lsl r0, r0, #3
|
|
str r8, [r4, #2408]
|
|
bl __aeabi_idiv
|
|
uxth r0, r0
|
|
movw r3, #2412
|
|
mov r1, r7
|
|
cmp r0, #4
|
|
movls r2, #4
|
|
strhhi r0, [r4, r3] @ movhi
|
|
strhls r2, [r4, r3] @ movhi
|
|
cmp r9, #0
|
|
movne r2, #640
|
|
movwne r3, #2386
|
|
strhne r2, [r4, r3] @ movhi
|
|
movw r3, #2386
|
|
ldrh r3, [r4, r3]
|
|
movw r2, #2414
|
|
asr r3, r3, r10
|
|
add r10, r10, #9
|
|
asr r6, r6, r10
|
|
add r3, r3, #2
|
|
strh r3, [r4, r2] @ movhi
|
|
ldr r3, .L500+16
|
|
strh r6, [r3] @ movhi
|
|
uxth r6, r6
|
|
mul r3, r6, r7
|
|
add r6, r6, #8
|
|
str r3, [r4, #2420]
|
|
movw r3, #2412
|
|
ldrh r0, [r4, r3]
|
|
bl __aeabi_uidiv
|
|
uxtah r0, r6, r0
|
|
cmp r7, #1
|
|
add r3, r4, #2320
|
|
addeq r0, r0, #4
|
|
str r0, [r4, #2320]
|
|
ldrh r0, [r3]
|
|
bl FtlSysBlkNumInit
|
|
ldr r5, [r4, #2336]
|
|
movw r2, #2390
|
|
ldr r3, [r4, #2320]
|
|
mov r0, #2048
|
|
str r3, [r4, #2424]
|
|
lsl r3, r5, #2
|
|
ldrh r5, [r4, r2]
|
|
mul r5, r5, r3
|
|
movw r3, #2398
|
|
ldrh r3, [r4, r3]
|
|
add r3, r3, #9
|
|
lsr r5, r5, r3
|
|
movw r3, #2428
|
|
add r5, r5, #2
|
|
uxth r5, r5
|
|
strh r5, [r4, r3] @ movhi
|
|
movw r3, #2396
|
|
ldrh r6, [r4, r3]
|
|
mov r1, r6
|
|
bl __aeabi_idiv
|
|
movw r1, #2412
|
|
movw r3, #2430
|
|
ldrh r2, [r4, r1]
|
|
strh r0, [r4, r3] @ movhi
|
|
mov r3, #0
|
|
str r3, [r4, #2432]
|
|
ldrb ip, [r4, #152] @ zero_extendqisi2
|
|
add r3, r2, #3
|
|
strh r3, [r4, r1] @ movhi
|
|
ldr r3, [r4, #2420]
|
|
cmp ip, #0
|
|
addne r2, r2, #4
|
|
add r0, r3, #3
|
|
strhne r2, [r4, r1] @ movhi
|
|
str r0, [r4, #2420]
|
|
addne r3, r3, #5
|
|
bne .L499
|
|
cmp r0, #7
|
|
bhi .L488
|
|
mov r3, #8
|
|
.L499:
|
|
str r3, [r4, #2420]
|
|
.L488:
|
|
movw r2, #2436
|
|
mov r3, #0
|
|
strh r3, [r4, r2] @ movhi
|
|
movw r3, #2332
|
|
ldrh r1, [r4, r3]
|
|
mov r0, #0
|
|
lsr r3, r1, #3
|
|
add r3, r3, r1, lsl #1
|
|
add r3, r3, #52
|
|
add r5, r3, r5, lsl #2
|
|
cmp r5, r6, lsl #9
|
|
movcc r3, #1
|
|
strhcc r3, [r4, r2] @ movhi
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L501:
|
|
.align 2
|
|
.L500:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2350
|
|
.word .LANCHOR0+2384
|
|
.word .LANCHOR0+2400
|
|
.word .LANCHOR0+2416
|
|
.fnend
|
|
.size FtlConstantsInit, .-FtlConstantsInit
|
|
.align 2
|
|
.global IsBlkInVendorPart
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type IsBlkInVendorPart, %function
|
|
IsBlkInVendorPart:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, .L509
|
|
movw r3, #2438
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L508
|
|
movw r1, #2412
|
|
ldr r3, [r2, #2440]
|
|
ldrh r2, [r2, r1]
|
|
add r2, r3, r2, lsl #1
|
|
.L504:
|
|
cmp r3, r2
|
|
bne .L505
|
|
.L508:
|
|
mov r0, #0
|
|
bx lr
|
|
.L505:
|
|
ldrh r1, [r3], #2
|
|
cmp r0, r1
|
|
bne .L504
|
|
mov r0, #1
|
|
bx lr
|
|
.L510:
|
|
.align 2
|
|
.L509:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size IsBlkInVendorPart, .-IsBlkInVendorPart
|
|
.align 2
|
|
.global FtlCacheMetchLpa
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlCacheMetchLpa, %function
|
|
FtlCacheMetchLpa:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L521
|
|
ldr r3, [r2, #2444]
|
|
cmp r3, #0
|
|
beq .L514
|
|
push {r4, r5, lr}
|
|
.save {r4, r5, lr}
|
|
mov r5, #36
|
|
ldr r4, [r2, #2448]
|
|
mov r2, #0
|
|
.L513:
|
|
mla ip, r5, r2, r4
|
|
ldr lr, [ip, #16]
|
|
cmp lr, r1
|
|
movhi ip, #0
|
|
movls ip, #1
|
|
cmp lr, r0
|
|
movcc ip, #0
|
|
cmp ip, #0
|
|
bne .L515
|
|
add r2, r2, #1
|
|
cmp r3, r2
|
|
bne .L513
|
|
mov r0, ip
|
|
pop {r4, r5, pc}
|
|
.L514:
|
|
mov r0, r3
|
|
bx lr
|
|
.L515:
|
|
mov r0, #1
|
|
pop {r4, r5, pc}
|
|
.L522:
|
|
.align 2
|
|
.L521:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlCacheMetchLpa, .-FtlCacheMetchLpa
|
|
.align 2
|
|
.global FtlGetCap
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGetCap, %function
|
|
FtlGetCap:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L524
|
|
ldr r0, [r3, #2432]
|
|
bx lr
|
|
.L525:
|
|
.align 2
|
|
.L524:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlGetCap, .-FtlGetCap
|
|
.align 2
|
|
.global FtlGetCapacity
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGetCapacity, %function
|
|
FtlGetCapacity:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L527
|
|
ldr r0, [r3, #2432]
|
|
bx lr
|
|
.L528:
|
|
.align 2
|
|
.L527:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlGetCapacity, .-FtlGetCapacity
|
|
.align 2
|
|
.global ftl_get_density
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_get_density, %function
|
|
ftl_get_density:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L530
|
|
ldr r0, [r3, #2432]
|
|
bx lr
|
|
.L531:
|
|
.align 2
|
|
.L530:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size ftl_get_density, .-ftl_get_density
|
|
.align 2
|
|
.global FtlGetLpn
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGetLpn, %function
|
|
FtlGetLpn:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L533
|
|
ldr r0, [r3, #2452]
|
|
bx lr
|
|
.L534:
|
|
.align 2
|
|
.L533:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlGetLpn, .-FtlGetLpn
|
|
.align 2
|
|
.global FtlBbmMapBadBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbmMapBadBlock, %function
|
|
FtlBbmMapBadBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, lr}
|
|
.save {r4, r5, r6, r7, lr}
|
|
.pad #12
|
|
movw r3, #2388
|
|
ldr r4, .L537
|
|
mov r5, r0
|
|
ldrh r7, [r4, r3]
|
|
mov r1, r7
|
|
bl __aeabi_uidiv
|
|
uxth r6, r0
|
|
mov r1, r7
|
|
mov r0, r5
|
|
bl __aeabi_uidivmod
|
|
add r2, r4, r6, lsl #2
|
|
uxth r3, r1
|
|
ldr r2, [r2, #2484]
|
|
lsr r1, r3, #5
|
|
and ip, r3, #31
|
|
mov lr, #1
|
|
ldr r0, [r2, r1, lsl #2]
|
|
orr r0, r0, lr, lsl ip
|
|
str r0, [r2, r1, lsl #2]
|
|
mov r2, r6
|
|
str r0, [sp]
|
|
mov r1, r5
|
|
ldr r0, .L537+4
|
|
bl printk
|
|
add r3, r4, #2448
|
|
mov r0, #0
|
|
ldrh r2, [r3, #14]
|
|
add r2, r2, #1
|
|
strh r2, [r3, #14] @ movhi
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, pc}
|
|
.L538:
|
|
.align 2
|
|
.L537:
|
|
.word .LANCHOR0
|
|
.word .LC2
|
|
.fnend
|
|
.size FtlBbmMapBadBlock, .-FtlBbmMapBadBlock
|
|
.align 2
|
|
.global FtlBbmIsBadBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbmIsBadBlock, %function
|
|
FtlBbmIsBadBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
movw r3, #2388
|
|
ldr r5, .L541
|
|
mov r7, r0
|
|
ldrh r6, [r5, r3]
|
|
mov r1, r6
|
|
bl __aeabi_uidivmod
|
|
mov r0, r7
|
|
uxth r4, r1
|
|
mov r1, r6
|
|
bl __aeabi_uidiv
|
|
uxth r0, r0
|
|
lsr r2, r4, #5
|
|
add r5, r5, r0, lsl #2
|
|
and r4, r4, #31
|
|
ldr r3, [r5, #2484]
|
|
ldr r0, [r3, r2, lsl #2]
|
|
lsr r0, r0, r4
|
|
and r0, r0, #1
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L542:
|
|
.align 2
|
|
.L541:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlBbmIsBadBlock, .-FtlBbmIsBadBlock
|
|
.align 2
|
|
.global FtlBbtInfoPrint
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbtInfoPrint, %function
|
|
FtlBbtInfoPrint:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
bx lr
|
|
.fnend
|
|
.size FtlBbtInfoPrint, .-FtlBbtInfoPrint
|
|
.align 2
|
|
.global FtlBbtCalcTotleCnt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbtCalcTotleCnt, %function
|
|
FtlBbtCalcTotleCnt:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L552
|
|
movw r2, #2388
|
|
movw r1, #2346
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r5, #0
|
|
mov r4, r5
|
|
ldrh r2, [r3, r2]
|
|
ldrh r6, [r3, r1]
|
|
mul r6, r6, r2
|
|
.L545:
|
|
uxth r0, r5
|
|
cmp r0, r6
|
|
blt .L547
|
|
mov r0, r4
|
|
pop {r4, r5, r6, pc}
|
|
.L547:
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
add r5, r5, #1
|
|
addne r4, r4, #1
|
|
uxthne r4, r4
|
|
b .L545
|
|
.L553:
|
|
.align 2
|
|
.L552:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlBbtCalcTotleCnt, .-FtlBbtCalcTotleCnt
|
|
.align 2
|
|
.global V2P_block
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type V2P_block, %function
|
|
V2P_block:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
movw r3, #2348
|
|
ldr r4, .L556
|
|
mov r5, r1
|
|
mov r7, r0
|
|
ldrh r6, [r4, r3]
|
|
mov r1, r6
|
|
bl __aeabi_uidiv
|
|
movw r3, #2388
|
|
smulbb r5, r6, r5
|
|
ldrh r4, [r4, r3]
|
|
mov r1, r6
|
|
smulbb r4, r4, r0
|
|
mov r0, r7
|
|
bl __aeabi_uidivmod
|
|
add r0, r5, r1
|
|
add r0, r4, r0
|
|
uxth r0, r0
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L557:
|
|
.align 2
|
|
.L556:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size V2P_block, .-V2P_block
|
|
.align 2
|
|
.global P2V_plane
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type P2V_plane, %function
|
|
P2V_plane:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L560
|
|
movw r2, #2348
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
ldrh r5, [r3, r2]
|
|
movw r2, #2388
|
|
ldrh r1, [r3, r2]
|
|
bl __aeabi_uidiv
|
|
mov r1, r5
|
|
smulbb r4, r0, r5
|
|
mov r0, r6
|
|
bl __aeabi_uidivmod
|
|
add r1, r4, r1
|
|
uxth r0, r1
|
|
pop {r4, r5, r6, pc}
|
|
.L561:
|
|
.align 2
|
|
.L560:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size P2V_plane, .-P2V_plane
|
|
.align 2
|
|
.global P2V_block_in_plane
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type P2V_block_in_plane, %function
|
|
P2V_block_in_plane:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
movw r3, #2388
|
|
ldr r4, .L564
|
|
ldrh r1, [r4, r3]
|
|
bl __aeabi_uidivmod
|
|
movw r3, #2348
|
|
uxth r0, r1
|
|
ldrh r1, [r4, r3]
|
|
bl __aeabi_uidiv
|
|
uxth r0, r0
|
|
pop {r4, pc}
|
|
.L565:
|
|
.align 2
|
|
.L564:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size P2V_block_in_plane, .-P2V_block_in_plane
|
|
.align 2
|
|
.global ftl_cmp_data_ver
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_cmp_data_ver, %function
|
|
ftl_cmp_data_ver:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
cmp r0, r1
|
|
bls .L567
|
|
sub r0, r0, r1
|
|
cmp r0, #-2147483648
|
|
movhi r0, #0
|
|
movls r0, #1
|
|
bx lr
|
|
.L567:
|
|
sub r0, r1, r0
|
|
cmp r0, #-2147483648
|
|
movls r0, #0
|
|
movhi r0, #1
|
|
bx lr
|
|
.fnend
|
|
.size ftl_cmp_data_ver, .-ftl_cmp_data_ver
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueEmpty
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueEmpty, %function
|
|
FtlFreeSysBlkQueueEmpty:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L570
|
|
ldrh r0, [r3, #6]
|
|
clz r0, r0
|
|
lsr r0, r0, #5
|
|
bx lr
|
|
.L571:
|
|
.align 2
|
|
.L570:
|
|
.word .LANCHOR0+2516
|
|
.fnend
|
|
.size FtlFreeSysBlkQueueEmpty, .-FtlFreeSysBlkQueueEmpty
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueFull
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueFull, %function
|
|
FtlFreeSysBlkQueueFull:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L573
|
|
ldrh r0, [r3, #6]
|
|
sub r0, r0, #1024
|
|
clz r0, r0
|
|
lsr r0, r0, #5
|
|
bx lr
|
|
.L574:
|
|
.align 2
|
|
.L573:
|
|
.word .LANCHOR0+2516
|
|
.fnend
|
|
.size FtlFreeSysBlkQueueFull, .-FtlFreeSysBlkQueueFull
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueIn
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueIn, %function
|
|
FtlFreeSysBlkQueueIn:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
sub r3, r0, #1
|
|
movw r2, #65533
|
|
uxth r3, r3
|
|
cmp r3, r2
|
|
bxhi lr
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
ldr r4, .L588
|
|
ldrh r3, [r4, #6]
|
|
cmp r3, #1024
|
|
popeq {r4, r5, r6, r7, r8, pc}
|
|
cmp r1, #0
|
|
mov r5, r0
|
|
beq .L577
|
|
ldr r6, .L588+4
|
|
ldr r3, [r6, #-3612]
|
|
cmp r3, #0
|
|
bne .L577
|
|
bl P2V_block_in_plane
|
|
mov r7, r0
|
|
ldr r0, [r6, #-3608]
|
|
lsl r3, r5, #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r3, [r0, #4]
|
|
bl FlashEraseBlocks
|
|
ldr r2, [r6, #-3604]
|
|
lsl r0, r7, #1
|
|
ldrh r3, [r2, r0]
|
|
add r3, r3, #1
|
|
strh r3, [r2, r0] @ movhi
|
|
ldr r3, [r6, #-3600]
|
|
add r3, r3, #1
|
|
str r3, [r6, #-3600]
|
|
.L577:
|
|
ldrh r3, [r4, #6]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #6] @ movhi
|
|
ldrh r3, [r4, #4]
|
|
add r2, r4, r3, lsl #1
|
|
add r3, r3, #1
|
|
ubfx r3, r3, #0, #10
|
|
strh r5, [r2, #8] @ movhi
|
|
strh r3, [r4, #4] @ movhi
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L589:
|
|
.align 2
|
|
.L588:
|
|
.word .LANCHOR0+2516
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size FtlFreeSysBlkQueueIn, .-FtlFreeSysBlkQueueIn
|
|
.align 2
|
|
.global FtlFreeSysBLkSort
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBLkSort, %function
|
|
FtlFreeSysBLkSort:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L603
|
|
ldrh r2, [r3, #6]
|
|
cmp r2, #0
|
|
bxeq lr
|
|
ldr r2, .L603+4
|
|
mov r0, #0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
mov r4, r0
|
|
ldrh r1, [r3, #2]
|
|
ldrh lr, [r2, #28]
|
|
ldrh r2, [r3, #4]
|
|
and lr, lr, #31
|
|
.L592:
|
|
uxth ip, r0
|
|
add r0, r0, #1
|
|
cmp lr, ip
|
|
bgt .L593
|
|
cmp r4, #0
|
|
strhne r1, [r3, #2] @ movhi
|
|
strhne r2, [r3, #4] @ movhi
|
|
pop {r4, pc}
|
|
.L593:
|
|
add ip, r3, r1, lsl #1
|
|
add r1, r1, #1
|
|
ubfx r1, r1, #0, #10
|
|
ldrh r4, [ip, #8]
|
|
add ip, r3, r2, lsl #1
|
|
strh r4, [ip, #8] @ movhi
|
|
mov r4, #1
|
|
add r2, r2, r4
|
|
ubfx r2, r2, #0, #10
|
|
b .L592
|
|
.L604:
|
|
.align 2
|
|
.L603:
|
|
.word .LANCHOR0+2516
|
|
.word .LANCHOR2-3596
|
|
.fnend
|
|
.size FtlFreeSysBLkSort, .-FtlFreeSysBLkSort
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueOut
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueOut, %function
|
|
FtlFreeSysBlkQueueOut:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
ldr r4, .L616
|
|
ldr r8, .L616+4
|
|
mov r7, r4
|
|
.L606:
|
|
ldrh r1, [r4, #6]
|
|
cmp r1, #0
|
|
beq .L607
|
|
ldr r5, .L616+8
|
|
sub r1, r1, #1
|
|
ldrh r3, [r4, #2]
|
|
strh r1, [r4, #6] @ movhi
|
|
ldr r10, [r5, #-3612]
|
|
add r2, r4, r3, lsl #1
|
|
add r3, r3, #1
|
|
cmp r10, #0
|
|
ubfx r3, r3, #0, #10
|
|
ldrh r6, [r2, #8]
|
|
strh r3, [r4, #2] @ movhi
|
|
bne .L608
|
|
mov r0, r6
|
|
bl P2V_block_in_plane
|
|
mov r9, r0
|
|
ldr r0, [r5, #-3608]
|
|
lsl r3, r6, #10
|
|
str r3, [r0, #4]
|
|
ldrb r3, [r8, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L609
|
|
mov r2, #1
|
|
mov r1, r10
|
|
bl FlashEraseBlocks
|
|
.L609:
|
|
mov r2, #1
|
|
ldr r0, [r5, #-3608]
|
|
mov r1, r2
|
|
bl FlashEraseBlocks
|
|
ldr r2, [r5, #-3604]
|
|
lsl r0, r9, #1
|
|
ldrh r3, [r2, r0]
|
|
add r3, r3, #1
|
|
strh r3, [r2, r0] @ movhi
|
|
ldr r3, [r5, #-3600]
|
|
add r3, r3, #1
|
|
str r3, [r5, #-3600]
|
|
.L608:
|
|
sub r3, r6, #1
|
|
movw r2, #65533
|
|
uxth r3, r3
|
|
cmp r3, r2
|
|
bls .L611
|
|
ldrh r2, [r7, #6]
|
|
mov r1, r6
|
|
ldr r0, .L616+12
|
|
bl printk
|
|
b .L606
|
|
.L607:
|
|
ldr r0, .L616+16
|
|
bl printk
|
|
.L610:
|
|
b .L610
|
|
.L611:
|
|
mov r0, r6
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L617:
|
|
.align 2
|
|
.L616:
|
|
.word .LANCHOR0+2516
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LC4
|
|
.word .LC3
|
|
.fnend
|
|
.size FtlFreeSysBlkQueueOut, .-FtlFreeSysBlkQueueOut
|
|
.align 2
|
|
.global test_node_in_list
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type test_node_in_list, %function
|
|
test_node_in_list:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L624
|
|
str lr, [sp, #-4]!
|
|
.save {lr}
|
|
movw lr, #65535
|
|
ldr r2, [r0]
|
|
ldr ip, [r3, #-3548]
|
|
sub r3, r2, ip
|
|
asr r0, r3, #1
|
|
ldr r3, .L624+4
|
|
mul r3, r3, r0
|
|
mov r0, #6
|
|
uxth r3, r3
|
|
.L620:
|
|
cmp r3, r1
|
|
beq .L621
|
|
ldrh r3, [r2]
|
|
cmp r3, lr
|
|
beq .L622
|
|
mla r2, r0, r3, ip
|
|
b .L620
|
|
.L621:
|
|
mov r0, #1
|
|
ldr pc, [sp], #4
|
|
.L622:
|
|
mov r0, #0
|
|
ldr pc, [sp], #4
|
|
.L625:
|
|
.align 2
|
|
.L624:
|
|
.word .LANCHOR2
|
|
.word -1431655765
|
|
.fnend
|
|
.size test_node_in_list, .-test_node_in_list
|
|
.align 2
|
|
.global insert_data_list
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type insert_data_list, %function
|
|
insert_data_list:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
movw r3, #2332
|
|
ldr r4, .L642
|
|
ldrh r3, [r4, r3]
|
|
cmp r3, r0
|
|
bls .L628
|
|
ldr r2, .L642+4
|
|
mov lr, #6
|
|
mul lr, lr, r0
|
|
mvn ip, #0
|
|
ldr r6, [r2, #-3548]
|
|
mov r5, r2
|
|
add r1, r6, lr
|
|
strh ip, [r1, #2] @ movhi
|
|
strh ip, [r6, lr] @ movhi
|
|
ldr r3, [r2, #-3544]
|
|
cmp r3, #0
|
|
streq r1, [r2, #-3544]
|
|
beq .L628
|
|
ldr r8, [r2, #-3540]
|
|
lsl r10, r0, #1
|
|
ldrh r2, [r1, #4]
|
|
ldrh r7, [r8, r10]
|
|
cmp r2, #0
|
|
mulne ip, r2, r7
|
|
ldr r7, [r5, #-3548]
|
|
sub r2, r3, r7
|
|
asr r9, r2, #1
|
|
ldr r2, .L642+8
|
|
mul r2, r2, r9
|
|
movw r9, #2332
|
|
ldrh r4, [r4, r9]
|
|
ldr r9, [r5, #-3604]
|
|
str r4, [sp]
|
|
uxth r2, r2
|
|
add r4, r9, r10
|
|
str r4, [sp, #4]
|
|
mov r4, #0
|
|
.L637:
|
|
ldr r5, [sp]
|
|
add r4, r4, #1
|
|
uxth r4, r4
|
|
cmp r4, r5
|
|
movls r5, #0
|
|
movhi r5, #1
|
|
cmp r0, r2
|
|
orreq r5, r5, #1
|
|
cmp r5, #0
|
|
bne .L628
|
|
lsl r10, r2, #1
|
|
ldrh r5, [r3, #4]
|
|
ldrh fp, [r8, r10]
|
|
cmp r5, #0
|
|
mvneq r5, #0
|
|
mulne r5, r5, fp
|
|
cmp ip, r5
|
|
bne .L633
|
|
ldr r5, [sp, #4]
|
|
ldrh r10, [r9, r10]
|
|
ldrh r5, [r5]
|
|
cmp r10, r5
|
|
bcc .L635
|
|
.L634:
|
|
strh r2, [r6, lr] @ movhi
|
|
ldr ip, .L642+4
|
|
ldrh r2, [r3, #2]
|
|
strh r2, [r1, #2] @ movhi
|
|
ldr r2, [ip, #-3544]
|
|
cmp r3, r2
|
|
ldrhne lr, [r3, #2]
|
|
movne r2, #6
|
|
ldrne r1, [ip, #-3548]
|
|
strheq r0, [r3, #2] @ movhi
|
|
streq r1, [ip, #-3544]
|
|
mulne r2, r2, lr
|
|
strhne r0, [r1, r2] @ movhi
|
|
strhne r0, [r3, #2] @ movhi
|
|
b .L628
|
|
.L633:
|
|
bcc .L634
|
|
.L635:
|
|
ldrh r5, [r3]
|
|
movw r10, #65535
|
|
cmp r5, r10
|
|
bne .L636
|
|
strh r2, [r1, #2] @ movhi
|
|
strh r0, [r3] @ movhi
|
|
ldr r3, .L642+4
|
|
str r1, [r3, #-3536]
|
|
.L628:
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L636:
|
|
mov r3, #6
|
|
mov r2, r5
|
|
mla r3, r3, r5, r7
|
|
b .L637
|
|
.L643:
|
|
.align 2
|
|
.L642:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word -1431655765
|
|
.fnend
|
|
.size insert_data_list, .-insert_data_list
|
|
.align 2
|
|
.global INSERT_DATA_LIST
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type INSERT_DATA_LIST, %function
|
|
INSERT_DATA_LIST:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
bl insert_data_list
|
|
ldr r2, .L646
|
|
ldrh r3, [r2, #-12]
|
|
add r3, r3, #1
|
|
strh r3, [r2, #-12] @ movhi
|
|
pop {r4, pc}
|
|
.L647:
|
|
.align 2
|
|
.L646:
|
|
.word .LANCHOR2-3520
|
|
.fnend
|
|
.size INSERT_DATA_LIST, .-INSERT_DATA_LIST
|
|
.align 2
|
|
.global insert_free_list
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type insert_free_list, %function
|
|
insert_free_list:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
movw r4, #65535
|
|
cmp r0, r4
|
|
beq .L649
|
|
ldr r2, .L656
|
|
mov r1, #6
|
|
mul r5, r1, r0
|
|
mvn r3, #0
|
|
ldr r6, [r2, #-3548]
|
|
mov ip, r2
|
|
add lr, r6, r5
|
|
strh r3, [lr, #2] @ movhi
|
|
strh r3, [r6, r5] @ movhi
|
|
ldr r3, [r2, #-3528]
|
|
cmp r3, #0
|
|
streq lr, [r2, #-3528]
|
|
beq .L649
|
|
ldr r8, [r2, #-3604]
|
|
lsl r2, r0, #1
|
|
ldr r7, [ip, #-3548]
|
|
ldrh r9, [r8, r2]
|
|
sub r2, r3, r7
|
|
asr r10, r2, #1
|
|
ldr r2, .L656+4
|
|
mul r2, r2, r10
|
|
mov r10, r1
|
|
uxth r2, r2
|
|
.L653:
|
|
lsl r1, r2, #1
|
|
ldrh r1, [r8, r1]
|
|
cmp r1, r9
|
|
bcs .L651
|
|
ldrh r1, [r3]
|
|
cmp r1, r4
|
|
bne .L652
|
|
strh r2, [lr, #2] @ movhi
|
|
strh r0, [r3] @ movhi
|
|
.L649:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L652:
|
|
mla r3, r10, r1, r7
|
|
mov r2, r1
|
|
b .L653
|
|
.L651:
|
|
ldrh r1, [r3, #2]
|
|
strh r1, [lr, #2] @ movhi
|
|
strh r2, [r6, r5] @ movhi
|
|
ldr r2, [ip, #-3528]
|
|
cmp r3, r2
|
|
ldrhne lr, [r3, #2]
|
|
movne r2, #6
|
|
ldrne r1, [ip, #-3548]
|
|
strheq r0, [r3, #2] @ movhi
|
|
streq lr, [ip, #-3528]
|
|
mulne r2, r2, lr
|
|
strhne r0, [r1, r2] @ movhi
|
|
strhne r0, [r3, #2] @ movhi
|
|
b .L649
|
|
.L657:
|
|
.align 2
|
|
.L656:
|
|
.word .LANCHOR2
|
|
.word -1431655765
|
|
.fnend
|
|
.size insert_free_list, .-insert_free_list
|
|
.align 2
|
|
.global INSERT_FREE_LIST
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type INSERT_FREE_LIST, %function
|
|
INSERT_FREE_LIST:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
bl insert_free_list
|
|
ldr r2, .L660
|
|
ldrh r3, [r2, #-4]
|
|
add r3, r3, #1
|
|
strh r3, [r2, #-4] @ movhi
|
|
pop {r4, pc}
|
|
.L661:
|
|
.align 2
|
|
.L660:
|
|
.word .LANCHOR2-3520
|
|
.fnend
|
|
.size INSERT_FREE_LIST, .-INSERT_FREE_LIST
|
|
.align 2
|
|
.global List_remove_node
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type List_remove_node, %function
|
|
List_remove_node:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, lr}
|
|
.save {r4, r5, lr}
|
|
mov ip, #6
|
|
ldr r4, .L668
|
|
mul r1, ip, r1
|
|
movw r5, #65535
|
|
ldr r3, [r0]
|
|
ldr r2, [r4, #-3548]
|
|
add lr, r2, r1
|
|
cmp lr, r3
|
|
ldrh r3, [r2, r1]
|
|
bne .L663
|
|
cmp r3, r5
|
|
mlane r3, ip, r3, r2
|
|
moveq r3, #0
|
|
streq r3, [r0]
|
|
strne r3, [r0]
|
|
mvnne r0, #0
|
|
strhne r0, [r3, #2] @ movhi
|
|
.L665:
|
|
mvn r3, #0
|
|
mov r0, #0
|
|
strh r3, [r2, r1] @ movhi
|
|
strh r3, [lr, #2] @ movhi
|
|
pop {r4, r5, pc}
|
|
.L663:
|
|
cmp r3, r5
|
|
ldrh r0, [lr, #2]
|
|
bne .L666
|
|
cmp r0, r3
|
|
mulne r3, ip, r0
|
|
mvnne r0, #0
|
|
strhne r0, [r2, r3] @ movhi
|
|
b .L665
|
|
.L666:
|
|
mla r3, ip, r3, r2
|
|
strh r0, [r3, #2] @ movhi
|
|
ldrh r3, [lr, #2]
|
|
ldrh r5, [r2, r1]
|
|
ldr r0, [r4, #-3548]
|
|
mul r3, ip, r3
|
|
strh r5, [r0, r3] @ movhi
|
|
b .L665
|
|
.L669:
|
|
.align 2
|
|
.L668:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size List_remove_node, .-List_remove_node
|
|
.align 2
|
|
.global List_pop_index_node
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type List_pop_index_node, %function
|
|
List_pop_index_node:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, [r0]
|
|
cmp r3, #0
|
|
beq .L676
|
|
ldr r2, .L681
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
movw lr, #65535
|
|
mov r4, #6
|
|
ldr r2, [r2, #-3548]
|
|
.L672:
|
|
cmp r1, #0
|
|
bne .L673
|
|
.L675:
|
|
ldr r4, .L681+4
|
|
sub r3, r3, r2
|
|
asr r3, r3, #1
|
|
mul r4, r4, r3
|
|
uxth r1, r4
|
|
bl List_remove_node
|
|
uxth r0, r4
|
|
pop {r4, pc}
|
|
.L673:
|
|
ldrh ip, [r3]
|
|
cmp ip, lr
|
|
beq .L675
|
|
sub r1, r1, #1
|
|
mla r3, r4, ip, r2
|
|
uxth r1, r1
|
|
b .L672
|
|
.L676:
|
|
movw r0, #65535
|
|
bx lr
|
|
.L682:
|
|
.align 2
|
|
.L681:
|
|
.word .LANCHOR2
|
|
.word -1431655765
|
|
.fnend
|
|
.size List_pop_index_node, .-List_pop_index_node
|
|
.align 2
|
|
.global List_get_gc_head_node
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type List_get_gc_head_node, %function
|
|
List_get_gc_head_node:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, .L689
|
|
ldr r3, [r2, #-3544]
|
|
cmp r3, #0
|
|
ldrne r1, [r2, #-3548]
|
|
movne ip, #6
|
|
movwne r2, #65535
|
|
bne .L685
|
|
.L688:
|
|
movw r0, #65535
|
|
bx lr
|
|
.L687:
|
|
sub r0, r0, #1
|
|
mla r3, ip, r3, r1
|
|
uxth r0, r0
|
|
.L685:
|
|
cmp r0, #0
|
|
beq .L686
|
|
ldrh r3, [r3]
|
|
cmp r3, r2
|
|
bne .L687
|
|
b .L688
|
|
.L686:
|
|
ldr r0, .L689+4
|
|
sub r3, r3, r1
|
|
asr r3, r3, #1
|
|
mul r3, r0, r3
|
|
uxth r0, r3
|
|
bx lr
|
|
.L690:
|
|
.align 2
|
|
.L689:
|
|
.word .LANCHOR2
|
|
.word -1431655765
|
|
.fnend
|
|
.size List_get_gc_head_node, .-List_get_gc_head_node
|
|
.align 2
|
|
.global List_update_data_list
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type List_update_data_list, %function
|
|
List_update_data_list:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L699
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
sub r5, r3, #3520
|
|
ldrh r2, [r5]
|
|
cmp r2, r0
|
|
beq .L692
|
|
sub r2, r3, #3472
|
|
ldrh r2, [r2]
|
|
cmp r2, r0
|
|
beq .L692
|
|
sub r2, r3, #3424
|
|
ldrh r2, [r2]
|
|
cmp r2, r0
|
|
beq .L692
|
|
mov lr, #6
|
|
ldr r1, [r3, #-3548]
|
|
mul lr, lr, r0
|
|
ldr r2, [r3, #-3544]
|
|
add ip, r1, lr
|
|
cmp ip, r2
|
|
beq .L692
|
|
ldr r4, [r3, #-3540]
|
|
lsl r3, r0, #1
|
|
ldrh r2, [ip, #4]
|
|
ldrh r3, [r4, r3]
|
|
cmp r2, #0
|
|
mvneq r2, #0
|
|
mulne r2, r2, r3
|
|
ldrh r3, [ip, #2]
|
|
movw ip, #65535
|
|
cmp r3, ip
|
|
bne .L694
|
|
ldrh ip, [r1, lr]
|
|
cmp ip, r3
|
|
beq .L692
|
|
.L694:
|
|
mov ip, #6
|
|
mul ip, ip, r3
|
|
ldr r3, .L699+4
|
|
asr lr, ip, #1
|
|
add r1, r1, ip
|
|
mul r3, r3, lr
|
|
lsl r3, r3, #1
|
|
ldrh lr, [r4, r3]
|
|
ldrh r3, [r1, #4]
|
|
cmp r3, #0
|
|
mulne r3, r3, lr
|
|
mvneq r3, #0
|
|
cmp r2, r3
|
|
bcs .L692
|
|
mov r4, r0
|
|
mov r1, r0
|
|
ldr r0, .L699+8
|
|
bl List_remove_node
|
|
ldrh r3, [r5, #-12]
|
|
mov r0, r4
|
|
sub r3, r3, #1
|
|
strh r3, [r5, #-12] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
.L692:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
.L700:
|
|
.align 2
|
|
.L699:
|
|
.word .LANCHOR2
|
|
.word -1431655765
|
|
.word .LANCHOR2-3544
|
|
.fnend
|
|
.size List_update_data_list, .-List_update_data_list
|
|
.align 2
|
|
.global ftl_map_blk_alloc_new_blk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_map_blk_alloc_new_blk, %function
|
|
ftl_map_blk_alloc_new_blk:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mov r3, #0
|
|
ldrh r1, [r0, #10]
|
|
ldr r2, [r0, #12]
|
|
.L702:
|
|
uxth r5, r3
|
|
cmp r5, r1
|
|
bcs .L705
|
|
mov r7, r2
|
|
add r3, r3, #1
|
|
ldrh r6, [r7]
|
|
add r2, r2, #2
|
|
cmp r6, #0
|
|
bne .L702
|
|
mov r4, r0
|
|
bl FtlFreeSysBlkQueueOut
|
|
sub r3, r0, #1
|
|
movw r2, #65533
|
|
uxth r3, r3
|
|
mov r1, r0
|
|
strh r0, [r7] @ movhi
|
|
cmp r3, r2
|
|
bls .L703
|
|
ldr r3, .L709
|
|
ldr r0, .L709+4
|
|
ldrh r2, [r3, #6]
|
|
bl printk
|
|
.L704:
|
|
b .L704
|
|
.L703:
|
|
ldr r3, [r4, #28]
|
|
strh r6, [r4, #2] @ movhi
|
|
strh r5, [r4] @ movhi
|
|
add r3, r3, #1
|
|
str r3, [r4, #28]
|
|
ldrh r3, [r4, #8]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
.L705:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L710:
|
|
.align 2
|
|
.L709:
|
|
.word .LANCHOR0+2516
|
|
.word .LC5
|
|
.fnend
|
|
.size ftl_map_blk_alloc_new_blk, .-ftl_map_blk_alloc_new_blk
|
|
.align 2
|
|
.global select_l2p_ram_region
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type select_l2p_ram_region, %function
|
|
select_l2p_ram_region:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L722
|
|
movw r3, #2430
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r1, #0
|
|
mov ip, #12
|
|
movw lr, #65535
|
|
ldrh r2, [r2, r3]
|
|
ldr r3, .L722+4
|
|
ldr r3, [r3, #-3376]
|
|
.L712:
|
|
uxth r0, r1
|
|
cmp r0, r2
|
|
bcc .L714
|
|
mov r0, r2
|
|
mov r1, #0
|
|
mov ip, #-2147483648
|
|
mov r5, #12
|
|
.L715:
|
|
uxth r4, r1
|
|
cmp r4, r2
|
|
bcc .L717
|
|
cmp r0, r2
|
|
popcc {r4, r5, r6, pc}
|
|
ldr r1, .L722+8
|
|
mov r0, r2
|
|
mvn ip, #0
|
|
ldrh r5, [r1, #-12]
|
|
mov r1, #0
|
|
.L718:
|
|
uxth lr, r1
|
|
cmp lr, r2
|
|
bcc .L720
|
|
pop {r4, r5, r6, pc}
|
|
.L714:
|
|
add r1, r1, #1
|
|
mla r4, ip, r1, r3
|
|
ldrh r4, [r4, #-12]
|
|
cmp r4, lr
|
|
bne .L712
|
|
pop {r4, r5, r6, pc}
|
|
.L717:
|
|
mla lr, r5, r1, r3
|
|
add r1, r1, #1
|
|
ldr lr, [lr, #4]
|
|
cmp ip, lr
|
|
movls r6, #0
|
|
movhi r6, #1
|
|
cmp lr, #0
|
|
movlt r6, #0
|
|
cmp r6, #0
|
|
movne ip, lr
|
|
movne r0, r4
|
|
b .L715
|
|
.L720:
|
|
ldr r4, [r3, #4]
|
|
cmp ip, r4
|
|
bls .L719
|
|
ldrh r6, [r3]
|
|
cmp r6, r5
|
|
movne ip, r4
|
|
movne r0, lr
|
|
.L719:
|
|
add r1, r1, #1
|
|
add r3, r3, #12
|
|
b .L718
|
|
.L723:
|
|
.align 2
|
|
.L722:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2-3360
|
|
.fnend
|
|
.size select_l2p_ram_region, .-select_l2p_ram_region
|
|
.align 2
|
|
.global FtlUpdateVaildLpn
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlUpdateVaildLpn, %function
|
|
FtlUpdateVaildLpn:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L733
|
|
sub r1, r3, #3360
|
|
ldrh r2, [r1, #-10]
|
|
cmp r2, #4
|
|
cmpls r0, #0
|
|
bne .L725
|
|
add r2, r2, #1
|
|
strh r2, [r1, #-10] @ movhi
|
|
bx lr
|
|
.L725:
|
|
ldr r0, .L733+4
|
|
mov r2, #0
|
|
str lr, [sp, #-4]!
|
|
.save {lr}
|
|
movw lr, #65535
|
|
strh r2, [r1, #-10] @ movhi
|
|
movw r1, #2332
|
|
str r2, [r3, #-3368]
|
|
ldrh r1, [r0, r1]
|
|
ldr r2, [r3, #-3540]
|
|
add r1, r2, r1, lsl #1
|
|
.L726:
|
|
cmp r2, r1
|
|
bne .L728
|
|
ldr pc, [sp], #4
|
|
.L728:
|
|
ldrh ip, [r2], #2
|
|
cmp ip, lr
|
|
ldrne r0, [r3, #-3368]
|
|
addne r0, r0, ip
|
|
strne r0, [r3, #-3368]
|
|
b .L726
|
|
.L734:
|
|
.align 2
|
|
.L733:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlUpdateVaildLpn, .-FtlUpdateVaildLpn
|
|
.align 2
|
|
.global ftl_set_blk_mode
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_set_blk_mode, %function
|
|
ftl_set_blk_mode:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
cmp r1, #0
|
|
mov r3, r0
|
|
beq .L736
|
|
b ftl_set_blk_mode.part.9
|
|
.L736:
|
|
ldr r2, .L737
|
|
lsr r0, r0, #5
|
|
and r3, r3, #31
|
|
mov ip, #1
|
|
ldr r1, [r2, #32]
|
|
ldr r2, [r1, r0, lsl #2]
|
|
bic r3, r2, ip, lsl r3
|
|
str r3, [r1, r0, lsl #2]
|
|
bx lr
|
|
.L738:
|
|
.align 2
|
|
.L737:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size ftl_set_blk_mode, .-ftl_set_blk_mode
|
|
.align 2
|
|
.global ftl_get_blk_mode
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_get_blk_mode, %function
|
|
ftl_get_blk_mode:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L740
|
|
lsr r2, r0, #5
|
|
and r0, r0, #31
|
|
ldr r3, [r3, #32]
|
|
ldr r3, [r3, r2, lsl #2]
|
|
lsr r0, r3, r0
|
|
and r0, r0, #1
|
|
bx lr
|
|
.L741:
|
|
.align 2
|
|
.L740:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size ftl_get_blk_mode, .-ftl_get_blk_mode
|
|
.align 2
|
|
.global ftl_sb_update_avl_pages
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_sb_update_avl_pages, %function
|
|
ftl_sb_update_avl_pages:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
mov r3, #0
|
|
movw ip, #2324
|
|
strh r3, [r0, #4] @ movhi
|
|
ldr r3, .L750
|
|
push {r4, r5, lr}
|
|
.save {r4, r5, lr}
|
|
movw r5, #65535
|
|
ldrh lr, [r3, ip]
|
|
add ip, r0, r2, lsl #1
|
|
add ip, ip, #14
|
|
.L743:
|
|
cmp r2, lr
|
|
bcc .L745
|
|
movw r2, #2390
|
|
add ip, r0, #16
|
|
ldrh r3, [r3, r2]
|
|
movw r4, #65535
|
|
sub r3, r3, #1
|
|
sub r1, r3, r1
|
|
mov r3, #0
|
|
uxth r1, r1
|
|
.L746:
|
|
uxth r2, r3
|
|
cmp lr, r2
|
|
bhi .L748
|
|
pop {r4, r5, pc}
|
|
.L745:
|
|
ldrh r4, [ip, #2]!
|
|
add r2, r2, #1
|
|
uxth r2, r2
|
|
cmp r4, r5
|
|
ldrhne r4, [r0, #4]
|
|
addne r4, r4, #1
|
|
strhne r4, [r0, #4] @ movhi
|
|
b .L743
|
|
.L748:
|
|
ldrh r2, [ip], #2
|
|
add r3, r3, #1
|
|
cmp r2, r4
|
|
ldrhne r2, [r0, #4]
|
|
addne r2, r1, r2
|
|
strhne r2, [r0, #4] @ movhi
|
|
b .L746
|
|
.L751:
|
|
.align 2
|
|
.L750:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size ftl_sb_update_avl_pages, .-ftl_sb_update_avl_pages
|
|
.align 2
|
|
.global make_superblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type make_superblock, %function
|
|
make_superblock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
movw r3, #2324
|
|
ldr r6, .L765
|
|
mov r4, r0
|
|
add r7, r0, #16
|
|
mvn r9, #0
|
|
ldr r10, .L765+4
|
|
mov r5, #0
|
|
ldrh r8, [r6, r3]
|
|
strh r5, [r0, #4] @ movhi
|
|
strb r5, [r0, #7]
|
|
.L753:
|
|
uxth r3, r5
|
|
cmp r8, r3
|
|
bhi .L755
|
|
movw r2, #2390
|
|
ldrb r3, [r4, #7] @ zero_extendqisi2
|
|
ldrh r2, [r6, r2]
|
|
smulbb r3, r3, r2
|
|
strh r3, [r4, #4] @ movhi
|
|
mov r3, #0
|
|
strb r3, [r4, #9]
|
|
ldr r3, [r6, #2248]
|
|
cmp r3, #0
|
|
beq .L756
|
|
ldrh r3, [r4]
|
|
ldr r2, .L765+8
|
|
ldr r2, [r2, #-3604]
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #79
|
|
movls r3, #1
|
|
strbls r3, [r4, #9]
|
|
.L756:
|
|
ldrb r3, [r6, #36] @ zero_extendqisi2
|
|
mov r0, #0
|
|
cmp r3, #0
|
|
movne r3, #1
|
|
strbne r3, [r4, #9]
|
|
pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L755:
|
|
ldrb r0, [r10, r5] @ zero_extendqisi2
|
|
add r7, r7, #2
|
|
ldrh r1, [r4]
|
|
add r5, r5, #1
|
|
bl V2P_block
|
|
strh r9, [r7, #-2] @ movhi
|
|
mov fp, r0
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
strheq fp, [r7, #-2] @ movhi
|
|
ldrbeq r3, [r4, #7] @ zero_extendqisi2
|
|
addeq r3, r3, #1
|
|
strbeq r3, [r4, #7]
|
|
b .L753
|
|
.L766:
|
|
.align 2
|
|
.L765:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2350
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size make_superblock, .-make_superblock
|
|
.align 2
|
|
.global update_multiplier_value
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type update_multiplier_value, %function
|
|
update_multiplier_value:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L774
|
|
movw r2, #2324
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r5, #0
|
|
ldr r9, .L774+4
|
|
mov r6, r0
|
|
mov r4, r5
|
|
ldrh r7, [r3, r2]
|
|
movw r2, #2390
|
|
ldrh r8, [r3, r2]
|
|
.L768:
|
|
uxth r3, r5
|
|
cmp r7, r3
|
|
bhi .L770
|
|
cmp r4, #0
|
|
moveq r0, r4
|
|
beq .L771
|
|
mov r1, r4
|
|
mov r0, #32768
|
|
bl __aeabi_idiv
|
|
.L771:
|
|
ldr r3, .L774+8
|
|
mov r2, #6
|
|
ldr r3, [r3, #-3548]
|
|
mla r6, r2, r6, r3
|
|
strh r0, [r6, #4] @ movhi
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L770:
|
|
mov r1, r6
|
|
ldrb r0, [r9, r5] @ zero_extendqisi2
|
|
bl V2P_block
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
add r5, r5, #1
|
|
addeq r4, r4, r8
|
|
uxtheq r4, r4
|
|
b .L768
|
|
.L775:
|
|
.align 2
|
|
.L774:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2350
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size update_multiplier_value, .-update_multiplier_value
|
|
.align 2
|
|
.global GetFreeBlockMinEraseCount
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type GetFreeBlockMinEraseCount, %function
|
|
GetFreeBlockMinEraseCount:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, .L779
|
|
ldr r0, [r2, #-3528]
|
|
cmp r0, #0
|
|
bxeq lr
|
|
ldr r3, [r2, #-3548]
|
|
sub r0, r0, r3
|
|
ldr r3, .L779+4
|
|
asr r0, r0, #1
|
|
mul r0, r3, r0
|
|
ldr r3, [r2, #-3604]
|
|
uxth r0, r0
|
|
lsl r0, r0, #1
|
|
ldrh r0, [r3, r0]
|
|
bx lr
|
|
.L780:
|
|
.align 2
|
|
.L779:
|
|
.word .LANCHOR2
|
|
.word -1431655765
|
|
.fnend
|
|
.size GetFreeBlockMinEraseCount, .-GetFreeBlockMinEraseCount
|
|
.align 2
|
|
.global GetFreeBlockMaxEraseCount
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type GetFreeBlockMaxEraseCount, %function
|
|
GetFreeBlockMaxEraseCount:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r1, .L793
|
|
ldr r3, [r1, #-3528]
|
|
cmp r3, #0
|
|
beq .L787
|
|
sub r2, r1, #3520
|
|
push {r4, r5, lr}
|
|
.save {r4, r5, lr}
|
|
ldrh r2, [r2, #-4]
|
|
mov r4, #6
|
|
movw r5, #65535
|
|
ldr ip, [r1, #-3548]
|
|
rsb r2, r2, r2, lsl #3
|
|
sub r3, r3, ip
|
|
asr r2, r2, #3
|
|
asr r3, r3, #1
|
|
cmp r0, r2
|
|
uxthgt r0, r2
|
|
ldr r2, .L793+4
|
|
mul r3, r2, r3
|
|
mov r2, #0
|
|
uxth r3, r3
|
|
.L784:
|
|
uxth lr, r2
|
|
cmp r0, lr
|
|
bls .L786
|
|
mul lr, r4, r3
|
|
add r2, r2, #1
|
|
ldrh lr, [ip, lr]
|
|
cmp lr, r5
|
|
bne .L788
|
|
.L786:
|
|
ldr r2, [r1, #-3604]
|
|
lsl r3, r3, #1
|
|
ldrh r0, [r2, r3]
|
|
pop {r4, r5, pc}
|
|
.L788:
|
|
mov r3, lr
|
|
b .L784
|
|
.L787:
|
|
mov r0, r3
|
|
bx lr
|
|
.L794:
|
|
.align 2
|
|
.L793:
|
|
.word .LANCHOR2
|
|
.word -1431655765
|
|
.fnend
|
|
.size GetFreeBlockMaxEraseCount, .-GetFreeBlockMaxEraseCount
|
|
.align 2
|
|
.global FtlPrintInfo2buf
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlPrintInfo2buf, %function
|
|
FtlPrintInfo2buf:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r8, r0
|
|
ldr r9, .L808
|
|
add r5, r8, #12
|
|
.pad #36
|
|
sub sp, sp, #36
|
|
ldr r1, .L808+4
|
|
bl strcpy
|
|
ldr r2, [r9, #124]
|
|
mov r0, r5
|
|
ldr r1, .L808+8
|
|
bl sprintf
|
|
add r5, r5, r0
|
|
ldr r2, [r9, #2408]
|
|
mov r0, r5
|
|
ldr r1, .L808+12
|
|
bl sprintf
|
|
ldr r3, .L808+16
|
|
add r5, r5, r0
|
|
ldr r3, [r3, #500]
|
|
cmp r3, #1
|
|
subne r0, r5, r8
|
|
bne .L795
|
|
add r3, sp, #28
|
|
add r2, sp, #24
|
|
add r1, sp, #20
|
|
add r0, sp, #16
|
|
bl NandcGetTimeCfg
|
|
ldr r3, [sp, #28]
|
|
mov r0, r5
|
|
ldr r2, [sp, #16]
|
|
ldr r1, .L808+20
|
|
str r3, [sp, #4]
|
|
ldr r3, [sp, #24]
|
|
ldr r7, .L808+24
|
|
str r3, [sp]
|
|
ldr r3, [sp, #20]
|
|
sub r10, r7, #3520
|
|
bl sprintf
|
|
add r6, r5, r0
|
|
ldr r1, .L808+28
|
|
mov r0, r6
|
|
add r6, r6, #10
|
|
bl strcpy
|
|
ldr r2, [r9, #2452]
|
|
mov r0, r6
|
|
ldr r1, .L808+32
|
|
sub r4, r7, #3584
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3368]
|
|
ldr r1, .L808+36
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3364]
|
|
ldr r1, .L808+40
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3360]
|
|
ldr r1, .L808+44
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3356]
|
|
ldr r1, .L808+48
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3352]
|
|
ldr r1, .L808+52
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3348]
|
|
ldr r1, .L808+56
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3344]
|
|
ldr r1, .L808+60
|
|
mov r0, r6
|
|
bl sprintf
|
|
ldr r2, [r7, #-3340]
|
|
add r6, r6, r0
|
|
ldr r1, .L808+64
|
|
mov r0, r6
|
|
sub r5, r7, #3280
|
|
lsr r2, r2, #11
|
|
bl sprintf
|
|
ldr r2, [r7, #-3336]
|
|
add r6, r6, r0
|
|
ldr r1, .L808+68
|
|
mov r0, r6
|
|
lsr r2, r2, #11
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3332]
|
|
ldr r1, .L808+72
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3328]
|
|
ldr r1, .L808+76
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
bl FtlBbtCalcTotleCnt
|
|
ldr r2, .L808+80
|
|
mov r3, r0
|
|
ldr r1, .L808+84
|
|
mov r0, r6
|
|
ldrh r2, [r2, #6]
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r10, #-4]
|
|
ldr r1, .L808+88
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3324]
|
|
ldr r1, .L808+92
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3320]
|
|
ldr r1, .L808+96
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3316]
|
|
ldr r1, .L808+100
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3600]
|
|
ldr r1, .L808+104
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3312]
|
|
ldr r1, .L808+108
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3308]
|
|
ldr r1, .L808+112
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4, #18]
|
|
ldr r1, .L808+116
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4, #16]
|
|
ldr r1, .L808+120
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r9, #2432]
|
|
ldr r1, .L808+124
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r9, #2424]
|
|
ldr r1, .L808+128
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r9, #2320]
|
|
ldr r1, .L808+132
|
|
mov r0, r6
|
|
bl sprintf
|
|
ldr r3, .L808+136
|
|
add r6, r6, r0
|
|
ldr r1, .L808+140
|
|
mov r0, r6
|
|
sub r4, r7, #3296
|
|
ldrh r2, [r3, #6]
|
|
bl sprintf
|
|
movw r3, #2332
|
|
add r6, r6, r0
|
|
ldrh r2, [r9, r3]
|
|
mov r0, r6
|
|
ldr r1, .L808+144
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4, #-8]
|
|
ldr r1, .L808+148
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldr r2, [r9, #2336]
|
|
ldr r1, .L808+152
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4, #-4]
|
|
ldr r1, .L808+156
|
|
mov r0, r6
|
|
bl sprintf
|
|
movw r3, #2456
|
|
add r6, r6, r0
|
|
ldrh r2, [r9, r3]
|
|
mov r0, r6
|
|
ldr r1, .L808+160
|
|
sub r4, r7, #3472
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r10, #2]
|
|
ldr r1, .L808+164
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrb r2, [r7, #-3514] @ zero_extendqisi2
|
|
ldr r1, .L808+168
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r10]
|
|
ldr r1, .L808+172
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrb r2, [r7, #-3512] @ zero_extendqisi2
|
|
ldr r1, .L808+176
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r10, #4]
|
|
ldr r1, .L808+180
|
|
mov r0, r6
|
|
bl sprintf
|
|
ldrh r3, [r10]
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3540]
|
|
mov r0, r6
|
|
ldr r1, .L808+184
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r2, r3]
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4, #2]
|
|
ldr r1, .L808+188
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrb r2, [r7, #-3466] @ zero_extendqisi2
|
|
ldr r1, .L808+192
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4]
|
|
ldr r1, .L808+196
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrb r2, [r7, #-3464] @ zero_extendqisi2
|
|
ldr r1, .L808+200
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4, #4]
|
|
ldr r1, .L808+204
|
|
mov r0, r6
|
|
bl sprintf
|
|
ldrh r3, [r4]
|
|
add r6, r6, r0
|
|
ldr r2, [r7, #-3540]
|
|
mov r0, r6
|
|
ldr r1, .L808+208
|
|
sub r4, r7, #3424
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r2, r3]
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4, #2]
|
|
ldr r1, .L808+212
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrb r2, [r7, #-3418] @ zero_extendqisi2
|
|
ldr r1, .L808+216
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4]
|
|
ldr r1, .L808+220
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrb r2, [r7, #-3416] @ zero_extendqisi2
|
|
ldr r1, .L808+224
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r4, #4]
|
|
ldr r1, .L808+228
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r5, #-2]
|
|
ldr r1, .L808+232
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrb r2, [r7, #-3278] @ zero_extendqisi2
|
|
ldr r1, .L808+236
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrh r2, [r5, #-4]
|
|
ldr r1, .L808+240
|
|
mov r0, r6
|
|
bl sprintf
|
|
add r6, r6, r0
|
|
ldrb r2, [r7, #-3276] @ zero_extendqisi2
|
|
ldr r1, .L808+244
|
|
mov r0, r6
|
|
bl sprintf
|
|
sub r4, r5, #4
|
|
add r6, r6, r0
|
|
ldrh r2, [r4, #4]
|
|
mov r0, r6
|
|
ldr r1, .L808+248
|
|
bl sprintf
|
|
ldr r3, [r7, #-3160]
|
|
add r6, r6, r0
|
|
ldr r2, [r9, #2248]
|
|
mov r0, r6
|
|
ldr r1, [r7, #-2724]
|
|
str r3, [sp, #4]
|
|
ldr r3, [r7, #-3152]
|
|
orr r2, r2, r1, lsl #8
|
|
ldr r1, .L808+252
|
|
str r3, [sp]
|
|
ldr r3, [r7, #-3156]
|
|
bl sprintf
|
|
add r4, r6, r0
|
|
ldr r2, [r7, #-3164]
|
|
ldr r1, .L808+256
|
|
mov r0, r4
|
|
bl sprintf
|
|
add r4, r4, r0
|
|
ldr r2, [r7, #-3140]
|
|
ldr r1, .L808+260
|
|
mov r0, r4
|
|
bl sprintf
|
|
sub r3, r7, #2720
|
|
add r4, r4, r0
|
|
ldrh r2, [r3]
|
|
mov r0, r4
|
|
ldr r1, .L808+264
|
|
sub r6, r7, #2704
|
|
bl sprintf
|
|
add r4, r4, r0
|
|
ldrh r2, [r6, #-14]
|
|
ldr r1, .L808+268
|
|
mov r0, r4
|
|
bl sprintf
|
|
add r4, r4, r0
|
|
ldr r2, [r7, #-2716]
|
|
ldr r1, .L808+272
|
|
mov r0, r4
|
|
bl sprintf
|
|
add r4, r4, r0
|
|
ldrh r2, [r6, #-8]
|
|
ldr r1, .L808+276
|
|
mov r0, r4
|
|
bl sprintf
|
|
add r4, r4, r0
|
|
bl GetFreeBlockMinEraseCount
|
|
ldr r1, .L808+280
|
|
mov r2, r0
|
|
mov r0, r4
|
|
bl sprintf
|
|
add r4, r4, r0
|
|
ldrh r0, [r10, #-4]
|
|
bl GetFreeBlockMaxEraseCount
|
|
ldr r1, .L808+284
|
|
mov r2, r0
|
|
mov r0, r4
|
|
bl sprintf
|
|
ldrh r3, [r5, #-4]
|
|
movw r2, #65535
|
|
add r4, r4, r0
|
|
cmp r3, r2
|
|
beq .L798
|
|
ldr r2, [r7, #-3540]
|
|
lsl r3, r3, #1
|
|
mov r0, r4
|
|
ldr r1, .L808+288
|
|
ldrh r2, [r2, r3]
|
|
bl sprintf
|
|
add r4, r4, r0
|
|
.L798:
|
|
mov r0, #0
|
|
ldr r9, .L808+292
|
|
bl List_get_gc_head_node
|
|
uxth r3, r0
|
|
mov r5, #0
|
|
movw fp, #65535
|
|
mov r10, #6
|
|
.L800:
|
|
cmp r3, fp
|
|
beq .L799
|
|
ldr r2, [r7, #-3604]
|
|
lsl r1, r3, #1
|
|
mul r6, r10, r3
|
|
mov r0, r4
|
|
ldrh r2, [r2, r1]
|
|
str r2, [sp, #8]
|
|
ldr r2, [r7, #-3548]
|
|
add r2, r2, r6
|
|
ldrh r2, [r2, #4]
|
|
str r2, [sp, #4]
|
|
ldr r2, [r7, #-3540]
|
|
ldrh r2, [r2, r1]
|
|
mov r1, r9
|
|
str r2, [sp]
|
|
mov r2, r5
|
|
bl sprintf
|
|
add r5, r5, #1
|
|
ldr r3, [r7, #-3548]
|
|
cmp r5, #16
|
|
add r4, r4, r0
|
|
ldrh r3, [r3, r6]
|
|
bne .L800
|
|
.L799:
|
|
ldr r2, [r7, #-3548]
|
|
mov r5, #0
|
|
ldr r3, [r7, #-3528]
|
|
movw r9, #65535
|
|
ldr fp, .L808+296
|
|
mov r10, #6
|
|
sub r3, r3, r2
|
|
ldr r2, .L808+300
|
|
asr r3, r3, #1
|
|
mul r3, r2, r3
|
|
uxth r3, r3
|
|
.L802:
|
|
cmp r3, r9
|
|
beq .L801
|
|
ldr r1, [r7, #-3604]
|
|
lsl r2, r3, #1
|
|
mul r6, r10, r3
|
|
mov r0, r4
|
|
ldrh r2, [r1, r2]
|
|
mov r1, fp
|
|
str r2, [sp, #4]
|
|
ldr r2, [r7, #-3548]
|
|
add r2, r2, r6
|
|
ldrh r2, [r2, #4]
|
|
str r2, [sp]
|
|
mov r2, r5
|
|
add r5, r5, #1
|
|
bl sprintf
|
|
cmp r5, #4
|
|
add r4, r4, r0
|
|
ldrne r3, [r7, #-3548]
|
|
ldrhne r3, [r3, r6]
|
|
bne .L802
|
|
.L801:
|
|
sub r0, r4, r8
|
|
.L795:
|
|
add sp, sp, #36
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L809:
|
|
.align 2
|
|
.L808:
|
|
.word .LANCHOR0
|
|
.word .LC6
|
|
.word .LC7
|
|
.word .LC8
|
|
.word .LANCHOR1
|
|
.word .LC9
|
|
.word .LANCHOR2
|
|
.word .LC10
|
|
.word .LC11
|
|
.word .LC12
|
|
.word .LC13
|
|
.word .LC14
|
|
.word .LC15
|
|
.word .LC16
|
|
.word .LC17
|
|
.word .LC18
|
|
.word .LC19
|
|
.word .LC20
|
|
.word .LC21
|
|
.word .LC22
|
|
.word .LANCHOR0+2456
|
|
.word .LC23
|
|
.word .LC24
|
|
.word .LC25
|
|
.word .LC26
|
|
.word .LC27
|
|
.word .LC28
|
|
.word .LC29
|
|
.word .LC30
|
|
.word .LC31
|
|
.word .LC32
|
|
.word .LC33
|
|
.word .LC34
|
|
.word .LC35
|
|
.word .LANCHOR0+2516
|
|
.word .LC36
|
|
.word .LC37
|
|
.word .LC38
|
|
.word .LC39
|
|
.word .LC40
|
|
.word .LC41
|
|
.word .LC42
|
|
.word .LC43
|
|
.word .LC44
|
|
.word .LC45
|
|
.word .LC46
|
|
.word .LC47
|
|
.word .LC48
|
|
.word .LC49
|
|
.word .LC50
|
|
.word .LC51
|
|
.word .LC52
|
|
.word .LC53
|
|
.word .LC54
|
|
.word .LC55
|
|
.word .LC56
|
|
.word .LC57
|
|
.word .LC58
|
|
.word .LC59
|
|
.word .LC60
|
|
.word .LC61
|
|
.word .LC62
|
|
.word .LC63
|
|
.word .LC64
|
|
.word .LC65
|
|
.word .LC66
|
|
.word .LC67
|
|
.word .LC68
|
|
.word .LC69
|
|
.word .LC70
|
|
.word .LC71
|
|
.word .LC72
|
|
.word .LC73
|
|
.word .LC74
|
|
.word .LC75
|
|
.word -1431655765
|
|
.fnend
|
|
.size FtlPrintInfo2buf, .-FtlPrintInfo2buf
|
|
.align 2
|
|
.global ftl_proc_ftl_read
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_proc_ftl_read, %function
|
|
ftl_proc_ftl_read:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r5, r0
|
|
ldr r2, .L812
|
|
ldr r1, .L812+4
|
|
bl sprintf
|
|
add r4, r5, r0
|
|
mov r0, r4
|
|
bl FtlPrintInfo2buf
|
|
add r0, r4, r0
|
|
sub r0, r0, r5
|
|
pop {r4, r5, r6, pc}
|
|
.L813:
|
|
.align 2
|
|
.L812:
|
|
.word .LC76
|
|
.word .LC77
|
|
.fnend
|
|
.size ftl_proc_ftl_read, .-ftl_proc_ftl_read
|
|
.align 2
|
|
.global GetSwlReplaceBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type GetSwlReplaceBlock, %function
|
|
GetSwlReplaceBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #28
|
|
sub sp, sp, #28
|
|
ldr r4, .L842
|
|
ldr r2, [r4, #-3316]
|
|
ldr r3, [r4, #-3308]
|
|
cmp r2, r3
|
|
bcs .L815
|
|
ldr r0, .L842+4
|
|
movw r2, #2332
|
|
mov r3, #0
|
|
str r3, [r4, #-3324]
|
|
ldrh r1, [r0, r2]
|
|
mov r6, r0
|
|
ldr r2, [r4, #-3604]
|
|
sub r2, r2, #2
|
|
.L816:
|
|
cmp r3, r1
|
|
bcc .L817
|
|
ldr r5, [r4, #-3324]
|
|
mov r0, r5
|
|
bl __aeabi_uidiv
|
|
str r0, [r4, #-3316]
|
|
movw r3, #2382
|
|
ldr r0, [r4, #-3320]
|
|
ldrh r1, [r6, r3]
|
|
sub r0, r5, r0
|
|
bl __aeabi_uidiv
|
|
str r0, [r4, #-3324]
|
|
.L818:
|
|
ldr r5, [r4, #-3308]
|
|
ldr r8, [r4, #-3316]
|
|
add r3, r5, #256
|
|
cmp r3, r8
|
|
bls .L823
|
|
ldr r2, [r4, #-3312]
|
|
add r3, r5, #768
|
|
cmp r3, r2
|
|
bls .L823
|
|
ldr r3, .L842+4
|
|
cmp r5, #40
|
|
ldr r2, [r3, #2248]
|
|
movls r3, #0
|
|
movhi r3, #1
|
|
cmp r2, #0
|
|
orreq r3, r3, #1
|
|
cmp r3, #0
|
|
beq .L823
|
|
.L825:
|
|
movw r6, #65535
|
|
.L824:
|
|
mov r0, r6
|
|
add sp, sp, #28
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L817:
|
|
ldrh r0, [r2, #2]!
|
|
add r3, r3, #1
|
|
ldr ip, [r4, #-3324]
|
|
add r0, r0, ip
|
|
str r0, [r4, #-3324]
|
|
b .L816
|
|
.L815:
|
|
ldr r3, [r4, #-3312]
|
|
cmp r2, r3
|
|
bls .L818
|
|
ldr ip, .L842+8
|
|
add r3, r3, #1
|
|
str r3, [r4, #-3312]
|
|
mov r3, #0
|
|
.L820:
|
|
ldrh r2, [ip]
|
|
cmp r3, r2
|
|
bcs .L818
|
|
ldr r0, [r4, #-3604]
|
|
lsl r1, r3, #1
|
|
add r3, r3, #1
|
|
ldrh r2, [r0, r1]
|
|
add r2, r2, #1
|
|
strh r2, [r0, r1] @ movhi
|
|
b .L820
|
|
.L823:
|
|
ldr r3, .L842+12
|
|
ldrh r0, [r3, #-4]
|
|
add r0, r0, r0, lsl #1
|
|
ubfx r0, r0, #2, #16
|
|
bl GetFreeBlockMaxEraseCount
|
|
add r1, r5, #64
|
|
mov r10, r0
|
|
cmp r0, r1
|
|
movcs r1, #0
|
|
movcc r1, #1
|
|
cmp r5, #40
|
|
movls r1, #0
|
|
cmp r1, #0
|
|
bne .L825
|
|
ldr r3, [r4, #-3544]
|
|
cmp r3, #0
|
|
beq .L825
|
|
ldr r0, .L842+4
|
|
movw r2, #2332
|
|
ldr ip, [r4, #-3548]
|
|
movw r7, #65535
|
|
ldr r9, [r4, #-3604]
|
|
mov fp, #6
|
|
ldrh r2, [r0, r2]
|
|
ldr lr, .L842+16
|
|
str r2, [sp, #20]
|
|
mov r2, r7
|
|
.L826:
|
|
ldrh r0, [r3]
|
|
movw r6, #65535
|
|
cmp r0, r6
|
|
bne .L829
|
|
mov r6, r2
|
|
.L828:
|
|
movw r3, #65535
|
|
cmp r6, r3
|
|
beq .L825
|
|
lsl fp, r6, #1
|
|
ldrh r1, [r9, fp]
|
|
cmp r5, r1
|
|
bcs .L830
|
|
bl GetFreeBlockMinEraseCount
|
|
cmp r5, r0
|
|
strcc r7, [r4, #-3308]
|
|
.L830:
|
|
cmp r8, r1
|
|
bls .L825
|
|
add r3, r1, #128
|
|
cmp r10, r3
|
|
ble .L825
|
|
add r3, r1, #256
|
|
cmp r8, r3
|
|
bhi .L831
|
|
ldr r3, [r4, #-3312]
|
|
add r1, r1, #768
|
|
cmp r1, r3
|
|
bcs .L825
|
|
.L831:
|
|
str r10, [sp, #8]
|
|
mov r2, r8
|
|
ldrh r3, [r9, fp]
|
|
mov r1, r6
|
|
ldr r0, .L842+20
|
|
str r3, [sp, #4]
|
|
ldr r3, [r4, #-3540]
|
|
ldrh r3, [r3, fp]
|
|
str r3, [sp]
|
|
ldr r3, [r4, #-3312]
|
|
bl printk
|
|
mov r3, #1
|
|
str r3, [r4, #-2708]
|
|
b .L824
|
|
.L829:
|
|
add r1, r1, #1
|
|
ldr r6, [sp, #20]
|
|
uxth r1, r1
|
|
cmp r1, r6
|
|
bhi .L825
|
|
ldrh r6, [r3, #4]
|
|
cmp r6, #0
|
|
beq .L827
|
|
sub r3, r3, ip
|
|
asr r3, r3, #1
|
|
mul r3, lr, r3
|
|
uxth r6, r3
|
|
lsl r3, r6, #1
|
|
ldrh r3, [r9, r3]
|
|
cmp r5, r3
|
|
bcs .L828
|
|
cmp r7, r3
|
|
movhi r7, r3
|
|
movhi r2, r6
|
|
.L827:
|
|
mla r3, fp, r0, ip
|
|
b .L826
|
|
.L843:
|
|
.align 2
|
|
.L842:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2332
|
|
.word .LANCHOR2-3520
|
|
.word -1431655765
|
|
.word .LC78
|
|
.fnend
|
|
.size GetSwlReplaceBlock, .-GetSwlReplaceBlock
|
|
.align 2
|
|
.global free_data_superblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type free_data_superblock, %function
|
|
free_data_superblock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
movw r2, #65535
|
|
cmp r0, r2
|
|
beq .L847
|
|
ldr r2, .L850
|
|
lsl r3, r0, #1
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
mov r1, #0
|
|
ldr r2, [r2, #-3540]
|
|
strh r1, [r2, r3] @ movhi
|
|
bl INSERT_FREE_LIST
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.L847:
|
|
mov r0, #0
|
|
bx lr
|
|
.L851:
|
|
.align 2
|
|
.L850:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size free_data_superblock, .-free_data_superblock
|
|
.align 2
|
|
.global FtlGcBufInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcBufInit, %function
|
|
FtlGcBufInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr ip, .L858
|
|
mov r3, #0
|
|
ldr r2, .L858+4
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r4, #12
|
|
mov r5, #1
|
|
add r6, ip, #76
|
|
mov r7, #36
|
|
str r3, [r2, #-2704]
|
|
.L853:
|
|
ldrh r1, [ip]
|
|
uxth r0, r3
|
|
add lr, r3, #1
|
|
cmp r0, r1
|
|
bcc .L854
|
|
ldr r4, .L858+8
|
|
mov ip, #12
|
|
mov lr, #0
|
|
.L855:
|
|
ldr r3, [r2, #-2684]
|
|
cmp r1, r3
|
|
bcc .L856
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L854:
|
|
uxth r3, r3
|
|
ldr r8, [r2, #-2700]
|
|
mul r0, r4, r3
|
|
add r1, r8, r0
|
|
str r5, [r1, #8]
|
|
ldrh r1, [r6]
|
|
mul r1, r3, r1
|
|
add r9, r1, #3
|
|
cmp r1, #0
|
|
movlt r1, r9
|
|
ldr r9, [r2, #-2696]
|
|
bic r1, r1, #3
|
|
add r1, r9, r1
|
|
str r1, [r8, r0]
|
|
ldr r1, .L858+12
|
|
ldr r9, [r2, #-2700]
|
|
ldrh r1, [r1]
|
|
add r8, r9, r0
|
|
mul r1, r3, r1
|
|
add r10, r1, #3
|
|
cmp r1, #0
|
|
movlt r1, r10
|
|
ldr r10, [r2, #-2692]
|
|
bic r1, r1, #3
|
|
add r1, r10, r1
|
|
str r1, [r8, #4]
|
|
ldr r1, [r2, #-2688]
|
|
mla r3, r7, r3, r1
|
|
ldr r1, [r9, r0]
|
|
str r1, [r3, #8]
|
|
ldr r1, [r8, #4]
|
|
str r1, [r3, #12]
|
|
mov r3, lr
|
|
b .L853
|
|
.L856:
|
|
mul r5, ip, r1
|
|
ldr r6, [r2, #-2700]
|
|
add r3, r6, r5
|
|
str lr, [r3, #8]
|
|
ldrh r3, [r4]
|
|
mul r3, r1, r3
|
|
add r0, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, r0
|
|
ldr r0, [r2, #-2696]
|
|
bic r3, r3, #3
|
|
add r3, r0, r3
|
|
str r3, [r6, r5]
|
|
ldr r3, .L858+12
|
|
ldr r0, [r2, #-2700]
|
|
ldrh r3, [r3]
|
|
add r0, r0, r5
|
|
mul r3, r1, r3
|
|
add r1, r1, #1
|
|
uxth r1, r1
|
|
add r5, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, r5
|
|
ldr r5, [r2, #-2692]
|
|
bic r3, r3, #3
|
|
add r3, r5, r3
|
|
str r3, [r0, #4]
|
|
b .L855
|
|
.L859:
|
|
.align 2
|
|
.L858:
|
|
.word .LANCHOR0+2324
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2400
|
|
.word .LANCHOR0+2402
|
|
.fnend
|
|
.size FtlGcBufInit, .-FtlGcBufInit
|
|
.align 2
|
|
.global FtlGcBufFree
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcBufFree, %function
|
|
FtlGcBufFree:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L868
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov lr, #0
|
|
mov r5, #36
|
|
mov r7, #12
|
|
mov r8, lr
|
|
ldr r6, [r3, #-2684]
|
|
ldr r4, [r3, #-2700]
|
|
.L861:
|
|
uxth r3, lr
|
|
cmp r1, r3
|
|
popls {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
mla ip, r5, r3, r0
|
|
mov r2, #0
|
|
.L862:
|
|
uxth r3, r2
|
|
cmp r6, r3
|
|
bls .L863
|
|
mul r3, r7, r3
|
|
add r2, r2, #1
|
|
ldr r10, [r4, r3]
|
|
add r9, r4, r3
|
|
ldr r3, [ip, #8]
|
|
cmp r10, r3
|
|
bne .L862
|
|
str r8, [r9, #8]
|
|
.L863:
|
|
add lr, lr, #1
|
|
b .L861
|
|
.L869:
|
|
.align 2
|
|
.L868:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size FtlGcBufFree, .-FtlGcBufFree
|
|
.align 2
|
|
.global FtlGcBufAlloc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcBufAlloc, %function
|
|
FtlGcBufAlloc:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L878
|
|
mov ip, #0
|
|
push {r4, r5, r6, r7, r8, r9, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, lr}
|
|
mov r6, #12
|
|
mov r7, #1
|
|
mov r8, #36
|
|
ldr r4, [r3, #-2684]
|
|
ldr r5, [r3, #-2700]
|
|
.L871:
|
|
uxth r2, ip
|
|
cmp r1, r2
|
|
bhi .L875
|
|
pop {r4, r5, r6, r7, r8, r9, pc}
|
|
.L875:
|
|
mov lr, #0
|
|
.L872:
|
|
uxth r3, lr
|
|
cmp r4, r3
|
|
bls .L873
|
|
mla r3, r6, r3, r5
|
|
add lr, lr, #1
|
|
ldr r9, [r3, #8]
|
|
cmp r9, #0
|
|
bne .L872
|
|
mla r2, r8, r2, r0
|
|
ldr lr, [r3]
|
|
str r7, [r3, #8]
|
|
str lr, [r2, #8]
|
|
ldr r3, [r3, #4]
|
|
str r3, [r2, #12]
|
|
.L873:
|
|
add ip, ip, #1
|
|
b .L871
|
|
.L879:
|
|
.align 2
|
|
.L878:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size FtlGcBufAlloc, .-FtlGcBufAlloc
|
|
.align 2
|
|
.global IsBlkInGcList
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type IsBlkInGcList, %function
|
|
IsBlkInGcList:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, .L885
|
|
ldr r3, [r2, #-2680]
|
|
sub r2, r2, #2672
|
|
ldrh r2, [r2, #-4]
|
|
add r2, r3, r2, lsl #1
|
|
.L881:
|
|
cmp r3, r2
|
|
bne .L883
|
|
mov r0, #0
|
|
bx lr
|
|
.L883:
|
|
ldrh r1, [r3], #2
|
|
cmp r1, r0
|
|
bne .L881
|
|
mov r0, #1
|
|
bx lr
|
|
.L886:
|
|
.align 2
|
|
.L885:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size IsBlkInGcList, .-IsBlkInGcList
|
|
.align 2
|
|
.global FtlGcUpdatePage
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcUpdatePage, %function
|
|
FtlGcUpdatePage:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mov r4, r0
|
|
ubfx r0, r0, #10, #16
|
|
mov r5, r1
|
|
mov r6, r2
|
|
bl P2V_block_in_plane
|
|
ldr r2, .L892
|
|
mov r3, #0
|
|
sub ip, r2, #2672
|
|
ldr lr, [r2, #-2680]
|
|
ldrh r7, [ip, #-4]
|
|
sub r1, lr, #2
|
|
.L888:
|
|
uxth r8, r3
|
|
cmp r8, r7
|
|
bcc .L890
|
|
moveq r3, r8
|
|
lsleq r3, r3, #1
|
|
strheq r0, [lr, r3] @ movhi
|
|
ldrheq r3, [ip, #-4]
|
|
addeq r3, r3, #1
|
|
strheq r3, [ip, #-4] @ movhi
|
|
b .L889
|
|
.L890:
|
|
ldrh r8, [r1, #2]!
|
|
add r3, r3, #1
|
|
cmp r8, r0
|
|
bne .L888
|
|
.L889:
|
|
ldr r0, .L892+4
|
|
mov r3, #12
|
|
ldr r2, [r2, #-2672]
|
|
ldrh r1, [r0, #-12]
|
|
mul r3, r3, r1
|
|
add r1, r2, r3
|
|
stmib r1, {r5, r6}
|
|
str r4, [r2, r3]
|
|
ldrh r3, [r0, #-12]
|
|
add r3, r3, #1
|
|
strh r3, [r0, #-12] @ movhi
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L893:
|
|
.align 2
|
|
.L892:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2-2656
|
|
.fnend
|
|
.size FtlGcUpdatePage, .-FtlGcUpdatePage
|
|
.align 2
|
|
.global FtlGcRefreshOpenBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcRefreshOpenBlock, %function
|
|
FtlGcRefreshOpenBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
ldr r4, .L902
|
|
ldrh r3, [r4, #-10]
|
|
cmp r3, r0
|
|
beq .L896
|
|
ldrh r3, [r4, #-8]
|
|
cmp r3, r0
|
|
beq .L896
|
|
ldrh r3, [r4, #-6]
|
|
cmp r3, r0
|
|
beq .L896
|
|
ldrh r3, [r4, #-4]
|
|
cmp r3, r0
|
|
beq .L896
|
|
mov r5, r0
|
|
mov r1, r0
|
|
ldr r0, .L902+4
|
|
bl printk
|
|
ldrh r2, [r4, #-10]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
strheq r5, [r4, #-10] @ movhi
|
|
beq .L896
|
|
ldrh r2, [r4, #-8]
|
|
cmp r2, r3
|
|
strheq r5, [r4, #-8] @ movhi
|
|
beq .L896
|
|
ldrh r2, [r4, #-6]
|
|
cmp r2, r3
|
|
strheq r5, [r4, #-6] @ movhi
|
|
beq .L896
|
|
ldrh r2, [r4, #-4]
|
|
cmp r2, r3
|
|
strheq r5, [r4, #-4] @ movhi
|
|
.L896:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
.L903:
|
|
.align 2
|
|
.L902:
|
|
.word .LANCHOR2-2656
|
|
.word .LC79
|
|
.fnend
|
|
.size FtlGcRefreshOpenBlock, .-FtlGcRefreshOpenBlock
|
|
.align 2
|
|
.global FtlGcRefreshBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcRefreshBlock, %function
|
|
FtlGcRefreshBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
ldr r4, .L915
|
|
ldrh r3, [r4, #-10]
|
|
cmp r3, r0
|
|
beq .L912
|
|
ldrh r3, [r4, #-8]
|
|
cmp r3, r0
|
|
beq .L912
|
|
ldrh r3, [r4, #-6]
|
|
cmp r3, r0
|
|
beq .L912
|
|
ldrh r3, [r4, #-4]
|
|
cmp r3, r0
|
|
beq .L912
|
|
mov r5, r0
|
|
mov r1, r0
|
|
ldr r0, .L915+4
|
|
bl printk
|
|
ldrh r2, [r4, #-10]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
strheq r5, [r4, #-10] @ movhi
|
|
beq .L912
|
|
ldrh r2, [r4, #-8]
|
|
cmp r2, r3
|
|
strheq r5, [r4, #-8] @ movhi
|
|
beq .L912
|
|
ldrh r2, [r4, #-6]
|
|
cmp r2, r3
|
|
strheq r5, [r4, #-6] @ movhi
|
|
beq .L912
|
|
ldrh r2, [r4, #-4]
|
|
cmp r2, r3
|
|
bne .L913
|
|
strh r5, [r4, #-4] @ movhi
|
|
.L912:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
.L913:
|
|
mvn r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
.L916:
|
|
.align 2
|
|
.L915:
|
|
.word .LANCHOR2-2656
|
|
.word .LC79
|
|
.fnend
|
|
.size FtlGcRefreshBlock, .-FtlGcRefreshBlock
|
|
.align 2
|
|
.global FtlGcMarkBadPhyBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcMarkBadPhyBlk, %function
|
|
FtlGcMarkBadPhyBlk:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mov r5, r0
|
|
ldr r6, .L926
|
|
bl P2V_block_in_plane
|
|
sub r7, r6, #2656
|
|
mov r4, r0
|
|
mov r2, r5
|
|
ldrh r1, [r7, #-2]
|
|
ldr r0, .L926+4
|
|
bl printk
|
|
mov r0, r4
|
|
bl FtlGcRefreshBlock
|
|
ldr r3, .L926+8
|
|
ldr r3, [r3, #2248]
|
|
cmp r3, #0
|
|
mov r3, r7
|
|
beq .L918
|
|
ldr r1, [r6, #-3604]
|
|
lsl r4, r4, #1
|
|
ldrh r2, [r1, r4]
|
|
cmp r2, #39
|
|
subhi r2, r2, #40
|
|
strhhi r2, [r1, r4] @ movhi
|
|
.L918:
|
|
ldrh r2, [r3, #-2]
|
|
mov r1, #0
|
|
.L919:
|
|
uxth r0, r1
|
|
cmp r2, r0
|
|
bhi .L921
|
|
cmp r2, #15
|
|
addls r1, r2, #1
|
|
lslls r2, r2, #1
|
|
strhls r1, [r3, #-2] @ movhi
|
|
strhls r5, [r3, r2] @ movhi
|
|
b .L920
|
|
.L921:
|
|
add r1, r1, #1
|
|
add r0, r3, r1, lsl #1
|
|
ldrh r0, [r0, #-2]
|
|
cmp r0, r5
|
|
bne .L919
|
|
.L920:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L927:
|
|
.align 2
|
|
.L926:
|
|
.word .LANCHOR2
|
|
.word .LC80
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlGcMarkBadPhyBlk, .-FtlGcMarkBadPhyBlk
|
|
.align 2
|
|
.global FtlGcReFreshBadBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcReFreshBadBlk, %function
|
|
FtlGcReFreshBadBlk:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L938
|
|
ldrh r2, [r3, #-2]
|
|
cmp r2, #0
|
|
beq .L935
|
|
ldrh r0, [r3, #-10]
|
|
movw r1, #65535
|
|
cmp r0, r1
|
|
bne .L935
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
add r4, r3, #48
|
|
ldrh r1, [r4, #-14]
|
|
cmp r1, r2
|
|
movcs r2, #0
|
|
strhcs r2, [r4, #-14] @ movhi
|
|
ldrh r2, [r4, #-14]
|
|
lsl r2, r2, #1
|
|
ldrh r0, [r3, r2]
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
ldrh r3, [r4, #-14]
|
|
mov r0, #0
|
|
add r3, r3, #1
|
|
strh r3, [r4, #-14] @ movhi
|
|
pop {r4, pc}
|
|
.L935:
|
|
mov r0, #0
|
|
bx lr
|
|
.L939:
|
|
.align 2
|
|
.L938:
|
|
.word .LANCHOR2-2656
|
|
.fnend
|
|
.size FtlGcReFreshBadBlk, .-FtlGcReFreshBadBlk
|
|
.align 2
|
|
.global ftl_memset
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_memset, %function
|
|
ftl_memset:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b memset
|
|
.fnend
|
|
.size ftl_memset, .-ftl_memset
|
|
.align 2
|
|
.global BuildFlashLsbPageTable
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type BuildFlashLsbPageTable, %function
|
|
BuildFlashLsbPageTable:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
cmp r0, #0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, r1
|
|
bne .L942
|
|
ldr r3, .L998
|
|
.L943:
|
|
lsl r2, r0, #1
|
|
strh r0, [r2, r3] @ movhi
|
|
add r0, r0, #1
|
|
cmp r0, #512
|
|
bne .L943
|
|
.L949:
|
|
ldr r5, .L998+4
|
|
mov r1, #255
|
|
mov r2, #2048
|
|
uxth r4, r4
|
|
sub r0, r5, #12
|
|
sub r5, r5, #12
|
|
bl ftl_memset
|
|
ldr r1, .L998
|
|
mov r3, #0
|
|
.L944:
|
|
uxth r2, r3
|
|
cmp r4, r2
|
|
bhi .L977
|
|
pop {r4, r5, r6, pc}
|
|
.L942:
|
|
cmp r0, #1
|
|
bne .L945
|
|
ldr r1, .L998
|
|
mov r3, #0
|
|
.L948:
|
|
cmp r3, #3
|
|
uxth r2, r3
|
|
bls .L946
|
|
tst r2, #1
|
|
movne r0, #3
|
|
moveq r0, #2
|
|
rsb r2, r0, r2, lsl #1
|
|
uxth r2, r2
|
|
.L946:
|
|
lsl r0, r3, #1
|
|
add r3, r3, #1
|
|
cmp r3, #512
|
|
strh r2, [r0, r1] @ movhi
|
|
bne .L948
|
|
b .L949
|
|
.L945:
|
|
cmp r0, #2
|
|
bne .L950
|
|
ldr r1, .L998
|
|
mov r2, #0
|
|
.L952:
|
|
uxth r3, r2
|
|
cmp r2, #1
|
|
lsl r0, r2, #1
|
|
add r2, r2, #1
|
|
lslhi r3, r3, #1
|
|
subhi r3, r3, #1
|
|
uxthhi r3, r3
|
|
cmp r2, #512
|
|
strh r3, [r0, r1] @ movhi
|
|
bne .L952
|
|
b .L949
|
|
.L950:
|
|
cmp r0, #3
|
|
bne .L953
|
|
ldr r1, .L998
|
|
mov r3, #0
|
|
.L956:
|
|
cmp r3, #5
|
|
uxth r2, r3
|
|
bls .L954
|
|
tst r2, #1
|
|
movne r0, #5
|
|
moveq r0, #4
|
|
rsb r2, r0, r2, lsl #1
|
|
uxth r2, r2
|
|
.L954:
|
|
lsl r0, r3, #1
|
|
add r3, r3, #1
|
|
cmp r3, #512
|
|
strh r2, [r0, r1] @ movhi
|
|
bne .L956
|
|
b .L949
|
|
.L953:
|
|
cmp r0, #4
|
|
mov r3, #0
|
|
bne .L957
|
|
ldr r2, .L998+8
|
|
strh r3, [r2, #156] @ movhi
|
|
mov r3, #1
|
|
strh r3, [r2, #158] @ movhi
|
|
mov r3, #2
|
|
strh r3, [r2, #160] @ movhi
|
|
mov r3, #3
|
|
strh r3, [r2, #162] @ movhi
|
|
mov r3, #5
|
|
strh r3, [r2, #166] @ movhi
|
|
mov r3, #7
|
|
strh r3, [r2, #168] @ movhi
|
|
mov r3, #8
|
|
strh r0, [r2, #164] @ movhi
|
|
strh r3, [r2, #170]! @ movhi
|
|
.L959:
|
|
tst r3, #1
|
|
movne r1, #7
|
|
moveq r1, #6
|
|
rsb r1, r1, r3, lsl #1
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
strh r1, [r2, #2]! @ movhi
|
|
cmp r3, #512
|
|
bne .L959
|
|
b .L949
|
|
.L957:
|
|
cmp r0, #5
|
|
bne .L960
|
|
ldr r2, .L998+8
|
|
add r1, r2, #156
|
|
.L961:
|
|
lsl r0, r3, #1
|
|
strh r3, [r0, r1] @ movhi
|
|
add r3, r3, #1
|
|
cmp r3, #16
|
|
bne .L961
|
|
add r2, r2, #186
|
|
.L962:
|
|
strh r3, [r2, #2]! @ movhi
|
|
add r3, r3, #2
|
|
uxth r3, r3
|
|
cmp r3, #1008
|
|
bne .L962
|
|
b .L949
|
|
.L960:
|
|
cmp r0, #6
|
|
bne .L963
|
|
ldr r0, .L998
|
|
mov r1, r3
|
|
.L966:
|
|
cmp r1, #5
|
|
uxth r2, r1
|
|
bls .L964
|
|
tst r2, #1
|
|
movne r2, #12
|
|
moveq r2, #10
|
|
sub r2, r3, r2
|
|
uxth r2, r2
|
|
.L964:
|
|
lsl ip, r1, #1
|
|
add r1, r1, #1
|
|
cmp r1, #512
|
|
add r3, r3, #3
|
|
strh r2, [ip, r0] @ movhi
|
|
uxth r3, r3
|
|
bne .L966
|
|
b .L949
|
|
.L963:
|
|
cmp r0, #9
|
|
bne .L967
|
|
ldr r2, .L998+8
|
|
movw r1, #1021
|
|
strh r3, [r2, #156] @ movhi
|
|
mov r3, #1
|
|
strh r3, [r2, #158] @ movhi
|
|
mov r3, r2
|
|
mov r2, #2
|
|
strh r2, [r3, #160]! @ movhi
|
|
mov r2, #3
|
|
.L968:
|
|
strh r2, [r3, #2]! @ movhi
|
|
add r2, r2, #2
|
|
uxth r2, r2
|
|
cmp r2, r1
|
|
bne .L968
|
|
b .L949
|
|
.L967:
|
|
cmp r0, #10
|
|
bne .L969
|
|
ldr r2, .L998+8
|
|
add r1, r2, #156
|
|
.L970:
|
|
lsl r0, r3, #1
|
|
strh r3, [r0, r1] @ movhi
|
|
add r3, r3, #1
|
|
cmp r3, #63
|
|
bne .L970
|
|
add r2, r2, #280
|
|
movw r1, #961
|
|
.L971:
|
|
strh r3, [r2, #2]! @ movhi
|
|
add r3, r3, #2
|
|
uxth r3, r3
|
|
cmp r3, r1
|
|
bne .L971
|
|
b .L949
|
|
.L969:
|
|
cmp r0, #11
|
|
bne .L972
|
|
ldr r2, .L998+8
|
|
mov r3, #0
|
|
add r1, r2, #156
|
|
.L973:
|
|
lsl r0, r3, #1
|
|
strh r3, [r0, r1] @ movhi
|
|
add r3, r3, #1
|
|
cmp r3, #8
|
|
bne .L973
|
|
add r2, r2, #170
|
|
.L975:
|
|
tst r3, #1
|
|
movne r1, #7
|
|
moveq r1, #6
|
|
rsb r1, r1, r3, lsl #1
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
strh r1, [r2, #2]! @ movhi
|
|
cmp r3, #512
|
|
bne .L975
|
|
b .L949
|
|
.L972:
|
|
cmp r0, #12
|
|
bne .L949
|
|
ldr r3, .L998+8
|
|
mov r2, #0
|
|
strh r2, [r3, #156] @ movhi
|
|
mov r2, #1
|
|
strh r2, [r3, #158] @ movhi
|
|
mov r2, #2
|
|
strh r2, [r3, #160] @ movhi
|
|
mov r2, #3
|
|
strh r2, [r3, #162]! @ movhi
|
|
mov r2, #4
|
|
.L976:
|
|
sub r1, r2, #1
|
|
add r1, r1, r2, lsr #1
|
|
add r2, r2, #1
|
|
uxth r2, r2
|
|
strh r1, [r3, #2]! @ movhi
|
|
cmp r2, #512
|
|
bne .L976
|
|
b .L949
|
|
.L977:
|
|
lsl r2, r3, #1
|
|
add r3, r3, #1
|
|
ldrh r2, [r2, r1]
|
|
lsl r0, r2, #1
|
|
strh r2, [r5, r0] @ movhi
|
|
b .L944
|
|
.L999:
|
|
.align 2
|
|
.L998:
|
|
.word .LANCHOR0+156
|
|
.word .LANCHOR2-2608
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size BuildFlashLsbPageTable, .-BuildFlashLsbPageTable
|
|
.align 2
|
|
.global FlashDieInfoInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashDieInfoInit, %function
|
|
FlashDieInfoInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L1015
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r6, #0
|
|
ldr r4, .L1015+4
|
|
ldr r10, .L1015+8
|
|
ldrh r0, [r3, #10]
|
|
strb r6, [r4, #2234]
|
|
strb r6, [r10, #-572]
|
|
bl FlashBlockAlignInit
|
|
mov r2, #8
|
|
mov r1, r6
|
|
ldr r0, .L1015+12
|
|
bl ftl_memset
|
|
mov r2, #32
|
|
mov r1, r6
|
|
ldr r0, .L1015+16
|
|
bl ftl_memset
|
|
mov r2, #128
|
|
mov r1, r6
|
|
ldr r0, .L1015+20
|
|
bl ftl_memset
|
|
ldr r9, .L1015+24
|
|
ldr r5, [r4, #48]
|
|
mov r8, r9
|
|
add r7, r5, #1
|
|
.L1002:
|
|
ldrb r2, [r5] @ zero_extendqisi2
|
|
add r1, r9, r6, lsl #3
|
|
mov r0, r7
|
|
bl FlashMemCmp8
|
|
cmp r0, #0
|
|
bne .L1001
|
|
ldrb r3, [r4, #2234] @ zero_extendqisi2
|
|
add r2, r4, r3, lsl #2
|
|
str r0, [r2, #1180]
|
|
add r2, r3, #1
|
|
add r3, r4, r3
|
|
strb r2, [r4, #2234]
|
|
strb r6, [r3, #2236]
|
|
.L1001:
|
|
add r6, r6, #1
|
|
cmp r6, #4
|
|
bne .L1002
|
|
ldrb r3, [r4, #2234] @ zero_extendqisi2
|
|
strb r3, [r10, #-572]
|
|
ldrb r3, [r5, #8] @ zero_extendqisi2
|
|
cmp r3, #2
|
|
beq .L1003
|
|
.L1007:
|
|
ldrh r2, [r5, #14]
|
|
ldrb r3, [r4, #2234] @ zero_extendqisi2
|
|
smulbb r3, r3, r2
|
|
ldrb r2, [r5, #13] @ zero_extendqisi2
|
|
smulbb r3, r3, r2
|
|
ldr r2, .L1015+28
|
|
strh r3, [r2, #-2] @ movhi
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L1003:
|
|
ldr r9, [r4, #40]
|
|
mov r6, #0
|
|
.L1006:
|
|
ldrb r2, [r5] @ zero_extendqisi2
|
|
add r1, r8, r6, lsl #3
|
|
mov r0, r7
|
|
bl FlashMemCmp8
|
|
cmp r0, #0
|
|
bne .L1004
|
|
ldrh r3, [r5, #14]
|
|
ldrb r2, [r4, #2234] @ zero_extendqisi2
|
|
and r1, r3, #65280
|
|
ldrb r3, [r5, #13] @ zero_extendqisi2
|
|
mul r3, r9, r3
|
|
mul r3, r3, r1
|
|
add r1, r4, r2, lsl #2
|
|
str r3, [r1, #1180]
|
|
ldrb r0, [r5, #23] @ zero_extendqisi2
|
|
cmp r0, #0
|
|
lslne r3, r3, #1
|
|
strne r3, [r1, #1180]
|
|
add r3, r2, #1
|
|
add r2, r4, r2
|
|
strb r3, [r4, #2234]
|
|
strb r6, [r2, #2236]
|
|
.L1004:
|
|
add r6, r6, #1
|
|
cmp r6, #4
|
|
bne .L1006
|
|
b .L1007
|
|
.L1016:
|
|
.align 2
|
|
.L1015:
|
|
.word .LANCHOR1+468
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2236
|
|
.word .LANCHOR0+1180
|
|
.word .LANCHOR0+2104
|
|
.word .LANCHOR0+2072
|
|
.word .LANCHOR2-568
|
|
.fnend
|
|
.size FlashDieInfoInit, .-FlashDieInfoInit
|
|
.align 2
|
|
.global ftl_read_flash_info
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_read_flash_info, %function
|
|
ftl_read_flash_info:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
mov r2, #11
|
|
mov r1, #0
|
|
mov r4, r0
|
|
bl ftl_memset
|
|
ldr r2, .L1021
|
|
mov ip, #1
|
|
ldr r0, .L1021+4
|
|
ldr r3, [r2, #48]
|
|
ldr r1, [r2, #40]
|
|
ldrb r3, [r3, #9] @ zero_extendqisi2
|
|
smulbb r3, r3, r1
|
|
strh r3, [r4, #4] @ unaligned
|
|
ldrb r3, [r2, #2316] @ zero_extendqisi2
|
|
strb r3, [r4, #7]
|
|
ldr r3, [r2, #2432]
|
|
str r3, [r4] @ unaligned
|
|
ldr r3, [r2, #48]
|
|
ldrb r1, [r3, #9] @ zero_extendqisi2
|
|
strb r1, [r4, #6]
|
|
mov r1, #32
|
|
strb r1, [r4, #8]
|
|
ldrb r1, [r2, #2234] @ zero_extendqisi2
|
|
ldrb r3, [r3, #7] @ zero_extendqisi2
|
|
strb r3, [r4, #9]
|
|
mov r3, #0
|
|
strb r3, [r4, #10]
|
|
.L1018:
|
|
uxtb r2, r3
|
|
cmp r1, r2
|
|
bhi .L1019
|
|
pop {r4, pc}
|
|
.L1019:
|
|
ldrb lr, [r3, r0] @ zero_extendqisi2
|
|
add r3, r3, #1
|
|
ldrb r2, [r4, #10] @ zero_extendqisi2
|
|
orr r2, r2, ip, lsl lr
|
|
strb r2, [r4, #10]
|
|
b .L1018
|
|
.L1022:
|
|
.align 2
|
|
.L1021:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2236
|
|
.fnend
|
|
.size ftl_read_flash_info, .-ftl_read_flash_info
|
|
.align 2
|
|
.global FtlMemInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMemInit, %function
|
|
FtlMemInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r6, #0
|
|
ldr r4, .L1126
|
|
mvn r2, #0
|
|
mov r1, #32
|
|
mov r0, #1024
|
|
ldr r5, .L1126+4
|
|
mov r8, #12
|
|
sub r3, r4, #568
|
|
str r6, [r4, #-564]
|
|
strh r6, [r3] @ movhi
|
|
movw r3, #65535
|
|
str r3, [r4, #-556]
|
|
sub r3, r4, #2656
|
|
strh r2, [r3, #-10] @ movhi
|
|
movw r9, #2324
|
|
strh r2, [r3, #-8] @ movhi
|
|
mov r7, #36
|
|
strh r2, [r3, #-6] @ movhi
|
|
strh r2, [r3, #-4] @ movhi
|
|
sub r2, r4, #2720
|
|
strh r6, [r3, #-2] @ movhi
|
|
sub r3, r4, #544
|
|
strh r1, [r2] @ movhi
|
|
sub r2, r4, #2704
|
|
strh r6, [r3] @ movhi
|
|
mov r1, #128
|
|
sub r3, r4, #2608
|
|
strh r1, [r2, #-14] @ movhi
|
|
strh r6, [r2, #-8] @ movhi
|
|
str r6, [r4, #-2724]
|
|
str r6, [r4, #-3332]
|
|
str r6, [r4, #-3328]
|
|
str r6, [r4, #-3344]
|
|
str r6, [r4, #-3356]
|
|
str r6, [r4, #-3360]
|
|
str r6, [r4, #-3352]
|
|
str r6, [r4, #-3348]
|
|
str r6, [r4, #-3364]
|
|
str r6, [r4, #-3324]
|
|
str r6, [r4, #-3320]
|
|
str r6, [r4, #-3600]
|
|
str r6, [r4, #-3312]
|
|
str r6, [r4, #-3308]
|
|
str r6, [r4, #-560]
|
|
str r6, [r4, #-2708]
|
|
str r6, [r4, #-552]
|
|
str r6, [r4, #-2716]
|
|
str r6, [r4, #-548]
|
|
strh r6, [r3, #-14] @ movhi
|
|
movw r3, #2396
|
|
ldrh r1, [r5, r3]
|
|
bl __aeabi_idiv
|
|
movw r3, #2324
|
|
str r6, [r5, #2444]
|
|
ldrh r3, [r5, r3]
|
|
movw r6, #2394
|
|
str r0, [r4, #-540]
|
|
lsl r3, r3, #2
|
|
cmp r0, r3
|
|
ldrh r0, [r5, r6]
|
|
strhi r3, [r4, #-540]
|
|
lsl r0, r0, #1
|
|
bl ftl_malloc
|
|
str r0, [r4, #-2680]
|
|
ldrh r0, [r5, r6]
|
|
mul r0, r8, r0
|
|
bl ftl_malloc
|
|
ldrh r6, [r5, r9]
|
|
str r0, [r4, #-2672]
|
|
mul r6, r7, r6
|
|
lsl r10, r6, #3
|
|
mov r0, r10
|
|
bl ftl_malloc
|
|
str r0, [r4, #-536]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #-532]
|
|
mov r0, r10
|
|
bl ftl_malloc
|
|
str r0, [r4, #-528]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #-3608]
|
|
mov r0, r6
|
|
bl ftl_malloc
|
|
str r0, [r4, #-2688]
|
|
movw r10, #2402
|
|
ldr r0, [r4, #-540]
|
|
ldr r6, .L1126+8
|
|
mul r0, r7, r0
|
|
bl ftl_malloc
|
|
ldrh r3, [r5, r9]
|
|
ldrh r7, [r6]
|
|
str r0, [r5, #2448]
|
|
lsl r3, r3, #1
|
|
mov r0, r7
|
|
add r3, r3, #1
|
|
str r3, [r4, #-2684]
|
|
bl ftl_malloc
|
|
str r0, [r4, #-524]
|
|
mov r0, r7
|
|
bl ftl_malloc
|
|
str r0, [r4, #-520]
|
|
mov r0, r7
|
|
bl ftl_malloc
|
|
str r0, [r4, #-516]
|
|
ldr r0, [r4, #-2684]
|
|
mul r0, r0, r7
|
|
bl ftl_malloc
|
|
str r0, [r4, #-2696]
|
|
ldr r0, [r4, #-540]
|
|
mul r0, r0, r7
|
|
bl ftl_malloc
|
|
str r0, [r4, #-512]
|
|
mov r0, r7
|
|
bl ftl_malloc
|
|
str r0, [r4, #-508]
|
|
mov r0, r7
|
|
bl ftl_malloc
|
|
str r0, [r4, #-504]
|
|
ldr r0, [r4, #-2684]
|
|
mul r0, r8, r0
|
|
bl ftl_malloc
|
|
ldrh r3, [r5, r10]
|
|
ldrh r7, [r5, r9]
|
|
movw r9, #2334
|
|
str r0, [r4, #-2700]
|
|
mul r7, r7, r3
|
|
mov r0, r7
|
|
bl ftl_malloc
|
|
str r0, [r4, #-500]
|
|
lsl r0, r7, #3
|
|
ldr r7, .L1126+12
|
|
bl ftl_malloc
|
|
ldrh r3, [r5, r10]
|
|
str r0, [r4, #-496]
|
|
ldr r0, [r4, #-2684]
|
|
mul r0, r0, r3
|
|
bl ftl_malloc
|
|
ldrh r3, [r5, r10]
|
|
str r0, [r4, #-2692]
|
|
ldr r0, [r4, #-540]
|
|
mul r0, r0, r3
|
|
bl ftl_malloc
|
|
str r0, [r4, #-492]
|
|
ldrh r0, [r5, r9]
|
|
lsl r0, r0, #1
|
|
uxth r0, r0
|
|
strh r0, [r7] @ movhi
|
|
bl ftl_malloc
|
|
str r0, [r4, #-484]
|
|
ldrh r0, [r7]
|
|
ldr r3, .L1126+16
|
|
add r0, r0, #544
|
|
add r0, r0, #3
|
|
lsr r0, r0, #9
|
|
strh r0, [r7] @ movhi
|
|
and r0, r3, r0, lsl #9
|
|
bl ftl_malloc
|
|
ldrh r10, [r5, r9]
|
|
str r0, [r4, #-480]
|
|
add r0, r0, #32
|
|
str r0, [r4, #-3604]
|
|
lsl r10, r10, #1
|
|
mov r0, r10
|
|
bl ftl_malloc
|
|
str r0, [r4, #-476]
|
|
mov r0, r10
|
|
bl ftl_malloc
|
|
ldr r10, [r5, #2420]
|
|
str r0, [r4, #-3540]
|
|
lsl r10, r10, #1
|
|
mov r0, r10
|
|
bl ftl_malloc
|
|
str r0, [r4, #-472]
|
|
mov r0, r10
|
|
bl ftl_malloc
|
|
str r0, [r4, #-468]
|
|
movw r10, #2412
|
|
ldrh r0, [r5, r9]
|
|
lsr r0, r0, #3
|
|
add r0, r0, #4
|
|
bl ftl_malloc
|
|
str r0, [r5, #32]
|
|
ldrh r0, [r5, r10]
|
|
lsl r0, r0, #1
|
|
bl ftl_malloc
|
|
str r0, [r5, #2440]
|
|
ldrh r0, [r5, r10]
|
|
lsl r0, r0, #1
|
|
bl ftl_malloc
|
|
str r0, [r4, #-464]
|
|
ldrh r0, [r5, r10]
|
|
movw r10, #2414
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
str r0, [r4, #-460]
|
|
ldrh r0, [r5, r10]
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
ldrh r2, [r5, r10]
|
|
mov r1, #0
|
|
str r0, [r4, #-456]
|
|
lsl r2, r2, #2
|
|
bl ftl_memset
|
|
movw r3, #2428
|
|
ldrh r10, [r5, r3]
|
|
lsl r10, r10, #2
|
|
mov r0, r10
|
|
bl ftl_malloc
|
|
str r0, [r4, #-452]
|
|
mov r0, r10
|
|
bl ftl_malloc
|
|
str r0, [r4, #-448]
|
|
movw r10, #2430
|
|
ldr r0, [r5, #2420]
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
str r0, [r4, #-444]
|
|
ldrh r0, [r5, r10]
|
|
mul r0, r8, r0
|
|
mov r8, r6
|
|
add r6, r6, #56
|
|
bl ftl_malloc
|
|
ldrh r3, [r5, r10]
|
|
str r0, [r4, #-3376]
|
|
ldrh r0, [r8], #84
|
|
mul r0, r0, r3
|
|
bl ftl_malloc
|
|
ldrh r3, [r5, r9]
|
|
movw r9, #2346
|
|
str r0, [r4, #-440]
|
|
mov r0, #6
|
|
mul r0, r0, r3
|
|
bl ftl_malloc
|
|
movw r3, #2388
|
|
str r0, [r4, #-3548]
|
|
ldrh r0, [r5, r3]
|
|
ldrh r3, [r5, r9]
|
|
add r0, r0, #31
|
|
asr r0, r0, #5
|
|
strh r0, [r7, #52]! @ movhi
|
|
mul r0, r0, r3
|
|
lsl r0, r0, #2
|
|
bl ftl_malloc
|
|
ldrh r2, [r7]
|
|
mov r3, #1
|
|
ldrh ip, [r5, r9]
|
|
str r0, [r5, #2484]
|
|
lsl r2, r2, #2
|
|
mov r1, r2
|
|
.L1025:
|
|
cmp r3, ip
|
|
bcc .L1026
|
|
add r6, r6, r3, lsl #2
|
|
ldr r3, .L1126+20
|
|
mov r2, #0
|
|
add r6, r6, #24
|
|
.L1027:
|
|
cmp r3, r6
|
|
bne .L1028
|
|
ldr r3, [r4, #-472]
|
|
cmp r3, #0
|
|
bne .L1029
|
|
.L1031:
|
|
ldr r1, .L1126+24
|
|
ldr r0, .L1126+28
|
|
bl printk
|
|
mvn r0, #0
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L1026:
|
|
ldr r0, [r5, #2484]
|
|
add r3, r3, #1
|
|
add r0, r0, r1
|
|
add r1, r1, r2
|
|
str r0, [r8, #4]!
|
|
b .L1025
|
|
.L1028:
|
|
str r2, [r6, #4]!
|
|
b .L1027
|
|
.L1029:
|
|
ldr r3, [r4, #-468]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-452]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-444]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-3376]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-440]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-3548]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r5, #2484]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-3540]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-2680]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-2672]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-536]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-528]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-3608]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-2688]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-532]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-524]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-520]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-516]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-2696]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-508]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-504]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-2700]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-500]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-496]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-2692]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-3604]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, [r4, #-484]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, .L1126+4
|
|
ldr r3, [r3, #2440]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
ldr r3, .L1126
|
|
ldr r2, [r3, #-464]
|
|
cmp r2, #0
|
|
beq .L1031
|
|
ldr r2, [r3, #-460]
|
|
cmp r2, #0
|
|
beq .L1031
|
|
ldr r3, [r3, #-456]
|
|
cmp r3, #0
|
|
beq .L1031
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L1127:
|
|
.align 2
|
|
.L1126:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2400
|
|
.word .LANCHOR2-488
|
|
.word 33553920
|
|
.word .LANCHOR0+2512
|
|
.word .LANCHOR3
|
|
.word .LC81
|
|
.fnend
|
|
.size FtlMemInit, .-FtlMemInit
|
|
.align 2
|
|
.global FtlBbt2Bitmap
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbt2Bitmap, %function
|
|
FtlBbt2Bitmap:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L1134
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r5, r1
|
|
mov r4, r0
|
|
mov r1, #0
|
|
mov r0, r5
|
|
movw r6, #65535
|
|
ldrh r2, [r3]
|
|
lsl r2, r2, #2
|
|
bl ftl_memset
|
|
ldr ip, .L1134+4
|
|
add r0, r4, #1020
|
|
sub r2, r4, #2
|
|
add r0, r0, #2
|
|
mov r4, #1
|
|
.L1130:
|
|
ldrh r3, [r2, #2]!
|
|
cmp r3, r6
|
|
popeq {r4, r5, r6, pc}
|
|
lsr lr, r3, #5
|
|
and r3, r3, #31
|
|
cmp r2, r0
|
|
ldr r1, [r5, lr, lsl #2]
|
|
orr r3, r1, r4, lsl r3
|
|
str r3, [r5, lr, lsl #2]
|
|
ldrh r3, [ip, #6]
|
|
add r3, r3, #1
|
|
strh r3, [ip, #6] @ movhi
|
|
bne .L1130
|
|
pop {r4, r5, r6, pc}
|
|
.L1135:
|
|
.align 2
|
|
.L1134:
|
|
.word .LANCHOR2-436
|
|
.word .LANCHOR0+2456
|
|
.fnend
|
|
.size FtlBbt2Bitmap, .-FtlBbt2Bitmap
|
|
.align 2
|
|
.global FtlBbtMemInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbtMemInit, %function
|
|
FtlBbtMemInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r2, .L1137
|
|
movw r3, #2456
|
|
mvn r1, #0
|
|
add r0, r2, r3
|
|
strh r1, [r2, r3] @ movhi
|
|
mov r3, #0
|
|
mov r2, #16
|
|
strh r3, [r0, #6] @ movhi
|
|
mov r1, #255
|
|
add r0, r0, #12
|
|
b ftl_memset
|
|
.L1138:
|
|
.align 2
|
|
.L1137:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlBbtMemInit, .-FtlBbtMemInit
|
|
.align 2
|
|
.global FtlFreeSysBlkQueueInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlFreeSysBlkQueueInit, %function
|
|
FtlFreeSysBlkQueueInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r1, .L1141
|
|
movw r2, #2516
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
mov r4, #0
|
|
add r3, r1, r2
|
|
strh r0, [r1, r2] @ movhi
|
|
mov r2, #2048
|
|
mov r1, r4
|
|
add r0, r3, #8
|
|
strh r4, [r3, #2] @ movhi
|
|
strh r4, [r3, #4] @ movhi
|
|
strh r4, [r3, #6] @ movhi
|
|
bl ftl_memset
|
|
mov r0, r4
|
|
pop {r4, pc}
|
|
.L1142:
|
|
.align 2
|
|
.L1141:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlFreeSysBlkQueueInit, .-FtlFreeSysBlkQueueInit
|
|
.align 2
|
|
.global ftl_free_no_use_map_blk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_free_no_use_map_blk, %function
|
|
ftl_free_no_use_map_blk:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r1, #0
|
|
ldrh r2, [r0, #10]
|
|
mov r4, r0
|
|
ldr r5, [r0, #20]
|
|
ldr r7, [r0, #12]
|
|
ldr r6, [r0, #24]
|
|
lsl r2, r2, #1
|
|
mov r0, r5
|
|
bl ftl_memset
|
|
mov r2, #0
|
|
.L1144:
|
|
ldrh r1, [r4, #6]
|
|
uxth r3, r2
|
|
cmp r1, r3
|
|
bhi .L1148
|
|
ldr r2, .L1164
|
|
movw r3, #2392
|
|
mov r6, #0
|
|
mov r8, r6
|
|
mov r10, r6
|
|
ldrh r2, [r2, r3]
|
|
ldrh r3, [r4]
|
|
lsl r3, r3, #1
|
|
strh r2, [r5, r3] @ movhi
|
|
ldrh r9, [r5]
|
|
.L1149:
|
|
ldrh r3, [r4, #10]
|
|
uxth r1, r6
|
|
cmp r3, r1
|
|
bhi .L1153
|
|
mov r0, r8
|
|
pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1148:
|
|
uxth r3, r2
|
|
mov r1, #0
|
|
ldr r0, [r6, r3, lsl #2]
|
|
ubfx r0, r0, #10, #16
|
|
.L1145:
|
|
ldrh ip, [r4, #10]
|
|
uxth r3, r1
|
|
cmp ip, r3
|
|
addls r2, r2, #1
|
|
bls .L1144
|
|
.L1147:
|
|
uxth r3, r1
|
|
add r1, r1, #1
|
|
lsl r3, r3, #1
|
|
ldrh ip, [r7, r3]
|
|
adds lr, ip, #0
|
|
movne lr, #1
|
|
cmp r0, ip
|
|
movne lr, #0
|
|
cmp lr, #0
|
|
ldrhne ip, [r5, r3]
|
|
addne ip, ip, #1
|
|
strhne ip, [r5, r3] @ movhi
|
|
b .L1145
|
|
.L1153:
|
|
uxth r3, r6
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r5, r3]
|
|
cmp r9, r2
|
|
bls .L1150
|
|
ldrh r0, [r7, r3]
|
|
add fp, r7, r3
|
|
cmp r0, #0
|
|
bne .L1151
|
|
.L1152:
|
|
add r6, r6, #1
|
|
b .L1149
|
|
.L1150:
|
|
cmp r2, #0
|
|
bne .L1152
|
|
ldrh r0, [r7, r3]
|
|
add fp, r7, r3
|
|
cmp r0, #0
|
|
beq .L1152
|
|
.L1154:
|
|
mov r1, #1
|
|
bl FtlFreeSysBlkQueueIn
|
|
strh r10, [fp] @ movhi
|
|
ldrh r3, [r4, #8]
|
|
sub r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
b .L1152
|
|
.L1151:
|
|
subs r9, r2, #0
|
|
mov r8, r1
|
|
beq .L1154
|
|
b .L1152
|
|
.L1165:
|
|
.align 2
|
|
.L1164:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size ftl_free_no_use_map_blk, .-ftl_free_no_use_map_blk
|
|
.align 2
|
|
.global FtlL2PDataInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlL2PDataInit, %function
|
|
FtlL2PDataInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r1, #0
|
|
ldr r4, .L1170
|
|
mvn r7, #0
|
|
ldr r5, .L1170+4
|
|
ldr r2, [r4, #2420]
|
|
add r6, r4, #2400
|
|
ldr r0, [r5, #-468]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
movw r2, #2430
|
|
ldrh r3, [r6]
|
|
ldrh r2, [r4, r2]
|
|
mov r1, #255
|
|
ldr r0, [r5, #-440]
|
|
mul r2, r2, r3
|
|
bl ftl_memset
|
|
mov r2, #0
|
|
mov r3, r5
|
|
mov r1, r6
|
|
add ip, r6, #30
|
|
mov r5, #12
|
|
mov r6, r2
|
|
.L1167:
|
|
ldrh r8, [ip]
|
|
uxth r0, r2
|
|
add lr, r2, #1
|
|
cmp r8, r0
|
|
bhi .L1168
|
|
ldr r2, .L1170+8
|
|
mvn r1, #0
|
|
strh r1, [r2, #2] @ movhi
|
|
strh r1, [r2] @ movhi
|
|
ldr r1, [r4, #2420]
|
|
strh r1, [r2, #10] @ movhi
|
|
ldr r1, .L1170+12
|
|
strh r1, [r2, #4] @ movhi
|
|
ldrh r1, [r2, #44]
|
|
strh r1, [r2, #8] @ movhi
|
|
movw r1, #2428
|
|
ldrh r1, [r4, r1]
|
|
strh r1, [r2, #6] @ movhi
|
|
ldr r2, [r3, #-472]
|
|
str r2, [r3, #-420]
|
|
ldr r2, [r3, #-444]
|
|
str r2, [r3, #-416]
|
|
ldr r2, [r3, #-468]
|
|
str r2, [r3, #-412]
|
|
ldr r2, [r3, #-452]
|
|
str r2, [r3, #-408]
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L1168:
|
|
uxth r2, r2
|
|
ldr r8, [r3, #-3376]
|
|
mul r0, r5, r2
|
|
add r9, r8, r0
|
|
str r6, [r9, #4]
|
|
strh r7, [r8, r0] @ movhi
|
|
ldr r8, [r3, #-3376]
|
|
add r0, r8, r0
|
|
ldrh r8, [r1]
|
|
mul r2, r2, r8
|
|
ldr r8, [r3, #-440]
|
|
bic r2, r2, #3
|
|
add r2, r8, r2
|
|
str r2, [r0, #8]
|
|
mov r2, lr
|
|
b .L1167
|
|
.L1171:
|
|
.align 2
|
|
.L1170:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2-432
|
|
.word -3902
|
|
.fnend
|
|
.size FtlL2PDataInit, .-FtlL2PDataInit
|
|
.align 2
|
|
.global FtlVariablesInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVariablesInit, %function
|
|
FtlVariablesInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mvn r3, #0
|
|
ldr r5, .L1174
|
|
mov r4, #0
|
|
mov r1, r4
|
|
movw r7, #2334
|
|
ldr r6, .L1174+4
|
|
sub r2, r5, #380
|
|
str r3, [r5, #-368]
|
|
strh r3, [r2] @ movhi
|
|
movw r3, #2438
|
|
strh r4, [r6, r3] @ movhi
|
|
movw r3, #2412
|
|
ldrh r2, [r6, r3]
|
|
ldr r0, [r6, #2440]
|
|
str r4, [r5, #-384]
|
|
str r4, [r5, #-376]
|
|
lsl r2, r2, #1
|
|
str r4, [r5, #-372]
|
|
str r4, [r6, #2248]
|
|
bl ftl_memset
|
|
ldrh r2, [r6, r7]
|
|
mov r1, r4
|
|
ldr r0, [r5, #-3604]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
ldrh r2, [r6, r7]
|
|
mov r1, r4
|
|
ldr r0, [r5, #-484]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
sub r0, r5, #3584
|
|
mov r1, r4
|
|
mov r2, #48
|
|
sub r0, r0, #12
|
|
bl ftl_memset
|
|
sub r0, r5, #3232
|
|
mov r2, #512
|
|
mov r1, r4
|
|
sub r0, r0, #4
|
|
bl ftl_memset
|
|
bl FtlGcBufInit
|
|
bl FtlL2PDataInit
|
|
mov r0, r4
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L1175:
|
|
.align 2
|
|
.L1174:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlVariablesInit, .-FtlVariablesInit
|
|
.align 2
|
|
.global SupperBlkListInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type SupperBlkListInit, %function
|
|
SupperBlkListInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
movw r3, #2334
|
|
ldr r6, .L1187
|
|
mov r4, #0
|
|
mov r2, #6
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
ldr r5, .L1187+4
|
|
mov r1, #0
|
|
ldrh r3, [r6, r3]
|
|
mov r9, r4
|
|
mov r10, r4
|
|
ldr r0, [r5, #-3548]
|
|
sub r7, r5, #3520
|
|
mul r2, r2, r3
|
|
bl ftl_memset
|
|
sub r3, r5, #568
|
|
str r4, [r5, #-3528]
|
|
str r4, [r5, #-3544]
|
|
str r4, [r5, #-3536]
|
|
strh r4, [r7, #-12] @ movhi
|
|
strh r4, [r7, #-4] @ movhi
|
|
strh r4, [r3] @ movhi
|
|
str r6, [sp]
|
|
.L1177:
|
|
ldr r3, .L1187+8
|
|
sxth r8, r4
|
|
ldrh r3, [r3]
|
|
cmp r8, r3
|
|
bge .L1184
|
|
ldr r3, .L1187+12
|
|
uxth r1, r4
|
|
mov fp, #0
|
|
mov r6, fp
|
|
str r1, [sp, #4]
|
|
ldrh r2, [r3]
|
|
add r3, r3, #66
|
|
ldrh r3, [r3]
|
|
b .L1185
|
|
.L1179:
|
|
str r3, [sp, #12]
|
|
add fp, fp, #1
|
|
ldr r3, [sp]
|
|
str r2, [sp, #8]
|
|
add r0, r3, r1
|
|
ldr r1, [sp, #4]
|
|
ldrb r0, [r0, #2350] @ zero_extendqisi2
|
|
bl V2P_block
|
|
bl FtlBbmIsBadBlock
|
|
ldr r3, [sp, #12]
|
|
cmp r0, #0
|
|
ldr r2, [sp, #8]
|
|
addeq r6, r3, r6
|
|
sxtheq r6, r6
|
|
.L1185:
|
|
sxth r1, fp
|
|
cmp r1, r2
|
|
blt .L1179
|
|
cmp r6, #0
|
|
lsl fp, r8, #1
|
|
ldreq r3, [r5, #-3540]
|
|
mvneq r2, #0
|
|
strheq r2, [r3, fp] @ movhi
|
|
beq .L1181
|
|
mov r1, r6
|
|
mov r0, #32768
|
|
bl __aeabi_idiv
|
|
sxth r6, r0
|
|
.L1181:
|
|
ldr r2, [r5, #-3548]
|
|
add r3, fp, r8
|
|
add r3, r2, r3, lsl #1
|
|
strh r6, [r3, #4] @ movhi
|
|
ldrh r3, [r7]
|
|
cmp r8, r3
|
|
beq .L1182
|
|
ldr r3, .L1187+16
|
|
ldrh r3, [r3]
|
|
cmp r8, r3
|
|
beq .L1182
|
|
ldr r3, .L1187+20
|
|
ldrh r3, [r3]
|
|
cmp r8, r3
|
|
beq .L1182
|
|
ldr r3, [r5, #-3540]
|
|
uxth r0, r4
|
|
ldrh r3, [r3, fp]
|
|
cmp r3, #0
|
|
bne .L1183
|
|
add r9, r9, #1
|
|
uxth r9, r9
|
|
bl INSERT_FREE_LIST
|
|
.L1182:
|
|
add r4, r4, #1
|
|
b .L1177
|
|
.L1183:
|
|
add r10, r10, #1
|
|
uxth r10, r10
|
|
bl INSERT_DATA_LIST
|
|
b .L1182
|
|
.L1184:
|
|
mov r0, #0
|
|
strh r10, [r7, #-12] @ movhi
|
|
strh r9, [r7, #-4] @ movhi
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1188:
|
|
.align 2
|
|
.L1187:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2332
|
|
.word .LANCHOR0+2324
|
|
.word .LANCHOR2-3472
|
|
.word .LANCHOR2-3424
|
|
.fnend
|
|
.size SupperBlkListInit, .-SupperBlkListInit
|
|
.align 2
|
|
.global FtlGcPageVarInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcPageVarInit, %function
|
|
FtlGcPageVarInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r3, #0
|
|
ldr r4, .L1191
|
|
movw r5, #2394
|
|
mov r1, #255
|
|
ldr r6, .L1191+4
|
|
sub r2, r4, #2672
|
|
ldr r0, [r4, #-2680]
|
|
strh r3, [r2, #-4] @ movhi
|
|
sub r2, r4, #2656
|
|
strh r3, [r2, #-12] @ movhi
|
|
ldrh r2, [r6, r5]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
ldrh r3, [r6, r5]
|
|
mov r2, #12
|
|
ldr r0, [r4, #-2672]
|
|
mov r1, #255
|
|
mul r2, r2, r3
|
|
bl ftl_memset
|
|
pop {r4, r5, r6, lr}
|
|
b FtlGcBufInit
|
|
.L1192:
|
|
.align 2
|
|
.L1191:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlGcPageVarInit, .-FtlGcPageVarInit
|
|
.align 2
|
|
.global ftl_memcpy
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_memcpy, %function
|
|
ftl_memcpy:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b memcpy
|
|
.fnend
|
|
.size ftl_memcpy, .-ftl_memcpy
|
|
.align 2
|
|
.global FlashReadIdbData
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadIdbData, %function
|
|
FlashReadIdbData:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
mov r2, #2048
|
|
ldr r1, .L1196
|
|
bl ftl_memcpy
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.L1197:
|
|
.align 2
|
|
.L1196:
|
|
.word .LANCHOR2-364
|
|
.fnend
|
|
.size FlashReadIdbData, .-FlashReadIdbData
|
|
.align 2
|
|
.global FlashLoadPhyInfoInRam
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashLoadPhyInfoInRam, %function
|
|
FlashLoadPhyInfoInRam:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r4, #0
|
|
ldr r5, .L1207
|
|
ldr r9, .L1207+4
|
|
add r6, r5, #504
|
|
.L1201:
|
|
lsl r8, r4, #5
|
|
ldrb r2, [r6, r4, lsl #5] @ zero_extendqisi2
|
|
mov r1, r9
|
|
add r0, r8, #1
|
|
add r0, r6, r0
|
|
bl FlashMemCmp8
|
|
subs r7, r0, #0
|
|
bne .L1199
|
|
add r5, r5, r8
|
|
ldr r2, .L1207+8
|
|
ldrb r0, [r5, #526] @ zero_extendqisi2
|
|
add r6, r6, r8
|
|
mov r3, r7
|
|
mov r1, r2
|
|
.L1200:
|
|
ldrb ip, [r2, r3, lsl #5] @ zero_extendqisi2
|
|
cmp ip, r0
|
|
beq .L1203
|
|
add r3, r3, #1
|
|
cmp r3, #4
|
|
bne .L1200
|
|
.L1203:
|
|
ldr r4, .L1207+12
|
|
add r1, r1, r3, lsl #5
|
|
mov r2, #32
|
|
ldr r0, .L1207+16
|
|
bl ftl_memcpy
|
|
mov r2, #32
|
|
mov r1, r6
|
|
mov r0, r4
|
|
bl ftl_memcpy
|
|
ldrh r0, [r4, #10]
|
|
bl FlashBlockAlignInit
|
|
b .L1198
|
|
.L1199:
|
|
add r4, r4, #1
|
|
cmp r4, #86
|
|
bne .L1201
|
|
mvn r7, #0
|
|
.L1198:
|
|
mov r0, r7
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L1208:
|
|
.align 2
|
|
.L1207:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0+2072
|
|
.word .LANCHOR1+3256
|
|
.word .LANCHOR1+468
|
|
.word .LANCHOR0+52
|
|
.fnend
|
|
.size FlashLoadPhyInfoInRam, .-FlashLoadPhyInfoInRam
|
|
.align 2
|
|
.global NandcCopy1KB
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcCopy1KB, %function
|
|
NandcCopy1KB:
|
|
.fnstart
|
|
@ args = 4, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
cmp r1, #1
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, r2
|
|
add r2, r0, #4096
|
|
add r6, r0, #512
|
|
add r0, r2, r4, lsl #9
|
|
ldr r5, [sp, #16]
|
|
bne .L1210
|
|
cmp r3, #0
|
|
beq .L1211
|
|
mov r2, #1024
|
|
mov r1, r3
|
|
bl ftl_memcpy
|
|
.L1211:
|
|
cmp r5, #0
|
|
lsrne r4, r4, #1
|
|
ldrne r3, [r5] @ unaligned
|
|
addne r4, r4, r4, lsl #1
|
|
strne r3, [r6, r4, lsl #4]
|
|
pop {r4, r5, r6, pc}
|
|
.L1210:
|
|
cmp r3, #0
|
|
beq .L1214
|
|
mov r1, r0
|
|
mov r2, #1024
|
|
mov r0, r3
|
|
bl ftl_memcpy
|
|
.L1214:
|
|
cmp r5, #0
|
|
popeq {r4, r5, r6, pc}
|
|
lsr r4, r4, #1
|
|
add r4, r4, r4, lsl #1
|
|
ldr r3, [r6, r4, lsl #4]
|
|
strb r3, [r5]
|
|
lsr r2, r3, #8
|
|
strb r2, [r5, #1]
|
|
lsr r2, r3, #16
|
|
lsr r3, r3, #24
|
|
strb r2, [r5, #2]
|
|
strb r3, [r5, #3]
|
|
pop {r4, r5, r6, pc}
|
|
.fnend
|
|
.size NandcCopy1KB, .-NandcCopy1KB
|
|
.align 2
|
|
.global ftl_memcpy32
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_memcpy32, %function
|
|
ftl_memcpy32:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r3, #0
|
|
.L1227:
|
|
cmp r3, r2
|
|
bne .L1228
|
|
bx lr
|
|
.L1228:
|
|
ldr ip, [r1, r3, lsl #2]
|
|
str ip, [r0, r3, lsl #2]
|
|
add r3, r3, #1
|
|
b .L1227
|
|
.fnend
|
|
.size ftl_memcpy32, .-ftl_memcpy32
|
|
.align 2
|
|
.global ftl_memcmp
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_memcmp, %function
|
|
ftl_memcmp:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b memcmp
|
|
.fnend
|
|
.size ftl_memcmp, .-ftl_memcmp
|
|
.align 2
|
|
.global timer_get_time
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type timer_get_time, %function
|
|
timer_get_time:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L1231
|
|
ldr r0, [r3]
|
|
b jiffies_to_msecs
|
|
.L1232:
|
|
.align 2
|
|
.L1231:
|
|
.word jiffies
|
|
.fnend
|
|
.size timer_get_time, .-timer_get_time
|
|
.align 2
|
|
.global FlashSramLoadStore
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashSramLoadStore, %function
|
|
FlashSramLoadStore:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr ip, .L1238
|
|
cmp r2, #0
|
|
moveq r2, r3
|
|
ldr ip, [ip, #1684]
|
|
add ip, ip, #4096
|
|
add ip, ip, r1
|
|
moveq r1, ip
|
|
strne lr, [sp, #-4]!
|
|
.save {lr}
|
|
movne r1, r0
|
|
ldrne lr, [sp], #4
|
|
movne r2, r3
|
|
movne r0, ip
|
|
.L1237:
|
|
b ftl_memcpy
|
|
.L1239:
|
|
.align 2
|
|
.L1238:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size FlashSramLoadStore, .-FlashSramLoadStore
|
|
.align 2
|
|
.global FlashCs123Init
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashCs123Init, %function
|
|
FlashCs123Init:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
bx lr
|
|
.fnend
|
|
.size FlashCs123Init, .-FlashCs123Init
|
|
.align 2
|
|
.global ftl_dma32_malloc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_dma32_malloc, %function
|
|
ftl_dma32_malloc:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
cmp r0, #8192
|
|
ble .L1242
|
|
b ftl_malloc
|
|
.L1242:
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
add r4, r0, #63
|
|
ldr r5, .L1246
|
|
bic r4, r4, #63
|
|
ldr r3, [r5, #1688]
|
|
cmp r4, r3
|
|
ble .L1243
|
|
mov r0, #16384
|
|
bl ftl_malloc
|
|
mov r3, #16384
|
|
str r0, [r5, #1692]
|
|
str r3, [r5, #1688]
|
|
.L1243:
|
|
ldr r3, [r5, #1688]
|
|
ldr r0, [r5, #1692]
|
|
sub r3, r3, r4
|
|
add r4, r0, r4
|
|
str r3, [r5, #1688]
|
|
str r4, [r5, #1692]
|
|
pop {r4, r5, r6, pc}
|
|
.L1247:
|
|
.align 2
|
|
.L1246:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size ftl_dma32_malloc, .-ftl_dma32_malloc
|
|
.align 2
|
|
.global rk_nand_suspend
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_nand_suspend, %function
|
|
rk_nand_suspend:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b ftl_flash_suspend
|
|
.fnend
|
|
.size rk_nand_suspend, .-rk_nand_suspend
|
|
.align 2
|
|
.global rk_nand_resume
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_nand_resume, %function
|
|
rk_nand_resume:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b ftl_flash_resume
|
|
.fnend
|
|
.size rk_nand_resume, .-rk_nand_resume
|
|
.align 2
|
|
.global rk_ftl_get_capacity
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_get_capacity, %function
|
|
rk_ftl_get_capacity:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L1251
|
|
ldr r0, [r3, #2432]
|
|
bx lr
|
|
.L1252:
|
|
.align 2
|
|
.L1251:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size rk_ftl_get_capacity, .-rk_ftl_get_capacity
|
|
.align 2
|
|
.global rk_nandc_get_irq_status
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_nandc_get_irq_status, %function
|
|
rk_nandc_get_irq_status:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r0, [r0, #372]
|
|
bx lr
|
|
.fnend
|
|
.size rk_nandc_get_irq_status, .-rk_nandc_get_irq_status
|
|
.align 2
|
|
.global rknand_proc_ftlread
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rknand_proc_ftlread, %function
|
|
rknand_proc_ftlread:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b ftl_proc_ftl_read
|
|
.fnend
|
|
.size rknand_proc_ftlread, .-rknand_proc_ftlread
|
|
.align 2
|
|
.global ReadFlashInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ReadFlashInfo, %function
|
|
ReadFlashInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b ftl_read_flash_info
|
|
.fnend
|
|
.size ReadFlashInfo, .-ReadFlashInfo
|
|
.align 2
|
|
.global rknand_print_hex
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rknand_print_hex, %function
|
|
rknand_print_hex:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r5, #0
|
|
ldr r7, .L1266
|
|
mov r10, r0
|
|
mov r6, r1
|
|
mov r8, r2
|
|
ldr fp, .L1266+4
|
|
mov r9, r3
|
|
mov r4, r5
|
|
.L1257:
|
|
cmp r4, r9
|
|
bne .L1263
|
|
ldr r1, .L1266+4
|
|
ldr r0, .L1266+8
|
|
pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
b printk
|
|
.L1263:
|
|
cmp r5, #0
|
|
bne .L1258
|
|
mov r3, r4
|
|
mov r2, r6
|
|
mov r1, r10
|
|
ldr r0, .L1266+12
|
|
bl printk
|
|
.L1258:
|
|
cmp r8, #4
|
|
ldreq r1, [r6, r4, lsl #2]
|
|
beq .L1265
|
|
cmp r8, #2
|
|
lsleq r3, r4, #1
|
|
ldrbne r1, [r6, r4] @ zero_extendqisi2
|
|
ldrsheq r1, [r6, r3]
|
|
.L1265:
|
|
mov r0, r7
|
|
add r5, r5, #1
|
|
bl printk
|
|
cmp r5, #15
|
|
bls .L1262
|
|
mov r5, #0
|
|
mov r1, fp
|
|
ldr r0, .L1266+8
|
|
bl printk
|
|
.L1262:
|
|
add r4, r4, #1
|
|
b .L1257
|
|
.L1267:
|
|
.align 2
|
|
.L1266:
|
|
.word .LC83
|
|
.word .LC84
|
|
.word .LC77
|
|
.word .LC82
|
|
.fnend
|
|
.size rknand_print_hex, .-rknand_print_hex
|
|
.align 2
|
|
.global HynixGetReadRetryDefault
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type HynixGetReadRetryDefault, %function
|
|
HynixGetReadRetryDefault:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 56
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mvn r3, #83
|
|
ldr r7, .L1384
|
|
cmp r0, #2
|
|
mvn r1, #82
|
|
mvn r2, #81
|
|
.pad #60
|
|
sub sp, sp, #60
|
|
mov r4, r0
|
|
strb r3, [r7, #1220]
|
|
mvn r3, #80
|
|
strb r0, [r7, #1216]
|
|
strb r1, [r7, #1221]
|
|
strb r2, [r7, #1222]
|
|
strb r3, [r7, #1223]
|
|
bne .L1269
|
|
mvn r3, #88
|
|
mov r5, #7
|
|
strb r3, [r7, #1220]
|
|
mvn r2, #8
|
|
ldr r3, .L1384+4
|
|
strb r2, [r3, #3401]
|
|
.L1334:
|
|
mov r6, #4
|
|
b .L1270
|
|
.L1269:
|
|
cmp r0, #3
|
|
bne .L1271
|
|
mvn r3, #79
|
|
strb r3, [r7, #1220]
|
|
mvn r3, #78
|
|
strb r3, [r7, #1221]
|
|
mvn r3, #77
|
|
strb r3, [r7, #1222]
|
|
mvn r3, #76
|
|
strb r3, [r7, #1223]
|
|
mvn r3, #75
|
|
strb r3, [r7, #1224]
|
|
mvn r3, #74
|
|
strb r3, [r7, #1225]
|
|
mvn r3, #73
|
|
strb r3, [r7, #1226]
|
|
mvn r3, #72
|
|
.L1379:
|
|
mov r5, #8
|
|
strb r3, [r7, #1227]
|
|
mov r6, r5
|
|
.L1270:
|
|
sub r3, r4, #1
|
|
cmp r3, #1
|
|
bhi .L1276
|
|
ldr fp, .L1384+8
|
|
mov r10, #0
|
|
ldr r2, .L1384+12
|
|
.L1277:
|
|
ldrb r1, [r7, #2234] @ zero_extendqisi2
|
|
uxtb r3, r10
|
|
cmp r1, r3
|
|
bhi .L1283
|
|
.L1284:
|
|
ldr r3, .L1384
|
|
strb r6, [r3, #1217]
|
|
strb r5, [r3, #1218]
|
|
add sp, sp, #60
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1271:
|
|
cmp r0, #4
|
|
bne .L1272
|
|
mvn r0, #51
|
|
strb r1, [r7, #1225]
|
|
strb r0, [r7, #1220]
|
|
mvn r0, #64
|
|
strb r0, [r7, #1221]
|
|
mvn r0, #85
|
|
strb r0, [r7, #1222]
|
|
mvn r0, #84
|
|
strb r0, [r7, #1223]
|
|
mvn r0, #50
|
|
strb r0, [r7, #1224]
|
|
strb r2, [r7, #1226]
|
|
b .L1379
|
|
.L1272:
|
|
cmp r0, #5
|
|
bne .L1273
|
|
mov r3, #56
|
|
mov r5, #8
|
|
strb r3, [r7, #1220]
|
|
mov r3, #57
|
|
strb r3, [r7, #1221]
|
|
mov r3, #58
|
|
strb r3, [r7, #1222]
|
|
mov r3, #59
|
|
strb r3, [r7, #1223]
|
|
b .L1334
|
|
.L1273:
|
|
cmp r0, #6
|
|
bne .L1274
|
|
mov r3, #14
|
|
mov r5, #12
|
|
strb r3, [r7, #1220]
|
|
mov r3, #15
|
|
strb r3, [r7, #1221]
|
|
mov r3, #16
|
|
strb r3, [r7, #1222]
|
|
mov r3, #17
|
|
strb r3, [r7, #1223]
|
|
b .L1334
|
|
.L1274:
|
|
cmp r0, #7
|
|
bne .L1275
|
|
mvn r3, #79
|
|
mov r5, #12
|
|
strb r3, [r7, #1220]
|
|
mvn r3, #78
|
|
strb r3, [r7, #1221]
|
|
mvn r3, #77
|
|
strb r3, [r7, #1222]
|
|
mvn r3, #76
|
|
strb r3, [r7, #1223]
|
|
mvn r3, #75
|
|
strb r3, [r7, #1224]
|
|
mvn r3, #74
|
|
strb r3, [r7, #1225]
|
|
mvn r3, #73
|
|
strb r3, [r7, #1226]
|
|
mvn r3, #72
|
|
strb r3, [r7, #1227]
|
|
mvn r3, #43
|
|
strb r3, [r7, #1228]
|
|
mvn r3, #42
|
|
strb r3, [r7, #1229]
|
|
mov r6, #10
|
|
b .L1270
|
|
.L1275:
|
|
cmp r0, #8
|
|
mov r5, #7
|
|
bne .L1334
|
|
mov r3, #6
|
|
strb r5, [r7, #1221]
|
|
strb r3, [r7, #1220]
|
|
mov r3, #9
|
|
strb r3, [r7, #1223]
|
|
mov r3, #10
|
|
strb r0, [r7, #1222]
|
|
mov r5, #50
|
|
strb r3, [r7, #1224]
|
|
mov r6, #5
|
|
b .L1270
|
|
.L1283:
|
|
add r3, r7, r3
|
|
mov r8, #0
|
|
ldrb r3, [r3, #2236] @ zero_extendqisi2
|
|
mov r1, #55
|
|
ldr r9, [r7, r3, lsl #3]
|
|
add r4, fp, r3, lsl #6
|
|
add r3, r7, r3, lsl #3
|
|
ldrb r3, [r3, #4] @ zero_extendqisi2
|
|
add r4, r4, #20
|
|
add r9, r9, r3, lsl #8
|
|
.L1278:
|
|
add r3, fp, r8
|
|
str r1, [r9, #2056]
|
|
ldrb r3, [r3, #4] @ zero_extendqisi2
|
|
mov r0, #80
|
|
str r2, [sp, #4]
|
|
str r1, [sp]
|
|
str r3, [r9, #2052]
|
|
bl ndelay
|
|
ldr r3, [r9, #2048]
|
|
ldm sp, {r1, r2}
|
|
strb r3, [r4, r8]
|
|
add r8, r8, #1
|
|
uxtb r3, r8
|
|
cmp r6, r3
|
|
bhi .L1278
|
|
mov r0, r4
|
|
mov r1, #0
|
|
.L1281:
|
|
mov r3, #1
|
|
add lr, r2, r1
|
|
.L1280:
|
|
ldrb ip, [lr, r3, lsl #2] @ zero_extendqisi2
|
|
ldrb r8, [r0] @ zero_extendqisi2
|
|
add ip, ip, r8
|
|
strb ip, [r0, r3, lsl #3]
|
|
add r3, r3, #1
|
|
cmp r3, #7
|
|
bne .L1280
|
|
add r1, r1, #1
|
|
add r0, r0, #1
|
|
cmp r1, #4
|
|
bne .L1281
|
|
mov r3, #0
|
|
add r10, r10, #1
|
|
strb r3, [r4, #16]
|
|
strb r3, [r4, #24]
|
|
strb r3, [r4, #32]
|
|
strb r3, [r4, #40]
|
|
strb r3, [r4, #48]
|
|
strb r3, [r4, #41]
|
|
strb r3, [r4, #49]
|
|
b .L1277
|
|
.L1276:
|
|
sub r3, r4, #3
|
|
cmp r3, #5
|
|
bhi .L1284
|
|
smulbb r3, r6, r5
|
|
ldr r8, .L1384
|
|
asr r2, r3, #1
|
|
lsl r3, r3, #4
|
|
str r3, [sp, #48]
|
|
lsl r3, r2, #2
|
|
str r2, [sp, #4]
|
|
str r3, [sp, #40]
|
|
lsl r3, r2, #1
|
|
str r3, [sp, #28]
|
|
mov r3, #0
|
|
str r3, [sp, #24]
|
|
add r3, r8, #1216
|
|
add r3, r3, #28
|
|
str r3, [sp, #52]
|
|
.L1285:
|
|
ldrb r3, [sp, #24] @ zero_extendqisi2
|
|
str r3, [sp, #8]
|
|
ldr r2, [sp, #8]
|
|
ldrb r3, [r8, #2234] @ zero_extendqisi2
|
|
cmp r3, r2
|
|
bls .L1284
|
|
ldr r3, [sp, #8]
|
|
add r3, r8, r3
|
|
ldrb r9, [r3, #2236] @ zero_extendqisi2
|
|
ldr fp, [r8, r9, lsl #3]
|
|
mov r0, r9
|
|
add r3, r8, r9, lsl #3
|
|
ldrb r10, [r3, #4] @ zero_extendqisi2
|
|
mov r3, #255
|
|
add r7, fp, r10, lsl #8
|
|
str r3, [r7, #2056]
|
|
bl NandcWaitFlashReady
|
|
cmp r4, #7
|
|
bne .L1286
|
|
ldr r3, .L1384+8
|
|
mov r0, #160
|
|
mla r0, r0, r9, r3
|
|
add r3, r0, #28
|
|
.L1380:
|
|
str r3, [sp, #20]
|
|
cmp r4, #4
|
|
add r3, fp, r10, lsl #8
|
|
mov r2, #54
|
|
str r2, [r3, #2056]
|
|
bne .L1289
|
|
mov r2, #255
|
|
str r2, [r3, #2052]
|
|
mov r2, #64
|
|
str r2, [r3, #2048]
|
|
mov r2, #204
|
|
.L1381:
|
|
str r2, [r3, #2052]
|
|
mov r2, #77
|
|
.L1382:
|
|
str r2, [r3, #2048]
|
|
.L1290:
|
|
add r3, fp, r10, lsl #8
|
|
mov r2, #22
|
|
cmp r4, #6
|
|
str r2, [r3, #2056]
|
|
mov r2, #23
|
|
str r2, [r3, #2056]
|
|
mov r2, #4
|
|
str r2, [r3, #2056]
|
|
mov r2, #25
|
|
str r2, [r3, #2056]
|
|
mov r2, #0
|
|
str r2, [r3, #2056]
|
|
str r2, [r3, #2052]
|
|
str r2, [r3, #2052]
|
|
moveq r2, #31
|
|
str r2, [r3, #2052]
|
|
mov r2, #2
|
|
str r2, [r3, #2052]
|
|
mov r2, #0
|
|
str r2, [r3, #2052]
|
|
.L1333:
|
|
add r3, fp, r10, lsl #8
|
|
mov r2, #48
|
|
mov r0, r9
|
|
str r2, [r3, #2056]
|
|
bl NandcWaitFlashReady
|
|
sub r3, r4, #5
|
|
cmp r4, #8
|
|
cmpne r3, #1
|
|
str r3, [sp, #44]
|
|
movls r2, #16
|
|
bls .L1294
|
|
cmp r4, #7
|
|
moveq r2, #32
|
|
movne r2, #2
|
|
.L1294:
|
|
ldr r3, .L1384+16
|
|
sub r2, r2, #1
|
|
add ip, fp, r10, lsl #8
|
|
ldr r3, [r3, #1696]
|
|
str ip, [sp]
|
|
sub r1, r3, #1
|
|
uxtab r2, r3, r2
|
|
mov r0, r1
|
|
.L1295:
|
|
ldr ip, [sp]
|
|
ldr ip, [ip, #2048]
|
|
strb ip, [r0, #1]!
|
|
cmp r2, r0
|
|
bne .L1295
|
|
cmp r4, #8
|
|
bne .L1296
|
|
mov r2, #0
|
|
.L1298:
|
|
ldrb r0, [r3, r2, lsl #2] @ zero_extendqisi2
|
|
uxtb r1, r2
|
|
cmp r0, #50
|
|
beq .L1297
|
|
add r0, r3, r2, lsl #2
|
|
ldrb r0, [r0, #1] @ zero_extendqisi2
|
|
cmp r0, #5
|
|
beq .L1297
|
|
add r2, r2, #1
|
|
cmp r2, #8
|
|
bne .L1298
|
|
.L1299:
|
|
mov r1, #0
|
|
ldr r0, .L1384+20
|
|
bl printk
|
|
.L1301:
|
|
b .L1301
|
|
.L1286:
|
|
cmp r4, #8
|
|
beq .L1288
|
|
ldr r3, .L1384+8
|
|
add r0, r3, r9, lsl #6
|
|
add r3, r0, #20
|
|
b .L1380
|
|
.L1289:
|
|
sub r2, r4, #5
|
|
cmp r2, #1
|
|
ldrbls r2, [r8, #1220] @ zero_extendqisi2
|
|
strls r2, [r3, #2052]
|
|
movls r2, #82
|
|
bls .L1382
|
|
cmp r4, #7
|
|
bne .L1290
|
|
mov r2, #174
|
|
str r2, [r3, #2052]
|
|
mov r2, #0
|
|
str r2, [r3, #2048]
|
|
mov r2, #176
|
|
b .L1381
|
|
.L1297:
|
|
cmp r1, #6
|
|
bhi .L1299
|
|
.L1300:
|
|
ldr r1, .L1384+16
|
|
ldr r2, [r1, #1696]
|
|
mov r3, r2
|
|
.L1310:
|
|
ldr ip, [sp, #48]
|
|
sub r0, r3, r2
|
|
cmp r0, ip
|
|
blt .L1311
|
|
ldr r3, [sp, #28]
|
|
ldr r1, [r1, #1696]
|
|
add r0, r1, r3
|
|
mov r3, #8
|
|
.L1313:
|
|
mov lr, r0
|
|
mov ip, #0
|
|
.L1312:
|
|
ldrh r7, [lr]
|
|
add ip, ip, #1
|
|
mvn r7, r7
|
|
strh r7, [lr], #2 @ movhi
|
|
ldr r7, [sp, #4]
|
|
cmp r7, ip
|
|
bgt .L1312
|
|
ldr ip, [sp, #40]
|
|
subs r3, r3, #1
|
|
add r0, r0, ip
|
|
bne .L1313
|
|
str r1, [sp, #12]
|
|
str r3, [sp, #16]
|
|
.L1319:
|
|
mov ip, #0
|
|
mov r0, ip
|
|
.L1318:
|
|
mov lr, #1
|
|
mov r7, #16
|
|
lsl lr, lr, r0
|
|
str r7, [sp, #36]
|
|
mov r7, #0
|
|
str lr, [sp, #32]
|
|
ldr lr, [sp, #12]
|
|
.L1316:
|
|
ldrh r3, [lr]
|
|
mov r1, r3
|
|
ldr r3, [sp, #32]
|
|
bics r3, r3, r1
|
|
ldr r3, [sp, #28]
|
|
addeq r7, r7, #1
|
|
add lr, lr, r3
|
|
ldr r3, [sp, #36]
|
|
subs r3, r3, #1
|
|
str r3, [sp, #36]
|
|
bne .L1316
|
|
cmp r7, #8
|
|
add r0, r0, #1
|
|
ldrhi r3, [sp, #32]
|
|
orrhi ip, ip, r3
|
|
uxthhi ip, ip
|
|
cmp r0, #16
|
|
bne .L1318
|
|
ldr r3, [sp, #12]
|
|
strh ip, [r3], #2 @ movhi
|
|
str r3, [sp, #12]
|
|
ldr r3, [sp, #16]
|
|
add r3, r3, #1
|
|
str r3, [sp, #16]
|
|
ldr r1, [sp, #16]
|
|
ldr r3, [sp, #4]
|
|
cmp r3, r1
|
|
bgt .L1319
|
|
ldr r3, .L1384+16
|
|
ldr r1, [r3, #1696]
|
|
mov r3, #0
|
|
sub r0, r1, #4
|
|
add ip, r1, #28
|
|
.L1322:
|
|
ldr lr, [r0, #4]!
|
|
cmp lr, #0
|
|
addeq r3, r3, #1
|
|
cmp ip, r0
|
|
bne .L1322
|
|
cmp r3, #7
|
|
ble .L1323
|
|
ldr r0, .L1384+24
|
|
mov r3, #1024
|
|
mov r2, #1
|
|
bl rknand_print_hex
|
|
mov r1, #0
|
|
ldr r0, .L1384+20
|
|
bl printk
|
|
.L1324:
|
|
b .L1324
|
|
.L1296:
|
|
cmp r4, #7
|
|
bne .L1302
|
|
mov r2, #0
|
|
.L1304:
|
|
ldrb r0, [r3, r2, lsl #2] @ zero_extendqisi2
|
|
uxtb r1, r2
|
|
cmp r0, #12
|
|
beq .L1303
|
|
add r0, r3, r2, lsl #2
|
|
ldrb r0, [r0, #1] @ zero_extendqisi2
|
|
cmp r0, #10
|
|
beq .L1303
|
|
add r2, r2, #1
|
|
cmp r2, #8
|
|
bne .L1304
|
|
.L1305:
|
|
mov r1, #0
|
|
ldr r0, .L1384+20
|
|
bl printk
|
|
.L1306:
|
|
b .L1306
|
|
.L1303:
|
|
cmp r1, #6
|
|
bls .L1300
|
|
b .L1305
|
|
.L1302:
|
|
cmp r4, #6
|
|
bne .L1300
|
|
add r3, r3, #7
|
|
.L1307:
|
|
ldrb r2, [r1, #1]! @ zero_extendqisi2
|
|
cmp r2, #12
|
|
beq .L1300
|
|
ldrb r2, [r1, #8] @ zero_extendqisi2
|
|
cmp r2, #4
|
|
beq .L1300
|
|
cmp r3, r1
|
|
bne .L1307
|
|
mov r1, #0
|
|
ldr r0, .L1384+20
|
|
bl printk
|
|
.L1309:
|
|
b .L1309
|
|
.L1311:
|
|
ldr r0, [sp]
|
|
ldr r0, [r0, #2048]
|
|
strb r0, [r3], #1
|
|
b .L1310
|
|
.L1323:
|
|
cmp r4, #6
|
|
moveq ip, #4
|
|
beq .L1325
|
|
cmp r4, #7
|
|
moveq ip, #10
|
|
beq .L1325
|
|
cmp r4, #8
|
|
moveq ip, #5
|
|
movne ip, #8
|
|
.L1325:
|
|
sub r3, r6, #1
|
|
ldr r0, [sp, #20]
|
|
uxtb r3, r3
|
|
mov lr, #0
|
|
add r3, r3, #1
|
|
str r3, [sp, #12]
|
|
.L1326:
|
|
mov r3, r0
|
|
mov r1, r2
|
|
.L1327:
|
|
ldrb r7, [r1], #1 @ zero_extendqisi2
|
|
strb r7, [r3], #1
|
|
sub r7, r1, r2
|
|
uxtb r7, r7
|
|
cmp r6, r7
|
|
bhi .L1327
|
|
ldr r3, [sp, #12]
|
|
add lr, lr, #1
|
|
cmp r5, lr
|
|
add r0, r0, ip
|
|
add r2, r2, r3
|
|
bgt .L1326
|
|
add r10, fp, r10, lsl #8
|
|
mov r3, #255
|
|
mov r0, r9
|
|
str r3, [r10, #2056]
|
|
bl NandcWaitFlashReady
|
|
ldr r3, [sp, #44]
|
|
cmp r3, #1
|
|
bhi .L1329
|
|
mov r3, #54
|
|
ldr r2, [sp]
|
|
str r3, [r10, #2056]
|
|
mvn r1, #0
|
|
ldrb r3, [r8, #1220] @ zero_extendqisi2
|
|
ldr r0, [sp, #8]
|
|
str r3, [r2, #2052]
|
|
mov r3, #0
|
|
str r3, [r2, #2048]
|
|
mov r3, #22
|
|
str r3, [r10, #2056]
|
|
bl FlashReadCmd
|
|
.L1330:
|
|
mov r0, r9
|
|
bl NandcWaitFlashReady
|
|
ldr r3, [sp, #24]
|
|
add r3, r3, #1
|
|
str r3, [sp, #24]
|
|
b .L1285
|
|
.L1329:
|
|
cmp r4, #8
|
|
moveq r3, #190
|
|
movne r3, #56
|
|
str r3, [r10, #2056]
|
|
b .L1330
|
|
.L1288:
|
|
mov r3, #120
|
|
mov r2, #23
|
|
str r3, [r7, #2056]
|
|
mov r3, #0
|
|
str r3, [r7, #2052]
|
|
mov r1, #25
|
|
str r3, [r7, #2052]
|
|
str r3, [r7, #2052]
|
|
str r2, [r7, #2056]
|
|
mov r2, #4
|
|
str r2, [r7, #2056]
|
|
str r1, [r7, #2056]
|
|
mov r1, #218
|
|
str r1, [r7, #2056]
|
|
mov r1, #21
|
|
str r3, [r7, #2056]
|
|
str r3, [r7, #2052]
|
|
str r3, [r7, #2052]
|
|
str r1, [r7, #2052]
|
|
str r2, [r7, #2052]
|
|
str r3, [r7, #2052]
|
|
ldr r3, [sp, #52]
|
|
str r3, [sp, #20]
|
|
b .L1333
|
|
.L1385:
|
|
.align 2
|
|
.L1384:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0+1216
|
|
.word .LANCHOR1+3384
|
|
.word .LANCHOR2
|
|
.word .LC85
|
|
.word .LC86
|
|
.fnend
|
|
.size HynixGetReadRetryDefault, .-HynixGetReadRetryDefault
|
|
.align 2
|
|
.global FlashGetReadRetryDefault
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashGetReadRetryDefault, %function
|
|
FlashGetReadRetryDefault:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
subs r3, r0, #0
|
|
bxeq lr
|
|
sub r2, r3, #1
|
|
cmp r2, #7
|
|
bhi .L1388
|
|
b HynixGetReadRetryDefault
|
|
.L1388:
|
|
cmp r3, #49
|
|
bne .L1389
|
|
ldr r2, .L1400
|
|
ldr r1, .L1400+4
|
|
strb r3, [r2, #1216]
|
|
mov r3, #4
|
|
strb r3, [r2, #1217]
|
|
mov r3, #15
|
|
strb r3, [r2, #1218]
|
|
mov r2, #64
|
|
.L1398:
|
|
ldr r0, .L1400+8
|
|
b ftl_memcpy
|
|
.L1389:
|
|
sub r2, r3, #65
|
|
cmp r3, #33
|
|
cmpne r2, #1
|
|
bhi .L1390
|
|
ldr r2, .L1400
|
|
strb r3, [r2, #1216]
|
|
mov r3, #4
|
|
.L1399:
|
|
strb r3, [r2, #1217]
|
|
mov r3, #7
|
|
strb r3, [r2, #1218]
|
|
mov r2, #45
|
|
ldr r1, .L1400+12
|
|
b .L1398
|
|
.L1390:
|
|
cmp r3, #67
|
|
cmpne r3, #34
|
|
ldreq r2, .L1400
|
|
strbeq r3, [r2, #1216]
|
|
moveq r3, #5
|
|
beq .L1399
|
|
.L1391:
|
|
cmp r3, #68
|
|
cmpne r3, #35
|
|
bxne lr
|
|
ldr r2, .L1400
|
|
ldr r1, .L1400+16
|
|
strb r3, [r2, #1216]
|
|
mov r3, #5
|
|
strb r3, [r2, #1217]
|
|
mov r3, #17
|
|
strb r3, [r2, #1218]
|
|
mov r2, #95
|
|
b .L1398
|
|
.L1401:
|
|
.align 2
|
|
.L1400:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1+404
|
|
.word .LANCHOR0+1220
|
|
.word .LANCHOR1+256
|
|
.word .LANCHOR1+301
|
|
.fnend
|
|
.size FlashGetReadRetryDefault, .-FlashGetReadRetryDefault
|
|
.align 2
|
|
.global NandcXferComp
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcXferComp, %function
|
|
NandcXferComp:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
.pad #8
|
|
ldr r5, .L1442
|
|
ldr r3, [r5, #2264]
|
|
ldr r4, [r5, r0, lsl #3]
|
|
cmp r3, #3
|
|
bls .L1433
|
|
ldr r3, [r4, #16]
|
|
tst r3, #4
|
|
beq .L1433
|
|
ldr r6, [r4, #16]
|
|
ldr r3, [r4, #8]
|
|
ubfx r6, r6, #1, #1
|
|
cmp r6, #0
|
|
str r3, [sp]
|
|
beq .L1404
|
|
ldr r7, .L1442+4
|
|
mov r6, #0
|
|
ldr r8, .L1442+8
|
|
.L1405:
|
|
ldr r2, [r4, #28]
|
|
ldr r3, [sp]
|
|
ubfx r2, r2, #16, #5
|
|
ubfx r3, r3, #22, #6
|
|
cmp r2, r3
|
|
bge .L1413
|
|
ldr r3, [r5, #2264]
|
|
cmp r3, #5
|
|
bhi .L1406
|
|
.L1409:
|
|
add r6, r6, #1
|
|
bics r3, r6, #-16777216
|
|
bne .L1408
|
|
ldr r2, [r4, #28]
|
|
mov r1, r6
|
|
ldr r3, [sp]
|
|
mov r0, r7
|
|
ubfx r2, r2, #16, #5
|
|
ubfx r3, r3, #22, #6
|
|
bl printk
|
|
mov r3, #512
|
|
mov r2, #4
|
|
mov r1, r4
|
|
mov r0, r8
|
|
bl rknand_print_hex
|
|
.L1408:
|
|
mov r1, #5
|
|
mov r0, #1
|
|
bl usleep_range
|
|
b .L1405
|
|
.L1406:
|
|
ldr r3, [r4]
|
|
str r3, [sp, #4]
|
|
ldr r3, [sp, #4]
|
|
tst r3, #8192
|
|
beq .L1409
|
|
ldr r3, [sp, #4]
|
|
tst r3, #131072
|
|
beq .L1409
|
|
.L1413:
|
|
ldr r3, [r5, #2300]
|
|
cmp r3, #0
|
|
beq .L1414
|
|
ldr r1, [sp]
|
|
mov r2, #0
|
|
ldr r0, [r5, #2292]
|
|
ubfx r1, r1, #22, #5
|
|
lsl r1, r1, #10
|
|
bl rknand_dma_unmap_single
|
|
ldr r1, [sp]
|
|
mov r2, #0
|
|
ldr r0, [r5, #2296]
|
|
ubfx r1, r1, #22, #5
|
|
lsl r1, r1, #7
|
|
bl rknand_dma_unmap_single
|
|
.L1414:
|
|
mov r3, #0
|
|
str r3, [r5, #2300]
|
|
.L1402:
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L1404:
|
|
ldr r7, .L1442+12
|
|
ldr r8, .L1442+8
|
|
.L1415:
|
|
ldr r3, [sp]
|
|
tst r3, #1048576
|
|
beq .L1417
|
|
ldr r3, [r5, #2308]
|
|
cmp r3, #0
|
|
beq .L1418
|
|
mov r0, r4
|
|
bl NandcSendDumpDataStart
|
|
.L1418:
|
|
ldr r3, [r5, #2300]
|
|
cmp r3, #0
|
|
beq .L1419
|
|
ldr r1, [sp]
|
|
mov r2, #1
|
|
ldr r0, [r5, #2292]
|
|
ubfx r1, r1, #22, #5
|
|
lsl r1, r1, #10
|
|
bl rknand_dma_unmap_single
|
|
ldr r1, [sp]
|
|
mov r2, #1
|
|
ldr r0, [r5, #2296]
|
|
ubfx r1, r1, #22, #5
|
|
lsl r1, r1, #7
|
|
bl rknand_dma_unmap_single
|
|
.L1419:
|
|
ldr r3, [r5, #2308]
|
|
cmp r3, #0
|
|
beq .L1414
|
|
mov r0, r4
|
|
bl NandcSendDumpDataDone
|
|
b .L1414
|
|
.L1417:
|
|
ldr r3, [r4, #8]
|
|
add r6, r6, #1
|
|
str r3, [sp]
|
|
bics r3, r6, #-16777216
|
|
bne .L1416
|
|
ldr r2, [sp]
|
|
mov r1, r6
|
|
ldr r3, [r4, #28]
|
|
mov r0, r7
|
|
ubfx r3, r3, #16, #5
|
|
bl printk
|
|
mov r3, #512
|
|
mov r2, #4
|
|
mov r1, r4
|
|
mov r0, r8
|
|
bl rknand_print_hex
|
|
.L1416:
|
|
mov r1, #5
|
|
mov r0, #1
|
|
bl usleep_range
|
|
b .L1415
|
|
.L1433:
|
|
ldr r3, [r4, #8]
|
|
str r3, [sp]
|
|
ldr r3, [sp]
|
|
tst r3, #1048576
|
|
beq .L1433
|
|
b .L1402
|
|
.L1443:
|
|
.align 2
|
|
.L1442:
|
|
.word .LANCHOR0
|
|
.word .LC87
|
|
.word .LC88
|
|
.word .LC89
|
|
.fnend
|
|
.size NandcXferComp, .-NandcXferComp
|
|
.align 2
|
|
.global NandcXferData
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type NandcXferData, %function
|
|
NandcXferData:
|
|
.fnstart
|
|
@ args = 4, pretend = 0, frame = 80
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
tst r3, #63
|
|
ldr r9, .L1484
|
|
.pad #92
|
|
sub sp, sp, #92
|
|
mov r7, r0
|
|
mov r5, r1
|
|
str r2, [sp, #8]
|
|
mov r8, r3
|
|
ldr r4, [sp, #128]
|
|
ldr r6, [r9, r0, lsl #3]
|
|
bne .L1445
|
|
cmp r4, #0
|
|
bne .L1446
|
|
mov r2, #64
|
|
mov r1, #255
|
|
add r0, sp, #24
|
|
bl ftl_memset
|
|
add r4, sp, #24
|
|
.L1446:
|
|
mov r3, #0
|
|
ldr r2, [sp, #8]
|
|
mov r1, r5
|
|
mov r0, r7
|
|
str r4, [sp, #4]
|
|
str r8, [sp]
|
|
bl NandcXferStart
|
|
mov r1, r5
|
|
mov r0, r7
|
|
bl NandcXferComp
|
|
cmp r5, #0
|
|
movne r9, #0
|
|
bne .L1447
|
|
ldr r3, [r9, #2312]
|
|
mov r2, r5
|
|
cmp r3, #25
|
|
ldr r3, [sp, #8]
|
|
movcc ip, #64
|
|
movcs ip, #128
|
|
lsr r1, r3, #1
|
|
mov r3, r5
|
|
.L1449:
|
|
cmp r2, r1
|
|
add r4, r4, #4
|
|
add r0, ip, r3
|
|
bcc .L1450
|
|
ldr r3, [sp, #8]
|
|
mov r2, #0
|
|
ldr r1, [r9, #2312]
|
|
ldr ip, [r9, #2264]
|
|
mov r9, r2
|
|
lsr r0, r3, #2
|
|
.L1451:
|
|
cmp r2, r0
|
|
bcs .L1447
|
|
cmp r1, #0
|
|
bne .L1457
|
|
.L1447:
|
|
mov r3, #0
|
|
str r3, [r6, #16]
|
|
.L1458:
|
|
ldr r3, .L1484
|
|
ldr r3, [r3, #2264]
|
|
cmp r3, #5
|
|
movls r3, #0
|
|
movhi r3, #1
|
|
cmp r5, #0
|
|
movne r3, #0
|
|
cmp r3, #0
|
|
beq .L1444
|
|
ldr r3, [r6]
|
|
and r2, r3, #139264
|
|
cmp r2, #139264
|
|
mvneq r9, #0
|
|
orreq r3, r3, #131072
|
|
streq r3, [r6]
|
|
.L1444:
|
|
mov r0, r9
|
|
add sp, sp, #92
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1450:
|
|
ldr lr, [r9, #2280]
|
|
bic r3, r3, #3
|
|
add r2, r2, #1
|
|
ldr r3, [lr, r3]
|
|
strb r3, [r4, #-4]
|
|
lsr lr, r3, #8
|
|
strb lr, [r4, #-3]
|
|
lsr lr, r3, #16
|
|
lsr r3, r3, #24
|
|
strb lr, [r4, #-2]
|
|
strb r3, [r4, #-1]
|
|
mov r3, r0
|
|
b .L1449
|
|
.L1457:
|
|
add r3, r2, #8
|
|
ldr r3, [r6, r3, lsl #2]
|
|
str r3, [sp, #20]
|
|
ldr r3, [sp, #20]
|
|
tst r3, #4
|
|
bne .L1473
|
|
ldr r3, [sp, #20]
|
|
ubfx r3, r3, #15, #1
|
|
cmp r3, #0
|
|
bne .L1473
|
|
cmp ip, #5
|
|
bls .L1453
|
|
ldr lr, [sp, #20]
|
|
ldr r7, [sp, #20]
|
|
ldr r3, [sp, #20]
|
|
ldr r4, [sp, #20]
|
|
ubfx lr, lr, #3, #5
|
|
ubfx r7, r7, #27, #1
|
|
ubfx r3, r3, #16, #5
|
|
orr lr, lr, r7, lsl #5
|
|
ubfx r4, r4, #29, #1
|
|
orr r3, r3, r4, lsl #5
|
|
cmp lr, r3
|
|
ldr r3, [sp, #20]
|
|
ldrhi lr, [sp, #20]
|
|
ldrls lr, [sp, #20]
|
|
ubfxhi r3, r3, #3, #5
|
|
ubfxls r3, r3, #16, #5
|
|
ubfxhi lr, lr, #27, #1
|
|
ubfxls lr, lr, #29, #1
|
|
.L1483:
|
|
orr r3, r3, lr, lsl #5
|
|
.L1455:
|
|
cmp r9, r3
|
|
movcc r9, r3
|
|
.L1452:
|
|
add r2, r2, #1
|
|
b .L1451
|
|
.L1453:
|
|
cmp ip, #3
|
|
bls .L1455
|
|
ldr lr, [sp, #20]
|
|
ldr r7, [sp, #20]
|
|
ldr r3, [sp, #20]
|
|
ldr r4, [sp, #20]
|
|
ubfx lr, lr, #3, #5
|
|
ubfx r7, r7, #28, #1
|
|
ubfx r3, r3, #16, #5
|
|
orr lr, lr, r7, lsl #5
|
|
ubfx r4, r4, #30, #1
|
|
orr r3, r3, r4, lsl #5
|
|
cmp lr, r3
|
|
ldr r3, [sp, #20]
|
|
ldrhi lr, [sp, #20]
|
|
ldrls lr, [sp, #20]
|
|
ubfxhi r3, r3, #3, #5
|
|
ubfxls r3, r3, #16, #5
|
|
ubfxhi lr, lr, #28, #1
|
|
ubfxls lr, lr, #30, #1
|
|
b .L1483
|
|
.L1473:
|
|
mvn r9, #0
|
|
b .L1452
|
|
.L1445:
|
|
cmp r1, #1
|
|
bne .L1459
|
|
mov r9, #0
|
|
cmp r4, #0
|
|
mov r10, r9
|
|
movne r3, #4
|
|
moveq r3, #0
|
|
str r3, [sp, #12]
|
|
.L1460:
|
|
ldr r3, [sp, #8]
|
|
cmp r9, r3
|
|
movcs r9, #0
|
|
bcs .L1458
|
|
.L1462:
|
|
cmp r8, #0
|
|
and fp, r9, #3
|
|
addne r3, r8, r9, lsl #9
|
|
moveq r3, r8
|
|
str r4, [sp]
|
|
mov r2, fp
|
|
mov r1, #1
|
|
mov r0, r6
|
|
bl NandcCopy1KB
|
|
mov r3, fp
|
|
mov r2, #2
|
|
mov r1, #1
|
|
mov r0, r7
|
|
str r10, [sp, #4]
|
|
add r9, r9, #2
|
|
str r10, [sp]
|
|
bl NandcXferStart
|
|
mov r1, #1
|
|
mov r0, r7
|
|
bl NandcXferComp
|
|
ldr r3, [sp, #12]
|
|
add r4, r4, r3
|
|
b .L1460
|
|
.L1459:
|
|
mov r10, #0
|
|
mov r2, #2
|
|
mov r3, r10
|
|
str r10, [sp, #4]
|
|
str r10, [sp]
|
|
mov r1, r10
|
|
bl NandcXferStart
|
|
mov fp, r8
|
|
cmp r4, r10
|
|
mov r9, r10
|
|
movne r3, #4
|
|
moveq r3, r10
|
|
str r3, [sp, #12]
|
|
.L1463:
|
|
ldr r3, [sp, #8]
|
|
cmp r10, r3
|
|
bcs .L1458
|
|
mov r1, r5
|
|
mov r0, r7
|
|
bl NandcXferComp
|
|
ldr r3, [r6, #32]
|
|
add r10, r10, #2
|
|
str r3, [sp, #20]
|
|
ldr r3, [sp, #8]
|
|
cmp r3, r10
|
|
bls .L1464
|
|
mov r3, #0
|
|
mov r2, #2
|
|
str r3, [sp, #4]
|
|
mov r1, #0
|
|
str r3, [sp]
|
|
mov r0, r7
|
|
and r3, r10, #3
|
|
bl NandcXferStart
|
|
.L1464:
|
|
ldr r3, [sp, #20]
|
|
tst r3, #4
|
|
mvnne r9, #0
|
|
bne .L1465
|
|
ldr r3, [sp, #20]
|
|
ldr r2, [sp, #20]
|
|
ubfx r3, r3, #3, #5
|
|
ubfx r2, r2, #27, #1
|
|
orr r3, r3, r2, lsl #5
|
|
cmp r9, r3
|
|
movcc r9, r3
|
|
.L1465:
|
|
cmp r8, #0
|
|
sub r2, r10, #2
|
|
movne r3, fp
|
|
str r4, [sp]
|
|
moveq r3, #0
|
|
and r2, r2, #3
|
|
mov r1, #0
|
|
mov r0, r6
|
|
bl NandcCopy1KB
|
|
ldr r3, [sp, #12]
|
|
add fp, fp, #1024
|
|
add r4, r4, r3
|
|
b .L1463
|
|
.L1485:
|
|
.align 2
|
|
.L1484:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size NandcXferData, .-NandcXferData
|
|
.align 2
|
|
.global FlashReadRawPage
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadRawPage, %function
|
|
FlashReadRawPage:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
.pad #8
|
|
mov r8, r3
|
|
ldr r3, .L1489
|
|
subs r4, r0, #0
|
|
mov r6, r1
|
|
mov r7, r2
|
|
ldrb r5, [r3, #477] @ zero_extendqisi2
|
|
bne .L1487
|
|
ldr r1, .L1489+4
|
|
ldrb r3, [r1, #37] @ zero_extendqisi2
|
|
ldr r0, [r1, #40]
|
|
mul r0, r0, r3
|
|
cmp r0, r6
|
|
movhi r5, #4
|
|
.L1487:
|
|
mov r0, r4
|
|
bl NandcWaitFlashReady
|
|
mov r0, r4
|
|
bl NandcFlashCs
|
|
mov r1, r6
|
|
mov r0, r4
|
|
bl FlashReadCmd
|
|
mov r0, r4
|
|
bl NandcWaitFlashReady
|
|
mov r3, r7
|
|
mov r2, r5
|
|
str r8, [sp]
|
|
mov r1, #0
|
|
mov r0, r4
|
|
bl NandcXferData
|
|
mov r1, r0
|
|
mov r0, r4
|
|
bl NandcFlashDeCs
|
|
mov r0, r1
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L1490:
|
|
.align 2
|
|
.L1489:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashReadRawPage, .-FlashReadRawPage
|
|
.align 2
|
|
.global FlashDdrTunningRead
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashDdrTunningRead, %function
|
|
FlashDdrTunningRead:
|
|
.fnstart
|
|
@ args = 4, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r7, r3
|
|
ldr r4, .L1517
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
mov fp, r2
|
|
stm sp, {r0, r1}
|
|
ldr r3, [r4, #88]
|
|
ldr r3, [r3, #304]
|
|
str r3, [sp, #12]
|
|
ldr r3, [r4, #2264]
|
|
cmp r3, #8
|
|
ldr r3, [sp, #56]
|
|
movcc r10, #6
|
|
movcs r10, #12
|
|
cmp r3, #0
|
|
moveq r5, #1024
|
|
beq .L1493
|
|
mov r0, #1
|
|
bl FlashSetInterfaceMode
|
|
mov r0, #1
|
|
bl NandcSetMode
|
|
ldr r0, [sp]
|
|
bl FlashReset
|
|
mov r3, r7
|
|
mov r2, fp
|
|
ldm sp, {r0, r1}
|
|
bl FlashReadRawPage
|
|
mov r5, r0
|
|
ldrb r0, [r4, #2233] @ zero_extendqisi2
|
|
bl FlashSetInterfaceMode
|
|
ldrb r0, [r4, #2233] @ zero_extendqisi2
|
|
bl NandcSetMode
|
|
cmn r5, #1
|
|
bne .L1494
|
|
.L1503:
|
|
mvn r5, #0
|
|
.L1491:
|
|
mov r0, r5
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1494:
|
|
mov r2, r5
|
|
ldr r1, [sp, #4]
|
|
ldr r0, .L1517+4
|
|
bl printk
|
|
cmp r5, #9
|
|
ldrls r3, [sp]
|
|
ldrls r3, [r4, r3, lsl #3]
|
|
ldrls r2, [r3, #3840]
|
|
ldrls r2, [r3]
|
|
orrls r2, r2, #131072
|
|
strls r2, [r3]
|
|
ldr r2, .L1517+8
|
|
ldr r3, [r2, #1700]
|
|
add r3, r3, #1
|
|
cmp r3, #2048
|
|
str r3, [r2, #1700]
|
|
movcs r7, #0
|
|
strcs r7, [r2, #1700]
|
|
movcs fp, r7
|
|
bcc .L1491
|
|
.L1493:
|
|
mov r9, #0
|
|
mvn r8, #0
|
|
mov r6, r9
|
|
mov r4, r9
|
|
str r9, [sp, #8]
|
|
.L1501:
|
|
uxtb r0, r10
|
|
bl NandcSetDdrPara
|
|
mov r3, r7
|
|
mov r2, fp
|
|
ldm sp, {r0, r1}
|
|
bl FlashReadRawPage
|
|
add r3, r5, #1
|
|
cmp r0, r3
|
|
bhi .L1497
|
|
cmp r0, #2
|
|
bhi .L1507
|
|
add r4, r4, #1
|
|
cmp r4, #9
|
|
bls .L1507
|
|
mov r3, r6
|
|
mov r5, r0
|
|
sub r6, r10, r4
|
|
mov r8, #0
|
|
.L1499:
|
|
ldr r2, [sp, #8]
|
|
cmp r4, r2
|
|
movls r6, r3
|
|
.L1500:
|
|
cmp r6, #0
|
|
beq .L1502
|
|
mov r1, r6
|
|
ldr r0, .L1517+12
|
|
bl printk
|
|
uxtb r0, r6
|
|
bl NandcSetDdrPara
|
|
.L1502:
|
|
cmn r8, #1
|
|
bne .L1491
|
|
ldm sp, {r1, r2}
|
|
ldr r0, .L1517+16
|
|
bl printk
|
|
ldr r3, [sp, #56]
|
|
cmp r3, #0
|
|
beq .L1503
|
|
ldr r3, [sp, #12]
|
|
ubfx r0, r3, #8, #8
|
|
bl NandcSetDdrPara
|
|
b .L1491
|
|
.L1497:
|
|
ldr r3, [sp, #8]
|
|
cmp r4, r3
|
|
bls .L1508
|
|
cmp r4, #7
|
|
sub r6, r9, r4
|
|
bhi .L1500
|
|
str r4, [sp, #8]
|
|
.L1508:
|
|
mov r4, #0
|
|
b .L1498
|
|
.L1507:
|
|
mov r8, #0
|
|
mov r9, r10
|
|
mov r5, r0
|
|
mov r7, r8
|
|
mov fp, r8
|
|
.L1498:
|
|
add r10, r10, #2
|
|
cmp r10, #69
|
|
bls .L1501
|
|
mov r3, r6
|
|
mov r6, r9
|
|
b .L1499
|
|
.L1518:
|
|
.align 2
|
|
.L1517:
|
|
.word .LANCHOR0
|
|
.word .LC90
|
|
.word .LANCHOR2
|
|
.word .LC91
|
|
.word .LC92
|
|
.fnend
|
|
.size FlashDdrTunningRead, .-FlashDdrTunningRead
|
|
.align 2
|
|
.global FlashReadPage
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadPage, %function
|
|
FlashReadPage:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
mov r5, r0
|
|
mov r6, r1
|
|
mov r7, r2
|
|
mov r8, r3
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
mov r4, r0
|
|
bne .L1520
|
|
ldr r9, .L1539
|
|
ldrb fp, [r9, #44] @ zero_extendqisi2
|
|
mov r10, r9
|
|
cmp fp, #0
|
|
bne .L1521
|
|
.L1523:
|
|
ldrb r3, [r10, #2256] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L1520
|
|
ldr r3, [r10, #88]
|
|
mov r2, r7
|
|
mov r1, r6
|
|
mov r0, r5
|
|
ldr r9, [r3, #304]
|
|
mov r3, #1
|
|
str r3, [sp]
|
|
mov r3, r8
|
|
bl FlashDdrTunningRead
|
|
cmn r0, #1
|
|
mov r4, r0
|
|
beq .L1524
|
|
ldrb r3, [r10, #2316] @ zero_extendqisi2
|
|
cmp r0, r3, lsr #1
|
|
bls .L1520
|
|
.L1524:
|
|
ubfx r0, r9, #8, #8
|
|
bl NandcSetDdrPara
|
|
b .L1520
|
|
.L1521:
|
|
mov r3, #0
|
|
mov r2, r7
|
|
strb r3, [r9, #44]
|
|
mov r1, r6
|
|
mov r3, r8
|
|
mov r0, r5
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
strb fp, [r9, #44]
|
|
movne r4, r0
|
|
beq .L1523
|
|
.L1520:
|
|
ldr r9, .L1539+4
|
|
ldr r10, [r9, #1704]
|
|
adds r3, r10, #0
|
|
movne r3, #1
|
|
cmn r4, #1
|
|
movne r3, #0
|
|
cmp r3, #0
|
|
beq .L1519
|
|
mov r3, r8
|
|
mov r2, r7
|
|
mov r1, r6
|
|
mov r0, r5
|
|
blx r10
|
|
mov r3, r6
|
|
mov r4, r0
|
|
mov r1, r0
|
|
mov r2, r5
|
|
ldr r0, .L1539+8
|
|
bl printk
|
|
cmn r4, #1
|
|
bne .L1519
|
|
ldr r3, .L1539
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L1519
|
|
mov r0, r5
|
|
bl flash_enter_slc_mode
|
|
ldr r4, [r9, #1704]
|
|
mov r3, r8
|
|
mov r2, r7
|
|
mov r1, r6
|
|
mov r0, r5
|
|
blx r4
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl flash_exit_slc_mode
|
|
.L1519:
|
|
mov r0, r4
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1540:
|
|
.align 2
|
|
.L1539:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LC93
|
|
.fnend
|
|
.size FlashReadPage, .-FlashReadPage
|
|
.align 2
|
|
.global FlashDdrParaScan
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashDdrParaScan, %function
|
|
FlashDdrParaScan:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
.pad #8
|
|
mov r6, r0
|
|
ldr r5, .L1551
|
|
mov r4, #0
|
|
mov r7, r1
|
|
ldrb r0, [r5, #2233] @ zero_extendqisi2
|
|
bl FlashSetInterfaceMode
|
|
ldrb r0, [r5, #2233] @ zero_extendqisi2
|
|
bl NandcSetMode
|
|
mov r3, r4
|
|
mov r2, r4
|
|
mov r1, r7
|
|
str r4, [sp]
|
|
mov r0, r6
|
|
bl FlashDdrTunningRead
|
|
mov r3, r4
|
|
mov r8, r0
|
|
mov r2, r4
|
|
mov r1, r7
|
|
mov r0, r6
|
|
bl FlashReadRawPage
|
|
cmn r8, #1
|
|
cmnne r0, #1
|
|
mov r3, r5
|
|
bne .L1542
|
|
ldrb r2, [r5, #2233] @ zero_extendqisi2
|
|
tst r2, #1
|
|
beq .L1542
|
|
mov r0, #1
|
|
bl FlashSetInterfaceMode
|
|
mov r0, #1
|
|
bl NandcSetMode
|
|
strb r4, [r5, #2256]
|
|
.L1543:
|
|
mov r0, #0
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L1542:
|
|
mov r2, #1
|
|
strb r2, [r3, #2256]
|
|
b .L1543
|
|
.L1552:
|
|
.align 2
|
|
.L1551:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashDdrParaScan, .-FlashDdrParaScan
|
|
.align 2
|
|
.global FlashLoadPhyInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashLoadPhyInfo, %function
|
|
FlashLoadPhyInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r3, #60
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
ldr r6, .L1568
|
|
mov r5, #0
|
|
mov r8, #4
|
|
strb r3, [sp, #12]
|
|
mov r3, #40
|
|
strb r3, [sp, #13]
|
|
mov r3, #24
|
|
strb r3, [sp, #14]
|
|
mov r3, #16
|
|
ldr r4, .L1568+4
|
|
mvn r7, #0
|
|
strb r3, [sp, #15]
|
|
mov r0, r5
|
|
ldr r3, [r6, #40]
|
|
str r5, [r4, #1712]
|
|
str r3, [sp, #4]
|
|
ldr r3, [r4, #1696]
|
|
str r3, [r4, #1708]
|
|
bl flash_enter_slc_mode
|
|
.L1554:
|
|
add fp, r5, #1
|
|
mov r9, #0
|
|
add r10, sp, #12
|
|
.L1556:
|
|
ldrb r0, [r10, r9] @ zero_extendqisi2
|
|
bl FlashBchSel
|
|
mov r3, #0
|
|
ldr r2, [r4, #1696]
|
|
mov r1, r5
|
|
mov r0, r3
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
bne .L1555
|
|
mov r3, #0
|
|
ldr r2, [r4, #1696]
|
|
mov r1, fp
|
|
mov r0, r3
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
bne .L1555
|
|
add r9, r9, #1
|
|
cmp r9, #4
|
|
bne .L1556
|
|
.L1557:
|
|
ldr r3, [sp, #4]
|
|
subs r8, r8, #1
|
|
add r5, r5, r3
|
|
bne .L1554
|
|
mov r0, r8
|
|
b .L1567
|
|
.L1558:
|
|
movw r1, #2036
|
|
add r0, r9, #12
|
|
bl js_hash
|
|
ldr r3, [r9, #8]
|
|
cmp r3, r0
|
|
mvnne r7, #0
|
|
bne .L1557
|
|
mov r2, #32
|
|
add r1, r9, #160
|
|
ldr r0, .L1568+8
|
|
bl ftl_memcpy
|
|
ldr r1, [r4, #1708]
|
|
mov r2, #32
|
|
ldr r0, .L1568+12
|
|
add r1, r1, #192
|
|
bl ftl_memcpy
|
|
ldr r1, [r4, #1708]
|
|
mov r2, #852
|
|
ldr r0, .L1568+16
|
|
add r1, r1, #224
|
|
bl ftl_memcpy
|
|
ldr r3, .L1568+8
|
|
ldrh r0, [r3, #10]
|
|
bl FlashBlockAlignInit
|
|
ldr r7, [r4, #1708]
|
|
mov r0, r5
|
|
str r5, [r4, #1712]
|
|
ldr r1, [r6, #40]
|
|
ldr r3, [r7, #1076]
|
|
strb r3, [r6, #2256]
|
|
bl __aeabi_uidiv
|
|
add r0, r0, #1
|
|
cmp r0, #1
|
|
movls r3, #2
|
|
strhi r0, [r4, #1716]
|
|
strls r3, [r4, #1716]
|
|
ldrh r3, [r7, #14]
|
|
mov r7, #0
|
|
strb r3, [r4, #1720]
|
|
b .L1557
|
|
.L1555:
|
|
ldr r9, [r4, #1708]
|
|
ldr r2, .L1568+20
|
|
ldr r3, [r9]
|
|
cmp r3, r2
|
|
bne .L1557
|
|
cmp r7, #0
|
|
bne .L1558
|
|
ldr r1, [r6, #40]
|
|
mov r0, r5
|
|
bl __aeabi_uidiv
|
|
add r0, r0, #1
|
|
str r0, [r4, #1716]
|
|
mov r0, r7
|
|
.L1567:
|
|
bl flash_exit_slc_mode
|
|
mov r0, r7
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1569:
|
|
.align 2
|
|
.L1568:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR1+468
|
|
.word .LANCHOR0+52
|
|
.word .LANCHOR0+1216
|
|
.word 1312902724
|
|
.fnend
|
|
.size FlashLoadPhyInfo, .-FlashLoadPhyInfo
|
|
.align 2
|
|
.global ToshibaReadRetrial
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ToshibaReadRetrial, %function
|
|
ToshibaReadRetrial:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r8, r0
|
|
ldr r4, .L1598
|
|
.pad #28
|
|
sub sp, sp, #28
|
|
mov fp, r3
|
|
str r1, [sp, #12]
|
|
str r2, [sp, #8]
|
|
bl NandcWaitFlashReady
|
|
add r3, r4, r8, lsl #3
|
|
ldr r6, [r4, r8, lsl #3]
|
|
ldrb r1, [r3, #4] @ zero_extendqisi2
|
|
ldrb r3, [r4, #84] @ zero_extendqisi2
|
|
add r7, r1, #8
|
|
sub r3, r3, #67
|
|
add r7, r6, r7, lsl #8
|
|
cmp r3, #1
|
|
lsl r3, r1, #8
|
|
movls r5, #0
|
|
str r3, [sp, #16]
|
|
bls .L1571
|
|
ldrb r5, [r4, #2256] @ zero_extendqisi2
|
|
cmp r5, #0
|
|
beq .L1572
|
|
mov r5, #1
|
|
mov r0, #0
|
|
bl NandcSetDdrMode
|
|
.L1572:
|
|
lsl r3, r1, #8
|
|
mov r2, #92
|
|
add r3, r6, r3
|
|
str r2, [r3, #2056]
|
|
mov r2, #197
|
|
str r2, [r3, #2056]
|
|
.L1571:
|
|
mvn r3, #0
|
|
mov r9, #1
|
|
str r3, [sp, #4]
|
|
lsl r3, r1, #8
|
|
str r3, [sp, #20]
|
|
.L1573:
|
|
ldr r3, .L1598+4
|
|
ldrb r3, [r3, #1721] @ zero_extendqisi2
|
|
add r3, r3, #1
|
|
cmp r9, r3
|
|
bcc .L1582
|
|
ldr r10, [sp, #4]
|
|
.L1581:
|
|
ldrb r2, [r4, #84] @ zero_extendqisi2
|
|
mov r1, #0
|
|
mov r0, r7
|
|
sub r2, r2, #67
|
|
cmp r2, #1
|
|
bhi .L1583
|
|
bl SandiskSetRRPara
|
|
.L1584:
|
|
ldr r3, [sp, #16]
|
|
mov r2, #255
|
|
add r6, r6, r3
|
|
str r2, [r6, #2056]
|
|
ldrb r2, [r4, #2316] @ zero_extendqisi2
|
|
add r2, r2, r2, lsl #1
|
|
cmp r10, r2, asr #2
|
|
bcc .L1585
|
|
cmn r10, #1
|
|
movne r10, #256
|
|
.L1585:
|
|
mov r0, r8
|
|
bl NandcWaitFlashReady
|
|
cmp r5, #0
|
|
beq .L1570
|
|
mov r0, #4
|
|
bl NandcSetDdrMode
|
|
.L1570:
|
|
mov r0, r10
|
|
add sp, sp, #28
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1582:
|
|
ldrb r3, [r4, #84] @ zero_extendqisi2
|
|
mov r0, r7
|
|
uxtb r1, r9
|
|
sub r3, r3, #67
|
|
cmp r3, #1
|
|
bhi .L1574
|
|
bl SandiskSetRRPara
|
|
.L1575:
|
|
ldrb r3, [r4, #84] @ zero_extendqisi2
|
|
cmp r3, #34
|
|
bne .L1576
|
|
ldr r3, .L1598+4
|
|
ldrb r3, [r3, #1721] @ zero_extendqisi2
|
|
sub r3, r3, #3
|
|
cmp r9, r3
|
|
ldreq r3, [sp, #20]
|
|
moveq r2, #179
|
|
addeq r3, r6, r3
|
|
streq r2, [r3, #2056]
|
|
.L1576:
|
|
ldr r3, [sp, #16]
|
|
mov r2, #38
|
|
cmp r5, #0
|
|
add r3, r6, r3
|
|
str r2, [r3, #2056]
|
|
mov r2, #93
|
|
str r2, [r3, #2056]
|
|
beq .L1577
|
|
mov r0, #4
|
|
bl NandcSetDdrMode
|
|
mov r3, fp
|
|
ldr r2, [sp, #8]
|
|
ldr r1, [sp, #12]
|
|
mov r0, r8
|
|
bl FlashReadRawPage
|
|
mov r10, r0
|
|
mov r0, #0
|
|
bl NandcSetDdrMode
|
|
.L1578:
|
|
cmn r10, #1
|
|
beq .L1579
|
|
ldrb r2, [r4, #2316] @ zero_extendqisi2
|
|
ldr r3, [sp, #4]
|
|
add r2, r2, r2, lsl #1
|
|
cmn r3, #1
|
|
moveq r3, r10
|
|
cmp r10, r2, asr #2
|
|
str r3, [sp, #4]
|
|
bcc .L1581
|
|
mov fp, #0
|
|
str fp, [sp, #8]
|
|
.L1579:
|
|
add r9, r9, #1
|
|
b .L1573
|
|
.L1574:
|
|
bl ToshibaSetRRPara
|
|
b .L1575
|
|
.L1577:
|
|
mov r3, fp
|
|
ldr r2, [sp, #8]
|
|
ldr r1, [sp, #12]
|
|
mov r0, r8
|
|
bl FlashReadRawPage
|
|
mov r10, r0
|
|
b .L1578
|
|
.L1583:
|
|
bl ToshibaSetRRPara
|
|
b .L1584
|
|
.L1599:
|
|
.align 2
|
|
.L1598:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size ToshibaReadRetrial, .-ToshibaReadRetrial
|
|
.align 2
|
|
.global SamsungReadRetrial
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type SamsungReadRetrial, %function
|
|
SamsungReadRetrial:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r3, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r8, r0
|
|
ldr r5, .L1614
|
|
mov r9, r3
|
|
mov fp, r1
|
|
mov r10, r2
|
|
bl NandcWaitFlashReady
|
|
mov r7, #1
|
|
mvn r4, #0
|
|
add r3, r5, r8, lsl #3
|
|
ldrb r6, [r3, #4] @ zero_extendqisi2
|
|
add r3, r6, #8
|
|
ldr r6, [r5, r8, lsl #3]
|
|
add r6, r6, r3, lsl #8
|
|
.L1601:
|
|
ldr r3, .L1614+4
|
|
ldrb r3, [r3, #1721] @ zero_extendqisi2
|
|
add r3, r3, #1
|
|
cmp r7, r3
|
|
bcc .L1605
|
|
.L1604:
|
|
mov r1, #0
|
|
mov r0, r6
|
|
bl SamsungSetRRPara
|
|
ldrb r3, [r5, #2316] @ zero_extendqisi2
|
|
add r3, r3, r3, lsl #1
|
|
cmp r4, r3, asr #2
|
|
bcc .L1600
|
|
cmn r4, #1
|
|
movne r4, #256
|
|
.L1600:
|
|
mov r0, r4
|
|
pop {r3, r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1605:
|
|
uxtb r1, r7
|
|
mov r0, r6
|
|
bl SamsungSetRRPara
|
|
mov r3, r9
|
|
mov r2, r10
|
|
mov r1, fp
|
|
mov r0, r8
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
beq .L1602
|
|
ldrb r3, [r5, #2316] @ zero_extendqisi2
|
|
cmn r4, #1
|
|
moveq r4, r0
|
|
add r3, r3, r3, lsl #1
|
|
cmp r0, r3, asr #2
|
|
bcc .L1608
|
|
mov r9, #0
|
|
mov r10, r9
|
|
.L1602:
|
|
add r7, r7, #1
|
|
b .L1601
|
|
.L1608:
|
|
mov r4, r0
|
|
b .L1604
|
|
.L1615:
|
|
.align 2
|
|
.L1614:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size SamsungReadRetrial, .-SamsungReadRetrial
|
|
.align 2
|
|
.global MicronReadRetrial
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type MicronReadRetrial, %function
|
|
MicronReadRetrial:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
.L1618:
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r7, r3
|
|
ldr r3, .L1642
|
|
mov r10, r2
|
|
.pad #44
|
|
sub sp, sp, #44
|
|
mov r5, r0
|
|
ldr fp, .L1642
|
|
ldrb r2, [r3, #2316] @ zero_extendqisi2
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
str r1, [sp, #28]
|
|
cmp r3, #0
|
|
ldrne r3, .L1642+4
|
|
addeq r2, r2, r2, lsl #1
|
|
asreq r3, r2, #2
|
|
smullne r2, r3, r2, r3
|
|
str r3, [sp, #12]
|
|
mov r3, #0
|
|
str r3, [sp, #16]
|
|
add r3, fp, r0, lsl #3
|
|
str r3, [sp, #36]
|
|
.L1628:
|
|
mov r0, r5
|
|
mov r9, #0
|
|
bl NandcWaitFlashReady
|
|
ldr r3, [fp, r5, lsl #3]
|
|
mvn r4, #0
|
|
str r3, [sp, #20]
|
|
ldr r3, [sp, #36]
|
|
ldrb r3, [r3, #4] @ zero_extendqisi2
|
|
str r3, [sp, #24]
|
|
ldr r2, [sp, #24]
|
|
ldr r3, [sp, #20]
|
|
add r6, r3, r2, lsl #8
|
|
.L1619:
|
|
ldr r3, .L1642+8
|
|
ldrb r3, [r3, #1721] @ zero_extendqisi2
|
|
cmp r9, r3
|
|
bcc .L1623
|
|
.L1622:
|
|
ldr r3, [sp, #20]
|
|
mov r0, #200
|
|
ldr r2, [sp, #24]
|
|
add r6, r3, r2, lsl #8
|
|
mov r3, #239
|
|
str r3, [r6, #2056]
|
|
mov r3, #137
|
|
str r3, [r6, #2052]
|
|
bl ndelay
|
|
mov r3, #0
|
|
str r3, [r6, #2048]
|
|
str r3, [r6, #2048]
|
|
str r3, [r6, #2048]
|
|
str r3, [r6, #2048]
|
|
ldr r3, [sp, #12]
|
|
cmp r4, r3
|
|
bcc .L1624
|
|
cmn r4, #1
|
|
movne r4, #256
|
|
.L1624:
|
|
cmn r4, #1
|
|
movne r6, #0
|
|
moveq r6, #1
|
|
cmp r4, #256
|
|
movne r1, r6
|
|
orreq r1, r6, #1
|
|
cmp r1, #0
|
|
beq .L1625
|
|
mov r3, r9
|
|
str r4, [sp]
|
|
ldr r2, [sp, #28]
|
|
mov r1, r9
|
|
ldr r0, .L1642+12
|
|
bl printk
|
|
ldr r3, [sp, #16]
|
|
cmp r3, #0
|
|
bne .L1626
|
|
ldrb r3, [fp, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
moveq r6, #0
|
|
andne r6, r6, #1
|
|
cmp r6, #0
|
|
beq .L1616
|
|
mov r1, #3
|
|
mov r0, r5
|
|
bl micron_auto_read_calibration_config
|
|
mov r3, #1
|
|
str r3, [sp, #16]
|
|
b .L1628
|
|
.L1623:
|
|
mov r3, #239
|
|
mov r0, #200
|
|
str r3, [r6, #2056]
|
|
mov r3, #137
|
|
str r3, [r6, #2052]
|
|
mov r8, #0
|
|
bl ndelay
|
|
add r3, r9, #1
|
|
mov r2, r10
|
|
str r3, [r6, #2048]
|
|
mov r0, r5
|
|
str r8, [r6, #2048]
|
|
str r3, [sp, #32]
|
|
mov r3, r7
|
|
str r8, [r6, #2048]
|
|
ldr r1, [sp, #28]
|
|
str r8, [r6, #2048]
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
beq .L1620
|
|
ldr r3, [sp, #12]
|
|
cmn r4, #1
|
|
moveq r4, r0
|
|
cmp r0, r3
|
|
bcc .L1630
|
|
mov r7, r8
|
|
mov r10, r8
|
|
.L1620:
|
|
ldr r9, [sp, #32]
|
|
b .L1619
|
|
.L1630:
|
|
mov r4, r0
|
|
mov r7, r8
|
|
mov r10, r8
|
|
b .L1622
|
|
.L1626:
|
|
mov r1, #0
|
|
mov r0, r5
|
|
bl micron_auto_read_calibration_config
|
|
cmn r4, #1
|
|
movne r4, #256
|
|
.L1616:
|
|
mov r0, r4
|
|
add sp, sp, #44
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1625:
|
|
ldr r3, [sp, #16]
|
|
cmp r3, #0
|
|
beq .L1616
|
|
mov r0, r5
|
|
mov r4, #256
|
|
bl micron_auto_read_calibration_config
|
|
b .L1616
|
|
.L1643:
|
|
.align 2
|
|
.L1642:
|
|
.word .LANCHOR0
|
|
.word 1431655766
|
|
.word .LANCHOR2
|
|
.word .LC94
|
|
.fnend
|
|
.size MicronReadRetrial, .-MicronReadRetrial
|
|
.align 2
|
|
.global HynixReadRetrial
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type HynixReadRetrial, %function
|
|
HynixReadRetrial:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
mov r9, r3
|
|
ldr r5, .L1662
|
|
mov r8, #0
|
|
mvn r6, #0
|
|
mov fp, r2
|
|
mov r7, r0
|
|
str r1, [sp, #4]
|
|
ldr r3, [r5, #48]
|
|
add r2, r5, r0
|
|
ldrb r4, [r2, #1228] @ zero_extendqisi2
|
|
ldrb r10, [r5, #1218] @ zero_extendqisi2
|
|
ldrb r3, [r3, #19] @ zero_extendqisi2
|
|
sub r3, r3, #7
|
|
cmp r3, #1
|
|
ldrbls r4, [r2, #1236] @ zero_extendqisi2
|
|
bl NandcWaitFlashReady
|
|
.L1646:
|
|
cmp r8, r10
|
|
bcc .L1651
|
|
.L1650:
|
|
ldr r3, [r5, #48]
|
|
add r7, r5, r7
|
|
ldrb r3, [r3, #19] @ zero_extendqisi2
|
|
sub r3, r3, #7
|
|
cmp r3, #1
|
|
ldrb r3, [r5, #2316] @ zero_extendqisi2
|
|
strbls r4, [r7, #1236]
|
|
strbhi r4, [r7, #1228]
|
|
add r3, r3, r3, lsl #1
|
|
cmp r6, r3, asr #2
|
|
bcc .L1644
|
|
cmn r6, #1
|
|
movne r6, #256
|
|
.L1644:
|
|
mov r0, r6
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1651:
|
|
add r4, r4, #1
|
|
ldr r2, .L1662+4
|
|
uxtb r4, r4
|
|
ldrb r1, [r5, #1217] @ zero_extendqisi2
|
|
mov r0, r7
|
|
cmp r10, r4
|
|
movls r4, #0
|
|
mov r3, r4
|
|
bl HynixSetRRPara
|
|
mov r3, r9
|
|
mov r2, fp
|
|
ldr r1, [sp, #4]
|
|
mov r0, r7
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
beq .L1648
|
|
ldrb r3, [r5, #2316] @ zero_extendqisi2
|
|
cmn r6, #1
|
|
moveq r6, r0
|
|
add r3, r3, r3, lsl #1
|
|
cmp r0, r3, asr #2
|
|
bcc .L1655
|
|
mov r9, #0
|
|
mov fp, r9
|
|
.L1648:
|
|
add r8, r8, #1
|
|
b .L1646
|
|
.L1655:
|
|
mov r6, r0
|
|
b .L1650
|
|
.L1663:
|
|
.align 2
|
|
.L1662:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+1220
|
|
.fnend
|
|
.size HynixReadRetrial, .-HynixReadRetrial
|
|
.align 2
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type samsung_read_retrial, %function
|
|
samsung_read_retrial:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #28
|
|
sub sp, sp, #28
|
|
mov r10, r0
|
|
mov fp, r2
|
|
mov r9, r3
|
|
str r1, [sp, #16]
|
|
bl NandcWaitFlashReady
|
|
ldr r3, .L1694
|
|
ldr r2, [r3, r10, lsl #3]
|
|
str r3, [sp, #20]
|
|
str r2, [sp, #12]
|
|
add r2, r3, r10, lsl #3
|
|
ldrb r6, [r2, #4] @ zero_extendqisi2
|
|
ldrb r2, [r3, #2232] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
bne .L1665
|
|
ldr r3, [sp, #12]
|
|
lsl r8, r6, #8
|
|
mvn r4, #0
|
|
mov r7, #1
|
|
add r5, r3, r8
|
|
.L1669:
|
|
mov r3, #239
|
|
mov r6, #0
|
|
str r3, [r5, #2056]
|
|
mov r3, #141
|
|
str r3, [r5, #2052]
|
|
mov r2, fp
|
|
ldr r3, .L1694+4
|
|
mov r0, r10
|
|
ldr r1, [sp, #16]
|
|
ldrsb r3, [r7, r3]
|
|
str r3, [r5, #2048]
|
|
mov r3, r9
|
|
str r6, [r5, #2048]
|
|
str r6, [r5, #2048]
|
|
str r6, [r5, #2048]
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
beq .L1666
|
|
ldr r3, [sp, #20]
|
|
cmn r4, #1
|
|
moveq r4, r0
|
|
ldrb r3, [r3, #2316] @ zero_extendqisi2
|
|
add r3, r3, r3, lsl #1
|
|
cmp r0, r3, asr #2
|
|
bcc .L1677
|
|
mov r9, r6
|
|
mov fp, r6
|
|
.L1666:
|
|
add r7, r7, #1
|
|
cmp r7, #26
|
|
bne .L1669
|
|
.L1668:
|
|
ldr r3, [sp, #12]
|
|
add r8, r3, r8
|
|
mov r3, #239
|
|
str r3, [r8, #2056]
|
|
mov r3, #141
|
|
.L1693:
|
|
str r3, [r5, #2052]
|
|
mov r3, #0
|
|
str r3, [r5, #2048]
|
|
str r3, [r5, #2048]
|
|
str r3, [r5, #2048]
|
|
str r3, [r5, #2048]
|
|
ldr r3, .L1694
|
|
ldrb r3, [r3, #2316] @ zero_extendqisi2
|
|
add r3, r3, r3, lsl #1
|
|
cmp r4, r3, asr #2
|
|
bcc .L1675
|
|
cmn r4, #1
|
|
movne r4, #256
|
|
.L1675:
|
|
cmn r4, #1
|
|
cmpne r4, #256
|
|
bne .L1676
|
|
str r4, [sp]
|
|
mov r3, r7
|
|
ldr r2, [sp, #16]
|
|
mov r1, r7
|
|
ldr r0, .L1694+8
|
|
bl printk
|
|
.L1676:
|
|
mov r0, r10
|
|
bl NandcWaitFlashReady
|
|
mov r0, r4
|
|
add sp, sp, #28
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1677:
|
|
mov r4, r0
|
|
b .L1668
|
|
.L1665:
|
|
ldr r3, [sp, #12]
|
|
lsl r6, r6, #8
|
|
ldr r8, .L1694+12
|
|
mvn r4, #0
|
|
mov r7, #1
|
|
add r5, r3, r6
|
|
.L1674:
|
|
mov r3, #239
|
|
mov r2, fp
|
|
str r3, [r5, #2056]
|
|
mov r3, #137
|
|
str r3, [r5, #2052]
|
|
mov r0, r10
|
|
ldrb r3, [r8, #4] @ zero_extendqisi2
|
|
ldr r1, [sp, #16]
|
|
str r3, [r5, #2048]
|
|
ldrb r3, [r8, #5] @ zero_extendqisi2
|
|
str r3, [r5, #2048]
|
|
ldrb r3, [r8, #6] @ zero_extendqisi2
|
|
str r3, [r5, #2048]
|
|
ldrb r3, [r8, #7] @ zero_extendqisi2
|
|
str r3, [r5, #2048]
|
|
mov r3, r9
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
beq .L1671
|
|
ldr r3, .L1694
|
|
cmn r4, #1
|
|
moveq r4, r0
|
|
ldrb r3, [r3, #2316] @ zero_extendqisi2
|
|
add r3, r3, r3, lsl #1
|
|
cmp r0, r3, asr #2
|
|
bcc .L1678
|
|
mov r9, #0
|
|
mov fp, r9
|
|
.L1671:
|
|
add r7, r7, #1
|
|
add r8, r8, #4
|
|
cmp r7, #26
|
|
bne .L1674
|
|
.L1673:
|
|
ldr r3, [sp, #12]
|
|
add r6, r3, r6
|
|
mov r3, #239
|
|
str r3, [r6, #2056]
|
|
mov r3, #137
|
|
b .L1693
|
|
.L1678:
|
|
mov r4, r0
|
|
b .L1673
|
|
.L1695:
|
|
.align 2
|
|
.L1694:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR3+11
|
|
.word .LC95
|
|
.word .LANCHOR3+37
|
|
.fnend
|
|
.size samsung_read_retrial, .-samsung_read_retrial
|
|
.align 2
|
|
.global FlashProgPage
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashProgPage, %function
|
|
FlashProgPage:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
.pad #8
|
|
mov r8, r3
|
|
ldr r3, .L1700
|
|
subs r4, r0, #0
|
|
mov r5, r1
|
|
mov r7, r2
|
|
ldrb r6, [r3, #477] @ zero_extendqisi2
|
|
bne .L1697
|
|
ldr r1, .L1700+4
|
|
ldrb r3, [r1, #37] @ zero_extendqisi2
|
|
ldr r0, [r1, #40]
|
|
mul r0, r0, r3
|
|
cmp r0, r5
|
|
bls .L1697
|
|
ldrb r3, [r1, #36] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
movne r6, #4
|
|
.L1697:
|
|
mov r0, r4
|
|
bl NandcWaitFlashReady
|
|
mov r0, r4
|
|
bl NandcFlashCs
|
|
mov r1, r5
|
|
mov r0, r4
|
|
bl FlashProgFirstCmd
|
|
mov r3, r7
|
|
mov r2, r6
|
|
str r8, [sp]
|
|
mov r1, #1
|
|
mov r0, r4
|
|
bl NandcXferData
|
|
mov r1, r5
|
|
mov r0, r4
|
|
bl FlashProgSecondCmd
|
|
mov r0, r4
|
|
bl NandcWaitFlashReady
|
|
mov r1, r5
|
|
mov r0, r4
|
|
bl FlashReadStatus
|
|
mov r1, r0
|
|
mov r0, r4
|
|
bl NandcFlashDeCs
|
|
and r0, r1, #1
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L1701:
|
|
.align 2
|
|
.L1700:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FlashProgPage, .-FlashProgPage
|
|
.align 2
|
|
.global FlashSavePhyInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashSavePhyInfo, %function
|
|
FlashSavePhyInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
ldr r4, .L1716
|
|
ldr r5, .L1716+4
|
|
ldr r3, [r4, #1696]
|
|
ldrb r0, [r4, #1722] @ zero_extendqisi2
|
|
ldr r8, .L1716+8
|
|
str r3, [r4, #1708]
|
|
bl FlashBchSel
|
|
mov r2, #2048
|
|
mov r1, #0
|
|
ldr r0, [r4, #1696]
|
|
bl ftl_memset
|
|
ldr r3, [r4, #1708]
|
|
mov r2, #32
|
|
ldr r1, .L1716+12
|
|
str r8, [r3]
|
|
ldr r0, [r4, #1708]
|
|
ldrb r3, [r5, #2234] @ zero_extendqisi2
|
|
add r0, r0, #16
|
|
strh r3, [r0, #-4] @ movhi
|
|
ldrb r3, [r5, #37] @ zero_extendqisi2
|
|
strh r3, [r0, #-2] @ movhi
|
|
ldrb r3, [r5, #2256] @ zero_extendqisi2
|
|
str r3, [r0, #1060]
|
|
bl ftl_memcpy
|
|
ldr r0, [r4, #1708]
|
|
mov r2, #8
|
|
ldr r1, .L1716+16
|
|
add r0, r0, #80
|
|
bl ftl_memcpy
|
|
ldr r0, [r4, #1708]
|
|
mov r2, #32
|
|
ldr r1, .L1716+20
|
|
add r0, r0, #96
|
|
bl ftl_memcpy
|
|
ldr r0, [r4, #1708]
|
|
mov r2, #32
|
|
ldr r1, .L1716+24
|
|
add r0, r0, #160
|
|
bl ftl_memcpy
|
|
ldr r0, [r4, #1708]
|
|
mov r2, #32
|
|
add r1, r5, #52
|
|
add r0, r0, #192
|
|
bl ftl_memcpy
|
|
ldr r0, [r4, #1708]
|
|
mov r2, #852
|
|
add r1, r5, #1216
|
|
add r0, r0, #224
|
|
bl ftl_memcpy
|
|
ldr r6, [r4, #1708]
|
|
movw r1, #2036
|
|
add r0, r6, #12
|
|
bl js_hash
|
|
movw r3, #1592
|
|
str r0, [r6, #8]
|
|
str r3, [r6, #4]
|
|
mov r6, #0
|
|
ldr r3, [r4, #1724]
|
|
mov r7, r6
|
|
mov r0, #0
|
|
str r3, [r4, #1708]
|
|
bl flash_enter_slc_mode
|
|
.L1708:
|
|
ldr r1, [r5, #40]
|
|
mov r2, #0
|
|
mov r0, r2
|
|
mul r1, r1, r7
|
|
bl FlashEraseBlock
|
|
ldrb r9, [r5, #152] @ zero_extendqisi2
|
|
cmp r9, #0
|
|
beq .L1703
|
|
mov r9, #0
|
|
.L1704:
|
|
ldr r1, [r5, #40]
|
|
mov r3, #0
|
|
ldr r2, [r4, #1696]
|
|
mov r0, r3
|
|
mla r1, r1, r7, r9
|
|
add r9, r9, #1
|
|
bl FlashProgPage
|
|
cmp r9, #10
|
|
bne .L1704
|
|
.L1705:
|
|
ldr r1, [r5, #40]
|
|
mov r3, #0
|
|
ldr r2, [r4, #1724]
|
|
mov r0, r3
|
|
add r10, r7, #1
|
|
mul r1, r1, r7
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
beq .L1706
|
|
ldr r9, [r4, #1708]
|
|
ldr r3, [r9]
|
|
cmp r3, r8
|
|
bne .L1706
|
|
movw r1, #2036
|
|
add r0, r9, #12
|
|
bl js_hash
|
|
ldr r3, [r9, #8]
|
|
cmp r3, r0
|
|
bne .L1706
|
|
ldr r3, [r5, #40]
|
|
cmp r6, #1
|
|
str r10, [r4, #1716]
|
|
mul r7, r7, r3
|
|
str r7, [r4, #1712]
|
|
beq .L1709
|
|
mov r6, #1
|
|
.L1706:
|
|
cmp r10, #4
|
|
mov r7, r10
|
|
bne .L1708
|
|
.L1707:
|
|
mov r0, #0
|
|
bl flash_exit_slc_mode
|
|
clz r0, r6
|
|
lsr r0, r0, #5
|
|
rsb r0, r0, #0
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L1703:
|
|
ldr r1, [r5, #40]
|
|
mov r3, r9
|
|
ldr r2, [r4, #1696]
|
|
mov r0, r9
|
|
mul r1, r1, r7
|
|
bl FlashProgPage
|
|
ldr r1, [r5, #40]
|
|
mov r3, r9
|
|
ldr r2, [r4, #1696]
|
|
mov r0, r9
|
|
mul r1, r1, r7
|
|
add r1, r1, #1
|
|
bl FlashProgPage
|
|
b .L1705
|
|
.L1709:
|
|
mov r6, #2
|
|
b .L1707
|
|
.L1717:
|
|
.align 2
|
|
.L1716:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word 1312902724
|
|
.word .LANCHOR0+2072
|
|
.word .LANCHOR0+2236
|
|
.word .LANCHOR0+1180
|
|
.word .LANCHOR1+468
|
|
.fnend
|
|
.size FlashSavePhyInfo, .-FlashSavePhyInfo
|
|
.align 2
|
|
.global FlashReadIdbDataRaw
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadIdbDataRaw, %function
|
|
FlashReadIdbDataRaw:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r3, #60
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
ldr r4, .L1737
|
|
mov r10, r0
|
|
strb r3, [sp, #12]
|
|
mov r3, #40
|
|
strb r3, [sp, #13]
|
|
mov r3, #24
|
|
strb r3, [sp, #14]
|
|
mov r3, #16
|
|
strb r3, [sp, #15]
|
|
ldrb r3, [r4, #2316] @ zero_extendqisi2
|
|
str r3, [sp, #4]
|
|
ldr r3, [r4, #2252]
|
|
cmp r3, #0
|
|
beq .L1719
|
|
mov r0, #0
|
|
bl flash_enter_slc_mode
|
|
.L1719:
|
|
ldr r6, .L1737+4
|
|
mvn r8, #0
|
|
mov r5, #2
|
|
mov r2, #2048
|
|
mov r1, #0
|
|
mov r0, r10
|
|
bl ftl_memset
|
|
.L1720:
|
|
ldrb r3, [r4, #37] @ zero_extendqisi2
|
|
cmp r5, r3
|
|
bcc .L1725
|
|
.L1724:
|
|
ldr r0, [sp, #4]
|
|
bl FlashBchSel
|
|
ldr r3, [r4, #2252]
|
|
cmp r3, #0
|
|
beq .L1718
|
|
mov r0, #0
|
|
bl flash_exit_slc_mode
|
|
.L1718:
|
|
mov r0, r8
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1725:
|
|
mov r7, #0
|
|
add fp, sp, #12
|
|
.L1722:
|
|
ldrb r9, [r7, fp] @ zero_extendqisi2
|
|
mov r0, r9
|
|
bl FlashBchSel
|
|
ldr r1, [r4, #40]
|
|
mov r3, #0
|
|
ldr r2, [r6, #1696]
|
|
mov r0, r3
|
|
mul r1, r1, r5
|
|
bl FlashReadRawPage
|
|
cmn r0, #1
|
|
bne .L1721
|
|
add r7, r7, #1
|
|
cmp r7, #4
|
|
bne .L1722
|
|
.L1723:
|
|
add r5, r5, #1
|
|
b .L1720
|
|
.L1728:
|
|
mov r8, #0
|
|
b .L1724
|
|
.L1721:
|
|
ldr r3, [r6, #1696]
|
|
ldr r2, .L1737+8
|
|
ldr r3, [r3]
|
|
cmp r3, r2
|
|
bne .L1723
|
|
mov r1, r9
|
|
ldr r0, .L1737+12
|
|
bl printk
|
|
mov r2, #2048
|
|
ldr r1, [r6, #1696]
|
|
mov r0, r10
|
|
bl ftl_memcpy
|
|
ldr r3, [r6, #1696]
|
|
ldr r3, [r3, #512]
|
|
strb r3, [r4, #37]
|
|
ldr r3, [r6, #1716]
|
|
cmp r5, r3
|
|
bcs .L1728
|
|
str r5, [r6, #1716]
|
|
mov r8, #0
|
|
bl FlashSavePhyInfo
|
|
b .L1723
|
|
.L1738:
|
|
.align 2
|
|
.L1737:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word -52655045
|
|
.word .LC96
|
|
.fnend
|
|
.size FlashReadIdbDataRaw, .-FlashReadIdbDataRaw
|
|
.align 2
|
|
.global FlashInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashInit, %function
|
|
FlashInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r7, r0
|
|
ldr r5, .L1837
|
|
.pad #28
|
|
sub sp, sp, #28
|
|
mov r0, #32768
|
|
mov r6, #0
|
|
bl ftl_malloc
|
|
str r0, [r5, #1696]
|
|
mov r0, #32768
|
|
bl ftl_malloc
|
|
str r0, [r5, #1724]
|
|
mov r0, #4096
|
|
bl ftl_dma32_malloc
|
|
str r0, [r5, #1728]
|
|
mov r0, #32768
|
|
bl ftl_malloc
|
|
ldr r4, .L1837+4
|
|
mov r8, r6
|
|
str r0, [r5, #1732]
|
|
mov r0, #4096
|
|
bl ftl_dma32_malloc
|
|
ldr fp, .L1837+8
|
|
mov r3, #50
|
|
str r0, [r5, #1736]
|
|
mov r0, r7
|
|
ldr r7, .L1837+12
|
|
strb r3, [r4, #37]
|
|
strb r3, [r5, #1720]
|
|
mov r3, #128
|
|
str r3, [r4, #40]
|
|
mov r3, #60
|
|
str r6, [r5, #1716]
|
|
strb r6, [r4, #2256]
|
|
str r6, [r5, #1700]
|
|
strb r6, [r4, #36]
|
|
strb r6, [r5, #1740]
|
|
strb r3, [r5, #1722]
|
|
bl NandcInit
|
|
.L1745:
|
|
add r2, r4, r6, lsl #3
|
|
uxtb r9, r6
|
|
ldr r10, [r4, r6, lsl #3]
|
|
ldrb r2, [r2, #4] @ zero_extendqisi2
|
|
mov r0, r9
|
|
str r2, [sp, #20]
|
|
bl FlashReset
|
|
mov r0, r9
|
|
bl NandcFlashCs
|
|
ldr r2, [sp, #20]
|
|
mov r3, #144
|
|
mov r0, #200
|
|
add r10, r10, r2, lsl #8
|
|
str r3, [r10, #2056]
|
|
str r8, [r10, #2052]
|
|
bl ndelay
|
|
ldr r2, [r10, #2048]
|
|
uxtb r2, r2
|
|
strb r2, [r7]
|
|
cmp r2, #44
|
|
ldr r1, [r10, #2048]
|
|
strb r1, [r7, #1]
|
|
ldr r1, [r10, #2048]
|
|
strb r1, [r7, #2]
|
|
ldr r1, [r10, #2048]
|
|
strb r1, [r7, #3]
|
|
ldr r1, [r10, #2048]
|
|
strb r1, [r7, #4]
|
|
ldr r1, [r10, #2048]
|
|
strb r1, [r7, #5]
|
|
bne .L1740
|
|
mov r2, #239
|
|
mov r0, #200
|
|
str r2, [r10, #2056]
|
|
mov r2, #1
|
|
str r2, [r10, #2052]
|
|
bl ndelay
|
|
mov r2, #4
|
|
str r2, [r10, #2048]
|
|
str r8, [r10, #2048]
|
|
str r8, [r10, #2048]
|
|
str r8, [r10, #2048]
|
|
.L1740:
|
|
mov r0, r9
|
|
bl NandcFlashDeCs
|
|
ldrb r2, [r7] @ zero_extendqisi2
|
|
sub r3, r2, #1
|
|
uxtb r3, r3
|
|
cmp r3, #253
|
|
bhi .L1741
|
|
ldrb r1, [r7, #5] @ zero_extendqisi2
|
|
mov r0, fp
|
|
ldrb r3, [r7, #1] @ zero_extendqisi2
|
|
str r1, [sp, #12]
|
|
ldrb r1, [r7, #4] @ zero_extendqisi2
|
|
str r1, [sp, #8]
|
|
ldrb r1, [r7, #3] @ zero_extendqisi2
|
|
str r1, [sp, #4]
|
|
ldrb r1, [r7, #2] @ zero_extendqisi2
|
|
str r1, [sp]
|
|
add r1, r6, #1
|
|
bl printk
|
|
.L1741:
|
|
cmp r6, #0
|
|
bne .L1742
|
|
ldrb r3, [r4, #2072] @ zero_extendqisi2
|
|
sub r3, r3, #1
|
|
uxtb r3, r3
|
|
cmp r3, #253
|
|
bhi .L1792
|
|
ldrb r3, [r4, #2073] @ zero_extendqisi2
|
|
cmp r3, #255
|
|
beq .L1792
|
|
.L1742:
|
|
ldrb r3, [r7] @ zero_extendqisi2
|
|
add r6, r6, #1
|
|
add r7, r7, #8
|
|
cmp r3, #181
|
|
moveq r3, #44
|
|
strbeq r3, [r7, #-8]
|
|
cmp r6, #4
|
|
bne .L1745
|
|
ldrb r3, [r4, #2072] @ zero_extendqisi2
|
|
cmp r3, #173
|
|
beq .L1746
|
|
ldr r0, [r4, #2260]
|
|
bl NandcSetDdrMode
|
|
.L1746:
|
|
mov r2, #852
|
|
mov r1, #0
|
|
ldr r0, .L1837+16
|
|
bl ftl_memset
|
|
ldr r6, .L1837+20
|
|
ldr r2, .L1837+24
|
|
ldr r0, [r4, #2268]
|
|
add r3, r2, #468
|
|
cmp r0, r6
|
|
str r3, [r4, #48]
|
|
mov r3, #0
|
|
strb r3, [r4, #44]
|
|
bne .L1747
|
|
ldrb r3, [r2, #487] @ zero_extendqisi2
|
|
cmp r3, #50
|
|
movne r3, #1
|
|
strne r3, [r4, #2252]
|
|
.L1747:
|
|
ldrb r3, [r4, #2073] @ zero_extendqisi2
|
|
cmp r3, #241
|
|
cmpne r3, #161
|
|
and ip, r3, #253
|
|
moveq r1, #1
|
|
movne r1, #0
|
|
cmp r3, #218
|
|
orreq r1, r1, #1
|
|
cmp ip, #209
|
|
orreq r1, r1, #1
|
|
cmp r1, #0
|
|
bne .L1748
|
|
cmp r3, #220
|
|
bne .L1749
|
|
ldrb r1, [r4, #2075] @ zero_extendqisi2
|
|
cmp r1, #149
|
|
bne .L1749
|
|
.L1748:
|
|
mov ip, #16
|
|
mov r1, #1
|
|
strb ip, [r4, #37]
|
|
strb ip, [r5, #1722]
|
|
ldrb ip, [r4, #2072] @ zero_extendqisi2
|
|
strb r1, [r4, #36]
|
|
strb r3, [r2, #3414]
|
|
cmp ip, #152
|
|
strb ip, [r2, #3413]
|
|
bne .L1751
|
|
ldrb ip, [r4, #2076] @ zero_extendqisi2
|
|
lsrs ip, ip, #7
|
|
moveq r1, #24
|
|
strbne r1, [r5, #1740]
|
|
strbeq r1, [r5, #1722]
|
|
.L1751:
|
|
movw r1, #2049
|
|
cmp r0, r1
|
|
cmpne r0, r6
|
|
moveq r1, #16
|
|
strbeq r1, [r5, #1722]
|
|
cmp r3, #218
|
|
bne .L1755
|
|
ldr r3, .L1837+28
|
|
mov r1, #2048
|
|
strh r1, [r3, #14] @ movhi
|
|
mvn r3, #37
|
|
.L1831:
|
|
strb r3, [r2, #3414]
|
|
.L1756:
|
|
mov r2, #32
|
|
ldr r1, .L1837+32
|
|
ldr r0, .L1837+36
|
|
bl ftl_memcpy
|
|
ldr r1, .L1837+28
|
|
mov r2, #32
|
|
sub r0, r1, #2944
|
|
bl ftl_memcpy
|
|
.L1749:
|
|
ldrb r3, [r4, #36] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L1759
|
|
bl FlashLoadPhyInfoInRam
|
|
cmp r0, #0
|
|
bne .L1761
|
|
ldr r3, [r4, #48]
|
|
ldrh r3, [r3, #16]
|
|
lsr r3, r3, #8
|
|
tst r3, #1
|
|
and r0, r3, #7
|
|
strb r0, [r4, #2233]
|
|
bne .L1761
|
|
mov r3, #1
|
|
strb r3, [r4, #2256]
|
|
bl FlashSetInterfaceMode
|
|
ldrb r0, [r4, #2233] @ zero_extendqisi2
|
|
bl NandcSetMode
|
|
.L1761:
|
|
ldr r3, [r4, #48]
|
|
ldrb r3, [r3, #26] @ zero_extendqisi2
|
|
strb r3, [r4, #152]
|
|
bl FlashLoadPhyInfo
|
|
cmp r0, #0
|
|
beq .L1759
|
|
ldr r3, [r4, #2260]
|
|
cmp r3, #0
|
|
beq .L1764
|
|
mov r0, #1
|
|
bl FlashSetInterfaceMode
|
|
mov r0, #1
|
|
.L1832:
|
|
bl NandcSetMode
|
|
bl FlashLoadPhyInfo
|
|
cmp r0, #0
|
|
beq .L1759
|
|
mov r0, #1
|
|
bl FlashSetInterfaceMode
|
|
mov r0, #1
|
|
bl NandcSetMode
|
|
ldr r3, [r4, #48]
|
|
ldr r0, .L1837+40
|
|
ldrh r1, [r3, #14]
|
|
bl printk
|
|
bl FlashLoadPhyInfoInRam
|
|
cmn r0, #1
|
|
beq .L1739
|
|
bl FlashDieInfoInit
|
|
ldr r3, [r4, #48]
|
|
ldrb r0, [r3, #19] @ zero_extendqisi2
|
|
bl FlashGetReadRetryDefault
|
|
ldr r3, .L1837+44
|
|
ldr r2, [r4, #48]
|
|
ldrh r3, [r3, #-2]
|
|
ldrb r1, [r2, #9] @ zero_extendqisi2
|
|
add r3, r3, #4080
|
|
add r3, r3, #15
|
|
cmp r1, r3, asr #12
|
|
ldrh r3, [r2, #14]
|
|
blt .L1766
|
|
add r0, r3, #255
|
|
cmp r1, r0, asr #8
|
|
bge .L1767
|
|
.L1766:
|
|
bic r3, r3, #255
|
|
strh r3, [r2, #14] @ movhi
|
|
.L1767:
|
|
ldrb r3, [r4, #2233] @ zero_extendqisi2
|
|
tst r3, #6
|
|
beq .L1768
|
|
bl FlashSavePhyInfo
|
|
mov r0, #0
|
|
bl flash_enter_slc_mode
|
|
ldr r1, [r5, #1712]
|
|
mov r0, #0
|
|
bl FlashDdrParaScan
|
|
mov r0, #0
|
|
bl flash_exit_slc_mode
|
|
.L1768:
|
|
bl FlashSavePhyInfo
|
|
.L1759:
|
|
ldr r7, [r4, #48]
|
|
ldrb r3, [r7, #26] @ zero_extendqisi2
|
|
ldrb r1, [r7, #12] @ zero_extendqisi2
|
|
ldrh r0, [r7, #10]
|
|
strb r3, [r4, #152]
|
|
ldrh r3, [r7, #16]
|
|
ubfx r2, r3, #7, #1
|
|
strb r2, [r4, #44]
|
|
ubfx r2, r3, #3, #1
|
|
strb r2, [r5, #1741]
|
|
ubfx r2, r3, #4, #1
|
|
ubfx r3, r3, #8, #3
|
|
strb r2, [r4, #2244]
|
|
strb r3, [r4, #2233]
|
|
mov r3, #0
|
|
str r3, [r5, #1704]
|
|
bl __aeabi_idiv
|
|
mov r1, r0
|
|
ldrb r0, [r7, #18] @ zero_extendqisi2
|
|
bl BuildFlashLsbPageTable
|
|
bl FlashDieInfoInit
|
|
ldr r3, [r4, #48]
|
|
ldrh r2, [r3, #16]
|
|
tst r2, #64
|
|
beq .L1770
|
|
ldrb r0, [r3, #19] @ zero_extendqisi2
|
|
ldrb r3, [r4, #1217] @ zero_extendqisi2
|
|
strb r0, [r4, #84]
|
|
strb r3, [r4, #85]
|
|
ldrb r3, [r4, #1218] @ zero_extendqisi2
|
|
strb r3, [r5, #1721]
|
|
sub r3, r0, #1
|
|
cmp r3, #7
|
|
bhi .L1771
|
|
ldr r3, .L1837+48
|
|
str r3, [r5, #1704]
|
|
sub r3, r0, #5
|
|
cmp r0, #8
|
|
cmpne r3, #1
|
|
movls r3, #1
|
|
strls r3, [r4, #2308]
|
|
cmp r0, #7
|
|
ldr r3, .L1837+16
|
|
beq .L1793
|
|
cmp r0, #8
|
|
addne r3, r3, #20
|
|
bne .L1773
|
|
.L1793:
|
|
add r3, r3, #28
|
|
.L1773:
|
|
sub r1, r3, #1
|
|
mov r2, #0
|
|
add r3, r3, #31
|
|
.L1775:
|
|
ldrsb ip, [r1, #1]!
|
|
cmp ip, #0
|
|
addeq r2, r2, #1
|
|
cmp r3, r1
|
|
bne .L1775
|
|
cmp r2, #27
|
|
bls .L1770
|
|
bl FlashGetReadRetryDefault
|
|
bl FlashSavePhyInfo
|
|
.L1770:
|
|
ldr r3, [r4, #2268]
|
|
cmp r3, r6
|
|
bne .L1785
|
|
ldrb r2, [r4, #152] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
ldrne r2, [r4, #48]
|
|
movne r1, #0
|
|
strbne r1, [r2, #18]
|
|
.L1785:
|
|
ldrb r2, [r4, #2072] @ zero_extendqisi2
|
|
cmp r2, #44
|
|
bne .L1786
|
|
ldrb r2, [r4, #2256] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
beq .L1786
|
|
cmp r3, r6
|
|
bne .L1787
|
|
ldrb r3, [r4, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L1786
|
|
.L1787:
|
|
mov r3, #0
|
|
mov r0, #1
|
|
strb r3, [r4, #2256]
|
|
bl FlashSetInterfaceMode
|
|
mov r0, #1
|
|
bl NandcSetMode
|
|
.L1786:
|
|
ldrb r3, [r4, #2233] @ zero_extendqisi2
|
|
tst r3, #6
|
|
beq .L1788
|
|
ldrb r2, [r4, #2256] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
bne .L1789
|
|
tst r3, #1
|
|
bne .L1788
|
|
.L1789:
|
|
mov r0, #0
|
|
bl flash_enter_slc_mode
|
|
ldr r1, [r5, #1712]
|
|
mov r0, #0
|
|
bl FlashDdrParaScan
|
|
mov r0, #0
|
|
bl flash_exit_slc_mode
|
|
.L1788:
|
|
ldr r3, [r4, #48]
|
|
mov r6, #16
|
|
ldrb r0, [r3, #20] @ zero_extendqisi2
|
|
bl FlashBchSel
|
|
ldr r0, .L1837+52
|
|
bl FlashReadIdbDataRaw
|
|
ldr r0, .L1837+56
|
|
strb r6, [r4, #37]
|
|
bl FlashTimingCfg
|
|
ldr r5, [r4, #48]
|
|
ldrb r2, [r4, #2073] @ zero_extendqisi2
|
|
ldrb r3, [r5, #12] @ zero_extendqisi2
|
|
ldrh r7, [r5, #14]
|
|
strh r3, [r4, #132] @ movhi
|
|
ldrb r3, [r5, #7] @ zero_extendqisi2
|
|
str r3, [r4, #128]
|
|
lsl r3, r2, r6
|
|
orr r3, r3, r2, lsl #8
|
|
ldrb r2, [r4, #2072] @ zero_extendqisi2
|
|
orr r3, r3, r2
|
|
ldrb r2, [r4, #2075] @ zero_extendqisi2
|
|
orr r3, r3, r2, lsl #24
|
|
str r3, [r4, #124]
|
|
ldrb r3, [r4, #2234] @ zero_extendqisi2
|
|
strh r3, [r4, #134] @ movhi
|
|
ldrb r3, [r5, #13] @ zero_extendqisi2
|
|
strh r7, [r4, #138] @ movhi
|
|
strh r3, [r4, #136] @ movhi
|
|
ldrh r3, [r5, #10]
|
|
strh r3, [r4, #140] @ movhi
|
|
ldrb r1, [r5, #12] @ zero_extendqisi2
|
|
ldrh r0, [r5, #10]
|
|
bl __aeabi_idiv
|
|
strh r0, [r4, #142] @ movhi
|
|
ldrb r2, [r5, #9] @ zero_extendqisi2
|
|
strh r2, [r4, #144] @ movhi
|
|
ldrh r1, [r5, #10]
|
|
ldrb r3, [r5, #9] @ zero_extendqisi2
|
|
smulbb r3, r3, r1
|
|
mov r1, #512
|
|
strh r1, [r4, #148] @ movhi
|
|
ldrb r1, [r4, #37] @ zero_extendqisi2
|
|
uxth r3, r3
|
|
strh r1, [r4, #150] @ movhi
|
|
ldrb r1, [r4, #36] @ zero_extendqisi2
|
|
strh r3, [r4, #146] @ movhi
|
|
cmp r1, #1
|
|
bne .L1790
|
|
lsl r3, r3, #1
|
|
lsr r1, r7, #1
|
|
lsl r2, r2, #1
|
|
strb r6, [r4, #37]
|
|
strh r3, [r4, #146] @ movhi
|
|
mov r3, #8
|
|
strh r1, [r4, #138] @ movhi
|
|
strh r2, [r4, #144] @ movhi
|
|
strh r3, [r4, #150] @ movhi
|
|
.L1790:
|
|
ldrb r0, [r5, #20] @ zero_extendqisi2
|
|
bl FlashBchSel
|
|
bl ftl_flash_suspend
|
|
mov r0, #0
|
|
.L1739:
|
|
add sp, sp, #28
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1755:
|
|
cmp r3, #220
|
|
ldreq r3, .L1837+28
|
|
moveq r1, #4096
|
|
strheq r1, [r3, #14] @ movhi
|
|
mvneq r3, #35
|
|
beq .L1831
|
|
.L1757:
|
|
cmp r3, #211
|
|
ldreq r3, .L1837+28
|
|
moveq r1, #4096
|
|
strheq r1, [r3, #14] @ movhi
|
|
moveq r3, #2
|
|
strbeq r3, [r2, #3425]
|
|
b .L1756
|
|
.L1764:
|
|
ldrb r0, [r4, #2233] @ zero_extendqisi2
|
|
bl FlashSetInterfaceMode
|
|
ldrb r0, [r4, #2233] @ zero_extendqisi2
|
|
b .L1832
|
|
.L1771:
|
|
sub r3, r0, #17
|
|
cmp r3, #2
|
|
bhi .L1777
|
|
ldr r3, .L1837+60
|
|
cmp r0, #19
|
|
str r3, [r5, #1704]
|
|
moveq r3, #15
|
|
beq .L1834
|
|
.L1836:
|
|
mov r3, #7
|
|
.L1834:
|
|
strb r3, [r5, #1721]
|
|
b .L1770
|
|
.L1777:
|
|
sub r3, r0, #65
|
|
cmp r0, #33
|
|
cmpne r3, #1
|
|
ldrls r3, .L1837+64
|
|
strls r3, [r5, #1704]
|
|
movls r3, #4
|
|
strbls r3, [r4, #85]
|
|
bls .L1836
|
|
.L1779:
|
|
sub r3, r0, #67
|
|
sub r2, r0, #34
|
|
uxtb r3, r3
|
|
cmp r3, #1
|
|
cmphi r2, #1
|
|
movls r2, #1
|
|
movhi r2, #0
|
|
bhi .L1780
|
|
ldr r2, .L1837+64
|
|
cmp r0, #68
|
|
cmpne r0, #35
|
|
str r2, [r5, #1704]
|
|
movne r2, #7
|
|
moveq r2, #17
|
|
cmp r3, #1
|
|
movls r3, #4
|
|
movhi r3, #5
|
|
strb r2, [r5, #1721]
|
|
strb r3, [r4, #85]
|
|
b .L1770
|
|
.L1780:
|
|
cmp r0, #49
|
|
ldreq r3, .L1837+68
|
|
streq r3, [r5, #1704]
|
|
beq .L1770
|
|
cmp r0, #50
|
|
ldreq r3, .L1837+72
|
|
streq r2, [r4, #2252]
|
|
streq r3, [r5, #1704]
|
|
b .L1770
|
|
.L1792:
|
|
mvn r0, #1
|
|
b .L1739
|
|
.L1838:
|
|
.align 2
|
|
.L1837:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LC97
|
|
.word .LANCHOR0+2072
|
|
.word .LANCHOR0+1216
|
|
.word 1446522928
|
|
.word .LANCHOR1
|
|
.word .LANCHOR1+3412
|
|
.word .LANCHOR1+3288
|
|
.word .LANCHOR0+52
|
|
.word .LC98
|
|
.word .LANCHOR2-568
|
|
.word HynixReadRetrial
|
|
.word .LANCHOR2-364
|
|
.word 150000
|
|
.word MicronReadRetrial
|
|
.word ToshibaReadRetrial
|
|
.word SamsungReadRetrial
|
|
.word samsung_read_retrial
|
|
.fnend
|
|
.size FlashInit, .-FlashInit
|
|
.align 2
|
|
.global FlashPageProgMsbFFData
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashPageProgMsbFFData, %function
|
|
FlashPageProgMsbFFData:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r8, r0
|
|
ldr r5, .L1855
|
|
mov r9, r1
|
|
mov r4, r2
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L1840
|
|
ldr r3, [r5, #2252]
|
|
cmp r3, #0
|
|
popne {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L1840:
|
|
ldr r3, [r5, #48]
|
|
ldrb r3, [r3, #19] @ zero_extendqisi2
|
|
sub r2, r3, #5
|
|
cmp r3, #50
|
|
cmpne r2, #2
|
|
bls .L1841
|
|
sub r2, r3, #19
|
|
and r2, r2, #239
|
|
cmp r2, #0
|
|
cmpne r3, #68
|
|
popne {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L1841:
|
|
ldr r6, .L1855+4
|
|
sub r7, r6, #2608
|
|
sub r7, r7, #12
|
|
.L1843:
|
|
ldr r3, [r5, #48]
|
|
ldrh r3, [r3, #10]
|
|
cmp r3, r4
|
|
bhi .L1844
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L1844:
|
|
lsl r3, r4, #1
|
|
ldrh r2, [r7, r3]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
popne {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
mov r2, #32768
|
|
mov r1, #255
|
|
ldr r0, [r6, #1724]
|
|
bl ftl_memset
|
|
ldr r3, [r6, #1724]
|
|
add r1, r4, r9
|
|
mov r0, r8
|
|
add r4, r4, #1
|
|
uxth r4, r4
|
|
mov r2, r3
|
|
bl FlashProgPage
|
|
b .L1843
|
|
.L1856:
|
|
.align 2
|
|
.L1855:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size FlashPageProgMsbFFData, .-FlashPageProgMsbFFData
|
|
.align 2
|
|
.global FlashReadSlc2KPages
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadSlc2KPages, %function
|
|
FlashReadSlc2KPages:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L1906
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r4, r0
|
|
ldr r8, .L1906+4
|
|
mov r9, #0
|
|
.pad #36
|
|
sub sp, sp, #36
|
|
ldr fp, .L1906+8
|
|
ldrb r3, [r3, #477] @ zero_extendqisi2
|
|
str r1, [sp, #16]
|
|
str r2, [sp, #20]
|
|
str r3, [sp, #12]
|
|
.L1858:
|
|
ldr r3, [sp, #16]
|
|
cmp r9, r3
|
|
bne .L1878
|
|
mov r0, #0
|
|
add sp, sp, #36
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1878:
|
|
ldr r3, [sp, #16]
|
|
add r2, sp, #28
|
|
ldr r1, [sp, #20]
|
|
mov r0, r4
|
|
sub r3, r3, r9
|
|
uxtb r3, r3
|
|
str r3, [sp]
|
|
add r3, sp, #24
|
|
bl LogAddr2PhyAddr
|
|
ldrb r2, [r8, #2234] @ zero_extendqisi2
|
|
ldr r3, [sp, #24]
|
|
cmp r2, r3
|
|
mvnls r3, #0
|
|
strls r3, [r4]
|
|
bls .L1860
|
|
add r3, r8, r3
|
|
mov r7, #0
|
|
ldrb r6, [r3, #2236] @ zero_extendqisi2
|
|
mov r0, r6
|
|
bl NandcWaitFlashReady
|
|
mov r0, r6
|
|
bl NandcFlashCs
|
|
.L1861:
|
|
ldr r1, [sp, #28]
|
|
mov r0, r6
|
|
bl FlashReadCmd
|
|
mov r0, r6
|
|
bl NandcWaitFlashReady
|
|
ldr r3, [r4, #12]
|
|
mov r1, #0
|
|
ldr r2, [sp, #12]
|
|
mov r0, r6
|
|
str r3, [sp]
|
|
ldr r3, [r4, #8]
|
|
bl NandcXferData
|
|
ldrb r3, [fp, #1740] @ zero_extendqisi2
|
|
mov r5, r0
|
|
cmp r3, #0
|
|
beq .L1862
|
|
mov r0, r6
|
|
bl flash_read_ecc
|
|
cmp r0, #5
|
|
movhi r5, #256
|
|
.L1862:
|
|
cmp r7, #9
|
|
cmnls r5, #1
|
|
moveq r3, #1
|
|
movne r3, #0
|
|
addeq r7, r7, #1
|
|
beq .L1861
|
|
.L1863:
|
|
cmp r7, #0
|
|
mov r7, r3
|
|
movne r5, #256
|
|
.L1865:
|
|
ldr r3, [r8, #40]
|
|
mov r0, r6
|
|
ldr r1, [sp, #28]
|
|
add r1, r1, r3
|
|
bl FlashReadCmd
|
|
mov r0, r6
|
|
bl NandcWaitFlashReady
|
|
ldr r3, [r4, #8]
|
|
mov r1, #0
|
|
ldr r2, [r4, #12]
|
|
mov r0, r6
|
|
cmp r3, #0
|
|
addne r3, r3, #2048
|
|
cmp r2, #0
|
|
addne r2, r2, #8
|
|
str r2, [sp]
|
|
ldr r2, [sp, #12]
|
|
bl NandcXferData
|
|
ldrb r2, [fp, #1740] @ zero_extendqisi2
|
|
mov r10, r0
|
|
cmp r2, #0
|
|
beq .L1868
|
|
mov r0, r6
|
|
bl flash_read_ecc
|
|
cmp r0, #5
|
|
movhi r10, #256
|
|
.L1868:
|
|
cmp r7, #9
|
|
cmnls r10, #1
|
|
addeq r7, r7, #1
|
|
beq .L1865
|
|
.L1869:
|
|
cmp r7, #0
|
|
mov r0, r6
|
|
movne r10, #256
|
|
bl NandcFlashDeCs
|
|
ldrb r3, [r8, #2316] @ zero_extendqisi2
|
|
cmp r5, r10
|
|
movcc r5, r10
|
|
add r3, r3, r3, lsl #1
|
|
cmp r5, r3, asr #2
|
|
bls .L1871
|
|
cmn r5, #1
|
|
movne r5, #256
|
|
.L1871:
|
|
cmp r5, #256
|
|
cmnne r5, #1
|
|
movne r3, #0
|
|
streq r5, [r4]
|
|
strne r3, [r4]
|
|
ldr r3, [r4, #12]
|
|
cmp r3, #0
|
|
beq .L1874
|
|
ldr r2, [r3, #12]
|
|
cmn r2, #1
|
|
bne .L1874
|
|
ldr r2, [r3, #8]
|
|
cmn r2, #1
|
|
bne .L1874
|
|
ldr r3, [r3]
|
|
cmn r3, #1
|
|
strne r2, [r4]
|
|
.L1874:
|
|
ldr r3, [r4]
|
|
cmn r3, #1
|
|
bne .L1860
|
|
ldr r1, [r4, #4]
|
|
ldrb r2, [r8, #2316] @ zero_extendqisi2
|
|
ldr r0, .L1906+12
|
|
bl printk
|
|
ldr r1, [r4, #8]
|
|
cmp r1, #0
|
|
beq .L1876
|
|
mov r3, #8
|
|
mov r2, #4
|
|
ldr r0, .L1906+16
|
|
bl rknand_print_hex
|
|
.L1876:
|
|
ldr r1, [r4, #12]
|
|
cmp r1, #0
|
|
beq .L1860
|
|
mov r3, #4
|
|
ldr r0, .L1906+20
|
|
mov r2, r3
|
|
bl rknand_print_hex
|
|
.L1860:
|
|
add r9, r9, #1
|
|
add r4, r4, #36
|
|
b .L1858
|
|
.L1907:
|
|
.align 2
|
|
.L1906:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LC99
|
|
.word .LC100
|
|
.word .LC101
|
|
.fnend
|
|
.size FlashReadSlc2KPages, .-FlashReadSlc2KPages
|
|
.align 2
|
|
.global FlashReadPages
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadPages, %function
|
|
FlashReadPages:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 40
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #52
|
|
sub sp, sp, #52
|
|
ldr r4, .L1979
|
|
str r1, [sp, #24]
|
|
ldrb r9, [r4, #36] @ zero_extendqisi2
|
|
str r2, [sp, #28]
|
|
cmp r9, #0
|
|
bne .L1909
|
|
ldr r3, .L1979+4
|
|
mov fp, r0
|
|
ldr r10, .L1979+8
|
|
str r9, [sp, #8]
|
|
ldrb r3, [r3, #477] @ zero_extendqisi2
|
|
str r3, [sp, #20]
|
|
ldrb r3, [r4, #44] @ zero_extendqisi2
|
|
str r3, [sp, #36]
|
|
.L1910:
|
|
ldr r3, [sp, #8]
|
|
ldr r2, [sp, #24]
|
|
cmp r3, r2
|
|
bcc .L1943
|
|
mov r0, #0
|
|
b .L1908
|
|
.L1909:
|
|
bl FlashReadSlc2KPages
|
|
.L1908:
|
|
add sp, sp, #52
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1943:
|
|
ldr r2, [sp, #8]
|
|
mov r3, #36
|
|
ldr r1, [sp, #28]
|
|
mul r3, r3, r2
|
|
add r8, fp, r3
|
|
str r3, [sp, #12]
|
|
ldr r3, [sp, #24]
|
|
mov r0, r8
|
|
ldr r7, [r8, #4]
|
|
sub r3, r3, r2
|
|
add r2, sp, #44
|
|
uxtb r3, r3
|
|
str r3, [sp]
|
|
add r3, sp, #40
|
|
bl LogAddr2PhyAddr
|
|
ldrb r2, [r4, #2234] @ zero_extendqisi2
|
|
mov r6, r0
|
|
ldr r3, [sp, #40]
|
|
cmp r2, r3
|
|
ldrls r2, [sp, #12]
|
|
mvnls r3, #0
|
|
strls r3, [fp, r2]
|
|
bls .L1913
|
|
add r3, r4, r3
|
|
ldrb r5, [r3, #2236] @ zero_extendqisi2
|
|
ldrb r3, [r10, #1741] @ zero_extendqisi2
|
|
mov r0, r5
|
|
cmp r3, #0
|
|
moveq r6, #0
|
|
bl NandcWaitFlashReady
|
|
ldr r3, [r4, #48]
|
|
ldrb r2, [r3, #19] @ zero_extendqisi2
|
|
sub r3, r2, #1
|
|
cmp r3, #7
|
|
bhi .L1915
|
|
sub r2, r2, #7
|
|
add r1, r4, r5
|
|
cmp r2, #1
|
|
add r2, r4, r5
|
|
ldrb r3, [r1, #1228] @ zero_extendqisi2
|
|
ldrb r2, [r2, #2068] @ zero_extendqisi2
|
|
ldrbls r3, [r1, #1236] @ zero_extendqisi2
|
|
cmp r2, r3
|
|
beq .L1915
|
|
ldr r2, .L1979+12
|
|
mov r0, r5
|
|
ldrb r1, [r4, #1217] @ zero_extendqisi2
|
|
bl HynixSetRRPara
|
|
.L1915:
|
|
mov r0, r5
|
|
lsr r7, r7, #31
|
|
bl NandcFlashCs
|
|
ldr r3, [sp, #28]
|
|
mov r0, r5
|
|
cmp r3, #1
|
|
orreq r7, r7, #1
|
|
cmp r7, #0
|
|
str r7, [sp, #16]
|
|
beq .L1917
|
|
ldrb r3, [r4, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L1917
|
|
bl flash_enter_slc_mode
|
|
.L1923:
|
|
ldr r1, [sp, #44]
|
|
cmn r1, #1
|
|
cmpeq r5, #255
|
|
moveq r3, #0
|
|
movne r3, #1
|
|
moveq r6, r3
|
|
beq .L1919
|
|
cmp r6, #0
|
|
beq .L1920
|
|
ldr r2, [r4, #40]
|
|
mov r0, r5
|
|
add r2, r1, r2
|
|
bl FlashReadDpCmd
|
|
.L1921:
|
|
mov r0, r5
|
|
bl NandcWaitFlashReady
|
|
cmp r6, #0
|
|
beq .L1919
|
|
ldr r1, [sp, #44]
|
|
mov r0, r5
|
|
bl FlashReadDpDataOutCmd
|
|
.L1919:
|
|
ldr r3, [r8, #12]
|
|
mov r1, #0
|
|
ldr r2, [sp, #20]
|
|
mov r0, r5
|
|
str r3, [sp]
|
|
ldr r3, [r8, #8]
|
|
bl NandcXferData
|
|
ldrb r3, [r4, #44] @ zero_extendqisi2
|
|
mov r7, r0
|
|
adds r2, r3, #0
|
|
movne r2, #1
|
|
cmn r0, #1
|
|
movne r2, #0
|
|
cmp r2, #0
|
|
str r2, [sp, #32]
|
|
beq .L1922
|
|
mov r3, #0
|
|
mov r6, #0
|
|
strb r3, [r4, #44]
|
|
b .L1923
|
|
.L1917:
|
|
bl flash_exit_slc_mode
|
|
b .L1923
|
|
.L1920:
|
|
mov r0, r5
|
|
bl FlashReadCmd
|
|
b .L1921
|
|
.L1922:
|
|
cmp r6, #0
|
|
beq .L1924
|
|
ldr r3, [r4, #40]
|
|
mov r0, r5
|
|
ldr r1, [sp, #44]
|
|
add r1, r1, r3
|
|
bl FlashReadDpDataOutCmd
|
|
ldr r3, [sp, #12]
|
|
mov r0, r5
|
|
ldr r1, [sp, #32]
|
|
add r3, r3, #36
|
|
add r3, fp, r3
|
|
ldr r2, [r3, #12]
|
|
str r2, [sp]
|
|
ldr r2, [sp, #20]
|
|
ldr r3, [r3, #8]
|
|
bl NandcXferData
|
|
cmn r0, #1
|
|
mov r9, r0
|
|
moveq r6, #0
|
|
.L1924:
|
|
mov r0, r5
|
|
bl NandcFlashDeCs
|
|
ldrb r3, [sp, #36] @ zero_extendqisi2
|
|
cmn r7, #1
|
|
strb r3, [r4, #44]
|
|
bne .L1925
|
|
ldrb r3, [r4, #2256] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L1926
|
|
.L1930:
|
|
ldr r6, [r10, #1704]
|
|
cmp r6, #0
|
|
bne .L1927
|
|
ldr r3, [r8, #12]
|
|
mov r0, r5
|
|
ldr r2, [r8, #8]
|
|
ldr r1, [sp, #44]
|
|
bl FlashReadRawPage
|
|
mov r7, r0
|
|
.L1931:
|
|
cmp r7, #256
|
|
cmnne r7, #1
|
|
ldreq r3, [sp, #12]
|
|
movne r3, #0
|
|
ldrne r2, [sp, #12]
|
|
streq r7, [fp, r3]
|
|
strne r3, [fp, r2]
|
|
ldr r3, [sp, #12]
|
|
ldr r3, [fp, r3]
|
|
cmn r3, #1
|
|
bne .L1938
|
|
ldr r1, [r8, #4]
|
|
ldrb r2, [r4, #2316] @ zero_extendqisi2
|
|
ldr r0, .L1979+16
|
|
bl printk
|
|
ldr r1, [r8, #12]
|
|
cmp r1, #0
|
|
beq .L1938
|
|
mov r3, #4
|
|
ldr r0, .L1979+20
|
|
mov r2, r3
|
|
bl rknand_print_hex
|
|
.L1938:
|
|
cmp r6, #0
|
|
beq .L1940
|
|
ldrb r3, [r4, #2316] @ zero_extendqisi2
|
|
add r3, r3, r3, lsl #1
|
|
cmp r9, r3, asr #2
|
|
bls .L1941
|
|
ldr r3, [r10, #1704]
|
|
cmp r3, #0
|
|
moveq r9, #256
|
|
.L1941:
|
|
ldr r3, [sp, #12]
|
|
cmp r9, #256
|
|
cmnne r9, #1
|
|
movne r2, #0
|
|
add r3, r3, #36
|
|
streq r9, [fp, r3]
|
|
strne r2, [fp, r3]
|
|
.L1940:
|
|
ldr r3, [sp, #8]
|
|
add r3, r3, r6
|
|
str r3, [sp, #8]
|
|
ldr r3, [sp, #16]
|
|
cmp r3, #0
|
|
beq .L1913
|
|
ldrb r3, [r4, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L1913
|
|
mov r0, r5
|
|
bl flash_exit_slc_mode
|
|
.L1913:
|
|
ldr r3, [sp, #8]
|
|
add r3, r3, #1
|
|
str r3, [sp, #8]
|
|
b .L1910
|
|
.L1926:
|
|
ldr r3, [r4, #88]
|
|
mov r0, r5
|
|
ldr r1, [sp, #44]
|
|
ldr r6, [r3, #304]
|
|
mov r3, #1
|
|
str r3, [sp]
|
|
ldr r3, [r8, #12]
|
|
ldr r2, [r8, #8]
|
|
bl FlashDdrTunningRead
|
|
cmn r0, #1
|
|
mov r7, r0
|
|
beq .L1929
|
|
ldrb r3, [r4, #2316] @ zero_extendqisi2
|
|
cmp r0, r3, lsr #1
|
|
bls .L1946
|
|
.L1929:
|
|
ubfx r0, r6, #8, #8
|
|
bl NandcSetDdrPara
|
|
cmn r7, #1
|
|
beq .L1930
|
|
.L1946:
|
|
mov r6, #0
|
|
.L1925:
|
|
ldrb r3, [r4, #2316] @ zero_extendqisi2
|
|
add r3, r3, r3, lsl #1
|
|
cmp r7, r3, asr #2
|
|
bls .L1931
|
|
ldr r3, [r10, #1704]
|
|
cmp r3, #0
|
|
moveq r7, #256
|
|
b .L1931
|
|
.L1927:
|
|
ldr r3, [r8, #12]
|
|
mov r0, r5
|
|
ldr r2, [r8, #8]
|
|
ldr r1, [sp, #44]
|
|
blx r6
|
|
cmn r0, #1
|
|
mov r7, r0
|
|
bne .L1948
|
|
ldr r3, [r4, #48]
|
|
ldrb r3, [r3, #19] @ zero_extendqisi2
|
|
sub r3, r3, #1
|
|
cmp r3, #7
|
|
bhi .L1932
|
|
mov r3, #0
|
|
ldr r2, .L1979+12
|
|
ldrb r1, [r4, #1217] @ zero_extendqisi2
|
|
mov r0, r5
|
|
bl HynixSetRRPara
|
|
.L1932:
|
|
ldr r3, [r8, #12]
|
|
mov r0, r5
|
|
ldr r2, [r8, #8]
|
|
ldr r1, [sp, #44]
|
|
bl FlashReadRawPage
|
|
ldrb r2, [r4, #2316] @ zero_extendqisi2
|
|
mov r7, r0
|
|
mov r3, r0
|
|
ldr r1, [r8, #4]
|
|
ldr r0, .L1979+24
|
|
bl printk
|
|
cmn r7, #1
|
|
bne .L1948
|
|
ldrb r6, [r4, #152] @ zero_extendqisi2
|
|
cmp r6, #0
|
|
beq .L1931
|
|
ldr r3, [sp, #16]
|
|
mov r0, r5
|
|
cmp r3, #0
|
|
beq .L1933
|
|
bl flash_enter_slc_mode
|
|
.L1934:
|
|
ldr r6, [r10, #1704]
|
|
mov r0, r5
|
|
ldr r3, [r8, #12]
|
|
ldr r2, [r8, #8]
|
|
ldr r1, [sp, #44]
|
|
blx r6
|
|
mov r7, r0
|
|
.L1948:
|
|
mov r6, #0
|
|
b .L1931
|
|
.L1933:
|
|
bl flash_exit_slc_mode
|
|
b .L1934
|
|
.L1980:
|
|
.align 2
|
|
.L1979:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+1220
|
|
.word .LC99
|
|
.word .LC101
|
|
.word .LC102
|
|
.fnend
|
|
.size FlashReadPages, .-FlashReadPages
|
|
.align 2
|
|
.global FlashLoadFactorBbt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashLoadFactorBbt, %function
|
|
FlashLoadFactorBbt:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 56
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r2, #16
|
|
ldr r8, .L1993
|
|
.pad #60
|
|
sub sp, sp, #60
|
|
mov r1, #0
|
|
mvn fp, #0
|
|
ldr r10, .L1993+4
|
|
mov r5, #0
|
|
ldrh r3, [r8, #136]
|
|
mov r9, r5
|
|
ldrh r6, [r8, #138]
|
|
ldr r0, .L1993+8
|
|
smulbb r6, r6, r3
|
|
bl ftl_memset
|
|
ldr r3, [r10, #1728]
|
|
uxth r6, r6
|
|
str r5, [sp, #28]
|
|
str r3, [sp, #32]
|
|
add r3, r6, fp
|
|
uxth r3, r3
|
|
str r3, [sp, #8]
|
|
.L1982:
|
|
ldrb r3, [r8, #2234] @ zero_extendqisi2
|
|
uxtb r7, r5
|
|
cmp r3, r7
|
|
bhi .L1988
|
|
mov r0, fp
|
|
add sp, sp, #60
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L1988:
|
|
ldr r4, [sp, #8]
|
|
mul r3, r7, r6
|
|
sub r2, r6, #12
|
|
str r2, [sp, #4]
|
|
.L1983:
|
|
ldr r2, [sp, #4]
|
|
cmp r4, r2
|
|
ble .L1985
|
|
add r2, r4, r3
|
|
add r0, sp, #20
|
|
lsl r2, r2, #10
|
|
str r3, [sp, #12]
|
|
str r2, [sp, #24]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [sp, #20]
|
|
ldr r3, [sp, #12]
|
|
cmn r2, #1
|
|
beq .L1984
|
|
ldr r2, [r10, #1728]
|
|
ldrh r1, [r2]
|
|
movw r2, #61664
|
|
cmp r1, r2
|
|
bne .L1984
|
|
mov r1, r7
|
|
mov r2, r4
|
|
ldr r0, .L1993+12
|
|
add r9, r9, #1
|
|
bl printk
|
|
uxth r9, r9
|
|
ldr r3, .L1993+8
|
|
lsl r7, r7, #1
|
|
strh r4, [r3, r7] @ movhi
|
|
.L1985:
|
|
ldrb r3, [r8, #2234] @ zero_extendqisi2
|
|
add r5, r5, #1
|
|
cmp r3, r9
|
|
moveq fp, #0
|
|
b .L1982
|
|
.L1984:
|
|
sub r4, r4, #1
|
|
uxth r4, r4
|
|
b .L1983
|
|
.L1994:
|
|
.align 2
|
|
.L1993:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2+1742
|
|
.word .LC103
|
|
.fnend
|
|
.size FlashLoadFactorBbt, .-FlashLoadFactorBbt
|
|
.align 2
|
|
.global FlashProgSlc2KPages
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashProgSlc2KPages, %function
|
|
FlashProgSlc2KPages:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 48
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L2023
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r10, r1
|
|
ldr r9, .L2023+4
|
|
.pad #60
|
|
sub sp, sp, #60
|
|
mov r8, r2
|
|
mov r4, r0
|
|
ldrb fp, [r3, #477] @ zero_extendqisi2
|
|
mov r6, r0
|
|
mov r7, #0
|
|
.L1996:
|
|
cmp r7, r10
|
|
bne .L2002
|
|
ldr r5, .L2023+8
|
|
mov r6, #0
|
|
ldr r9, .L2023+12
|
|
.L2003:
|
|
cmp r7, r6
|
|
bne .L2010
|
|
mov r0, #0
|
|
add sp, sp, #60
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2002:
|
|
sub r3, r10, r7
|
|
add r2, sp, #12
|
|
uxtb r3, r3
|
|
mov r1, r8
|
|
mov r0, r6
|
|
str r3, [sp]
|
|
add r3, sp, #16
|
|
bl LogAddr2PhyAddr
|
|
ldrb r2, [r9, #2234] @ zero_extendqisi2
|
|
ldr r3, [sp, #16]
|
|
cmp r2, r3
|
|
mvnls r3, #0
|
|
strls r3, [r6]
|
|
bls .L1998
|
|
add r3, r9, r3
|
|
ldrb r5, [r3, #2236] @ zero_extendqisi2
|
|
mov r0, r5
|
|
bl NandcWaitFlashReady
|
|
mov r0, r5
|
|
bl NandcFlashCs
|
|
mov r0, r5
|
|
ldr r1, [sp, #12]
|
|
bl FlashProgFirstCmd
|
|
ldr r3, [r6, #12]
|
|
mov r2, fp
|
|
mov r1, #1
|
|
mov r0, r5
|
|
str r3, [sp]
|
|
ldr r3, [r6, #8]
|
|
bl NandcXferData
|
|
mov r0, r5
|
|
ldr r1, [sp, #12]
|
|
bl FlashProgSecondCmd
|
|
mov r0, r5
|
|
bl NandcWaitFlashReady
|
|
mov r0, r5
|
|
ldr r1, [sp, #12]
|
|
bl FlashReadStatus
|
|
sbfx r0, r0, #0, #1
|
|
ldr r1, [sp, #12]
|
|
str r0, [r6]
|
|
mov r0, r5
|
|
ldr r3, [r9, #40]
|
|
add r1, r1, r3
|
|
bl FlashProgFirstCmd
|
|
ldr r3, [r6, #8]
|
|
mov r1, #1
|
|
ldr r2, [r6, #12]
|
|
mov r0, r5
|
|
cmp r3, #0
|
|
addne r3, r3, #2048
|
|
cmp r2, #0
|
|
addne r2, r2, #8
|
|
str r2, [sp]
|
|
mov r2, fp
|
|
bl NandcXferData
|
|
ldr r3, [r9, #40]
|
|
mov r0, r5
|
|
ldr r1, [sp, #12]
|
|
add r1, r1, r3
|
|
bl FlashProgSecondCmd
|
|
mov r0, r5
|
|
bl NandcWaitFlashReady
|
|
mov r0, r5
|
|
ldr r1, [sp, #12]
|
|
bl FlashReadStatus
|
|
tst r0, #1
|
|
mov r0, r5
|
|
mvnne r3, #0
|
|
strne r3, [r6]
|
|
bl NandcFlashDeCs
|
|
.L1998:
|
|
add r7, r7, #1
|
|
add r6, r6, #36
|
|
b .L1996
|
|
.L2010:
|
|
ldr r3, [r4]
|
|
cmn r3, #1
|
|
bne .L2004
|
|
ldr r1, [r4, #4]
|
|
ldr r0, .L2023+16
|
|
bl printk
|
|
.L2005:
|
|
add r6, r6, #1
|
|
add r4, r4, #36
|
|
b .L2003
|
|
.L2004:
|
|
sub r3, r7, r6
|
|
add r2, sp, #12
|
|
uxtb r3, r3
|
|
mov r1, r8
|
|
mov r0, r4
|
|
str r3, [sp]
|
|
add r3, sp, #16
|
|
bl LogAddr2PhyAddr
|
|
ldr r2, [r5, #1732]
|
|
mov r3, #0
|
|
mov lr, r4
|
|
add ip, sp, #20
|
|
str r3, [r2]
|
|
ldr r2, [r5, #1736]
|
|
str r3, [r2]
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
mov r2, r8
|
|
ldr r3, [lr]
|
|
mov r1, #1
|
|
add r0, sp, #20
|
|
str r3, [ip]
|
|
ldr r3, [r5, #1732]
|
|
str r3, [sp, #28]
|
|
ldr r3, [r5, #1736]
|
|
str r3, [sp, #32]
|
|
bl FlashReadPages
|
|
ldr r10, [sp, #20]
|
|
cmn r10, #1
|
|
bne .L2006
|
|
ldr r1, [r4, #4]
|
|
ldr r0, .L2023+20
|
|
bl printk
|
|
str r10, [r4]
|
|
.L2006:
|
|
ldr r10, [sp, #20]
|
|
cmp r10, #256
|
|
bne .L2007
|
|
ldr r1, [r4, #4]
|
|
ldr r0, .L2023+24
|
|
bl printk
|
|
str r10, [r4]
|
|
.L2007:
|
|
ldr r3, [r4, #12]
|
|
cmp r3, #0
|
|
beq .L2008
|
|
ldr r2, [r3]
|
|
ldr r3, [r5, #1736]
|
|
ldr r3, [r3]
|
|
cmp r2, r3
|
|
beq .L2008
|
|
ldr r1, [r4, #4]
|
|
ldr r0, .L2023+28
|
|
bl printk
|
|
mvn r3, #0
|
|
str r3, [r4]
|
|
.L2008:
|
|
ldr r3, [r4, #8]
|
|
cmp r3, #0
|
|
beq .L2005
|
|
ldr r2, [r3]
|
|
ldr r3, [r5, #1732]
|
|
ldr r3, [r3]
|
|
cmp r2, r3
|
|
beq .L2005
|
|
ldr r1, [r4, #4]
|
|
mov r0, r9
|
|
bl printk
|
|
mvn r3, #0
|
|
str r3, [r4]
|
|
b .L2005
|
|
.L2024:
|
|
.align 2
|
|
.L2023:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LC108
|
|
.word .LC104
|
|
.word .LC105
|
|
.word .LC106
|
|
.word .LC107
|
|
.fnend
|
|
.size FlashProgSlc2KPages, .-FlashProgSlc2KPages
|
|
.align 2
|
|
.global FtlLoadFactoryBbt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadFactoryBbt, %function
|
|
FtlLoadFactoryBbt:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
mov r7, #0
|
|
ldr r5, .L2036
|
|
ldr r6, .L2036+4
|
|
ldr r3, [r5, #-524]
|
|
ldr r8, [r5, #-500]
|
|
sub r10, r6, #120
|
|
sub r9, r6, #78
|
|
str r3, [r5, #1768]
|
|
str r8, [r5, #1772]
|
|
.L2026:
|
|
ldrh r3, [r10]
|
|
cmp r7, r3
|
|
bcc .L2031
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2031:
|
|
ldrh r4, [r9]
|
|
mvn r3, #0
|
|
ldr fp, .L2036+8
|
|
strh r3, [r6, #2]! @ movhi
|
|
add r4, r4, r3
|
|
movw r3, #61664
|
|
uxth r4, r4
|
|
.L2027:
|
|
ldrh r2, [r9]
|
|
sub r1, r2, #16
|
|
cmp r4, r1
|
|
ble .L2029
|
|
mla r2, r7, r2, r4
|
|
str r3, [sp, #4]
|
|
mov r0, fp
|
|
lsl r2, r2, #10
|
|
str r2, [r5, #1764]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [r5, #1760]
|
|
ldr r3, [sp, #4]
|
|
cmn r2, #1
|
|
beq .L2028
|
|
ldrh r2, [r8]
|
|
cmp r2, r3
|
|
bne .L2028
|
|
strh r4, [r6] @ movhi
|
|
.L2029:
|
|
add r7, r7, #1
|
|
b .L2026
|
|
.L2028:
|
|
sub r4, r4, #1
|
|
uxth r4, r4
|
|
b .L2027
|
|
.L2037:
|
|
.align 2
|
|
.L2036:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2466
|
|
.word .LANCHOR2+1760
|
|
.fnend
|
|
.size FtlLoadFactoryBbt, .-FtlLoadFactoryBbt
|
|
.align 2
|
|
.global FtlGetLastWrittenPage
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGetLastWrittenPage, %function
|
|
FtlGetLastWrittenPage:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 104
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L2051
|
|
cmp r1, #1
|
|
movweq r2, #2392
|
|
movwne r2, #2390
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
lsl r8, r0, #10
|
|
ldrh r5, [r3, r2]
|
|
.pad #104
|
|
sub sp, sp, #104
|
|
add r3, sp, #40
|
|
mov r2, r1
|
|
str r3, [sp, #16]
|
|
mov r7, r1
|
|
sub r5, r5, #1
|
|
mov r6, #0
|
|
sxth r5, r5
|
|
mov r1, #1
|
|
add r0, sp, #4
|
|
str r6, [sp, #12]
|
|
orr r3, r5, r8
|
|
str r3, [sp, #8]
|
|
bl FlashReadPages
|
|
ldr r3, [sp, #40]
|
|
cmn r3, #1
|
|
bne .L2041
|
|
.L2042:
|
|
cmp r6, r5
|
|
ble .L2045
|
|
.L2041:
|
|
mov r0, r5
|
|
add sp, sp, #104
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L2045:
|
|
add r3, r6, r5
|
|
mov r2, r7
|
|
add r3, r3, r3, lsr #31
|
|
mov r1, #1
|
|
add r0, sp, #4
|
|
asr r4, r3, #1
|
|
sxth r3, r4
|
|
orr r3, r3, r8
|
|
str r3, [sp, #8]
|
|
bl FlashReadPages
|
|
ldr r3, [sp, #40]
|
|
cmn r3, #1
|
|
bne .L2043
|
|
ldr r3, [sp, #44]
|
|
cmn r3, #1
|
|
bne .L2043
|
|
ldr r3, [sp, #4]
|
|
cmn r3, #1
|
|
subne r4, r4, #1
|
|
sxthne r5, r4
|
|
bne .L2042
|
|
.L2043:
|
|
add r4, r4, #1
|
|
sxth r6, r4
|
|
b .L2042
|
|
.L2052:
|
|
.align 2
|
|
.L2051:
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlGetLastWrittenPage, .-FtlGetLastWrittenPage
|
|
.align 2
|
|
.global FtlLoadBbt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadBbt, %function
|
|
FtlLoadBbt:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
ldr r4, .L2085
|
|
ldr r5, .L2085+4
|
|
ldr r3, [r4, #-524]
|
|
add r8, r4, #1760
|
|
ldr r7, [r4, #-500]
|
|
ldr r9, .L2085+8
|
|
str r3, [r4, #1768]
|
|
str r7, [r4, #1772]
|
|
bl FtlBbtMemInit
|
|
movw r3, #2388
|
|
ldrh r6, [r5, r3]
|
|
sub r6, r6, #1
|
|
uxth r6, r6
|
|
.L2054:
|
|
ldrh r3, [r9]
|
|
sub r3, r3, #48
|
|
cmp r6, r3
|
|
ble .L2057
|
|
lsl r3, r6, #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
mov r0, r8
|
|
str r3, [r4, #1764]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #1760]
|
|
cmn r3, #1
|
|
bne .L2055
|
|
ldr r3, [r4, #1764]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
mov r0, r8
|
|
add r3, r3, #1
|
|
str r3, [r4, #1764]
|
|
bl FlashReadPages
|
|
.L2055:
|
|
ldr r3, [r4, #1760]
|
|
cmn r3, #1
|
|
beq .L2056
|
|
ldrh r2, [r7]
|
|
movw r3, #61649
|
|
cmp r2, r3
|
|
bne .L2056
|
|
movw r3, #2456
|
|
strh r6, [r5, r3] @ movhi
|
|
ldr r3, [r7, #4]
|
|
str r3, [r5, #2464]
|
|
ldr r3, .L2085+12
|
|
ldrh r2, [r7, #8]
|
|
strh r2, [r3, #4] @ movhi
|
|
.L2057:
|
|
movw r8, #2456
|
|
movw r2, #65535
|
|
ldrh r3, [r5, r8]
|
|
ldr r6, .L2085+12
|
|
cmp r3, r2
|
|
beq .L2071
|
|
ldrh r3, [r6, #4]
|
|
cmp r3, r2
|
|
beq .L2061
|
|
lsl r3, r3, #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
ldr r0, .L2085+16
|
|
str r3, [r4, #1764]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #1760]
|
|
cmn r3, #1
|
|
beq .L2061
|
|
ldrh r2, [r7]
|
|
movw r3, #61649
|
|
cmp r2, r3
|
|
bne .L2061
|
|
ldr r3, [r7, #4]
|
|
ldr r2, [r5, #2464]
|
|
cmp r3, r2
|
|
ldrhhi r2, [r6, #4]
|
|
strhi r3, [r5, #2464]
|
|
ldrhhi r3, [r7, #8]
|
|
strhhi r2, [r5, r8] @ movhi
|
|
strhhi r3, [r6, #4] @ movhi
|
|
.L2061:
|
|
ldr r9, .L2085+16
|
|
movw r3, #2456
|
|
mov r1, #1
|
|
ldrh r0, [r5, r3]
|
|
movw r10, #61649
|
|
bl FtlGetLastWrittenPage
|
|
sxth r8, r0
|
|
add r0, r0, #1
|
|
strh r0, [r6, #2] @ movhi
|
|
.L2063:
|
|
cmp r8, #0
|
|
blt .L2068
|
|
ldrh r3, [r6]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
mov r0, r9
|
|
orr r3, r8, r3, lsl #10
|
|
str r3, [r4, #1764]
|
|
ldr r3, [r4, #-524]
|
|
str r3, [r4, #1768]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #1760]
|
|
cmn r3, #1
|
|
beq .L2064
|
|
ldrh r3, [r7]
|
|
cmp r3, r10
|
|
bne .L2064
|
|
.L2068:
|
|
ldrh r3, [r7, #10]
|
|
ldrh r0, [r7, #12]
|
|
strh r3, [r6, #6] @ movhi
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
bne .L2065
|
|
.L2066:
|
|
ldr r6, .L2085+20
|
|
mov r5, #0
|
|
ldr r8, .L2085+24
|
|
sub r7, r6, #134
|
|
.L2069:
|
|
ldrh r3, [r7]
|
|
cmp r5, r3
|
|
bcc .L2070
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L2056:
|
|
sub r6, r6, #1
|
|
uxth r6, r6
|
|
b .L2054
|
|
.L2064:
|
|
sub r8, r8, #1
|
|
sxth r8, r8
|
|
b .L2063
|
|
.L2065:
|
|
ldr r2, [r5, #2320]
|
|
cmp r0, r2
|
|
beq .L2066
|
|
movw r3, #2334
|
|
ldrh r3, [r5, r3]
|
|
lsr r3, r3, #2
|
|
cmp r2, r3
|
|
cmpcc r0, r3
|
|
bcs .L2066
|
|
bl FtlSysBlkNumInit
|
|
b .L2066
|
|
.L2070:
|
|
ldrh r2, [r8]
|
|
ldr r1, [r4, #1768]
|
|
ldr r0, [r6, #4]!
|
|
lsl r2, r2, #2
|
|
mla r1, r5, r2, r1
|
|
add r5, r5, #1
|
|
bl ftl_memcpy
|
|
b .L2069
|
|
.L2071:
|
|
mvn r0, #0
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L2086:
|
|
.align 2
|
|
.L2085:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2388
|
|
.word .LANCHOR0+2456
|
|
.word .LANCHOR2+1760
|
|
.word .LANCHOR0+2480
|
|
.word .LANCHOR2-436
|
|
.fnend
|
|
.size FtlLoadBbt, .-FtlLoadBbt
|
|
.align 2
|
|
.global FtlScanSysBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlScanSysBlk, %function
|
|
FtlScanSysBlk:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r6, #0
|
|
ldr r5, .L2166
|
|
movw r3, #2438
|
|
mov r1, r6
|
|
.pad #28
|
|
sub sp, sp, #28
|
|
ldr r4, .L2166+4
|
|
movw r8, #2412
|
|
ldr r2, [r5, #2420]
|
|
strh r6, [r5, r3] @ movhi
|
|
sub r7, r4, #388
|
|
ldr r0, [r4, #-444]
|
|
strh r6, [r7] @ movhi
|
|
lsl r2, r2, #2
|
|
bl ftl_memset
|
|
ldr r2, [r5, #2420]
|
|
mov r1, r6
|
|
ldr r0, [r4, #-472]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
ldrh r2, [r5, r8]
|
|
mov r1, r6
|
|
ldr r0, [r4, #-460]
|
|
lsl r2, r2, #2
|
|
bl ftl_memset
|
|
ldrh r2, [r5, r8]
|
|
mov r1, r6
|
|
ldr r0, [r5, #2440]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
sub r0, r4, #3296
|
|
mov r2, #16
|
|
mov r1, #255
|
|
sub r0, r0, #4
|
|
bl ftl_memset
|
|
movw r3, #2332
|
|
str r7, [sp]
|
|
ldrh fp, [r5, r3]
|
|
str r5, [sp, #4]
|
|
.L2088:
|
|
ldr r3, .L2166+8
|
|
ldr r2, .L2166
|
|
ldrh r3, [r3]
|
|
cmp r3, fp
|
|
bls .L2128
|
|
ldr r1, [r4, #-2692]
|
|
mov r6, #0
|
|
ldr r3, .L2166+12
|
|
mov r5, r6
|
|
ldr r7, [r4, #-536]
|
|
mov r8, #36
|
|
str r1, [sp, #8]
|
|
ldr r1, .L2166+16
|
|
ldrh r2, [r3]
|
|
ldr r3, [r4, #-2696]
|
|
ldrh r10, [r1]
|
|
sub r9, r1, #52
|
|
b .L2129
|
|
.L2090:
|
|
mov r1, fp
|
|
ldrb r0, [r9, r6] @ zero_extendqisi2
|
|
str r3, [sp, #20]
|
|
str r2, [sp, #16]
|
|
bl V2P_block
|
|
str r0, [sp, #12]
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
ldr r2, [sp, #16]
|
|
ldr r3, [sp, #20]
|
|
bne .L2089
|
|
ldr r1, [sp, #12]
|
|
mla r0, r8, r5, r7
|
|
lsl r1, r1, #10
|
|
stmib r0, {r1, r3}
|
|
mul r1, r10, r5
|
|
add r5, r5, #1
|
|
uxth r5, r5
|
|
add ip, r1, #3
|
|
cmp r1, #0
|
|
movlt r1, ip
|
|
ldr ip, [sp, #8]
|
|
bic r1, r1, #3
|
|
add r1, ip, r1
|
|
str r1, [r0, #12]
|
|
.L2089:
|
|
add r6, r6, #1
|
|
.L2129:
|
|
uxth r1, r6
|
|
cmp r2, r1
|
|
bhi .L2090
|
|
cmp r5, #0
|
|
bne .L2091
|
|
.L2127:
|
|
add r3, fp, #1
|
|
uxth fp, r3
|
|
b .L2088
|
|
.L2091:
|
|
mov r8, #0
|
|
mov r2, #1
|
|
mov r1, r5
|
|
mov r0, r7
|
|
bl FlashReadPages
|
|
.L2092:
|
|
uxth r3, r8
|
|
cmp r5, r3
|
|
bls .L2127
|
|
mov r9, #36
|
|
ldr r3, [r4, #-536]
|
|
mul r9, r9, r8
|
|
add r2, r3, r9
|
|
ldr r3, [r3, r9]
|
|
ldr r6, [r2, #4]
|
|
ldr r7, [r2, #12]
|
|
cmn r3, #1
|
|
ubfx r6, r6, #10, #16
|
|
bne .L2095
|
|
mov r10, #16
|
|
.L2097:
|
|
ldr r0, [r4, #-536]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
add r0, r0, r9
|
|
ldr r3, [r0, #4]
|
|
add r3, r3, #1
|
|
str r3, [r0, #4]
|
|
bl FlashReadPages
|
|
ldrh r3, [r7]
|
|
movw r2, #65535
|
|
cmp r3, r2
|
|
ldr r3, [r4, #-536]
|
|
bne .L2094
|
|
mvn r2, #0
|
|
str r2, [r3, r9]
|
|
ldr r3, [r4, #-536]
|
|
ldr r3, [r3, r9]
|
|
cmp r3, r2
|
|
beq .L2096
|
|
.L2095:
|
|
ldr r2, [r4, #-3332]
|
|
ldr r3, [r7, #4]
|
|
cmn r2, #1
|
|
beq .L2098
|
|
cmp r2, r3
|
|
bhi .L2099
|
|
.L2098:
|
|
cmn r3, #1
|
|
addne r2, r3, #1
|
|
strne r2, [r4, #-3332]
|
|
.L2099:
|
|
ldrh r2, [r7]
|
|
movw r1, #61604
|
|
cmp r2, r1
|
|
beq .L2101
|
|
bhi .L2102
|
|
movw r3, #61574
|
|
cmp r2, r3
|
|
beq .L2103
|
|
.L2100:
|
|
add r8, r8, #1
|
|
b .L2092
|
|
.L2094:
|
|
ldr r3, [r3, r9]
|
|
cmn r3, #1
|
|
bne .L2095
|
|
sub r10, r10, #1
|
|
uxth r10, r10
|
|
cmp r10, #0
|
|
bne .L2097
|
|
.L2096:
|
|
ldr r3, .L2166
|
|
ldrb r1, [r3, #152] @ zero_extendqisi2
|
|
cmp r1, #0
|
|
bne .L2165
|
|
.L2125:
|
|
mov r0, r6
|
|
bl FtlFreeSysBlkQueueIn
|
|
b .L2100
|
|
.L2102:
|
|
movw r3, #61634
|
|
cmp r2, r3
|
|
beq .L2104
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L2100
|
|
.L2165:
|
|
mov r1, #0
|
|
b .L2125
|
|
.L2104:
|
|
ldr r3, [sp, #4]
|
|
ldr r2, [sp]
|
|
ldr ip, [r4, #-444]
|
|
ldr r0, [r3, #2420]
|
|
ldrh r2, [r2]
|
|
uxth r1, r0
|
|
sub r3, r1, #1
|
|
sub r1, r1, r2
|
|
sub r1, r1, #1
|
|
sxth r3, r3
|
|
sxth r1, r1
|
|
.L2106:
|
|
cmp r3, r1
|
|
bgt .L2112
|
|
cmp r3, #0
|
|
bge .L2142
|
|
b .L2100
|
|
.L2112:
|
|
ldr r10, [r7, #4]
|
|
lsl lr, r3, #2
|
|
ldr r9, [ip, r3, lsl #2]
|
|
cmp r10, r9
|
|
bls .L2107
|
|
ldr r1, [ip]
|
|
cmp r1, #0
|
|
bne .L2108
|
|
cmp r0, r2
|
|
ldrne r1, .L2166+20
|
|
addne r2, r2, #1
|
|
strhne r2, [r1] @ movhi
|
|
.L2108:
|
|
uxth ip, r3
|
|
mov r1, #0
|
|
.L2109:
|
|
uxth r0, r1
|
|
sxth r2, r1
|
|
cmp r0, ip
|
|
bcc .L2110
|
|
ldr r1, [r7, #4]
|
|
cmp r3, #0
|
|
ldr r2, [r4, #-444]
|
|
str r1, [r2, lr]
|
|
lsl r2, r3, #1
|
|
ldr r1, [r4, #-472]
|
|
strh r6, [r1, r2] @ movhi
|
|
blt .L2100
|
|
ldr r2, [sp]
|
|
ldr r1, .L2166
|
|
ldrh r2, [r2]
|
|
ldr r1, [r1, #2420]
|
|
sub r1, r1, r2
|
|
sub r1, r1, #1
|
|
sxth r1, r1
|
|
cmp r3, r1
|
|
bgt .L2100
|
|
.L2142:
|
|
ldr r1, [sp]
|
|
add r2, r2, #1
|
|
strh r2, [r1] @ movhi
|
|
ldr r2, [r4, #-444]
|
|
ldr r1, [r7, #4]
|
|
str r1, [r2, r3, lsl #2]
|
|
lsl r3, r3, #1
|
|
ldr r2, [r4, #-472]
|
|
.L2163:
|
|
strh r6, [r2, r3] @ movhi
|
|
b .L2100
|
|
.L2110:
|
|
ldr r0, [r4, #-444]
|
|
add r1, r1, #1
|
|
add r9, r0, r2, lsl #2
|
|
ldr r9, [r9, #4]
|
|
str r9, [r0, r2, lsl #2]
|
|
lsl r2, r2, #1
|
|
ldr r0, [r4, #-472]
|
|
add r9, r0, r2
|
|
ldrh r9, [r9, #2]
|
|
strh r9, [r0, r2] @ movhi
|
|
b .L2109
|
|
.L2107:
|
|
sub r3, r3, #1
|
|
sxth r3, r3
|
|
b .L2106
|
|
.L2103:
|
|
ldr r3, .L2166+24
|
|
ldr r1, .L2166+28
|
|
ldr lr, [r4, #-460]
|
|
ldrh r2, [r3]
|
|
ldrh r1, [r1]
|
|
sub r0, r2, #1
|
|
sxth r3, r0
|
|
sub r0, r0, r1
|
|
.L2115:
|
|
cmp r3, r0
|
|
ble .L2120
|
|
ldr r10, [r7, #4]
|
|
lsl ip, r3, #2
|
|
ldr r9, [lr, r3, lsl #2]
|
|
cmp r10, r9
|
|
bls .L2116
|
|
sub r2, r2, r1
|
|
ldr r0, [lr]
|
|
clz r2, r2
|
|
uxth r9, r3
|
|
lsr r2, r2, #5
|
|
cmp r0, #0
|
|
orrne r2, r2, #1
|
|
ldr r0, .L2166
|
|
cmp r2, #0
|
|
ldreq r2, .L2166+28
|
|
addeq r1, r1, #1
|
|
strheq r1, [r2] @ movhi
|
|
mov r1, #0
|
|
.L2118:
|
|
uxth lr, r1
|
|
sxth r2, r1
|
|
cmp lr, r9
|
|
bcc .L2119
|
|
ldr r1, [r7, #4]
|
|
ldr r2, [r4, #-460]
|
|
str r1, [r2, ip]
|
|
lsl r2, r3, #1
|
|
ldr r1, [r0, #2440]
|
|
strh r6, [r1, r2] @ movhi
|
|
.L2120:
|
|
cmp r3, #0
|
|
blt .L2100
|
|
ldr r0, .L2166+28
|
|
ldrh r2, [r0, #-26]
|
|
ldrh r1, [r0]
|
|
sub r2, r2, #1
|
|
sub r2, r2, r1
|
|
sxth r2, r2
|
|
cmp r3, r2
|
|
bgt .L2100
|
|
add r1, r1, #1
|
|
ldr r2, [r4, #-460]
|
|
strh r1, [r0] @ movhi
|
|
ldr r1, [r7, #4]
|
|
str r1, [r2, r3, lsl #2]
|
|
lsl r3, r3, #1
|
|
ldr r2, [sp, #4]
|
|
ldr r2, [r2, #2440]
|
|
b .L2163
|
|
.L2119:
|
|
ldr lr, [r4, #-460]
|
|
add r1, r1, #1
|
|
add r10, lr, r2, lsl #2
|
|
ldr r10, [r10, #4]
|
|
str r10, [lr, r2, lsl #2]
|
|
lsl r2, r2, #1
|
|
ldr lr, [r0, #2440]
|
|
add r10, lr, r2
|
|
ldrh r10, [r10, #2]
|
|
strh r10, [lr, r2] @ movhi
|
|
b .L2118
|
|
.L2116:
|
|
sub r3, r3, #1
|
|
sxth r3, r3
|
|
b .L2115
|
|
.L2101:
|
|
ldr r2, .L2166+32
|
|
movw r1, #65535
|
|
mov r9, r2
|
|
ldrh r0, [r9], #4
|
|
cmp r0, r1
|
|
strheq r6, [r2] @ movhi
|
|
beq .L2164
|
|
ldrh r0, [r2, #4]
|
|
cmp r0, r1
|
|
beq .L2123
|
|
mov r1, #1
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L2123:
|
|
ldr r3, [r7, #4]
|
|
ldr r2, [r4, #-3292]
|
|
cmp r2, r3
|
|
strhcs r6, [r9] @ movhi
|
|
bcs .L2100
|
|
ldrh r3, [r9, #-4]
|
|
strh r6, [r9, #-4] @ movhi
|
|
strh r3, [r9] @ movhi
|
|
ldr r3, [r7, #4]
|
|
.L2164:
|
|
str r3, [r4, #-3292]
|
|
b .L2100
|
|
.L2128:
|
|
ldr r0, [r4, #-472]
|
|
ldrh r3, [r0]
|
|
cmp r3, #0
|
|
beq .L2130
|
|
.L2133:
|
|
ldr r0, [r2, #2440]
|
|
ldrh r1, [r0]
|
|
cmp r1, #0
|
|
beq .L2131
|
|
.L2153:
|
|
mov r0, #0
|
|
add sp, sp, #28
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2130:
|
|
ldr r1, .L2166+20
|
|
ldrh r1, [r1]
|
|
cmp r1, #0
|
|
ldrne ip, [r2, #2420]
|
|
beq .L2133
|
|
.L2134:
|
|
sxth r1, r3
|
|
cmp r1, ip
|
|
bcs .L2133
|
|
lsl lr, r1, #1
|
|
add r3, r3, #1
|
|
ldrh lr, [r0, lr]
|
|
cmp lr, #0
|
|
beq .L2134
|
|
mov r3, r1
|
|
mov r5, #0
|
|
.L2135:
|
|
ldr r0, [r2, #2420]
|
|
cmp r3, r0
|
|
bcs .L2133
|
|
ldr ip, [r4, #-472]
|
|
lsl r0, r3, #1
|
|
sub lr, r3, r1
|
|
lsl r6, lr, #1
|
|
ldrh r7, [ip, r0]
|
|
strh r7, [ip, r6] @ movhi
|
|
ldr ip, [r4, #-444]
|
|
ldr r6, [ip, r3, lsl #2]
|
|
add r3, r3, #1
|
|
sxth r3, r3
|
|
str r6, [ip, lr, lsl #2]
|
|
ldr ip, [r4, #-472]
|
|
strh r5, [ip, r0] @ movhi
|
|
b .L2135
|
|
.L2131:
|
|
movw r3, #2438
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
movwne r3, #2412
|
|
ldrhne ip, [r2, r3]
|
|
beq .L2153
|
|
.L2138:
|
|
sxth r3, r1
|
|
cmp r3, ip
|
|
mov lr, r3
|
|
bge .L2153
|
|
lsl r5, r3, #1
|
|
add r1, r1, #1
|
|
ldrh r5, [r0, r5]
|
|
cmp r5, #0
|
|
beq .L2138
|
|
ldr r5, .L2166+24
|
|
mov r6, #0
|
|
.L2139:
|
|
ldrh r1, [r5]
|
|
cmp r3, r1
|
|
bge .L2153
|
|
ldr r0, [r2, #2440]
|
|
lsl r1, r3, #1
|
|
sub ip, r3, lr
|
|
lsl r7, ip, #1
|
|
ldrh r8, [r0, r1]
|
|
strh r8, [r0, r7] @ movhi
|
|
ldr r0, [r4, #-460]
|
|
ldr r7, [r0, r3, lsl #2]
|
|
add r3, r3, #1
|
|
sxth r3, r3
|
|
str r7, [r0, ip, lsl #2]
|
|
ldr r0, [r2, #2440]
|
|
strh r6, [r0, r1] @ movhi
|
|
b .L2139
|
|
.L2167:
|
|
.align 2
|
|
.L2166:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2334
|
|
.word .LANCHOR0+2324
|
|
.word .LANCHOR0+2402
|
|
.word .LANCHOR2-388
|
|
.word .LANCHOR0+2412
|
|
.word .LANCHOR0+2438
|
|
.word .LANCHOR2-3300
|
|
.fnend
|
|
.size FtlScanSysBlk, .-FtlScanSysBlk
|
|
.align 2
|
|
.global FtlLoadSysInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadSysInfo, %function
|
|
FtlLoadSysInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r1, #0
|
|
ldr r4, .L2197
|
|
.pad #36
|
|
sub sp, sp, #36
|
|
ldr r5, .L2197+4
|
|
ldr r3, [r4, #-524]
|
|
sub r7, r4, #3296
|
|
ldr r0, [r4, #-3540]
|
|
str r3, [r4, #1768]
|
|
ldr r3, [r4, #-500]
|
|
str r3, [r4, #1772]
|
|
movw r3, #2332
|
|
ldrh r2, [r5, r3]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
ldrh r0, [r7, #-4]
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
bne .L2169
|
|
.L2180:
|
|
mvn r0, #0
|
|
.L2168:
|
|
add sp, sp, #36
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2169:
|
|
mov r1, #1
|
|
add fp, r5, #2400
|
|
bl FtlGetLastWrittenPage
|
|
ldrsh r9, [r7, #-4]
|
|
sub r8, r7, #4
|
|
sxth r6, r0
|
|
add r0, r0, #1
|
|
strh r0, [r8, #2] @ movhi
|
|
.L2171:
|
|
cmp r6, #0
|
|
blt .L2179
|
|
orr r3, r6, r9, lsl #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
ldr r0, .L2197+8
|
|
str r3, [r4, #1764]
|
|
ldr r3, [r4, #-524]
|
|
str r3, [r4, #1768]
|
|
bl FlashReadPages
|
|
ldrb r3, [r5, #36] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L2172
|
|
ldr r8, [r4, #1772]
|
|
ldr r3, [r8, #12]
|
|
cmp r3, #0
|
|
str r3, [sp, #28]
|
|
beq .L2172
|
|
ldr r2, [r4, #1768]
|
|
ldrh r1, [fp]
|
|
mov r0, r2
|
|
str r2, [sp, #24]
|
|
bl js_hash
|
|
ldr r3, [sp, #28]
|
|
cmp r3, r0
|
|
beq .L2172
|
|
cmp r6, #0
|
|
bne .L2173
|
|
mov r10, r7
|
|
ldr r2, [sp, #24]
|
|
ldrh r1, [r10], #-4
|
|
cmp r9, r1
|
|
beq .L2173
|
|
ldr r2, [r2]
|
|
ldrh r1, [r7, #-4]
|
|
str r3, [sp, #12]
|
|
str r2, [sp, #16]
|
|
ldr r3, [r8, #8]
|
|
ldr r2, [r4, #1760]
|
|
ldr r0, .L2197+12
|
|
str r3, [sp, #8]
|
|
ldr r3, [r8, #4]
|
|
str r3, [sp, #4]
|
|
ldr r3, [r8]
|
|
str r3, [sp]
|
|
ldr r3, [r4, #1764]
|
|
bl printk
|
|
ldr r3, .L2197+16
|
|
ldrsh r9, [r10, #4]
|
|
ldrh r6, [r3]
|
|
.L2175:
|
|
sub r6, r6, #1
|
|
sxth r6, r6
|
|
b .L2171
|
|
.L2173:
|
|
mvn r3, #0
|
|
str r3, [r4, #1760]
|
|
.L2172:
|
|
ldr r3, [r4, #1760]
|
|
cmn r3, #1
|
|
beq .L2175
|
|
ldr r3, [r4, #-524]
|
|
ldr r2, .L2197+20
|
|
ldr r3, [r3]
|
|
cmp r3, r2
|
|
bne .L2175
|
|
ldr r3, [r4, #-500]
|
|
ldrh r2, [r3]
|
|
movw r3, #61604
|
|
cmp r2, r3
|
|
bne .L2175
|
|
.L2179:
|
|
mov r2, #48
|
|
ldr r1, [r4, #1768]
|
|
movw r6, #2332
|
|
ldr r0, .L2197+24
|
|
bl ftl_memcpy
|
|
ldrh r2, [r5, r6]
|
|
ldr r1, [r4, #1768]
|
|
ldr r0, [r4, #-3540]
|
|
lsl r2, r2, #1
|
|
add r1, r1, #48
|
|
bl ftl_memcpy
|
|
ldrh r1, [r5, r6]
|
|
ldr r3, [r4, #1768]
|
|
ldr r0, [r5, #32]
|
|
lsr r2, r1, #3
|
|
lsl r1, r1, #1
|
|
add r1, r1, #51
|
|
add r2, r2, #4
|
|
bic r1, r1, #3
|
|
add r1, r3, r1
|
|
bl ftl_memcpy
|
|
movw r3, #2436
|
|
ldrh r3, [r5, r3]
|
|
cmp r3, #0
|
|
beq .L2177
|
|
ldrh r1, [r5, r6]
|
|
movw r3, #2428
|
|
ldrh r2, [r5, r3]
|
|
ldr r0, [r4, #-448]
|
|
lsr r3, r1, #3
|
|
lsl r2, r2, #2
|
|
add r3, r3, r1, lsl #1
|
|
ldr r1, [r4, #1768]
|
|
add r3, r3, #52
|
|
ubfx r3, r3, #2, #14
|
|
add r1, r1, r3, lsl #2
|
|
bl ftl_memcpy
|
|
.L2177:
|
|
ldr r2, [r4, #-3596]
|
|
ldr r3, .L2197+20
|
|
cmp r2, r3
|
|
bne .L2180
|
|
ldr r6, .L2197+24
|
|
movw r3, #2346
|
|
ldrb r1, [r4, #-3586] @ zero_extendqisi2
|
|
ldrh r3, [r5, r3]
|
|
ldrh r2, [r6, #8]
|
|
cmp r1, r3
|
|
strh r2, [r7, #2] @ movhi
|
|
bne .L2180
|
|
movw r3, #2390
|
|
movw r1, #2396
|
|
ldrh r3, [r5, r3]
|
|
ldrh r1, [r5, r1]
|
|
ldr r0, [r5, #2336]
|
|
str r2, [r4, #1796]
|
|
mul r3, r2, r3
|
|
str r3, [r5, #2452]
|
|
mul r3, r3, r1
|
|
str r3, [r5, #2432]
|
|
ldr r3, .L2197+28
|
|
ldrh r3, [r3, #6]
|
|
sub r0, r0, r3
|
|
movw r3, #2324
|
|
ldrh r1, [r5, r3]
|
|
sub r0, r0, r2
|
|
bl __aeabi_uidiv
|
|
ldrh r3, [r6, #16]
|
|
add r2, r6, #76
|
|
mov r5, r2
|
|
strh r0, [r7, #-8] @ movhi
|
|
ldrh r0, [r6, #14]
|
|
add r7, r2, #240
|
|
lsr r1, r3, #6
|
|
and r3, r3, #63
|
|
strb r3, [r4, #-3514]
|
|
strh r1, [r2, #2] @ movhi
|
|
ldrh r1, [r6, #18]
|
|
ldrb r3, [r4, #-3585] @ zero_extendqisi2
|
|
strh r0, [r2] @ movhi
|
|
strh r1, [r5, #48]! @ movhi
|
|
ldrh r1, [r6, #20]
|
|
strb r3, [r4, #-3512]
|
|
mvn r3, #0
|
|
strh r3, [r7, #-4] @ movhi
|
|
mov r3, #0
|
|
strh r3, [r2, #238] @ movhi
|
|
lsr ip, r1, #6
|
|
and r1, r1, #63
|
|
strb r1, [r4, #-3466]
|
|
ldrb r1, [r4, #-3584] @ zero_extendqisi2
|
|
strh ip, [r5, #2] @ movhi
|
|
strb r3, [r4, #-3278]
|
|
strb r1, [r4, #-3464]
|
|
ldrh r1, [r6, #22]
|
|
strb r3, [r4, #-3276]
|
|
strh r1, [r2, #96]! @ movhi
|
|
ldrh r1, [r6, #24]
|
|
mov r6, r2
|
|
lsr ip, r1, #6
|
|
and r1, r1, #63
|
|
strb r1, [r4, #-3418]
|
|
ldrb r1, [r4, #-3583] @ zero_extendqisi2
|
|
strh ip, [r2, #2] @ movhi
|
|
strb r1, [r4, #-3416]
|
|
str r3, [r4, #-3344]
|
|
ldr r1, [r4, #-3564]
|
|
str r3, [r4, #-3356]
|
|
str r3, [r4, #-3364]
|
|
str r3, [r4, #-3348]
|
|
str r1, [r4, #-3324]
|
|
str r3, [r4, #-3320]
|
|
ldr r1, [r4, #-3332]
|
|
str r3, [r4, #-3312]
|
|
str r3, [r4, #-3352]
|
|
ldr r3, [r4, #-3556]
|
|
ldr r2, [r4, #-3328]
|
|
cmp r3, r1
|
|
strhi r3, [r4, #-3332]
|
|
ldr r3, [r4, #-3560]
|
|
cmp r3, r2
|
|
strhi r3, [r4, #-3328]
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
beq .L2183
|
|
ldr r0, .L2197+32
|
|
bl make_superblock
|
|
.L2183:
|
|
ldrh r2, [r5]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L2184
|
|
ldr r0, .L2197+36
|
|
bl make_superblock
|
|
.L2184:
|
|
ldrh r2, [r6]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
beq .L2185
|
|
ldr r0, .L2197+40
|
|
bl make_superblock
|
|
.L2185:
|
|
ldrh r2, [r7, #-4]
|
|
movw r3, #65535
|
|
sub r0, r7, #4
|
|
cmp r2, r3
|
|
beq .L2186
|
|
bl make_superblock
|
|
.L2186:
|
|
mov r0, #0
|
|
b .L2168
|
|
.L2198:
|
|
.align 2
|
|
.L2197:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2+1760
|
|
.word .LC109
|
|
.word .LANCHOR0+2392
|
|
.word 1179929683
|
|
.word .LANCHOR2-3596
|
|
.word .LANCHOR0+2456
|
|
.word .LANCHOR2-3520
|
|
.word .LANCHOR2-3472
|
|
.word .LANCHOR2-3424
|
|
.fnend
|
|
.size FtlLoadSysInfo, .-FtlLoadSysInfo
|
|
.align 2
|
|
.global FtlDumpBlockInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlDumpBlockInfo, %function
|
|
FtlDumpBlockInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 64
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
movw r3, #2390
|
|
ldr r5, .L2211
|
|
.pad #92
|
|
sub sp, sp, #92
|
|
ubfx r0, r0, #10, #16
|
|
mov r9, r1
|
|
ldr r7, .L2211+4
|
|
ldrh r8, [r5, r3]
|
|
bl P2V_block_in_plane
|
|
ldr r1, .L2211+8
|
|
mov r6, r0
|
|
ldr r0, .L2211+12
|
|
bl printk
|
|
ldr r2, [r7, #-3540]
|
|
lsl r3, r6, #1
|
|
mov r1, r6
|
|
ldr r0, .L2211+16
|
|
ldrh r2, [r2, r3]
|
|
bl printk
|
|
add r0, sp, #88
|
|
strh r6, [r0, #-48]! @ movhi
|
|
bl make_superblock
|
|
ldrb r4, [r5, #152] @ zero_extendqisi2
|
|
str r7, [sp, #36]
|
|
adds r3, r4, #0
|
|
movne r3, #1
|
|
cmp r9, #0
|
|
movne r3, #0
|
|
cmp r3, #0
|
|
moveq r4, r3
|
|
beq .L2200
|
|
mov r0, r6
|
|
bl ftl_get_blk_mode
|
|
cmp r0, #1
|
|
mov r4, r0
|
|
movweq r3, #2392
|
|
ldrheq r8, [r5, r3]
|
|
.L2200:
|
|
movw r3, #2390
|
|
mov r6, #0
|
|
mov r9, #36
|
|
ldrh r3, [r5, r3]
|
|
mov r2, r8
|
|
mov r1, r4
|
|
ldr r0, .L2211+20
|
|
bl printk
|
|
.L2201:
|
|
ldr r3, .L2211+24
|
|
add ip, sp, #54
|
|
movw r10, #65535
|
|
ldrh r3, [r3]
|
|
mov r7, r3
|
|
ldr r3, .L2211+4
|
|
ldr r2, [r3, #-2696]
|
|
ldr r0, [r3, #-536]
|
|
ldr r3, [r3, #-2692]
|
|
str r2, [sp, #24]
|
|
ldr r2, .L2211+28
|
|
str r3, [sp, #32]
|
|
ldrh r1, [r2]
|
|
ldrh lr, [r2, #2]
|
|
mov r2, #0
|
|
mov r5, r2
|
|
str r1, [sp, #28]
|
|
.L2202:
|
|
uxth r3, r2
|
|
cmp r7, r3
|
|
bhi .L2204
|
|
ldr fp, .L2211+32
|
|
mov r10, #0
|
|
mov r2, r4
|
|
mov r1, r5
|
|
bl FlashReadPages
|
|
.L2205:
|
|
uxth r3, r10
|
|
cmp r5, r3
|
|
bhi .L2206
|
|
add r6, r6, #1
|
|
uxth r6, r6
|
|
cmp r8, r6
|
|
bne .L2201
|
|
.L2207:
|
|
mov r0, #0
|
|
add sp, sp, #92
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2204:
|
|
ldrh r3, [ip, #2]!
|
|
cmp r3, r10
|
|
beq .L2203
|
|
mla r1, r9, r5, r0
|
|
orr r3, r6, r3, lsl #10
|
|
str r3, [r1, #4]
|
|
ldr r3, [sp, #28]
|
|
mul r3, r3, r5
|
|
add fp, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, fp
|
|
ldr fp, [sp, #24]
|
|
bic r3, r3, #3
|
|
add r3, fp, r3
|
|
str r3, [r1, #8]
|
|
mul r3, lr, r5
|
|
add r5, r5, #1
|
|
uxth r5, r5
|
|
add fp, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, fp
|
|
ldr fp, [sp, #32]
|
|
bic r3, r3, #3
|
|
add r3, fp, r3
|
|
str r3, [r1, #12]
|
|
.L2203:
|
|
add r2, r2, #1
|
|
b .L2202
|
|
.L2206:
|
|
ldr r3, [sp, #36]
|
|
mul r0, r9, r10
|
|
ldrh r1, [sp, #40]
|
|
add r10, r10, #1
|
|
ldr ip, [r3, #-536]
|
|
add r2, ip, r0
|
|
ldr lr, [r2, #8]
|
|
ldr r3, [r2, #12]
|
|
ldr r7, [lr, #4]
|
|
str r7, [sp, #20]
|
|
ldr lr, [lr]
|
|
str lr, [sp, #16]
|
|
ldr lr, [r3, #12]
|
|
str lr, [sp, #12]
|
|
ldr lr, [r3, #8]
|
|
str lr, [sp, #8]
|
|
ldr lr, [r3, #4]
|
|
str lr, [sp, #4]
|
|
ldr r3, [r3]
|
|
str r3, [sp]
|
|
ldr r3, [r2, #4]
|
|
ldr r2, [ip, r0]
|
|
mov r0, fp
|
|
bl printk
|
|
b .L2205
|
|
.L2212:
|
|
.align 2
|
|
.L2211:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR3+141
|
|
.word .LC110
|
|
.word .LC111
|
|
.word .LC112
|
|
.word .LANCHOR0+2324
|
|
.word .LANCHOR0+2400
|
|
.word .LC113
|
|
.fnend
|
|
.size FtlDumpBlockInfo, .-FtlDumpBlockInfo
|
|
.align 2
|
|
.global FtlScanAllBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlScanAllBlock, %function
|
|
FtlScanAllBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 56
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r6, #0
|
|
ldr r5, .L2224
|
|
.pad #84
|
|
sub sp, sp, #84
|
|
ldr r1, .L2224+4
|
|
ldr r0, .L2224+8
|
|
bl printk
|
|
.L2214:
|
|
ldr r3, .L2224+12
|
|
uxth r0, r6
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
bhi .L2222
|
|
mov r0, #0
|
|
add sp, sp, #84
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2222:
|
|
add r4, sp, #80
|
|
movw r9, #65535
|
|
strh r0, [r4, #-48]! @ movhi
|
|
mov r10, #36
|
|
bl ftl_get_blk_mode
|
|
uxth r1, r6
|
|
ldr ip, [r5, #-3540]
|
|
mov r3, r0
|
|
ldr r0, .L2224+16
|
|
lsl r2, r1, #1
|
|
ldrh r2, [ip, r2]
|
|
bl printk
|
|
mov r0, r4
|
|
bl make_superblock
|
|
ldr r3, .L2224+20
|
|
add ip, sp, #46
|
|
ldr r0, [r5, #-536]
|
|
ldr r7, [r5, #-2692]
|
|
ldrh r2, [r3]
|
|
ldrh lr, [r3, #76]
|
|
ldrh r8, [r3, #78]
|
|
str r2, [sp, #24]
|
|
ldr r2, [r5, #-2696]
|
|
str r2, [sp, #28]
|
|
mov r2, #0
|
|
mov r4, r2
|
|
.L2215:
|
|
ldr r1, [sp, #24]
|
|
uxth r3, r2
|
|
cmp r1, r3
|
|
bhi .L2217
|
|
ldr r9, .L2224+24
|
|
mov r7, #0
|
|
mov r8, #36
|
|
mov r2, #0
|
|
mov r1, r4
|
|
bl FlashReadPages
|
|
.L2218:
|
|
uxth r3, r7
|
|
cmp r4, r3
|
|
bhi .L2219
|
|
ldr r9, .L2224+28
|
|
mov r7, #0
|
|
mov r8, #36
|
|
mov r2, #1
|
|
mov r1, r4
|
|
ldr r0, [r5, #-536]
|
|
bl FlashReadPages
|
|
.L2220:
|
|
uxth r3, r7
|
|
cmp r4, r3
|
|
bhi .L2221
|
|
add r6, r6, #1
|
|
b .L2214
|
|
.L2217:
|
|
ldrh r3, [ip, #2]!
|
|
cmp r3, r9
|
|
beq .L2216
|
|
mla r1, r10, r4, r0
|
|
lsl r3, r3, #10
|
|
str r3, [r1, #4]
|
|
mul r3, lr, r4
|
|
add fp, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, fp
|
|
ldr fp, [sp, #28]
|
|
bic r3, r3, #3
|
|
add r3, fp, r3
|
|
str r3, [r1, #8]
|
|
mul r3, r8, r4
|
|
add r4, r4, #1
|
|
uxth r4, r4
|
|
add fp, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, fp
|
|
bic r3, r3, #3
|
|
add r3, r7, r3
|
|
str r3, [r1, #12]
|
|
.L2216:
|
|
add r2, r2, #1
|
|
b .L2215
|
|
.L2219:
|
|
mul r0, r8, r7
|
|
ldr ip, [r5, #-536]
|
|
ldrh r1, [sp, #32]
|
|
add r7, r7, #1
|
|
add r2, ip, r0
|
|
ldr lr, [r2, #8]
|
|
ldr r3, [r2, #12]
|
|
ldr r10, [lr, #4]
|
|
str r10, [sp, #20]
|
|
ldr lr, [lr]
|
|
str lr, [sp, #16]
|
|
ldr lr, [r3, #12]
|
|
str lr, [sp, #12]
|
|
ldr lr, [r3, #8]
|
|
str lr, [sp, #8]
|
|
ldr lr, [r3, #4]
|
|
str lr, [sp, #4]
|
|
ldr r3, [r3]
|
|
str r3, [sp]
|
|
ldr r3, [r2, #4]
|
|
ldr r2, [ip, r0]
|
|
mov r0, r9
|
|
bl printk
|
|
b .L2218
|
|
.L2221:
|
|
mul r0, r8, r7
|
|
ldr ip, [r5, #-536]
|
|
ldrh r1, [sp, #32]
|
|
add r7, r7, #1
|
|
add r2, ip, r0
|
|
ldr lr, [r2, #8]
|
|
ldr r3, [r2, #12]
|
|
ldr r10, [lr, #4]
|
|
str r10, [sp, #20]
|
|
ldr lr, [lr]
|
|
str lr, [sp, #16]
|
|
ldr lr, [r3, #12]
|
|
str lr, [sp, #12]
|
|
ldr lr, [r3, #8]
|
|
str lr, [sp, #8]
|
|
ldr lr, [r3, #4]
|
|
str lr, [sp, #4]
|
|
ldr r3, [r3]
|
|
str r3, [sp]
|
|
ldr r3, [r2, #4]
|
|
ldr r2, [ip, r0]
|
|
mov r0, r9
|
|
bl printk
|
|
b .L2220
|
|
.L2225:
|
|
.align 2
|
|
.L2224:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR3+158
|
|
.word .LC110
|
|
.word .LANCHOR0+2334
|
|
.word .LC114
|
|
.word .LANCHOR0+2324
|
|
.word .LC115
|
|
.word .LC116
|
|
.fnend
|
|
.size FtlScanAllBlock, .-FtlScanAllBlock
|
|
.align 2
|
|
.global ftl_scan_all_ppa
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_scan_all_ppa, %function
|
|
ftl_scan_all_ppa:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L2243
|
|
movw r2, #2388
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #36
|
|
sub sp, sp, #36
|
|
ldr r5, .L2243+4
|
|
ldrh r4, [r3, r2]
|
|
add r10, r5, #1760
|
|
str r3, [sp, #28]
|
|
sub r4, r4, #16
|
|
lsl r9, r4, #10
|
|
.L2227:
|
|
ldr r3, .L2243+8
|
|
ldrh r3, [r3]
|
|
cmp r4, r3
|
|
blt .L2235
|
|
ldr r1, .L2243+12
|
|
ldr r0, .L2243+16
|
|
add sp, sp, #36
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
b printk
|
|
.L2235:
|
|
uxth r7, r4
|
|
mov r0, r7
|
|
bl ftl_get_blk_mode
|
|
ldr r3, [sp, #28]
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L2228
|
|
ldr r3, .L2243+20
|
|
ldrh r2, [r3]
|
|
cmp r4, r2
|
|
bge .L2229
|
|
ldrh r3, [r3, #72]
|
|
cmp r4, r3
|
|
blt .L2229
|
|
.L2228:
|
|
cmp r0, #1
|
|
bne .L2230
|
|
.L2229:
|
|
ldr r3, .L2243+24
|
|
mov r8, #-2147483648
|
|
ldrh r6, [r3]
|
|
.L2231:
|
|
mov r3, r8
|
|
mov r2, r6
|
|
mov r1, r4
|
|
ldr r0, .L2243+28
|
|
bl printk
|
|
mov r0, r7
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
beq .L2232
|
|
mov r3, r8
|
|
mov r2, r6
|
|
mov r1, r4
|
|
ldr r0, .L2243+32
|
|
bl printk
|
|
.L2232:
|
|
ldr fp, .L2243+36
|
|
mov r7, #0
|
|
.L2233:
|
|
cmp r7, r6
|
|
bne .L2234
|
|
add r4, r4, #1
|
|
add r9, r9, #1024
|
|
b .L2227
|
|
.L2230:
|
|
ldr r3, .L2243+40
|
|
mov r8, #0
|
|
ldrh r6, [r3]
|
|
b .L2231
|
|
.L2234:
|
|
add r3, r8, r9
|
|
mov r2, #0
|
|
add r3, r3, r7
|
|
mov r1, #1
|
|
str r3, [r5, #1764]
|
|
mov r0, r10
|
|
ldr r3, [r5, #-524]
|
|
add r7, r7, #1
|
|
str r2, [r5, #1760]
|
|
str r3, [r5, #1768]
|
|
ldr r3, [r5, #-500]
|
|
str r3, [r5, #1772]
|
|
bl FlashReadPages
|
|
ldr r2, [r5, #1768]
|
|
mov r0, fp
|
|
ldr r3, [r5, #1772]
|
|
ldr r1, [r2, #4]
|
|
str r1, [sp, #16]
|
|
ldr r2, [r2]
|
|
ldr r1, [r5, #1764]
|
|
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, [r5, #1760]
|
|
ldr r3, [r3]
|
|
bl printk
|
|
b .L2233
|
|
.L2244:
|
|
.align 2
|
|
.L2243:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2388
|
|
.word .LANCHOR3+174
|
|
.word .LC120
|
|
.word .LANCHOR0+2332
|
|
.word .LANCHOR0+2392
|
|
.word .LC117
|
|
.word .LC118
|
|
.word .LC119
|
|
.word .LANCHOR0+2390
|
|
.fnend
|
|
.size ftl_scan_all_ppa, .-ftl_scan_all_ppa
|
|
.align 2
|
|
.global FlashProgPages
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashProgPages, %function
|
|
FlashProgPages:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 72
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #84
|
|
sub sp, sp, #84
|
|
ldr r5, .L2298
|
|
str r1, [sp, #12]
|
|
ldr ip, [r5, #48]
|
|
ldrb r8, [r5, #36] @ zero_extendqisi2
|
|
str r3, [sp, #24]
|
|
ldrb ip, [ip, #19] @ zero_extendqisi2
|
|
cmp r8, #0
|
|
str ip, [sp, #20]
|
|
bne .L2246
|
|
ldr r3, .L2298+4
|
|
mov r4, r0
|
|
mov r9, r2
|
|
ldrb r3, [r3, #477] @ zero_extendqisi2
|
|
str r3, [sp, #16]
|
|
add r3, r5, #1216
|
|
add r3, r3, #4
|
|
str r3, [sp, #28]
|
|
.L2247:
|
|
ldr r3, [sp, #12]
|
|
cmp r8, r3
|
|
bcc .L2260
|
|
ldr r7, .L2298+8
|
|
mov r6, #0
|
|
.L2261:
|
|
ldrb r3, [r5, #2234] @ zero_extendqisi2
|
|
cmp r6, r3
|
|
bcc .L2263
|
|
ldr r3, [sp, #24]
|
|
cmp r3, #0
|
|
bne .L2264
|
|
.L2272:
|
|
mov r0, #0
|
|
b .L2245
|
|
.L2246:
|
|
bl FlashProgSlc2KPages
|
|
.L2245:
|
|
add sp, sp, #84
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2260:
|
|
ldr r3, [sp, #12]
|
|
mov r7, #36
|
|
mul r7, r7, r8
|
|
add r2, sp, #36
|
|
mov r1, r9
|
|
sub r3, r3, r8
|
|
uxtb r3, r3
|
|
add fp, r4, r7
|
|
str r3, [sp]
|
|
mov r0, fp
|
|
add r3, sp, #40
|
|
bl LogAddr2PhyAddr
|
|
ldrb r3, [r5, #2234] @ zero_extendqisi2
|
|
mov r10, r0
|
|
ldr r0, [sp, #40]
|
|
cmp r3, r0
|
|
mvnls r3, #0
|
|
strls r3, [r4, r7]
|
|
bls .L2250
|
|
ldrb r3, [r5, #2244] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
add r3, r5, r0, lsl #4
|
|
moveq r10, #0
|
|
ldr r3, [r3, #2112]
|
|
cmp r3, #0
|
|
beq .L2252
|
|
uxtb r0, r0
|
|
bl FlashWaitCmdDone
|
|
.L2252:
|
|
ldr r3, [sp, #40]
|
|
mov r1, #0
|
|
cmp r10, #0
|
|
add r2, r5, r3, lsl #4
|
|
str r1, [r2, #2116]
|
|
ldr r1, [sp, #36]
|
|
str fp, [r2, #2112]
|
|
str r1, [r2, #2108]
|
|
addne r1, r7, #36
|
|
addne r1, r4, r1
|
|
strne r1, [r2, #2116]
|
|
add r2, r5, r3
|
|
ldrb r6, [r2, #2236] @ zero_extendqisi2
|
|
add r3, r5, r3, lsl #4
|
|
strb r6, [r3, #2104]
|
|
mov r0, r6
|
|
ldrb r3, [r5, #2234] @ zero_extendqisi2
|
|
cmp r3, #1
|
|
bne .L2254
|
|
bl NandcWaitFlashReady
|
|
.L2255:
|
|
ldr r3, [sp, #20]
|
|
sub r3, r3, #1
|
|
cmp r3, #7
|
|
bhi .L2256
|
|
add r3, r5, r6
|
|
ldrb r3, [r3, #2068] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L2256
|
|
mov r3, #0
|
|
ldr r2, [sp, #28]
|
|
ldrb r1, [r5, #1217] @ zero_extendqisi2
|
|
mov r0, r6
|
|
bl HynixSetRRPara
|
|
.L2256:
|
|
mov r0, r6
|
|
bl NandcFlashCs
|
|
cmp r9, #1
|
|
mov r0, r6
|
|
bne .L2257
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L2257
|
|
bl flash_enter_slc_mode
|
|
.L2258:
|
|
ldr r1, [sp, #36]
|
|
mov r0, r6
|
|
bl FlashProgFirstCmd
|
|
ldr r3, [fp, #12]
|
|
mov r1, #1
|
|
ldr r2, [sp, #16]
|
|
mov r0, r6
|
|
str r3, [sp]
|
|
ldr r3, [fp, #8]
|
|
bl NandcXferData
|
|
cmp r10, #0
|
|
beq .L2259
|
|
ldr r1, [sp, #36]
|
|
mov r0, r6
|
|
bl FlashProgDpFirstCmd
|
|
ldr r3, [sp, #40]
|
|
mov r0, r6
|
|
ldr r1, [sp, #36]
|
|
add r7, r7, #36
|
|
add r7, r4, r7
|
|
add r3, r5, r3, lsl #2
|
|
ldr r2, [r3, #1180]
|
|
adds r2, r2, #0
|
|
movne r2, #1
|
|
bl FlashWaitReadyEN
|
|
ldr r3, [r5, #40]
|
|
mov r0, r6
|
|
ldr r1, [sp, #36]
|
|
add r1, r1, r3
|
|
bl FlashProgDpSecondCmd
|
|
ldr r3, [r7, #12]
|
|
mov r1, #1
|
|
ldr r2, [sp, #16]
|
|
mov r0, r6
|
|
str r3, [sp]
|
|
ldr r3, [r7, #8]
|
|
bl NandcXferData
|
|
.L2259:
|
|
ldr r1, [sp, #36]
|
|
mov r0, r6
|
|
add r8, r8, r10
|
|
bl FlashProgSecondCmd
|
|
mov r0, r6
|
|
bl NandcFlashDeCs
|
|
.L2250:
|
|
add r8, r8, #1
|
|
b .L2247
|
|
.L2254:
|
|
bl NandcFlashCs
|
|
ldr r3, [sp, #40]
|
|
mov r0, r6
|
|
ldr r1, [sp, #36]
|
|
add r3, r5, r3, lsl #2
|
|
ldr r2, [r3, #1180]
|
|
adds r2, r2, #0
|
|
movne r2, #1
|
|
bl FlashWaitReadyEN
|
|
mov r0, r6
|
|
bl NandcFlashDeCs
|
|
b .L2255
|
|
.L2257:
|
|
bl flash_exit_slc_mode
|
|
b .L2258
|
|
.L2263:
|
|
uxtb r0, r6
|
|
bl FlashWaitCmdDone
|
|
cmp r9, #1
|
|
bne .L2262
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L2262
|
|
ldrb r0, [r7, r6, lsl #4] @ zero_extendqisi2
|
|
bl flash_exit_slc_mode
|
|
.L2262:
|
|
add r6, r6, #1
|
|
b .L2261
|
|
.L2264:
|
|
ldr r5, .L2298+12
|
|
mov r6, #0
|
|
ldr r7, .L2298+16
|
|
.L2265:
|
|
ldr r3, [sp, #12]
|
|
cmp r6, r3
|
|
beq .L2272
|
|
ldr r3, [r4]
|
|
cmn r3, #1
|
|
bne .L2266
|
|
ldr r1, [r4, #4]
|
|
ldr r0, .L2298+20
|
|
bl printk
|
|
.L2267:
|
|
add r6, r6, #1
|
|
add r4, r4, #36
|
|
b .L2265
|
|
.L2266:
|
|
ldr r3, [sp, #12]
|
|
add r2, sp, #36
|
|
mov r1, r9
|
|
mov r0, r4
|
|
sub r3, r3, r6
|
|
uxtb r3, r3
|
|
str r3, [sp]
|
|
add r3, sp, #40
|
|
bl LogAddr2PhyAddr
|
|
ldr r2, [r5, #1732]
|
|
mov r3, #0
|
|
mov lr, r4
|
|
add ip, sp, #44
|
|
str r3, [r2]
|
|
ldr r2, [r5, #1736]
|
|
str r3, [r2]
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
mov r2, r9
|
|
ldr r3, [lr]
|
|
mov r1, #1
|
|
add r0, sp, #44
|
|
str r3, [ip]
|
|
ldr r3, [r5, #1732]
|
|
str r3, [sp, #52]
|
|
ldr r3, [r5, #1736]
|
|
str r3, [sp, #56]
|
|
bl FlashReadPages
|
|
ldr r8, [sp, #44]
|
|
cmn r8, #1
|
|
bne .L2268
|
|
ldr r1, [r4, #4]
|
|
ldr r0, .L2298+24
|
|
bl printk
|
|
str r8, [r4]
|
|
.L2268:
|
|
ldr r3, [r4, #12]
|
|
cmp r3, #0
|
|
beq .L2269
|
|
ldr r2, [r3]
|
|
ldr r3, [r5, #1736]
|
|
ldr r3, [r3]
|
|
cmp r2, r3
|
|
beq .L2269
|
|
ldr r1, [r4, #4]
|
|
ldr r0, .L2298+28
|
|
bl printk
|
|
mvn r3, #0
|
|
str r3, [r4]
|
|
.L2269:
|
|
ldr r3, [r4, #8]
|
|
cmp r3, #0
|
|
beq .L2267
|
|
ldr r2, [r3]
|
|
ldr r3, [r5, #1732]
|
|
ldr r3, [r3]
|
|
cmp r2, r3
|
|
beq .L2267
|
|
ldr r1, [r4, #4]
|
|
mov r0, r7
|
|
bl printk
|
|
mvn r3, #0
|
|
str r3, [r4]
|
|
b .L2267
|
|
.L2299:
|
|
.align 2
|
|
.L2298:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0+2104
|
|
.word .LANCHOR2
|
|
.word .LC108
|
|
.word .LC104
|
|
.word .LC105
|
|
.word .LC107
|
|
.fnend
|
|
.size FlashProgPages, .-FlashProgPages
|
|
.align 2
|
|
.global FlashTestBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashTestBlk, %function
|
|
FlashTestBlk:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 104
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, lr}
|
|
.save {r4, r5, lr}
|
|
.pad #108
|
|
sub sp, sp, #108
|
|
ldr r5, .L2304
|
|
ldr r3, [r5, #1716]
|
|
cmp r0, r3
|
|
movcc r4, #0
|
|
bcc .L2300
|
|
ldr r3, [r5, #1724]
|
|
mov r4, r0
|
|
mov r2, #32
|
|
add r0, sp, #40
|
|
mov r1, #165
|
|
str r0, [sp, #16]
|
|
str r3, [sp, #12]
|
|
bl ftl_memset
|
|
mov r2, #8
|
|
mov r1, #90
|
|
ldr r0, [r5, #1724]
|
|
bl ftl_memset
|
|
lsl r0, r4, #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r0, [sp, #8]
|
|
add r0, sp, #4
|
|
bl FlashEraseBlocks
|
|
mov r3, #1
|
|
add r0, sp, #4
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldr r4, [sp, #4]
|
|
mov r2, #1
|
|
mov r1, #0
|
|
add r0, sp, #4
|
|
adds r4, r4, #0
|
|
movne r4, #1
|
|
rsb r4, r4, #0
|
|
bl FlashEraseBlocks
|
|
.L2300:
|
|
mov r0, r4
|
|
add sp, sp, #108
|
|
@ sp needed
|
|
pop {r4, r5, pc}
|
|
.L2305:
|
|
.align 2
|
|
.L2304:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size FlashTestBlk, .-FlashTestBlk
|
|
.align 2
|
|
.global FlashMakeFactorBbt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashMakeFactorBbt, %function
|
|
FlashMakeFactorBbt:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 80
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L2357
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #84
|
|
sub sp, sp, #84
|
|
ldr r5, .L2357
|
|
mov r4, r2
|
|
ldr r3, [r2, #1728]
|
|
str r3, [sp, #24]
|
|
ldr r3, .L2357+4
|
|
ldrh r0, [r3, #136]
|
|
ldrh r1, [r3, #138]
|
|
smulbb r1, r1, r0
|
|
ldr r0, .L2357+8
|
|
uxth r1, r1
|
|
str r1, [sp, #4]
|
|
ldr r1, [r3, #48]
|
|
ldrb r1, [r1, #24] @ zero_extendqisi2
|
|
str r1, [sp, #28]
|
|
ldrh r1, [r3, #40]
|
|
ldrb r3, [r3, #36] @ zero_extendqisi2
|
|
str r1, [sp, #20]
|
|
cmp r3, #1
|
|
moveq r3, r1
|
|
mov r1, #1
|
|
lsleq r3, r3, #1
|
|
uxtheq r3, r3
|
|
streq r3, [sp, #20]
|
|
bl printk
|
|
ldr r0, [r4, #1728]
|
|
mov r2, #4096
|
|
mov r1, #0
|
|
ldr r4, .L2357+4
|
|
bl ftl_memset
|
|
ldr r3, [sp, #4]
|
|
lsr r3, r3, #4
|
|
str r3, [sp, #32]
|
|
mov r3, #0
|
|
str r3, [sp, #12]
|
|
.L2308:
|
|
ldrb r7, [sp, #12] @ zero_extendqisi2
|
|
ldrb r3, [r4, #2234] @ zero_extendqisi2
|
|
cmp r3, r7
|
|
bhi .L2335
|
|
add sp, sp, #84
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2335:
|
|
ldr r2, .L2357+12
|
|
lsl r3, r7, #1
|
|
ldrh r6, [r2, r3]
|
|
cmp r6, #0
|
|
bne .L2309
|
|
ldrh r2, [r4, #144]
|
|
mov r1, r6
|
|
ldr r0, [r5, #1696]
|
|
add fp, r4, r7, lsl #2
|
|
mov r8, r6
|
|
mov r9, r6
|
|
lsl r2, r2, #9
|
|
bl ftl_memset
|
|
add r3, r4, r7
|
|
str r6, [sp, #8]
|
|
ldrb r10, [r3, #2236] @ zero_extendqisi2
|
|
.L2310:
|
|
ldrh r3, [sp, #8]
|
|
ldr r2, [sp, #4]
|
|
str r3, [sp, #16]
|
|
cmp r3, r2
|
|
bcc .L2321
|
|
.L2320:
|
|
mov r2, r8
|
|
mov r1, r7
|
|
ldr r0, .L2357+16
|
|
bl printk
|
|
ldrb r3, [r4, #2234] @ zero_extendqisi2
|
|
ldr r2, [sp, #32]
|
|
mul r3, r2, r3
|
|
cmp r8, r3
|
|
blt .L2322
|
|
ldrh r2, [r4, #144]
|
|
mov r1, #0
|
|
ldr r0, [r5, #1696]
|
|
lsl r2, r2, #9
|
|
bl ftl_memset
|
|
.L2322:
|
|
cmp r7, #0
|
|
bne .L2324
|
|
add r3, r5, #1712
|
|
ldr r8, .L2357+20
|
|
add r3, r3, #4
|
|
ldrh r10, [r3]
|
|
mov r9, #1
|
|
.L2325:
|
|
ldrb r3, [r4, #37] @ zero_extendqisi2
|
|
cmp r3, r10
|
|
bhi .L2327
|
|
ldr r3, [sp, #4]
|
|
mov r10, #1
|
|
ldr r9, .L2357+20
|
|
sub fp, r3, #1
|
|
sub r8, r3, #50
|
|
uxth fp, fp
|
|
.L2328:
|
|
cmp fp, r8
|
|
bgt .L2330
|
|
ldrb r3, [r4, #37] @ zero_extendqisi2
|
|
ldr r2, [r5, #1716]
|
|
sub r3, r3, r2
|
|
cmp r6, r3
|
|
bcc .L2324
|
|
ldrh r2, [r4, #144]
|
|
mov r1, #0
|
|
ldr r0, [r5, #1696]
|
|
lsl r2, r2, #9
|
|
bl ftl_memset
|
|
.L2324:
|
|
ldr r3, [sp, #4]
|
|
ldrb r8, [sp, #12] @ zero_extendqisi2
|
|
ldr r9, .L2357+12
|
|
sub r6, r3, #1
|
|
ldr fp, .L2357+24
|
|
ldr r10, .L2357+28
|
|
uxth r6, r6
|
|
mul r8, r3, r8
|
|
add r9, r9, r7, lsl #1
|
|
.L2332:
|
|
mov r1, r7
|
|
mov r2, r6
|
|
mov r0, fp
|
|
bl printk
|
|
ldr r1, [r5, #1696]
|
|
.L2333:
|
|
lsr r2, r6, #5
|
|
and r3, r6, #31
|
|
ldr r2, [r1, r2, lsl #2]
|
|
lsr r3, r2, r3
|
|
ands r3, r3, #1
|
|
bne .L2334
|
|
ldr r2, [sp, #24]
|
|
add r0, sp, #44
|
|
strh r6, [r9] @ movhi
|
|
strh r10, [r2] @ movhi
|
|
strh r6, [r2, #2] @ movhi
|
|
strh r3, [r2, #8] @ movhi
|
|
mov r2, #1
|
|
ldr r3, [r5, #1696]
|
|
mov r1, r2
|
|
str r3, [sp, #52]
|
|
ldr r3, [r5, #1728]
|
|
str r3, [sp, #56]
|
|
add r3, r6, r8
|
|
lsl r3, r3, #10
|
|
str r3, [sp, #48]
|
|
bl FlashEraseBlocks
|
|
mov r3, #1
|
|
add r0, sp, #44
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldr r3, [sp, #44]
|
|
cmp r3, #0
|
|
beq .L2309
|
|
sub r6, r6, #1
|
|
uxth r6, r6
|
|
b .L2332
|
|
.L2321:
|
|
mvn r3, #0
|
|
strb r3, [sp, #42]
|
|
strb r3, [sp, #43]
|
|
ldr r3, [sp, #28]
|
|
tst r3, #1
|
|
beq .L2312
|
|
ldr r3, [fp, #1180]
|
|
add r2, sp, #42
|
|
mov r0, r10
|
|
add r3, r9, r3
|
|
mov r1, r3
|
|
str r3, [sp, #36]
|
|
bl FlashReadSpare
|
|
ldrb r2, [r4, #36] @ zero_extendqisi2
|
|
ldr r3, [sp, #36]
|
|
cmp r2, #1
|
|
bne .L2312
|
|
ldr r1, [r4, #40]
|
|
add r2, sp, #43
|
|
mov r0, r10
|
|
add r1, r3, r1
|
|
bl FlashReadSpare
|
|
ldrb r3, [sp, #42] @ zero_extendqisi2
|
|
ldrb r2, [sp, #43] @ zero_extendqisi2
|
|
and r3, r3, r2
|
|
strb r3, [sp, #42]
|
|
.L2312:
|
|
ldr r3, [sp, #28]
|
|
tst r3, #2
|
|
beq .L2314
|
|
ldr r3, [r4, #48]
|
|
add r2, sp, #43
|
|
mov r0, r10
|
|
ldrh r1, [r3, #10]
|
|
ldr r3, [fp, #1180]
|
|
sub r1, r1, #1
|
|
add r1, r1, r3
|
|
add r1, r1, r9
|
|
bl FlashReadSpare
|
|
.L2314:
|
|
ldr r2, [r4, #48]
|
|
ldrb r3, [r2, #7] @ zero_extendqisi2
|
|
cmp r3, #8
|
|
cmpne r3, #1
|
|
ldrb r3, [sp, #42] @ zero_extendqisi2
|
|
beq .L2315
|
|
ldrb r2, [r2, #18] @ zero_extendqisi2
|
|
cmp r2, #12
|
|
bne .L2316
|
|
.L2315:
|
|
cmp r3, #0
|
|
ldrbne r0, [sp, #43] @ zero_extendqisi2
|
|
clzne r0, r0
|
|
lsrne r0, r0, #5
|
|
bne .L2317
|
|
.L2337:
|
|
mov r0, #1
|
|
b .L2317
|
|
.L2316:
|
|
cmp r3, #255
|
|
bne .L2337
|
|
ldrb r0, [sp, #43] @ zero_extendqisi2
|
|
subs r0, r0, #255
|
|
movne r0, #1
|
|
.L2317:
|
|
ldr r3, [sp, #28]
|
|
tst r3, #4
|
|
beq .L2318
|
|
ldr r1, [fp, #1180]
|
|
mov r0, r10
|
|
add r1, r9, r1
|
|
bl SandiskProgTestBadBlock
|
|
.L2318:
|
|
cmp r0, #0
|
|
beq .L2319
|
|
ldr r2, [sp, #8]
|
|
mov r1, r7
|
|
ldr r0, .L2357+32
|
|
add r8, r8, #1
|
|
bl printk
|
|
ldr r3, [sp, #16]
|
|
mov ip, #1
|
|
ldr r2, [r5, #1696]
|
|
uxth r8, r8
|
|
and r0, r3, #31
|
|
lsr r1, r3, #5
|
|
ldr r3, [r2, r1, lsl #2]
|
|
orr r3, r3, ip, lsl r0
|
|
str r3, [r2, r1, lsl #2]
|
|
ldr r2, [sp, #32]
|
|
ldrb r3, [r4, #2234] @ zero_extendqisi2
|
|
mul r3, r2, r3
|
|
cmp r8, r3
|
|
bgt .L2320
|
|
.L2319:
|
|
ldr r3, [sp, #8]
|
|
add r3, r3, #1
|
|
str r3, [sp, #8]
|
|
ldr r3, [sp, #20]
|
|
add r9, r9, r3
|
|
b .L2310
|
|
.L2327:
|
|
mov r0, r10
|
|
bl FlashTestBlk
|
|
cmp r0, #0
|
|
beq .L2326
|
|
mov r1, r10
|
|
mov r0, r8
|
|
bl printk
|
|
ldr r1, [r5, #1696]
|
|
lsr r0, r10, #5
|
|
add r6, r6, #1
|
|
and r3, r10, #31
|
|
uxth r6, r6
|
|
ldr r2, [r1, r0, lsl #2]
|
|
orr r3, r2, r9, lsl r3
|
|
str r3, [r1, r0, lsl #2]
|
|
.L2326:
|
|
add r10, r10, #1
|
|
uxth r10, r10
|
|
b .L2325
|
|
.L2330:
|
|
mov r0, fp
|
|
bl FlashTestBlk
|
|
cmp r0, #0
|
|
beq .L2329
|
|
mov r1, fp
|
|
mov r0, r9
|
|
bl printk
|
|
ldr r1, [r5, #1696]
|
|
lsr r0, fp, #5
|
|
and r3, fp, #31
|
|
ldr r2, [r1, r0, lsl #2]
|
|
orr r3, r2, r10, lsl r3
|
|
str r3, [r1, r0, lsl #2]
|
|
.L2329:
|
|
sub fp, fp, #1
|
|
uxth fp, fp
|
|
b .L2328
|
|
.L2334:
|
|
sub r6, r6, #1
|
|
uxth r6, r6
|
|
b .L2333
|
|
.L2309:
|
|
ldr r3, [sp, #12]
|
|
add r3, r3, #1
|
|
str r3, [sp, #12]
|
|
b .L2308
|
|
.L2358:
|
|
.align 2
|
|
.L2357:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LC121
|
|
.word .LANCHOR2+1742
|
|
.word .LC123
|
|
.word .LC124
|
|
.word .LC125
|
|
.word -3872
|
|
.word .LC122
|
|
.fnend
|
|
.size FlashMakeFactorBbt, .-FlashMakeFactorBbt
|
|
.align 2
|
|
.global FtlLowFormatEraseBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLowFormatEraseBlock, %function
|
|
FtlLowFormatEraseBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L2404
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #28
|
|
sub sp, sp, #28
|
|
ldr r2, [r3, #-3612]
|
|
cmp r2, #0
|
|
movne r4, #0
|
|
bne .L2359
|
|
ldr r5, .L2404+4
|
|
mov r10, r3
|
|
ldr fp, .L2404+8
|
|
mov r9, r2
|
|
mov r6, r2
|
|
mov r4, r2
|
|
ldrb r3, [r5, #2244] @ zero_extendqisi2
|
|
mov r8, #36
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
str r3, [sp, #20]
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
str r0, [r10, #-548]
|
|
str r3, [sp, #12]
|
|
.L2361:
|
|
ldrh r0, [fp]
|
|
uxth r1, r9
|
|
cmp r0, r1
|
|
bhi .L2365
|
|
cmp r6, #0
|
|
beq .L2359
|
|
ldr r3, [sp, #12]
|
|
mov r8, #0
|
|
mov r2, r6
|
|
ldr r0, [r10, #-3608]
|
|
strb r8, [r5, #2244]
|
|
mov r9, #36
|
|
adds r7, r3, #0
|
|
movne r7, #1
|
|
mov r1, r7
|
|
bl FlashEraseBlocks
|
|
ldrb r3, [sp, #20] @ zero_extendqisi2
|
|
strb r3, [r5, #2244]
|
|
.L2367:
|
|
uxth r2, r8
|
|
cmp r6, r2
|
|
bhi .L2369
|
|
ldr r3, [sp, #4]
|
|
cmp r3, #0
|
|
bne .L2370
|
|
uxth r7, r7
|
|
mov r3, #6
|
|
str r3, [sp, #16]
|
|
mov r3, #1
|
|
str r3, [sp, #12]
|
|
.L2371:
|
|
ldr r6, .L2404
|
|
mov r9, #0
|
|
.L2380:
|
|
ldr fp, .L2404+4
|
|
mov r10, #0
|
|
mov r5, r10
|
|
.L2372:
|
|
ldr r3, .L2404+8
|
|
ldrh r1, [r3]
|
|
uxth r3, r10
|
|
cmp r1, r3
|
|
bhi .L2375
|
|
cmp r5, #0
|
|
beq .L2359
|
|
mov r3, #1
|
|
mov r8, #0
|
|
mov r2, r7
|
|
mov r1, r5
|
|
ldr r0, [r6, #-3608]
|
|
strb r8, [fp, #2244]
|
|
bl FlashProgPages
|
|
ldrb r3, [sp, #20] @ zero_extendqisi2
|
|
strb r3, [fp, #2244]
|
|
mov fp, #36
|
|
.L2377:
|
|
uxth r3, r8
|
|
cmp r5, r3
|
|
bhi .L2379
|
|
ldr r3, [sp, #16]
|
|
add r9, r9, r3
|
|
ldr r3, [sp, #12]
|
|
uxth r9, r9
|
|
cmp r3, r9
|
|
bhi .L2380
|
|
mov r8, #0
|
|
mov r9, #36
|
|
.L2381:
|
|
uxth r3, r8
|
|
cmp r5, r3
|
|
ldr r3, [sp, #4]
|
|
bhi .L2383
|
|
adds r0, r3, #0
|
|
ldr r3, [sp, #8]
|
|
movne r0, #1
|
|
cmp r3, #63
|
|
orrls r0, r0, #1
|
|
cmp r0, #0
|
|
beq .L2359
|
|
mov r2, r5
|
|
mov r1, r7
|
|
ldr r0, [r6, #-3608]
|
|
bl FlashEraseBlocks
|
|
.L2359:
|
|
mov r0, r4
|
|
add sp, sp, #28
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2365:
|
|
uxth r1, r9
|
|
ldr ip, [r10, #-3608]
|
|
mov r3, #0
|
|
mul r0, r8, r1
|
|
str r3, [ip, r0]
|
|
add r0, r5, r1
|
|
ldrb r0, [r0, #2350] @ zero_extendqisi2
|
|
ldr r1, [sp, #8]
|
|
bl V2P_block
|
|
ldr r3, [sp, #4]
|
|
mov r7, r0
|
|
cmp r3, #0
|
|
beq .L2362
|
|
bl IsBlkInVendorPart
|
|
cmp r0, #0
|
|
bne .L2363
|
|
.L2362:
|
|
mov r0, r7
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
addne r4, r4, #1
|
|
uxthne r4, r4
|
|
bne .L2363
|
|
ldr r3, .L2404+12
|
|
lsl r7, r7, #10
|
|
ldr ip, [r10, #-3608]
|
|
ldrh r1, [r3]
|
|
mla ip, r8, r6, ip
|
|
mul r1, r6, r1
|
|
add r6, r6, #1
|
|
uxth r6, r6
|
|
str r0, [ip, #8]
|
|
str r7, [ip, #4]
|
|
add r0, r1, #3
|
|
cmp r1, #0
|
|
movlt r1, r0
|
|
ldr r0, [r10, #-496]
|
|
bic r1, r1, #3
|
|
add r1, r0, r1
|
|
str r1, [ip, #12]
|
|
.L2363:
|
|
add r9, r9, #1
|
|
b .L2361
|
|
.L2369:
|
|
mul r2, r9, r8
|
|
ldr r1, [r10, #-3608]
|
|
add ip, r1, r2
|
|
ldr r2, [r1, r2]
|
|
cmn r2, #1
|
|
bne .L2368
|
|
ldr r0, [ip, #4]
|
|
add r4, r4, #1
|
|
uxth r4, r4
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
.L2368:
|
|
add r8, r8, #1
|
|
b .L2367
|
|
.L2370:
|
|
movw r3, #2392
|
|
ldrh r3, [r5, r3]
|
|
str r3, [sp, #12]
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
ldreq r3, [sp, #12]
|
|
movne r7, #1
|
|
moveq r7, #1
|
|
strne r7, [sp, #16]
|
|
lsreq r3, r3, #2
|
|
streq r3, [sp, #16]
|
|
b .L2371
|
|
.L2375:
|
|
uxth r3, r10
|
|
mov r2, #36
|
|
ldr r0, [r6, #-3608]
|
|
mul r1, r2, r3
|
|
add r3, fp, r3
|
|
mov r2, #0
|
|
str r2, [r0, r1]
|
|
ldr r1, [sp, #8]
|
|
ldrb r0, [r3, #2350] @ zero_extendqisi2
|
|
bl V2P_block
|
|
ldr r3, [sp, #4]
|
|
mov r8, r0
|
|
cmp r3, #0
|
|
beq .L2373
|
|
bl IsBlkInVendorPart
|
|
cmp r0, #0
|
|
bne .L2374
|
|
.L2373:
|
|
mov r0, r8
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
bne .L2374
|
|
ldr r1, [r6, #-3608]
|
|
mov r3, #36
|
|
add r8, r9, r8, lsl #10
|
|
mla r1, r3, r5, r1
|
|
ldr r3, [r6, #-508]
|
|
str r3, [r1, #8]
|
|
ldr r3, .L2404+12
|
|
str r8, [r1, #4]
|
|
ldrh r3, [r3]
|
|
mul r3, r5, r3
|
|
add r5, r5, #1
|
|
uxth r5, r5
|
|
add r0, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, r0
|
|
ldr r0, [r6, #-504]
|
|
bic r3, r3, #3
|
|
add r3, r0, r3
|
|
str r3, [r1, #12]
|
|
.L2374:
|
|
add r10, r10, #1
|
|
b .L2372
|
|
.L2379:
|
|
mul r3, fp, r8
|
|
ldr r2, [r6, #-3608]
|
|
add r1, r2, r3
|
|
ldr r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L2378
|
|
ldr r0, [r1, #4]
|
|
add r4, r4, #1
|
|
uxth r4, r4
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
.L2378:
|
|
add r8, r8, #1
|
|
b .L2377
|
|
.L2383:
|
|
cmp r3, #0
|
|
beq .L2382
|
|
mul r3, r9, r8
|
|
ldr r2, [r6, #-3608]
|
|
add r1, r2, r3
|
|
ldr r3, [r2, r3]
|
|
cmp r3, #0
|
|
bne .L2382
|
|
ldr r0, [r1, #4]
|
|
mov r1, #1
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlFreeSysBlkQueueIn
|
|
.L2382:
|
|
add r8, r8, #1
|
|
b .L2381
|
|
.L2405:
|
|
.align 2
|
|
.L2404:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2324
|
|
.word .LANCHOR0+2402
|
|
.fnend
|
|
.size FtlLowFormatEraseBlock, .-FtlLowFormatEraseBlock
|
|
.align 2
|
|
.global FtlBbmTblFlush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlBbmTblFlush, %function
|
|
FtlBbmTblFlush:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
ldr r4, .L2421
|
|
ldr r5, [r4, #-3612]
|
|
cmp r5, #0
|
|
bne .L2408
|
|
ldr r7, .L2421+4
|
|
sub r10, r4, #436
|
|
ldr r8, .L2421+8
|
|
mov r1, r5
|
|
ldr r0, [r4, #-524]
|
|
ldr r3, [r4, #-500]
|
|
mov r6, r7
|
|
sub r7, r7, #2400
|
|
ldrh r2, [r6], #80
|
|
mov r9, r7
|
|
str r0, [r4, #1768]
|
|
str r3, [r4, #1772]
|
|
bl ftl_memset
|
|
.L2409:
|
|
ldrh r3, [r8]
|
|
cmp r5, r3
|
|
blt .L2410
|
|
ldr r6, [r4, #1772]
|
|
mov r2, #16
|
|
mov r1, #255
|
|
ldr r5, .L2421+12
|
|
ldr fp, .L2421+16
|
|
mov r0, r6
|
|
bl ftl_memset
|
|
ldr r3, .L2421+20
|
|
strh r3, [r6] @ movhi
|
|
ldr r3, [r7, #2464]
|
|
str r3, [r6, #4]
|
|
movw r3, #2456
|
|
ldrh r3, [r7, r3]
|
|
strh r3, [r6, #2] @ movhi
|
|
ldrh r3, [r5, #4]
|
|
strh r3, [r6, #8] @ movhi
|
|
ldrh r3, [r5, #6]
|
|
strh r3, [r6, #10] @ movhi
|
|
ldr r3, [r7, #2320]
|
|
mov r7, #0
|
|
mov r8, r7
|
|
strh r3, [r6, #12] @ movhi
|
|
.L2411:
|
|
ldr r3, [r4, #-524]
|
|
mov r10, #0
|
|
ldrh r2, [r5, #2]
|
|
ldrh r1, [r5]
|
|
str r3, [r4, #1768]
|
|
ldr r3, [r4, #-500]
|
|
str r10, [r4, #1760]
|
|
str r3, [r4, #1772]
|
|
orr r3, r2, r1, lsl #10
|
|
ldrh r0, [r6, #10]
|
|
str r3, [r4, #1764]
|
|
ldrh r3, [r5, #4]
|
|
str r0, [sp]
|
|
mov r0, fp
|
|
bl printk
|
|
ldr r3, .L2421+24
|
|
ldrh r2, [r5, #2]
|
|
ldrh r3, [r3]
|
|
sub r3, r3, #1
|
|
cmp r2, r3
|
|
blt .L2412
|
|
ldr r3, [r9, #2464]
|
|
ldrh r2, [r5]
|
|
ldr r0, [r4, #-3608]
|
|
add r3, r3, #1
|
|
strh r10, [r5, #2] @ movhi
|
|
str r3, [r9, #2464]
|
|
str r3, [r6, #4]
|
|
ldrh r3, [r5, #4]
|
|
strh r2, [r6, #8] @ movhi
|
|
strh r2, [r5, #4] @ movhi
|
|
mov r2, #1
|
|
strh r3, [r5] @ movhi
|
|
mov r1, r2
|
|
lsl r3, r3, #10
|
|
str r3, [r4, #1764]
|
|
str r3, [r0, #4]
|
|
bl FlashEraseBlocks
|
|
.L2412:
|
|
mov r3, #1
|
|
ldr r0, .L2421+28
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldrh r3, [r5, #2]
|
|
add r3, r3, #1
|
|
strh r3, [r5, #2] @ movhi
|
|
ldr r3, [r4, #1760]
|
|
cmn r3, #1
|
|
bne .L2413
|
|
add r7, r7, #1
|
|
ldr r1, [r4, #1764]
|
|
uxth r7, r7
|
|
ldr r0, .L2421+32
|
|
bl printk
|
|
cmp r7, #3
|
|
bls .L2411
|
|
mov r2, r7
|
|
ldr r1, [r4, #1764]
|
|
ldr r0, .L2421+36
|
|
bl printk
|
|
mov r3, #1
|
|
str r3, [r4, #-3612]
|
|
.L2408:
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2410:
|
|
ldrh r2, [r10]
|
|
ldr r3, [r4, #1768]
|
|
ldr r1, [r6, #4]!
|
|
mul r0, r5, r2
|
|
lsl r2, r2, #2
|
|
add r5, r5, #1
|
|
add r0, r3, r0, lsl #2
|
|
bl ftl_memcpy
|
|
b .L2409
|
|
.L2416:
|
|
mov r8, #1
|
|
b .L2411
|
|
.L2413:
|
|
add r8, r8, #1
|
|
cmp r8, #1
|
|
ble .L2416
|
|
cmp r3, #256
|
|
bne .L2408
|
|
b .L2411
|
|
.L2422:
|
|
.align 2
|
|
.L2421:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2400
|
|
.word .LANCHOR0+2346
|
|
.word .LANCHOR0+2456
|
|
.word .LC126
|
|
.word -3887
|
|
.word .LANCHOR0+2392
|
|
.word .LANCHOR2+1760
|
|
.word .LC127
|
|
.word .LC128
|
|
.fnend
|
|
.size FtlBbmTblFlush, .-FtlBbmTblFlush
|
|
.align 2
|
|
.global allocate_data_superblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type allocate_data_superblock, %function
|
|
allocate_data_superblock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #28
|
|
sub sp, sp, #28
|
|
ldr r4, .L2473
|
|
ldr r3, [r4, #-3612]
|
|
cmp r3, #0
|
|
bne .L2424
|
|
sub r9, r4, #3520
|
|
mov r7, r0
|
|
sub r3, r9, #8
|
|
str r3, [sp, #12]
|
|
.L2425:
|
|
ldr r3, .L2473+4
|
|
ldr r8, .L2473+8
|
|
ldrb r2, [r7, #8] @ zero_extendqisi2
|
|
cmp r7, r3
|
|
bne .L2426
|
|
ldrh r0, [r9, #-4]
|
|
ldr lr, [r4, #-2708]
|
|
lsr ip, r0, #1
|
|
mul r5, lr, r0
|
|
add r1, ip, #1
|
|
add r1, r1, r5, lsr #2
|
|
ldr r5, [r8, #2248]
|
|
uxth r1, r1
|
|
cmp r5, #0
|
|
beq .L2427
|
|
ldr r5, [r4, #-3308]
|
|
cmp r5, #39
|
|
bhi .L2427
|
|
cmp r5, #2
|
|
bls .L2453
|
|
cmp lr, #0
|
|
movne r0, #0
|
|
andeq r0, r0, #1
|
|
cmp r0, #0
|
|
moveq r1, ip
|
|
beq .L2427
|
|
.L2453:
|
|
mov r1, #0
|
|
b .L2428
|
|
.L2426:
|
|
cmp r2, #1
|
|
bne .L2453
|
|
ldr r1, .L2473+12
|
|
ldrh r1, [r1]
|
|
cmp r1, #1
|
|
beq .L2453
|
|
ldrb r1, [r8, #152] @ zero_extendqisi2
|
|
cmp r1, #0
|
|
bne .L2453
|
|
ldr ip, [r8, #2248]
|
|
ldrh r0, [r9, #-4]
|
|
cmp ip, #0
|
|
lsr r1, r0, #3
|
|
beq .L2427
|
|
ldr ip, [r4, #-3308]
|
|
cmp ip, #1
|
|
rsbls r0, r0, r0, lsl #3
|
|
ubfxls r1, r0, #3, #16
|
|
.L2427:
|
|
cmp r1, #0
|
|
subne r1, r1, #1
|
|
uxthne r1, r1
|
|
.L2428:
|
|
ldr r0, [sp, #12]
|
|
bl List_pop_index_node
|
|
ldrh r2, [r9, #-4]
|
|
uxth r3, r0
|
|
ldr r10, .L2473+16
|
|
str r3, [sp, #4]
|
|
sub r2, r2, #1
|
|
strh r2, [r9, #-4] @ movhi
|
|
ldrh r2, [r10]
|
|
cmp r2, r3
|
|
bls .L2425
|
|
ldr r2, [r4, #-3540]
|
|
lsl r5, r3, #1
|
|
ldrh r6, [r2, r5]
|
|
cmp r6, #0
|
|
bne .L2425
|
|
ldrh r3, [sp, #4]
|
|
mov r0, r7
|
|
strh r3, [r7] @ movhi
|
|
bl make_superblock
|
|
ldrb r2, [r7, #7] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
beq .L2470
|
|
ldr r0, [r4, #-3608]
|
|
add r3, r7, #16
|
|
ldrh ip, [r10, #-8]
|
|
mov r1, #36
|
|
str r3, [sp, #8]
|
|
add fp, r7, #16
|
|
mov r2, r0
|
|
str r1, [sp, #16]
|
|
mla r3, r1, ip, r0
|
|
mov ip, r6
|
|
.L2431:
|
|
cmp r3, r2
|
|
bne .L2433
|
|
ldr r2, [r8, #2248]
|
|
adds r2, r2, #0
|
|
movne r2, #1
|
|
cmp r7, r9
|
|
movne r2, #0
|
|
cmp r2, #0
|
|
beq .L2434
|
|
ldr r2, [r4, #-3604]
|
|
ldrh r2, [r2, r5]
|
|
cmp r2, #40
|
|
movhi r2, #0
|
|
strbhi r2, [r4, #-3512]
|
|
.L2434:
|
|
ldrb r2, [r7, #8] @ zero_extendqisi2
|
|
ldr r1, [r4, #-3604]
|
|
ldr fp, .L2473+20
|
|
cmp r2, #0
|
|
ldrh r2, [r1, r5]
|
|
bne .L2435
|
|
cmp r2, #0
|
|
ldrhne r0, [fp]
|
|
moveq r2, #2
|
|
addne r2, r2, r0
|
|
ldr r0, [sp, #4]
|
|
strh r2, [r1, r5] @ movhi
|
|
mov r1, #0
|
|
ldr r2, [r4, #-3324]
|
|
add r2, r2, #1
|
|
str r2, [r4, #-3324]
|
|
bl ftl_set_blk_mode
|
|
.L2438:
|
|
ldr r2, [r4, #-3604]
|
|
ldr r1, [r4, #-3312]
|
|
ldr ip, [r4, #-3324]
|
|
ldrh r2, [r2, r5]
|
|
ldrh r0, [fp]
|
|
cmp r2, r1
|
|
ldrh r1, [r10]
|
|
strhi r2, [r4, #-3312]
|
|
ldr r2, [r4, #-3320]
|
|
mla r0, ip, r0, r2
|
|
bl __aeabi_uidiv
|
|
ldr r1, [r4, #-480]
|
|
str r0, [r4, #-3316]
|
|
ldr r0, [r4, #-3608]
|
|
ldr r2, [r1, #16]
|
|
ldr ip, .L2473+24
|
|
add r2, r2, #1
|
|
str r2, [r1, #16]
|
|
mov r1, #36
|
|
mla r1, r1, r6, r0
|
|
add r2, r0, #4
|
|
add r1, r1, #40
|
|
.L2440:
|
|
add r2, r2, #36
|
|
cmp r1, r2
|
|
bne .L2441
|
|
ldrb r2, [r8, #152] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
beq .L2442
|
|
ldrb r2, [r7, #8] @ zero_extendqisi2
|
|
ldr r0, [r4, #-3608]
|
|
cmp r2, #1
|
|
mov r2, r6
|
|
moveq r1, #0
|
|
movne r1, #1
|
|
bl FlashEraseBlocks
|
|
.L2442:
|
|
ldrb r1, [r7, #8] @ zero_extendqisi2
|
|
mov r2, r6
|
|
ldr r0, [r4, #-3608]
|
|
mov r10, #0
|
|
bl FlashEraseBlocks
|
|
mov fp, r10
|
|
mov r1, #36
|
|
.L2444:
|
|
uxth r2, r10
|
|
cmp r6, r2
|
|
bhi .L2446
|
|
cmp fp, #0
|
|
ble .L2447
|
|
ldr r0, [sp, #4]
|
|
bl update_multiplier_value
|
|
bl FtlBbmTblFlush
|
|
.L2447:
|
|
ldrb r1, [r7, #7] @ zero_extendqisi2
|
|
cmp r1, #0
|
|
bne .L2448
|
|
.L2470:
|
|
ldr r2, [r4, #-3540]
|
|
mvn r1, #0
|
|
strh r1, [r2, r5] @ movhi
|
|
b .L2425
|
|
.L2433:
|
|
str ip, [r2, #8]
|
|
movw lr, #65535
|
|
str ip, [r2, #12]
|
|
add r2, r2, #36
|
|
ldrh r1, [fp], #2
|
|
cmp r1, lr
|
|
ldrne lr, [sp, #16]
|
|
lslne r1, r1, #10
|
|
mlane lr, lr, r6, r0
|
|
addne r6, r6, #1
|
|
uxthne r6, r6
|
|
strne r1, [lr, #4]
|
|
b .L2431
|
|
.L2435:
|
|
add r2, r2, #1
|
|
ldr r0, [sp, #4]
|
|
strh r2, [r1, r5] @ movhi
|
|
ldr r2, [r4, #-3320]
|
|
add r2, r2, #1
|
|
str r2, [r4, #-3320]
|
|
bl ftl_set_blk_mode.part.9
|
|
b .L2438
|
|
.L2441:
|
|
ldr r0, [r2, #-36]
|
|
and r0, r0, ip
|
|
str r0, [r2, #-36]
|
|
b .L2440
|
|
.L2446:
|
|
mul r2, r1, r10
|
|
ldr r0, [r4, #-3608]
|
|
add ip, r0, r2
|
|
ldr r2, [r0, r2]
|
|
cmn r2, #1
|
|
bne .L2445
|
|
ldr r0, [ip, #4]
|
|
add fp, fp, #1
|
|
str r1, [sp, #20]
|
|
str r2, [sp, #16]
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
ldr r2, [sp, #16]
|
|
ldr r3, [sp, #8]
|
|
ldr r1, [sp, #20]
|
|
strh r2, [r3] @ movhi
|
|
ldrb r2, [r7, #7] @ zero_extendqisi2
|
|
sub r2, r2, #1
|
|
strb r2, [r7, #7]
|
|
.L2445:
|
|
ldr r3, [sp, #8]
|
|
add r10, r10, #1
|
|
add r3, r3, #2
|
|
str r3, [sp, #8]
|
|
b .L2444
|
|
.L2448:
|
|
movw r2, #2390
|
|
ldrh r3, [sp, #4]
|
|
ldrh r2, [r8, r2]
|
|
strh r3, [r7] @ movhi
|
|
smulbb r2, r2, r1
|
|
mov r1, #0
|
|
strh r1, [r7, #2] @ movhi
|
|
strb r1, [r7, #6]
|
|
ldr r1, [r4, #-3332]
|
|
uxth r2, r2
|
|
strh r2, [r7, #4] @ movhi
|
|
str r1, [r7, #12]
|
|
add r1, r1, #1
|
|
str r1, [r4, #-3332]
|
|
ldrh r3, [r7]
|
|
ldr r1, [r4, #-3540]
|
|
lsl r3, r3, #1
|
|
strh r2, [r1, r3] @ movhi
|
|
.L2424:
|
|
mov r0, #0
|
|
add sp, sp, #28
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2474:
|
|
.align 2
|
|
.L2473:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2-3424
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2344
|
|
.word .LANCHOR0+2332
|
|
.word .LANCHOR0+2382
|
|
.word -1024
|
|
.fnend
|
|
.size allocate_data_superblock, .-allocate_data_superblock
|
|
.align 2
|
|
.global FtlGcFreeBadSuperBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcFreeBadSuperBlk, %function
|
|
FtlGcFreeBadSuperBlk:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
ldr r4, .L2488
|
|
ldrh r3, [r4, #-2]
|
|
cmp r3, #0
|
|
beq .L2476
|
|
ldr r9, .L2488+4
|
|
mov r6, #0
|
|
ldr r8, .L2488+8
|
|
ldr r10, .L2488+12
|
|
str r0, [sp]
|
|
.L2477:
|
|
ldrh r2, [r8]
|
|
uxth r3, r6
|
|
cmp r2, r3
|
|
bhi .L2483
|
|
bl FtlGcReFreshBadBlk
|
|
.L2476:
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2483:
|
|
uxtah r3, r9, r6
|
|
ldr r1, [sp]
|
|
mov fp, #0
|
|
ldrb r0, [r3, #2350] @ zero_extendqisi2
|
|
bl V2P_block
|
|
mov r7, r0
|
|
.L2478:
|
|
ldrh r3, [r4, #-2]
|
|
uxth r5, fp
|
|
cmp r3, r5
|
|
addls r6, r6, #1
|
|
bls .L2477
|
|
.L2482:
|
|
uxth r3, fp
|
|
lsl r1, r3, #1
|
|
ldrh r1, [r4, r1]
|
|
cmp r1, r7
|
|
bne .L2479
|
|
mov r1, r7
|
|
mov r0, r10
|
|
str r3, [sp, #4]
|
|
bl printk
|
|
mov r0, r7
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
ldr r3, [sp, #4]
|
|
ldrh r1, [r4, #-2]
|
|
add r3, r4, r3, lsl #1
|
|
.L2480:
|
|
cmp r5, r1
|
|
bcc .L2481
|
|
sub r1, r1, #1
|
|
strh r1, [r4, #-2] @ movhi
|
|
.L2479:
|
|
add fp, fp, #1
|
|
b .L2478
|
|
.L2481:
|
|
ldrh r0, [r3, #2]!
|
|
add r5, r5, #1
|
|
uxth r5, r5
|
|
strh r0, [r3, #-2] @ movhi
|
|
b .L2480
|
|
.L2489:
|
|
.align 2
|
|
.L2488:
|
|
.word .LANCHOR2-2656
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2324
|
|
.word .LC129
|
|
.fnend
|
|
.size FtlGcFreeBadSuperBlk, .-FtlGcFreeBadSuperBlk
|
|
.align 2
|
|
.global update_vpc_list
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type update_vpc_list, %function
|
|
update_vpc_list:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L2499
|
|
lsl r3, r0, #1
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
ldr r1, [r2, #-3540]
|
|
ldrh r3, [r1, r3]
|
|
cmp r3, #0
|
|
bne .L2491
|
|
sub r1, r2, #3280
|
|
mov r4, r0
|
|
ldrh r0, [r1, #-4]
|
|
sub r5, r2, #3520
|
|
cmp r0, r4
|
|
mvneq r3, #0
|
|
strheq r3, [r1, #-4] @ movhi
|
|
beq .L2493
|
|
ldrh r1, [r5]
|
|
cmp r1, r4
|
|
beq .L2490
|
|
sub r1, r2, #3472
|
|
ldrh r1, [r1]
|
|
cmp r1, r4
|
|
beq .L2490
|
|
sub r2, r2, #3424
|
|
ldrh r2, [r2]
|
|
cmp r2, r4
|
|
beq .L2490
|
|
.L2493:
|
|
mov r1, r4
|
|
ldr r0, .L2499+4
|
|
bl List_remove_node
|
|
ldrh r3, [r5, #-12]
|
|
mov r0, r4
|
|
sub r3, r3, #1
|
|
strh r3, [r5, #-12] @ movhi
|
|
bl free_data_superblock
|
|
mov r0, r4
|
|
bl FtlGcFreeBadSuperBlk
|
|
mov r3, #1
|
|
.L2490:
|
|
mov r0, r3
|
|
pop {r4, r5, r6, pc}
|
|
.L2491:
|
|
bl List_update_data_list
|
|
mov r3, #0
|
|
b .L2490
|
|
.L2500:
|
|
.align 2
|
|
.L2499:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2-3544
|
|
.fnend
|
|
.size update_vpc_list, .-update_vpc_list
|
|
.align 2
|
|
.global decrement_vpc_count
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type decrement_vpc_count, %function
|
|
decrement_vpc_count:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
movw r3, #65535
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
cmp r0, r3
|
|
mov r4, r0
|
|
beq .L2502
|
|
ldr r6, .L2512
|
|
lsl r5, r0, #1
|
|
ldr r3, [r6, #-3540]
|
|
ldrh r2, [r3, r5]
|
|
cmp r2, #0
|
|
subne r2, r2, #1
|
|
strhne r2, [r3, r5] @ movhi
|
|
bne .L2502
|
|
mov r1, r0
|
|
ldr r0, .L2512+4
|
|
bl printk
|
|
ldr r3, [r6, #-3540]
|
|
sub r7, r6, #3520
|
|
mov r2, #32
|
|
sub r8, r7, #8
|
|
mov r1, r4
|
|
mov r0, r8
|
|
strh r2, [r3, r5] @ movhi
|
|
bl test_node_in_list
|
|
cmp r0, #0
|
|
beq .L2504
|
|
mov r1, r4
|
|
mov r0, r8
|
|
bl List_remove_node
|
|
ldrh r3, [r7, #-4]
|
|
mov r0, r4
|
|
sub r3, r3, #1
|
|
strh r3, [r7, #-4] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
ldr r3, [r6, #-3540]
|
|
mov r1, r4
|
|
ldr r0, .L2512+8
|
|
ldrh r2, [r3, r5]
|
|
bl printk
|
|
.L2504:
|
|
mov r0, r4
|
|
bl FtlGcRefreshBlock
|
|
.L2507:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L2502:
|
|
ldr r5, .L2512+12
|
|
movw r3, #65535
|
|
ldrh r0, [r5]
|
|
cmp r0, r3
|
|
strheq r4, [r5] @ movhi
|
|
beq .L2507
|
|
cmp r4, r0
|
|
beq .L2507
|
|
bl update_vpc_list
|
|
adds r0, r0, #0
|
|
strh r4, [r5] @ movhi
|
|
movne r0, #1
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L2513:
|
|
.align 2
|
|
.L2512:
|
|
.word .LANCHOR2
|
|
.word .LC130
|
|
.word .LC131
|
|
.word .LANCHOR2-380
|
|
.fnend
|
|
.size decrement_vpc_count, .-decrement_vpc_count
|
|
.align 2
|
|
.global FtlSlcSuperblockCheck
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSlcSuperblockCheck, %function
|
|
FtlSlcSuperblockCheck:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldrh r3, [r0, #4]
|
|
cmp r3, #0
|
|
bxeq lr
|
|
ldrh r2, [r0]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bxeq lr
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
ldrb r3, [r0, #6] @ zero_extendqisi2
|
|
ldr r5, .L2529
|
|
ldr r6, .L2529+4
|
|
add r3, r0, r3, lsl #1
|
|
ldrh r3, [r3, #16]
|
|
.L2518:
|
|
movw r1, #65535
|
|
cmp r3, r1
|
|
beq .L2520
|
|
ldrb r2, [r4, #8] @ zero_extendqisi2
|
|
cmp r2, #1
|
|
bne .L2521
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L2521
|
|
ldrh r3, [r4, #2]
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r6, r3]
|
|
cmp r3, r1
|
|
bne .L2521
|
|
ldrh r3, [r4, #4]
|
|
ldrh r0, [r4]
|
|
sub r3, r3, #1
|
|
strh r3, [r4, #4] @ movhi
|
|
bl decrement_vpc_count
|
|
ldrh r2, [r4, #4]
|
|
cmp r2, #0
|
|
bne .L2520
|
|
ldrh r3, [r4, #2]
|
|
strb r2, [r4, #6]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #2] @ movhi
|
|
pop {r4, r5, r6, pc}
|
|
.L2520:
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
ldr r2, .L2529+8
|
|
add r3, r3, #1
|
|
ldrh r2, [r2]
|
|
uxtb r3, r3
|
|
strb r3, [r4, #6]
|
|
cmp r2, r3
|
|
ldrheq r3, [r4, #2]
|
|
addeq r3, r3, #1
|
|
strheq r3, [r4, #2] @ movhi
|
|
moveq r3, #0
|
|
strbeq r3, [r4, #6]
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
add r3, r4, r3, lsl #1
|
|
ldrh r3, [r3, #16]
|
|
b .L2518
|
|
.L2521:
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
adds r3, r3, #0
|
|
movne r3, #1
|
|
cmp r2, #1
|
|
movne r3, #0
|
|
cmp r3, #0
|
|
popeq {r4, r5, r6, pc}
|
|
movw r3, #2392
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [r5, r3]
|
|
cmp r2, r3
|
|
popcc {r4, r5, r6, pc}
|
|
ldrh r3, [r4]
|
|
ldr r2, .L2529+12
|
|
ldrh r0, [r4, #4]
|
|
ldr r1, [r2, #-3540]
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r1, r3]
|
|
sub r2, r2, r0
|
|
strh r2, [r1, r3] @ movhi
|
|
movw r2, #2390
|
|
ldrh r2, [r5, r2]
|
|
mov r3, #0
|
|
strh r3, [r4, #4] @ movhi
|
|
strb r3, [r4, #6]
|
|
strh r2, [r4, #2] @ movhi
|
|
pop {r4, r5, r6, pc}
|
|
.L2530:
|
|
.align 2
|
|
.L2529:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2-2620
|
|
.word .LANCHOR0+2324
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size FtlSlcSuperblockCheck, .-FtlSlcSuperblockCheck
|
|
.align 2
|
|
.global get_new_active_ppa
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type get_new_active_ppa, %function
|
|
get_new_active_ppa:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
mov r3, #0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
strb r3, [r0, #10]
|
|
mov r4, r0
|
|
ldrb r3, [r0, #6] @ zero_extendqisi2
|
|
ldr r5, .L2547
|
|
ldr r7, .L2547+4
|
|
add r3, r0, r3, lsl #1
|
|
ldrh r2, [r3, #16]
|
|
.L2532:
|
|
movw r1, #65535
|
|
cmp r2, r1
|
|
beq .L2533
|
|
ldrb r3, [r4, #8] @ zero_extendqisi2
|
|
ldrh r6, [r4, #2]
|
|
cmp r3, #1
|
|
ldrh r3, [r4, #4]
|
|
bne .L2535
|
|
ldr r0, .L2547+8
|
|
ldrb r0, [r0, #152] @ zero_extendqisi2
|
|
cmp r0, #0
|
|
bne .L2535
|
|
lsl r0, r6, #1
|
|
ldrh r0, [r7, r0]
|
|
cmp r0, r1
|
|
bne .L2535
|
|
sub r3, r3, #1
|
|
ldrh r0, [r4]
|
|
strh r3, [r4, #4] @ movhi
|
|
bl decrement_vpc_count
|
|
.L2533:
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
ldrh r2, [r5]
|
|
add r3, r3, #1
|
|
uxtb r3, r3
|
|
cmp r2, r3
|
|
strb r3, [r4, #6]
|
|
ldrheq r3, [r4, #2]
|
|
addeq r3, r3, #1
|
|
strheq r3, [r4, #2] @ movhi
|
|
moveq r3, #0
|
|
strbeq r3, [r4, #6]
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
add r3, r4, r3, lsl #1
|
|
ldrh r2, [r3, #16]
|
|
b .L2532
|
|
.L2535:
|
|
ldr r7, .L2547+4
|
|
orr r6, r6, r2, lsl #10
|
|
sub r3, r3, #1
|
|
strh r3, [r4, #4] @ movhi
|
|
.L2536:
|
|
ldrb r3, [r4, #6] @ zero_extendqisi2
|
|
movw r1, #65535
|
|
ldrh r0, [r5]
|
|
.L2538:
|
|
add r3, r3, #1
|
|
uxtb r3, r3
|
|
cmp r3, r0
|
|
ldrheq r3, [r4, #2]
|
|
addeq r3, r3, #1
|
|
strheq r3, [r4, #2] @ movhi
|
|
moveq r3, #0
|
|
add r2, r4, r3, lsl #1
|
|
ldrh r2, [r2, #16]
|
|
cmp r2, r1
|
|
beq .L2538
|
|
strb r3, [r4, #6]
|
|
ldrb r3, [r4, #8] @ zero_extendqisi2
|
|
cmp r3, #1
|
|
bne .L2531
|
|
ldr r2, .L2547+8
|
|
ldrb r3, [r2, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
ldrh r3, [r4, #2]
|
|
bne .L2540
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r7, r3]
|
|
cmp r3, r1
|
|
bne .L2531
|
|
ldrh r3, [r4, #4]
|
|
cmp r3, #0
|
|
beq .L2531
|
|
sub r3, r3, #1
|
|
ldrh r0, [r4]
|
|
strh r3, [r4, #4] @ movhi
|
|
bl decrement_vpc_count
|
|
b .L2536
|
|
.L2540:
|
|
movw r1, #2392
|
|
ldrh r1, [r2, r1]
|
|
cmp r3, r1
|
|
bcc .L2531
|
|
ldrh r3, [r4]
|
|
ldr r1, .L2547+12
|
|
ldrh ip, [r4, #4]
|
|
ldr r0, [r1, #-3540]
|
|
lsl r3, r3, #1
|
|
ldrh r1, [r0, r3]
|
|
sub r1, r1, ip
|
|
strh r1, [r0, r3] @ movhi
|
|
movw r1, #2390
|
|
ldrh r2, [r2, r1]
|
|
mov r3, #0
|
|
strh r3, [r4, #4] @ movhi
|
|
strb r3, [r4, #6]
|
|
strh r2, [r4, #2] @ movhi
|
|
.L2531:
|
|
mov r0, r6
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L2548:
|
|
.align 2
|
|
.L2547:
|
|
.word .LANCHOR0+2324
|
|
.word .LANCHOR2-2620
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size get_new_active_ppa, .-get_new_active_ppa
|
|
.align 2
|
|
.global FtlVpcTblFlush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVpcTblFlush, %function
|
|
FtlVpcTblFlush:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
ldr r4, .L2567
|
|
ldr r3, [r4, #-3612]
|
|
cmp r3, #0
|
|
bne .L2551
|
|
ldr r2, [r4, #-524]
|
|
sub r5, r4, #3296
|
|
ldr r7, [r4, #-500]
|
|
sub r8, r5, #300
|
|
ldr r6, .L2567+4
|
|
mov r1, #255
|
|
str r2, [r4, #1768]
|
|
ldrh r2, [r5, #-4]
|
|
str r7, [r4, #1772]
|
|
add r9, r6, #2400
|
|
str r3, [r7, #12]
|
|
strh r2, [r7, #2] @ movhi
|
|
ldr r2, .L2567+8
|
|
strh r2, [r7] @ movhi
|
|
ldr r2, [r4, #-3292]
|
|
stmib r7, {r2, r3}
|
|
ldr r3, .L2567+12
|
|
str r3, [r4, #-3596]
|
|
ldr r3, .L2567+16
|
|
str r3, [r4, #-3592]
|
|
ldrh r3, [r5, #2]
|
|
strh r3, [r8, #8] @ movhi
|
|
movw r3, #2346
|
|
ldrh r3, [r6, r3]
|
|
strb r3, [r4, #-3586]
|
|
sub r3, r4, #3520
|
|
ldrh r2, [r3]
|
|
strh r2, [r8, #14] @ movhi
|
|
ldrh r2, [r3, #2]
|
|
ldrb r3, [r4, #-3514] @ zero_extendqisi2
|
|
orr r3, r3, r2, lsl #6
|
|
strh r3, [r8, #16] @ movhi
|
|
ldrb r3, [r4, #-3512] @ zero_extendqisi2
|
|
strb r3, [r4, #-3585]
|
|
sub r3, r4, #3472
|
|
ldrh r2, [r3]
|
|
strh r2, [r8, #18] @ movhi
|
|
ldrh r2, [r3, #2]
|
|
ldrb r3, [r4, #-3466] @ zero_extendqisi2
|
|
orr r3, r3, r2, lsl #6
|
|
strh r3, [r8, #20] @ movhi
|
|
ldrb r3, [r4, #-3464] @ zero_extendqisi2
|
|
strb r3, [r4, #-3584]
|
|
sub r3, r4, #3424
|
|
ldrh r2, [r3]
|
|
strh r2, [r8, #22] @ movhi
|
|
ldrh r2, [r3, #2]
|
|
ldrb r3, [r4, #-3418] @ zero_extendqisi2
|
|
ldr r0, [r4, #1768]
|
|
orr r3, r3, r2, lsl #6
|
|
strh r3, [r8, #24] @ movhi
|
|
ldrb r3, [r4, #-3416] @ zero_extendqisi2
|
|
strb r3, [r4, #-3583]
|
|
ldr r3, [r4, #-3324]
|
|
str r3, [r4, #-3564]
|
|
ldr r3, [r4, #-3332]
|
|
str r3, [r4, #-3556]
|
|
ldr r3, [r4, #-3328]
|
|
str r3, [r4, #-3560]
|
|
sub r3, r4, #2656
|
|
ldrh r2, [r3, #-10]
|
|
ldrh r3, [r3, #-8]
|
|
strh r2, [r8, #44] @ movhi
|
|
ldrh r2, [r9]
|
|
strh r3, [r5, #-254] @ movhi
|
|
bl ftl_memset
|
|
mov r1, r8
|
|
mov r2, #48
|
|
movw r8, #2332
|
|
ldr r0, [r4, #1768]
|
|
bl ftl_memcpy
|
|
ldrh r2, [r6, r8]
|
|
ldr r0, [r4, #1768]
|
|
ldr r1, [r4, #-3540]
|
|
lsl r2, r2, #1
|
|
add r0, r0, #48
|
|
bl ftl_memcpy
|
|
ldrh r0, [r6, r8]
|
|
ldr r3, [r4, #1768]
|
|
ldr r1, [r6, #32]
|
|
lsr r2, r0, #3
|
|
lsl r0, r0, #1
|
|
add r0, r0, #51
|
|
add r2, r2, #4
|
|
bic r0, r0, #3
|
|
add r0, r3, r0
|
|
bl ftl_memcpy
|
|
movw r3, #2436
|
|
str r9, [sp, #4]
|
|
ldrh r3, [r6, r3]
|
|
cmp r3, #0
|
|
beq .L2552
|
|
ldrh r0, [r6, r8]
|
|
movw r3, #2428
|
|
ldrh r2, [r6, r3]
|
|
ldr r1, [r4, #-452]
|
|
lsr r3, r0, #3
|
|
lsl r2, r2, #2
|
|
add r3, r3, r0, lsl #1
|
|
ldr r0, [r4, #1768]
|
|
add r3, r3, #52
|
|
ubfx r3, r3, #2, #14
|
|
add r0, r0, r3, lsl #2
|
|
bl ftl_memcpy
|
|
.L2552:
|
|
ldr r10, .L2567+20
|
|
mov r8, #0
|
|
movw r9, #65535
|
|
sub r5, r5, #4
|
|
mov r0, #0
|
|
mov fp, r10
|
|
bl FtlUpdateVaildLpn
|
|
.L2553:
|
|
ldr r3, [r4, #-524]
|
|
ldrh r1, [r5, #2]
|
|
ldrh r2, [r5]
|
|
str r3, [r4, #1768]
|
|
ldr r3, [r4, #-500]
|
|
str r3, [r4, #1772]
|
|
orr r3, r1, r2, lsl #10
|
|
str r3, [r4, #1764]
|
|
ldrh r3, [r10]
|
|
sub r3, r3, #1
|
|
cmp r1, r3
|
|
blt .L2554
|
|
mov r3, #0
|
|
ldrh r9, [r5, #4]
|
|
strh r3, [r5, #2] @ movhi
|
|
strh r2, [r5, #4] @ movhi
|
|
bl FtlFreeSysBlkQueueOut
|
|
ldr r3, [r4, #-3332]
|
|
strh r0, [r5] @ movhi
|
|
add r2, r3, #1
|
|
str r3, [r4, #-3292]
|
|
str r2, [r4, #-3332]
|
|
lsl r2, r0, #10
|
|
str r2, [r4, #1764]
|
|
str r3, [r7, #4]
|
|
strh r0, [r7, #2] @ movhi
|
|
.L2554:
|
|
ldrb r3, [r6, #36] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L2555
|
|
ldr r3, [sp, #4]
|
|
ldr r0, [r4, #-524]
|
|
ldrh r1, [r3]
|
|
bl js_hash
|
|
str r0, [r7, #12]
|
|
.L2555:
|
|
mov r3, #1
|
|
ldr r0, .L2567+24
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldrh r3, [r5, #2]
|
|
ldr r2, [r4, #1760]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
cmn r2, #1
|
|
strh r3, [r5, #2] @ movhi
|
|
bne .L2556
|
|
cmp r3, #1
|
|
add r8, r8, #1
|
|
ldrheq r3, [fp]
|
|
uxth r8, r8
|
|
subeq r3, r3, #1
|
|
strheq r3, [r5, #2] @ movhi
|
|
cmp r8, #3
|
|
bls .L2553
|
|
mov r2, r8
|
|
ldr r1, [r4, #1764]
|
|
ldr r0, .L2567+28
|
|
bl printk
|
|
mov r3, #1
|
|
str r3, [r4, #-3612]
|
|
.L2551:
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2556:
|
|
cmp r3, #1
|
|
cmpne r2, #256
|
|
beq .L2553
|
|
movw r3, #65535
|
|
cmp r9, r3
|
|
beq .L2551
|
|
mov r1, #1
|
|
mov r0, r9
|
|
bl FtlFreeSysBlkQueueIn
|
|
b .L2551
|
|
.L2568:
|
|
.align 2
|
|
.L2567:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word -3932
|
|
.word 1179929683
|
|
.word 1342177379
|
|
.word .LANCHOR0+2392
|
|
.word .LANCHOR2+1760
|
|
.word .LC132
|
|
.fnend
|
|
.size FtlVpcTblFlush, .-FtlVpcTblFlush
|
|
.align 2
|
|
.global FtlSuperblockPowerLostFix
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSuperblockPowerLostFix, %function
|
|
FtlSuperblockPowerLostFix:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 40
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.pad #40
|
|
sub sp, sp, #40
|
|
ldr r5, .L2585
|
|
ldr r10, [r5, #-3612]
|
|
cmp r10, #0
|
|
bne .L2569
|
|
ldr r8, .L2585+4
|
|
ldrb r3, [r8, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L2580
|
|
ldrb r3, [r0, #8] @ zero_extendqisi2
|
|
cmp r3, #1
|
|
ldrheq r7, [r0, #4]
|
|
moveq r10, r3
|
|
beq .L2571
|
|
.L2580:
|
|
mov r7, #12
|
|
.L2571:
|
|
mvn r3, #0
|
|
ldr r6, [r5, #-500]
|
|
str r3, [sp, #20]
|
|
mov r9, #0
|
|
ldr r3, [r5, #-524]
|
|
movw r2, #61589
|
|
str r6, [sp, #16]
|
|
mov r4, r0
|
|
str r3, [sp, #12]
|
|
mvn r3, #2
|
|
str r3, [r6, #8]
|
|
mvn r3, #1
|
|
str r3, [r6, #12]
|
|
ldrh r3, [r0]
|
|
strh r9, [r6] @ movhi
|
|
strh r3, [r6, #2] @ movhi
|
|
ldr r3, [r5, #-524]
|
|
str r2, [r3]
|
|
ldr r2, .L2585+8
|
|
ldr r3, [r5, #-524]
|
|
str r2, [r3, #4]
|
|
.L2572:
|
|
subs r7, r7, #1
|
|
bcc .L2575
|
|
ldrh r3, [r4, #4]
|
|
cmp r3, #0
|
|
bne .L2573
|
|
.L2575:
|
|
ldrh r3, [r4]
|
|
ldr r1, [r5, #-3540]
|
|
ldrh r0, [r4, #4]
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r1, r3]
|
|
sub r2, r2, r0
|
|
strh r2, [r1, r3] @ movhi
|
|
movw r3, #2390
|
|
ldrh r3, [r8, r3]
|
|
strh r3, [r4, #2] @ movhi
|
|
mov r3, #0
|
|
strb r3, [r4, #6]
|
|
strh r3, [r4, #4] @ movhi
|
|
.L2569:
|
|
add sp, sp, #40
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L2573:
|
|
mov r0, r4
|
|
bl get_new_active_ppa
|
|
cmn r0, #1
|
|
str r0, [sp, #8]
|
|
beq .L2575
|
|
ldr r3, [r5, #-3328]
|
|
mov r2, r10
|
|
mov r1, #1
|
|
add r0, sp, #4
|
|
str r3, [r6, #4]
|
|
add r3, r3, #1
|
|
cmn r3, #1
|
|
moveq r3, r9
|
|
str r3, [r5, #-3328]
|
|
mov r3, #0
|
|
bl FlashProgPages
|
|
ldrh r0, [r4]
|
|
bl decrement_vpc_count
|
|
b .L2572
|
|
.L2586:
|
|
.align 2
|
|
.L2585:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word 305419896
|
|
.fnend
|
|
.size FtlSuperblockPowerLostFix, .-FtlSuperblockPowerLostFix
|
|
.align 2
|
|
.global ftl_map_blk_gc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_map_blk_gc, %function
|
|
ftl_map_blk_gc:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
mov r4, r0
|
|
ldr r5, [r0, #12]
|
|
ldr r10, [r0, #24]
|
|
bl ftl_free_no_use_map_blk
|
|
ldrh r3, [r4, #10]
|
|
ldrh r2, [r4, #8]
|
|
ldr fp, .L2600
|
|
sub r3, r3, #4
|
|
cmp r2, r3
|
|
blt .L2588
|
|
uxth r0, r0
|
|
lsl r0, r0, #1
|
|
ldrh r9, [r5, r0]
|
|
cmp r9, #0
|
|
beq .L2588
|
|
ldr r3, [r4, #32]
|
|
cmp r3, #0
|
|
bne .L2588
|
|
mov r2, #1
|
|
str r2, [r4, #32]
|
|
strh r3, [r5, r0] @ movhi
|
|
ldrh r3, [r4, #8]
|
|
ldrh r2, [r4, #2]
|
|
sub r3, r3, #1
|
|
strh r3, [r4, #8] @ movhi
|
|
movw r3, #2392
|
|
ldrh r3, [fp, r3]
|
|
cmp r2, r3
|
|
bcc .L2589
|
|
mov r0, r4
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L2589:
|
|
ldr r5, .L2600+4
|
|
mov r6, #0
|
|
.L2590:
|
|
ldrh r2, [r4, #6]
|
|
uxth r3, r6
|
|
cmp r2, r3
|
|
bhi .L2595
|
|
mov r1, #1
|
|
mov r0, r9
|
|
bl FtlFreeSysBlkQueueIn
|
|
mov r3, #0
|
|
str r3, [r4, #32]
|
|
.L2588:
|
|
movw r3, #2392
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [fp, r3]
|
|
cmp r2, r3
|
|
bcc .L2593
|
|
mov r0, r4
|
|
bl ftl_map_blk_alloc_new_blk
|
|
b .L2593
|
|
.L2595:
|
|
uxth r7, r6
|
|
add r2, r10, r7, lsl #2
|
|
str r2, [sp]
|
|
ldr r2, [r10, r7, lsl #2]
|
|
cmp r9, r2, lsr #10
|
|
bne .L2591
|
|
ldr r2, [r5, #-520]
|
|
ldr r8, [r5, #-500]
|
|
ldr r0, .L2600+8
|
|
str r2, [r5, #1768]
|
|
str r8, [r5, #1772]
|
|
ldr r2, [r10, r7, lsl #2]
|
|
str r3, [sp, #4]
|
|
str r2, [r5, #1764]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [r5, #1760]
|
|
ldr r3, [sp, #4]
|
|
cmn r2, #1
|
|
bne .L2592
|
|
.L2594:
|
|
ldr r2, [sp]
|
|
mov r3, #0
|
|
ldr r0, .L2600+12
|
|
str r3, [r2]
|
|
ldrh r2, [r8, #8]
|
|
ldr r1, [r5, #1764]
|
|
bl printk
|
|
mov r3, #1
|
|
str r3, [r5, #-3612]
|
|
.L2593:
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2592:
|
|
ldrh r2, [r8, #8]
|
|
cmp r2, r3
|
|
bne .L2594
|
|
ldrh r2, [r8]
|
|
ldrh r3, [r4, #4]
|
|
cmp r2, r3
|
|
bne .L2594
|
|
ldr r2, [r5, #1768]
|
|
mov r1, r7
|
|
mov r0, r4
|
|
bl FtlMapWritePage
|
|
.L2591:
|
|
add r6, r6, #1
|
|
b .L2590
|
|
.L2601:
|
|
.align 2
|
|
.L2600:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2+1760
|
|
.word .LC133
|
|
.fnend
|
|
.size ftl_map_blk_gc, .-ftl_map_blk_gc
|
|
.align 2
|
|
.global Ftl_write_map_blk_to_last_page
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_write_map_blk_to_last_page, %function
|
|
Ftl_write_map_blk_to_last_page:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
ldr r5, .L2613
|
|
ldr r6, [r5, #-3612]
|
|
cmp r6, #0
|
|
bne .L2603
|
|
ldrh r3, [r0]
|
|
movw r2, #65535
|
|
mov r4, r0
|
|
ldr r7, [r0, #12]
|
|
cmp r3, r2
|
|
bne .L2604
|
|
ldrh r3, [r0, #8]
|
|
add r3, r3, #1
|
|
strh r3, [r0, #8] @ movhi
|
|
bl FtlFreeSysBlkQueueOut
|
|
strh r0, [r7] @ movhi
|
|
ldr r3, [r4, #28]
|
|
strh r6, [r4, #2] @ movhi
|
|
strh r6, [r4] @ movhi
|
|
add r3, r3, #1
|
|
str r3, [r4, #28]
|
|
.L2603:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L2604:
|
|
lsl r3, r3, #1
|
|
ldr r8, [r0, #24]
|
|
ldr r10, .L2613+4
|
|
mov r1, #255
|
|
ldrh r9, [r7, r3]
|
|
ldrh r3, [r0, #2]
|
|
ldr r7, [r5, #-500]
|
|
orr r3, r3, r9, lsl #10
|
|
str r7, [r5, #1772]
|
|
str r3, [r5, #1764]
|
|
ldr r3, [r5, #-524]
|
|
str r3, [r5, #1768]
|
|
ldr r3, [r0, #28]
|
|
str r3, [r7, #4]
|
|
ldr r3, .L2613+8
|
|
strh r3, [r7, #8] @ movhi
|
|
ldrh r3, [r0, #4]
|
|
strh r9, [r7, #2] @ movhi
|
|
strh r3, [r7] @ movhi
|
|
movw r3, #2392
|
|
ldrh r2, [r10, r3]
|
|
ldr r0, [r5, #-524]
|
|
lsl r2, r2, #3
|
|
bl ftl_memset
|
|
mov r2, r6
|
|
mov r3, r6
|
|
.L2605:
|
|
ldrh r0, [r4, #6]
|
|
uxth r1, r2
|
|
cmp r0, r1
|
|
bhi .L2607
|
|
ldrb r3, [r10, #36] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L2608
|
|
ldr r3, .L2613+12
|
|
ldr r0, [r5, #1768]
|
|
ldrh r1, [r3]
|
|
bl js_hash
|
|
str r0, [r7, #12]
|
|
.L2608:
|
|
mov r2, #1
|
|
mov r3, #0
|
|
mov r1, r2
|
|
ldr r0, .L2613+16
|
|
bl FlashProgPages
|
|
ldrh r3, [r4, #2]
|
|
mov r0, r4
|
|
add r3, r3, #1
|
|
strh r3, [r4, #2] @ movhi
|
|
bl ftl_map_blk_gc
|
|
b .L2603
|
|
.L2607:
|
|
uxth r1, r2
|
|
ldr r0, [r8, r1, lsl #2]
|
|
cmp r9, r0, lsr #10
|
|
bne .L2606
|
|
ldr r0, [r5, #-524]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
str r1, [r0, r3, lsl #3]
|
|
ldr r0, [r8, r1, lsl #2]
|
|
ldr r1, [r5, #-524]
|
|
add r1, r1, r3, lsl #3
|
|
str r0, [r1, #4]
|
|
.L2606:
|
|
add r2, r2, #1
|
|
b .L2605
|
|
.L2614:
|
|
.align 2
|
|
.L2613:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word -1291
|
|
.word .LANCHOR0+2400
|
|
.word .LANCHOR2+1760
|
|
.fnend
|
|
.size Ftl_write_map_blk_to_last_page, .-Ftl_write_map_blk_to_last_page
|
|
.align 2
|
|
.global FtlMapWritePage
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMapWritePage, %function
|
|
FtlMapWritePage:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
mov r4, r0
|
|
ldr r7, .L2634
|
|
mov r9, r1
|
|
mov fp, r2
|
|
mov r6, #0
|
|
ldr r10, .L2634+4
|
|
mov r5, r7
|
|
.L2616:
|
|
ldr r3, [r7, #-3348]
|
|
add r3, r3, #1
|
|
str r3, [r7, #-3348]
|
|
ldrh r3, [r10]
|
|
ldrh r2, [r4, #2]
|
|
sub r3, r3, #1
|
|
cmp r2, r3
|
|
bge .L2617
|
|
ldrh r2, [r4]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L2618
|
|
.L2617:
|
|
mov r0, r4
|
|
bl Ftl_write_map_blk_to_last_page
|
|
.L2618:
|
|
ldr r1, [r5, #-3612]
|
|
cmp r1, #0
|
|
bne .L2619
|
|
ldrh r3, [r4]
|
|
ldr r2, [r4, #12]
|
|
ldr r0, [r5, #-500]
|
|
lsl r3, r3, #1
|
|
ldrh r8, [r2, r3]
|
|
mov r2, #16
|
|
ldrh r3, [r4, #2]
|
|
str fp, [r5, #1768]
|
|
str r0, [r5, #1772]
|
|
orr r3, r3, r8, lsl #10
|
|
str r3, [r5, #1764]
|
|
bl ftl_memset
|
|
ldr r3, [r5, #1772]
|
|
ldr r2, [r4, #28]
|
|
strh r9, [r3, #8] @ movhi
|
|
str r2, [r3, #4]
|
|
ldrh r2, [r4, #4]
|
|
str r3, [sp, #4]
|
|
strh r8, [r3, #2] @ movhi
|
|
strh r2, [r3] @ movhi
|
|
ldr r2, .L2634+8
|
|
ldrb r1, [r2, #36] @ zero_extendqisi2
|
|
cmp r1, #0
|
|
beq .L2620
|
|
add r2, r2, #2400
|
|
ldr r0, [r5, #1768]
|
|
ldrh r1, [r2]
|
|
bl js_hash
|
|
ldr r3, [sp, #4]
|
|
str r0, [r3, #12]
|
|
.L2620:
|
|
mov r3, #1
|
|
ldr r0, .L2634+12
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldrh r3, [r4, #2]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
strh r3, [r4, #2] @ movhi
|
|
ldr r2, [r5, #1760]
|
|
cmn r2, #1
|
|
bne .L2621
|
|
ldr r1, [r5, #1764]
|
|
add r6, r6, #1
|
|
ldr r0, .L2634+16
|
|
uxth r6, r6
|
|
bl printk
|
|
ldrh r3, [r4, #2]
|
|
cmp r3, #2
|
|
ldrhls r3, [r10]
|
|
subls r3, r3, #1
|
|
strhls r3, [r4, #2] @ movhi
|
|
cmp r6, #3
|
|
bls .L2616
|
|
mov r2, r6
|
|
ldr r1, [r5, #1764]
|
|
ldr r0, .L2634+20
|
|
bl printk
|
|
mov r3, #1
|
|
str r3, [r5, #-3612]
|
|
.L2619:
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2621:
|
|
cmp r2, #0
|
|
strhne r8, [r4, #40] @ movhi
|
|
cmp r3, #1
|
|
cmpne r2, #256
|
|
beq .L2625
|
|
ldr r3, [r4, #36]
|
|
cmp r3, #0
|
|
beq .L2626
|
|
.L2625:
|
|
mov r3, #0
|
|
str r3, [r4, #36]
|
|
b .L2616
|
|
.L2626:
|
|
ldr r2, [r5, #1764]
|
|
ldr r3, [r4, #24]
|
|
str r2, [r3, r9, lsl #2]
|
|
b .L2619
|
|
.L2635:
|
|
.align 2
|
|
.L2634:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2392
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2+1760
|
|
.word .LC134
|
|
.word .LC135
|
|
.fnend
|
|
.size FtlMapWritePage, .-FtlMapWritePage
|
|
.align 2
|
|
.global flush_l2p_region
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type flush_l2p_region, %function
|
|
flush_l2p_region:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, #12
|
|
ldr r5, .L2638
|
|
mul r4, r4, r0
|
|
ldr r3, [r5, #-3376]
|
|
sub r0, r5, #432
|
|
add r2, r3, r4
|
|
ldrh r1, [r3, r4]
|
|
ldr r2, [r2, #8]
|
|
bl FtlMapWritePage
|
|
ldr r3, [r5, #-3376]
|
|
mov r0, #0
|
|
add r4, r3, r4
|
|
ldr r3, [r4, #4]
|
|
bic r3, r3, #-2147483648
|
|
str r3, [r4, #4]
|
|
pop {r4, r5, r6, pc}
|
|
.L2639:
|
|
.align 2
|
|
.L2638:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size flush_l2p_region, .-flush_l2p_region
|
|
.align 2
|
|
.global FtlMapTblRecovery
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMapTblRecovery, %function
|
|
FtlMapTblRecovery:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #28
|
|
sub sp, sp, #28
|
|
ldr r3, [r0, #24]
|
|
mov r4, r0
|
|
mov r1, #0
|
|
mov r7, #0
|
|
ldr r5, .L2682
|
|
str r3, [sp]
|
|
ldr r3, [r0, #16]
|
|
ldr r8, [r0, #12]
|
|
ldr fp, .L2682+4
|
|
str r3, [sp, #12]
|
|
ldrh r3, [r0, #6]
|
|
str r3, [sp, #4]
|
|
ldrh r3, [r0, #8]
|
|
ldr r0, [sp]
|
|
str r3, [sp, #8]
|
|
ldr r3, [sp, #4]
|
|
lsl r2, r3, #2
|
|
bl ftl_memset
|
|
ldr r3, [r5, #-524]
|
|
ldr r6, [r5, #-500]
|
|
str r7, [r4, #32]
|
|
str r3, [r5, #1768]
|
|
mvn r3, #0
|
|
str r6, [r5, #1772]
|
|
strh r3, [r4] @ movhi
|
|
strh r3, [r4, #2] @ movhi
|
|
mov r3, #1
|
|
str r7, [r4, #28]
|
|
str r3, [r4, #36]
|
|
.L2641:
|
|
ldr r3, [sp, #8]
|
|
sxth r10, r7
|
|
cmp r10, r3
|
|
bge .L2660
|
|
ldr r3, [sp, #8]
|
|
sub r3, r3, #1
|
|
cmp r10, r3
|
|
lsl r3, r10, #1
|
|
bne .L2642
|
|
ldrh r0, [r8, r3]
|
|
mov r1, #1
|
|
add r9, r8, r3
|
|
mov r8, #0
|
|
bl FtlGetLastWrittenPage
|
|
sxth r3, r0
|
|
strh r7, [r4] @ movhi
|
|
add r0, r0, #1
|
|
ldr r7, .L2682+8
|
|
str r3, [sp, #8]
|
|
ldr r3, [sp, #12]
|
|
strh r0, [r4, #2] @ movhi
|
|
add fp, r7, #2400
|
|
ldr r3, [r3, r10, lsl #2]
|
|
ldr r10, .L2682+12
|
|
str r3, [r4, #28]
|
|
.L2643:
|
|
ldr r3, [sp, #8]
|
|
sxth r2, r8
|
|
add r1, r3, #1
|
|
cmp r2, r1
|
|
blt .L2646
|
|
.L2660:
|
|
mov r0, r4
|
|
bl ftl_free_no_use_map_blk
|
|
ldr r1, .L2682+8
|
|
movw r3, #2392
|
|
ldrh r2, [r4, #2]
|
|
ldrh r3, [r1, r3]
|
|
cmp r2, r3
|
|
bne .L2648
|
|
mov r0, r4
|
|
bl ftl_map_blk_alloc_new_blk
|
|
.L2648:
|
|
mov r0, r4
|
|
bl ftl_map_blk_gc
|
|
mov r0, r4
|
|
bl ftl_map_blk_gc
|
|
mov r0, #0
|
|
add sp, sp, #28
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2646:
|
|
ldrh r1, [r9]
|
|
mov r0, r10
|
|
orr r2, r2, r1, lsl #10
|
|
str r2, [r5, #1764]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldrb r2, [r7, #36] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
beq .L2644
|
|
ldr r2, [r5, #1772]
|
|
ldr r2, [r2, #12]
|
|
cmp r2, #0
|
|
str r2, [sp, #12]
|
|
beq .L2644
|
|
ldrh r1, [fp]
|
|
ldr r0, [r5, #1768]
|
|
bl js_hash
|
|
ldr r2, [sp, #12]
|
|
cmp r2, r0
|
|
mvnne r2, #0
|
|
strne r2, [r5, #1760]
|
|
.L2644:
|
|
ldr r1, .L2682
|
|
ldr r2, [r1, #1760]
|
|
cmn r2, #1
|
|
beq .L2645
|
|
ldrh r2, [r6, #8]
|
|
ldr r3, [sp, #4]
|
|
cmp r3, r2
|
|
bls .L2645
|
|
ldrh ip, [r6]
|
|
ldrh r0, [r4, #4]
|
|
cmp ip, r0
|
|
ldreq r1, [r1, #1764]
|
|
ldreq r3, [sp]
|
|
streq r1, [r3, r2, lsl #2]
|
|
.L2645:
|
|
add r8, r8, #1
|
|
b .L2643
|
|
.L2642:
|
|
ldr r2, [r5, #-524]
|
|
ldr r0, .L2682+12
|
|
str r2, [r5, #1768]
|
|
add r2, r8, r3
|
|
str r2, [sp, #16]
|
|
ldrh r2, [r8, r3]
|
|
ldrh r3, [fp]
|
|
sub r3, r3, #1
|
|
orr r3, r3, r2, lsl #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r3, [r5, #1764]
|
|
bl FlashReadPages
|
|
ldr r3, [r5, #1760]
|
|
cmn r3, #1
|
|
beq .L2662
|
|
ldrh r2, [r6]
|
|
ldrh r3, [r4, #4]
|
|
cmp r2, r3
|
|
bne .L2662
|
|
ldrh r2, [r6, #8]
|
|
movw r3, #64245
|
|
cmp r2, r3
|
|
beq .L2650
|
|
.L2662:
|
|
ldr r9, .L2682
|
|
mov r10, #0
|
|
.L2651:
|
|
ldrh r2, [fp]
|
|
sxth r3, r10
|
|
cmp r3, r2
|
|
bge .L2658
|
|
ldr r2, [sp, #16]
|
|
ldr r0, .L2682+12
|
|
ldrh r2, [r2]
|
|
orr r3, r3, r2, lsl #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r3, [r9, #1764]
|
|
bl FlashReadPages
|
|
ldr r3, .L2682+8
|
|
ldrb r3, [r3, #36] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L2655
|
|
ldr r3, [r9, #1772]
|
|
ldr r3, [r3, #12]
|
|
cmp r3, #0
|
|
str r3, [sp, #20]
|
|
beq .L2655
|
|
ldr r2, .L2682+16
|
|
ldr r0, [r9, #1768]
|
|
ldrh r1, [r2]
|
|
bl js_hash
|
|
ldr r3, [sp, #20]
|
|
cmp r3, r0
|
|
mvnne r3, #0
|
|
strne r3, [r9, #1760]
|
|
.L2655:
|
|
ldr r3, [r9, #1760]
|
|
cmn r3, #1
|
|
beq .L2656
|
|
ldrh r3, [r6, #8]
|
|
ldr r2, [sp, #4]
|
|
cmp r2, r3
|
|
bls .L2656
|
|
ldrh r1, [r6]
|
|
ldrh r2, [r4, #4]
|
|
cmp r1, r2
|
|
ldreq r2, [r9, #1764]
|
|
ldreq r1, [sp]
|
|
streq r2, [r1, r3, lsl #2]
|
|
.L2656:
|
|
add r10, r10, #1
|
|
b .L2651
|
|
.L2650:
|
|
mov r1, #0
|
|
mov ip, #4
|
|
.L2652:
|
|
ldrh r2, [fp]
|
|
sxth r3, r1
|
|
sub r2, r2, #1
|
|
cmp r3, r2
|
|
blt .L2654
|
|
.L2658:
|
|
add r7, r7, #1
|
|
b .L2641
|
|
.L2654:
|
|
ldr r0, [r5, #-524]
|
|
add r1, r1, #1
|
|
ldr r9, [sp, #4]
|
|
ldr r2, [r0, r3, lsl #3]
|
|
uxth lr, r2
|
|
cmp r9, lr
|
|
addhi r3, ip, r3, lsl #3
|
|
movhi r2, lr
|
|
ldrhi r3, [r0, r3]
|
|
ldrhi r0, [sp]
|
|
strhi r3, [r0, r2, lsl #2]
|
|
b .L2652
|
|
.L2683:
|
|
.align 2
|
|
.L2682:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2392
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2+1760
|
|
.word .LANCHOR0+2400
|
|
.fnend
|
|
.size FtlMapTblRecovery, .-FtlMapTblRecovery
|
|
.align 2
|
|
.global FtlLoadVonderInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadVonderInfo, %function
|
|
FtlLoadVonderInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L2686
|
|
movw r1, #2412
|
|
ldr r3, .L2686+4
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
ldrh r1, [r2, r1]
|
|
add r0, r3, #1792
|
|
add r0, r0, #8
|
|
strh r1, [r0, #10] @ movhi
|
|
ldr r1, .L2686+8
|
|
strh r1, [r0, #4] @ movhi
|
|
movw r1, #2438
|
|
ldrh r1, [r2, r1]
|
|
strh r1, [r0, #8] @ movhi
|
|
movw r1, #2414
|
|
ldrh r1, [r2, r1]
|
|
ldr r2, [r2, #2440]
|
|
strh r1, [r0, #6] @ movhi
|
|
str r2, [r3, #1812]
|
|
ldr r2, [r3, #-460]
|
|
str r2, [r3, #1816]
|
|
ldr r2, [r3, #-464]
|
|
str r2, [r3, #1820]
|
|
ldr r2, [r3, #-456]
|
|
str r2, [r3, #1824]
|
|
bl FtlMapTblRecovery
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.L2687:
|
|
.align 2
|
|
.L2686:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word -3962
|
|
.fnend
|
|
.size FtlLoadVonderInfo, .-FtlLoadVonderInfo
|
|
.align 2
|
|
.global FtlLoadMapInfo
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadMapInfo, %function
|
|
FtlLoadMapInfo:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
bl FtlL2PDataInit
|
|
ldr r0, .L2690
|
|
bl FtlMapTblRecovery
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.L2691:
|
|
.align 2
|
|
.L2690:
|
|
.word .LANCHOR2-432
|
|
.fnend
|
|
.size FtlLoadMapInfo, .-FtlLoadMapInfo
|
|
.align 2
|
|
.global FtlVendorPartWrite
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVendorPartWrite, %function
|
|
FtlVendorPartWrite:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 56
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L2702
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r10, r2
|
|
movw r2, #2386
|
|
mov r5, r1
|
|
add r1, r0, r1
|
|
.pad #60
|
|
sub sp, sp, #60
|
|
ldrh r2, [r3, r2]
|
|
cmp r1, r2
|
|
mvnhi r9, #0
|
|
bhi .L2692
|
|
movw r2, #2398
|
|
ldr r8, .L2702+4
|
|
ldrh r6, [r3, r2]
|
|
mov r7, r0
|
|
mov r9, #0
|
|
lsr r6, r0, r6
|
|
lsl fp, r6, #2
|
|
.L2694:
|
|
cmp r5, #0
|
|
bne .L2699
|
|
.L2692:
|
|
mov r0, r9
|
|
add sp, sp, #60
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2699:
|
|
ldr r3, [r8, #-456]
|
|
mov r0, r7
|
|
ldr r2, [r3, fp]
|
|
ldr r3, .L2702+8
|
|
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]
|
|
sub r4, r3, r1
|
|
uxth r4, r4
|
|
cmp r5, r4
|
|
uxthcc r4, r5
|
|
cmp r2, #0
|
|
cmpne r4, r3
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
beq .L2696
|
|
ldr r3, [r8, #-516]
|
|
add r0, sp, #20
|
|
str r2, [sp, #24]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r3, [sp, #28]
|
|
mov r3, #0
|
|
str r3, [sp, #32]
|
|
bl FlashReadPages
|
|
.L2697:
|
|
lsl r3, r4, #9
|
|
ldr r0, [r8, #-516]
|
|
mov r1, r10
|
|
mov r2, r3
|
|
str r3, [sp, #8]
|
|
ldr r3, [sp, #4]
|
|
sub r5, r5, r4
|
|
add r7, r7, r4
|
|
add fp, fp, #4
|
|
add r0, r0, r3, lsl #9
|
|
bl ftl_memcpy
|
|
mov r1, r6
|
|
ldr r2, [r8, #-516]
|
|
ldr r0, .L2702+12
|
|
add r6, r6, #1
|
|
bl FtlMapWritePage
|
|
ldr r3, [sp, #8]
|
|
cmn r0, #1
|
|
mvneq r9, #0
|
|
add r10, r10, r3
|
|
b .L2694
|
|
.L2696:
|
|
ldr r3, .L2702+16
|
|
ldr r0, [r8, #-516]
|
|
ldrh r2, [r3]
|
|
bl ftl_memset
|
|
b .L2697
|
|
.L2703:
|
|
.align 2
|
|
.L2702:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2396
|
|
.word .LANCHOR2+1800
|
|
.word .LANCHOR0+2400
|
|
.fnend
|
|
.size FtlVendorPartWrite, .-FtlVendorPartWrite
|
|
.align 2
|
|
.global Ftl_save_ext_data
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_save_ext_data, %function
|
|
Ftl_save_ext_data:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L2706
|
|
ldr r2, .L2706+4
|
|
ldr r1, [r3, #-3236]
|
|
cmp r1, r2
|
|
bxne lr
|
|
ldr r2, .L2706+8
|
|
mov r1, #1
|
|
mov r0, #0
|
|
str r2, [r3, #-3232]
|
|
ldr r2, [r3, #-3340]
|
|
str r2, [r3, #-3148]
|
|
ldr r2, [r3, #-3336]
|
|
str r2, [r3, #-3144]
|
|
ldr r2, [r3, #-3344]
|
|
str r2, [r3, #-3228]
|
|
ldr r2, [r3, #-3356]
|
|
str r2, [r3, #-3224]
|
|
ldr r2, [r3, #-3364]
|
|
str r2, [r3, #-3220]
|
|
ldr r2, [r3, #-3348]
|
|
str r2, [r3, #-3216]
|
|
ldr r2, [r3, #-3320]
|
|
str r2, [r3, #-3208]
|
|
ldr r2, [r3, #-3600]
|
|
str r2, [r3, #-3204]
|
|
ldr r2, [r3, #-3360]
|
|
str r2, [r3, #-3200]
|
|
ldr r2, [r3, #-3352]
|
|
str r2, [r3, #-3196]
|
|
ldr r2, [r3, #-3312]
|
|
str r2, [r3, #-3192]
|
|
ldr r2, [r3, #-3308]
|
|
str r2, [r3, #-3188]
|
|
ldr r2, [r3, #-2724]
|
|
str r2, [r3, #-3176]
|
|
ldr r2, [r3, #-564]
|
|
str r2, [r3, #-3172]
|
|
ldr r2, .L2706+12
|
|
b FtlVendorPartWrite
|
|
.L2707:
|
|
.align 2
|
|
.L2706:
|
|
.word .LANCHOR2
|
|
.word 1179929683
|
|
.word 1342177379
|
|
.word .LANCHOR2-3236
|
|
.fnend
|
|
.size Ftl_save_ext_data, .-Ftl_save_ext_data
|
|
.align 2
|
|
.global FtlEctTblFlush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlEctTblFlush, %function
|
|
FtlEctTblFlush:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L2718
|
|
ldr r3, [r3, #2248]
|
|
cmp r3, #0
|
|
ldr r3, .L2718+4
|
|
moveq r2, #32
|
|
beq .L2709
|
|
ldr r2, [r3, #-3308]
|
|
cmp r2, #39
|
|
movhi r2, #32
|
|
movls r2, #4
|
|
.L2709:
|
|
movw ip, #1844
|
|
ldrh r1, [r3, ip]
|
|
cmp r1, #31
|
|
addls r1, r1, #1
|
|
movls r2, #1
|
|
strhls r1, [r3, ip] @ movhi
|
|
cmp r0, #0
|
|
bne .L2711
|
|
ldr r1, [r3, #-480]
|
|
ldr r0, [r1, #20]
|
|
ldr r1, [r1, #16]
|
|
add r2, r2, r0
|
|
cmp r1, r2
|
|
bcc .L2716
|
|
.L2711:
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
mov r0, #64
|
|
ldr r2, [r3, #-480]
|
|
ldr r1, [r2, #16]
|
|
str r1, [r2, #20]
|
|
ldr r1, .L2718+8
|
|
str r1, [r2]
|
|
ldr r2, [r3, #-480]
|
|
ldr r3, .L2718+12
|
|
ldrh r1, [r3]
|
|
lsl r3, r1, #9
|
|
str r3, [r2, #12]
|
|
ldr r3, [r2, #8]
|
|
add r3, r3, #1
|
|
str r3, [r2, #8]
|
|
mov r3, #0
|
|
str r3, [r2, #4]
|
|
bl FtlVendorPartWrite
|
|
bl Ftl_save_ext_data
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.L2716:
|
|
mov r0, #0
|
|
bx lr
|
|
.L2719:
|
|
.align 2
|
|
.L2718:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word 1112818501
|
|
.word .LANCHOR2-488
|
|
.fnend
|
|
.size FtlEctTblFlush, .-FtlEctTblFlush
|
|
.align 2
|
|
.global FtlVendorPartRead
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVendorPartRead, %function
|
|
FtlVendorPartRead:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 56
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L2731
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r10, r2
|
|
movw r2, #2386
|
|
mov r6, r1
|
|
add r1, r0, r1
|
|
.pad #60
|
|
sub sp, sp, #60
|
|
ldrh r2, [r3, r2]
|
|
cmp r1, r2
|
|
mvnhi r9, #0
|
|
bhi .L2720
|
|
movw r2, #2398
|
|
ldr r8, .L2731+4
|
|
ldrh r5, [r3, r2]
|
|
mov r7, r0
|
|
mov r9, #0
|
|
lsr r5, r0, r5
|
|
lsl fp, r5, #2
|
|
.L2722:
|
|
cmp r6, #0
|
|
bne .L2728
|
|
.L2720:
|
|
mov r0, r9
|
|
add sp, sp, #60
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2728:
|
|
ldr r3, [r8, #-456]
|
|
mov r0, r7
|
|
ldr r3, [r3, fp]
|
|
str r3, [sp, #8]
|
|
ldr r3, .L2731+8
|
|
ldrh r4, [r3]
|
|
mov r1, r4
|
|
bl __aeabi_uidivmod
|
|
sub r4, r4, r1
|
|
ldr r3, [sp, #8]
|
|
uxth r4, r4
|
|
str r1, [sp, #4]
|
|
cmp r6, r4
|
|
uxthcc r4, r6
|
|
cmp r3, #0
|
|
lsl r2, r4, #9
|
|
str r2, [sp, #8]
|
|
beq .L2724
|
|
ldr r2, [r8, #-516]
|
|
add r0, sp, #20
|
|
str r3, [sp, #24]
|
|
str r3, [sp, #12]
|
|
str r2, [sp, #28]
|
|
mov r2, #0
|
|
str r2, [sp, #32]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [sp, #20]
|
|
ldr r3, [sp, #12]
|
|
cmn r2, #1
|
|
ldr r2, [r8, #1760]
|
|
mvneq r9, #0
|
|
cmp r2, #256
|
|
bne .L2726
|
|
mov r2, r3
|
|
mov r1, r5
|
|
ldr r0, .L2731+12
|
|
bl printk
|
|
ldr r2, [r8, #-516]
|
|
mov r1, r5
|
|
ldr r0, .L2731+16
|
|
bl FtlMapWritePage
|
|
.L2726:
|
|
ldr r1, [r8, #-516]
|
|
lsl r2, r4, #9
|
|
ldr r3, [sp, #4]
|
|
mov r0, r10
|
|
add r1, r1, r3, lsl #9
|
|
bl ftl_memcpy
|
|
.L2727:
|
|
ldr r3, [sp, #8]
|
|
add r5, r5, #1
|
|
sub r6, r6, r4
|
|
add r7, r7, r4
|
|
add fp, fp, #4
|
|
add r10, r10, r3
|
|
b .L2722
|
|
.L2724:
|
|
lsl r2, r4, #9
|
|
mov r1, r3
|
|
mov r0, r10
|
|
bl ftl_memset
|
|
b .L2727
|
|
.L2732:
|
|
.align 2
|
|
.L2731:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2396
|
|
.word .LC136
|
|
.word .LANCHOR2+1800
|
|
.fnend
|
|
.size FtlVendorPartRead, .-FtlVendorPartRead
|
|
.align 2
|
|
.global FtlLoadEctTbl
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLoadEctTbl, %function
|
|
FtlLoadEctTbl:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r0, #64
|
|
ldr r4, .L2736
|
|
sub r5, r4, #488
|
|
ldr r2, [r4, #-480]
|
|
ldrh r1, [r5]
|
|
bl FtlVendorPartRead
|
|
ldr r3, [r4, #-480]
|
|
ldr r2, [r3]
|
|
ldr r3, .L2736+4
|
|
cmp r2, r3
|
|
beq .L2734
|
|
ldr r1, .L2736+8
|
|
ldr r0, .L2736+12
|
|
bl printk
|
|
ldrh r2, [r5]
|
|
mov r1, #0
|
|
ldr r0, [r4, #-480]
|
|
lsl r2, r2, #9
|
|
bl ftl_memset
|
|
.L2734:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
.L2737:
|
|
.align 2
|
|
.L2736:
|
|
.word .LANCHOR2
|
|
.word 1112818501
|
|
.word .LC137
|
|
.word .LC77
|
|
.fnend
|
|
.size FtlLoadEctTbl, .-FtlLoadEctTbl
|
|
.align 2
|
|
.global Ftl_load_ext_data
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_load_ext_data, %function
|
|
Ftl_load_ext_data:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r1, #1
|
|
ldr r4, .L2744
|
|
mov r0, #0
|
|
ldr r5, .L2744+4
|
|
sub r6, r4, #3232
|
|
sub r6, r6, #4
|
|
mov r2, r6
|
|
bl FtlVendorPartRead
|
|
ldr r3, [r4, #-3236]
|
|
cmp r3, r5
|
|
beq .L2739
|
|
mov r2, #512
|
|
mov r1, #0
|
|
mov r0, r6
|
|
bl ftl_memset
|
|
str r5, [r4, #-3236]
|
|
.L2739:
|
|
ldr r3, [r4, #-3236]
|
|
cmp r3, r5
|
|
bne .L2740
|
|
ldr r3, [r4, #-3148]
|
|
str r3, [r4, #-3340]
|
|
ldr r3, [r4, #-3144]
|
|
str r3, [r4, #-3336]
|
|
ldr r3, [r4, #-3228]
|
|
str r3, [r4, #-3344]
|
|
ldr r3, [r4, #-3224]
|
|
str r3, [r4, #-3356]
|
|
ldr r3, [r4, #-3220]
|
|
str r3, [r4, #-3364]
|
|
ldr r3, [r4, #-3216]
|
|
str r3, [r4, #-3348]
|
|
ldr r3, [r4, #-3208]
|
|
str r3, [r4, #-3320]
|
|
ldr r3, [r4, #-3204]
|
|
str r3, [r4, #-3600]
|
|
ldr r3, [r4, #-3200]
|
|
str r3, [r4, #-3360]
|
|
ldr r3, [r4, #-3196]
|
|
str r3, [r4, #-3352]
|
|
ldr r3, [r4, #-3192]
|
|
str r3, [r4, #-3312]
|
|
ldr r3, [r4, #-3188]
|
|
str r3, [r4, #-3308]
|
|
ldr r3, [r4, #-3176]
|
|
str r3, [r4, #-2724]
|
|
.L2740:
|
|
ldr r1, [r4, #-3168]
|
|
mov r3, #0
|
|
ldr r2, .L2744+8
|
|
str r3, [r4, #-564]
|
|
ldr r5, .L2744+12
|
|
cmp r1, r2
|
|
bne .L2741
|
|
ldrb r2, [r5, #152] @ zero_extendqisi2
|
|
cmp r2, r3
|
|
beq .L2742
|
|
str r3, [r4, #-3168]
|
|
bl Ftl_save_ext_data
|
|
.L2741:
|
|
movw r3, #2382
|
|
ldr r0, [r4, #-3324]
|
|
ldrh r2, [r5, r3]
|
|
movw r1, #2332
|
|
ldr r3, [r4, #-3320]
|
|
ldrh r1, [r5, r1]
|
|
mla r0, r0, r2, r3
|
|
bl __aeabi_uidiv
|
|
str r0, [r4, #-3316]
|
|
pop {r4, r5, r6, pc}
|
|
.L2742:
|
|
mov r3, #1
|
|
ldr r1, .L2744+16
|
|
ldr r0, .L2744+20
|
|
str r3, [r5, #2248]
|
|
bl printk
|
|
b .L2741
|
|
.L2745:
|
|
.align 2
|
|
.L2744:
|
|
.word .LANCHOR2
|
|
.word 1179929683
|
|
.word 305432421
|
|
.word .LANCHOR0
|
|
.word .LC138
|
|
.word .LC77
|
|
.fnend
|
|
.size Ftl_load_ext_data, .-Ftl_load_ext_data
|
|
.align 2
|
|
.global FtlMapBlkWriteDumpData
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMapBlkWriteDumpData, %function
|
|
FtlMapBlkWriteDumpData:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, [r0, #36]
|
|
cmp r3, #0
|
|
bxeq lr
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r2, #0
|
|
ldr r4, .L2756
|
|
str r2, [r0, #36]
|
|
ldr r2, [r4, #-3612]
|
|
ldrh r5, [r0, #6]
|
|
ldr r3, [r0, #24]
|
|
cmp r2, #0
|
|
popne {r4, r5, r6, pc}
|
|
mov r6, r0
|
|
ldr r2, [r4, #-500]
|
|
ldr r0, [r4, #-520]
|
|
sub r5, r5, #1
|
|
uxth r5, r5
|
|
str r2, [r4, #1772]
|
|
str r0, [r4, #1768]
|
|
ldr r3, [r3, r5, lsl #2]
|
|
cmp r3, #0
|
|
str r3, [r4, #1764]
|
|
beq .L2750
|
|
mov r2, #1
|
|
add r0, r4, #1760
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
.L2751:
|
|
ldr r2, [r4, #1768]
|
|
mov r1, r5
|
|
mov r0, r6
|
|
pop {r4, r5, r6, lr}
|
|
b FtlMapWritePage
|
|
.L2750:
|
|
ldr r3, .L2756+4
|
|
mov r1, #255
|
|
ldrh r2, [r3]
|
|
bl ftl_memset
|
|
b .L2751
|
|
.L2757:
|
|
.align 2
|
|
.L2756:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2400
|
|
.fnend
|
|
.size FtlMapBlkWriteDumpData, .-FtlMapBlkWriteDumpData
|
|
.align 2
|
|
.global FlashReadFacBbtData
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashReadFacBbtData, %function
|
|
FlashReadFacBbtData:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 40
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r8, r2
|
|
ldr r2, .L2771
|
|
.pad #40
|
|
sub sp, sp, #40
|
|
mov r5, r0
|
|
mov r7, r1
|
|
ldr r9, .L2771+4
|
|
ldrh r3, [r2, #138]
|
|
ldrh r2, [r2, #136]
|
|
smulbb r3, r3, r2
|
|
ldr r2, [r9, #1696]
|
|
uxth r3, r3
|
|
str r2, [sp, #12]
|
|
ldr r2, [r9, #1728]
|
|
sub r6, r3, #1
|
|
mul r10, r1, r3
|
|
uxth r6, r6
|
|
sub r4, r3, #16
|
|
str r2, [sp, #16]
|
|
.L2759:
|
|
cmp r6, r4
|
|
mvnle r0, #0
|
|
ble .L2758
|
|
.L2765:
|
|
add r3, r6, r10
|
|
mov r2, #1
|
|
lsl r3, r3, #10
|
|
mov r1, r2
|
|
add r0, sp, #4
|
|
str r3, [sp, #8]
|
|
bl FlashReadPages
|
|
ldr r3, [sp, #4]
|
|
cmn r3, #1
|
|
beq .L2760
|
|
ldr r3, [r9, #1728]
|
|
ldrh r2, [r3]
|
|
movw r3, #61664
|
|
cmp r2, r3
|
|
bne .L2760
|
|
cmp r5, #0
|
|
moveq r0, r5
|
|
beq .L2758
|
|
cmp r7, #0
|
|
moveq r1, r7
|
|
moveq lr, #1
|
|
beq .L2763
|
|
.L2762:
|
|
mov r2, r8
|
|
ldr r1, [r9, #1696]
|
|
mov r0, r5
|
|
bl ftl_memcpy
|
|
mov r3, #4
|
|
ldr r0, .L2771+8
|
|
mov r2, r3
|
|
mov r1, r5
|
|
bl rknand_print_hex
|
|
mov r0, #0
|
|
.L2758:
|
|
add sp, sp, #40
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L2764:
|
|
ldr r0, [r9, #1696]
|
|
lsr ip, r3, #5
|
|
and r3, r3, #31
|
|
ldr r2, [r0, ip, lsl #2]
|
|
orr r3, r2, lr, lsl r3
|
|
str r3, [r0, ip, lsl #2]
|
|
.L2763:
|
|
ldr r0, [r9, #1716]
|
|
uxth r3, r1
|
|
add r1, r1, #1
|
|
cmp r3, r0
|
|
bcc .L2764
|
|
b .L2762
|
|
.L2760:
|
|
sub r6, r6, #1
|
|
uxth r6, r6
|
|
b .L2759
|
|
.L2772:
|
|
.align 2
|
|
.L2771:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LC139
|
|
.fnend
|
|
.size FlashReadFacBbtData, .-FlashReadFacBbtData
|
|
.align 2
|
|
.global FlashGetBadBlockList
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashGetBadBlockList, %function
|
|
FlashGetBadBlockList:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L2784
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mov r5, r0
|
|
ldr r6, .L2784+4
|
|
ldr r3, [r3, #48]
|
|
ldr r0, [r6, #1724]
|
|
ldrb r4, [r3, #13] @ zero_extendqisi2
|
|
ldrh r3, [r3, #14]
|
|
smulbb r4, r4, r3
|
|
uxth r4, r4
|
|
add r2, r4, #7
|
|
asr r2, r2, #3
|
|
bl FlashReadFacBbtData
|
|
cmn r0, #1
|
|
bne .L2774
|
|
.L2778:
|
|
mov r3, #0
|
|
.L2775:
|
|
lsl r3, r3, #1
|
|
mvn r2, #0
|
|
mov r0, #0
|
|
strh r2, [r5, r3] @ movhi
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L2774:
|
|
mov r2, #0
|
|
lsr lr, r4, #4
|
|
mov r3, r2
|
|
sub r4, r4, #1
|
|
mov r7, #1
|
|
.L2776:
|
|
uxth r1, r2
|
|
cmp r1, r4
|
|
bge .L2775
|
|
ldr r8, [r6, #1724]
|
|
lsr ip, r1, #5
|
|
and r0, r1, #31
|
|
add r2, r2, #1
|
|
ldr ip, [r8, ip, lsl #2]
|
|
ands r0, ip, r7, lsl r0
|
|
addne r0, r3, #1
|
|
lslne r3, r3, #1
|
|
strhne r1, [r5, r3] @ movhi
|
|
uxthne r3, r0
|
|
cmp r3, lr
|
|
bcc .L2776
|
|
b .L2778
|
|
.L2785:
|
|
.align 2
|
|
.L2784:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size FlashGetBadBlockList, .-FlashGetBadBlockList
|
|
.align 2
|
|
.global FtlMakeBbt
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlMakeBbt, %function
|
|
FtlMakeBbt:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
ldr r4, .L2807
|
|
ldr r8, [r4, #-3612]
|
|
cmp r8, #0
|
|
bne .L2787
|
|
ldr r9, .L2807+4
|
|
bl FtlBbtMemInit
|
|
bl FtlLoadFactoryBbt
|
|
sub r10, r9, #18
|
|
sub r5, r9, #28
|
|
.L2788:
|
|
ldr r3, .L2807+8
|
|
ldr r6, .L2807+12
|
|
ldrh r3, [r3]
|
|
cmp r8, r3
|
|
bcc .L2794
|
|
ldr r8, .L2807+16
|
|
mov r7, #0
|
|
.L2795:
|
|
ldrh r3, [r8]
|
|
uxth r0, r7
|
|
add r7, r7, #1
|
|
cmp r3, r0
|
|
bhi .L2796
|
|
ldrh r7, [r5, #12]
|
|
movw r8, #65535
|
|
sub r7, r7, #1
|
|
uxth r7, r7
|
|
.L2797:
|
|
ldrh r3, [r5, #12]
|
|
sub r3, r3, #48
|
|
cmp r7, r3
|
|
ble .L2801
|
|
mov r0, r7
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #1
|
|
beq .L2798
|
|
mov r0, r7
|
|
bl FlashTestBlk
|
|
cmp r0, #0
|
|
beq .L2799
|
|
mov r0, r7
|
|
bl FtlBbmMapBadBlock
|
|
.L2798:
|
|
sub r7, r7, #1
|
|
uxth r7, r7
|
|
b .L2797
|
|
.L2794:
|
|
ldr r3, [r4, #-500]
|
|
movw r2, #65535
|
|
ldr r0, [r4, #-524]
|
|
ldr fp, .L2807+20
|
|
str r3, [sp, #4]
|
|
str r3, [r4, #1772]
|
|
ldrh r3, [r10, #2]!
|
|
str r0, [r4, #1768]
|
|
cmp r3, r2
|
|
beq .L2789
|
|
ldrh r7, [fp]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
ldr r0, .L2807+24
|
|
mla r7, r8, r7, r3
|
|
lsl r3, r7, #10
|
|
str r3, [r4, #1764]
|
|
bl FlashReadPages
|
|
ldrh r2, [fp]
|
|
ldr r1, [r4, #1768]
|
|
ldr r0, [r9]
|
|
add r2, r2, #7
|
|
asr r2, r2, #3
|
|
bl ftl_memcpy
|
|
.L2790:
|
|
uxth r0, r7
|
|
add r8, r8, #1
|
|
add r9, r9, #4
|
|
bl FtlBbmMapBadBlock
|
|
b .L2788
|
|
.L2789:
|
|
mov r1, r8
|
|
bl FlashGetBadBlockList
|
|
ldr r1, [r9]
|
|
ldr r0, [r4, #1768]
|
|
bl FtlBbt2Bitmap
|
|
ldrh r6, [fp]
|
|
.L2792:
|
|
sub r6, r6, #1
|
|
uxth r6, r6
|
|
.L2791:
|
|
ldrh r0, [fp]
|
|
smlabb r0, r0, r8, r6
|
|
uxth r0, r0
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #1
|
|
beq .L2792
|
|
mov r2, #16
|
|
mov r1, #0
|
|
strh r6, [r10] @ movhi
|
|
ldr r0, [r4, #-500]
|
|
bl ftl_memset
|
|
ldr r3, [sp, #4]
|
|
movw r2, 61664 @ movhi
|
|
strh r2, [r3] @ movhi
|
|
mov r3, #0
|
|
ldr r2, [sp, #4]
|
|
ldrh r7, [fp]
|
|
str r3, [r2, #4]
|
|
ldrh r3, [r10]
|
|
strh r3, [r2, #2] @ movhi
|
|
ldrh r3, [r10]
|
|
ldr r1, [r9]
|
|
ldr r0, [r4, #1768]
|
|
mla r7, r8, r7, r3
|
|
lsl r3, r7, #10
|
|
str r3, [r4, #1764]
|
|
ldr r3, .L2807+28
|
|
ldrh r2, [r3]
|
|
lsl r2, r2, #2
|
|
bl ftl_memcpy
|
|
mov r2, #1
|
|
ldr r0, .L2807+24
|
|
mov r1, r2
|
|
bl FlashEraseBlocks
|
|
mov r3, #1
|
|
ldr r0, .L2807+24
|
|
mov r2, r3
|
|
mov r1, r3
|
|
bl FlashProgPages
|
|
ldr r3, [r4, #1760]
|
|
cmn r3, #1
|
|
bne .L2790
|
|
uxth r0, r7
|
|
bl FtlBbmMapBadBlock
|
|
b .L2791
|
|
.L2796:
|
|
bl FtlBbmMapBadBlock
|
|
b .L2795
|
|
.L2799:
|
|
ldrh r3, [r5]
|
|
cmp r3, r8
|
|
strheq r7, [r5] @ movhi
|
|
beq .L2798
|
|
.L2800:
|
|
strh r7, [r5, #4] @ movhi
|
|
.L2801:
|
|
movw r7, #2456
|
|
ldr r0, [r4, #-3608]
|
|
ldrh r3, [r6, r7]
|
|
mov r8, #0
|
|
str r8, [r6, #2464]
|
|
mov r2, #2
|
|
mov r1, #1
|
|
strh r8, [r5, #2] @ movhi
|
|
lsl r3, r3, #10
|
|
str r3, [r0, #4]
|
|
ldrh r3, [r5, #4]
|
|
lsl r3, r3, #10
|
|
str r3, [r0, #40]
|
|
bl FlashEraseBlocks
|
|
ldrh r0, [r6, r7]
|
|
bl FtlBbmMapBadBlock
|
|
ldrh r0, [r5, #4]
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
ldr r3, [r6, #2464]
|
|
ldrh r2, [r5, #4]
|
|
strh r8, [r5, #2] @ movhi
|
|
add r3, r3, #1
|
|
str r3, [r6, #2464]
|
|
ldrh r3, [r6, r7]
|
|
strh r2, [r6, r7] @ movhi
|
|
strh r3, [r5, #4] @ movhi
|
|
bl FtlBbmTblFlush
|
|
.L2787:
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2808:
|
|
.align 2
|
|
.L2807:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2484
|
|
.word .LANCHOR0+2346
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2404
|
|
.word .LANCHOR0+2388
|
|
.word .LANCHOR2+1760
|
|
.word .LANCHOR2-436
|
|
.fnend
|
|
.size FtlMakeBbt, .-FtlMakeBbt
|
|
.align 2
|
|
.global log2phys
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type log2phys, %function
|
|
log2phys:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
ldr r8, .L2825
|
|
ldr r3, [r8, #2452]
|
|
cmp r0, r3
|
|
bcs .L2810
|
|
movw r3, #2398
|
|
mov r10, r0
|
|
ldrh r0, [r8, r3]
|
|
mov r5, #12
|
|
ldr r4, .L2825+4
|
|
str r1, [sp, #8]
|
|
add r3, r0, #7
|
|
str r2, [sp, #12]
|
|
lsr r6, r10, r3
|
|
ldr fp, [r4, #-3376]
|
|
str r3, [sp, #4]
|
|
movw r3, #2430
|
|
uxth r9, r6
|
|
ldrh r1, [r8, r3]
|
|
mov r3, #0
|
|
.L2811:
|
|
uxth r7, r3
|
|
cmp r7, r1
|
|
bcc .L2816
|
|
bl select_l2p_ram_region
|
|
mul r5, r5, r0
|
|
movw r2, #65535
|
|
mov r7, r0
|
|
ldrh r1, [fp, r5]
|
|
add r3, fp, r5
|
|
cmp r1, r2
|
|
beq .L2817
|
|
ldr r3, [r3, #4]
|
|
cmp r3, #0
|
|
bge .L2817
|
|
bl flush_l2p_region
|
|
.L2817:
|
|
ldr r3, [r4, #-452]
|
|
uxth r6, r6
|
|
ldr fp, [r3, r6, lsl #2]
|
|
cmp fp, #0
|
|
bne .L2818
|
|
ldr r0, [r4, #-3376]
|
|
mov r1, #255
|
|
ldr r2, .L2825+8
|
|
add r0, r0, r5
|
|
ldrh r2, [r2]
|
|
ldr r0, [r0, #8]
|
|
bl ftl_memset
|
|
ldr r2, [r4, #-3376]
|
|
strh r9, [r2, r5] @ movhi
|
|
ldr r2, [r4, #-3376]
|
|
add r5, r2, r5
|
|
str fp, [r5, #4]
|
|
b .L2813
|
|
.L2810:
|
|
cmp r2, #0
|
|
mvn r0, #0
|
|
streq r0, [r1]
|
|
.L2809:
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2816:
|
|
add r3, r3, #1
|
|
mla r0, r5, r3, fp
|
|
ldrh r0, [r0, #-12]
|
|
cmp r0, r9
|
|
bne .L2811
|
|
.L2813:
|
|
ldr r3, [sp, #4]
|
|
mvn r0, #0
|
|
ldr r1, .L2825+4
|
|
bic r10, r10, r0, lsl r3
|
|
ldr r3, [sp, #12]
|
|
uxth r10, r10
|
|
cmp r3, #0
|
|
mov r3, #12
|
|
bne .L2814
|
|
ldr r2, [r1, #-3376]
|
|
mla r3, r3, r7, r2
|
|
ldr r2, [sp, #8]
|
|
ldr r3, [r3, #8]
|
|
ldr r3, [r3, r10, lsl #2]
|
|
str r3, [r2]
|
|
.L2815:
|
|
ldr r2, [r1, #-3376]
|
|
mov r3, #12
|
|
mov r0, #0
|
|
mla r7, r3, r7, r2
|
|
ldr r3, [r7, #4]
|
|
cmn r3, #1
|
|
addne r3, r3, #1
|
|
strne r3, [r7, #4]
|
|
b .L2809
|
|
.L2814:
|
|
ldr r2, [sp, #8]
|
|
mul r3, r3, r7
|
|
ldr r0, [r2]
|
|
ldr r2, [r4, #-3376]
|
|
add r2, r2, r3
|
|
ldr r2, [r2, #8]
|
|
str r0, [r2, r10, lsl #2]
|
|
ldr r2, [r4, #-3376]
|
|
add r3, r2, r3
|
|
ldr r2, [r3, #4]
|
|
orr r2, r2, #-2147483648
|
|
str r2, [r3, #4]
|
|
sub r3, r1, #3360
|
|
strh r9, [r3, #-12] @ movhi
|
|
b .L2815
|
|
.L2818:
|
|
ldr r2, [r4, #-3376]
|
|
ldr r0, .L2825+12
|
|
str fp, [r4, #1764]
|
|
add r2, r2, r5
|
|
ldr r2, [r2, #8]
|
|
str r2, [r4, #1768]
|
|
ldr r2, [r4, #-500]
|
|
str r2, [r4, #1772]
|
|
mov r2, #1
|
|
mov r1, r2
|
|
bl FlashReadPages
|
|
ldr r2, [r4, #1772]
|
|
ldrh r2, [r2, #8]
|
|
cmp r2, r9
|
|
beq .L2819
|
|
mov r2, fp
|
|
mov r1, r6
|
|
ldr r0, .L2825+16
|
|
bl printk
|
|
mov r3, #4
|
|
ldr r1, [r4, #1772]
|
|
mov r2, r3
|
|
ldr r0, .L2825+20
|
|
bl rknand_print_hex
|
|
movw r3, #2428
|
|
mov r2, #4
|
|
ldrh r3, [r8, r3]
|
|
ldr r1, [r4, #-452]
|
|
ldr r0, .L2825+24
|
|
bl rknand_print_hex
|
|
mov r3, #1
|
|
str r3, [r4, #-3612]
|
|
.L2820:
|
|
ldr r3, .L2825+4
|
|
mov r1, #0
|
|
ldr r3, [r3, #-3376]
|
|
add r2, r3, r5
|
|
str r1, [r2, #4]
|
|
strh r9, [r3, r5] @ movhi
|
|
b .L2813
|
|
.L2819:
|
|
ldr r2, [r4, #1760]
|
|
cmp r2, #256
|
|
bne .L2820
|
|
mov r2, fp
|
|
mov r1, r6
|
|
ldr r0, .L2825+28
|
|
bl printk
|
|
ldr r3, [r4, #-3376]
|
|
mov r1, r6
|
|
ldr r0, .L2825+32
|
|
add r3, r3, r5
|
|
ldr r2, [r3, #8]
|
|
bl FtlMapWritePage
|
|
b .L2820
|
|
.L2826:
|
|
.align 2
|
|
.L2825:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2400
|
|
.word .LANCHOR2+1760
|
|
.word .LC140
|
|
.word .LC101
|
|
.word .LC141
|
|
.word .LC142
|
|
.word .LANCHOR2-432
|
|
.fnend
|
|
.size log2phys, .-log2phys
|
|
.align 2
|
|
.global FtlWriteDumpData
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlWriteDumpData, %function
|
|
FtlWriteDumpData:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 40
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #44
|
|
sub sp, sp, #44
|
|
ldr r4, .L2846
|
|
ldr r3, [r4, #-3612]
|
|
cmp r3, #0
|
|
bne .L2827
|
|
sub r6, r4, #3520
|
|
ldrh r2, [r6, #4]
|
|
cmp r2, #0
|
|
beq .L2829
|
|
ldrb r3, [r4, #-3512] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L2829
|
|
ldr r8, .L2846+4
|
|
movw r3, #2390
|
|
ldrb r1, [r4, #-3513] @ zero_extendqisi2
|
|
ldrh r3, [r8, r3]
|
|
mul r3, r3, r1
|
|
cmp r2, r3
|
|
beq .L2829
|
|
ldrb r10, [r4, #-3510] @ zero_extendqisi2
|
|
cmp r10, #0
|
|
bne .L2827
|
|
ldr r7, [r8, #2452]
|
|
movw r3, #2324
|
|
mov r2, r10
|
|
mov r1, sp
|
|
ldrh r9, [r8, r3]
|
|
sub r7, r7, #1
|
|
mov r0, r7
|
|
bl log2phys
|
|
ldr r3, [sp]
|
|
ldr r5, [r4, #-500]
|
|
ldr r0, [r4, #-524]
|
|
cmn r3, #1
|
|
str r3, [sp, #8]
|
|
str r7, [sp, #20]
|
|
str r0, [sp, #12]
|
|
str r5, [sp, #16]
|
|
str r10, [r5, #4]
|
|
beq .L2831
|
|
mov r2, r10
|
|
mov r1, #1
|
|
add r0, sp, #4
|
|
bl FlashReadPages
|
|
.L2832:
|
|
ldr r10, .L2846+8
|
|
mov r8, #0
|
|
ldr r3, .L2846+12
|
|
lsl r9, r9, #2
|
|
mov fp, r8
|
|
strh r3, [r5] @ movhi
|
|
.L2833:
|
|
cmp r9, r8
|
|
bne .L2837
|
|
.L2834:
|
|
mov r3, #1
|
|
.L2845:
|
|
strb r3, [r4, #-3510]
|
|
.L2827:
|
|
add sp, sp, #44
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2831:
|
|
add r8, r8, #2400
|
|
mov r1, #255
|
|
ldrh r2, [r8]
|
|
bl ftl_memset
|
|
b .L2832
|
|
.L2837:
|
|
ldrh r3, [r6, #4]
|
|
cmp r3, #0
|
|
beq .L2834
|
|
ldr r3, [sp, #8]
|
|
mov r0, r10
|
|
str r7, [r5, #8]
|
|
add r8, r8, #1
|
|
str r3, [r5, #12]
|
|
ldrh r3, [r6]
|
|
strh r3, [r5, #2] @ movhi
|
|
bl get_new_active_ppa
|
|
ldr r3, [r4, #-3328]
|
|
mov r1, #1
|
|
str r0, [sp, #8]
|
|
add r0, sp, #4
|
|
str r3, [r5, #4]
|
|
add r3, r3, #1
|
|
cmn r3, #1
|
|
moveq r3, fp
|
|
str r3, [r4, #-3328]
|
|
mov r3, #0
|
|
mov r2, r3
|
|
bl FlashProgPages
|
|
ldrh r0, [r6]
|
|
bl decrement_vpc_count
|
|
b .L2833
|
|
.L2829:
|
|
mov r3, #0
|
|
b .L2845
|
|
.L2847:
|
|
.align 2
|
|
.L2846:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2-3520
|
|
.word -3947
|
|
.fnend
|
|
.size FtlWriteDumpData, .-FtlWriteDumpData
|
|
.align 2
|
|
.global l2p_flush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type l2p_flush, %function
|
|
l2p_flush:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mov r4, #0
|
|
ldr r5, .L2853
|
|
mov r7, #12
|
|
ldr r6, .L2853+4
|
|
bl FtlWriteDumpData
|
|
.L2849:
|
|
ldrh r3, [r5]
|
|
uxth r0, r4
|
|
cmp r3, r0
|
|
bhi .L2851
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L2851:
|
|
ldr r2, [r6, #-3376]
|
|
uxth r3, r4
|
|
mla r3, r7, r3, r2
|
|
ldr r3, [r3, #4]
|
|
cmp r3, #0
|
|
bge .L2850
|
|
bl flush_l2p_region
|
|
.L2850:
|
|
add r4, r4, #1
|
|
b .L2849
|
|
.L2854:
|
|
.align 2
|
|
.L2853:
|
|
.word .LANCHOR0+2430
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size l2p_flush, .-l2p_flush
|
|
.align 2
|
|
.global allocate_new_data_superblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type allocate_new_data_superblock, %function
|
|
allocate_new_data_superblock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
ldr r4, .L2882
|
|
ldr r3, [r4, #-3612]
|
|
cmp r3, #0
|
|
bne .L2856
|
|
ldrh r5, [r0]
|
|
movw r3, #65535
|
|
mov r7, r0
|
|
cmp r5, r3
|
|
beq .L2857
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r5, #1
|
|
mov r0, r5
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L2858
|
|
bl INSERT_DATA_LIST
|
|
.L2857:
|
|
ldr r2, .L2882+4
|
|
mov r3, #0
|
|
strb r3, [r7, #8]
|
|
cmp r7, r2
|
|
beq .L2859
|
|
ldr r3, .L2882+8
|
|
movw r1, #2344
|
|
ldrh r1, [r3, r1]
|
|
cmp r1, #1
|
|
beq .L2859
|
|
ldrb r0, [r3, #152] @ zero_extendqisi2
|
|
cmp r0, #0
|
|
beq .L2860
|
|
.L2859:
|
|
mov r3, #1
|
|
strb r3, [r7, #8]
|
|
.L2861:
|
|
ldr r3, .L2882+12
|
|
movw r2, #65535
|
|
ldrh r0, [r3]
|
|
mov r6, r3
|
|
cmp r0, r2
|
|
beq .L2866
|
|
cmp r5, r0
|
|
bne .L2867
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r0, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L2868
|
|
.L2867:
|
|
bl update_vpc_list
|
|
.L2868:
|
|
mvn r3, #0
|
|
strh r3, [r6] @ movhi
|
|
.L2866:
|
|
mov r0, r7
|
|
bl allocate_data_superblock
|
|
bl l2p_flush
|
|
mov r0, #0
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
.L2856:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L2858:
|
|
bl INSERT_FREE_LIST
|
|
b .L2857
|
|
.L2860:
|
|
sub r2, r2, #48
|
|
cmp r7, r2
|
|
bne .L2861
|
|
cmp r1, #3
|
|
beq .L2863
|
|
ldr r2, [r4, #-2724]
|
|
cmp r2, #1
|
|
bne .L2864
|
|
.L2863:
|
|
mov r2, #1
|
|
strb r2, [r4, #-3512]
|
|
.L2864:
|
|
ldr r3, [r3, #2248]
|
|
cmp r3, #0
|
|
beq .L2861
|
|
ldr r3, [r4, #-3308]
|
|
cmp r3, #39
|
|
movls r3, #1
|
|
strbls r3, [r4, #-3512]
|
|
b .L2861
|
|
.L2883:
|
|
.align 2
|
|
.L2882:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2-3472
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2-380
|
|
.fnend
|
|
.size allocate_new_data_superblock, .-allocate_new_data_superblock
|
|
.align 2
|
|
.global FtlCheckVpc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlCheckVpc, %function
|
|
FtlCheckVpc:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
mov r4, #0
|
|
ldr r6, .L2905
|
|
ldr r5, .L2905+4
|
|
ldr r1, .L2905+8
|
|
ldr r0, .L2905+12
|
|
bl printk
|
|
mov r2, #8192
|
|
mov r1, #0
|
|
ldr r0, .L2905+4
|
|
bl memset
|
|
.L2885:
|
|
ldr r3, [r6, #2452]
|
|
cmp r4, r3
|
|
bcc .L2887
|
|
ldr r9, .L2905+16
|
|
mov r4, #0
|
|
ldr r5, .L2905+20
|
|
mov r6, r4
|
|
ldr r8, .L2905+4
|
|
.L2888:
|
|
ldrh r2, [r9]
|
|
uxth r3, r4
|
|
cmp r2, r3
|
|
bhi .L2890
|
|
ldr r4, [r5, #-3528]
|
|
cmp r4, #0
|
|
beq .L2891
|
|
ldr r3, .L2905+24
|
|
mov r7, #0
|
|
ldr r9, .L2905+4
|
|
mov fp, #6
|
|
ldr r10, .L2905+28
|
|
ldrh r8, [r3, #-4]
|
|
ldr r3, [r5, #-3548]
|
|
sub r4, r4, r3
|
|
ldr r3, .L2905+32
|
|
asr r4, r4, #1
|
|
mul r4, r3, r4
|
|
uxth r4, r4
|
|
.L2892:
|
|
uxth r3, r7
|
|
cmp r8, r3
|
|
bls .L2891
|
|
ldr r2, [r5, #-3540]
|
|
lsl r3, r4, #1
|
|
ldrh r2, [r2, r3]
|
|
cmp r2, #0
|
|
beq .L2893
|
|
mov r6, #1
|
|
ldrh r3, [r9, r3]
|
|
mov r1, r4
|
|
mov r0, r10
|
|
bl printk
|
|
.L2893:
|
|
mul r4, fp, r4
|
|
ldr r3, [r5, #-3548]
|
|
add r7, r7, #1
|
|
ldrh r4, [r3, r4]
|
|
movw r3, #65535
|
|
cmp r4, r3
|
|
bne .L2892
|
|
.L2891:
|
|
mov r1, r6
|
|
ldr r0, .L2905+36
|
|
bl printk
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2887:
|
|
mov r2, #0
|
|
add r1, sp, #4
|
|
mov r0, r4
|
|
bl log2phys
|
|
ldr r0, [sp, #4]
|
|
cmn r0, #1
|
|
beq .L2886
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
lsl r0, r0, #1
|
|
ldrh r3, [r5, r0]
|
|
add r3, r3, #1
|
|
strh r3, [r5, r0] @ movhi
|
|
.L2886:
|
|
add r4, r4, #1
|
|
b .L2885
|
|
.L2890:
|
|
uxth r1, r4
|
|
ldr r3, [r5, #-3540]
|
|
lsl r7, r1, #1
|
|
ldrh r2, [r3, r7]
|
|
ldrh r3, [r8, r7]
|
|
cmp r2, r3
|
|
beq .L2889
|
|
ldr r0, .L2905+40
|
|
bl printk
|
|
ldr r3, [r5, #-3540]
|
|
movw r2, #65535
|
|
ldrh r3, [r3, r7]
|
|
cmp r3, r2
|
|
beq .L2889
|
|
ldrh r2, [r8, r7]
|
|
cmp r2, r3
|
|
movhi r6, #1
|
|
.L2889:
|
|
add r4, r4, #1
|
|
b .L2888
|
|
.L2906:
|
|
.align 2
|
|
.L2905:
|
|
.word .LANCHOR0
|
|
.word check_valid_page_count_table
|
|
.word .LANCHOR3+191
|
|
.word .LC110
|
|
.word .LANCHOR0+2332
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2-3520
|
|
.word .LC144
|
|
.word -1431655765
|
|
.word .LC145
|
|
.word .LC143
|
|
.fnend
|
|
.size FtlCheckVpc, .-FtlCheckVpc
|
|
.align 2
|
|
.global Ftlscanalldata
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftlscanalldata, %function
|
|
Ftlscanalldata:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mov r5, #0
|
|
ldr r4, .L2916
|
|
.pad #32
|
|
sub sp, sp, #32
|
|
mov r1, #0
|
|
ldr r7, .L2916+4
|
|
add r8, r4, #1760
|
|
ldr r0, .L2916+8
|
|
bl printk
|
|
.L2908:
|
|
ldr r3, [r7, #2452]
|
|
cmp r5, r3
|
|
bcc .L2914
|
|
add sp, sp, #32
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L2914:
|
|
mov r2, #0
|
|
add r1, sp, #28
|
|
mov r0, r5
|
|
bl log2phys
|
|
ubfx r3, r5, #0, #11
|
|
cmp r3, #0
|
|
bne .L2909
|
|
ldr r2, [sp, #28]
|
|
mov r1, r5
|
|
ldr r0, .L2916+12
|
|
bl printk
|
|
.L2909:
|
|
ldr r3, [sp, #28]
|
|
cmn r3, #1
|
|
beq .L2911
|
|
str r3, [r4, #1764]
|
|
mov r2, #0
|
|
ldr r3, [r4, #-524]
|
|
mov r1, #1
|
|
ldr r6, [r4, #-500]
|
|
mov r0, r8
|
|
str r5, [r4, #1776]
|
|
str r3, [r4, #1768]
|
|
str r6, [r4, #1772]
|
|
str r2, [r4, #1760]
|
|
bl FlashReadPages
|
|
ldr r3, [r4, #1760]
|
|
cmn r3, #1
|
|
cmpne r3, #256
|
|
beq .L2912
|
|
ldr r3, [r6, #8]
|
|
cmp r5, r3
|
|
beq .L2911
|
|
.L2912:
|
|
ldr r2, [r4, #1768]
|
|
ldr r3, [r4, #1772]
|
|
ldr r0, .L2916+16
|
|
ldr r1, [r2, #4]
|
|
str r1, [sp, #16]
|
|
mov r1, r5
|
|
ldr r2, [r2]
|
|
str r2, [sp, #12]
|
|
ldr r2, [r3, #12]
|
|
str r2, [sp, #8]
|
|
ldr r2, [r3, #8]
|
|
str r2, [sp, #4]
|
|
ldr r2, [r3, #4]
|
|
str r2, [sp]
|
|
ldr r2, [r4, #1764]
|
|
ldr r3, [r3]
|
|
bl printk
|
|
.L2911:
|
|
add r5, r5, #1
|
|
b .L2908
|
|
.L2917:
|
|
.align 2
|
|
.L2916:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LC146
|
|
.word .LC147
|
|
.word .LC148
|
|
.fnend
|
|
.size Ftlscanalldata, .-Ftlscanalldata
|
|
.align 2
|
|
.global FtlReUsePrevPpa
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlReUsePrevPpa, %function
|
|
FtlReUsePrevPpa:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, lr}
|
|
.pad #12
|
|
mov r5, r0
|
|
ldr r6, .L2928
|
|
ubfx r0, r1, #10, #16
|
|
str r1, [sp, #4]
|
|
bl P2V_block_in_plane
|
|
ldr r2, [r6, #-3540]
|
|
lsl r7, r0, #1
|
|
ldrh r3, [r2, r7]
|
|
cmp r3, #0
|
|
bne .L2919
|
|
ldr r4, [r6, #-3528]
|
|
cmp r4, #0
|
|
beq .L2920
|
|
ldr r2, [r6, #-3548]
|
|
sub r8, r6, #3520
|
|
ldr ip, .L2928+4
|
|
mov lr, #6
|
|
ldrh r1, [r8, #-4]
|
|
movw r9, #65535
|
|
sub r4, r4, r2
|
|
asr r4, r4, #1
|
|
mul r4, ip, r4
|
|
uxth r4, r4
|
|
.L2921:
|
|
uxth ip, r3
|
|
cmp r1, ip
|
|
bls .L2920
|
|
cmp r4, r0
|
|
bne .L2922
|
|
mov r1, r4
|
|
sub r0, r8, #8
|
|
bl List_remove_node
|
|
ldrh r3, [r8, #-4]
|
|
mov r0, r4
|
|
sub r3, r3, #1
|
|
strh r3, [r8, #-4] @ movhi
|
|
bl INSERT_DATA_LIST
|
|
ldr r2, [r6, #-3540]
|
|
ldrh r3, [r2, r7]
|
|
.L2919:
|
|
add r3, r3, #1
|
|
strh r3, [r2, r7] @ movhi
|
|
b .L2920
|
|
.L2922:
|
|
mul r4, lr, r4
|
|
add r3, r3, #1
|
|
ldrh r4, [r2, r4]
|
|
cmp r4, r9
|
|
bne .L2921
|
|
.L2920:
|
|
mov r2, #1
|
|
add r1, sp, #4
|
|
mov r0, r5
|
|
bl log2phys
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, pc}
|
|
.L2929:
|
|
.align 2
|
|
.L2928:
|
|
.word .LANCHOR2
|
|
.word -1431655765
|
|
.fnend
|
|
.size FtlReUsePrevPpa, .-FtlReUsePrevPpa
|
|
.align 2
|
|
.global FtlRecoverySuperblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlRecoverySuperblock, %function
|
|
FtlRecoverySuperblock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 48
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldrh r2, [r0]
|
|
movw r1, #65535
|
|
cmp r2, r1
|
|
beq .L3075
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
movw r2, #2390
|
|
ldr r6, .L3087
|
|
.pad #52
|
|
sub sp, sp, #52
|
|
mov r10, r0
|
|
ldrh r3, [r0, #2]
|
|
ldrh r2, [r6, r2]
|
|
str r3, [sp, #8]
|
|
cmp r2, r3
|
|
mov r2, #0
|
|
strheq r2, [r0, #4] @ movhi
|
|
strbeq r2, [r0, #6]
|
|
ldrhne r0, [r0, #16]
|
|
bne .L2934
|
|
.L3073:
|
|
mov r0, #0
|
|
add sp, sp, #52
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L2935:
|
|
uxth r0, r2
|
|
add r0, r10, r0, lsl #1
|
|
ldrh r0, [r0, #16]
|
|
.L2934:
|
|
cmp r0, r1
|
|
add r2, r2, #1
|
|
beq .L2935
|
|
ldrb r1, [r10, #8] @ zero_extendqisi2
|
|
ldrb r3, [r10, #6] @ zero_extendqisi2
|
|
cmp r1, #1
|
|
str r3, [sp, #12]
|
|
bne .L2936
|
|
bl FtlGetLastWrittenPage
|
|
cmn r0, #1
|
|
mov r4, r0
|
|
beq .L2937
|
|
ldrb r3, [r6, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
addeq r3, r6, r0, lsl #1
|
|
ldrheq r5, [r3, #156]
|
|
beq .L2938
|
|
.L3008:
|
|
mov r5, r4
|
|
.L2938:
|
|
movw r3, #2324
|
|
mov r2, #0
|
|
ldrh r3, [r6, r3]
|
|
movw r8, #65535
|
|
mov r9, #36
|
|
str r3, [sp]
|
|
ldr r3, .L3087+4
|
|
ldr r0, [r3, #-536]
|
|
ldr lr, [r3, #-2692]
|
|
movw r3, #2402
|
|
ldrh r7, [r6, r3]
|
|
add r3, r10, #16
|
|
mov ip, r3
|
|
mov r6, r2
|
|
str r3, [sp, #20]
|
|
.L2939:
|
|
ldr r1, [sp]
|
|
uxth r3, r2
|
|
cmp r1, r3
|
|
bhi .L2941
|
|
ldrb r3, [r10, #8] @ zero_extendqisi2
|
|
cmp r3, #1
|
|
movne r3, #0
|
|
bne .L3078
|
|
ldr r3, .L3087
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
adds r3, r3, #0
|
|
movne r3, #1
|
|
.L3078:
|
|
ldr r7, .L3087+4
|
|
mov r1, r6
|
|
str r3, [sp, #24]
|
|
mov r8, #0
|
|
ldr r2, [sp, #24]
|
|
movw r9, #65535
|
|
bl FlashReadPages
|
|
ldr r3, [r7, #-3328]
|
|
mov fp, r7
|
|
str r3, [sp, #16]
|
|
.L2943:
|
|
uxth r3, r8
|
|
cmp r6, r3
|
|
bhi .L2948
|
|
bne .L2946
|
|
add r4, r4, #1
|
|
uxth r3, r4
|
|
str r3, [sp]
|
|
ldr r3, [r7, #-536]
|
|
ldr r0, [r3, #4]
|
|
.L3079:
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_plane
|
|
ldrb r2, [r10, #8] @ zero_extendqisi2
|
|
str r0, [sp, #4]
|
|
ldr r3, .L3087
|
|
cmp r2, #1
|
|
bne .L2950
|
|
ldrb r1, [r3, #152] @ zero_extendqisi2
|
|
cmp r1, #0
|
|
ldreq r1, [sp]
|
|
addeq r4, r3, r1, lsl #1
|
|
ldrheq r1, [r4, #156]
|
|
streq r1, [sp]
|
|
.L2950:
|
|
movw r1, #2390
|
|
ldrh r3, [r3, r1]
|
|
ldr r1, [sp]
|
|
cmp r3, r1
|
|
ldmib sp, {r0, r1}
|
|
ldrheq r3, [sp]
|
|
strheq r3, [r10, #2] @ movhi
|
|
moveq r3, #0
|
|
strbeq r3, [r10, #6]
|
|
strheq r3, [r10, #4] @ movhi
|
|
ldrh r3, [sp, #12]
|
|
str r3, [sp, #28]
|
|
ldr ip, [sp, #28]
|
|
ldr r3, [sp]
|
|
cmp r3, r1
|
|
cmpeq r0, ip
|
|
moveq r2, r0
|
|
moveq r1, r3
|
|
beq .L3085
|
|
ldr r3, [sp, #16]
|
|
sub fp, r3, #1
|
|
movw r3, #65535
|
|
subs r9, r9, r3
|
|
movne r9, #1
|
|
cmp r2, #0
|
|
orreq r9, r9, #1
|
|
cmp r9, #0
|
|
beq .L2954
|
|
ldr r3, [r7, #-368]
|
|
uxth r8, r5
|
|
uxth r5, r5
|
|
cmn r3, #1
|
|
streq fp, [r7, #-368]
|
|
ldr r3, [r7, #-368]
|
|
mvn r7, #0
|
|
mov r6, r7
|
|
str r3, [sp, #12]
|
|
ldr r3, [sp, #8]
|
|
add r3, r3, #7
|
|
cmp r5, r3
|
|
subgt r4, r8, #7
|
|
ldrle r4, [sp, #8]
|
|
uxthgt r4, r4
|
|
.L2957:
|
|
cmp r4, r8
|
|
ldr r3, .L3087+4
|
|
bhi .L2970
|
|
ldr r2, .L3087+8
|
|
mov ip, #36
|
|
ldr r0, [r3, #-536]
|
|
mov r3, #0
|
|
ldr r1, [sp, #20]
|
|
mov r5, r3
|
|
ldrh r9, [r2]
|
|
b .L2971
|
|
.L2936:
|
|
mov r1, #0
|
|
bl FtlGetLastWrittenPage
|
|
cmn r0, #1
|
|
mov r4, r0
|
|
bne .L3008
|
|
.L2937:
|
|
mov r3, #0
|
|
strh r3, [r10, #2] @ movhi
|
|
.L3084:
|
|
strb r3, [r10, #6]
|
|
b .L3073
|
|
.L2941:
|
|
ldrh r3, [ip], #2
|
|
cmp r3, r8
|
|
beq .L2940
|
|
mla r1, r9, r6, r0
|
|
orr r3, r5, r3, lsl #10
|
|
str r3, [r1, #4]
|
|
mov r3, #0
|
|
str r3, [r1, #8]
|
|
mul r3, r7, r6
|
|
add r6, r6, #1
|
|
uxth r6, r6
|
|
add fp, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, fp
|
|
bic r3, r3, #3
|
|
add r3, lr, r3
|
|
str r3, [r1, #12]
|
|
.L2940:
|
|
add r2, r2, #1
|
|
b .L2939
|
|
.L2948:
|
|
mov r3, #36
|
|
ldr r1, [fp, #-536]
|
|
mul r3, r3, r8
|
|
add r2, r1, r3
|
|
ldr r3, [r1, r3]
|
|
cmp r3, #0
|
|
bne .L2944
|
|
ldr r2, [r2, #12]
|
|
ldr r3, [r2, #4]
|
|
cmn r3, #1
|
|
beq .L2945
|
|
ldr r1, [fp, #-3328]
|
|
mov r0, r3
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
addne r3, r3, #1
|
|
strne r3, [fp, #-3328]
|
|
.L2945:
|
|
ldr r3, [r2]
|
|
cmn r3, #1
|
|
bne .L2947
|
|
.L2946:
|
|
uxth r3, r4
|
|
uxth r8, r8
|
|
str r3, [sp]
|
|
mov r2, #36
|
|
ldr r3, [r7, #-536]
|
|
mla r8, r2, r8, r3
|
|
ldr r0, [r8, #4]
|
|
b .L3079
|
|
.L2944:
|
|
ldr r1, [r2, #4]
|
|
uxth r9, r5
|
|
ldr r0, .L3087+12
|
|
bl printk
|
|
ldrh r3, [r10]
|
|
ldr r2, .L3087+16
|
|
strh r3, [r2] @ movhi
|
|
.L2947:
|
|
add r8, r8, #1
|
|
b .L2943
|
|
.L2959:
|
|
ldrh r2, [r1], #2
|
|
movw lr, #65535
|
|
add r3, r3, #1
|
|
cmp r2, lr
|
|
mlane lr, ip, r5, r0
|
|
addne r5, r5, #1
|
|
orrne r2, r4, r2, lsl #10
|
|
uxthne r5, r5
|
|
strne r2, [lr, #4]
|
|
.L2971:
|
|
uxth r2, r3
|
|
cmp r2, r9
|
|
bcc .L2959
|
|
mov r1, r5
|
|
ldr r2, [sp, #24]
|
|
bl FlashReadPages
|
|
ldr r3, .L3087
|
|
mov r1, #36
|
|
ldr r2, .L3087+4
|
|
ldr r0, .L3087+20
|
|
ldrb ip, [r3, #152] @ zero_extendqisi2
|
|
ldr r3, [r2, #-536]
|
|
add lr, r0, r4, lsl #1
|
|
mla r5, r1, r5, r3
|
|
movw r1, #65535
|
|
.L2960:
|
|
cmp r5, r3
|
|
addeq r4, r4, #1
|
|
uxtheq r4, r4
|
|
beq .L2957
|
|
.L2969:
|
|
ldr r0, [r3]
|
|
cmp r0, #0
|
|
bne .L2961
|
|
ldr r0, [r3, #12]
|
|
ldrh r9, [r0]
|
|
cmp r9, r1
|
|
beq .L2962
|
|
ldr r0, [r0, #4]
|
|
cmn r0, #1
|
|
beq .L2962
|
|
cmn r7, #1
|
|
ldr r6, [r2, #-368]
|
|
str r0, [r2, #-368]
|
|
bne .L2962
|
|
ldrh r0, [lr]
|
|
cmp r0, r1
|
|
bne .L2963
|
|
cmp ip, #0
|
|
beq .L2962
|
|
.L2963:
|
|
cmp fp, r6
|
|
movne r7, r6
|
|
.L2962:
|
|
add r3, r3, #36
|
|
b .L2960
|
|
.L2961:
|
|
ldrh r1, [r10]
|
|
movw r2, #1846
|
|
ldr r3, .L3087+4
|
|
strh r1, [r3, r2] @ movhi
|
|
ldrb r2, [r10, #8] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
bne .L2954
|
|
ldr r2, .L3087+20
|
|
lsl r4, r4, #1
|
|
ldrh r1, [r2, r4]
|
|
movw r2, #65535
|
|
cmp r1, r2
|
|
bne .L2965
|
|
cmn r7, #1
|
|
strne r7, [r3, #-368]
|
|
bne .L2954
|
|
ldr r2, [sp, #12]
|
|
cmp fp, r2
|
|
beq .L2967
|
|
.L3080:
|
|
str r2, [r3, #-368]
|
|
b .L2954
|
|
.L2967:
|
|
ldr r2, [r3, #-368]
|
|
.L3086:
|
|
sub r2, r2, #1
|
|
b .L3080
|
|
.L2965:
|
|
cmp r6, fp
|
|
beq .L2968
|
|
cmn r6, #1
|
|
strne r6, [r3, #-368]
|
|
.L2954:
|
|
ldr r9, [sp, #8]
|
|
mov r2, #1
|
|
ldr r4, .L3087+4
|
|
movw r3, #1848
|
|
strh r2, [r4, r3] @ movhi
|
|
.L2972:
|
|
ldr r3, .L3087+8
|
|
movw r6, #65535
|
|
ldr r0, [r4, #-536]
|
|
mov r7, #36
|
|
ldr r1, [sp, #20]
|
|
mov r2, #0
|
|
ldrh lr, [r3]
|
|
ldr r3, .L3087
|
|
str r2, [sp, #12]
|
|
ldrb r5, [r3, #152] @ zero_extendqisi2
|
|
.L2973:
|
|
uxth r3, r2
|
|
cmp lr, r3
|
|
bhi .L2976
|
|
ldr r2, [sp, #24]
|
|
ldr r1, [sp, #12]
|
|
bl FlashReadPages
|
|
mov r3, #0
|
|
.L3083:
|
|
str r3, [sp, #16]
|
|
ldr r2, [sp, #12]
|
|
ldrh r3, [sp, #16]
|
|
cmp r2, r3
|
|
bhi .L3002
|
|
ldrb r3, [r10, #8] @ zero_extendqisi2
|
|
add r9, r9, #1
|
|
uxth r9, r9
|
|
cmp r3, #1
|
|
bne .L3003
|
|
ldr r3, .L3087
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3003
|
|
ldr r3, .L3087+24
|
|
ldr r2, [sp]
|
|
ldrh r3, [r3]
|
|
cmp r3, r9
|
|
cmpeq r2, r9
|
|
beq .L2979
|
|
.L3003:
|
|
ldr r3, .L3087+28
|
|
ldrh r3, [r3]
|
|
cmp r3, r9
|
|
bne .L2972
|
|
ldr r1, .L3087
|
|
movw r2, #2324
|
|
movw r0, #65535
|
|
mov r3, #0
|
|
strh r9, [r10, #2] @ movhi
|
|
ldrh r2, [r1, r2]
|
|
strh r3, [r10, #4] @ movhi
|
|
.L3004:
|
|
uxth r1, r3
|
|
cmp r1, r2
|
|
bcs .L3073
|
|
ldr r1, [sp, #20]
|
|
ldrh ip, [r1], #2
|
|
cmp ip, r0
|
|
str r1, [sp, #20]
|
|
add r1, r3, #1
|
|
bne .L3084
|
|
mov r3, r1
|
|
b .L3004
|
|
.L2968:
|
|
ldr r2, [r3, #-368]
|
|
cmp fp, r2
|
|
bne .L3086
|
|
b .L2954
|
|
.L2970:
|
|
mvn r2, #0
|
|
b .L3080
|
|
.L2976:
|
|
ldrh r3, [r1], #2
|
|
cmp r3, r6
|
|
beq .L2974
|
|
ldr ip, [sp, #12]
|
|
orr r3, r9, r3, lsl #10
|
|
mla ip, r7, ip, r0
|
|
str r3, [ip, #4]
|
|
ldrb r8, [r10, #8] @ zero_extendqisi2
|
|
cmp r8, #1
|
|
bne .L2975
|
|
cmp r5, #0
|
|
orrne r3, r3, #-2147483648
|
|
strne r3, [ip, #4]
|
|
.L2975:
|
|
ldr r3, [sp, #12]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
str r3, [sp, #12]
|
|
.L2974:
|
|
add r2, r2, #1
|
|
b .L2973
|
|
.L3002:
|
|
ldr r3, [sp, #16]
|
|
mov r6, #36
|
|
ldr r8, [r4, #-536]
|
|
mul r6, r6, r3
|
|
add r7, r8, r6
|
|
ldr r5, [r7, #4]
|
|
ubfx r0, r5, #10, #16
|
|
str r5, [sp, #44]
|
|
bl P2V_plane
|
|
ldr r3, [sp, #8]
|
|
cmp r9, r3
|
|
bcc .L2978
|
|
ldr r2, [sp, #28]
|
|
moveq r3, #1
|
|
movne r3, #0
|
|
cmp r2, r0
|
|
movls r3, #0
|
|
andhi r3, r3, #1
|
|
cmp r3, #0
|
|
bne .L2978
|
|
ldr r3, [sp]
|
|
ldr r2, [sp, #4]
|
|
cmp r9, r3
|
|
cmpeq r2, r0
|
|
beq .L2979
|
|
ldr r3, [r8, r6]
|
|
cmn r3, #1
|
|
beq .L2980
|
|
ldr r3, [r7, #12]
|
|
movw r2, #61589
|
|
ldrh r1, [r3]
|
|
cmp r1, r2
|
|
ldrhne r0, [r10]
|
|
bne .L3081
|
|
ldr fp, [r3, #4]
|
|
cmn fp, #1
|
|
beq .L2982
|
|
ldr r1, [r4, #-3328]
|
|
mov r0, fp
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
addne r2, fp, #1
|
|
strne r2, [r4, #-3328]
|
|
.L2982:
|
|
ldr r5, [r3, #8]
|
|
add r1, sp, #40
|
|
ldr r3, [r3, #12]
|
|
mov r2, #0
|
|
mov r0, r5
|
|
str r3, [sp, #36]
|
|
bl log2phys
|
|
ldr r1, [r4, #-368]
|
|
cmn r1, #1
|
|
beq .L2983
|
|
mov r0, fp
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L2983
|
|
ldr r3, [sp, #36]
|
|
cmn r3, #1
|
|
beq .L2984
|
|
ldr r0, [r4, #-536]
|
|
mov r2, #0
|
|
mov r1, #1
|
|
add r0, r0, r6
|
|
str r3, [r0, #4]
|
|
ldr r7, [r0, #12]
|
|
bl FlashReadPages
|
|
ldr r2, [r4, #-536]
|
|
ldr r1, [r2, r6]
|
|
add r3, r2, r6
|
|
cmn r1, #1
|
|
bne .L2985
|
|
.L2986:
|
|
mvn r3, #0
|
|
str r3, [sp, #36]
|
|
.L2993:
|
|
ldr r8, [sp, #36]
|
|
cmn r8, #1
|
|
beq .L2978
|
|
.L3007:
|
|
ubfx r0, r8, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r0, #1
|
|
mov r1, r0
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L2999
|
|
.L3081:
|
|
bl decrement_vpc_count
|
|
b .L2978
|
|
.L2984:
|
|
ldr r3, [sp, #44]
|
|
ldr r2, [sp, #40]
|
|
cmp r2, r3
|
|
bne .L2978
|
|
mov r2, #1
|
|
add r1, sp, #36
|
|
mov r0, r5
|
|
bl log2phys
|
|
.L2978:
|
|
ldr r3, [sp, #16]
|
|
add r3, r3, #1
|
|
b .L3083
|
|
.L2985:
|
|
ldr r1, [r7, #8]
|
|
cmp r5, r1
|
|
bne .L2986
|
|
ldr r8, [r7, #4]
|
|
ldr r0, [r4, #-368]
|
|
mov r1, r8
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L2986
|
|
ldr r1, [sp, #40]
|
|
ldr r0, [sp, #44]
|
|
cmp r1, r0
|
|
bne .L2988
|
|
.L2991:
|
|
ldr r1, [sp, #36]
|
|
mov r0, r5
|
|
bl FtlReUsePrevPpa
|
|
b .L2986
|
|
.L2988:
|
|
ldr r0, [sp, #36]
|
|
cmp r1, r0
|
|
beq .L2986
|
|
cmn r1, #1
|
|
streq r1, [r2, r6]
|
|
beq .L2990
|
|
str r1, [r3, #4]
|
|
mov r2, #0
|
|
mov r1, #1
|
|
mov r0, r3
|
|
ldr r7, [r3, #12]
|
|
bl FlashReadPages
|
|
.L2990:
|
|
ldr r3, [r4, #-536]
|
|
ldr r3, [r3, r6]
|
|
cmn r3, #1
|
|
beq .L2991
|
|
ldr r3, [r7, #4]
|
|
ldr r0, [r4, #-368]
|
|
mov r1, r3
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L2991
|
|
mov r1, r3
|
|
mov r0, r8
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
beq .L2986
|
|
b .L2991
|
|
.L2983:
|
|
ldr r3, [sp, #44]
|
|
ldr r2, [sp, #40]
|
|
cmp r2, r3
|
|
beq .L2993
|
|
ldr r3, [sp, #36]
|
|
cmn r3, #1
|
|
beq .L2995
|
|
ldr r2, .L3087
|
|
ubfx r3, r3, #10, #21
|
|
ldr r2, [r2, #2340]
|
|
cmp r3, r2
|
|
bcs .L2978
|
|
.L2995:
|
|
mov r2, #1
|
|
add r1, sp, #44
|
|
mov r0, r5
|
|
bl log2phys
|
|
ldr r8, [sp, #40]
|
|
cmn r8, #1
|
|
beq .L2993
|
|
ldr r3, [sp, #36]
|
|
cmp r8, r3
|
|
beq .L3007
|
|
ldr r6, .L3087+32
|
|
ubfx r0, r8, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldrh r3, [r6]
|
|
cmp r3, r0
|
|
beq .L2998
|
|
add r2, r6, #48
|
|
ldrh r2, [r2]
|
|
cmp r2, r0
|
|
beq .L2998
|
|
add r3, r6, #96
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
bne .L2993
|
|
.L2998:
|
|
ldr r0, [r6, #2984]
|
|
mov r2, #0
|
|
mov r1, #1
|
|
str r8, [r0, #4]
|
|
ldr r7, [r0, #12]
|
|
bl FlashReadPages
|
|
ldr r3, [r6, #2984]
|
|
ldr r3, [r3]
|
|
cmn r3, #1
|
|
beq .L2993
|
|
ldr r1, [r7, #4]
|
|
mov r0, fp
|
|
bl ftl_cmp_data_ver
|
|
cmp r0, #0
|
|
bne .L2993
|
|
mov r2, #1
|
|
add r1, sp, #40
|
|
mov r0, r5
|
|
bl log2phys
|
|
b .L2993
|
|
.L2999:
|
|
ldr r0, .L3087+36
|
|
bl printk
|
|
b .L2978
|
|
.L2980:
|
|
ldrh r3, [r10]
|
|
mov r1, r5
|
|
ldr r2, .L3087+16
|
|
ldr r0, .L3087+40
|
|
strh r3, [r2] @ movhi
|
|
mov r2, fp
|
|
bl printk
|
|
ldr r3, [r4, #1852]
|
|
cmp r3, #31
|
|
ldrls r1, [sp, #44]
|
|
addls r2, r4, r3, lsl #2
|
|
addls r3, r3, #1
|
|
strls r3, [r4, #1852]
|
|
strls r1, [r2, #1856]
|
|
ldrh r0, [r10]
|
|
bl decrement_vpc_count
|
|
ldr r3, [r4, #-368]
|
|
cmn r3, #1
|
|
bne .L3001
|
|
.L3082:
|
|
str fp, [r4, #-368]
|
|
b .L2978
|
|
.L3001:
|
|
cmp fp, r3
|
|
bcs .L2978
|
|
b .L3082
|
|
.L2979:
|
|
ldrb r3, [sp, #4] @ zero_extendqisi2
|
|
ldm sp, {r1, r2}
|
|
strb r3, [r10, #6]
|
|
ldrh r3, [sp]
|
|
strh r3, [r10, #2] @ movhi
|
|
.L3085:
|
|
mov r0, r10
|
|
bl ftl_sb_update_avl_pages
|
|
b .L3073
|
|
.L3075:
|
|
mov r0, #0
|
|
bx lr
|
|
.L3088:
|
|
.align 2
|
|
.L3087:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2324
|
|
.word .LC149
|
|
.word .LANCHOR2+1846
|
|
.word .LANCHOR2-2620
|
|
.word .LANCHOR0+2392
|
|
.word .LANCHOR0+2390
|
|
.word .LANCHOR2-3520
|
|
.word .LC150
|
|
.word .LC151
|
|
.fnend
|
|
.size FtlRecoverySuperblock, .-FtlRecoverySuperblock
|
|
.align 2
|
|
.global FtlVpcCheckAndModify
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlVpcCheckAndModify, %function
|
|
FtlVpcCheckAndModify:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.pad #8
|
|
mov r5, #0
|
|
ldr r6, .L3104
|
|
ldr r1, .L3104+4
|
|
ldr r0, .L3104+8
|
|
bl printk
|
|
movw r3, #2334
|
|
ldr r4, .L3104+12
|
|
ldrh r2, [r6, r3]
|
|
mov r1, #0
|
|
ldr r0, [r4, #-476]
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
.L3090:
|
|
ldr r3, [r6, #2452]
|
|
cmp r5, r3
|
|
bcc .L3092
|
|
ldr r8, .L3104+16
|
|
mov r7, #0
|
|
ldr r9, .L3104+20
|
|
add r10, r8, #96
|
|
.L3093:
|
|
ldrh r3, [r9]
|
|
uxth r6, r7
|
|
cmp r3, r6
|
|
bhi .L3096
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L3092:
|
|
mov r2, #0
|
|
add r1, sp, #4
|
|
mov r0, r5
|
|
bl log2phys
|
|
ldr r0, [sp, #4]
|
|
cmn r0, #1
|
|
beq .L3091
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldr r2, [r4, #-476]
|
|
lsl r0, r0, #1
|
|
ldrh r3, [r2, r0]
|
|
add r3, r3, #1
|
|
strh r3, [r2, r0] @ movhi
|
|
.L3091:
|
|
add r5, r5, #1
|
|
b .L3090
|
|
.L3096:
|
|
uxth r1, r7
|
|
ldr r3, [r4, #-3540]
|
|
movw r0, #65535
|
|
lsl r5, r1, #1
|
|
ldrh r2, [r3, r5]
|
|
ldr r3, [r4, #-476]
|
|
ldrh r3, [r3, r5]
|
|
cmp r2, r0
|
|
cmpne r2, r3
|
|
beq .L3094
|
|
ldrh r0, [r8]
|
|
cmp r0, r6
|
|
beq .L3094
|
|
ldrh r0, [r10]
|
|
cmp r0, r6
|
|
beq .L3094
|
|
ldr r0, .L3104+24
|
|
ldrh r0, [r0]
|
|
cmp r0, r6
|
|
beq .L3094
|
|
ldr r0, .L3104+28
|
|
bl printk
|
|
ldr r3, [r4, #-3540]
|
|
ldrh r2, [r3, r5]
|
|
cmp r2, #0
|
|
ldr r2, [r4, #-476]
|
|
ldrh r2, [r2, r5]
|
|
strh r2, [r3, r5] @ movhi
|
|
bne .L3095
|
|
.L3094:
|
|
add r7, r7, #1
|
|
b .L3093
|
|
.L3095:
|
|
mov r0, r6
|
|
bl update_vpc_list
|
|
b .L3094
|
|
.L3105:
|
|
.align 2
|
|
.L3104:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR3+203
|
|
.word .LC110
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2-3520
|
|
.word .LANCHOR0+2332
|
|
.word .LANCHOR2-3472
|
|
.word .LC152
|
|
.fnend
|
|
.size FtlVpcCheckAndModify, .-FtlVpcCheckAndModify
|
|
.align 2
|
|
.global FtlGcScanTempBlk
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcScanTempBlk, %function
|
|
FtlGcScanTempBlk:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 64
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r2, .L3154
|
|
movw r3, #3444
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #68
|
|
sub sp, sp, #68
|
|
mov r4, r0
|
|
str r1, [sp, #12]
|
|
ldrh r6, [r2, r3]
|
|
movw r3, #65535
|
|
cmp r6, r3
|
|
beq .L3138
|
|
cmp r6, #0
|
|
bne .L3107
|
|
.L3108:
|
|
bl FtlGcPageVarInit
|
|
b .L3109
|
|
.L3138:
|
|
mov r6, #0
|
|
.L3107:
|
|
ldr r2, .L3154+4
|
|
movw r3, #2390
|
|
ldrh r3, [r2, r3]
|
|
ldr r2, [sp, #12]
|
|
cmp r3, r2
|
|
beq .L3108
|
|
.L3109:
|
|
ldr r5, .L3154+8
|
|
mvn r3, #0
|
|
str r3, [sp, #8]
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
.L3110:
|
|
ldrh r1, [r4]
|
|
movw r3, #65535
|
|
mov r2, #0
|
|
strb r2, [r4, #8]
|
|
cmp r1, r3
|
|
beq .L3111
|
|
.L3135:
|
|
ldr r3, .L3154+12
|
|
add ip, r4, #16
|
|
ldr r0, [r5, #-536]
|
|
movw r9, #65535
|
|
ldr lr, [r5, #-2692]
|
|
mov r10, #36
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #4]
|
|
ldr r3, [r5, #-2696]
|
|
str r3, [sp, #16]
|
|
ldr r3, .L3154+16
|
|
ldrh r2, [r3]
|
|
ldrh r8, [r3, #2]
|
|
str r2, [sp, #20]
|
|
mov r2, #0
|
|
mov r7, r2
|
|
.L3112:
|
|
ldr r1, [sp, #4]
|
|
uxth r3, r2
|
|
cmp r1, r3
|
|
bhi .L3114
|
|
ldr r10, .L3154+4
|
|
mov fp, #0
|
|
mov r2, #0
|
|
mov r1, r7
|
|
bl FlashReadPages
|
|
.L3115:
|
|
uxth r3, fp
|
|
cmp r7, r3
|
|
bhi .L3133
|
|
ldr r3, [sp]
|
|
add r6, r6, #1
|
|
uxth r6, r6
|
|
add r3, r3, #1
|
|
str r3, [sp]
|
|
ldr r2, [sp]
|
|
ldr r3, [sp, #12]
|
|
cmp r3, r2
|
|
ldr r2, .L3154+20
|
|
bls .L3134
|
|
.L3136:
|
|
ldrh r3, [r2]
|
|
cmp r3, r6
|
|
bhi .L3135
|
|
mov r2, #0
|
|
b .L3111
|
|
.L3114:
|
|
ldrh r3, [ip], #2
|
|
cmp r3, r9
|
|
beq .L3113
|
|
mla r1, r10, r7, r0
|
|
orr r3, r6, r3, lsl #10
|
|
str r3, [r1, #4]
|
|
ldr r3, [sp, #20]
|
|
mul r3, r3, r7
|
|
add fp, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, fp
|
|
ldr fp, [sp, #16]
|
|
bic r3, r3, #3
|
|
add r3, fp, r3
|
|
str r3, [r1, #8]
|
|
mul r3, r8, r7
|
|
add r7, r7, #1
|
|
uxth r7, r7
|
|
add fp, r3, #3
|
|
cmp r3, #0
|
|
movlt r3, fp
|
|
bic r3, r3, #3
|
|
add r3, lr, r3
|
|
str r3, [r1, #12]
|
|
.L3113:
|
|
add r2, r2, #1
|
|
b .L3112
|
|
.L3133:
|
|
mov r9, #36
|
|
ldr r8, [r5, #-536]
|
|
mul r9, r9, fp
|
|
add r3, r8, r9
|
|
ldr r2, [r3, #4]
|
|
str r3, [sp, #16]
|
|
ubfx r0, r2, #10, #16
|
|
str r2, [sp, #4]
|
|
bl P2V_plane
|
|
ldr r8, [r8, r9]
|
|
mov r2, r0
|
|
ldr r3, [sp, #16]
|
|
cmp r8, #0
|
|
ldr r3, [r3, #12]
|
|
bne .L3116
|
|
ldrh r0, [r3]
|
|
movw r1, #65535
|
|
cmp r0, r1
|
|
bne .L3117
|
|
.L3120:
|
|
ldrb r1, [r10, #152] @ zero_extendqisi2
|
|
cmp r1, #0
|
|
beq .L3150
|
|
mov r3, #1
|
|
str r3, [r5, #-372]
|
|
.L3111:
|
|
ldr r1, .L3154
|
|
mvn r0, #0
|
|
movw r3, #3444
|
|
strh r6, [r4, #2] @ movhi
|
|
strb r2, [r4, #6]
|
|
strh r0, [r1, r3] @ movhi
|
|
mov r1, r6
|
|
mov r0, r4
|
|
bl ftl_sb_update_avl_pages
|
|
b .L3106
|
|
.L3117:
|
|
ldr r0, [r3, #8]
|
|
ldr r1, [r10, #2452]
|
|
cmp r0, r1
|
|
bhi .L3120
|
|
ldrb r2, [r10, #36] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
bne .L3123
|
|
.L3124:
|
|
ldr r2, [r3, #8]
|
|
add fp, fp, #1
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [r3, #12]
|
|
bl FtlGcUpdatePage
|
|
b .L3115
|
|
.L3150:
|
|
ldrh r3, [r4]
|
|
ldr r2, [r5, #-3540]
|
|
lsl r3, r3, #1
|
|
strh r1, [r2, r3] @ movhi
|
|
ldrh r0, [r4]
|
|
bl INSERT_FREE_LIST
|
|
ldr r2, .L3154+24
|
|
mvn r3, #0
|
|
strh r3, [r4] @ movhi
|
|
strh r3, [r2] @ movhi
|
|
.L3153:
|
|
bl FtlGcPageVarInit
|
|
mov r6, #0
|
|
b .L3110
|
|
.L3123:
|
|
mov r2, r8
|
|
add r1, sp, #24
|
|
str r3, [sp, #16]
|
|
bl log2phys
|
|
ldr r3, [sp, #16]
|
|
ldr r1, [sp, #24]
|
|
ldr r2, [r3, #12]
|
|
cmn r1, #1
|
|
sub r0, r2, r1
|
|
clz r0, r0
|
|
lsr r0, r0, #5
|
|
moveq r0, #0
|
|
cmp r0, #0
|
|
beq .L3124
|
|
str r2, [sp, #32]
|
|
mov r1, #1
|
|
ldr r2, [r5, #-504]
|
|
add r0, sp, #28
|
|
str r2, [sp, #36]
|
|
ldr r2, [r5, #-496]
|
|
str r2, [sp, #40]
|
|
mov r2, r8
|
|
bl FlashReadPages
|
|
ldr r2, .L3154+28
|
|
ldr r1, [r5, #-536]
|
|
ldr r3, [sp, #16]
|
|
ldrh r2, [r2]
|
|
add r9, r1, r9
|
|
ldr r1, [sp, #36]
|
|
lsl r2, r2, #7
|
|
.L3125:
|
|
cmp r8, r2
|
|
beq .L3124
|
|
ldr r0, [r9, #8]
|
|
ldr ip, [r0, r8, lsl #2]
|
|
ldr r0, [r1, r8, lsl #2]
|
|
cmp ip, r0
|
|
beq .L3126
|
|
ldr r2, [sp, #32]
|
|
ldrh r1, [r4]
|
|
ldr r0, .L3154+32
|
|
bl printk
|
|
ldrh r3, [r4]
|
|
mov r1, #0
|
|
ldr r2, [r5, #-3540]
|
|
lsl r3, r3, #1
|
|
strh r1, [r2, r3] @ movhi
|
|
ldrh r0, [r4]
|
|
bl INSERT_FREE_LIST
|
|
ldr r2, .L3154+36
|
|
mvn r3, #0
|
|
strh r3, [r4] @ movhi
|
|
strh r3, [r2, #-4] @ movhi
|
|
b .L3153
|
|
.L3126:
|
|
add r8, r8, #1
|
|
b .L3125
|
|
.L3116:
|
|
ldr r2, [sp, #4]
|
|
ldrh r1, [r4]
|
|
ldr r0, .L3154+40
|
|
bl printk
|
|
ldr r3, [r10, #2248]
|
|
cmp r3, #0
|
|
ldrh r3, [r4]
|
|
bne .L3129
|
|
ldrb r2, [r10, #152] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
beq .L3130
|
|
.L3129:
|
|
ldr r1, [r5, #-3604]
|
|
lsl r2, r3, #1
|
|
ldrh r2, [r1, r2]
|
|
cmp r2, #159
|
|
bls .L3131
|
|
.L3130:
|
|
ldr r2, [r5, #-536]
|
|
ldr r2, [r2, r9]
|
|
cmn r2, #1
|
|
bne .L3132
|
|
.L3131:
|
|
ldr r2, [r5, #-536]
|
|
add r9, r2, r9
|
|
ldr r2, [r9, #4]
|
|
str r2, [sp, #8]
|
|
.L3132:
|
|
ldr r2, [r5, #-3540]
|
|
lsl r3, r3, #1
|
|
mov r1, #0
|
|
strh r1, [r2, r3] @ movhi
|
|
ldrh r0, [r4]
|
|
bl INSERT_FREE_LIST
|
|
mvn r3, #0
|
|
strh r3, [r4] @ movhi
|
|
b .L3153
|
|
.L3134:
|
|
ldr r1, .L3154+44
|
|
movw r0, #65535
|
|
ldrh r3, [r1]
|
|
cmp r3, r0
|
|
beq .L3136
|
|
ldr r0, [sp]
|
|
add r3, r3, r0
|
|
strh r3, [r1] @ movhi
|
|
ldrh r3, [r2]
|
|
cmp r3, r6
|
|
bls .L3136
|
|
.L3106:
|
|
ldr r0, [sp, #8]
|
|
add sp, sp, #68
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L3155:
|
|
.align 2
|
|
.L3154:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2324
|
|
.word .LANCHOR0+2400
|
|
.word .LANCHOR0+2390
|
|
.word .LANCHOR2-3284
|
|
.word .LANCHOR0+2396
|
|
.word .LC153
|
|
.word .LANCHOR2-3280
|
|
.word .LC154
|
|
.word .LANCHOR1+3444
|
|
.fnend
|
|
.size FtlGcScanTempBlk, .-FtlGcScanTempBlk
|
|
.align 2
|
|
.global FtlReadRefresh
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlReadRefresh, %function
|
|
FtlReadRefresh:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 40
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.pad #40
|
|
sub sp, sp, #40
|
|
ldr r5, .L3173
|
|
ldr r9, [r5, #-3156]
|
|
mov r6, r5
|
|
cmp r9, #0
|
|
beq .L3157
|
|
ldr r3, .L3173+4
|
|
ldr r1, [r5, #-3152]
|
|
ldr r2, [r3, #2452]
|
|
mov r4, r3
|
|
cmp r1, r2
|
|
bcs .L3158
|
|
mov r5, #2048
|
|
.L3163:
|
|
ldr r0, [r6, #-3152]
|
|
ldr r3, [r4, #2452]
|
|
cmp r0, r3
|
|
bcc .L3159
|
|
.L3162:
|
|
mvn r0, #0
|
|
.L3156:
|
|
add sp, sp, #40
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L3159:
|
|
mov r2, #0
|
|
mov r1, sp
|
|
bl log2phys
|
|
ldr r2, [sp]
|
|
ldr r3, [r6, #-3152]
|
|
cmn r2, #1
|
|
add r3, r3, #1
|
|
str r3, [r6, #-3152]
|
|
beq .L3161
|
|
str r2, [sp, #8]
|
|
add r0, sp, #40
|
|
mov r2, #0
|
|
mov r1, #1
|
|
str r2, [r0, #-36]!
|
|
str r3, [sp, #20]
|
|
str r2, [sp, #12]
|
|
str r2, [sp, #16]
|
|
bl FlashReadPages
|
|
ldr r3, [sp, #4]
|
|
cmp r3, #256
|
|
bne .L3162
|
|
ldr r0, [sp]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
b .L3162
|
|
.L3161:
|
|
subs r5, r5, #1
|
|
bne .L3163
|
|
b .L3162
|
|
.L3158:
|
|
ldr r3, [r5, #-3364]
|
|
mov r0, #0
|
|
str r0, [r5, #-3156]
|
|
str r0, [r5, #-3152]
|
|
str r3, [r5, #-3160]
|
|
b .L3156
|
|
.L3157:
|
|
ldr r1, [r5, #-3312]
|
|
movw r4, #10000
|
|
ldr r8, [r5, #-3364]
|
|
sub r10, r5, #3584
|
|
ldr r7, [r5, #-3160]
|
|
cmp r1, r4
|
|
add r3, r8, #1048576
|
|
movhi r4, #31
|
|
movls r4, #63
|
|
cmp r7, r3
|
|
bhi .L3167
|
|
ldr r3, .L3173+4
|
|
lsr r1, r1, #10
|
|
mov r0, #1000
|
|
add r1, r1, #1
|
|
ldr r3, [r3, #2452]
|
|
mul r0, r0, r3
|
|
bl __aeabi_uidiv
|
|
add r0, r0, r7
|
|
cmp r8, r0
|
|
bhi .L3167
|
|
ldrh r3, [r10, #16]
|
|
ands r0, r4, r3
|
|
movne r0, r9
|
|
bne .L3156
|
|
ldr r2, [r5, #-3136]
|
|
cmp r3, r2
|
|
beq .L3156
|
|
.L3167:
|
|
ldrh r3, [r10, #16]
|
|
mov r0, #0
|
|
str r0, [r6, #-3152]
|
|
str r8, [r6, #-3160]
|
|
str r3, [r6, #-3136]
|
|
mov r3, #1
|
|
str r3, [r6, #-3156]
|
|
b .L3156
|
|
.L3174:
|
|
.align 2
|
|
.L3173:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlReadRefresh, .-FtlReadRefresh
|
|
.align 2
|
|
.global FtlGcFreeTempBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcFreeTempBlock, %function
|
|
FtlGcFreeTempBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
movw r3, #2390
|
|
ldr r4, .L3213
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
ldr r6, .L3213+4
|
|
ldr ip, [r4, #-3612]
|
|
ldrh r1, [r6, r3]
|
|
cmp ip, #0
|
|
beq .L3176
|
|
.L3212:
|
|
mov r0, #0
|
|
.L3175:
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L3176:
|
|
sub r5, r4, #3424
|
|
movw lr, #65535
|
|
ldrh r7, [r5]
|
|
cmp r7, lr
|
|
bne .L3178
|
|
.L3187:
|
|
ldrh r2, [r5]
|
|
movw r3, #65535
|
|
mov r7, #0
|
|
str r7, [r4, #-372]
|
|
cmp r2, r3
|
|
beq .L3212
|
|
bl FtlCacheWriteBack
|
|
movw r0, #2390
|
|
ldrb r2, [r4, #-3417] @ zero_extendqisi2
|
|
ldrh r0, [r6, r0]
|
|
mov fp, #12
|
|
ldrh r3, [r5]
|
|
ldr r1, [r4, #-3540]
|
|
ldr r8, .L3213+8
|
|
smulbb r2, r2, r0
|
|
lsl r3, r3, #1
|
|
strh r2, [r1, r3] @ movhi
|
|
ldr r2, [r4, #-3344]
|
|
ldrh r3, [r8, #-12]
|
|
add r3, r3, r2
|
|
str r3, [r4, #-3344]
|
|
.L3188:
|
|
ldrh r2, [r8, #-12]
|
|
uxth r3, r7
|
|
cmp r2, r3
|
|
bhi .L3192
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
ldrb r3, [r6, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3193
|
|
ldrh r1, [r5]
|
|
ldr r0, .L3213+12
|
|
bl printk
|
|
.L3193:
|
|
ldrh r0, [r5]
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r0, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
beq .L3194
|
|
bl INSERT_DATA_LIST
|
|
.L3195:
|
|
ldr r7, .L3213+16
|
|
mvn r9, #0
|
|
strh r9, [r5] @ movhi
|
|
mov r5, #0
|
|
strh r5, [r8, #-12] @ movhi
|
|
strh r5, [r7, #-4] @ movhi
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
sub r3, r7, #608
|
|
sub r2, r7, #848
|
|
strh r9, [r3, #-4] @ movhi
|
|
ldr r3, [r6, #2248]
|
|
ldrh r2, [r2, #-4]
|
|
cmp r3, r5
|
|
sub r3, r7, #624
|
|
ldrh r3, [r3, #-8]
|
|
beq .L3196
|
|
ldr r1, [r4, #-3308]
|
|
cmp r1, #39
|
|
bhi .L3196
|
|
cmp r2, r3
|
|
lslcc r3, r3, #1
|
|
strhcc r3, [r7, #-48] @ movhi
|
|
b .L3212
|
|
.L3178:
|
|
cmp r0, #0
|
|
beq .L3181
|
|
ldr r2, .L3213+20
|
|
movw r3, #3444
|
|
ldrh r0, [r2, r3]
|
|
cmp r0, lr
|
|
beq .L3182
|
|
.L3183:
|
|
mov r1, #2
|
|
.L3181:
|
|
ldr r0, .L3213+24
|
|
bl FtlGcScanTempBlk
|
|
cmn r0, #1
|
|
str r0, [sp, #12]
|
|
beq .L3184
|
|
ldr r2, [r4, #-3604]
|
|
lsl r7, r7, #1
|
|
ldrh r3, [r2, r7]
|
|
cmp r3, #4
|
|
bls .L3185
|
|
sub r3, r3, #5
|
|
mov r0, #1
|
|
strh r3, [r2, r7] @ movhi
|
|
bl FtlEctTblFlush
|
|
.L3185:
|
|
ldr r3, [r4, #-372]
|
|
cmp r3, #0
|
|
bne .L3186
|
|
ldr r3, [r4, #-3140]
|
|
ldr r0, [sp, #12]
|
|
add r3, r3, #1
|
|
ubfx r0, r0, #10, #16
|
|
str r3, [r4, #-3140]
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
.L3186:
|
|
mov r3, #0
|
|
str r3, [r4, #-372]
|
|
.L3198:
|
|
mov r0, #1
|
|
b .L3175
|
|
.L3182:
|
|
strh ip, [r2, r3] @ movhi
|
|
sub r3, r4, #3520
|
|
ldrh r3, [r3, #-4]
|
|
cmp r3, #17
|
|
bhi .L3183
|
|
b .L3181
|
|
.L3184:
|
|
ldr r2, .L3213+20
|
|
movw r3, #3444
|
|
ldrh r2, [r2, r3]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L3198
|
|
b .L3187
|
|
.L3192:
|
|
uxth r10, r7
|
|
ldr r3, [r4, #-2672]
|
|
ldr r2, [r6, #2452]
|
|
mul r10, fp, r10
|
|
add r9, r3, r10
|
|
ldr r0, [r9, #8]
|
|
cmp r0, r2
|
|
bcc .L3189
|
|
.L3210:
|
|
ldrh r0, [r5]
|
|
b .L3211
|
|
.L3189:
|
|
mov r2, #0
|
|
add r1, sp, #12
|
|
str r3, [sp, #4]
|
|
bl log2phys
|
|
ldr r3, [sp, #4]
|
|
ldr r2, [sp, #12]
|
|
ldr r0, [r3, r10]
|
|
cmp r0, r2
|
|
bne .L3191
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
mov r2, #1
|
|
mov r10, r0
|
|
add r1, r9, #4
|
|
ldr r0, [r9, #8]
|
|
bl log2phys
|
|
mov r0, r10
|
|
.L3211:
|
|
bl decrement_vpc_count
|
|
b .L3190
|
|
.L3191:
|
|
ldr r3, [r9, #4]
|
|
cmp r2, r3
|
|
bne .L3210
|
|
.L3190:
|
|
add r7, r7, #1
|
|
b .L3188
|
|
.L3194:
|
|
bl INSERT_FREE_LIST
|
|
b .L3195
|
|
.L3196:
|
|
add r1, r3, r3, lsl #1
|
|
cmp r2, r1, asr #2
|
|
ble .L3212
|
|
ldrb r0, [r6, #152] @ zero_extendqisi2
|
|
ldr r2, .L3213+28
|
|
cmp r0, #0
|
|
moveq r3, #20
|
|
strheq r3, [r2] @ movhi
|
|
beq .L3175
|
|
sub r3, r3, #2
|
|
strh r3, [r2] @ movhi
|
|
b .L3212
|
|
.L3214:
|
|
.align 2
|
|
.L3213:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2-2656
|
|
.word .LC155
|
|
.word .LANCHOR2-2672
|
|
.word .LANCHOR1
|
|
.word .LANCHOR2-3424
|
|
.word .LANCHOR2-2720
|
|
.fnend
|
|
.size FtlGcFreeTempBlock, .-FtlGcFreeTempBlock
|
|
.align 2
|
|
.global FtlGcPageRecovery
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlGcPageRecovery, %function
|
|
FtlGcPageRecovery:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
movw r5, #2390
|
|
ldr r4, .L3218
|
|
ldr r6, .L3218+4
|
|
sub r7, r4, #3424
|
|
mov r0, r7
|
|
ldrh r1, [r6, r5]
|
|
bl FtlGcScanTempBlk
|
|
ldrh r2, [r7, #2]
|
|
ldrh r3, [r6, r5]
|
|
cmp r2, r3
|
|
popcc {r4, r5, r6, r7, r8, pc}
|
|
sub r0, r4, #432
|
|
bl FtlMapBlkWriteDumpData
|
|
mov r0, #0
|
|
bl FtlGcFreeTempBlock
|
|
mov r3, #0
|
|
str r3, [r4, #-372]
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L3219:
|
|
.align 2
|
|
.L3218:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size FtlGcPageRecovery, .-FtlGcPageRecovery
|
|
.align 2
|
|
.global FtlPowerLostRecovery
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlPowerLostRecovery, %function
|
|
FtlPowerLostRecovery:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r5, #0
|
|
ldr r4, .L3222
|
|
sub r6, r4, #3520
|
|
str r5, [r4, #1852]
|
|
mov r0, r6
|
|
sub r4, r4, #3472
|
|
bl FtlRecoverySuperblock
|
|
mov r0, r6
|
|
bl FtlSlcSuperblockCheck
|
|
mov r0, r4
|
|
bl FtlRecoverySuperblock
|
|
mov r0, r4
|
|
bl FtlSlcSuperblockCheck
|
|
bl FtlGcPageRecovery
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
mov r0, r5
|
|
pop {r4, r5, r6, pc}
|
|
.L3223:
|
|
.align 2
|
|
.L3222:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size FtlPowerLostRecovery, .-FtlPowerLostRecovery
|
|
.align 2
|
|
.global FtlSysBlkInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSysBlkInit, %function
|
|
FtlSysBlkInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r2, #0
|
|
ldr r5, .L3242
|
|
movw r3, #1848
|
|
ldr r6, .L3242+4
|
|
strh r2, [r5, r3] @ movhi
|
|
mvn r2, #0
|
|
movw r3, #1846
|
|
strh r2, [r5, r3] @ movhi
|
|
add r3, r6, #2320
|
|
add r3, r3, #8
|
|
ldrh r0, [r3]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlScanSysBlk
|
|
sub r3, r5, #3296
|
|
ldrh r2, [r3, #-4]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L3225
|
|
.L3227:
|
|
mvn r7, #0
|
|
.L3224:
|
|
mov r0, r7
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L3225:
|
|
bl FtlLoadSysInfo
|
|
subs r7, r0, #0
|
|
bne .L3227
|
|
bl FtlLoadMapInfo
|
|
bl FtlLoadVonderInfo
|
|
bl Ftl_load_ext_data
|
|
bl FtlLoadEctTbl
|
|
bl FtlFreeSysBLkSort
|
|
bl SupperBlkListInit
|
|
bl FtlPowerLostRecovery
|
|
mov r0, #1
|
|
bl FtlUpdateVaildLpn
|
|
ldr r2, [r5, #-3376]
|
|
movw r3, #2430
|
|
ldrh r1, [r6, r3]
|
|
mov r0, #12
|
|
mov r3, r7
|
|
.L3228:
|
|
cmp r3, r1
|
|
bge .L3233
|
|
mla ip, r0, r3, r2
|
|
ldr ip, [ip, #4]
|
|
cmp ip, #0
|
|
bge .L3229
|
|
.L3233:
|
|
ldr r4, .L3242+8
|
|
cmp r3, r1
|
|
ldrh r2, [r4, #28]
|
|
add r8, r4, #12
|
|
add r4, r4, #76
|
|
add r2, r2, #1
|
|
strh r2, [r4, #-48] @ movhi
|
|
bge .L3240
|
|
.L3230:
|
|
ldrh r3, [r4]
|
|
movw ip, #2390
|
|
ldr r1, [r5, #-3540]
|
|
ldrh r0, [r4, #4]
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r1, r3]
|
|
sub r2, r2, r0
|
|
strh r2, [r1, r3] @ movhi
|
|
mov r2, #0
|
|
ldrh r3, [r6, ip]
|
|
ldr lr, [r5, #-3540]
|
|
strb r2, [r5, #-3514]
|
|
strh r3, [r4, #2] @ movhi
|
|
ldr r3, .L3242+12
|
|
strh r2, [r4, #4] @ movhi
|
|
ldrh r1, [r3]
|
|
ldrh r9, [r3, #4]
|
|
lsl r1, r1, #1
|
|
ldrh r0, [lr, r1]
|
|
sub r0, r0, r9
|
|
strh r0, [lr, r1] @ movhi
|
|
ldrh r1, [r6, ip]
|
|
strh r2, [r3, #4] @ movhi
|
|
strb r2, [r5, #-3466]
|
|
strh r1, [r3, #2] @ movhi
|
|
ldrh r3, [r8, #18]
|
|
add r3, r3, #1
|
|
strh r3, [r8, #18] @ movhi
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
bl FtlVpcTblFlush
|
|
b .L3234
|
|
.L3229:
|
|
add r3, r3, #1
|
|
b .L3228
|
|
.L3240:
|
|
movw r3, #1848
|
|
ldrh r3, [r5, r3]
|
|
cmp r3, #0
|
|
bne .L3230
|
|
.L3234:
|
|
ldrh r0, [r4]
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
beq .L3235
|
|
ldrh r3, [r4, #4]
|
|
cmp r3, #0
|
|
bne .L3235
|
|
ldr r4, .L3242+12
|
|
ldrh r3, [r4, #4]
|
|
cmp r3, #0
|
|
bne .L3235
|
|
bl FtlGcRefreshOpenBlock
|
|
ldrh r0, [r4]
|
|
bl FtlGcRefreshOpenBlock
|
|
bl FtlVpcTblFlush
|
|
sub r0, r4, #48
|
|
bl allocate_new_data_superblock
|
|
mov r0, r4
|
|
bl allocate_new_data_superblock
|
|
.L3235:
|
|
ldrb r3, [r6, #36] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L3236
|
|
ldrh r3, [r8, #16]
|
|
tst r3, #31
|
|
bne .L3224
|
|
.L3236:
|
|
bl FtlVpcCheckAndModify
|
|
b .L3224
|
|
.L3243:
|
|
.align 2
|
|
.L3242:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2-3596
|
|
.word .LANCHOR2-3472
|
|
.fnend
|
|
.size FtlSysBlkInit, .-FtlSysBlkInit
|
|
.align 2
|
|
.global FtlLowFormat
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlLowFormat, %function
|
|
FtlLowFormat:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #12
|
|
ldr r4, .L3276
|
|
ldr r6, [r4, #-3612]
|
|
cmp r6, #0
|
|
bne .L3246
|
|
ldr r5, .L3276+4
|
|
movw r7, #2428
|
|
mov r1, r6
|
|
ldr r0, [r4, #-448]
|
|
ldrh r2, [r5, r7]
|
|
lsl r2, r2, #2
|
|
bl ftl_memset
|
|
ldrh r2, [r5, r7]
|
|
mov r1, r6
|
|
ldr r0, [r4, #-452]
|
|
lsl r2, r2, #2
|
|
bl ftl_memset
|
|
add r3, r5, #2320
|
|
str r6, [r4, #-3332]
|
|
add r3, r3, #8
|
|
ldrh r0, [r3]
|
|
str r6, [r4, #-3328]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlLoadBbt
|
|
cmp r0, #0
|
|
beq .L3247
|
|
bl FtlMakeBbt
|
|
.L3247:
|
|
ldr r0, .L3276+8
|
|
mov r2, #0
|
|
ldr ip, .L3276+12
|
|
.L3248:
|
|
ldrh r1, [r0]
|
|
uxth r3, r2
|
|
add r2, r2, #1
|
|
cmp r3, r1, lsl #7
|
|
blt .L3249
|
|
movw r3, #2332
|
|
ldr r9, .L3276+16
|
|
ldrh r7, [r5, r3]
|
|
mov r6, #0
|
|
mov r8, r9
|
|
.L3250:
|
|
ldrh r3, [r9]
|
|
cmp r3, r7
|
|
bhi .L3251
|
|
movw r3, #2324
|
|
ldrh r1, [r5, r3]
|
|
sub r3, r6, #3
|
|
cmp r3, r1, lsl #1
|
|
blt .L3252
|
|
mov r0, r6
|
|
mov r6, #0
|
|
bl __aeabi_uidiv
|
|
ldr r3, [r5, #2424]
|
|
add r0, r0, r3
|
|
uxth r0, r0
|
|
bl FtlSysBlkNumInit
|
|
add r3, r5, #2320
|
|
add r3, r3, #8
|
|
ldrh r0, [r3]
|
|
bl FtlFreeSysBlkQueueInit
|
|
movw r3, #2332
|
|
ldrh r7, [r5, r3]
|
|
.L3253:
|
|
ldrh r3, [r8]
|
|
cmp r3, r7
|
|
bhi .L3254
|
|
.L3252:
|
|
ldr r8, .L3276+20
|
|
mov r7, #0
|
|
mov r9, r7
|
|
.L3255:
|
|
ldrh r3, [r8]
|
|
uxth r0, r7
|
|
add r7, r7, #1
|
|
cmp r3, r0
|
|
bhi .L3256
|
|
movw r3, #2334
|
|
ldr r2, [r5, #2336]
|
|
ldrh r3, [r5, r3]
|
|
ldr r8, .L3276+24
|
|
mov r0, r2
|
|
str r2, [sp, #4]
|
|
str r3, [r4, #-548]
|
|
movw r3, #2324
|
|
ldrh r7, [r5, r3]
|
|
mov r1, r7
|
|
bl __aeabi_uidiv
|
|
ubfx r10, r0, #5, #16
|
|
mov fp, r0
|
|
add r3, r10, #36
|
|
str r0, [r5, #2452]
|
|
strh r3, [r8, #-8] @ movhi
|
|
mov r3, #24
|
|
mul r3, r3, r7
|
|
cmp r9, r3
|
|
ble .L3257
|
|
ldr r2, [sp, #4]
|
|
mov r1, r7
|
|
sub r0, r2, r9
|
|
bl __aeabi_uidiv
|
|
str r0, [r5, #2452]
|
|
lsr r0, r0, #5
|
|
add r0, r0, #24
|
|
strh r0, [r8, #-8] @ movhi
|
|
.L3257:
|
|
ldr r3, [r5, #2248]
|
|
cmp r3, #1
|
|
bne .L3258
|
|
ldrh r3, [r8, #-8]
|
|
mov r1, r7
|
|
mov r0, r9
|
|
str r3, [sp, #4]
|
|
bl __aeabi_uidiv
|
|
ldr r3, [sp, #4]
|
|
uxtah r0, r3, r0
|
|
add r3, r3, r0, asr #2
|
|
strh r3, [r8, #-8] @ movhi
|
|
.L3258:
|
|
ldrb r3, [r5, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3259
|
|
ldrh r3, [r8, #-8]
|
|
mov r1, r7
|
|
mov r0, r9
|
|
str r3, [sp, #4]
|
|
bl __aeabi_uidiv
|
|
ldr r3, [sp, #4]
|
|
uxtah r0, r3, r0
|
|
add r3, r3, r0, asr #2
|
|
strh r3, [r8, #-8] @ movhi
|
|
.L3259:
|
|
ldr r3, .L3276+28
|
|
ldrh r3, [r3]
|
|
cmp r3, #0
|
|
beq .L3261
|
|
ldrh r2, [r8, #-8]
|
|
add r2, r2, r3, lsr #1
|
|
strh r2, [r8, #-8] @ movhi
|
|
mul r2, r7, r3
|
|
cmp r9, r2
|
|
addlt r3, r3, #32
|
|
strlt fp, [r5, #2452]
|
|
addlt r3, r10, r3
|
|
strhlt r3, [r8, #-8] @ movhi
|
|
.L3261:
|
|
ldrh r2, [r8, #-8]
|
|
ldr r3, [r5, #2452]
|
|
sub r3, r3, r2
|
|
mul r7, r7, r3
|
|
movw r3, #2390
|
|
ldrh r3, [r5, r3]
|
|
str r7, [r4, #1796]
|
|
mul r7, r7, r3
|
|
movw r3, #2396
|
|
ldrh r3, [r5, r3]
|
|
str r7, [r5, #2452]
|
|
mul r7, r7, r3
|
|
str r7, [r5, #2432]
|
|
bl FtlBbmTblFlush
|
|
movw r3, #2404
|
|
ldr r2, [r5, #2340]
|
|
ldrh r3, [r5, r3]
|
|
add r1, r6, r9
|
|
add r3, r3, r2, lsr #3
|
|
cmp r1, r3
|
|
bls .L3263
|
|
lsr r2, r2, #5
|
|
ldr r0, .L3276+32
|
|
bl printk
|
|
.L3263:
|
|
movw r3, #2334
|
|
ldr r6, .L3276+36
|
|
ldrh r2, [r5, r3]
|
|
mov r1, #0
|
|
ldr r0, [r4, #-3540]
|
|
mvn r7, #0
|
|
sub r6, r6, #240
|
|
lsl r2, r2, #1
|
|
bl ftl_memset
|
|
mov r3, #0
|
|
strh r7, [r6, #236] @ movhi
|
|
strh r3, [r6, #238] @ movhi
|
|
mov r1, #255
|
|
str r3, [r4, #-3368]
|
|
strb r3, [r4, #-3278]
|
|
strb r3, [r4, #-3276]
|
|
strh r3, [r6, #2] @ movhi
|
|
strb r3, [r4, #-3514]
|
|
strh r3, [r6] @ movhi
|
|
mov r3, #1
|
|
strb r3, [r4, #-3512]
|
|
movw r3, #2332
|
|
ldrh r2, [r5, r3]
|
|
ldr r0, [r5, #32]
|
|
mov r5, r6
|
|
lsr r2, r2, #3
|
|
bl ftl_memset
|
|
.L3264:
|
|
mov r0, r6
|
|
bl make_superblock
|
|
ldrb r3, [r4, #-3513] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
ldrh r3, [r5]
|
|
bne .L3265
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r3, #1
|
|
strh r7, [r2, r3] @ movhi
|
|
ldrh r3, [r5]
|
|
add r3, r3, #1
|
|
strh r3, [r5] @ movhi
|
|
b .L3264
|
|
.L3249:
|
|
ldr lr, [r4, #-508]
|
|
mvn r1, r3
|
|
orr r1, r3, r1, lsl #16
|
|
str r1, [lr, r3, lsl #2]
|
|
ldr r1, [r4, #-504]
|
|
str ip, [r1, r3, lsl #2]
|
|
b .L3248
|
|
.L3251:
|
|
mov r0, r7
|
|
mov r1, #1
|
|
bl FtlLowFormatEraseBlock
|
|
add r7, r7, #1
|
|
add r6, r6, r0
|
|
uxth r6, r6
|
|
uxth r7, r7
|
|
b .L3250
|
|
.L3254:
|
|
mov r0, r7
|
|
mov r1, #1
|
|
bl FtlLowFormatEraseBlock
|
|
add r7, r7, #1
|
|
add r6, r6, r0
|
|
uxth r6, r6
|
|
uxth r7, r7
|
|
b .L3253
|
|
.L3256:
|
|
mov r1, #0
|
|
bl FtlLowFormatEraseBlock
|
|
add r9, r9, r0
|
|
uxth r9, r9
|
|
b .L3255
|
|
.L3265:
|
|
ldr r2, [r4, #-3332]
|
|
lsl r3, r3, #1
|
|
ldrh r1, [r5, #4]
|
|
mvn r6, #0
|
|
str r2, [r4, #-3508]
|
|
add r2, r2, #1
|
|
str r2, [r4, #-3332]
|
|
ldr r2, [r4, #-3540]
|
|
strh r1, [r2, r3] @ movhi
|
|
mov r2, #0
|
|
ldr r3, .L3276+40
|
|
strb r2, [r4, #-3466]
|
|
strh r2, [r3, #2] @ movhi
|
|
mov r7, r3
|
|
ldrh r2, [r5]
|
|
mov r5, r3
|
|
add r2, r2, #1
|
|
strh r2, [r3] @ movhi
|
|
mov r2, #1
|
|
strb r2, [r4, #-3464]
|
|
.L3266:
|
|
mov r0, r7
|
|
bl make_superblock
|
|
ldrb r3, [r4, #-3465] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
ldrh r3, [r5]
|
|
bne .L3267
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r3, #1
|
|
strh r6, [r2, r3] @ movhi
|
|
ldrh r3, [r5]
|
|
add r3, r3, #1
|
|
strh r3, [r5] @ movhi
|
|
b .L3266
|
|
.L3267:
|
|
ldr r2, [r4, #-3332]
|
|
lsl r3, r3, #1
|
|
ldrh r1, [r5, #4]
|
|
mvn r5, #0
|
|
str r2, [r4, #-3460]
|
|
add r2, r2, #1
|
|
str r2, [r4, #-3332]
|
|
ldr r2, [r4, #-3540]
|
|
strh r1, [r2, r3] @ movhi
|
|
ldr r3, .L3276+44
|
|
strh r5, [r3] @ movhi
|
|
bl FtlFreeSysBlkQueueOut
|
|
sub r3, r8, #4
|
|
mov r2, #0
|
|
strh r5, [r3, #4] @ movhi
|
|
ldr r3, [r4, #-3332]
|
|
strh r2, [r8, #-2] @ movhi
|
|
ldr r2, [r4, #1796]
|
|
str r3, [r4, #-3292]
|
|
add r3, r3, #1
|
|
str r3, [r4, #-3332]
|
|
strh r2, [r8, #2] @ movhi
|
|
strh r0, [r8, #-4] @ movhi
|
|
bl FtlVpcTblFlush
|
|
bl FtlSysBlkInit
|
|
cmp r0, #0
|
|
ldreq r3, .L3276+48
|
|
moveq r2, #1
|
|
streq r2, [r3, #500]
|
|
.L3246:
|
|
mov r0, #0
|
|
add sp, sp, #12
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L3277:
|
|
.align 2
|
|
.L3276:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2396
|
|
.word 168778952
|
|
.word .LANCHOR0+2334
|
|
.word .LANCHOR0+2332
|
|
.word .LANCHOR2-3296
|
|
.word .LANCHOR0+2384
|
|
.word .LC156
|
|
.word .LANCHOR2-3280
|
|
.word .LANCHOR2-3472
|
|
.word .LANCHOR2-3424
|
|
.word .LANCHOR1
|
|
.fnend
|
|
.size FtlLowFormat, .-FtlLowFormat
|
|
.align 2
|
|
.global FtlReInitForSDUpdata
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlReInitForSDUpdata, %function
|
|
FtlReInitForSDUpdata:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r2, r3, r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
.pad #16
|
|
ldr r4, .L3314
|
|
ldrb r3, [r4, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3279
|
|
.L3281:
|
|
mov r6, #0
|
|
.L3278:
|
|
mov r0, r6
|
|
add sp, sp, #16
|
|
@ sp needed
|
|
pop {r4, r5, r6, pc}
|
|
.L3279:
|
|
ldr r5, .L3314+4
|
|
ldr r0, [r5, #1684]
|
|
bl FlashInit
|
|
subs r6, r0, #0
|
|
bne .L3281
|
|
bl FlashLoadFactorBbt
|
|
cmp r0, #0
|
|
beq .L3282
|
|
bl FlashMakeFactorBbt
|
|
.L3282:
|
|
ldr r0, [r5, #1724]
|
|
bl FlashReadIdbDataRaw
|
|
cmp r0, #0
|
|
beq .L3283
|
|
mov r2, #16
|
|
mov r1, #0
|
|
mov r0, sp
|
|
bl FlashReadFacBbtData
|
|
ldr r1, [sp]
|
|
mov r3, #0
|
|
mov r2, r3
|
|
mov r0, #1
|
|
.L3285:
|
|
ands ip, r1, r0, lsl r2
|
|
add r2, r2, #1
|
|
addne r3, r3, #1
|
|
cmp r2, #16
|
|
bne .L3285
|
|
cmp r3, #6
|
|
bhi .L3286
|
|
.L3311:
|
|
strb r2, [r4, #37]
|
|
b .L3287
|
|
.L3286:
|
|
mov r2, #0
|
|
mov r0, #1
|
|
.L3289:
|
|
ands ip, r1, r0, lsl r2
|
|
add r2, r2, #1
|
|
addne r3, r3, #1
|
|
cmp r2, #24
|
|
bne .L3289
|
|
cmp r3, #17
|
|
movhi r3, #36
|
|
strbhi r3, [r4, #37]
|
|
bls .L3311
|
|
.L3287:
|
|
ldrb r3, [r4, #37] @ zero_extendqisi2
|
|
strh r3, [r4, #150] @ movhi
|
|
.L3283:
|
|
ldr r1, .L3314+8
|
|
ldr r0, .L3314+12
|
|
bl printk
|
|
ldr r0, .L3314+16
|
|
bl FtlConstantsInit
|
|
bl FtlVariablesInit
|
|
ldr r0, [r4, #2328]
|
|
mov r4, #1
|
|
uxth r0, r0
|
|
bl FtlFreeSysBlkQueueInit
|
|
.L3291:
|
|
bl FtlLoadBbt
|
|
cmp r0, #0
|
|
beq .L3292
|
|
.L3313:
|
|
bl FtlLowFormat
|
|
cmp r4, #3
|
|
mvnhi r6, #0
|
|
bhi .L3278
|
|
.L3293:
|
|
add r4, r4, #1
|
|
b .L3291
|
|
.L3292:
|
|
bl FtlSysBlkInit
|
|
cmp r0, #0
|
|
bne .L3313
|
|
ldr r3, .L3314+20
|
|
mov r2, #1
|
|
str r2, [r3, #500]
|
|
b .L3278
|
|
.L3315:
|
|
.align 2
|
|
.L3314:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LC76
|
|
.word .LC77
|
|
.word .LANCHOR0+124
|
|
.word .LANCHOR1
|
|
.fnend
|
|
.size FtlReInitForSDUpdata, .-FtlReInitForSDUpdata
|
|
.align 2
|
|
.global Ftl_gc_temp_data_write_back
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_gc_temp_data_write_back, %function
|
|
Ftl_gc_temp_data_write_back:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
ldr r4, .L3332
|
|
ldr r3, [r4, #-3612]
|
|
cmp r3, #0
|
|
beq .L3317
|
|
.L3320:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
.L3317:
|
|
ldr r3, .L3332+4
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3319
|
|
ldr r3, [r4, #-2704]
|
|
tst r3, #1
|
|
beq .L3319
|
|
sub r3, r4, #3424
|
|
ldrh r3, [r3, #4]
|
|
cmp r3, #0
|
|
bne .L3320
|
|
.L3319:
|
|
mov r3, #0
|
|
mov r5, #0
|
|
mov r6, #36
|
|
mov r2, r3
|
|
ldr r1, [r4, #-2704]
|
|
ldr r0, [r4, #-532]
|
|
bl FlashProgPages
|
|
.L3321:
|
|
ldr r1, [r4, #-2704]
|
|
uxth r3, r5
|
|
cmp r3, r1
|
|
bcc .L3323
|
|
ldr r0, [r4, #-532]
|
|
bl FtlGcBufFree
|
|
mov r3, #0
|
|
str r3, [r4, #-2704]
|
|
ldr r3, .L3332+8
|
|
ldrh r3, [r3, #4]
|
|
cmp r3, #0
|
|
bne .L3320
|
|
mov r0, #1
|
|
bl FtlGcFreeTempBlock
|
|
b .L3331
|
|
.L3323:
|
|
mul r3, r6, r3
|
|
ldr r2, [r4, #-532]
|
|
add r5, r5, #1
|
|
ldr ip, [r2, r3]
|
|
add r1, r2, r3
|
|
ldr r0, [r1, #12]
|
|
cmn ip, #1
|
|
bne .L3322
|
|
ldr r1, .L3332+8
|
|
mov lr, #0
|
|
ldr r0, [r4, #-3540]
|
|
ldrh r2, [r1]
|
|
lsl r2, r2, #1
|
|
strh lr, [r0, r2] @ movhi
|
|
ldr r2, [r4, #-3140]
|
|
strh ip, [r1] @ movhi
|
|
add r2, r2, #1
|
|
str r2, [r4, #-3140]
|
|
ldr r2, [r4, #-532]
|
|
add r3, r2, r3
|
|
ldr r0, [r3, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlBbmMapBadBlock
|
|
bl FtlBbmTblFlush
|
|
bl FtlGcPageVarInit
|
|
.L3331:
|
|
mov r0, #1
|
|
pop {r4, r5, r6, pc}
|
|
.L3322:
|
|
ldr r2, [r0, #8]
|
|
ldr r1, [r1, #4]
|
|
ldr r0, [r0, #12]
|
|
bl FtlGcUpdatePage
|
|
b .L3321
|
|
.L3333:
|
|
.align 2
|
|
.L3332:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2-3424
|
|
.fnend
|
|
.size Ftl_gc_temp_data_write_back, .-Ftl_gc_temp_data_write_back
|
|
.align 2
|
|
.global Ftl_get_new_temp_ppa
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type Ftl_get_new_temp_ppa, %function
|
|
Ftl_get_new_temp_ppa:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L3341
|
|
movw r2, #65535
|
|
ldrh r1, [r3]
|
|
cmp r1, r2
|
|
beq .L3335
|
|
ldrh r3, [r3, #4]
|
|
cmp r3, #0
|
|
ldrne r0, .L3341
|
|
bne .L3340
|
|
.L3335:
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r5, #0
|
|
ldr r4, .L3341+4
|
|
bl FtlCacheWriteBack
|
|
mov r0, #0
|
|
bl FtlGcFreeTempBlock
|
|
sub r0, r4, #3424
|
|
strb r5, [r4, #-3416]
|
|
bl allocate_data_superblock
|
|
sub r3, r4, #2672
|
|
sub r4, r4, #2656
|
|
strh r5, [r3, #-4] @ movhi
|
|
strh r5, [r4, #-12] @ movhi
|
|
bl l2p_flush
|
|
mov r0, r5
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
pop {r4, r5, r6, lr}
|
|
ldr r0, .L3341
|
|
.L3340:
|
|
b get_new_active_ppa
|
|
.L3342:
|
|
.align 2
|
|
.L3341:
|
|
.word .LANCHOR2-3424
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size Ftl_get_new_temp_ppa, .-Ftl_get_new_temp_ppa
|
|
.align 2
|
|
.global ftl_do_gc
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_do_gc, %function
|
|
ftl_do_gc:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 32
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L3507
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov lr, r0
|
|
.pad #44
|
|
sub sp, sp, #44
|
|
ldr r0, [r3, #-3612]
|
|
cmp r0, #0
|
|
bne .L3439
|
|
ldr ip, .L3507+4
|
|
ldr r5, [ip, #500]
|
|
cmp r5, #1
|
|
bne .L3343
|
|
ldr r2, [r3, #-560]
|
|
cmp r2, #0
|
|
bne .L3343
|
|
sub r8, r3, #3520
|
|
ldrh r0, [r8, #-12]
|
|
cmp r0, #47
|
|
bls .L3439
|
|
movw r2, #3444
|
|
mov r7, r1
|
|
ldrh r1, [ip, r2]
|
|
movw r2, #65535
|
|
mov r4, r3
|
|
str lr, [sp, #16]
|
|
cmp r1, r2
|
|
bne .L3345
|
|
.L3348:
|
|
ldr r6, .L3507+8
|
|
movw r2, #65535
|
|
ldrh r0, [r6, #-8]
|
|
cmp r0, r2
|
|
bne .L3346
|
|
.L3347:
|
|
ldr r3, [r4, #-2716]
|
|
ldr r2, [sp, #16]
|
|
add r3, r3, #1
|
|
cmp r2, #1
|
|
add r3, r3, r2, lsl #7
|
|
str r3, [r4, #-2716]
|
|
bne .L3349
|
|
ldr r9, .L3507+12
|
|
ldr r2, [r9, #2248]
|
|
cmp r2, #0
|
|
bne .L3350
|
|
ldrb r2, [r9, #152] @ zero_extendqisi2
|
|
cmp r2, #0
|
|
beq .L3349
|
|
.L3350:
|
|
ldr r2, [r4, #-3308]
|
|
cmp r2, #39
|
|
bhi .L3349
|
|
ldr r10, .L3507+16
|
|
movw r5, #65535
|
|
ldrh r2, [r10]
|
|
add r3, r2, r3
|
|
str r3, [r4, #-2716]
|
|
bl FtlGcReFreshBadBlk
|
|
ldr r3, .L3507+20
|
|
mov r2, r10
|
|
ldrh r3, [r3, #-4]
|
|
cmp r3, r5
|
|
bne .L3351
|
|
ldrh r1, [r6, #-10]
|
|
cmp r1, r3
|
|
bne .L3438
|
|
ldr r3, [r4, #-2716]
|
|
cmp r3, #1024
|
|
bhi .L3353
|
|
ldrh r3, [r8, #-4]
|
|
cmp r3, #63
|
|
bhi .L3438
|
|
.L3353:
|
|
ldr r6, .L3507+24
|
|
mov r1, #0
|
|
ldrh r0, [r8, #-4]
|
|
strh r1, [r2] @ movhi
|
|
ldrh r3, [r6, #-14]
|
|
add r3, r3, #64
|
|
cmp r0, r3
|
|
bgt .L3438
|
|
ldr r3, [r4, #-3308]
|
|
str r1, [r4, #-2716]
|
|
cmp r3, r1
|
|
moveq r3, #6
|
|
beq .L3499
|
|
cmp r3, #5
|
|
bhi .L3355
|
|
mov r3, #18
|
|
.L3499:
|
|
strh r3, [r2] @ movhi
|
|
.L3355:
|
|
mov r0, #32
|
|
movw r10, #65535
|
|
bl List_get_gc_head_node
|
|
uxth r3, r0
|
|
cmp r3, r10
|
|
beq .L3359
|
|
ldrh ip, [r6, #-8]
|
|
cmp ip, #0
|
|
beq .L3357
|
|
movw r2, #2392
|
|
uxth r0, r0
|
|
ldrh lr, [r9, r2]
|
|
movw r2, #2324
|
|
ldrh r2, [r9, r2]
|
|
lsl r1, r0, #1
|
|
ldr r3, [r4, #-3540]
|
|
str r1, [sp, #12]
|
|
mul r2, r2, lr
|
|
ldrh r0, [r3, r1]
|
|
str r3, [sp, #8]
|
|
add r2, r2, #1
|
|
cmp r0, r2
|
|
bgt .L3359
|
|
add fp, ip, #1
|
|
mov r9, #0
|
|
uxth fp, fp
|
|
mov r0, ip
|
|
str r9, [r4, #-2708]
|
|
strh fp, [r6, #-8] @ movhi
|
|
bl List_get_gc_head_node
|
|
uxth r5, r0
|
|
ldr r3, [sp, #8]
|
|
ldr r1, [sp, #12]
|
|
cmp r5, r10
|
|
beq .L3359
|
|
lsl r10, r5, #1
|
|
mov r2, r5
|
|
ldrh r0, [r3, r10]
|
|
ldrh r3, [r3, r1]
|
|
mov r1, fp
|
|
str r3, [sp]
|
|
mov r3, r0
|
|
ldr r0, .L3507+28
|
|
bl printk
|
|
ldrh r3, [r6, #-8]
|
|
cmp r3, #40
|
|
bls .L3358
|
|
ldr r3, [r4, #-3540]
|
|
ldrh r3, [r3, r10]
|
|
cmp r3, #32
|
|
strhhi r9, [r6, #-8] @ movhi
|
|
.L3358:
|
|
ldr r3, .L3507+16
|
|
mov r2, #6
|
|
strh r2, [r3] @ movhi
|
|
.L3351:
|
|
movw r0, #65535
|
|
ldr r3, [sp, #16]
|
|
sub r2, r5, r0
|
|
clz r2, r2
|
|
lsr r2, r2, #5
|
|
cmp r3, #0
|
|
movne r1, #0
|
|
andeq r1, r2, #1
|
|
cmp r1, #0
|
|
beq .L3373
|
|
ldrh r3, [r8, #-4]
|
|
cmp r3, #24
|
|
movhi r6, #1
|
|
bhi .L3374
|
|
ldr r1, .L3507+12
|
|
movw r2, #2390
|
|
cmp r3, #16
|
|
ldrh r6, [r1, r2]
|
|
lsrhi r6, r6, #5
|
|
bhi .L3374
|
|
cmp r3, #12
|
|
lsrhi r6, r6, #4
|
|
bhi .L3374
|
|
cmp r3, #8
|
|
lsrhi r6, r6, #2
|
|
.L3374:
|
|
ldr r1, .L3507+32
|
|
ldrh r2, [r1]
|
|
cmp r2, r3
|
|
mov r2, r1
|
|
bcs .L3378
|
|
sub r3, r1, #704
|
|
movw r0, #65535
|
|
ldrh r3, [r3]
|
|
cmp r3, r0
|
|
bne .L3379
|
|
ldrh r0, [r1, #54]
|
|
cmp r0, r3
|
|
bne .L3379
|
|
ldr r3, .L3507+16
|
|
ldrh r0, [r3]
|
|
cmp r0, #0
|
|
bne .L3380
|
|
ldr r3, .L3507+12
|
|
ldr ip, [r4, #-3368]
|
|
ldr r3, [r3, #2452]
|
|
add r3, r3, r3, lsl #1
|
|
cmp ip, r3, lsr #2
|
|
movcs r3, #18
|
|
strhcs r3, [r1] @ movhi
|
|
bcs .L3382
|
|
.L3380:
|
|
ldr r3, .L3507+36
|
|
ldrh r3, [r3, #-8]
|
|
add r3, r3, r3, lsl #1
|
|
asr r3, r3, #2
|
|
strh r3, [r2] @ movhi
|
|
.L3382:
|
|
mov r3, #0
|
|
str r3, [r4, #-2708]
|
|
.L3343:
|
|
add sp, sp, #44
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L3345:
|
|
sub r3, r3, #3424
|
|
ldrh r3, [r3]
|
|
cmp r3, r2
|
|
beq .L3348
|
|
mov r0, r5
|
|
bl FtlGcFreeTempBlock
|
|
cmp r0, #0
|
|
beq .L3348
|
|
mov r0, r5
|
|
b .L3343
|
|
.L3346:
|
|
ldrh r3, [r6, #-10]
|
|
cmp r3, r2
|
|
bne .L3347
|
|
ldrh r1, [r6, #-6]
|
|
cmp r1, r3
|
|
beq .L3347
|
|
ldrh r2, [r6, #-4]
|
|
cmp r2, r3
|
|
mvnne r3, #0
|
|
strhne r0, [r6, #-10] @ movhi
|
|
strhne r1, [r6, #-8] @ movhi
|
|
strhne r2, [r6, #-6] @ movhi
|
|
strhne r3, [r6, #-4] @ movhi
|
|
b .L3347
|
|
.L3357:
|
|
mov r3, #1
|
|
strh r3, [r6, #-8] @ movhi
|
|
.L3359:
|
|
bl GetSwlReplaceBlock
|
|
movw r3, #65535
|
|
mov r5, r0
|
|
cmp r0, r3
|
|
bne .L3351
|
|
ldr r3, .L3507+16
|
|
mov r2, #0
|
|
strh r2, [r3] @ movhi
|
|
.L3349:
|
|
ldr r3, .L3507+20
|
|
movw r5, #65535
|
|
ldrh r3, [r3, #-4]
|
|
cmp r3, r5
|
|
bne .L3351
|
|
.L3438:
|
|
ldr r6, .L3507+40
|
|
movw r3, #65535
|
|
ldrh r5, [r6]
|
|
cmp r5, r3
|
|
movne r5, r3
|
|
bne .L3351
|
|
add r3, r6, #768
|
|
ldrh r9, [r3, #-10]
|
|
cmp r9, r5
|
|
bne .L3351
|
|
ldrh r3, [r8, #-4]
|
|
ldr r2, [r4, #-2716]
|
|
cmp r3, #24
|
|
movcc r3, #5120
|
|
movcs r3, #1024
|
|
cmp r2, r3
|
|
bls .L3351
|
|
ldr r2, .L3507+16
|
|
mov r3, #0
|
|
str r3, [r4, #-2716]
|
|
strh r3, [r2] @ movhi
|
|
bl GetSwlReplaceBlock
|
|
cmp r0, r9
|
|
mov r5, r0
|
|
movne r10, r0
|
|
bne .L3361
|
|
add r6, r6, #720
|
|
ldrh r2, [r8, #-4]
|
|
ldrh r3, [r6, #-14]
|
|
mov r9, r6
|
|
cmp r2, r3
|
|
movcs r3, #80
|
|
strhcs r3, [r6, #-14] @ movhi
|
|
bcs .L3364
|
|
mov r0, #64
|
|
bl List_get_gc_head_node
|
|
uxth r3, r0
|
|
cmp r3, r5
|
|
beq .L3364
|
|
ldr r3, [r4, #-564]
|
|
ldr r6, .L3507+12
|
|
cmp r3, #0
|
|
uxth r3, r0
|
|
bne .L3365
|
|
movw r2, #2344
|
|
ldrh r2, [r6, r2]
|
|
cmp r2, #3
|
|
beq .L3365
|
|
ldr r2, [r4, #-2724]
|
|
cmp r2, #0
|
|
bne .L3365
|
|
ldr r2, [r6, #2248]
|
|
cmp r2, #0
|
|
bne .L3365
|
|
ldrb r0, [r6, #152] @ zero_extendqisi2
|
|
cmp r0, #0
|
|
beq .L3366
|
|
.L3365:
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r3, #1
|
|
movw r0, #2344
|
|
ldrh r0, [r6, r0]
|
|
ldrh r1, [r2, r3]
|
|
movw r3, #2392
|
|
movw r2, #2324
|
|
ldrh r3, [r6, r3]
|
|
ldrh r2, [r6, r2]
|
|
cmp r0, #3
|
|
mul r2, r3, r2
|
|
lsreq r3, r3, #1
|
|
movne r3, #0
|
|
add r3, r3, r2
|
|
cmp r1, r3
|
|
bgt .L3368
|
|
mov r0, #0
|
|
bl List_get_gc_head_node
|
|
ldr r3, [r6, #2452]
|
|
uxth r10, r0
|
|
ldr r2, [r4, #-3368]
|
|
add r3, r3, r3, lsl #1
|
|
cmp r2, r3, lsr #2
|
|
movls r3, #160
|
|
bls .L3500
|
|
.L3501:
|
|
mov r3, #128
|
|
.L3500:
|
|
strh r3, [r9, #-14] @ movhi
|
|
movw r3, #65535
|
|
cmp r10, r3
|
|
beq .L3364
|
|
.L3361:
|
|
ldr r0, .L3507+32
|
|
lsl r1, r10, #1
|
|
ldr r3, [r4, #-3540]
|
|
mov r5, r10
|
|
ldrh r2, [r8, #-4]
|
|
ldrh r0, [r0]
|
|
ldrh r3, [r3, r1]
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #-3604]
|
|
ldrh r1, [r0, r1]
|
|
ldr r0, .L3507+44
|
|
str r1, [sp]
|
|
mov r1, r10
|
|
bl printk
|
|
b .L3364
|
|
.L3368:
|
|
mov r3, #128
|
|
.L3502:
|
|
strh r3, [r9, #-14] @ movhi
|
|
.L3364:
|
|
bl FtlGcReFreshBadBlk
|
|
b .L3351
|
|
.L3366:
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #7
|
|
bhi .L3371
|
|
bl List_get_gc_head_node
|
|
uxth r10, r0
|
|
b .L3501
|
|
.L3371:
|
|
mov r3, #64
|
|
b .L3502
|
|
.L3379:
|
|
ldr r3, .L3507+36
|
|
ldrh r3, [r3, #-8]
|
|
add r3, r3, r3, lsl #1
|
|
asr r3, r3, #2
|
|
strh r3, [r2] @ movhi
|
|
.L3378:
|
|
ldr r3, .L3507+12
|
|
movw r5, #65535
|
|
ldr r3, [r3, #2248]
|
|
adds r3, r3, #0
|
|
movne r3, #1
|
|
cmp r7, #2
|
|
movhi r3, #0
|
|
cmp r3, #0
|
|
addne r6, r6, #1
|
|
uxthne r6, r6
|
|
.L3384:
|
|
ldr r7, .L3507+20
|
|
movw r2, #65535
|
|
ldrh r3, [r7, #-4]
|
|
cmp r3, r2
|
|
bne .L3394
|
|
cmp r5, r3
|
|
strhne r5, [r7, #-4] @ movhi
|
|
bne .L3396
|
|
add r3, r7, #624
|
|
ldrh r2, [r3, #-10]
|
|
cmp r2, r5
|
|
beq .L3396
|
|
ldr r1, [r4, #-3540]
|
|
lsl r2, r2, #1
|
|
ldrh r2, [r1, r2]
|
|
cmp r2, #0
|
|
mvneq r2, #0
|
|
strheq r2, [r3, #-10] @ movhi
|
|
ldrh r2, [r3, #-10]
|
|
strh r2, [r7, #-4] @ movhi
|
|
mvn r2, #0
|
|
strh r2, [r3, #-10] @ movhi
|
|
.L3396:
|
|
ldrh r0, [r7, #-4]
|
|
mov r3, #0
|
|
strb r3, [r4, #-3276]
|
|
movw r3, #65535
|
|
cmp r0, r3
|
|
beq .L3394
|
|
bl IsBlkInGcList
|
|
cmp r0, #0
|
|
mvnne r3, #0
|
|
strhne r3, [r7, #-4] @ movhi
|
|
ldr r3, .L3507+12
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3400
|
|
ldrh r0, [r7, #-4]
|
|
bl ftl_get_blk_mode
|
|
strb r0, [r4, #-3276]
|
|
.L3400:
|
|
ldrh r2, [r7, #-4]
|
|
movw r3, #65535
|
|
sub r9, r7, #4
|
|
cmp r2, r3
|
|
beq .L3394
|
|
mov r0, r9
|
|
bl make_superblock
|
|
mov r3, #0
|
|
movw r2, #1986
|
|
strh r3, [r4, r2] @ movhi
|
|
strh r3, [r7, #-2] @ movhi
|
|
strb r3, [r4, #-3278]
|
|
ldrh r3, [r7, #-4]
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r3, #1
|
|
ldrh r2, [r2, r3]
|
|
movw r3, #1988
|
|
strh r2, [r4, r3] @ movhi
|
|
.L3394:
|
|
ldrh r3, [r7, #-4]
|
|
ldrh r2, [r8]
|
|
cmp r2, r3
|
|
beq .L3401
|
|
ldr r2, .L3507+48
|
|
ldrh r1, [r2]
|
|
cmp r1, r3
|
|
beq .L3401
|
|
ldrh r2, [r2, #48]
|
|
cmp r2, r3
|
|
bne .L3402
|
|
.L3401:
|
|
mvn r3, #0
|
|
strh r3, [r7, #-4] @ movhi
|
|
.L3402:
|
|
ldr r4, .L3507
|
|
sub r7, r4, #3280
|
|
.L3435:
|
|
ldrh r2, [r7, #-4]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L3403
|
|
ldr r9, .L3507+24
|
|
mov r3, #0
|
|
ldr r10, .L3507+52
|
|
str r3, [r4, #-2708]
|
|
.L3404:
|
|
ldr fp, .L3507+56
|
|
ldrh r8, [fp]
|
|
mov r0, r8
|
|
bl List_get_gc_head_node
|
|
uxth r2, r0
|
|
sub r1, fp, #568
|
|
strh r2, [r1, #-4] @ movhi
|
|
movw r1, #65535
|
|
cmp r2, r1
|
|
bne .L3405
|
|
mov r3, #0
|
|
mov r0, #8
|
|
strh r3, [fp] @ movhi
|
|
b .L3343
|
|
.L3373:
|
|
ldr r3, .L3507+40
|
|
ldrh r7, [r3]
|
|
cmp r7, r0
|
|
bne .L3385
|
|
add r0, r3, #768
|
|
ldrh r0, [r0, #-10]
|
|
cmp r0, r7
|
|
movne r2, #0
|
|
andeq r2, r2, #1
|
|
cmp r2, #0
|
|
beq .L3385
|
|
ldrh r2, [r3, #140]
|
|
cmp r2, r7
|
|
beq .L3386
|
|
.L3391:
|
|
mov r5, r7
|
|
.L3385:
|
|
ldr r3, .L3507+12
|
|
ldr r3, [r3, #2248]
|
|
cmp r3, #0
|
|
moveq r6, #1
|
|
movne r6, #2
|
|
b .L3384
|
|
.L3386:
|
|
add r5, r3, #704
|
|
ldrh r2, [r8, #-4]
|
|
ldrh r3, [r5]
|
|
str r1, [r4, #-2708]
|
|
ldr r6, .L3507+16
|
|
cmp r2, r3
|
|
bls .L3387
|
|
ldrh r3, [r6]
|
|
cmp r3, #0
|
|
bne .L3388
|
|
ldr r3, .L3507+12
|
|
ldr r2, [r4, #-3368]
|
|
ldr r3, [r3, #2452]
|
|
add r3, r3, r3, lsl #1
|
|
cmp r2, r3, lsr #2
|
|
movcs r3, #18
|
|
bcs .L3503
|
|
.L3388:
|
|
ldr r3, .L3507+36
|
|
ldrh r3, [r3, #-8]
|
|
add r3, r3, r3, lsl #1
|
|
asr r3, r3, #2
|
|
.L3503:
|
|
strh r3, [r5] @ movhi
|
|
bl FtlReadRefresh
|
|
mov r0, #0
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
ldr r3, [r4, #-3540]
|
|
lsl r0, r0, #1
|
|
ldrh r3, [r3, r0]
|
|
cmp r3, #4
|
|
bls .L3387
|
|
.L3504:
|
|
ldrh r0, [r6]
|
|
b .L3343
|
|
.L3387:
|
|
ldrh r0, [r6]
|
|
cmp r0, #0
|
|
bne .L3391
|
|
ldr r3, .L3507+36
|
|
ldrh r9, [r3, #-8]
|
|
add r3, r9, r9, lsl #1
|
|
asr r3, r3, #2
|
|
strh r3, [r5] @ movhi
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
ldr r3, [r4, #-3540]
|
|
ldr r2, .L3507+12
|
|
lsl r0, r0, #1
|
|
ldrh r1, [r3, r0]
|
|
movw r3, #2392
|
|
ldrh r0, [r2, r3]
|
|
movw r3, #2324
|
|
ldrh r3, [r2, r3]
|
|
mul r3, r3, r0
|
|
add r3, r3, r3, lsr #31
|
|
cmp r1, r3, asr #1
|
|
ble .L3392
|
|
ldrh r2, [r8, #-4]
|
|
sub r3, r9, #1
|
|
cmp r2, r3
|
|
blt .L3392
|
|
bl FtlReadRefresh
|
|
b .L3504
|
|
.L3392:
|
|
cmp r1, #0
|
|
bne .L3391
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
ldrh r0, [r8, #-4]
|
|
add r0, r0, #1
|
|
b .L3343
|
|
.L3405:
|
|
str r0, [sp, #12]
|
|
mov r0, r2
|
|
str r2, [sp, #8]
|
|
add r8, r8, #1
|
|
bl IsBlkInGcList
|
|
cmp r0, #0
|
|
ldr r2, [sp, #8]
|
|
ldr r3, [sp, #12]
|
|
strhne r8, [fp] @ movhi
|
|
bne .L3404
|
|
uxth r3, r3
|
|
ldrh lr, [r10]
|
|
ldr r0, [r4, #-3540]
|
|
uxth r8, r8
|
|
lsl r1, r3, #1
|
|
ldr r3, .L3507+60
|
|
strh r8, [fp] @ movhi
|
|
ldrh ip, [r0, r1]
|
|
ldrh r3, [r3]
|
|
mul r3, r3, lr
|
|
add lr, r3, r3, lsr #31
|
|
cmp ip, lr, asr #1
|
|
bgt .L3408
|
|
cmp r8, #48
|
|
cmphi ip, #8
|
|
bls .L3409
|
|
ldrh ip, [fp, #36]
|
|
cmp ip, #35
|
|
bhi .L3409
|
|
.L3408:
|
|
mov ip, #0
|
|
strh ip, [r9, #-8] @ movhi
|
|
.L3409:
|
|
ldrh r1, [r0, r1]
|
|
movw r0, #65535
|
|
cmp r3, r1
|
|
cmple r5, r0
|
|
bne .L3410
|
|
ldrh r0, [r9, #-8]
|
|
cmp r0, #3
|
|
bhi .L3410
|
|
ldr r1, .L3507+20
|
|
mvn r2, #0
|
|
strh r2, [r1, #-4] @ movhi
|
|
mov r2, #0
|
|
strh r2, [r9, #-8] @ movhi
|
|
.L3506:
|
|
ldr r3, .L3507+16
|
|
b .L3505
|
|
.L3410:
|
|
cmp r1, #0
|
|
bne .L3411
|
|
movw r0, #65535
|
|
bl decrement_vpc_count
|
|
ldrh r3, [r9, #-8]
|
|
add r3, r3, #1
|
|
strh r3, [r9, #-8] @ movhi
|
|
b .L3404
|
|
.L3411:
|
|
mov r3, #0
|
|
strb r3, [r4, #-3276]
|
|
ldr r3, .L3507+12
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3412
|
|
mov r0, r2
|
|
bl ftl_get_blk_mode
|
|
strb r0, [r4, #-3276]
|
|
.L3412:
|
|
ldr r3, .L3507+20
|
|
sub r8, r3, #4
|
|
mov r0, r8
|
|
bl make_superblock
|
|
add r2, r8, #4
|
|
ldr r1, .L3507+64
|
|
ldrh r2, [r2, #-4]
|
|
mov r3, #0
|
|
ldr r0, [r4, #-3540]
|
|
strh r3, [r1] @ movhi
|
|
lsl r2, r2, #1
|
|
ldrh r2, [r0, r2]
|
|
strh r3, [r8, #2] @ movhi
|
|
strb r3, [r4, #-3278]
|
|
strh r2, [r1, #2] @ movhi
|
|
.L3403:
|
|
ldr r3, [sp, #16]
|
|
cmp r3, #1
|
|
bne .L3413
|
|
bl FtlReadRefresh
|
|
.L3413:
|
|
mov r3, #1
|
|
str r3, [r4, #-560]
|
|
ldr r3, .L3507+52
|
|
ldrh r3, [r3]
|
|
str r3, [sp, #8]
|
|
ldr r3, .L3507+12
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3414
|
|
ldrb r3, [r4, #-3276] @ zero_extendqisi2
|
|
cmp r3, #1
|
|
ldreq r3, .L3507+68
|
|
ldrheq r3, [r3]
|
|
streq r3, [sp, #8]
|
|
.L3414:
|
|
ldr r3, .L3507+20
|
|
ldr r1, [sp, #8]
|
|
ldrh r3, [r3, #-2]
|
|
add r2, r3, r6
|
|
cmp r2, r1
|
|
movgt r2, r1
|
|
subgt r6, r2, r3
|
|
mov r3, #0
|
|
uxthgt r6, r6
|
|
str r3, [sp, #12]
|
|
sub r3, r7, #4
|
|
str r3, [sp, #20]
|
|
.L3416:
|
|
ldrh r3, [sp, #12]
|
|
cmp r6, r3
|
|
bls .L3423
|
|
ldr r3, .L3507+60
|
|
add ip, r7, #10
|
|
ldr r0, [r4, #-2688]
|
|
movw r9, #65535
|
|
mov lr, #36
|
|
ldrh r10, [r3]
|
|
ldr r3, [sp, #20]
|
|
ldrh r1, [r3, #2]
|
|
ldr r3, [sp, #12]
|
|
add r1, r1, r3
|
|
mov r3, #0
|
|
mov r8, r3
|
|
b .L3424
|
|
.L3418:
|
|
ldrh r2, [ip, #2]!
|
|
add r3, r3, #1
|
|
cmp r2, r9
|
|
mlane fp, lr, r8, r0
|
|
addne r8, r8, #1
|
|
orrne r2, r1, r2, lsl #10
|
|
uxthne r8, r8
|
|
strne r2, [fp, #4]
|
|
.L3424:
|
|
uxth r2, r3
|
|
cmp r10, r2
|
|
bhi .L3418
|
|
mov fp, #0
|
|
ldrb r2, [r4, #-3276] @ zero_extendqisi2
|
|
mov r1, r8
|
|
bl FlashReadPages
|
|
.L3419:
|
|
uxth r3, fp
|
|
cmp r8, r3
|
|
ldrls r3, [sp, #12]
|
|
addls r3, r3, #1
|
|
strls r3, [sp, #12]
|
|
bls .L3416
|
|
.L3422:
|
|
mov r3, #36
|
|
ldr r2, [r4, #-2688]
|
|
mul r9, r3, fp
|
|
add r1, r2, r9
|
|
ldr r2, [r2, r9]
|
|
cmn r2, #1
|
|
beq .L3420
|
|
ldr r10, [r1, #12]
|
|
movw r2, #61589
|
|
ldrh r1, [r10]
|
|
cmp r1, r2
|
|
bne .L3420
|
|
mov r2, #0
|
|
add r1, sp, #32
|
|
ldr r0, [r10, #8]
|
|
str r3, [sp, #24]
|
|
bl log2phys
|
|
ldr r1, [r4, #-2688]
|
|
ldr r2, [sp, #32]
|
|
ldr r3, [sp, #24]
|
|
add r1, r1, r9
|
|
ldr r0, [r1, #4]
|
|
bic r2, r2, #-2147483648
|
|
cmp r2, r0
|
|
bne .L3420
|
|
ldr r2, .L3507+64
|
|
ldr r0, .L3507+64
|
|
ldr r1, [r1, #16]
|
|
ldrh r2, [r2]
|
|
str r3, [sp, #28]
|
|
add r2, r2, #1
|
|
strh r2, [r0] @ movhi
|
|
ldr r0, [r4, #-2704]
|
|
ldr r2, [r4, #-532]
|
|
mla r2, r3, r0, r2
|
|
str r1, [r2, #16]
|
|
str r2, [sp, #24]
|
|
bl Ftl_get_new_temp_ppa
|
|
ldr r2, [sp, #24]
|
|
ldr r1, [r4, #-532]
|
|
ldr r3, [sp, #28]
|
|
str r0, [r2, #4]
|
|
ldr r2, [r4, #-2704]
|
|
mla r3, r3, r2, r1
|
|
ldr r2, [r4, #-2688]
|
|
add r2, r2, r9
|
|
ldr r1, [r2, #8]
|
|
str r1, [r3, #8]
|
|
mov r1, #1
|
|
ldr r2, [r2, #12]
|
|
str r2, [r3, #12]
|
|
ldr r3, [sp, #32]
|
|
str r3, [r10, #12]
|
|
ldr r3, .L3507+40
|
|
ldrh r3, [r3]
|
|
strh r3, [r10, #2] @ movhi
|
|
ldr r3, [r4, #-3328]
|
|
ldr r0, [r4, #-2688]
|
|
str r3, [r10, #4]
|
|
ldr r3, [r4, #-2704]
|
|
add r0, r0, r9
|
|
add r3, r3, #1
|
|
str r3, [r4, #-2704]
|
|
bl FtlGcBufAlloc
|
|
ldr r3, .L3507+12
|
|
ldrb r3, [r3, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L3421
|
|
ldrb r2, [r4, #-3417] @ zero_extendqisi2
|
|
ldr r3, [r4, #-2704]
|
|
cmp r2, r3
|
|
beq .L3421
|
|
ldr r3, .L3507+40
|
|
ldrh r3, [r3, #4]
|
|
cmp r3, #0
|
|
bne .L3420
|
|
.L3421:
|
|
bl Ftl_gc_temp_data_write_back
|
|
cmp r0, #0
|
|
beq .L3420
|
|
ldr r3, .L3507
|
|
mov r2, #0
|
|
mvn ip, #0
|
|
sub r1, r3, #3280
|
|
str r2, [r3, #-560]
|
|
add r3, r3, #1984
|
|
strh ip, [r1, #-4] @ movhi
|
|
strh r2, [r1, #-2] @ movhi
|
|
.L3505:
|
|
ldrh r0, [r3]
|
|
b .L3343
|
|
.L3420:
|
|
add fp, fp, #1
|
|
b .L3419
|
|
.L3423:
|
|
ldrh r3, [r7, #-2]
|
|
add r6, r6, r3
|
|
ldr r3, [sp, #8]
|
|
uxth r6, r6
|
|
cmp r3, r6
|
|
strh r6, [r7, #-2] @ movhi
|
|
bhi .L3425
|
|
ldr r3, [r4, #-2704]
|
|
cmp r3, #0
|
|
beq .L3426
|
|
bl Ftl_gc_temp_data_write_back
|
|
cmp r0, #0
|
|
movne r3, #0
|
|
strne r3, [r4, #-560]
|
|
bne .L3506
|
|
.L3426:
|
|
ldr r3, .L3507+64
|
|
ldrh r0, [r3]
|
|
cmp r0, #0
|
|
bne .L3427
|
|
ldrh r3, [r7, #-4]
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r3, #1
|
|
ldrh r3, [r2, r3]
|
|
cmp r3, #0
|
|
movne r6, r0
|
|
ldrne r8, .L3507+12
|
|
bne .L3428
|
|
.L3427:
|
|
mvn r3, #0
|
|
strh r3, [r7, #-4] @ movhi
|
|
.L3425:
|
|
ldr r3, .L3507+72
|
|
ldrh r3, [r3]
|
|
cmp r3, #2
|
|
bhi .L3434
|
|
ldr r3, .L3507+52
|
|
ldrh r6, [r3]
|
|
b .L3435
|
|
.L3429:
|
|
add r6, r6, #1
|
|
.L3428:
|
|
ldr r3, [r8, #2452]
|
|
cmp r6, r3
|
|
bcs .L3433
|
|
mov r2, #0
|
|
add r1, sp, #36
|
|
mov r0, r6
|
|
bl log2phys
|
|
ldr r0, [sp, #36]
|
|
cmn r0, #1
|
|
beq .L3429
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldrh r3, [r7, #-4]
|
|
cmp r3, r0
|
|
bne .L3429
|
|
.L3433:
|
|
ldr r3, [r8, #2452]
|
|
cmp r6, r3
|
|
bcc .L3427
|
|
ldrh r3, [r7, #-4]
|
|
mov r1, #0
|
|
ldr r2, [r4, #-3540]
|
|
lsl r3, r3, #1
|
|
strh r1, [r2, r3] @ movhi
|
|
ldrh r0, [r7, #-4]
|
|
bl update_vpc_list
|
|
bl FtlCacheWriteBack
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
b .L3427
|
|
.L3434:
|
|
mov r2, #0
|
|
str r2, [r4, #-560]
|
|
ldr r2, .L3507+16
|
|
ldrh r0, [r2]
|
|
cmp r0, #0
|
|
addeq r0, r3, #1
|
|
b .L3343
|
|
.L3439:
|
|
mov r0, #0
|
|
b .L3343
|
|
.L3508:
|
|
.align 2
|
|
.L3507:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR1
|
|
.word .LANCHOR2-2656
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2+1984
|
|
.word .LANCHOR2-3280
|
|
.word .LANCHOR2-2704
|
|
.word .LC157
|
|
.word .LANCHOR2-2720
|
|
.word .LANCHOR2-3296
|
|
.word .LANCHOR2-3424
|
|
.word .LC158
|
|
.word .LANCHOR2-3472
|
|
.word .LANCHOR0+2390
|
|
.word .LANCHOR2-2712
|
|
.word .LANCHOR0+2324
|
|
.word .LANCHOR2+1986
|
|
.word .LANCHOR0+2392
|
|
.word .LANCHOR2-3524
|
|
.fnend
|
|
.size ftl_do_gc, .-ftl_do_gc
|
|
.align 2
|
|
.global FtlCacheWriteBack
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlCacheWriteBack, %function
|
|
FtlCacheWriteBack:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #20
|
|
sub sp, sp, #20
|
|
ldr r6, .L3552
|
|
ldr r9, [r6, #-3612]
|
|
cmp r9, #0
|
|
bne .L3511
|
|
ldr r4, .L3552+4
|
|
ldr r1, [r4, #2444]
|
|
cmp r1, #0
|
|
beq .L3511
|
|
ldrb r3, [r4, #152] @ zero_extendqisi2
|
|
mov r7, #0
|
|
ldr r5, [r6, #1992]
|
|
mov r10, #36
|
|
ldr fp, .L3552+8
|
|
cmp r3, #0
|
|
ldr r0, [r4, #2448]
|
|
ldrbne r8, [r5, #8] @ zero_extendqisi2
|
|
moveq r8, r9
|
|
ldrb r3, [r5, #9] @ zero_extendqisi2
|
|
subne r8, r8, #1
|
|
clzne r8, r8
|
|
lsrne r8, r8, #5
|
|
mov r2, r8
|
|
bl FlashProgPages
|
|
.L3514:
|
|
ldr r3, [r4, #2444]
|
|
cmp r7, r3
|
|
bcc .L3521
|
|
.L3533:
|
|
mov r3, #0
|
|
str r3, [r4, #2444]
|
|
.L3511:
|
|
mov r0, #0
|
|
add sp, sp, #20
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L3521:
|
|
mul r3, r10, r7
|
|
ldr r2, [r4, #2448]
|
|
add r0, r2, r3
|
|
ldr r2, [r2, r3]
|
|
cmn r2, #1
|
|
beq .L3516
|
|
ldr r2, [r0, #4]
|
|
cmp r8, #0
|
|
add r1, sp, #12
|
|
ldr r0, [r0, #16]
|
|
str r3, [sp, #4]
|
|
orrne r2, r2, #-2147483648
|
|
str r2, [sp, #12]
|
|
mov r2, #1
|
|
bl log2phys
|
|
ldr r2, [r4, #2448]
|
|
ldr r3, [sp, #4]
|
|
add r3, r2, r3
|
|
ldr r3, [r3, #12]
|
|
ldr r0, [r3, #12]
|
|
cmn r0, #1
|
|
beq .L3519
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldr r1, [r6, #-3540]
|
|
lsl r2, r0, #1
|
|
mov r3, r0
|
|
ldrh r2, [r1, r2]
|
|
cmp r2, #0
|
|
bne .L3520
|
|
mov r1, r0
|
|
str r0, [sp, #4]
|
|
mov r0, fp
|
|
bl printk
|
|
ldr r3, [sp, #4]
|
|
.L3520:
|
|
mov r0, r3
|
|
bl decrement_vpc_count
|
|
.L3519:
|
|
add r7, r7, #1
|
|
b .L3514
|
|
.L3531:
|
|
mov r7, #36
|
|
ldr r3, [r4, #2448]
|
|
mul r7, r7, r9
|
|
mov r10, #0
|
|
mov fp, #1
|
|
mvn r2, #0
|
|
str r2, [r3, r7]
|
|
.L3522:
|
|
ldr r2, [r4, #2448]
|
|
add r3, r2, r7
|
|
ldr r2, [r2, r7]
|
|
ldr r0, [r3, #4]
|
|
cmn r2, #1
|
|
beq .L3526
|
|
cmp r8, #0
|
|
mov r2, #1
|
|
orrne r0, r0, #-2147483648
|
|
add r1, sp, #12
|
|
str r0, [sp, #12]
|
|
ldr r0, [r3, #16]
|
|
bl log2phys
|
|
ldr r3, [r4, #2448]
|
|
add r7, r3, r7
|
|
ldr r3, [r7, #12]
|
|
ldr r0, [r3, #12]
|
|
cmn r0, #1
|
|
beq .L3529
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldr r2, [r6, #-3540]
|
|
lsl r3, r0, #1
|
|
mov r7, r0
|
|
ldrh r2, [r2, r3]
|
|
cmp r2, #0
|
|
bne .L3530
|
|
mov r1, r0
|
|
ldr r0, .L3552+8
|
|
bl printk
|
|
.L3530:
|
|
mov r0, r7
|
|
bl decrement_vpc_count
|
|
.L3529:
|
|
add r9, r9, #1
|
|
.L3516:
|
|
ldr r3, [r4, #2444]
|
|
cmp r9, r3
|
|
bcc .L3531
|
|
movw r5, #16386
|
|
.L3534:
|
|
ldr r3, .L3552+12
|
|
ldrh r3, [r3]
|
|
cmp r3, #0
|
|
beq .L3533
|
|
mov r1, #1
|
|
mov r0, r1
|
|
bl ftl_do_gc
|
|
subs r5, r5, #1
|
|
bne .L3534
|
|
b .L3533
|
|
.L3526:
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
ldrh r3, [r5]
|
|
cmp r3, r0
|
|
bne .L3523
|
|
ldr r1, [r6, #-3540]
|
|
lsl r3, r3, #1
|
|
ldrh r0, [r5, #4]
|
|
ldrh r2, [r1, r3]
|
|
sub r2, r2, r0
|
|
strh r2, [r1, r3] @ movhi
|
|
ldr r3, .L3552+16
|
|
strb r10, [r5, #6]
|
|
strh r10, [r5, #4] @ movhi
|
|
ldrh r3, [r3]
|
|
strh r3, [r5, #2] @ movhi
|
|
.L3523:
|
|
ldrh r3, [r5, #4]
|
|
cmp r3, #0
|
|
bne .L3524
|
|
mov r0, r5
|
|
bl allocate_new_data_superblock
|
|
.L3524:
|
|
ldr r3, [r6, #-3140]
|
|
add r3, r3, #1
|
|
str r3, [r6, #-3140]
|
|
ldr r3, [r4, #2448]
|
|
add r3, r3, r7
|
|
ldr r0, [r3, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl FtlGcMarkBadPhyBlk
|
|
mov r0, r5
|
|
bl get_new_active_ppa
|
|
ldr r3, [r4, #2448]
|
|
mov r2, r0
|
|
str r0, [sp, #12]
|
|
mov r1, #1
|
|
add r0, r3, r7
|
|
str r2, [r0, #4]
|
|
mov r2, r8
|
|
ldrb r3, [r5, #9] @ zero_extendqisi2
|
|
bl FlashProgPages
|
|
ldr r3, [r4, #2448]
|
|
ldr r3, [r3, r7]
|
|
cmn r3, #1
|
|
streq fp, [r6, #-3612]
|
|
ldr r3, [r6, #-3612]
|
|
cmp r3, #0
|
|
beq .L3522
|
|
b .L3511
|
|
.L3553:
|
|
.align 2
|
|
.L3552:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LC159
|
|
.word .LANCHOR2-2658
|
|
.word .LANCHOR0+2390
|
|
.fnend
|
|
.size FtlCacheWriteBack, .-FtlCacheWriteBack
|
|
.align 2
|
|
.global FtlSysFlush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlSysFlush, %function
|
|
FtlSysFlush:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L3560
|
|
ldr r3, [r3, #-3612]
|
|
cmp r3, #0
|
|
bne .L3557
|
|
ldr r3, .L3560+4
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
ldr r4, [r3, #500]
|
|
cmp r4, #1
|
|
bne .L3555
|
|
bl FtlCacheWriteBack
|
|
bl l2p_flush
|
|
mov r0, r4
|
|
bl FtlEctTblFlush
|
|
bl FtlVpcTblFlush
|
|
.L3555:
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.L3557:
|
|
mov r0, #0
|
|
bx lr
|
|
.L3561:
|
|
.align 2
|
|
.L3560:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR1
|
|
.fnend
|
|
.size FtlSysFlush, .-FtlSysFlush
|
|
.align 2
|
|
.global FtlDeInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlDeInit, %function
|
|
FtlDeInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L3568
|
|
ldr r3, [r3, #500]
|
|
cmp r3, #1
|
|
bne .L3565
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
bl FtlSysFlush
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.L3565:
|
|
mov r0, #0
|
|
bx lr
|
|
.L3569:
|
|
.align 2
|
|
.L3568:
|
|
.word .LANCHOR1
|
|
.fnend
|
|
.size FtlDeInit, .-FtlDeInit
|
|
.align 2
|
|
.global ftl_deinit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_deinit, %function
|
|
ftl_deinit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
bl ftl_flash_de_init
|
|
bl FtlDeInit
|
|
pop {r4, lr}
|
|
b ftl_flash_de_init
|
|
.fnend
|
|
.size ftl_deinit, .-ftl_deinit
|
|
.align 2
|
|
.global rk_ftl_de_init
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_de_init, %function
|
|
rk_ftl_de_init:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, lr}
|
|
.save {r4, lr}
|
|
mov r1, #0
|
|
ldr r0, .L3574
|
|
bl printk
|
|
pop {r4, lr}
|
|
b ftl_deinit
|
|
.L3575:
|
|
.align 2
|
|
.L3574:
|
|
.word .LC160
|
|
.fnend
|
|
.size rk_ftl_de_init, .-rk_ftl_de_init
|
|
.align 2
|
|
.global ftl_cache_flush
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_cache_flush, %function
|
|
ftl_cache_flush:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b FtlCacheWriteBack
|
|
.fnend
|
|
.size ftl_cache_flush, .-ftl_cache_flush
|
|
.align 2
|
|
.global rk_ftl_cache_write_back
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_cache_write_back, %function
|
|
rk_ftl_cache_write_back:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b FtlCacheWriteBack
|
|
.fnend
|
|
.size rk_ftl_cache_write_back, .-rk_ftl_cache_write_back
|
|
.align 2
|
|
.global ftl_discard
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_discard, %function
|
|
ftl_discard:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 8
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r0, r1, r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
.pad #8
|
|
mov r6, r0
|
|
ldr r5, .L3596
|
|
ldr r3, [r5, #2432]
|
|
cmp r3, r1
|
|
cmpcs r3, r0
|
|
movls r0, #1
|
|
movhi r0, #0
|
|
bls .L3586
|
|
add r2, r6, r1
|
|
mov r4, r1
|
|
cmp r3, r2
|
|
bcc .L3586
|
|
cmp r1, #31
|
|
bls .L3578
|
|
ldr r7, .L3596+4
|
|
ldr r3, [r7, #-3612]
|
|
cmp r3, #0
|
|
bne .L3578
|
|
bl FtlCacheWriteBack
|
|
movw r3, #2396
|
|
mov r0, r6
|
|
ldrh r5, [r5, r3]
|
|
mov r1, r5
|
|
bl __aeabi_uidiv
|
|
smulbb r3, r0, r5
|
|
mov r8, r0
|
|
sub r6, r6, r3
|
|
uxth r6, r6
|
|
cmp r6, #0
|
|
beq .L3580
|
|
sub r5, r5, r6
|
|
add r8, r0, #1
|
|
cmp r5, r4
|
|
movcs r5, r4
|
|
uxth r5, r5
|
|
sub r4, r4, r5
|
|
.L3580:
|
|
ldr r5, .L3596+8
|
|
mvn r3, #0
|
|
str r3, [sp, #4]
|
|
mov r6, r5
|
|
.L3581:
|
|
ldrh r3, [r5]
|
|
cmp r4, r3
|
|
bcs .L3583
|
|
ldr r3, [r7, #1996]
|
|
cmp r3, #32
|
|
bls .L3584
|
|
mov r3, #0
|
|
str r3, [r7, #1996]
|
|
bl l2p_flush
|
|
bl FtlVpcTblFlush
|
|
.L3584:
|
|
mov r0, #0
|
|
.L3578:
|
|
add sp, sp, #8
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L3583:
|
|
mov r2, #0
|
|
mov r1, sp
|
|
mov r0, r8
|
|
bl log2phys
|
|
ldr r3, [sp]
|
|
cmn r3, #1
|
|
beq .L3582
|
|
ldr r3, [r7, #1996]
|
|
mov r2, #1
|
|
add r1, sp, #4
|
|
mov r0, r8
|
|
add r3, r3, #1
|
|
str r3, [r7, #1996]
|
|
ldr r3, [r7, #-3360]
|
|
add r3, r3, #1
|
|
str r3, [r7, #-3360]
|
|
bl log2phys
|
|
ldr r0, [sp]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl decrement_vpc_count
|
|
.L3582:
|
|
ldrh r3, [r6]
|
|
add r8, r8, #1
|
|
sub r4, r4, r3
|
|
b .L3581
|
|
.L3586:
|
|
mvn r0, #0
|
|
b .L3578
|
|
.L3597:
|
|
.align 2
|
|
.L3596:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2396
|
|
.fnend
|
|
.size ftl_discard, .-ftl_discard
|
|
.align 2
|
|
.global FtlDiscard
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlDiscard, %function
|
|
FtlDiscard:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b ftl_discard
|
|
.fnend
|
|
.size FtlDiscard, .-FtlDiscard
|
|
.align 2
|
|
.global ftl_read
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_read, %function
|
|
ftl_read:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 56
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr ip, .L3643
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #84
|
|
sub sp, sp, #84
|
|
ldr ip, [ip, #500]
|
|
cmp ip, #1
|
|
bne .L3623
|
|
cmp r0, #16
|
|
mov r8, r3
|
|
str r2, [sp, #28]
|
|
mov r5, r1
|
|
bne .L3601
|
|
mov r2, r3
|
|
ldr r1, [sp, #28]
|
|
add r0, r5, #256
|
|
bl FtlVendorPartRead
|
|
mov r10, r0
|
|
.L3599:
|
|
mov r0, r10
|
|
add sp, sp, #84
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L3601:
|
|
ldr r2, .L3643+4
|
|
ldr r1, [sp, #28]
|
|
ldr r3, [r2, #2432]
|
|
cmp r1, r3
|
|
cmpls r5, r3
|
|
bcs .L3623
|
|
add r1, r5, r1
|
|
cmp r3, r1
|
|
str r1, [sp, #44]
|
|
bcc .L3623
|
|
movw r3, #2396
|
|
mov r0, r5
|
|
ldrh r4, [r2, r3]
|
|
mov r1, r4
|
|
bl __aeabi_uidiv
|
|
ldr r3, [sp, #44]
|
|
mov r1, r4
|
|
str r0, [sp, #36]
|
|
sub r0, r3, #1
|
|
bl __aeabi_uidiv
|
|
ldr r3, [sp, #36]
|
|
ldr r1, [sp, #28]
|
|
str r0, [sp, #40]
|
|
rsb r3, r3, #1
|
|
add r3, r3, r0
|
|
str r3, [sp, #32]
|
|
ldr r3, .L3643+8
|
|
ldr r2, [r3, #-3336]
|
|
add r2, r2, r1
|
|
ldr r1, [sp, #32]
|
|
str r2, [r3, #-3336]
|
|
ldr r2, [r3, #-3364]
|
|
add r2, r2, r1
|
|
mov r1, r0
|
|
ldr r0, [sp, #36]
|
|
str r2, [r3, #-3364]
|
|
bl FtlCacheMetchLpa
|
|
cmp r0, #0
|
|
beq .L3602
|
|
bl FtlCacheWriteBack
|
|
.L3602:
|
|
ldr r6, [sp, #36]
|
|
mov r3, #0
|
|
ldr r4, .L3643+8
|
|
mov r7, r3
|
|
mov r10, r3
|
|
str r3, [sp, #52]
|
|
str r3, [sp, #48]
|
|
.L3603:
|
|
ldr r3, [sp, #32]
|
|
cmp r3, #0
|
|
bne .L3620
|
|
ldr r3, .L3643+12
|
|
ldrh r3, [r3, #-2]
|
|
cmp r3, #0
|
|
beq .L3599
|
|
mov r1, #1
|
|
ldr r0, [sp, #32]
|
|
bl ftl_do_gc
|
|
b .L3599
|
|
.L3620:
|
|
mov r2, #0
|
|
add r1, sp, #76
|
|
mov r0, r6
|
|
bl log2phys
|
|
ldr r3, [sp, #76]
|
|
cmn r3, #1
|
|
moveq r9, #0
|
|
beq .L3605
|
|
ldr r2, [r4, #-536]
|
|
mov r9, #36
|
|
mla r9, r9, r7, r2
|
|
str r3, [r9, #4]
|
|
ldr r3, [sp, #36]
|
|
cmp r6, r3
|
|
bne .L3609
|
|
ldr r3, [r4, #-508]
|
|
mov r0, r5
|
|
str r3, [r9, #8]
|
|
ldr r3, .L3643+16
|
|
ldrh fp, [r3]
|
|
mov r1, fp
|
|
bl __aeabi_uidivmod
|
|
ldr r2, [sp, #28]
|
|
sub r3, fp, r1
|
|
str r1, [sp, #56]
|
|
cmp r2, r3
|
|
movcc r3, r2
|
|
cmp r3, fp
|
|
str r3, [sp, #48]
|
|
streq r8, [r9, #8]
|
|
.L3610:
|
|
ldr r3, .L3643+20
|
|
ldr r2, [r4, #-496]
|
|
str r6, [r9, #16]
|
|
ldrh r3, [r3]
|
|
mul r3, r7, r3
|
|
add r7, r7, #1
|
|
bic r3, r3, #3
|
|
add r3, r2, r3
|
|
str r3, [r9, #12]
|
|
b .L3608
|
|
.L3607:
|
|
mla r0, r0, r6, r9
|
|
ldr r2, [sp, #44]
|
|
cmp r5, r0
|
|
movls r3, #1
|
|
movhi r3, #0
|
|
cmp r2, r0
|
|
movls r3, #0
|
|
cmp r3, #0
|
|
beq .L3606
|
|
sub r0, r0, r5
|
|
mov r2, #512
|
|
mov r1, #0
|
|
add r0, r8, r0, lsl #9
|
|
bl ftl_memset
|
|
.L3606:
|
|
add r9, r9, #1
|
|
.L3605:
|
|
ldr r3, .L3643+16
|
|
ldrh r0, [r3]
|
|
cmp r9, r0
|
|
bcc .L3607
|
|
.L3608:
|
|
ldr r3, [sp, #32]
|
|
add r6, r6, #1
|
|
subs r3, r3, #1
|
|
str r3, [sp, #32]
|
|
beq .L3612
|
|
ldr r3, .L3643+24
|
|
ldrh r3, [r3]
|
|
cmp r7, r3, lsl #3
|
|
bne .L3603
|
|
.L3612:
|
|
cmp r7, #0
|
|
beq .L3603
|
|
mov r2, #0
|
|
mov r1, r7
|
|
ldr r0, [r4, #-536]
|
|
mov fp, #0
|
|
bl FlashReadPages
|
|
ldr r3, [sp, #52]
|
|
lsl r3, r3, #9
|
|
str r3, [sp, #68]
|
|
ldr r3, [sp, #56]
|
|
lsl r3, r3, #9
|
|
str r3, [sp, #60]
|
|
ldr r3, [sp, #48]
|
|
lsl r3, r3, #9
|
|
str r3, [sp, #64]
|
|
.L3619:
|
|
mov r9, #36
|
|
ldr r3, [r4, #-536]
|
|
mul r9, r9, fp
|
|
ldr r1, [sp, #36]
|
|
add r3, r3, r9
|
|
ldr r2, [r3, #16]
|
|
cmp r1, r2
|
|
bne .L3614
|
|
ldr r1, [r3, #8]
|
|
ldr r3, [r4, #-508]
|
|
cmp r1, r3
|
|
bne .L3615
|
|
ldr r3, [sp, #60]
|
|
mov r0, r8
|
|
ldr r2, [sp, #64]
|
|
add r1, r1, r3
|
|
.L3642:
|
|
bl ftl_memcpy
|
|
.L3615:
|
|
ldr r3, [r4, #-536]
|
|
ldr r2, [r3, r9]
|
|
add r1, r3, r9
|
|
cmn r2, #1
|
|
ldreq r3, [r4, #-3164]
|
|
moveq r10, r2
|
|
addeq r3, r3, #1
|
|
streq r3, [r4, #-3164]
|
|
ldr r3, [r1, #12]
|
|
ldr r2, [r1, #16]
|
|
ldr r3, [r3, #8]
|
|
cmp r2, r3
|
|
beq .L3617
|
|
ldr r3, [r4, #-3164]
|
|
add r3, r3, #1
|
|
str r3, [r4, #-3164]
|
|
ldr r2, [r1, #8]
|
|
ldr r3, [r1, #12]
|
|
ldr r0, [r2, #4]
|
|
str r0, [sp, #16]
|
|
ldr r2, [r2]
|
|
ldr r0, .L3643+28
|
|
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, [r1, #4]
|
|
ldr r3, [r3]
|
|
ldr r1, [r1, #16]
|
|
bl printk
|
|
.L3617:
|
|
ldr r3, [r4, #-536]
|
|
add r2, r3, r9
|
|
ldr r3, [r3, r9]
|
|
cmp r3, #256
|
|
bne .L3618
|
|
ldr r0, [r2, #4]
|
|
ubfx r0, r0, #10, #16
|
|
bl P2V_block_in_plane
|
|
bl FtlGcRefreshBlock
|
|
.L3618:
|
|
add fp, fp, #1
|
|
cmp r7, fp
|
|
bne .L3619
|
|
mov r7, #0
|
|
b .L3603
|
|
.L3609:
|
|
ldr r3, [sp, #40]
|
|
cmp r6, r3
|
|
bne .L3611
|
|
ldr r3, [r4, #-504]
|
|
ldr r1, [sp, #44]
|
|
str r3, [r9, #8]
|
|
ldr r3, .L3643+16
|
|
ldrh r2, [r3]
|
|
mul r3, r2, r6
|
|
sub r1, r1, r3
|
|
cmp r2, r1
|
|
str r1, [sp, #52]
|
|
bne .L3610
|
|
.L3641:
|
|
sub r3, r3, r5
|
|
add r3, r8, r3, lsl #9
|
|
str r3, [r9, #8]
|
|
b .L3610
|
|
.L3611:
|
|
ldr r3, .L3643+16
|
|
ldrh r3, [r3]
|
|
mul r3, r6, r3
|
|
b .L3641
|
|
.L3614:
|
|
ldr r1, [sp, #40]
|
|
cmp r1, r2
|
|
bne .L3615
|
|
ldr r1, [r3, #8]
|
|
ldr r3, [r4, #-504]
|
|
cmp r1, r3
|
|
bne .L3615
|
|
ldr r3, .L3643+16
|
|
ldr r2, [sp, #68]
|
|
ldrh r0, [r3]
|
|
ldr r3, [sp, #40]
|
|
mul r0, r3, r0
|
|
sub r0, r0, r5
|
|
add r0, r8, r0, lsl #9
|
|
b .L3642
|
|
.L3623:
|
|
mvn r10, #0
|
|
b .L3599
|
|
.L3644:
|
|
.align 2
|
|
.L3643:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2-2656
|
|
.word .LANCHOR0+2396
|
|
.word .LANCHOR0+2402
|
|
.word .LANCHOR0+2324
|
|
.word .LC148
|
|
.fnend
|
|
.size ftl_read, .-ftl_read
|
|
.align 2
|
|
.global ftl_vendor_read
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_vendor_read, %function
|
|
ftl_vendor_read:
|
|
.fnstart
|
|
@ 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
|
|
mov r0, #16
|
|
b ftl_read
|
|
.fnend
|
|
.size ftl_vendor_read, .-ftl_vendor_read
|
|
.align 2
|
|
.global FlashBootVendorRead
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashBootVendorRead, %function
|
|
FlashBootVendorRead:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
mov r6, r2
|
|
bl rknand_device_lock
|
|
ldr r3, .L3650
|
|
ldr r3, [r3, #500]
|
|
cmp r3, #1
|
|
mvnne r4, #0
|
|
bne .L3647
|
|
mov r0, r4
|
|
mov r2, r6
|
|
mov r1, r5
|
|
bl ftl_vendor_read
|
|
mov r4, r0
|
|
.L3647:
|
|
bl rknand_device_unlock
|
|
mov r0, r4
|
|
pop {r4, r5, r6, pc}
|
|
.L3651:
|
|
.align 2
|
|
.L3650:
|
|
.word .LANCHOR1
|
|
.fnend
|
|
.size FlashBootVendorRead, .-FlashBootVendorRead
|
|
.align 2
|
|
.global ftl_sys_read
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_sys_read, %function
|
|
ftl_sys_read:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r3, r2
|
|
mov r2, r1
|
|
add r1, r0, #256
|
|
mov r0, #16
|
|
b ftl_read
|
|
.fnend
|
|
.size ftl_sys_read, .-ftl_sys_read
|
|
.align 2
|
|
.global StorageSysDataLoad
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type StorageSysDataLoad, %function
|
|
StorageSysDataLoad:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, r1
|
|
mov r5, r0
|
|
mov r2, #512
|
|
mov r1, #0
|
|
mov r0, r4
|
|
bl ftl_memset
|
|
bl rknand_device_lock
|
|
mov r2, r4
|
|
mov r1, #1
|
|
mov r0, r5
|
|
bl ftl_sys_read
|
|
mov r4, r0
|
|
bl rknand_device_unlock
|
|
mov r0, r4
|
|
pop {r4, r5, r6, pc}
|
|
.fnend
|
|
.size StorageSysDataLoad, .-StorageSysDataLoad
|
|
.align 2
|
|
.global FtlRead
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlRead, %function
|
|
FtlRead:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b ftl_read
|
|
.fnend
|
|
.size FtlRead, .-FtlRead
|
|
.align 2
|
|
.global FtlInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlInit, %function
|
|
FtlInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mvn r3, #0
|
|
ldr r7, .L3673
|
|
ldr r5, .L3673+4
|
|
ldr r6, .L3673+8
|
|
ldr r1, .L3673+12
|
|
str r3, [r7, #500]
|
|
mov r3, #0
|
|
ldr r0, .L3673+16
|
|
str r3, [r5, #2000]
|
|
str r3, [r5, #-3612]
|
|
bl printk
|
|
add r0, r6, #124
|
|
bl FtlConstantsInit
|
|
bl FtlMemInit
|
|
bl FtlVariablesInit
|
|
add r3, r6, #2320
|
|
add r3, r3, #8
|
|
ldrh r0, [r3]
|
|
bl FtlFreeSysBlkQueueInit
|
|
bl FtlLoadBbt
|
|
cmp r0, #0
|
|
beq .L3657
|
|
ldr r1, .L3673+20
|
|
ldr r0, .L3673+24
|
|
.L3672:
|
|
bl printk
|
|
.L3658:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L3657:
|
|
bl FtlSysBlkInit
|
|
subs r4, r0, #0
|
|
ldrne r1, .L3673+20
|
|
ldrne r0, .L3673+28
|
|
bne .L3672
|
|
.L3659:
|
|
mov r1, #1
|
|
sub r5, r5, #3520
|
|
str r1, [r7, #500]
|
|
bl ftl_do_gc
|
|
ldrh r7, [r5, #-4]
|
|
cmp r7, #15
|
|
bhi .L3660
|
|
.L3663:
|
|
ldr r3, .L3673+32
|
|
movw r2, #65535
|
|
ldrh r3, [r3]
|
|
cmp r3, r2
|
|
bne .L3661
|
|
ldr r2, .L3673+36
|
|
ldrh r2, [r2]
|
|
cmp r2, r3
|
|
bne .L3661
|
|
and r0, r4, #63
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
bl FtlGcRefreshBlock
|
|
.L3661:
|
|
mov r1, #1
|
|
mov r0, r1
|
|
bl ftl_do_gc
|
|
mov r1, #1
|
|
mov r0, #0
|
|
bl ftl_do_gc
|
|
ldrh r2, [r5, #-4]
|
|
add r3, r7, #2
|
|
cmp r2, r3
|
|
bhi .L3658
|
|
add r4, r4, #1
|
|
cmp r4, #4096
|
|
bne .L3663
|
|
b .L3658
|
|
.L3660:
|
|
ldrb r3, [r6, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3658
|
|
mov r4, #128
|
|
.L3665:
|
|
mov r1, #1
|
|
mov r0, r1
|
|
bl ftl_do_gc
|
|
subs r4, r4, #1
|
|
bne .L3665
|
|
b .L3658
|
|
.L3674:
|
|
.align 2
|
|
.L3673:
|
|
.word .LANCHOR1
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0
|
|
.word .LC76
|
|
.word .LC77
|
|
.word .LANCHOR3+224
|
|
.word .LC161
|
|
.word .LC162
|
|
.word .LANCHOR2-3284
|
|
.word .LANCHOR2-2666
|
|
.fnend
|
|
.size FtlInit, .-FtlInit
|
|
.align 2
|
|
.global rk_ftl_init
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_init, %function
|
|
rk_ftl_init:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r0, #2048
|
|
bl ftl_dma32_malloc
|
|
mov r5, #0
|
|
ldr r4, .L3680
|
|
ldr r1, .L3680+4
|
|
str r0, [r4, #2004]
|
|
sub r0, r1, #324
|
|
str r5, [r4, #1688]
|
|
str r5, [r4, #1684]
|
|
str r5, [r4, #2008]
|
|
bl rknand_get_reg_addr
|
|
ldr r3, [r4, #1684]
|
|
cmp r3, r5
|
|
mvneq r4, #0
|
|
beq .L3675
|
|
bl rk_nandc_irq_init
|
|
mov r3, #2048
|
|
mov r2, r5
|
|
mov r1, r5
|
|
ldr r0, [r4, #2004]
|
|
bl FlashSramLoadStore
|
|
bl rknand_flash_cs_init
|
|
ldr r0, [r4, #1684]
|
|
bl FlashInit
|
|
subs r4, r0, #0
|
|
bne .L3677
|
|
bl FtlInit
|
|
.L3677:
|
|
mov r1, r4
|
|
ldr r0, .L3680+8
|
|
bl printk
|
|
.L3675:
|
|
mov r0, r4
|
|
pop {r4, r5, r6, pc}
|
|
.L3681:
|
|
.align 2
|
|
.L3680:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR2+2008
|
|
.word .LC163
|
|
.fnend
|
|
.size rk_ftl_init, .-rk_ftl_init
|
|
.align 2
|
|
.global ftl_fix_nand_power_lost_error
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_fix_nand_power_lost_error, %function
|
|
ftl_fix_nand_power_lost_error:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 48
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.pad #48
|
|
sub sp, sp, #48
|
|
ldr r8, .L3697
|
|
ldrb r3, [r8, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3682
|
|
ldr r4, .L3697+4
|
|
movw r3, #1846
|
|
ldr r0, .L3697+8
|
|
ldrh r6, [r4, r3]
|
|
sub r9, r4, #3520
|
|
ldr r3, [r4, #-3540]
|
|
sub r5, r4, #3472
|
|
mov r1, r6
|
|
lsl r7, r6, #1
|
|
ldrh r2, [r3, r7]
|
|
bl printk
|
|
ldrh r0, [r9]
|
|
bl FtlGcRefreshOpenBlock
|
|
ldrh r0, [r5]
|
|
bl FtlGcRefreshOpenBlock
|
|
mov r0, r9
|
|
bl allocate_new_data_superblock
|
|
mov r0, r5
|
|
movw r5, #4097
|
|
bl allocate_new_data_superblock
|
|
.L3684:
|
|
subs r5, r5, #1
|
|
beq .L3688
|
|
mov r1, #1
|
|
mov r0, r1
|
|
bl ftl_do_gc
|
|
ldr r3, [r4, #-3540]
|
|
ldrh r3, [r3, r7]
|
|
cmp r3, #0
|
|
bne .L3684
|
|
.L3688:
|
|
ldr r3, [r4, #-3540]
|
|
mov r1, r6
|
|
ldr r0, .L3697+8
|
|
ldrh r2, [r3, r7]
|
|
bl printk
|
|
ldr r3, [r4, #-3540]
|
|
ldrh r5, [r3, r7]
|
|
cmp r5, #0
|
|
bne .L3686
|
|
add r0, sp, #48
|
|
movw r9, #65535
|
|
strh r6, [r0, #-48]! @ movhi
|
|
mov r10, #36
|
|
bl make_superblock
|
|
movw r3, #2324
|
|
add r0, sp, #14
|
|
ldrh lr, [r8, r3]
|
|
mov r2, r5
|
|
ldr r8, [r4, #-3608]
|
|
mov ip, r5
|
|
.L3689:
|
|
uxth r3, r2
|
|
cmp lr, r3
|
|
bhi .L3691
|
|
ldr r3, [r4, #-3540]
|
|
mov r1, r6
|
|
ldr r0, .L3697+12
|
|
ldrh r2, [r3, r7]
|
|
bl printk
|
|
mov r2, r5
|
|
mov r1, #0
|
|
ldr r0, [r4, #-3608]
|
|
bl FlashEraseBlocks
|
|
mov r2, r5
|
|
mov r1, #1
|
|
ldr r0, [r4, #-3608]
|
|
bl FlashEraseBlocks
|
|
.L3686:
|
|
mvn r2, #0
|
|
movw r3, #1846
|
|
strh r2, [r4, r3] @ movhi
|
|
.L3682:
|
|
add sp, sp, #48
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L3691:
|
|
ldrh r3, [r0, #2]!
|
|
add r2, r2, #1
|
|
cmp r3, r9
|
|
mlane r1, r10, r5, r8
|
|
lslne r3, r3, #10
|
|
addne r5, r5, #1
|
|
uxthne r5, r5
|
|
stmibne r1, {r3, ip}
|
|
strne ip, [r1, #12]
|
|
b .L3689
|
|
.L3698:
|
|
.align 2
|
|
.L3697:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2
|
|
.word .LC164
|
|
.word .LC165
|
|
.fnend
|
|
.size ftl_fix_nand_power_lost_error, .-ftl_fix_nand_power_lost_error
|
|
.align 2
|
|
.global rk_ftl_garbage_collect
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_garbage_collect, %function
|
|
rk_ftl_garbage_collect:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
b ftl_do_gc
|
|
.fnend
|
|
.size rk_ftl_garbage_collect, .-rk_ftl_garbage_collect
|
|
.align 2
|
|
.global ftl_write
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_write, %function
|
|
ftl_write:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 80
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov fp, r3
|
|
ldr r4, .L3768
|
|
.pad #84
|
|
sub sp, sp, #84
|
|
ldr r3, [r4, #-3612]
|
|
cmp r3, #0
|
|
bne .L3741
|
|
mov r9, r2
|
|
ldr r2, .L3768+4
|
|
ldr r2, [r2, #500]
|
|
cmp r2, #1
|
|
movne r0, r3
|
|
bne .L3700
|
|
cmp r0, #16
|
|
mov r7, r1
|
|
bne .L3702
|
|
mov r2, fp
|
|
mov r1, r9
|
|
add r0, r7, #256
|
|
bl FtlVendorPartWrite
|
|
.L3700:
|
|
add sp, sp, #84
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L3702:
|
|
ldr r10, .L3768+8
|
|
ldr r3, [r10, #2432]
|
|
cmp r9, r3
|
|
cmpls r1, r3
|
|
bcs .L3744
|
|
add r6, r1, r9
|
|
cmp r3, r6
|
|
bcc .L3744
|
|
mov r3, #2048
|
|
mov r0, r7
|
|
str r3, [r4, #2012]
|
|
movw r3, #2396
|
|
ldrh r5, [r10, r3]
|
|
mov r1, r5
|
|
bl __aeabi_uidiv
|
|
mov r1, r5
|
|
str r0, [sp, #4]
|
|
sub r0, r6, #1
|
|
bl __aeabi_uidiv
|
|
ldr r2, [sp, #4]
|
|
cmp r9, r5, lsl #1
|
|
ldr r3, [r4, #-3356]
|
|
ldr r1, [r10, #2444]
|
|
sub r6, r0, r2
|
|
str r0, [sp, #24]
|
|
add r8, r6, #1
|
|
add r3, r3, r8
|
|
str r3, [r4, #-3356]
|
|
ldr r3, [r4, #-3340]
|
|
add r3, r3, r9
|
|
str r3, [r4, #-3340]
|
|
movcs r3, #1
|
|
movcc r3, #0
|
|
cmp r1, #0
|
|
str r3, [sp, #16]
|
|
beq .L3745
|
|
mov r3, #36
|
|
ldr r2, [r10, #2448]
|
|
mul r3, r3, r1
|
|
sub r3, r3, #36
|
|
add r10, r2, r3
|
|
ldr r3, [sp, #4]
|
|
ldr r2, [r10, #16]
|
|
cmp r3, r2
|
|
strne fp, [sp, #12]
|
|
bne .L3705
|
|
ldr r2, [r4, #-3352]
|
|
mov r1, r5
|
|
mov r0, r7
|
|
add r2, r2, #1
|
|
str r2, [r4, #-3352]
|
|
ldr r2, [r4, #2016]
|
|
add r2, r2, #1
|
|
str r2, [r4, #2016]
|
|
bl __aeabi_uidivmod
|
|
sub r5, r5, r1
|
|
ldr r3, [r10, #8]
|
|
cmp r9, r5
|
|
mov r0, r1
|
|
movcc r5, r9
|
|
mov r1, fp
|
|
lsl r8, r5, #9
|
|
add r0, r3, r0, lsl #9
|
|
mov r2, r8
|
|
bl ftl_memcpy
|
|
cmp r6, #0
|
|
bne .L3706
|
|
ldr r3, [r4, #2016]
|
|
cmp r3, #2
|
|
bgt .L3706
|
|
.L3741:
|
|
mov r0, #0
|
|
b .L3700
|
|
.L3706:
|
|
add r3, fp, r8
|
|
sub r9, r9, r5
|
|
str r3, [sp, #12]
|
|
add r7, r7, r5
|
|
ldr r3, [sp, #4]
|
|
mov r8, r6
|
|
add r3, r3, #1
|
|
str r3, [sp, #4]
|
|
.L3705:
|
|
mov r3, #0
|
|
str r3, [r4, #2016]
|
|
.L3704:
|
|
ldr r1, [sp, #24]
|
|
ldr r0, [sp, #4]
|
|
bl FtlCacheMetchLpa
|
|
cmp r0, #0
|
|
beq .L3707
|
|
bl FtlCacheWriteBack
|
|
.L3707:
|
|
ldr r6, [sp, #4]
|
|
ldr r10, .L3768+8
|
|
ldr r5, .L3768+12
|
|
str r5, [r4, #1992]
|
|
.L3708:
|
|
cmp r8, #0
|
|
bne .L3736
|
|
ldr r3, [sp, #24]
|
|
mov r0, r8
|
|
ldr r2, [sp, #4]
|
|
sub r1, r3, r2
|
|
bl ftl_do_gc
|
|
ldr r2, .L3768+12
|
|
ldrh r3, [r2, #-4]
|
|
mov r4, r2
|
|
cmp r3, #5
|
|
bls .L3737
|
|
cmp r3, #31
|
|
bhi .L3741
|
|
ldr r3, .L3768+8
|
|
ldrb r3, [r3, #36] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
bne .L3741
|
|
.L3737:
|
|
ldr r5, .L3768+16
|
|
.L3740:
|
|
ldr r3, .L3768+20
|
|
ldrh r2, [r3]
|
|
movw r3, #65535
|
|
cmp r2, r3
|
|
bne .L3739
|
|
ldr r3, .L3768+24
|
|
ldrh r3, [r3]
|
|
cmp r3, r2
|
|
bne .L3739
|
|
ldrh r2, [r5, #-8]
|
|
cmp r2, r3
|
|
bne .L3739
|
|
and r0, r8, #7
|
|
bl List_get_gc_head_node
|
|
uxth r0, r0
|
|
bl FtlGcRefreshBlock
|
|
.L3739:
|
|
ldr r3, .L3768+28
|
|
mov r1, #1
|
|
mov r2, #128
|
|
mov r0, r1
|
|
strh r2, [r3] @ movhi
|
|
strh r2, [r3, #-2] @ movhi
|
|
bl ftl_do_gc
|
|
mov r1, #1
|
|
mov r0, #0
|
|
bl ftl_do_gc
|
|
ldr r3, .L3768
|
|
ldr r3, [r3, #-3612]
|
|
cmp r3, #0
|
|
bne .L3741
|
|
ldrh r3, [r4, #-4]
|
|
cmp r3, #2
|
|
bhi .L3741
|
|
add r8, r8, #1
|
|
cmp r8, #256
|
|
bne .L3740
|
|
b .L3741
|
|
.L3745:
|
|
str fp, [sp, #12]
|
|
b .L3704
|
|
.L3736:
|
|
ldrh r1, [r5, #4]
|
|
ldr r4, .L3768
|
|
cmp r1, #0
|
|
bne .L3709
|
|
sub r2, r4, #3520
|
|
ldr fp, .L3768+4
|
|
cmp r5, r2
|
|
bne .L3710
|
|
sub r0, r4, #3472
|
|
ldrh r5, [r0, #4]
|
|
cmp r5, #0
|
|
bne .L3711
|
|
bl allocate_new_data_superblock
|
|
str r5, [fp, #3448]
|
|
.L3711:
|
|
ldr r0, .L3768+12
|
|
bl allocate_new_data_superblock
|
|
ldr r5, .L3768+12
|
|
ldr r1, [fp, #3448]
|
|
add r2, r5, #48
|
|
cmp r1, #0
|
|
movne r5, r2
|
|
.L3712:
|
|
ldrh r2, [r5, #4]
|
|
cmp r2, #0
|
|
bne .L3713
|
|
mov r0, r5
|
|
bl allocate_new_data_superblock
|
|
.L3713:
|
|
str r5, [r4, #1992]
|
|
.L3709:
|
|
ldr r1, [r10, #2444]
|
|
ldr r2, [r4, #-540]
|
|
sub r2, r2, r1
|
|
ldrh r1, [r5, #4]
|
|
cmp r2, r8
|
|
movcs r2, r8
|
|
cmp r1, r2
|
|
movcc r3, r1
|
|
movcs r3, r2
|
|
str r3, [sp, #36]
|
|
mov r3, #0
|
|
.L3766:
|
|
str r3, [sp, #20]
|
|
ldr r3, [sp, #20]
|
|
ldr r2, [sp, #36]
|
|
cmp r3, r2
|
|
bne .L3732
|
|
.L3715:
|
|
ldr r3, [sp, #20]
|
|
ldr r1, .L3768
|
|
ldr r2, [r10, #2444]
|
|
sub r8, r8, r3
|
|
ldr r3, [sp, #16]
|
|
ldr r1, [r1, #-540]
|
|
cmp r2, r1
|
|
orrcs r3, r3, #1
|
|
cmp r3, #0
|
|
bne .L3733
|
|
ldrh r2, [r5, #4]
|
|
cmp r2, #0
|
|
beq .L3733
|
|
.L3735:
|
|
mov r3, #0
|
|
str r3, [sp, #16]
|
|
b .L3708
|
|
.L3710:
|
|
str r1, [fp, #3448]
|
|
ldrh r1, [r2, #4]
|
|
cmp r1, #0
|
|
movne r5, r2
|
|
bne .L3713
|
|
mov r0, r5
|
|
bl allocate_new_data_superblock
|
|
b .L3712
|
|
.L3732:
|
|
ldrh r2, [r5, #4]
|
|
cmp r2, #0
|
|
beq .L3715
|
|
ldr r3, [sp, #24]
|
|
sub r4, r3, r6
|
|
ldr r3, [sp, #16]
|
|
clz r4, r4
|
|
lsr r4, r4, #5
|
|
and r2, r4, r3
|
|
ldr r3, [sp, #20]
|
|
cmp r3, #0
|
|
moveq r2, #0
|
|
andne r2, r2, #1
|
|
cmp r2, #0
|
|
beq .L3716
|
|
ldr r3, .L3768+32
|
|
add r2, r7, r9
|
|
ldrh r1, [r3]
|
|
mls r2, r1, r6, r2
|
|
cmp r1, r2
|
|
bne .L3715
|
|
.L3716:
|
|
mov r2, #0
|
|
add r1, sp, #40
|
|
mov r0, r6
|
|
mov fp, #36
|
|
bl log2phys
|
|
mov r0, r5
|
|
bl get_new_active_ppa
|
|
ldr r2, .L3768+36
|
|
ldr r1, [r10, #2444]
|
|
ldr ip, [r10, #2448]
|
|
ldrh r2, [r2]
|
|
mla ip, fp, r1, ip
|
|
mul lr, r2, r1
|
|
str r0, [ip, #4]
|
|
ldr r0, .L3768
|
|
bic r3, lr, #3
|
|
str r6, [ip, #16]
|
|
str r3, [sp, #28]
|
|
ldr lr, [sp, #28]
|
|
ldr r3, [r0, #-492]
|
|
ldr r0, [r0, #-512]
|
|
str r3, [sp, #32]
|
|
add r3, r3, lr
|
|
str r3, [sp, #8]
|
|
str r3, [ip, #12]
|
|
ldr r3, .L3768+40
|
|
ldrh lr, [r3]
|
|
mul r1, r1, lr
|
|
bic r1, r1, #3
|
|
add r1, r0, r1
|
|
ldr r0, [sp, #8]
|
|
str r1, [ip, #8]
|
|
mov r1, #0
|
|
bl ftl_memset
|
|
ldr r3, [sp, #4]
|
|
cmp r3, r6
|
|
orreq r4, r4, #1
|
|
cmp r4, #0
|
|
beq .L3717
|
|
cmp r3, r6
|
|
bne .L3718
|
|
ldr r3, .L3768+32
|
|
mov r0, r7
|
|
ldrh r4, [r3]
|
|
mov r1, r4
|
|
bl __aeabi_uidivmod
|
|
sub r4, r4, r1
|
|
mov fp, r1
|
|
cmp r4, r9
|
|
movcs r4, r9
|
|
.L3719:
|
|
ldr r3, .L3768+32
|
|
ldrh r2, [r3]
|
|
cmp r2, r4
|
|
bne .L3720
|
|
ldr r3, [sp, #4]
|
|
cmp r3, r6
|
|
mulne r1, r4, r6
|
|
ldrne r3, [sp, #12]
|
|
ldreq r1, [sp, #12]
|
|
subne r1, r1, r7
|
|
addne r1, r3, r1, lsl #9
|
|
ldr r3, [sp, #16]
|
|
cmp r3, #0
|
|
beq .L3722
|
|
ldr r2, [r10, #2444]
|
|
mov ip, #36
|
|
ldr r0, [r10, #2448]
|
|
mla r2, ip, r2, r0
|
|
str r1, [r2, #8]
|
|
.L3723:
|
|
ldr r2, .L3768+44
|
|
ldr r3, [sp, #32]
|
|
ldr r1, [sp, #28]
|
|
strh r2, [r3, r1] @ movhi
|
|
ldr r1, .L3768
|
|
ldr r3, [sp, #8]
|
|
ldr r2, [r1, #-3328]
|
|
str r2, [r3, #4]
|
|
add r2, r2, #1
|
|
cmn r2, #1
|
|
ldr r3, [sp, #8]
|
|
moveq r2, #0
|
|
str r2, [r1, #-3328]
|
|
ldr r2, [sp, #40]
|
|
str r6, [r3, #8]
|
|
add r6, r6, #1
|
|
str r2, [r3, #12]
|
|
ldrh r2, [r5]
|
|
strh r2, [r3, #2] @ movhi
|
|
ldr r2, [r10, #2444]
|
|
ldr r3, [sp, #20]
|
|
add r2, r2, #1
|
|
str r2, [r10, #2444]
|
|
add r3, r3, #1
|
|
b .L3766
|
|
.L3718:
|
|
ldr r3, .L3768+32
|
|
add r4, r7, r9
|
|
mov fp, #0
|
|
ldrh r2, [r3]
|
|
smulbb r2, r2, r6
|
|
sub r4, r4, r2
|
|
uxth r4, r4
|
|
b .L3719
|
|
.L3722:
|
|
ldr r2, [r10, #2448]
|
|
mov ip, #36
|
|
ldr r0, [r10, #2444]
|
|
mla r0, ip, r0, r2
|
|
ldr r2, .L3768+40
|
|
ldrh r2, [r2]
|
|
.L3767:
|
|
ldr r0, [r0, #8]
|
|
b .L3764
|
|
.L3720:
|
|
ldr r2, [sp, #40]
|
|
cmn r2, #1
|
|
beq .L3724
|
|
ldr r1, [r10, #2448]
|
|
mov r0, #36
|
|
str r2, [sp, #48]
|
|
ldr r2, [r10, #2444]
|
|
str r6, [sp, #60]
|
|
mla r2, r0, r2, r1
|
|
add r0, sp, #44
|
|
ldr r1, [r2, #8]
|
|
ldr r2, [r2, #12]
|
|
str r1, [sp, #52]
|
|
mov r1, #1
|
|
str r2, [sp, #56]
|
|
mov r2, #0
|
|
bl FlashReadPages
|
|
ldr r2, [sp, #44]
|
|
cmn r2, #1
|
|
ldr r2, .L3768
|
|
ldreq r1, [r2, #-3164]
|
|
addeq r1, r1, #1
|
|
streq r1, [r2, #-3164]
|
|
beq .L3727
|
|
ldr r3, [sp, #8]
|
|
ldr r1, [r3, #8]
|
|
cmp r6, r1
|
|
beq .L3727
|
|
ldr r1, [r2, #-3164]
|
|
ldr r0, .L3768+48
|
|
add r1, r1, #1
|
|
str r1, [r2, #-3164]
|
|
mov r2, r6
|
|
ldr r1, [r3, #8]
|
|
bl printk
|
|
.L3727:
|
|
ldr r3, [sp, #4]
|
|
lsl r2, r4, #9
|
|
cmp r3, r6
|
|
bne .L3728
|
|
ldr r0, [r10, #2448]
|
|
mov ip, #36
|
|
ldr r1, [r10, #2444]
|
|
mla r1, ip, r1, r0
|
|
ldr r0, [r1, #8]
|
|
ldr r1, [sp, #12]
|
|
add r0, r0, fp, lsl #9
|
|
.L3764:
|
|
bl ftl_memcpy
|
|
b .L3723
|
|
.L3724:
|
|
ldr r2, [r10, #2448]
|
|
mov r1, #36
|
|
ldr r0, [r10, #2444]
|
|
mla r0, r1, r0, r2
|
|
ldr r2, .L3768+40
|
|
mov r1, #0
|
|
ldrh r2, [r2]
|
|
ldr r0, [r0, #8]
|
|
bl ftl_memset
|
|
b .L3727
|
|
.L3728:
|
|
ldr r3, .L3768+32
|
|
mov lr, #36
|
|
ldr r0, [r10, #2444]
|
|
ldr ip, [r10, #2448]
|
|
ldrh r1, [r3]
|
|
ldr r3, [sp, #12]
|
|
mla r0, lr, r0, ip
|
|
mul r1, r6, r1
|
|
sub r1, r1, r7
|
|
add r1, r3, r1, lsl #9
|
|
b .L3767
|
|
.L3717:
|
|
ldr r3, [sp, #16]
|
|
cmp r3, #0
|
|
beq .L3729
|
|
ldr r2, [r10, #2444]
|
|
ldr r1, [r10, #2448]
|
|
ldr r3, .L3768+32
|
|
mla fp, fp, r2, r1
|
|
ldrh r2, [r3]
|
|
ldr r3, [sp, #12]
|
|
mul r2, r6, r2
|
|
sub r2, r2, r7
|
|
add r2, r3, r2, lsl #9
|
|
str r2, [fp, #8]
|
|
b .L3723
|
|
.L3729:
|
|
ldr r3, .L3768+32
|
|
ldr r2, [r10, #2444]
|
|
ldr r0, [r10, #2448]
|
|
ldrh r1, [r3]
|
|
mla fp, fp, r2, r0
|
|
ldrh r2, [r3, #4]
|
|
ldr r3, [sp, #12]
|
|
mul r1, r6, r1
|
|
ldr r0, [fp, #8]
|
|
sub r1, r1, r7
|
|
add r1, r3, r1, lsl #9
|
|
b .L3764
|
|
.L3733:
|
|
bl FtlCacheWriteBack
|
|
cmp r8, #1
|
|
mov r2, #0
|
|
str r2, [r10, #2444]
|
|
bhi .L3708
|
|
b .L3735
|
|
.L3744:
|
|
mvn r0, #0
|
|
b .L3700
|
|
.L3769:
|
|
.align 2
|
|
.L3768:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR1
|
|
.word .LANCHOR0
|
|
.word .LANCHOR2-3520
|
|
.word .LANCHOR2-2656
|
|
.word .LANCHOR2-3284
|
|
.word .LANCHOR2-2666
|
|
.word .LANCHOR2-2718
|
|
.word .LANCHOR0+2396
|
|
.word .LANCHOR0+2402
|
|
.word .LANCHOR0+2400
|
|
.word -3947
|
|
.word .LC166
|
|
.fnend
|
|
.size ftl_write, .-ftl_write
|
|
.align 2
|
|
.global ftl_vendor_write
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_vendor_write, %function
|
|
ftl_vendor_write:
|
|
.fnstart
|
|
@ 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
|
|
mov r0, #16
|
|
b ftl_write
|
|
.fnend
|
|
.size ftl_vendor_write, .-ftl_vendor_write
|
|
.align 2
|
|
.global FlashBootVendorWrite
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FlashBootVendorWrite, %function
|
|
FlashBootVendorWrite:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
mov r5, r1
|
|
mov r6, r2
|
|
bl rknand_device_lock
|
|
ldr r3, .L3775
|
|
ldr r3, [r3, #500]
|
|
cmp r3, #1
|
|
mvnne r4, #0
|
|
bne .L3772
|
|
mov r0, r4
|
|
mov r2, r6
|
|
mov r1, r5
|
|
bl ftl_vendor_write
|
|
mov r4, r0
|
|
.L3772:
|
|
bl rknand_device_unlock
|
|
mov r0, r4
|
|
pop {r4, r5, r6, pc}
|
|
.L3776:
|
|
.align 2
|
|
.L3775:
|
|
.word .LANCHOR1
|
|
.fnend
|
|
.size FlashBootVendorWrite, .-FlashBootVendorWrite
|
|
.align 2
|
|
.global ftl_sys_write
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type ftl_sys_write, %function
|
|
ftl_sys_write:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r3, r2
|
|
mov r2, r1
|
|
add r1, r0, #256
|
|
mov r0, #16
|
|
b ftl_write
|
|
.fnend
|
|
.size ftl_sys_write, .-ftl_sys_write
|
|
.align 2
|
|
.global StorageSysDataStore
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type StorageSysDataStore, %function
|
|
StorageSysDataStore:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r5, r1
|
|
mov r4, r0
|
|
bl rknand_device_lock
|
|
mov r2, r5
|
|
mov r1, #1
|
|
mov r0, r4
|
|
bl ftl_sys_write
|
|
mov r4, r0
|
|
bl rknand_device_unlock
|
|
mov r0, r4
|
|
pop {r4, r5, r6, pc}
|
|
.fnend
|
|
.size StorageSysDataStore, .-StorageSysDataStore
|
|
.align 2
|
|
.global FtlDumpSysBlock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlDumpSysBlock, %function
|
|
FtlDumpSysBlock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
lsl r8, r0, #10
|
|
ldr r4, .L3788
|
|
.pad #24
|
|
sub sp, sp, #24
|
|
mov r6, r0
|
|
mov r5, #0
|
|
ldr r7, .L3788+4
|
|
ldr r3, [r4, #-524]
|
|
add r9, r4, #1760
|
|
ldr r10, .L3788+8
|
|
str r3, [r4, #1768]
|
|
ldr r3, [r4, #-500]
|
|
str r3, [r4, #1772]
|
|
.L3781:
|
|
ldrh r2, [r7]
|
|
sxth r3, r5
|
|
cmp r3, r2
|
|
blt .L3783
|
|
add sp, sp, #24
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L3783:
|
|
mov r2, #1
|
|
orr r3, r3, r8
|
|
mov r1, r2
|
|
mov r0, r9
|
|
str r3, [r4, #1764]
|
|
bl FlashReadPages
|
|
ldr r2, [r4, #1768]
|
|
mov r1, r6
|
|
ldr r3, [r4, #1772]
|
|
mov r0, r10
|
|
ldr r2, [r2]
|
|
str r2, [sp, #16]
|
|
ldr r2, [r3, #12]
|
|
str r2, [sp, #12]
|
|
ldr r2, [r3, #8]
|
|
str r2, [sp, #8]
|
|
ldr r2, [r3, #4]
|
|
str r2, [sp, #4]
|
|
ldr r3, [r3]
|
|
ldr r2, [r4, #1760]
|
|
str r3, [sp]
|
|
ldr r3, [r4, #1764]
|
|
bl printk
|
|
ldr r3, [r4, #1772]
|
|
ldr r3, [r3]
|
|
cmn r3, #1
|
|
beq .L3782
|
|
mov r3, #768
|
|
mov r2, #4
|
|
ldr r1, [r4, #-524]
|
|
ldr r0, .L3788+12
|
|
bl rknand_print_hex
|
|
.L3782:
|
|
add r5, r5, #1
|
|
b .L3781
|
|
.L3789:
|
|
.align 2
|
|
.L3788:
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2392
|
|
.word .LC167
|
|
.word .LC168
|
|
.fnend
|
|
.size FtlDumpSysBlock, .-FtlDumpSysBlock
|
|
.align 2
|
|
.global dump_map_info
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type dump_map_info, %function
|
|
dump_map_info:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 16
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L3805
|
|
movw r2, #2332
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #44
|
|
sub sp, sp, #44
|
|
ldrh r6, [r3, r2]
|
|
str r3, [sp, #24]
|
|
.L3791:
|
|
ldr r3, .L3805+4
|
|
ldr r4, .L3805+8
|
|
ldrh r3, [r3]
|
|
cmp r3, r6
|
|
bhi .L3798
|
|
ldr r10, .L3805+12
|
|
mov r7, #0
|
|
sub r9, r4, #388
|
|
add fp, r4, #1760
|
|
.L3799:
|
|
ldrh r3, [r9]
|
|
sxth r5, r7
|
|
cmp r5, r3
|
|
bge .L3802
|
|
lsl r5, r5, #1
|
|
mov r6, #0
|
|
ldr r8, .L3805+16
|
|
b .L3803
|
|
.L3793:
|
|
str r3, [sp, #32]
|
|
mov r1, r6
|
|
ldr r3, .L3805+20
|
|
str r2, [sp, #36]
|
|
ldrb r0, [r3, r7] @ zero_extendqisi2
|
|
bl V2P_block
|
|
str r0, [sp, #28]
|
|
bl FtlBbmIsBadBlock
|
|
cmp r0, #0
|
|
ldr r3, [sp, #32]
|
|
ldr r2, [sp, #36]
|
|
bne .L3792
|
|
ldr r1, [sp, #28]
|
|
mla r0, r2, r5, r8
|
|
lsl r1, r1, #10
|
|
stmib r0, {r1, fp}
|
|
mul r1, r9, r5
|
|
add r5, r5, #1
|
|
uxth r5, r5
|
|
add ip, r1, #3
|
|
cmp r1, #0
|
|
movlt r1, ip
|
|
bic r1, r1, #3
|
|
add r1, r10, r1
|
|
str r1, [r0, #12]
|
|
.L3792:
|
|
add r7, r7, #1
|
|
.L3800:
|
|
uxth r1, r7
|
|
cmp r3, r1
|
|
bhi .L3793
|
|
cmp r5, #0
|
|
bne .L3794
|
|
.L3797:
|
|
add r6, r6, #1
|
|
uxth r6, r6
|
|
b .L3791
|
|
.L3794:
|
|
ldr r9, .L3805+24
|
|
mov r0, r8
|
|
mov r7, #0
|
|
mov r8, #36
|
|
mov r2, #1
|
|
mov r1, r5
|
|
bl FlashReadPages
|
|
.L3795:
|
|
uxth r3, r7
|
|
cmp r5, r3
|
|
bls .L3797
|
|
ldr r3, [r4, #-536]
|
|
mla r3, r8, r7, r3
|
|
add r7, r7, #1
|
|
ldr r1, [r3, #12]
|
|
ldr r2, [r3, #4]
|
|
ldr r3, [r3, #8]
|
|
ldr r0, [r3, #4]
|
|
str r0, [sp, #16]
|
|
mov r0, r9
|
|
ldr r3, [r3]
|
|
str r3, [sp, #12]
|
|
ldr r3, [r1, #12]
|
|
str r3, [sp, #8]
|
|
ldr r3, [r1, #8]
|
|
str r3, [sp, #4]
|
|
ldr r3, [r1, #4]
|
|
str r3, [sp]
|
|
ldr r3, [r1]
|
|
ubfx r1, r2, #10, #16
|
|
bl printk
|
|
b .L3795
|
|
.L3798:
|
|
ldr r2, .L3805+28
|
|
mov r7, #0
|
|
ldr r8, [r4, #-536]
|
|
mov r5, r7
|
|
ldr fp, [r4, #-2696]
|
|
ldrh r3, [r2]
|
|
ldrh r9, [r2, #78]
|
|
mov r2, #36
|
|
ldr r10, [r4, #-2692]
|
|
b .L3800
|
|
.L3801:
|
|
ldr r2, [r4, #-472]
|
|
mov r0, fp
|
|
ldrh r2, [r2, r5]
|
|
orr r3, r3, r2, lsl #10
|
|
mov r2, #1
|
|
mov r1, r2
|
|
str r3, [r4, #1764]
|
|
bl FlashReadPages
|
|
ldr r2, [r4, #1768]
|
|
ldr r1, [r4, #-472]
|
|
ldr r3, [r4, #1772]
|
|
ldr r0, [r2, #4]
|
|
ldrh r1, [r1, r5]
|
|
str r0, [sp, #20]
|
|
mov r0, r8
|
|
ldr r2, [r2]
|
|
str r2, [sp, #16]
|
|
ldr r2, [r3, #12]
|
|
str r2, [sp, #12]
|
|
ldr r2, [r3, #8]
|
|
str r2, [sp, #8]
|
|
ldr r2, [r3, #4]
|
|
str r2, [sp, #4]
|
|
ldr r3, [r3]
|
|
ldr r2, [r4, #1760]
|
|
str r3, [sp]
|
|
ldr r3, [r4, #1764]
|
|
bl printk
|
|
.L3803:
|
|
ldrh r2, [r10]
|
|
sxth r3, r6
|
|
add r6, r6, #1
|
|
cmp r3, r2
|
|
blt .L3801
|
|
add r7, r7, #1
|
|
b .L3799
|
|
.L3802:
|
|
ldr r3, [sp, #24]
|
|
mov r2, #2
|
|
ldr r1, [r4, #-472]
|
|
movw r5, #2428
|
|
ldr r0, .L3805+32
|
|
ldr r3, [r3, #2420]
|
|
bl rknand_print_hex
|
|
ldr r3, [sp, #24]
|
|
mov r2, #4
|
|
ldr r1, [r4, #-452]
|
|
ldr r0, .L3805+36
|
|
ldrh r3, [r3, r5]
|
|
bl rknand_print_hex
|
|
ldr r3, [sp, #24]
|
|
mov r2, #4
|
|
ldr r1, [r4, #-448]
|
|
ldr r0, .L3805+40
|
|
ldrh r3, [r3, r5]
|
|
add sp, sp, #44
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
b rknand_print_hex
|
|
.L3806:
|
|
.align 2
|
|
.L3805:
|
|
.word .LANCHOR0
|
|
.word .LANCHOR0+2334
|
|
.word .LANCHOR2
|
|
.word .LANCHOR0+2392
|
|
.word .LC113
|
|
.word .LANCHOR0+2350
|
|
.word .LC169
|
|
.word .LANCHOR0+2324
|
|
.word .LC170
|
|
.word .LC171
|
|
.word .LC172
|
|
.fnend
|
|
.size dump_map_info, .-dump_map_info
|
|
.align 2
|
|
.global flash_boot_enter_slc_mode
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type flash_boot_enter_slc_mode, %function
|
|
flash_boot_enter_slc_mode:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L3809
|
|
ldr r2, [r3, #2268]
|
|
ldr r3, .L3809+4
|
|
cmp r2, r3
|
|
bxne lr
|
|
b flash_enter_slc_mode
|
|
.L3810:
|
|
.align 2
|
|
.L3809:
|
|
.word .LANCHOR0
|
|
.word 1446522928
|
|
.fnend
|
|
.size flash_boot_enter_slc_mode, .-flash_boot_enter_slc_mode
|
|
.align 2
|
|
.global flash_boot_exit_slc_mode
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type flash_boot_exit_slc_mode, %function
|
|
flash_boot_exit_slc_mode:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
ldr r3, .L3813
|
|
ldr r2, [r3, #2268]
|
|
ldr r3, .L3813+4
|
|
cmp r2, r3
|
|
bxne lr
|
|
b flash_exit_slc_mode
|
|
.L3814:
|
|
.align 2
|
|
.L3813:
|
|
.word .LANCHOR0
|
|
.word 1446522928
|
|
.fnend
|
|
.size flash_boot_exit_slc_mode, .-flash_boot_exit_slc_mode
|
|
.align 2
|
|
.global write_idblock
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type write_idblock, %function
|
|
write_idblock:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 112
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
mov r6, r0
|
|
ldr r4, .L3864
|
|
.pad #124
|
|
sub sp, sp, #124
|
|
mov r0, #256000
|
|
mov r10, r1
|
|
mov r5, r2
|
|
ldr r3, [r4, #48]
|
|
ldr r8, [r4, #40]
|
|
ldrb r7, [r3, #9] @ zero_extendqisi2
|
|
bl ftl_malloc
|
|
subs r3, r0, #0
|
|
str r3, [sp, #8]
|
|
beq .L3842
|
|
add r0, r6, #508
|
|
add r0, r0, #3
|
|
lsr r9, r0, #9
|
|
cmp r9, #8
|
|
bls .L3840
|
|
cmp r9, #500
|
|
bhi .L3842
|
|
.L3817:
|
|
ldr r2, [r10]
|
|
ldr r3, .L3864+4
|
|
cmp r2, r3
|
|
bne .L3842
|
|
smulbb r7, r7, r8
|
|
uxth fp, r7
|
|
sub r0, fp, #1
|
|
mov r1, fp
|
|
add r0, r0, r9
|
|
bl __aeabi_uidiv
|
|
str r0, [sp, #32]
|
|
add r0, r10, #254976
|
|
add r0, r0, #512
|
|
mov r3, #0
|
|
movw r2, #63871
|
|
.L3821:
|
|
ldr r1, [r0, #-4]!
|
|
cmp r1, #0
|
|
bne .L3818
|
|
ldr r1, [r10, r3, lsl #2]
|
|
add r3, r3, #1
|
|
cmp r3, #4096
|
|
sub r2, r2, #1
|
|
movhi r3, #0
|
|
cmp r2, #4096
|
|
str r1, [r0, #512]
|
|
bne .L3821
|
|
.L3820:
|
|
mov r3, #5
|
|
mov r1, r5
|
|
mov r2, #4
|
|
ldr r0, .L3864+8
|
|
bl rknand_print_hex
|
|
ldrb r2, [r4, #37] @ zero_extendqisi2
|
|
sub r5, r5, #4
|
|
ldr r1, [r10, #512]
|
|
ldr r0, .L3864+12
|
|
bl printk
|
|
ldr r2, .L3864+16
|
|
mov r1, r9
|
|
ldrh r3, [r4, #150]
|
|
ldr r0, .L3864+20
|
|
ldr r2, [r2, #1716]
|
|
str r2, [sp]
|
|
mov r2, r9
|
|
bl printk
|
|
ldrb r3, [r4, #37] @ zero_extendqisi2
|
|
ldr r2, [r10, #512]
|
|
ldr r4, .L3864
|
|
cmp r2, r3
|
|
strhi r3, [r10, #512]
|
|
lsl r3, r9, #7
|
|
str r3, [sp, #40]
|
|
mov r3, #0
|
|
str r3, [sp, #20]
|
|
str r3, [sp, #12]
|
|
.L3838:
|
|
ldr r2, [r5, #4]
|
|
ldrb r3, [r4, #37] @ zero_extendqisi2
|
|
cmp r2, r3
|
|
bcs .L3823
|
|
ldr r3, .L3864+16
|
|
ldr r3, [r3, #1716]
|
|
cmp r2, r3
|
|
bcc .L3823
|
|
ldr r3, [sp, #32]
|
|
ldr r1, [sp, #12]
|
|
cmp r1, #0
|
|
cmpne r3, #1
|
|
bls .L3824
|
|
ldr r3, [r5]
|
|
add r3, r3, #1
|
|
cmp r2, r3
|
|
beq .L3823
|
|
.L3824:
|
|
mov r2, #512
|
|
mov r1, #0
|
|
ldr r0, [sp, #8]
|
|
bl memset
|
|
ldr r3, [r4, #48]
|
|
mov r2, r9
|
|
ldr r6, [r5, #4]
|
|
ldr r7, [r4, #40]
|
|
ldrb r3, [r3, #9] @ zero_extendqisi2
|
|
ldr r0, .L3864+24
|
|
mul r6, r6, fp
|
|
str r3, [sp, #16]
|
|
ldrh r3, [sp, #16]
|
|
mov r1, r6
|
|
smulbb r7, r7, r3
|
|
bl printk
|
|
mov r0, #0
|
|
uxth r7, r7
|
|
bl flash_boot_enter_slc_mode
|
|
mov r0, r6
|
|
ldr r1, [sp, #16]
|
|
bl __aeabi_uidiv
|
|
mov r2, #0
|
|
mov r1, r0
|
|
mov r0, r2
|
|
bl FlashEraseBlock
|
|
cmp r7, r9
|
|
movcs r8, #1
|
|
bcs .L3825
|
|
mov r2, #0
|
|
mov r8, #2
|
|
add r1, r6, r7
|
|
mov r0, r2
|
|
bl FlashEraseBlock
|
|
.L3825:
|
|
mov r0, #0
|
|
bl flash_boot_exit_slc_mode
|
|
ldr r3, [r4, #48]
|
|
ldrh r0, [r3, #10]
|
|
ldrb r1, [r3, #12] @ zero_extendqisi2
|
|
lsl r0, r0, #2
|
|
mul r0, r8, r0
|
|
mov r8, #0
|
|
bl __aeabi_idiv
|
|
mov r1, r7
|
|
str r0, [sp, #44]
|
|
mov r0, r6
|
|
bl __aeabi_uidivmod
|
|
sub r3, r6, r1
|
|
str r1, [sp, #28]
|
|
str r3, [sp, #36]
|
|
str r10, [sp, #24]
|
|
.L3826:
|
|
ldr r3, [sp, #44]
|
|
cmp r3, r8
|
|
bhi .L3830
|
|
mov r1, r6
|
|
mov r3, #0
|
|
mov r2, r9
|
|
ldr r0, .L3864+28
|
|
bl printk
|
|
ldr r3, [r4, #48]
|
|
mov r2, r9
|
|
ldr r6, [r5, #4]
|
|
mov r8, #0
|
|
ldr r7, [r4, #40]
|
|
ldrb r3, [r3, #9] @ zero_extendqisi2
|
|
ldr r0, .L3864+32
|
|
mul r6, r6, fp
|
|
str r3, [sp, #16]
|
|
ldrh r3, [sp, #16]
|
|
mov r1, r6
|
|
smulbb r7, r7, r3
|
|
bl printk
|
|
uxth r7, r7
|
|
mov r0, r6
|
|
mov r1, r7
|
|
bl __aeabi_uidivmod
|
|
sub r3, r6, r1
|
|
ldr r2, [sp, #8]
|
|
str r3, [sp, #36]
|
|
ldr r3, [sp, #16]
|
|
str r1, [sp, #24]
|
|
str r2, [sp, #28]
|
|
mul r3, r3, r1
|
|
ubfx r3, r3, #2, #2
|
|
.L3831:
|
|
cmp r8, r9
|
|
bcc .L3833
|
|
mov r3, #0
|
|
mov r2, r9
|
|
mov r1, r6
|
|
ldr r0, .L3864+36
|
|
bl printk
|
|
ldr r2, [sp, #8]
|
|
mov r3, r10
|
|
mov r6, #0
|
|
.L3836:
|
|
mov r7, r2
|
|
mov r8, r3
|
|
ldr r0, [r7]
|
|
add r2, r2, #4
|
|
ldr r1, [r8]
|
|
add r3, r3, #4
|
|
cmp r0, r1
|
|
beq .L3834
|
|
mov r2, #512
|
|
mov r1, #0
|
|
ldr r0, [sp, #8]
|
|
bl memset
|
|
ldr r3, [r8]
|
|
ldr r1, [sp, #12]
|
|
ldr r0, .L3864+40
|
|
str r3, [sp, #4]
|
|
ldr r3, [r7]
|
|
str r3, [sp]
|
|
mov r3, r6
|
|
bic r6, r6, #255
|
|
ldr r2, [r5, #4]
|
|
lsl r6, r6, #2
|
|
bl printk
|
|
mov r3, #256
|
|
mov r2, #4
|
|
add r1, r10, r6
|
|
ldr r0, .L3864+44
|
|
bl rknand_print_hex
|
|
ldr r1, [sp, #8]
|
|
mov r3, #256
|
|
mov r2, #4
|
|
ldr r0, .L3864+48
|
|
add r1, r1, r6
|
|
bl rknand_print_hex
|
|
mov r0, #0
|
|
bl flash_boot_enter_slc_mode
|
|
ldr r1, [r5, #4]
|
|
mov r2, #0
|
|
mov r0, r2
|
|
mul r1, r1, fp
|
|
bl FlashEraseBlock
|
|
ldr r3, [sp, #32]
|
|
cmp r3, #1
|
|
bls .L3835
|
|
ldr r1, [r5, #4]
|
|
mov r2, #0
|
|
mov r0, r2
|
|
mla r1, r1, fp, fp
|
|
bl FlashEraseBlock
|
|
.L3835:
|
|
mov r0, #0
|
|
bl flash_boot_exit_slc_mode
|
|
ldr r1, [r5, #4]
|
|
ldr r0, .L3864+52
|
|
bl printk
|
|
.L3823:
|
|
ldr r3, [sp, #12]
|
|
add r5, r5, #4
|
|
add r3, r3, #1
|
|
cmp r3, #5
|
|
str r3, [sp, #12]
|
|
bne .L3838
|
|
ldr r0, [sp, #8]
|
|
bl ftl_free
|
|
ldr r3, [sp, #20]
|
|
clz r0, r3
|
|
lsr r0, r0, #5
|
|
rsb r0, r0, #0
|
|
.L3815:
|
|
add sp, sp, #124
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L3840:
|
|
mov r9, #8
|
|
b .L3817
|
|
.L3818:
|
|
ldr r0, .L3864+56
|
|
bl printk
|
|
b .L3820
|
|
.L3830:
|
|
ldr r3, [sp, #28]
|
|
add r2, r3, r8
|
|
lsrs r2, r2, #2
|
|
beq .L3827
|
|
ldrb r0, [r4, #152] @ zero_extendqisi2
|
|
add r1, r2, #1
|
|
add r3, r4, r1, lsl #1
|
|
cmp r0, #0
|
|
ldrh r3, [r3, #156]
|
|
beq .L3828
|
|
ldr r0, [r4, #2268]
|
|
ldr ip, .L3864+60
|
|
cmp r0, ip
|
|
moveq r3, r1
|
|
.L3828:
|
|
sub r3, r3, #-1073741823
|
|
lsl r3, r3, #2
|
|
str r3, [sp, #56]
|
|
.L3827:
|
|
movw r3, #61424
|
|
str r3, [sp, #60]
|
|
add r3, r4, r2, lsl #1
|
|
ldrh r7, [r3, #156]
|
|
ldrb r3, [r4, #152] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3829
|
|
ldr r3, [r4, #2268]
|
|
ldr r1, .L3864+60
|
|
cmp r3, r1
|
|
moveq r7, r2
|
|
.L3829:
|
|
ldr r2, [sp, #36]
|
|
add r8, r8, #4
|
|
ldr r3, [sp, #16]
|
|
uxth r8, r8
|
|
mla r3, r7, r3, r2
|
|
ldr r2, .L3864+16
|
|
add r7, r7, #1
|
|
ldrb r0, [r2, #1722] @ zero_extendqisi2
|
|
uxth r7, r7
|
|
str r3, [sp, #52]
|
|
ldrb r3, [r4, #2316] @ zero_extendqisi2
|
|
str r3, [sp, #48]
|
|
bl FlashBchSel
|
|
mov r0, #0
|
|
bl flash_boot_enter_slc_mode
|
|
ldr r2, [r4, #48]
|
|
ldr r3, [sp, #52]
|
|
ldrb r1, [r2, #9] @ zero_extendqisi2
|
|
mov r0, r3
|
|
bl __aeabi_uidiv
|
|
add r3, sp, #56
|
|
ldr r2, [sp, #24]
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl FlashProgPage
|
|
mov r0, #0
|
|
bl flash_boot_exit_slc_mode
|
|
ldr r0, [sp, #48]
|
|
bl FlashBchSel
|
|
ldr r1, [sp, #16]
|
|
ldr r0, [sp, #36]
|
|
bl __aeabi_uidiv
|
|
mov r2, r7
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl FlashPageProgMsbFFData
|
|
ldr r3, [sp, #24]
|
|
add r3, r3, #2048
|
|
str r3, [sp, #24]
|
|
b .L3826
|
|
.L3833:
|
|
ldr r2, [sp, #24]
|
|
rsb r7, r3, #4
|
|
ldrb r0, [r4, #152] @ zero_extendqisi2
|
|
uxth r7, r7
|
|
add r2, r2, r8
|
|
lsr r2, r2, #2
|
|
cmp r0, #0
|
|
add r1, r4, r2, lsl #1
|
|
ldrh r1, [r1, #156]
|
|
beq .L3832
|
|
ldr r0, [r4, #2268]
|
|
ldr ip, .L3864+60
|
|
cmp r0, ip
|
|
moveq r1, r2
|
|
.L3832:
|
|
ldr r2, [sp, #36]
|
|
add r8, r7, r8
|
|
uxth r8, r8
|
|
add r3, r3, r2
|
|
ldr r2, [sp, #16]
|
|
mla r3, r1, r2, r3
|
|
ldr r2, [r4, #48]
|
|
ldrb r1, [r2, #9] @ zero_extendqisi2
|
|
ldr r2, .L3864+16
|
|
str r3, [sp, #52]
|
|
ldrb r3, [r4, #2316] @ zero_extendqisi2
|
|
ldrb r0, [r2, #1722] @ zero_extendqisi2
|
|
str r1, [sp, #48]
|
|
str r3, [sp, #44]
|
|
bl FlashBchSel
|
|
mov r0, #0
|
|
bl flash_boot_enter_slc_mode
|
|
ldr r3, [sp, #52]
|
|
ldr r1, [sp, #48]
|
|
mov r0, r3
|
|
bl __aeabi_uidiv
|
|
mov r3, #0
|
|
mov r1, r0
|
|
ldr r2, [sp, #28]
|
|
mov r0, r3
|
|
bl FlashReadPage
|
|
mov r0, #0
|
|
bl flash_boot_exit_slc_mode
|
|
ldr r0, [sp, #44]
|
|
bl FlashBchSel
|
|
ldr r3, [sp, #28]
|
|
add r3, r3, r7, lsl #9
|
|
str r3, [sp, #28]
|
|
mov r3, #0
|
|
b .L3831
|
|
.L3834:
|
|
ldr r1, [sp, #40]
|
|
add r6, r6, #1
|
|
cmp r1, r6
|
|
bne .L3836
|
|
ldr r3, [sp, #20]
|
|
add r3, r3, #1
|
|
str r3, [sp, #20]
|
|
b .L3823
|
|
.L3842:
|
|
mvn r0, #0
|
|
b .L3815
|
|
.L3865:
|
|
.align 2
|
|
.L3864:
|
|
.word .LANCHOR0
|
|
.word -52655045
|
|
.word .LC174
|
|
.word .LC175
|
|
.word .LANCHOR2
|
|
.word .LC176
|
|
.word .LC177
|
|
.word .LC178
|
|
.word .LC179
|
|
.word .LC180
|
|
.word .LC181
|
|
.word .LC182
|
|
.word .LC183
|
|
.word .LC184
|
|
.word .LC173
|
|
.word 1446522928
|
|
.fnend
|
|
.size write_idblock, .-write_idblock
|
|
.align 2
|
|
.global write_loader_lba
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type write_loader_lba, %function
|
|
write_loader_lba:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 40
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
cmp r0, #64
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mov r5, r0
|
|
.pad #48
|
|
sub sp, sp, #48
|
|
mov r6, r1
|
|
mov r8, r2
|
|
ldr r4, .L3890
|
|
bne .L3867
|
|
ldr r2, [r2]
|
|
ldr r3, .L3890+4
|
|
cmp r2, r3
|
|
bne .L3867
|
|
mov r3, #1
|
|
mov r0, #256000
|
|
strb r3, [r4, #2020]
|
|
bl ftl_malloc
|
|
mov r2, #256000
|
|
mov r1, #0
|
|
str r0, [r4, #2024]
|
|
bl ftl_memset
|
|
str r5, [r4, #2028]
|
|
.L3867:
|
|
str r6, [sp]
|
|
mov r3, r5
|
|
ldr r2, [r8]
|
|
ldr r1, [r4, #2024]
|
|
ldr r0, .L3890+8
|
|
bl printk
|
|
ldrb r3, [r4, #2020] @ zero_extendqisi2
|
|
cmp r3, #0
|
|
beq .L3866
|
|
sub r0, r5, #64
|
|
ldr r7, [r4, #2024]
|
|
cmp r0, #500
|
|
bcs .L3869
|
|
rsb r2, r5, #564
|
|
mov r1, r8
|
|
cmp r6, r2
|
|
add r0, r7, r0, lsl #9
|
|
movcc r2, r6
|
|
lsl r2, r2, #9
|
|
bl ftl_memcpy
|
|
.L3870:
|
|
ldr r3, [r4, #2028]
|
|
cmp r5, r3
|
|
beq .L3879
|
|
mov r3, #0
|
|
cmp r7, r3
|
|
strb r3, [r4, #2020]
|
|
mov r8, r3
|
|
beq .L3880
|
|
mov r0, r7
|
|
bl ftl_free
|
|
.L3880:
|
|
str r8, [r4, #2024]
|
|
b .L3879
|
|
.L3869:
|
|
cmp r5, #564
|
|
bcc .L3870
|
|
ldr r3, .L3890+12
|
|
ldr r0, [r4, #2028]
|
|
ldr r3, [r3, #48]
|
|
sub r0, r0, #64
|
|
cmp r0, #500
|
|
ldrb r3, [r3, #9] @ zero_extendqisi2
|
|
movcs r0, #500
|
|
cmp r3, #4
|
|
beq .L3871
|
|
mov r3, #2
|
|
str r3, [sp, #8]
|
|
mov r3, #3
|
|
str r3, [sp, #12]
|
|
mov r3, #4
|
|
str r3, [sp, #16]
|
|
mov r3, #5
|
|
str r3, [sp, #20]
|
|
mov r3, #6
|
|
str r3, [sp, #24]
|
|
.L3872:
|
|
movw r3, #63872
|
|
.L3878:
|
|
ldr r2, [r7, r3, lsl #2]
|
|
cmp r2, #0
|
|
beq .L3876
|
|
add r3, r3, #128
|
|
lsl r0, r3, #2
|
|
.L3877:
|
|
mov r1, r7
|
|
add r2, sp, #8
|
|
mov r7, #0
|
|
bl write_idblock
|
|
ldr r0, [r4, #2024]
|
|
strb r7, [r4, #2020]
|
|
bl ftl_free
|
|
str r7, [r4, #2024]
|
|
.L3879:
|
|
add r5, r5, r6
|
|
str r5, [r4, #2028]
|
|
.L3866:
|
|
add sp, sp, #48
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, pc}
|
|
.L3871:
|
|
mov r2, #0
|
|
add r3, sp, #8
|
|
.L3875:
|
|
cmp r0, #256
|
|
lslhi r1, r2, #1
|
|
strls r2, [r3, r2, lsl #2]
|
|
strhi r1, [r3, r2, lsl #2]
|
|
add r2, r2, #1
|
|
cmp r2, #5
|
|
bne .L3875
|
|
b .L3872
|
|
.L3876:
|
|
sub r3, r3, #1
|
|
cmp r3, #4096
|
|
bne .L3878
|
|
lsl r0, r0, #9
|
|
b .L3877
|
|
.L3891:
|
|
.align 2
|
|
.L3890:
|
|
.word .LANCHOR2
|
|
.word -52655045
|
|
.word .LC185
|
|
.word .LANCHOR0
|
|
.fnend
|
|
.size write_loader_lba, .-write_loader_lba
|
|
.align 2
|
|
.global FtlWrite
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type FtlWrite, %function
|
|
FtlWrite:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mov r6, r2
|
|
sub r2, r1, #64
|
|
mov r4, r1
|
|
cmp r2, #1984
|
|
mov r7, r3
|
|
movcs r2, #0
|
|
movcc r2, #1
|
|
cmp r0, #0
|
|
mov r5, r0
|
|
movne r2, #0
|
|
cmp r2, #0
|
|
beq .L3893
|
|
mov r2, r3
|
|
mov r1, r6
|
|
mov r0, r4
|
|
bl write_loader_lba
|
|
.L3893:
|
|
mov r3, r7
|
|
mov r2, r6
|
|
mov r1, r4
|
|
mov r0, r5
|
|
pop {r4, r5, r6, r7, r8, lr}
|
|
b ftl_write
|
|
.fnend
|
|
.size FtlWrite, .-FtlWrite
|
|
.align 2
|
|
.global rknand_sys_storage_ioctl
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rknand_sys_storage_ioctl, %function
|
|
rknand_sys_storage_ioctl:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 520
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L3955
|
|
push {r4, r5, r6, r7, lr}
|
|
.save {r4, r5, r6, r7, lr}
|
|
mov r4, r1
|
|
.pad #524
|
|
sub sp, sp, #524
|
|
mov r5, r2
|
|
cmp r1, r3
|
|
beq .L3900
|
|
bhi .L3901
|
|
sub r3, r3, #2080
|
|
sub r3, r3, #6
|
|
cmp r1, r3
|
|
beq .L3902
|
|
bhi .L3903
|
|
sub r3, r3, #238
|
|
cmp r1, r3
|
|
beq .L3904
|
|
add r3, r3, #237
|
|
cmp r1, r3
|
|
beq .L3905
|
|
.L3935:
|
|
mvn r4, #21
|
|
b .L3898
|
|
.L3903:
|
|
ldr r3, .L3955+4
|
|
cmp r1, r3
|
|
beq .L3906
|
|
add r3, r3, #1
|
|
cmp r1, r3
|
|
beq .L3907
|
|
sub r3, r3, #124
|
|
cmp r1, r3
|
|
bne .L3935
|
|
ldr r0, .L3955+8
|
|
bl printk
|
|
mov r2, #520
|
|
mov r1, r5
|
|
mov r0, sp
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L3918
|
|
ldr r2, [sp]
|
|
ldr r3, .L3955+12
|
|
cmp r2, r3
|
|
bne .L3915
|
|
ldr r2, [sp, #4]
|
|
cmp r2, #512
|
|
ldrls r1, .L3955+16
|
|
bhi .L3915
|
|
.L3953:
|
|
add r0, sp, #8
|
|
bl memcpy
|
|
b .L3947
|
|
.L3901:
|
|
ldr r3, .L3955+20
|
|
cmp r1, r3
|
|
mov r6, r3
|
|
beq .L3909
|
|
bhi .L3910
|
|
sub r3, r3, #2512
|
|
sub r3, r3, #14
|
|
cmp r1, r3
|
|
beq .L3900
|
|
add r3, r3, #10
|
|
cmp r1, r3
|
|
bne .L3935
|
|
.L3900:
|
|
ldr r3, .L3955+24
|
|
cmp r4, r3
|
|
mov r7, r3
|
|
ldreq r0, .L3955+28
|
|
beq .L3949
|
|
ldr r3, .L3955+32
|
|
cmp r4, r3
|
|
ldreq r0, .L3955+36
|
|
ldrne r0, .L3955+40
|
|
.L3949:
|
|
bl printk
|
|
mov r2, #520
|
|
mov r1, r5
|
|
mov r0, sp
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L3918
|
|
ldr r2, [sp]
|
|
ldr r3, .L3955+44
|
|
cmp r2, r3
|
|
bne .L3952
|
|
ldr r3, .L3955+32
|
|
ldr r6, .L3955+48
|
|
cmp r4, r3
|
|
bne .L3928
|
|
ldr r3, [r6, #2032]
|
|
mov r2, #16
|
|
mov r1, sp
|
|
mov r0, r5
|
|
ldr r3, [r3, #20]
|
|
str r3, [sp, #4]
|
|
strb r3, [sp, #8]
|
|
bl rk_copy_to_user
|
|
cmp r0, #0
|
|
bne .L3952
|
|
.L3919:
|
|
mov r4, #0
|
|
.L3898:
|
|
mov r0, r4
|
|
add sp, sp, #524
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, pc}
|
|
.L3910:
|
|
ldr r3, .L3955+52
|
|
cmp r1, r3
|
|
beq .L3909
|
|
bcc .L3911
|
|
add r3, r3, #1
|
|
cmp r1, r3
|
|
bne .L3935
|
|
.L3911:
|
|
ldr r0, .L3955+56
|
|
bl printk
|
|
mov r2, #520
|
|
mov r1, r5
|
|
mov r0, sp
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L3918
|
|
ldr r2, [sp]
|
|
ldr r3, .L3955+60
|
|
cmp r2, r3
|
|
bne .L3915
|
|
ldr r2, [sp, #4]
|
|
cmp r2, #504
|
|
bhi .L3915
|
|
ldr r3, .L3955+64
|
|
mov r1, sp
|
|
add r2, r2, #8
|
|
cmp r4, r3
|
|
ldr r4, .L3955+48
|
|
bne .L3934
|
|
ldr r0, [r4, #2564]
|
|
bl memcpy
|
|
ldr r1, [r4, #2564]
|
|
mov r0, #2
|
|
b .L3950
|
|
.L3905:
|
|
ldr r0, .L3955+68
|
|
bl printk
|
|
mov r2, #520
|
|
mov r1, r5
|
|
mov r0, sp
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
beq .L3912
|
|
.L3918:
|
|
ldr r0, .L3955+72
|
|
bl printk
|
|
.L3952:
|
|
mvn r4, #13
|
|
b .L3898
|
|
.L3912:
|
|
ldr r2, [sp]
|
|
ldr r3, .L3955+76
|
|
cmp r2, r3
|
|
beq .L3913
|
|
.L3915:
|
|
mvn r4, #0
|
|
.L3914:
|
|
mov r1, r4
|
|
ldr r0, .L3955+80
|
|
bl printk
|
|
b .L3898
|
|
.L3913:
|
|
ldr r3, [sp, #4]
|
|
cmp r3, #512
|
|
bhi .L3915
|
|
ldr r4, .L3955+48
|
|
mov r2, #512
|
|
mov r0, sp
|
|
ldr r1, [r4, #2032]
|
|
bl memcpy
|
|
ldr r2, [r4, #2036]
|
|
ldr r3, .L3955+84
|
|
cmp r2, r3
|
|
beq .L3916
|
|
mov r1, #0
|
|
mov r2, #128
|
|
add r0, sp, #64
|
|
str r1, [sp, #8]
|
|
str r1, [sp, #12]
|
|
bl memset
|
|
.L3916:
|
|
mov r2, #256
|
|
mov r1, #0
|
|
add r0, sp, r2
|
|
str r1, [sp, #16]
|
|
bl memset
|
|
.L3947:
|
|
mov r2, #520
|
|
mov r1, sp
|
|
mov r0, r5
|
|
bl rk_copy_to_user
|
|
cmp r0, #0
|
|
bne .L3952
|
|
.L3951:
|
|
mov r4, #0
|
|
b .L3914
|
|
.L3902:
|
|
ldr r0, .L3955+88
|
|
bl printk
|
|
mov r2, #520
|
|
mov r1, r5
|
|
mov r0, sp
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L3918
|
|
ldr r2, [sp]
|
|
ldr r3, .L3955+76
|
|
cmp r2, r3
|
|
bne .L3915
|
|
ldr r3, [sp, #4]
|
|
cmp r3, #512
|
|
bhi .L3915
|
|
ldr r2, .L3955+48
|
|
ldr r3, .L3955+84
|
|
ldr r1, [r2, #2036]
|
|
cmp r1, r3
|
|
mvnne r4, #1
|
|
bne .L3898
|
|
ldr r3, [sp, #12]
|
|
sub r1, r3, #1
|
|
cmp r1, #127
|
|
mvnhi r4, #2
|
|
bhi .L3898
|
|
ldr r4, [r2, #2032]
|
|
add r1, sp, #64
|
|
str r3, [r4, #12]
|
|
add r0, r4, #64
|
|
ldr r2, [sp, #12]
|
|
bl memcpy
|
|
mov r1, r4
|
|
mov r0, #1
|
|
.L3950:
|
|
bl StorageSysDataStore
|
|
mov r4, r0
|
|
b .L3914
|
|
.L3907:
|
|
ldr r0, .L3955+92
|
|
bl printk
|
|
mov r2, #520
|
|
mov r1, r5
|
|
mov r0, sp
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L3918
|
|
ldr r2, [sp]
|
|
ldr r3, .L3955+96
|
|
cmp r2, r3
|
|
bne .L3915
|
|
ldr r3, [sp, #4]
|
|
cmp r3, #512
|
|
bhi .L3915
|
|
ldr r5, .L3955+48
|
|
ldr r3, [r5, #2040]
|
|
cmp r3, #0
|
|
beq .L3919
|
|
ldr r3, [r5, #2044]
|
|
ldr r2, .L3955+100
|
|
ldr r1, [r3]
|
|
cmp r1, r2
|
|
beq .L3920
|
|
str r2, [r3]
|
|
mov r2, #504
|
|
ldr r3, [r5, #2044]
|
|
str r2, [r3, #4]
|
|
mov r2, #0
|
|
str r2, [r3, #8]
|
|
str r2, [r3, #12]
|
|
.L3920:
|
|
ldr r1, [r5, #2044]
|
|
mov r4, #0
|
|
mov r0, r4
|
|
str r4, [r1, #16]
|
|
bl StorageSysDataStore
|
|
ldr r3, [r5, #2032]
|
|
ldr r2, .L3955+76
|
|
ldr r1, [r3]
|
|
cmp r1, r2
|
|
strne r2, [r3]
|
|
movne r2, #504
|
|
ldrne r3, [r5, #2032]
|
|
ldr r6, [r5, #2032]
|
|
stmibne r3, {r2, r4}
|
|
mov r4, #0
|
|
mov r2, #128
|
|
mov r1, r4
|
|
str r4, [r6, #12]
|
|
add r0, r6, #64
|
|
bl memset
|
|
mov r1, r6
|
|
mov r0, #1
|
|
bl StorageSysDataStore
|
|
str r4, [r5, #2040]
|
|
str r4, [r5, #2036]
|
|
b .L3914
|
|
.L3906:
|
|
ldr r0, .L3955+104
|
|
bl printk
|
|
mov r2, #520
|
|
mov r1, r5
|
|
mov r0, sp
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L3918
|
|
ldr r2, [sp]
|
|
ldr r3, .L3955+108
|
|
cmp r2, r3
|
|
bne .L3915
|
|
ldr r3, [sp, #4]
|
|
cmp r3, #512
|
|
bhi .L3915
|
|
ldr r5, .L3955+48
|
|
ldr r3, [r5, #2040]
|
|
cmp r3, #1
|
|
beq .L3919
|
|
ldr r2, [r5, #2044]
|
|
ldr r3, .L3955+100
|
|
ldr r1, [r2]
|
|
cmp r1, r3
|
|
beq .L3922
|
|
str r3, [r2]
|
|
mov r2, #504
|
|
ldr r3, [r5, #2044]
|
|
str r2, [r3, #4]
|
|
mov r2, #0
|
|
str r2, [r3, #8]
|
|
str r2, [r3, #12]
|
|
.L3922:
|
|
ldr r1, [r5, #2044]
|
|
mov r3, #1
|
|
mov r0, #0
|
|
mov r4, #0
|
|
str r3, [r1, #16]
|
|
bl StorageSysDataStore
|
|
ldr r3, [r5, #2032]
|
|
ldr r2, .L3955+76
|
|
ldr r1, [r3]
|
|
cmp r1, r2
|
|
strne r2, [r3]
|
|
movne r1, #504
|
|
ldrne r3, [r5, #2032]
|
|
movne r2, #0
|
|
ldr r6, [r5, #2032]
|
|
stmibne r3, {r1, r2}
|
|
mov r2, #128
|
|
mov r1, r4
|
|
str r4, [r6, #12]
|
|
add r0, r6, #64
|
|
bl memset
|
|
mov r1, r6
|
|
mov r0, #1
|
|
bl StorageSysDataStore
|
|
mov r3, #1
|
|
str r3, [r5, #2040]
|
|
b .L3914
|
|
.L3928:
|
|
ldr r3, [r6, #2560]
|
|
cmp r3, #10
|
|
bhi .L3952
|
|
ldr r2, [r6, #2032]
|
|
ldr r1, [sp, #4]
|
|
ldr r3, [r2, #24]
|
|
cmp r3, r1
|
|
cmpne r3, #0
|
|
movne r3, #1
|
|
moveq r3, #0
|
|
beq .L3929
|
|
ldr r0, .L3955+112
|
|
bl printk
|
|
ldr r3, [r6, #2560]
|
|
add r3, r3, #1
|
|
str r3, [r6, #2560]
|
|
b .L3952
|
|
.L3929:
|
|
cmp r4, r7
|
|
str r3, [r6, #2560]
|
|
movne r3, #1
|
|
strne r1, [r2, #24]
|
|
streq r3, [r2, #20]
|
|
mov r1, r2
|
|
streq r3, [r2, #24]
|
|
mov r0, #1
|
|
strne r3, [r2, #20]
|
|
bl StorageSysDataStore
|
|
cmn r0, #1
|
|
bne .L3951
|
|
mvn r4, #1
|
|
b .L3914
|
|
.L3909:
|
|
ldr r0, .L3955+116
|
|
bl printk
|
|
mov r2, #520
|
|
mov r1, r5
|
|
mov r0, sp
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L3918
|
|
ldr r2, [sp]
|
|
ldr r3, .L3955+60
|
|
cmp r2, r3
|
|
bne .L3915
|
|
ldr r2, [sp, #4]
|
|
cmp r2, #504
|
|
bhi .L3915
|
|
ldr r3, .L3955+48
|
|
cmp r4, r6
|
|
ldreq r1, [r3, #2564]
|
|
ldrne r1, [r3, #2568]
|
|
add r1, r1, #8
|
|
b .L3953
|
|
.L3934:
|
|
ldr r0, [r4, #2568]
|
|
bl memcpy
|
|
ldr r1, [r4, #2568]
|
|
mov r0, #3
|
|
b .L3950
|
|
.L3904:
|
|
bl rknand_dev_flush
|
|
b .L3951
|
|
.L3956:
|
|
.align 2
|
|
.L3955:
|
|
.word 1074031656
|
|
.word 1074029694
|
|
.word .LC191
|
|
.word 1094995539
|
|
.word .LANCHOR2+2048
|
|
.word 1074034192
|
|
.word 1074031666
|
|
.word .LC192
|
|
.word 1074031676
|
|
.word .LC193
|
|
.word .LC194
|
|
.word 1280262987
|
|
.word .LANCHOR2
|
|
.word 1074034194
|
|
.word .LC197
|
|
.word 1145980246
|
|
.word 1074034193
|
|
.word .LC186
|
|
.word .LC187
|
|
.word 1263358532
|
|
.word .LC198
|
|
.word -1067903959
|
|
.word .LC188
|
|
.word .LC189
|
|
.word 1112753220
|
|
.word 1146313043
|
|
.word .LC190
|
|
.word 1112755781
|
|
.word .LC195
|
|
.word .LC196
|
|
.fnend
|
|
.size rknand_sys_storage_ioctl, .-rknand_sys_storage_ioctl
|
|
.align 2
|
|
.global rk_ftl_storage_sys_init
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_storage_sys_init, %function
|
|
rk_ftl_storage_sys_init:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, lr}
|
|
.save {r4, r5, r6, r7, r8, lr}
|
|
mvn r3, #0
|
|
ldr r4, .L3967
|
|
mov r5, #0
|
|
mov r2, #512
|
|
ldr r1, [r4, #2004]
|
|
add r0, r4, #2048
|
|
str r3, [r4, #2028]
|
|
strb r5, [r4, #2020]
|
|
add r3, r1, #512
|
|
str r1, [r4, #2044]
|
|
str r3, [r4, #2032]
|
|
add r3, r1, #1024
|
|
add r1, r1, #1536
|
|
str r3, [r4, #2564]
|
|
str r5, [r4, #2024]
|
|
str r5, [r4, #2572]
|
|
str r1, [r4, #2568]
|
|
bl ftl_memcpy
|
|
ldr r6, [r4, #2044]
|
|
str r5, [r4, #2036]
|
|
str r5, [r4, #2560]
|
|
ldr r7, [r6, #508]
|
|
ldr r3, [r6, #16]
|
|
cmp r7, r5
|
|
str r3, [r4, #2040]
|
|
beq .L3958
|
|
mov r1, #508
|
|
mov r0, r6
|
|
bl js_hash
|
|
cmp r7, r0
|
|
beq .L3958
|
|
str r5, [r6, #16]
|
|
ldr r0, .L3967+4
|
|
str r5, [r4, #2040]
|
|
bl printk
|
|
.L3958:
|
|
ldr r3, [r4, #2040]
|
|
mov r0, #2
|
|
ldr r1, [r4, #2564]
|
|
cmp r3, #0
|
|
ldrne r3, .L3967+8
|
|
strne r3, [r4, #2036]
|
|
bl StorageSysDataLoad
|
|
ldr r1, [r4, #2568]
|
|
mov r0, #3
|
|
bl StorageSysDataLoad
|
|
pop {r4, r5, r6, r7, r8, lr}
|
|
b rknand_sys_storage_init
|
|
.L3968:
|
|
.align 2
|
|
.L3967:
|
|
.word .LANCHOR2
|
|
.word .LC199
|
|
.word -1067903959
|
|
.fnend
|
|
.size rk_ftl_storage_sys_init, .-rk_ftl_storage_sys_init
|
|
.align 2
|
|
.global StorageSysDataDeInit
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type StorageSysDataDeInit, %function
|
|
StorageSysDataDeInit:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
@ link register save eliminated.
|
|
mov r0, #0
|
|
bx lr
|
|
.fnend
|
|
.size StorageSysDataDeInit, .-StorageSysDataDeInit
|
|
.align 2
|
|
.global rk_ftl_vendor_storage_init
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_vendor_storage_init, %function
|
|
rk_ftl_vendor_storage_init:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, lr}
|
|
mov r0, #65536
|
|
ldr r6, .L3980
|
|
bl ftl_malloc
|
|
cmp r0, #0
|
|
str r0, [r6, #2576]
|
|
beq .L3976
|
|
ldr r10, .L3980+4
|
|
mov r7, #0
|
|
ldr r9, .L3980+8
|
|
mov r4, r7
|
|
mov r8, r7
|
|
.L3974:
|
|
ldr r2, [r6, #2576]
|
|
mov r1, #128
|
|
lsl r0, r8, #7
|
|
bl FlashBootVendorRead
|
|
cmp r0, #0
|
|
bne .L3972
|
|
ldr r1, [r6, #2576]
|
|
mov r0, r10
|
|
add r2, r1, #61440
|
|
ldr r3, [r1, #4]
|
|
ldr r2, [r2, #4092]
|
|
ldr r1, [r1]
|
|
bl printk
|
|
ldr r5, [r6, #2576]
|
|
ldr r3, [r5]
|
|
cmp r3, r9
|
|
bne .L3973
|
|
add r2, r5, #61440
|
|
ldr r3, [r5, #4]
|
|
ldr r2, [r2, #4092]
|
|
cmp r3, r4
|
|
sub r2, r2, r3
|
|
clz r2, r2
|
|
lsr r2, r2, #5
|
|
movls r2, #0
|
|
cmp r2, #0
|
|
movne r7, r8
|
|
movne r4, r3
|
|
.L3973:
|
|
add r8, r8, #1
|
|
cmp r8, #2
|
|
bne .L3974
|
|
cmp r4, #0
|
|
beq .L3975
|
|
mov r2, r5
|
|
mov r1, #128
|
|
lsl r0, r7, #7
|
|
bl FlashBootVendorRead
|
|
cmp r0, #0
|
|
bne .L3972
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L3975:
|
|
mov r2, #65536
|
|
mov r1, r4
|
|
mov r0, r5
|
|
bl memset
|
|
mov r3, #1
|
|
add r2, r5, #61440
|
|
str r3, [r5, #4]
|
|
mov r0, r4
|
|
str r9, [r5]
|
|
str r3, [r2, #4092]
|
|
ldr r3, .L3980+12
|
|
strh r4, [r5, #12] @ movhi
|
|
strh r3, [r5, #14] @ movhi
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L3972:
|
|
ldr r0, [r6, #2576]
|
|
bl kfree
|
|
mov r3, #0
|
|
mvn r0, #0
|
|
str r3, [r6, #2576]
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L3976:
|
|
mvn r0, #11
|
|
pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
|
.L3981:
|
|
.align 2
|
|
.L3980:
|
|
.word .LANCHOR2
|
|
.word .LC200
|
|
.word 1380668996
|
|
.word -1032
|
|
.fnend
|
|
.size rk_ftl_vendor_storage_init, .-rk_ftl_vendor_storage_init
|
|
.align 2
|
|
.global rk_ftl_vendor_read
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_vendor_read, %function
|
|
rk_ftl_vendor_read:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L3992
|
|
ldr ip, [r3, #2576]
|
|
cmp ip, #0
|
|
beq .L3987
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r3, #0
|
|
ldrh r4, [ip, #10]
|
|
.L3984:
|
|
cmp r3, r4
|
|
bcc .L3986
|
|
mvn r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
.L3986:
|
|
add lr, ip, r3, lsl #3
|
|
ldrh r5, [lr, #16]
|
|
cmp r5, r0
|
|
bne .L3985
|
|
ldrh r4, [lr, #20]
|
|
mov r0, r1
|
|
ldrh r1, [lr, #18]
|
|
cmp r4, r2
|
|
movcs r4, r2
|
|
add r1, r1, #1024
|
|
mov r2, r4
|
|
add r1, ip, r1
|
|
bl memcpy
|
|
mov r0, r4
|
|
pop {r4, r5, r6, pc}
|
|
.L3985:
|
|
add r3, r3, #1
|
|
b .L3984
|
|
.L3987:
|
|
mvn r0, #0
|
|
bx lr
|
|
.L3993:
|
|
.align 2
|
|
.L3992:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size rk_ftl_vendor_read, .-rk_ftl_vendor_read
|
|
.align 2
|
|
.global rk_ftl_vendor_write
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_vendor_write, %function
|
|
rk_ftl_vendor_write:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 24
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
ldr r3, .L4015
|
|
push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.save {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
|
.pad #28
|
|
sub sp, sp, #28
|
|
ldr r4, [r3, #2576]
|
|
cmp r4, #0
|
|
beq .L4009
|
|
mov r8, r2
|
|
ldrh r2, [r4, #10]
|
|
add r6, r8, #63
|
|
ldrh r3, [r4, #8]
|
|
mov fp, r1
|
|
bic r6, r6, #63
|
|
mov r7, #0
|
|
str r3, [sp, #4]
|
|
.L3996:
|
|
cmp r7, r2
|
|
bcc .L4004
|
|
ldrh r1, [r4, #14]
|
|
cmp r6, r1
|
|
bhi .L4009
|
|
add r3, r4, r2, lsl #3
|
|
uxth r6, r6
|
|
strh r0, [r3, #16] @ movhi
|
|
ldrh r2, [r4, #12]
|
|
strh r8, [r3, #20] @ movhi
|
|
strh r2, [r3, #18] @ movhi
|
|
add r2, r2, r6
|
|
sub r6, r1, r6
|
|
strh r2, [r4, #12] @ movhi
|
|
strh r6, [r4, #14] @ movhi
|
|
mov r2, r8
|
|
ldrh r0, [r3, #18]
|
|
mov r1, fp
|
|
add r0, r0, #1024
|
|
add r0, r4, r0
|
|
bl memcpy
|
|
ldrh r3, [r4, #10]
|
|
add r3, r3, #1
|
|
strh r3, [r4, #10] @ movhi
|
|
b .L4014
|
|
.L4004:
|
|
add r5, r4, r7, lsl #3
|
|
ldrh r3, [r5, #16]
|
|
cmp r3, r0
|
|
str r3, [sp, #8]
|
|
bne .L3997
|
|
ldrh r1, [r5, #20]
|
|
add r3, r4, #1024
|
|
add r1, r1, #63
|
|
bic r1, r1, #63
|
|
cmp r8, r1
|
|
str r1, [sp, #12]
|
|
bls .L3998
|
|
ldrh r1, [r4, #14]
|
|
cmp r6, r1
|
|
subls r2, r2, #1
|
|
ldrhls r10, [r5, #18]
|
|
strls r2, [sp, #16]
|
|
bls .L3999
|
|
.L4009:
|
|
mvn r0, #0
|
|
b .L3994
|
|
.L4000:
|
|
ldrh r9, [r5, #20]
|
|
add r0, r3, r10
|
|
ldrh r2, [r5, #16]
|
|
add r7, r7, #1
|
|
ldrh r1, [r5, #18]
|
|
strh r9, [r5, #12] @ movhi
|
|
add r9, r9, #63
|
|
bic r9, r9, #63
|
|
strh r2, [r5, #8] @ movhi
|
|
strh r10, [r5, #10] @ movhi
|
|
add r1, r3, r1
|
|
mov r2, r9
|
|
str r3, [sp, #20]
|
|
bl memcpy
|
|
ldr r3, [sp, #20]
|
|
add r10, r10, r9
|
|
.L3999:
|
|
ldr r2, [sp, #16]
|
|
add r5, r5, #8
|
|
cmp r7, r2
|
|
bcc .L4000
|
|
ldrh r2, [sp, #8]
|
|
add r7, r4, r7, lsl #3
|
|
uxth r5, r10
|
|
uxtah r0, r3, r10
|
|
strh r8, [r7, #20] @ movhi
|
|
strh r2, [r7, #16] @ movhi
|
|
mov r1, fp
|
|
strh r5, [r7, #18] @ movhi
|
|
mov r2, r8
|
|
bl memcpy
|
|
uxth r3, r6
|
|
ldrh r6, [r4, #14]
|
|
add r5, r5, r3
|
|
sub r6, r6, r3
|
|
ldr r3, [sp, #12]
|
|
strh r5, [r4, #12] @ movhi
|
|
add r6, r6, r3
|
|
strh r6, [r4, #14] @ movhi
|
|
.L4014:
|
|
ldr r3, [r4, #4]
|
|
add r2, r4, #61440
|
|
mov r1, #128
|
|
add r3, r3, #1
|
|
str r3, [r4, #4]
|
|
str r3, [r2, #4092]
|
|
mov r2, r4
|
|
ldrh r3, [r4, #8]
|
|
add r3, r3, #1
|
|
uxth r3, r3
|
|
cmp r3, #1
|
|
movhi r3, #0
|
|
strh r3, [r4, #8] @ movhi
|
|
ldr r3, [sp, #4]
|
|
lsl r0, r3, #7
|
|
bl FlashBootVendorWrite
|
|
mov r0, #0
|
|
.L3994:
|
|
add sp, sp, #28
|
|
@ sp needed
|
|
pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
|
.L3998:
|
|
ldrh r0, [r5, #18]
|
|
mov r2, r8
|
|
mov r1, fp
|
|
add r0, r3, r0
|
|
bl memcpy
|
|
strh r8, [r5, #20] @ movhi
|
|
b .L4014
|
|
.L3997:
|
|
add r7, r7, #1
|
|
b .L3996
|
|
.L4016:
|
|
.align 2
|
|
.L4015:
|
|
.word .LANCHOR2
|
|
.fnend
|
|
.size rk_ftl_vendor_write, .-rk_ftl_vendor_write
|
|
.align 2
|
|
.global rk_ftl_vendor_storage_ioctl
|
|
.syntax unified
|
|
.arm
|
|
.fpu softvfp
|
|
.type rk_ftl_vendor_storage_ioctl, %function
|
|
rk_ftl_vendor_storage_ioctl:
|
|
.fnstart
|
|
@ args = 0, pretend = 0, frame = 0
|
|
@ frame_needed = 0, uses_anonymous_args = 0
|
|
push {r4, r5, r6, lr}
|
|
.save {r4, r5, r6, lr}
|
|
mov r0, #4096
|
|
mov r5, r2
|
|
mov r6, r1
|
|
bl ftl_malloc
|
|
subs r4, r0, #0
|
|
mvneq r5, #0
|
|
beq .L4017
|
|
ldr r3, .L4033
|
|
cmp r6, r3
|
|
beq .L4020
|
|
add r3, r3, #1
|
|
cmp r6, r3
|
|
beq .L4021
|
|
.L4031:
|
|
mvn r5, #13
|
|
b .L4019
|
|
.L4020:
|
|
mov r2, #8
|
|
mov r1, r5
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L4031
|
|
ldr r2, [r4]
|
|
ldr r3, .L4033+4
|
|
cmp r2, r3
|
|
beq .L4023
|
|
.L4024:
|
|
mvn r5, #0
|
|
.L4019:
|
|
mov r0, r4
|
|
bl kfree
|
|
.L4017:
|
|
mov r0, r5
|
|
pop {r4, r5, r6, pc}
|
|
.L4023:
|
|
ldrh r2, [r4, #6]
|
|
add r1, r4, #8
|
|
ldrh r0, [r4, #4]
|
|
bl rk_ftl_vendor_read
|
|
cmn r0, #1
|
|
beq .L4024
|
|
uxth r2, r0
|
|
strh r0, [r4, #6] @ movhi
|
|
mov r1, r4
|
|
mov r0, r5
|
|
add r2, r2, #8
|
|
bl rk_copy_to_user
|
|
subs r5, r0, #0
|
|
beq .L4019
|
|
b .L4031
|
|
.L4021:
|
|
mov r2, #8
|
|
mov r1, r5
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L4031
|
|
ldr r2, [r4]
|
|
ldr r3, .L4033+4
|
|
cmp r2, r3
|
|
bne .L4024
|
|
ldrh r2, [r4, #6]
|
|
movw r3, #4087
|
|
cmp r2, r3
|
|
bhi .L4024
|
|
add r2, r2, #8
|
|
mov r1, r5
|
|
mov r0, r4
|
|
bl rk_copy_from_user
|
|
cmp r0, #0
|
|
bne .L4031
|
|
ldrh r2, [r4, #6]
|
|
add r1, r4, #8
|
|
ldrh r0, [r4, #4]
|
|
bl rk_ftl_vendor_write
|
|
mov r5, r0
|
|
b .L4019
|
|
.L4034:
|
|
.align 2
|
|
.L4033:
|
|
.word 1074034177
|
|
.word 1448232273
|
|
.fnend
|
|
.size rk_ftl_vendor_storage_ioctl, .-rk_ftl_vendor_storage_ioctl
|
|
.global SecureBootUnlockTryCount
|
|
.global SecureBootCheckOK
|
|
.global SecureBootEn
|
|
.global gpVendor1Info
|
|
.global gpVendor0Info
|
|
.global g_idb_buffer
|
|
.global gSnSectorData
|
|
.global gpDrmKeyInfo
|
|
.global gpBootConfig
|
|
.global ftl_dma32_buffer_size
|
|
.global ftl_dma32_buffer
|
|
.global gLoaderBootInfo
|
|
.global RK29_NANDC1_REG_BASE
|
|
.global RK29_NANDC_REG_BASE
|
|
.global gc_ink_free_return_value
|
|
.global check_valid_page_count_table
|
|
.global FtlUpdateVaildLpnCount
|
|
.global g_ect_tbl_power_up_flush
|
|
.global last_cache_match_count
|
|
.global power_up_flag
|
|
.global g_LowFormat
|
|
.global gFtlInitStatus
|
|
.global DeviceCapacity
|
|
.global ToshibaRefValue
|
|
.global Toshiba15RefValue
|
|
.global ToshibaA19RefValue
|
|
.global SamsungRefValue
|
|
.global refValueDefault
|
|
.global FbbtBlk
|
|
.global random_seed
|
|
.global gSlcNandParaInfo
|
|
.global gNandParaInfo
|
|
.global g_page_map_check_enable
|
|
.global g_power_lost_ecc_error_blk
|
|
.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 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_all_blk_used_slc_mode
|
|
.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_refresh_block_temp_tbl
|
|
.global g_free_slc_blk_num
|
|
.global g_gc_refresh_block_temp_num
|
|
.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_3
|
|
.global g_gc_next_blk_2
|
|
.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_check_table
|
|
.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_blk_mode_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 g_wr_page_num
|
|
.global req_wr_io
|
|
.global c_wr_page_buf_num
|
|
.global p_wr_io_data_buf
|
|
.global p_wr_io_spare_buf
|
|
.global p_plane_order_table
|
|
.global g_req_cache
|
|
.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_flash_read_only_en
|
|
.global g_inkDie_check_enable
|
|
.global g_SlcPartLbaEndSector
|
|
.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
|
|
.global c_ftl_nand_planes_per_die
|
|
.global c_ftl_nand_die_num
|
|
.global c_ftl_nand_type
|
|
.global gMasterTempBuf
|
|
.global gMasterInfo
|
|
.global gNandcDumpWriteEn
|
|
.global gToggleModeClkDiv
|
|
.global gBootDdrMode
|
|
.global gNandcEccBits
|
|
.global gpNandc1
|
|
.global gpNandc
|
|
.global g_nandc_version_data
|
|
.global gNandcVer
|
|
.global gNandChipMap
|
|
.global gNandIDataBuf
|
|
.global idb_flash_slc_mode
|
|
.global FlashDdrTunningReadCount
|
|
.global FlashWaitBusyScheduleEn
|
|
.global gNandPhyInfo
|
|
.global gFlashProgCheckSpareBuffer
|
|
.global gFlashProgCheckBuffer
|
|
.global gFlashSpareBuffer
|
|
.global gFlashPageBuffer1
|
|
.global gFlashPageBuffer0
|
|
.global gpFlashSaveInfo
|
|
.global gReadRetryInfo
|
|
.global gpNandParaInfo
|
|
.global gNandOptPara
|
|
.global g_nand_ecc_en
|
|
.global g_slc2KBNand
|
|
.global g_maxRetryCount
|
|
.global g_maxRegNum
|
|
.global g_retryMode
|
|
.global gNandIDBResBlkNumSaveInFlash
|
|
.global gNandIDBResBlkNum
|
|
.global gNandFlashResEndPageAddr
|
|
.global gNandFlashInfoBlockAddr
|
|
.global gNandFlashIdbBlockAddr
|
|
.global gNandFlashInfoBlockEcc
|
|
.global gNandFlashIDBEccBits
|
|
.global gNandFlashEccBits
|
|
.global gNandRandomizer
|
|
.global gBlockPageAlignSize
|
|
.global gTotleBlock
|
|
.global gNandMaxChip
|
|
.global gNandMaxDie
|
|
.global gFlashInterfaceMode
|
|
.global gFlashCurMode
|
|
.global gFlashSlcMode
|
|
.global gFlashOnfiModeEn
|
|
.global gFlashToggleModeEn
|
|
.global gFlashSdrModeEn
|
|
.global gMultiPageProgEn
|
|
.global gMultiPageReadEn
|
|
.global gpReadRetrial
|
|
.global mlcPageToSlcPageTbl
|
|
.global slcPageToMlcPageTbl
|
|
.global DieAddrs
|
|
.global gDieOp
|
|
.global DieCsIndex
|
|
.global IDByte
|
|
.global read_retry_cur_offset
|
|
.section .rodata
|
|
.set .LANCHOR3,. + 0
|
|
.type __func__.23812, %object
|
|
.size __func__.23812, 11
|
|
__func__.23812:
|
|
.ascii "FtlMemInit\000"
|
|
.type samsung_14nm_slc_rr, %object
|
|
.size samsung_14nm_slc_rr, 26
|
|
samsung_14nm_slc_rr:
|
|
.byte 0
|
|
.byte 10
|
|
.byte -10
|
|
.byte 20
|
|
.byte -20
|
|
.byte 30
|
|
.byte -30
|
|
.byte 40
|
|
.byte -40
|
|
.byte 50
|
|
.byte -50
|
|
.byte 60
|
|
.byte -60
|
|
.byte -70
|
|
.byte -80
|
|
.byte -90
|
|
.byte -100
|
|
.byte -110
|
|
.byte -120
|
|
.byte -9
|
|
.byte 70
|
|
.byte 80
|
|
.byte 90
|
|
.byte -125
|
|
.byte -115
|
|
.byte 100
|
|
.type samsung_14nm_mlc_rr, %object
|
|
.size samsung_14nm_mlc_rr, 104
|
|
samsung_14nm_mlc_rr:
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte -4
|
|
.byte 3
|
|
.byte -4
|
|
.byte -6
|
|
.byte 6
|
|
.byte 0
|
|
.byte 6
|
|
.byte -10
|
|
.byte -10
|
|
.byte 4
|
|
.byte -10
|
|
.byte 16
|
|
.byte 12
|
|
.byte -4
|
|
.byte 12
|
|
.byte 8
|
|
.byte -16
|
|
.byte 10
|
|
.byte -16
|
|
.byte 24
|
|
.byte 18
|
|
.byte -14
|
|
.byte 18
|
|
.byte -4
|
|
.byte -22
|
|
.byte -16
|
|
.byte -22
|
|
.byte -8
|
|
.byte 24
|
|
.byte -9
|
|
.byte 24
|
|
.byte 8
|
|
.byte -28
|
|
.byte -4
|
|
.byte -28
|
|
.byte 16
|
|
.byte 30
|
|
.byte 10
|
|
.byte 30
|
|
.byte 10
|
|
.byte -34
|
|
.byte 6
|
|
.byte -34
|
|
.byte 0
|
|
.byte 36
|
|
.byte -8
|
|
.byte 36
|
|
.byte -8
|
|
.byte -40
|
|
.byte -2
|
|
.byte -40
|
|
.byte -20
|
|
.byte -46
|
|
.byte -4
|
|
.byte -46
|
|
.byte -30
|
|
.byte 3
|
|
.byte 0
|
|
.byte 3
|
|
.byte -3
|
|
.byte -2
|
|
.byte -4
|
|
.byte -2
|
|
.byte -6
|
|
.byte -4
|
|
.byte -4
|
|
.byte -4
|
|
.byte -10
|
|
.byte -6
|
|
.byte -8
|
|
.byte -6
|
|
.byte -14
|
|
.byte -9
|
|
.byte -8
|
|
.byte -9
|
|
.byte -18
|
|
.byte -52
|
|
.byte 22
|
|
.byte -52
|
|
.byte 10
|
|
.byte 42
|
|
.byte 4
|
|
.byte 42
|
|
.byte 4
|
|
.byte 48
|
|
.byte -9
|
|
.byte 48
|
|
.byte 4
|
|
.byte -58
|
|
.byte 12
|
|
.byte -58
|
|
.byte 0
|
|
.byte -64
|
|
.byte -24
|
|
.byte -64
|
|
.byte -6
|
|
.byte 9
|
|
.byte 18
|
|
.byte 9
|
|
.byte 8
|
|
.type __func__.24591, %object
|
|
.size __func__.24591, 17
|
|
__func__.24591:
|
|
.ascii "FtlDumpBlockInfo\000"
|
|
.type __func__.24610, %object
|
|
.size __func__.24610, 16
|
|
__func__.24610:
|
|
.ascii "FtlScanAllBlock\000"
|
|
.type __func__.24878, %object
|
|
.size __func__.24878, 17
|
|
__func__.24878:
|
|
.ascii "ftl_scan_all_ppa\000"
|
|
.type __func__.24559, %object
|
|
.size __func__.24559, 12
|
|
__func__.24559:
|
|
.ascii "FtlCheckVpc\000"
|
|
.type __func__.24858, %object
|
|
.size __func__.24858, 21
|
|
__func__.24858:
|
|
.ascii "FtlVpcCheckAndModify\000"
|
|
.type __func__.23885, %object
|
|
.size __func__.23885, 8
|
|
__func__.23885:
|
|
.ascii "FtlInit\000"
|
|
.data
|
|
.align 2
|
|
.set .LANCHOR1,. + 0
|
|
.type random_seed, %object
|
|
.size random_seed, 256
|
|
random_seed:
|
|
.short 22378
|
|
.short 1512
|
|
.short 25245
|
|
.short 17827
|
|
.short 25756
|
|
.short 19440
|
|
.short 9026
|
|
.short 10030
|
|
.short 29528
|
|
.short 20467
|
|
.short 29676
|
|
.short 24432
|
|
.short 31328
|
|
.short 6872
|
|
.short 13426
|
|
.short 13842
|
|
.short 8783
|
|
.short 1108
|
|
.short 782
|
|
.short 28837
|
|
.short 30729
|
|
.short 9505
|
|
.short 18676
|
|
.short 23085
|
|
.short 18730
|
|
.short 1085
|
|
.short 32609
|
|
.short 14697
|
|
.short 20858
|
|
.short 15170
|
|
.short 30365
|
|
.short 1607
|
|
.short 32298
|
|
.short 4995
|
|
.short 18905
|
|
.short 1976
|
|
.short 9592
|
|
.short 20204
|
|
.short 17443
|
|
.short 13615
|
|
.short 23330
|
|
.short 29369
|
|
.short 13947
|
|
.short 9398
|
|
.short 32398
|
|
.short 8984
|
|
.short 27600
|
|
.short 21785
|
|
.short 6019
|
|
.short 6311
|
|
.short 31598
|
|
.short 30210
|
|
.short 19327
|
|
.short 13896
|
|
.short 11347
|
|
.short 27545
|
|
.short 3107
|
|
.short 26575
|
|
.short 32270
|
|
.short 19852
|
|
.short 20601
|
|
.short 8349
|
|
.short 9290
|
|
.short 29819
|
|
.short 13579
|
|
.short 3661
|
|
.short 28676
|
|
.short 27331
|
|
.short 32574
|
|
.short 8693
|
|
.short 31253
|
|
.short 9081
|
|
.short 5399
|
|
.short 6842
|
|
.short 20087
|
|
.short 5537
|
|
.short 1274
|
|
.short 11617
|
|
.short 9530
|
|
.short 4866
|
|
.short 8035
|
|
.short 23219
|
|
.short 1178
|
|
.short 23272
|
|
.short 7383
|
|
.short 18944
|
|
.short 12488
|
|
.short 12871
|
|
.short 29340
|
|
.short 20532
|
|
.short 11022
|
|
.short 22514
|
|
.short 228
|
|
.short 22363
|
|
.short 24978
|
|
.short 14584
|
|
.short 12138
|
|
.short 3092
|
|
.short 17916
|
|
.short 16863
|
|
.short 14554
|
|
.short 31457
|
|
.short 29474
|
|
.short 25311
|
|
.short 24121
|
|
.short 3684
|
|
.short 28037
|
|
.short 22865
|
|
.short 22839
|
|
.short 25217
|
|
.short 13217
|
|
.short 27186
|
|
.short 14938
|
|
.short 11180
|
|
.short 29754
|
|
.short 24180
|
|
.short 15150
|
|
.short 32455
|
|
.short 20434
|
|
.short 23848
|
|
.short 29983
|
|
.short 16120
|
|
.short 14769
|
|
.short 20041
|
|
.short 29803
|
|
.short 28406
|
|
.short 17598
|
|
.short 28087
|
|
.type ToshibaA19RefValue, %object
|
|
.size ToshibaA19RefValue, 45
|
|
ToshibaA19RefValue:
|
|
.byte 4
|
|
.byte 5
|
|
.byte 6
|
|
.byte 7
|
|
.byte 13
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 4
|
|
.byte 4
|
|
.byte 124
|
|
.byte 126
|
|
.byte 0
|
|
.byte 0
|
|
.byte 124
|
|
.byte 120
|
|
.byte 120
|
|
.byte 0
|
|
.byte 124
|
|
.byte 118
|
|
.byte 116
|
|
.byte 114
|
|
.byte 0
|
|
.byte 8
|
|
.byte 8
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 11
|
|
.byte 126
|
|
.byte 118
|
|
.byte 116
|
|
.byte 0
|
|
.byte 16
|
|
.byte 118
|
|
.byte 114
|
|
.byte 112
|
|
.byte 0
|
|
.byte 2
|
|
.byte 0
|
|
.byte 126
|
|
.byte 124
|
|
.byte 0
|
|
.type Toshiba15RefValue, %object
|
|
.size Toshiba15RefValue, 95
|
|
Toshiba15RefValue:
|
|
.byte 4
|
|
.byte 5
|
|
.byte 6
|
|
.byte 7
|
|
.byte 13
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 2
|
|
.byte 4
|
|
.byte 2
|
|
.byte 0
|
|
.byte 0
|
|
.byte 8
|
|
.byte 8
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 124
|
|
.byte 0
|
|
.byte 124
|
|
.byte 124
|
|
.byte 0
|
|
.byte 122
|
|
.byte 0
|
|
.byte 122
|
|
.byte 122
|
|
.byte 0
|
|
.byte 11
|
|
.byte 126
|
|
.byte 118
|
|
.byte 116
|
|
.byte 0
|
|
.byte 120
|
|
.byte 2
|
|
.byte 120
|
|
.byte 122
|
|
.byte 0
|
|
.byte 126
|
|
.byte 4
|
|
.byte 126
|
|
.byte 122
|
|
.byte 0
|
|
.byte 16
|
|
.byte 118
|
|
.byte 114
|
|
.byte 112
|
|
.byte 0
|
|
.byte 118
|
|
.byte 4
|
|
.byte 118
|
|
.byte 120
|
|
.byte 0
|
|
.byte 4
|
|
.byte 4
|
|
.byte 4
|
|
.byte 118
|
|
.byte 0
|
|
.byte 2
|
|
.byte 0
|
|
.byte 126
|
|
.byte 124
|
|
.byte 0
|
|
.byte 6
|
|
.byte 10
|
|
.byte 6
|
|
.byte 2
|
|
.byte 0
|
|
.byte 116
|
|
.byte 124
|
|
.byte 116
|
|
.byte 118
|
|
.byte 0
|
|
.byte 4
|
|
.byte 4
|
|
.byte 124
|
|
.byte 126
|
|
.byte 0
|
|
.byte 0
|
|
.byte 124
|
|
.byte 120
|
|
.byte 120
|
|
.byte 0
|
|
.byte 124
|
|
.byte 118
|
|
.byte 116
|
|
.byte 114
|
|
.byte 0
|
|
.type ToshibaRefValue, %object
|
|
.size ToshibaRefValue, 8
|
|
ToshibaRefValue:
|
|
.byte 0
|
|
.byte 4
|
|
.byte 124
|
|
.byte 120
|
|
.byte 116
|
|
.byte 8
|
|
.byte 12
|
|
.byte 112
|
|
.type SamsungRefValue, %object
|
|
.size SamsungRefValue, 64
|
|
SamsungRefValue:
|
|
.byte -89
|
|
.byte -92
|
|
.byte -91
|
|
.byte -90
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 5
|
|
.byte 10
|
|
.byte 0
|
|
.byte 0
|
|
.byte 40
|
|
.byte 0
|
|
.byte -20
|
|
.byte -40
|
|
.byte -19
|
|
.byte -11
|
|
.byte -19
|
|
.byte -26
|
|
.byte 10
|
|
.byte 15
|
|
.byte 5
|
|
.byte 0
|
|
.byte 15
|
|
.byte 10
|
|
.byte -5
|
|
.byte -20
|
|
.byte -24
|
|
.byte -17
|
|
.byte -24
|
|
.byte -36
|
|
.byte -15
|
|
.byte -5
|
|
.byte -2
|
|
.byte -16
|
|
.byte 10
|
|
.byte 0
|
|
.byte -5
|
|
.byte -20
|
|
.byte -48
|
|
.byte -30
|
|
.byte -48
|
|
.byte -62
|
|
.byte 20
|
|
.byte 15
|
|
.byte -5
|
|
.byte -20
|
|
.byte -24
|
|
.byte -5
|
|
.byte -24
|
|
.byte -36
|
|
.byte 30
|
|
.byte 20
|
|
.byte -5
|
|
.byte -20
|
|
.byte -5
|
|
.byte -1
|
|
.byte -5
|
|
.byte -8
|
|
.byte 7
|
|
.byte 12
|
|
.byte 2
|
|
.byte 0
|
|
.type gNandParaInfo, %object
|
|
.size gNandParaInfo, 32
|
|
gNandParaInfo:
|
|
.byte 0
|
|
.byte 0
|
|
.space 5
|
|
.byte 0
|
|
.byte 1
|
|
.byte 8
|
|
.short 128
|
|
.byte 2
|
|
.byte 1
|
|
.short 2048
|
|
.short 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.type gFtlInitStatus, %object
|
|
.size gFtlInitStatus, 4
|
|
gFtlInitStatus:
|
|
.word -1
|
|
.type NandFlashParaTbl, %object
|
|
.size NandFlashParaTbl, 2752
|
|
NandFlashParaTbl:
|
|
.byte 6
|
|
.byte 44
|
|
.byte 100
|
|
.byte 68
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 68
|
|
.byte 68
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1064
|
|
.short 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 104
|
|
.byte 4
|
|
.byte 74
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -120
|
|
.byte 4
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -88
|
|
.byte 5
|
|
.byte -53
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 2
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 104
|
|
.byte 4
|
|
.byte 70
|
|
.byte -119
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 72
|
|
.byte 4
|
|
.byte 74
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1024
|
|
.short 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -124
|
|
.byte 100
|
|
.byte 60
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 2
|
|
.short 1024
|
|
.short 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 100
|
|
.byte 84
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 2
|
|
.short 1024
|
|
.short 479
|
|
.byte 4
|
|
.byte 18
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -41
|
|
.byte -108
|
|
.byte 62
|
|
.byte -124
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.short 128
|
|
.byte 2
|
|
.byte 2
|
|
.short 4096
|
|
.short 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 72
|
|
.byte 4
|
|
.byte 70
|
|
.byte -123
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1024
|
|
.short 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -120
|
|
.byte 5
|
|
.byte -58
|
|
.byte -119
|
|
.byte 0
|
|
.byte 4
|
|
.byte 2
|
|
.byte 8
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -120
|
|
.byte 36
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 287
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte 104
|
|
.byte 0
|
|
.byte 39
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 16
|
|
.short 128
|
|
.byte 1
|
|
.byte 2
|
|
.short 2048
|
|
.short 287
|
|
.byte 0
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte 100
|
|
.byte 100
|
|
.byte 86
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 24
|
|
.short 512
|
|
.byte 2
|
|
.byte 2
|
|
.short 700
|
|
.short 479
|
|
.byte 4
|
|
.byte 18
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -124
|
|
.byte -59
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 2
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -43
|
|
.byte -47
|
|
.byte -90
|
|
.byte 104
|
|
.byte 0
|
|
.byte 4
|
|
.byte 2
|
|
.byte 8
|
|
.short 64
|
|
.byte 1
|
|
.byte 2
|
|
.short 2048
|
|
.short 279
|
|
.byte 0
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -36
|
|
.byte -112
|
|
.byte -90
|
|
.byte 84
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 8
|
|
.short 64
|
|
.byte 1
|
|
.byte 2
|
|
.short 1024
|
|
.short 279
|
|
.byte 0
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte 100
|
|
.byte 100
|
|
.byte 84
|
|
.byte -92
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 1
|
|
.short 1024
|
|
.short 479
|
|
.byte 4
|
|
.byte 18
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 68
|
|
.byte 50
|
|
.byte -86
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 1
|
|
.short 2184
|
|
.short 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte 100
|
|
.byte 68
|
|
.byte 50
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 1
|
|
.short 1048
|
|
.short 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte 100
|
|
.byte 100
|
|
.byte 60
|
|
.byte -91
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 1
|
|
.short 1044
|
|
.short 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 68
|
|
.byte 50
|
|
.byte -86
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 1
|
|
.short 2184
|
|
.short 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 4
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 68
|
|
.byte 52
|
|
.byte -86
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 1
|
|
.short 2184
|
|
.short 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 4
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte -60
|
|
.byte 52
|
|
.byte -86
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 1
|
|
.short 2184
|
|
.short 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 68
|
|
.byte 52
|
|
.byte -92
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 1
|
|
.short 2184
|
|
.short 1479
|
|
.byte 5
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte 44
|
|
.byte -124
|
|
.byte 100
|
|
.byte 60
|
|
.byte -87
|
|
.byte 0
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 2
|
|
.short 1024
|
|
.short 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 44
|
|
.byte -92
|
|
.byte 100
|
|
.byte 50
|
|
.byte -86
|
|
.byte 4
|
|
.byte 4
|
|
.byte 1
|
|
.byte 32
|
|
.short 1024
|
|
.byte 2
|
|
.byte 1
|
|
.short 2192
|
|
.short 1479
|
|
.byte 10
|
|
.byte 19
|
|
.byte 60
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 4
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte -108
|
|
.byte -46
|
|
.byte 4
|
|
.byte 67
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 473
|
|
.byte 1
|
|
.byte 1
|
|
.byte 24
|
|
.byte 32
|
|
.byte 4
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -41
|
|
.byte -108
|
|
.byte -38
|
|
.byte 116
|
|
.byte -61
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1024
|
|
.short 473
|
|
.byte 1
|
|
.byte 2
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -41
|
|
.byte -108
|
|
.byte -111
|
|
.byte 96
|
|
.byte 68
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1046
|
|
.short 473
|
|
.byte 1
|
|
.byte 3
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte -108
|
|
.byte -38
|
|
.byte 116
|
|
.byte -60
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2090
|
|
.short 473
|
|
.byte 1
|
|
.byte 4
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte -108
|
|
.byte -21
|
|
.byte 116
|
|
.byte 68
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1066
|
|
.short 473
|
|
.byte 1
|
|
.byte 7
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -43
|
|
.byte -108
|
|
.byte -38
|
|
.byte 116
|
|
.byte -60
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 530
|
|
.short 473
|
|
.byte 1
|
|
.byte 3
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -41
|
|
.byte -108
|
|
.byte -102
|
|
.byte 116
|
|
.byte 66
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1024
|
|
.short 281
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 4
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte 20
|
|
.byte -89
|
|
.byte 66
|
|
.byte 74
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1060
|
|
.short 473
|
|
.byte 2
|
|
.byte 5
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -41
|
|
.byte 20
|
|
.byte -98
|
|
.byte 52
|
|
.byte 74
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1056
|
|
.short 473
|
|
.byte 2
|
|
.byte 5
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte -108
|
|
.byte -89
|
|
.byte 66
|
|
.byte 72
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1060
|
|
.short 473
|
|
.byte 2
|
|
.byte 5
|
|
.byte 40
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -34
|
|
.byte 20
|
|
.byte -85
|
|
.byte 66
|
|
.byte 74
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1056
|
|
.short 473
|
|
.byte 2
|
|
.byte 6
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte 58
|
|
.byte 20
|
|
.byte -85
|
|
.byte 66
|
|
.byte 74
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2092
|
|
.short 473
|
|
.byte 2
|
|
.byte 5
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte -43
|
|
.byte -108
|
|
.byte -102
|
|
.byte 116
|
|
.byte 66
|
|
.byte 2
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 1
|
|
.short 1024
|
|
.short 273
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 4
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -83
|
|
.byte 58
|
|
.byte 20
|
|
.byte 3
|
|
.byte 8
|
|
.byte 80
|
|
.byte 2
|
|
.byte 1
|
|
.byte 32
|
|
.short 388
|
|
.byte 2
|
|
.byte 2
|
|
.short 1362
|
|
.short 473
|
|
.byte 9
|
|
.byte 8
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte 100
|
|
.byte 68
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte -120
|
|
.byte 36
|
|
.byte 75
|
|
.byte -87
|
|
.byte -124
|
|
.byte 7
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 479
|
|
.byte 3
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte -120
|
|
.byte 36
|
|
.byte 75
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte 104
|
|
.byte 36
|
|
.byte 74
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 8
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte 104
|
|
.byte 4
|
|
.byte 74
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 8
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte -41
|
|
.byte -108
|
|
.byte 62
|
|
.byte -124
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 8
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte 104
|
|
.byte 4
|
|
.byte 70
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 8
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 279
|
|
.byte 1
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte -119
|
|
.byte 100
|
|
.byte 100
|
|
.byte 60
|
|
.byte -95
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 1
|
|
.short 1024
|
|
.short 455
|
|
.byte 4
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte -119
|
|
.byte -124
|
|
.byte 100
|
|
.byte 60
|
|
.byte -91
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 32
|
|
.short 512
|
|
.byte 2
|
|
.byte 2
|
|
.short 1024
|
|
.short 455
|
|
.byte 4
|
|
.byte 17
|
|
.byte 40
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -119
|
|
.byte -120
|
|
.byte 36
|
|
.byte 59
|
|
.byte -87
|
|
.byte 0
|
|
.byte 7
|
|
.byte 1
|
|
.byte 16
|
|
.short 192
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 279
|
|
.byte 12
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 87
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 1
|
|
.short 1060
|
|
.short 1473
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 87
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 1
|
|
.short 2092
|
|
.short 1473
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte 58
|
|
.byte -123
|
|
.byte -109
|
|
.byte 118
|
|
.byte 87
|
|
.byte 1
|
|
.byte 2
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 1
|
|
.short 2092
|
|
.short 1505
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -43
|
|
.byte -124
|
|
.byte 50
|
|
.byte 114
|
|
.byte 86
|
|
.byte 1
|
|
.byte 1
|
|
.byte 16
|
|
.short 128
|
|
.byte 2
|
|
.byte 1
|
|
.short 2056
|
|
.short 1473
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -108
|
|
.byte 50
|
|
.byte 118
|
|
.byte 86
|
|
.byte 1
|
|
.byte 1
|
|
.byte 16
|
|
.short 128
|
|
.byte 2
|
|
.byte 2
|
|
.short 2058
|
|
.short 1489
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -126
|
|
.byte 118
|
|
.byte 86
|
|
.byte 1
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2062
|
|
.short 1489
|
|
.byte 1
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 80
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1066
|
|
.short 1497
|
|
.byte 2
|
|
.byte 34
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte 58
|
|
.byte -107
|
|
.byte -109
|
|
.byte 122
|
|
.byte 80
|
|
.byte 1
|
|
.byte 2
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1066
|
|
.short 1497
|
|
.byte 2
|
|
.byte 34
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -108
|
|
.byte 50
|
|
.byte 118
|
|
.byte 85
|
|
.byte 1
|
|
.byte 1
|
|
.byte 16
|
|
.short 128
|
|
.byte 2
|
|
.byte 2
|
|
.short 2050
|
|
.short 401
|
|
.byte 2
|
|
.byte 0
|
|
.byte 24
|
|
.byte 32
|
|
.byte 1
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 87
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1058
|
|
.short 1497
|
|
.byte 2
|
|
.byte 33
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 80
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 1
|
|
.short 1060
|
|
.short 1473
|
|
.byte 2
|
|
.byte 34
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 81
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1074
|
|
.short 1497
|
|
.byte 2
|
|
.byte 35
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte 58
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 81
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2106
|
|
.short 1497
|
|
.byte 2
|
|
.byte 35
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 81
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 1
|
|
.short 1056
|
|
.short 1497
|
|
.byte 2
|
|
.byte 35
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -104
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte -47
|
|
.byte 1
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1074
|
|
.short 1497
|
|
.byte 2
|
|
.byte 35
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 87
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1058
|
|
.short 1497
|
|
.byte 2
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 87
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 1
|
|
.short 1060
|
|
.short 1473
|
|
.byte 2
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 2
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -92
|
|
.byte -126
|
|
.byte 118
|
|
.byte 86
|
|
.byte 8
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2082
|
|
.short 473
|
|
.byte 1
|
|
.byte 65
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 80
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1066
|
|
.short 1497
|
|
.byte 2
|
|
.byte 67
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -41
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 80
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 1
|
|
.short 1060
|
|
.short 1473
|
|
.byte 2
|
|
.byte 67
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -92
|
|
.byte -126
|
|
.byte 118
|
|
.byte -41
|
|
.byte 8
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2090
|
|
.short 1241
|
|
.byte 1
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -124
|
|
.byte -109
|
|
.byte 114
|
|
.byte 87
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 1
|
|
.short 2092
|
|
.short 1473
|
|
.byte 2
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte 58
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 81
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2106
|
|
.short 473
|
|
.byte 2
|
|
.byte 68
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte 81
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1074
|
|
.short 473
|
|
.byte 2
|
|
.byte 68
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 4
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte 58
|
|
.byte -92
|
|
.byte -109
|
|
.byte 122
|
|
.byte 80
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2138
|
|
.short 1497
|
|
.byte 2
|
|
.byte 0
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -126
|
|
.byte 118
|
|
.byte 86
|
|
.byte 8
|
|
.byte 1
|
|
.byte 16
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 2062
|
|
.short 473
|
|
.byte 1
|
|
.byte 0
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte 69
|
|
.byte -34
|
|
.byte -108
|
|
.byte -109
|
|
.byte 118
|
|
.byte -41
|
|
.byte 8
|
|
.byte 1
|
|
.byte 32
|
|
.short 256
|
|
.byte 2
|
|
.byte 2
|
|
.short 1058
|
|
.short 1497
|
|
.byte 2
|
|
.byte 66
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 5
|
|
.byte -20
|
|
.byte -41
|
|
.byte -108
|
|
.byte 126
|
|
.byte 100
|
|
.byte 68
|
|
.byte 0
|
|
.byte 1
|
|
.byte 16
|
|
.short 128
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 473
|
|
.byte 2
|
|
.byte 49
|
|
.byte 60
|
|
.byte 36
|
|
.byte 3
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -34
|
|
.byte -43
|
|
.byte 126
|
|
.byte 104
|
|
.byte 68
|
|
.byte 0
|
|
.byte 2
|
|
.byte 16
|
|
.short 128
|
|
.byte 2
|
|
.byte 2
|
|
.short 2048
|
|
.short 505
|
|
.byte 2
|
|
.byte 49
|
|
.byte 60
|
|
.byte 36
|
|
.byte 3
|
|
.byte 0
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -41
|
|
.byte -108
|
|
.byte 122
|
|
.byte 84
|
|
.byte 67
|
|
.byte 0
|
|
.byte 1
|
|
.byte 16
|
|
.short 128
|
|
.byte 2
|
|
.byte 2
|
|
.short 2076
|
|
.short 409
|
|
.byte 2
|
|
.byte 0
|
|
.byte 40
|
|
.byte 36
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -34
|
|
.byte -43
|
|
.byte 122
|
|
.byte 88
|
|
.byte 67
|
|
.byte 0
|
|
.byte 2
|
|
.byte 16
|
|
.short 128
|
|
.byte 2
|
|
.byte 2
|
|
.short 2076
|
|
.short 441
|
|
.byte 2
|
|
.byte 0
|
|
.byte 40
|
|
.byte 36
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -43
|
|
.byte -108
|
|
.byte 118
|
|
.byte 84
|
|
.byte 67
|
|
.byte 0
|
|
.byte 1
|
|
.byte 16
|
|
.short 128
|
|
.byte 2
|
|
.byte 2
|
|
.short 1038
|
|
.short 281
|
|
.byte 2
|
|
.byte 0
|
|
.byte 24
|
|
.byte 36
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -41
|
|
.byte 20
|
|
.byte 118
|
|
.byte 84
|
|
.byte -62
|
|
.byte 0
|
|
.byte 1
|
|
.byte 16
|
|
.short 128
|
|
.byte 2
|
|
.byte 2
|
|
.short 2076
|
|
.short 1169
|
|
.byte 2
|
|
.byte 0
|
|
.byte 24
|
|
.byte 40
|
|
.byte 3
|
|
.byte 1
|
|
.byte 3
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.byte 6
|
|
.byte -20
|
|
.byte -34
|
|
.byte -108
|
|
.byte -61
|
|
.byte -92
|
|
.byte -54
|
|
.byte 0
|
|
.byte 1
|
|
.byte 32
|
|
.short 792
|
|
.byte 2
|
|
.byte 1
|
|
.short 688
|
|
.short 1217
|
|
.byte 11
|
|
.byte 50
|
|
.byte 40
|
|
.byte 32
|
|
.byte 3
|
|
.byte 1
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.space 4
|
|
.type NandOptPara, %object
|
|
.size NandOptPara, 128
|
|
NandOptPara:
|
|
.byte 1
|
|
.byte 0
|
|
.byte 49
|
|
.byte 63
|
|
.byte 0
|
|
.byte 49
|
|
.byte -128
|
|
.byte 21
|
|
.byte 0
|
|
.byte 50
|
|
.byte 17
|
|
.byte -128
|
|
.byte 112
|
|
.byte 120
|
|
.byte 120
|
|
.byte 3
|
|
.byte 1
|
|
.byte 0
|
|
.space 14
|
|
.byte 2
|
|
.byte 0
|
|
.byte 49
|
|
.byte 63
|
|
.byte 0
|
|
.byte 49
|
|
.byte -128
|
|
.byte 21
|
|
.byte 0
|
|
.byte 0
|
|
.byte 17
|
|
.byte -127
|
|
.byte 112
|
|
.byte -15
|
|
.byte -14
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 14
|
|
.byte 3
|
|
.byte 0
|
|
.byte 49
|
|
.byte 63
|
|
.byte 0
|
|
.byte 49
|
|
.byte -128
|
|
.byte 21
|
|
.byte 96
|
|
.byte 96
|
|
.byte 17
|
|
.byte -127
|
|
.byte 112
|
|
.byte -15
|
|
.byte -14
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 14
|
|
.byte 4
|
|
.byte 0
|
|
.byte 49
|
|
.byte 63
|
|
.byte 0
|
|
.byte 49
|
|
.byte -128
|
|
.byte 21
|
|
.byte 96
|
|
.byte 96
|
|
.byte 17
|
|
.byte -127
|
|
.byte 112
|
|
.byte 112
|
|
.byte 112
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 14
|
|
.type refValueDefault, %object
|
|
.size refValueDefault, 28
|
|
refValueDefault:
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 6
|
|
.byte 10
|
|
.byte 6
|
|
.byte 0
|
|
.byte -3
|
|
.byte -7
|
|
.byte -8
|
|
.byte 0
|
|
.byte -6
|
|
.byte -13
|
|
.byte -15
|
|
.byte 0
|
|
.byte -11
|
|
.byte -20
|
|
.byte -23
|
|
.byte 0
|
|
.byte 0
|
|
.byte -26
|
|
.byte -30
|
|
.byte 0
|
|
.byte 0
|
|
.byte -32
|
|
.byte -37
|
|
.type gSlcNandParaInfo, %object
|
|
.size gSlcNandParaInfo, 32
|
|
gSlcNandParaInfo:
|
|
.byte 2
|
|
.byte -104
|
|
.byte -15
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.byte 1
|
|
.byte 1
|
|
.byte 4
|
|
.short 64
|
|
.byte 1
|
|
.byte 1
|
|
.short 1024
|
|
.short 256
|
|
.byte 0
|
|
.byte 0
|
|
.byte 16
|
|
.byte 40
|
|
.byte 1
|
|
.byte 0
|
|
.byte 1
|
|
.byte 0
|
|
.byte 0
|
|
.byte 0
|
|
.space 4
|
|
.type ftl_gc_temp_block_bops_scan_page_addr, %object
|
|
.size ftl_gc_temp_block_bops_scan_page_addr, 2
|
|
ftl_gc_temp_block_bops_scan_page_addr:
|
|
.short -1
|
|
.space 2
|
|
.type power_up_flag, %object
|
|
.size power_up_flag, 4
|
|
power_up_flag:
|
|
.word 1
|
|
.bss
|
|
.align 2
|
|
.set .LANCHOR0,. + 0
|
|
.set .LANCHOR2,. + 8184
|
|
.type gNandChipMap, %object
|
|
.size gNandChipMap, 32
|
|
gNandChipMap:
|
|
.space 32
|
|
.type p_blk_mode_table, %object
|
|
.size p_blk_mode_table, 4
|
|
p_blk_mode_table:
|
|
.space 4
|
|
.type g_slc2KBNand, %object
|
|
.size g_slc2KBNand, 1
|
|
g_slc2KBNand:
|
|
.space 1
|
|
.type gNandIDBResBlkNum, %object
|
|
.size gNandIDBResBlkNum, 1
|
|
gNandIDBResBlkNum:
|
|
.space 1
|
|
.space 2
|
|
.type gBlockPageAlignSize, %object
|
|
.size gBlockPageAlignSize, 4
|
|
gBlockPageAlignSize:
|
|
.space 4
|
|
.type gNandRandomizer, %object
|
|
.size gNandRandomizer, 1
|
|
gNandRandomizer:
|
|
.space 1
|
|
.space 3
|
|
.type gpNandParaInfo, %object
|
|
.size gpNandParaInfo, 4
|
|
gpNandParaInfo:
|
|
.space 4
|
|
.type gNandOptPara, %object
|
|
.size gNandOptPara, 32
|
|
gNandOptPara:
|
|
.space 32
|
|
.type g_retryMode, %object
|
|
.size g_retryMode, 1
|
|
g_retryMode:
|
|
.space 1
|
|
.type g_maxRegNum, %object
|
|
.size g_maxRegNum, 1
|
|
g_maxRegNum:
|
|
.space 1
|
|
.space 2
|
|
.type gpNandc, %object
|
|
.size gpNandc, 4
|
|
gpNandc:
|
|
.space 4
|
|
.type NANDC_FMCTL, %object
|
|
.size NANDC_FMCTL, 4
|
|
NANDC_FMCTL:
|
|
.space 4
|
|
.type NANDC_FMWAIT, %object
|
|
.size NANDC_FMWAIT, 4
|
|
NANDC_FMWAIT:
|
|
.space 4
|
|
.type NANDC_FLCTL, %object
|
|
.size NANDC_FLCTL, 4
|
|
NANDC_FLCTL:
|
|
.space 4
|
|
.type NANDC_BCHCTL, %object
|
|
.size NANDC_BCHCTL, 4
|
|
NANDC_BCHCTL:
|
|
.space 4
|
|
.type NANDC_DLL_CTL_REG0, %object
|
|
.size NANDC_DLL_CTL_REG0, 4
|
|
NANDC_DLL_CTL_REG0:
|
|
.space 4
|
|
.type NANDC_DLL_CTL_REG1, %object
|
|
.size NANDC_DLL_CTL_REG1, 4
|
|
NANDC_DLL_CTL_REG1:
|
|
.space 4
|
|
.type NANDC_RANDMZ_CFG, %object
|
|
.size NANDC_RANDMZ_CFG, 4
|
|
NANDC_RANDMZ_CFG:
|
|
.space 4
|
|
.type NANDC_FMWAIT_SYN, %object
|
|
.size NANDC_FMWAIT_SYN, 4
|
|
NANDC_FMWAIT_SYN:
|
|
.space 4
|
|
.type gNandPhyInfo, %object
|
|
.size gNandPhyInfo, 28
|
|
gNandPhyInfo:
|
|
.space 28
|
|
.type gFlashSlcMode, %object
|
|
.size gFlashSlcMode, 1
|
|
gFlashSlcMode:
|
|
.space 1
|
|
.space 3
|
|
.type slcPageToMlcPageTbl, %object
|
|
.size slcPageToMlcPageTbl, 1024
|
|
slcPageToMlcPageTbl:
|
|
.space 1024
|
|
.type DieAddrs, %object
|
|
.size DieAddrs, 32
|
|
DieAddrs:
|
|
.space 32
|
|
.type FlashWaitBusyScheduleEn, %object
|
|
.size FlashWaitBusyScheduleEn, 4
|
|
FlashWaitBusyScheduleEn:
|
|
.space 4
|
|
.type gReadRetryInfo, %object
|
|
.size gReadRetryInfo, 852
|
|
gReadRetryInfo:
|
|
.space 852
|
|
.type read_retry_cur_offset, %object
|
|
.size read_retry_cur_offset, 4
|
|
read_retry_cur_offset:
|
|
.space 4
|
|
.type IDByte, %object
|
|
.size IDByte, 32
|
|
IDByte:
|
|
.space 32
|
|
.type gDieOp, %object
|
|
.size gDieOp, 128
|
|
gDieOp:
|
|
.space 128
|
|
.type gFlashCurMode, %object
|
|
.size gFlashCurMode, 1
|
|
gFlashCurMode:
|
|
.space 1
|
|
.type gFlashInterfaceMode, %object
|
|
.size gFlashInterfaceMode, 1
|
|
gFlashInterfaceMode:
|
|
.space 1
|
|
.type gNandMaxDie, %object
|
|
.size gNandMaxDie, 1
|
|
gNandMaxDie:
|
|
.space 1
|
|
.space 1
|
|
.type DieCsIndex, %object
|
|
.size DieCsIndex, 8
|
|
DieCsIndex:
|
|
.space 8
|
|
.type gMultiPageProgEn, %object
|
|
.size gMultiPageProgEn, 1
|
|
gMultiPageProgEn:
|
|
.space 1
|
|
.space 3
|
|
.type g_inkDie_check_enable, %object
|
|
.size g_inkDie_check_enable, 4
|
|
g_inkDie_check_enable:
|
|
.space 4
|
|
.type idb_flash_slc_mode, %object
|
|
.size idb_flash_slc_mode, 4
|
|
idb_flash_slc_mode:
|
|
.space 4
|
|
.type gFlashToggleModeEn, %object
|
|
.size gFlashToggleModeEn, 1
|
|
gFlashToggleModeEn:
|
|
.space 1
|
|
.space 3
|
|
.type gBootDdrMode, %object
|
|
.size gBootDdrMode, 4
|
|
gBootDdrMode:
|
|
.space 4
|
|
.type gNandcVer, %object
|
|
.size gNandcVer, 4
|
|
gNandcVer:
|
|
.space 4
|
|
.type g_nandc_version_data, %object
|
|
.size g_nandc_version_data, 4
|
|
g_nandc_version_data:
|
|
.space 4
|
|
.type gMasterTempBuf, %object
|
|
.size gMasterTempBuf, 4
|
|
gMasterTempBuf:
|
|
.space 4
|
|
.type gMasterInfo, %object
|
|
.size gMasterInfo, 32
|
|
gMasterInfo:
|
|
.space 32
|
|
.type gNandcDumpWriteEn, %object
|
|
.size gNandcDumpWriteEn, 4
|
|
gNandcDumpWriteEn:
|
|
.space 4
|
|
.type gNandcEccBits, %object
|
|
.size gNandcEccBits, 4
|
|
gNandcEccBits:
|
|
.space 4
|
|
.type gNandFlashEccBits, %object
|
|
.size gNandFlashEccBits, 1
|
|
gNandFlashEccBits:
|
|
.space 1
|
|
.space 3
|
|
.type c_ftl_nand_sys_blks_per_plane, %object
|
|
.size c_ftl_nand_sys_blks_per_plane, 4
|
|
c_ftl_nand_sys_blks_per_plane:
|
|
.space 4
|
|
.type c_ftl_nand_planes_num, %object
|
|
.size c_ftl_nand_planes_num, 2
|
|
c_ftl_nand_planes_num:
|
|
.space 2
|
|
.space 2
|
|
.type c_ftl_nand_max_sys_blks, %object
|
|
.size c_ftl_nand_max_sys_blks, 4
|
|
c_ftl_nand_max_sys_blks:
|
|
.space 4
|
|
.type c_ftl_nand_data_blks_per_plane, %object
|
|
.size c_ftl_nand_data_blks_per_plane, 2
|
|
c_ftl_nand_data_blks_per_plane:
|
|
.space 2
|
|
.type c_ftl_nand_blk_pre_plane, %object
|
|
.size c_ftl_nand_blk_pre_plane, 2
|
|
c_ftl_nand_blk_pre_plane:
|
|
.space 2
|
|
.type c_ftl_nand_max_data_blks, %object
|
|
.size c_ftl_nand_max_data_blks, 4
|
|
c_ftl_nand_max_data_blks:
|
|
.space 4
|
|
.type c_ftl_nand_totle_phy_blks, %object
|
|
.size c_ftl_nand_totle_phy_blks, 4
|
|
c_ftl_nand_totle_phy_blks:
|
|
.space 4
|
|
.type c_ftl_nand_type, %object
|
|
.size c_ftl_nand_type, 2
|
|
c_ftl_nand_type:
|
|
.space 2
|
|
.type c_ftl_nand_die_num, %object
|
|
.size c_ftl_nand_die_num, 2
|
|
c_ftl_nand_die_num:
|
|
.space 2
|
|
.type c_ftl_nand_planes_per_die, %object
|
|
.size c_ftl_nand_planes_per_die, 2
|
|
c_ftl_nand_planes_per_die:
|
|
.space 2
|
|
.type p_plane_order_table, %object
|
|
.size p_plane_order_table, 32
|
|
p_plane_order_table:
|
|
.space 32
|
|
.type c_mlc_erase_count_value, %object
|
|
.size c_mlc_erase_count_value, 2
|
|
c_mlc_erase_count_value:
|
|
.space 2
|
|
.type c_ftl_nand_ext_blk_pre_plane, %object
|
|
.size c_ftl_nand_ext_blk_pre_plane, 2
|
|
c_ftl_nand_ext_blk_pre_plane:
|
|
.space 2
|
|
.type c_ftl_vendor_part_size, %object
|
|
.size c_ftl_vendor_part_size, 2
|
|
c_ftl_vendor_part_size:
|
|
.space 2
|
|
.type c_ftl_nand_blks_per_die, %object
|
|
.size c_ftl_nand_blks_per_die, 2
|
|
c_ftl_nand_blks_per_die:
|
|
.space 2
|
|
.type c_ftl_nand_page_pre_blk, %object
|
|
.size c_ftl_nand_page_pre_blk, 2
|
|
c_ftl_nand_page_pre_blk:
|
|
.space 2
|
|
.type c_ftl_nand_page_pre_slc_blk, %object
|
|
.size c_ftl_nand_page_pre_slc_blk, 2
|
|
c_ftl_nand_page_pre_slc_blk:
|
|
.space 2
|
|
.type c_ftl_nand_page_pre_super_blk, %object
|
|
.size c_ftl_nand_page_pre_super_blk, 2
|
|
c_ftl_nand_page_pre_super_blk:
|
|
.space 2
|
|
.type c_ftl_nand_sec_pre_page, %object
|
|
.size c_ftl_nand_sec_pre_page, 2
|
|
c_ftl_nand_sec_pre_page:
|
|
.space 2
|
|
.type c_ftl_nand_sec_pre_page_shift, %object
|
|
.size c_ftl_nand_sec_pre_page_shift, 2
|
|
c_ftl_nand_sec_pre_page_shift:
|
|
.space 2
|
|
.type c_ftl_nand_byte_pre_page, %object
|
|
.size c_ftl_nand_byte_pre_page, 2
|
|
c_ftl_nand_byte_pre_page:
|
|
.space 2
|
|
.type c_ftl_nand_byte_pre_oob, %object
|
|
.size c_ftl_nand_byte_pre_oob, 2
|
|
c_ftl_nand_byte_pre_oob:
|
|
.space 2
|
|
.type c_ftl_nand_reserved_blks, %object
|
|
.size c_ftl_nand_reserved_blks, 2
|
|
c_ftl_nand_reserved_blks:
|
|
.space 2
|
|
.space 2
|
|
.type DeviceCapacity, %object
|
|
.size DeviceCapacity, 4
|
|
DeviceCapacity:
|
|
.space 4
|
|
.type c_ftl_nand_max_vendor_blks, %object
|
|
.size c_ftl_nand_max_vendor_blks, 2
|
|
c_ftl_nand_max_vendor_blks:
|
|
.space 2
|
|
.type c_ftl_nand_vendor_region_num, %object
|
|
.size c_ftl_nand_vendor_region_num, 2
|
|
c_ftl_nand_vendor_region_num:
|
|
.space 2
|
|
.type c_ftl_nand_map_blks_per_plane, %object
|
|
.size c_ftl_nand_map_blks_per_plane, 2
|
|
c_ftl_nand_map_blks_per_plane:
|
|
.space 2
|
|
.space 2
|
|
.type c_ftl_nand_max_map_blks, %object
|
|
.size c_ftl_nand_max_map_blks, 4
|
|
c_ftl_nand_max_map_blks:
|
|
.space 4
|
|
.type c_ftl_nand_init_sys_blks_per_plane, %object
|
|
.size c_ftl_nand_init_sys_blks_per_plane, 4
|
|
c_ftl_nand_init_sys_blks_per_plane:
|
|
.space 4
|
|
.type c_ftl_nand_map_region_num, %object
|
|
.size c_ftl_nand_map_region_num, 2
|
|
c_ftl_nand_map_region_num:
|
|
.space 2
|
|
.type c_ftl_nand_l2pmap_ram_region_num, %object
|
|
.size c_ftl_nand_l2pmap_ram_region_num, 2
|
|
c_ftl_nand_l2pmap_ram_region_num:
|
|
.space 2
|
|
.type g_MaxLbaSector, %object
|
|
.size g_MaxLbaSector, 4
|
|
g_MaxLbaSector:
|
|
.space 4
|
|
.type g_page_map_check_enable, %object
|
|
.size g_page_map_check_enable, 2
|
|
g_page_map_check_enable:
|
|
.space 2
|
|
.type g_totle_vendor_block, %object
|
|
.size g_totle_vendor_block, 2
|
|
g_totle_vendor_block:
|
|
.space 2
|
|
.type p_vendor_block_table, %object
|
|
.size p_vendor_block_table, 4
|
|
p_vendor_block_table:
|
|
.space 4
|
|
.type g_wr_page_num, %object
|
|
.size g_wr_page_num, 4
|
|
g_wr_page_num:
|
|
.space 4
|
|
.type req_wr_io, %object
|
|
.size req_wr_io, 4
|
|
req_wr_io:
|
|
.space 4
|
|
.type g_MaxLpn, %object
|
|
.size g_MaxLpn, 4
|
|
g_MaxLpn:
|
|
.space 4
|
|
.type gBbtInfo, %object
|
|
.size gBbtInfo, 60
|
|
gBbtInfo:
|
|
.space 60
|
|
.type gSysFreeQueue, %object
|
|
.size gSysFreeQueue, 2056
|
|
gSysFreeQueue:
|
|
.space 2056
|
|
.type g_flash_read_only_en, %object
|
|
.size g_flash_read_only_en, 4
|
|
g_flash_read_only_en:
|
|
.space 4
|
|
.type req_erase, %object
|
|
.size req_erase, 4
|
|
req_erase:
|
|
.space 4
|
|
.type p_erase_count_table, %object
|
|
.size p_erase_count_table, 4
|
|
p_erase_count_table:
|
|
.space 4
|
|
.type g_totle_sys_slc_erase_count, %object
|
|
.size g_totle_sys_slc_erase_count, 4
|
|
g_totle_sys_slc_erase_count:
|
|
.space 4
|
|
.type g_sys_save_data, %object
|
|
.size g_sys_save_data, 48
|
|
g_sys_save_data:
|
|
.space 48
|
|
.type p_data_block_list_table, %object
|
|
.size p_data_block_list_table, 4
|
|
p_data_block_list_table:
|
|
.space 4
|
|
.type p_data_block_list_head, %object
|
|
.size p_data_block_list_head, 4
|
|
p_data_block_list_head:
|
|
.space 4
|
|
.type p_valid_page_count_table, %object
|
|
.size p_valid_page_count_table, 4
|
|
p_valid_page_count_table:
|
|
.space 4
|
|
.type p_data_block_list_tail, %object
|
|
.size p_data_block_list_tail, 4
|
|
p_data_block_list_tail:
|
|
.space 4
|
|
.type g_num_data_superblocks, %object
|
|
.size g_num_data_superblocks, 2
|
|
g_num_data_superblocks:
|
|
.space 2
|
|
.space 2
|
|
.type p_free_data_block_list_head, %object
|
|
.size p_free_data_block_list_head, 4
|
|
p_free_data_block_list_head:
|
|
.space 4
|
|
.type g_num_free_superblocks, %object
|
|
.size g_num_free_superblocks, 2
|
|
g_num_free_superblocks:
|
|
.space 2
|
|
.space 2
|
|
.type g_active_superblock, %object
|
|
.size g_active_superblock, 48
|
|
g_active_superblock:
|
|
.space 48
|
|
.type g_buffer_superblock, %object
|
|
.size g_buffer_superblock, 48
|
|
g_buffer_superblock:
|
|
.space 48
|
|
.type g_gc_temp_superblock, %object
|
|
.size g_gc_temp_superblock, 48
|
|
g_gc_temp_superblock:
|
|
.space 48
|
|
.type p_l2p_ram_map, %object
|
|
.size p_l2p_ram_map, 4
|
|
p_l2p_ram_map:
|
|
.space 4
|
|
.type g_l2p_last_update_region_id, %object
|
|
.size g_l2p_last_update_region_id, 2
|
|
g_l2p_last_update_region_id:
|
|
.space 2
|
|
.type FtlUpdateVaildLpnCount, %object
|
|
.size FtlUpdateVaildLpnCount, 2
|
|
FtlUpdateVaildLpnCount:
|
|
.space 2
|
|
.type g_VaildLpn, %object
|
|
.size g_VaildLpn, 4
|
|
g_VaildLpn:
|
|
.space 4
|
|
.type g_totle_read_page_count, %object
|
|
.size g_totle_read_page_count, 4
|
|
g_totle_read_page_count:
|
|
.space 4
|
|
.type g_totle_discard_page_count, %object
|
|
.size g_totle_discard_page_count, 4
|
|
g_totle_discard_page_count:
|
|
.space 4
|
|
.type g_totle_write_page_count, %object
|
|
.size g_totle_write_page_count, 4
|
|
g_totle_write_page_count:
|
|
.space 4
|
|
.type g_totle_cache_write_count, %object
|
|
.size g_totle_cache_write_count, 4
|
|
g_totle_cache_write_count:
|
|
.space 4
|
|
.type g_totle_l2p_write_count, %object
|
|
.size g_totle_l2p_write_count, 4
|
|
g_totle_l2p_write_count:
|
|
.space 4
|
|
.type g_totle_gc_page_count, %object
|
|
.size g_totle_gc_page_count, 4
|
|
g_totle_gc_page_count:
|
|
.space 4
|
|
.type g_totle_write_sector, %object
|
|
.size g_totle_write_sector, 4
|
|
g_totle_write_sector:
|
|
.space 4
|
|
.type g_totle_read_sector, %object
|
|
.size g_totle_read_sector, 4
|
|
g_totle_read_sector:
|
|
.space 4
|
|
.type g_GlobalSysVersion, %object
|
|
.size g_GlobalSysVersion, 4
|
|
g_GlobalSysVersion:
|
|
.space 4
|
|
.type g_GlobalDataVersion, %object
|
|
.size g_GlobalDataVersion, 4
|
|
g_GlobalDataVersion:
|
|
.space 4
|
|
.type g_totle_mlc_erase_count, %object
|
|
.size g_totle_mlc_erase_count, 4
|
|
g_totle_mlc_erase_count:
|
|
.space 4
|
|
.type g_totle_slc_erase_count, %object
|
|
.size g_totle_slc_erase_count, 4
|
|
g_totle_slc_erase_count:
|
|
.space 4
|
|
.type g_totle_avg_erase_count, %object
|
|
.size g_totle_avg_erase_count, 4
|
|
g_totle_avg_erase_count:
|
|
.space 4
|
|
.type g_max_erase_count, %object
|
|
.size g_max_erase_count, 4
|
|
g_max_erase_count:
|
|
.space 4
|
|
.type g_min_erase_count, %object
|
|
.size g_min_erase_count, 4
|
|
g_min_erase_count:
|
|
.space 4
|
|
.type c_ftl_nand_data_op_blks_per_plane, %object
|
|
.size c_ftl_nand_data_op_blks_per_plane, 2
|
|
c_ftl_nand_data_op_blks_per_plane:
|
|
.space 2
|
|
.space 2
|
|
.type gSysInfo, %object
|
|
.size gSysInfo, 16
|
|
gSysInfo:
|
|
.space 16
|
|
.type g_gc_superblock, %object
|
|
.size g_gc_superblock, 48
|
|
g_gc_superblock:
|
|
.space 48
|
|
.type g_sys_ext_data, %object
|
|
.size g_sys_ext_data, 512
|
|
g_sys_ext_data:
|
|
.space 512
|
|
.type g_all_blk_used_slc_mode, %object
|
|
.size g_all_blk_used_slc_mode, 4
|
|
g_all_blk_used_slc_mode:
|
|
.space 4
|
|
.type g_gc_free_blk_threshold, %object
|
|
.size g_gc_free_blk_threshold, 2
|
|
g_gc_free_blk_threshold:
|
|
.space 2
|
|
.type g_gc_merge_free_blk_threshold, %object
|
|
.size g_gc_merge_free_blk_threshold, 2
|
|
g_gc_merge_free_blk_threshold:
|
|
.space 2
|
|
.type g_gc_skip_write_count, %object
|
|
.size g_gc_skip_write_count, 4
|
|
g_gc_skip_write_count:
|
|
.space 4
|
|
.type g_gc_blk_index, %object
|
|
.size g_gc_blk_index, 2
|
|
g_gc_blk_index:
|
|
.space 2
|
|
.space 2
|
|
.type g_in_swl_replace, %object
|
|
.size g_in_swl_replace, 4
|
|
g_in_swl_replace:
|
|
.space 4
|
|
.type g_gc_num_req, %object
|
|
.size g_gc_num_req, 4
|
|
g_gc_num_req:
|
|
.space 4
|
|
.type gp_gc_page_buf_info, %object
|
|
.size gp_gc_page_buf_info, 4
|
|
gp_gc_page_buf_info:
|
|
.space 4
|
|
.type p_gc_data_buf, %object
|
|
.size p_gc_data_buf, 4
|
|
p_gc_data_buf:
|
|
.space 4
|
|
.type p_gc_spare_buf, %object
|
|
.size p_gc_spare_buf, 4
|
|
p_gc_spare_buf:
|
|
.space 4
|
|
.type req_gc, %object
|
|
.size req_gc, 4
|
|
req_gc:
|
|
.space 4
|
|
.type c_gc_page_buf_num, %object
|
|
.size c_gc_page_buf_num, 4
|
|
c_gc_page_buf_num:
|
|
.space 4
|
|
.type p_gc_blk_tbl, %object
|
|
.size p_gc_blk_tbl, 4
|
|
p_gc_blk_tbl:
|
|
.space 4
|
|
.type g_gc_blk_num, %object
|
|
.size g_gc_blk_num, 2
|
|
g_gc_blk_num:
|
|
.space 2
|
|
.space 2
|
|
.type p_gc_page_info, %object
|
|
.size p_gc_page_info, 4
|
|
p_gc_page_info:
|
|
.space 4
|
|
.type g_gc_page_offset, %object
|
|
.size g_gc_page_offset, 2
|
|
g_gc_page_offset:
|
|
.space 2
|
|
.type g_gc_next_blk, %object
|
|
.size g_gc_next_blk, 2
|
|
g_gc_next_blk:
|
|
.space 2
|
|
.type g_gc_next_blk_1, %object
|
|
.size g_gc_next_blk_1, 2
|
|
g_gc_next_blk_1:
|
|
.space 2
|
|
.type g_gc_next_blk_2, %object
|
|
.size g_gc_next_blk_2, 2
|
|
g_gc_next_blk_2:
|
|
.space 2
|
|
.type g_gc_next_blk_3, %object
|
|
.size g_gc_next_blk_3, 2
|
|
g_gc_next_blk_3:
|
|
.space 2
|
|
.type g_gc_bad_block_temp_num, %object
|
|
.size g_gc_bad_block_temp_num, 2
|
|
g_gc_bad_block_temp_num:
|
|
.space 2
|
|
.type g_gc_bad_block_temp_tbl, %object
|
|
.size g_gc_bad_block_temp_tbl, 34
|
|
g_gc_bad_block_temp_tbl:
|
|
.space 34
|
|
.type g_gc_bad_block_gc_index, %object
|
|
.size g_gc_bad_block_gc_index, 2
|
|
g_gc_bad_block_gc_index:
|
|
.space 2
|
|
.type mlcPageToSlcPageTbl, %object
|
|
.size mlcPageToSlcPageTbl, 2048
|
|
mlcPageToSlcPageTbl:
|
|
.space 2048
|
|
.type gNandMaxChip, %object
|
|
.size gNandMaxChip, 1
|
|
gNandMaxChip:
|
|
.space 1
|
|
.space 1
|
|
.type gTotleBlock, %object
|
|
.size gTotleBlock, 2
|
|
gTotleBlock:
|
|
.space 2
|
|
.type g_free_slc_blk_num, %object
|
|
.size g_free_slc_blk_num, 2
|
|
g_free_slc_blk_num:
|
|
.space 2
|
|
.space 2
|
|
.type g_SlcPartLbaEndSector, %object
|
|
.size g_SlcPartLbaEndSector, 4
|
|
g_SlcPartLbaEndSector:
|
|
.space 4
|
|
.type g_in_gc_progress, %object
|
|
.size g_in_gc_progress, 4
|
|
g_in_gc_progress:
|
|
.space 4
|
|
.type g_gc_head_data_block, %object
|
|
.size g_gc_head_data_block, 4
|
|
g_gc_head_data_block:
|
|
.space 4
|
|
.type g_gc_head_data_block_count, %object
|
|
.size g_gc_head_data_block_count, 4
|
|
g_gc_head_data_block_count:
|
|
.space 4
|
|
.type g_cur_erase_blk, %object
|
|
.size g_cur_erase_blk, 4
|
|
g_cur_erase_blk:
|
|
.space 4
|
|
.type g_gc_refresh_block_temp_num, %object
|
|
.size g_gc_refresh_block_temp_num, 2
|
|
g_gc_refresh_block_temp_num:
|
|
.space 2
|
|
.space 2
|
|
.type c_wr_page_buf_num, %object
|
|
.size c_wr_page_buf_num, 4
|
|
c_wr_page_buf_num:
|
|
.space 4
|
|
.type req_read, %object
|
|
.size req_read, 4
|
|
req_read:
|
|
.space 4
|
|
.type req_gc_dst, %object
|
|
.size req_gc_dst, 4
|
|
req_gc_dst:
|
|
.space 4
|
|
.type req_prgm, %object
|
|
.size req_prgm, 4
|
|
req_prgm:
|
|
.space 4
|
|
.type p_sys_data_buf, %object
|
|
.size p_sys_data_buf, 4
|
|
p_sys_data_buf:
|
|
.space 4
|
|
.type p_sys_data_buf_1, %object
|
|
.size p_sys_data_buf_1, 4
|
|
p_sys_data_buf_1:
|
|
.space 4
|
|
.type p_vendor_data_buf, %object
|
|
.size p_vendor_data_buf, 4
|
|
p_vendor_data_buf:
|
|
.space 4
|
|
.type p_wr_io_data_buf, %object
|
|
.size p_wr_io_data_buf, 4
|
|
p_wr_io_data_buf:
|
|
.space 4
|
|
.type p_io_data_buf_0, %object
|
|
.size p_io_data_buf_0, 4
|
|
p_io_data_buf_0:
|
|
.space 4
|
|
.type p_io_data_buf_1, %object
|
|
.size p_io_data_buf_1, 4
|
|
p_io_data_buf_1:
|
|
.space 4
|
|
.type p_sys_spare_buf, %object
|
|
.size p_sys_spare_buf, 4
|
|
p_sys_spare_buf:
|
|
.space 4
|
|
.type p_io_spare_buf, %object
|
|
.size p_io_spare_buf, 4
|
|
p_io_spare_buf:
|
|
.space 4
|
|
.type p_wr_io_spare_buf, %object
|
|
.size p_wr_io_spare_buf, 4
|
|
p_wr_io_spare_buf:
|
|
.space 4
|
|
.type g_ect_tbl_info_size, %object
|
|
.size g_ect_tbl_info_size, 2
|
|
g_ect_tbl_info_size:
|
|
.space 2
|
|
.space 2
|
|
.type p_swl_mul_table, %object
|
|
.size p_swl_mul_table, 4
|
|
p_swl_mul_table:
|
|
.space 4
|
|
.type gp_ect_tbl_info, %object
|
|
.size gp_ect_tbl_info, 4
|
|
gp_ect_tbl_info:
|
|
.space 4
|
|
.type p_valid_page_count_check_table, %object
|
|
.size p_valid_page_count_check_table, 4
|
|
p_valid_page_count_check_table:
|
|
.space 4
|
|
.type p_map_block_table, %object
|
|
.size p_map_block_table, 4
|
|
p_map_block_table:
|
|
.space 4
|
|
.type p_map_block_valid_page_count, %object
|
|
.size p_map_block_valid_page_count, 4
|
|
p_map_block_valid_page_count:
|
|
.space 4
|
|
.type p_vendor_block_valid_page_count, %object
|
|
.size p_vendor_block_valid_page_count, 4
|
|
p_vendor_block_valid_page_count:
|
|
.space 4
|
|
.type p_vendor_block_ver_table, %object
|
|
.size p_vendor_block_ver_table, 4
|
|
p_vendor_block_ver_table:
|
|
.space 4
|
|
.type p_vendor_region_ppn_table, %object
|
|
.size p_vendor_region_ppn_table, 4
|
|
p_vendor_region_ppn_table:
|
|
.space 4
|
|
.type p_map_region_ppn_table, %object
|
|
.size p_map_region_ppn_table, 4
|
|
p_map_region_ppn_table:
|
|
.space 4
|
|
.type p_map_region_ppn_check_table, %object
|
|
.size p_map_region_ppn_check_table, 4
|
|
p_map_region_ppn_check_table:
|
|
.space 4
|
|
.type p_map_block_ver_table, %object
|
|
.size p_map_block_ver_table, 4
|
|
p_map_block_ver_table:
|
|
.space 4
|
|
.type p_l2p_map_buf, %object
|
|
.size p_l2p_map_buf, 4
|
|
p_l2p_map_buf:
|
|
.space 4
|
|
.type c_ftl_nand_bbm_buf_size, %object
|
|
.size c_ftl_nand_bbm_buf_size, 2
|
|
c_ftl_nand_bbm_buf_size:
|
|
.space 2
|
|
.space 2
|
|
.type gL2pMapInfo, %object
|
|
.size gL2pMapInfo, 44
|
|
gL2pMapInfo:
|
|
.space 44
|
|
.type g_totle_map_block, %object
|
|
.size g_totle_map_block, 2
|
|
g_totle_map_block:
|
|
.space 2
|
|
.space 2
|
|
.type g_req_cache, %object
|
|
.size g_req_cache, 4
|
|
g_req_cache:
|
|
.space 4
|
|
.type g_tmp_data_superblock_id, %object
|
|
.size g_tmp_data_superblock_id, 2
|
|
g_tmp_data_superblock_id:
|
|
.space 2
|
|
.space 2
|
|
.type g_totle_swl_count, %object
|
|
.size g_totle_swl_count, 4
|
|
g_totle_swl_count:
|
|
.space 4
|
|
.type ftl_gc_temp_power_lost_recovery_flag, %object
|
|
.size ftl_gc_temp_power_lost_recovery_flag, 4
|
|
ftl_gc_temp_power_lost_recovery_flag:
|
|
.space 4
|
|
.type g_recovery_page_min_ver, %object
|
|
.size g_recovery_page_min_ver, 4
|
|
g_recovery_page_min_ver:
|
|
.space 4
|
|
.type gNandIDataBuf, %object
|
|
.size gNandIDataBuf, 2048
|
|
gNandIDataBuf:
|
|
.space 2048
|
|
.type RK29_NANDC_REG_BASE, %object
|
|
.size RK29_NANDC_REG_BASE, 4
|
|
RK29_NANDC_REG_BASE:
|
|
.space 4
|
|
.type ftl_dma32_buffer_size, %object
|
|
.size ftl_dma32_buffer_size, 4
|
|
ftl_dma32_buffer_size:
|
|
.space 4
|
|
.type ftl_dma32_buffer, %object
|
|
.size ftl_dma32_buffer, 4
|
|
ftl_dma32_buffer:
|
|
.space 4
|
|
.type gFlashPageBuffer0, %object
|
|
.size gFlashPageBuffer0, 4
|
|
gFlashPageBuffer0:
|
|
.space 4
|
|
.type FlashDdrTunningReadCount, %object
|
|
.size FlashDdrTunningReadCount, 4
|
|
FlashDdrTunningReadCount:
|
|
.space 4
|
|
.type gpReadRetrial, %object
|
|
.size gpReadRetrial, 4
|
|
gpReadRetrial:
|
|
.space 4
|
|
.type gpFlashSaveInfo, %object
|
|
.size gpFlashSaveInfo, 4
|
|
gpFlashSaveInfo:
|
|
.space 4
|
|
.type gNandFlashInfoBlockAddr, %object
|
|
.size gNandFlashInfoBlockAddr, 4
|
|
gNandFlashInfoBlockAddr:
|
|
.space 4
|
|
.type gNandFlashIdbBlockAddr, %object
|
|
.size gNandFlashIdbBlockAddr, 4
|
|
gNandFlashIdbBlockAddr:
|
|
.space 4
|
|
.type gNandIDBResBlkNumSaveInFlash, %object
|
|
.size gNandIDBResBlkNumSaveInFlash, 1
|
|
gNandIDBResBlkNumSaveInFlash:
|
|
.space 1
|
|
.type g_maxRetryCount, %object
|
|
.size g_maxRetryCount, 1
|
|
g_maxRetryCount:
|
|
.space 1
|
|
.type gNandFlashIDBEccBits, %object
|
|
.size gNandFlashIDBEccBits, 1
|
|
gNandFlashIDBEccBits:
|
|
.space 1
|
|
.space 1
|
|
.type gFlashPageBuffer1, %object
|
|
.size gFlashPageBuffer1, 4
|
|
gFlashPageBuffer1:
|
|
.space 4
|
|
.type gFlashSpareBuffer, %object
|
|
.size gFlashSpareBuffer, 4
|
|
gFlashSpareBuffer:
|
|
.space 4
|
|
.type gFlashProgCheckBuffer, %object
|
|
.size gFlashProgCheckBuffer, 4
|
|
gFlashProgCheckBuffer:
|
|
.space 4
|
|
.type gFlashProgCheckSpareBuffer, %object
|
|
.size gFlashProgCheckSpareBuffer, 4
|
|
gFlashProgCheckSpareBuffer:
|
|
.space 4
|
|
.type g_nand_ecc_en, %object
|
|
.size g_nand_ecc_en, 1
|
|
g_nand_ecc_en:
|
|
.space 1
|
|
.type gMultiPageReadEn, %object
|
|
.size gMultiPageReadEn, 1
|
|
gMultiPageReadEn:
|
|
.space 1
|
|
.type FbbtBlk, %object
|
|
.size FbbtBlk, 16
|
|
FbbtBlk:
|
|
.space 16
|
|
.space 2
|
|
.type req_sys, %object
|
|
.size req_sys, 36
|
|
req_sys:
|
|
.space 36
|
|
.type g_MaxLbn, %object
|
|
.size g_MaxLbn, 4
|
|
g_MaxLbn:
|
|
.space 4
|
|
.type gVendorBlkInfo, %object
|
|
.size gVendorBlkInfo, 44
|
|
gVendorBlkInfo:
|
|
.space 44
|
|
.type g_ect_tbl_power_up_flush, %object
|
|
.size g_ect_tbl_power_up_flush, 2
|
|
g_ect_tbl_power_up_flush:
|
|
.space 2
|
|
.type g_power_lost_ecc_error_blk, %object
|
|
.size g_power_lost_ecc_error_blk, 2
|
|
g_power_lost_ecc_error_blk:
|
|
.space 2
|
|
.type g_power_lost_recovery_flag, %object
|
|
.size g_power_lost_recovery_flag, 2
|
|
g_power_lost_recovery_flag:
|
|
.space 2
|
|
.space 2
|
|
.type g_recovery_page_num, %object
|
|
.size g_recovery_page_num, 4
|
|
g_recovery_page_num:
|
|
.space 4
|
|
.type g_recovery_ppa_tbl, %object
|
|
.size g_recovery_ppa_tbl, 128
|
|
g_recovery_ppa_tbl:
|
|
.space 128
|
|
.type gc_ink_free_return_value, %object
|
|
.size gc_ink_free_return_value, 2
|
|
gc_ink_free_return_value:
|
|
.space 2
|
|
.type g_gc_cur_blk_valid_pages, %object
|
|
.size g_gc_cur_blk_valid_pages, 2
|
|
g_gc_cur_blk_valid_pages:
|
|
.space 2
|
|
.type g_gc_cur_blk_max_valid_pages, %object
|
|
.size g_gc_cur_blk_max_valid_pages, 2
|
|
g_gc_cur_blk_max_valid_pages:
|
|
.space 2
|
|
.space 2
|
|
.type gp_last_act_superblock, %object
|
|
.size gp_last_act_superblock, 4
|
|
gp_last_act_superblock:
|
|
.space 4
|
|
.type gc_discard_updated, %object
|
|
.size gc_discard_updated, 4
|
|
gc_discard_updated:
|
|
.space 4
|
|
.type g_LowFormat, %object
|
|
.size g_LowFormat, 4
|
|
g_LowFormat:
|
|
.space 4
|
|
.type gLoaderBootInfo, %object
|
|
.size gLoaderBootInfo, 4
|
|
gLoaderBootInfo:
|
|
.space 4
|
|
.type RK29_NANDC1_REG_BASE, %object
|
|
.size RK29_NANDC1_REG_BASE, 4
|
|
RK29_NANDC1_REG_BASE:
|
|
.space 4
|
|
.type g_ftl_nand_free_count, %object
|
|
.size g_ftl_nand_free_count, 4
|
|
g_ftl_nand_free_count:
|
|
.space 4
|
|
.type last_cache_match_count, %object
|
|
.size last_cache_match_count, 4
|
|
last_cache_match_count:
|
|
.space 4
|
|
.type idb_write_enable, %object
|
|
.size idb_write_enable, 1
|
|
idb_write_enable:
|
|
.space 1
|
|
.space 3
|
|
.type idb_buf, %object
|
|
.size idb_buf, 4
|
|
idb_buf:
|
|
.space 4
|
|
.type idb_last_lba, %object
|
|
.size idb_last_lba, 4
|
|
idb_last_lba:
|
|
.space 4
|
|
.type gpDrmKeyInfo, %object
|
|
.size gpDrmKeyInfo, 4
|
|
gpDrmKeyInfo:
|
|
.space 4
|
|
.type SecureBootCheckOK, %object
|
|
.size SecureBootCheckOK, 4
|
|
SecureBootCheckOK:
|
|
.space 4
|
|
.type SecureBootEn, %object
|
|
.size SecureBootEn, 4
|
|
SecureBootEn:
|
|
.space 4
|
|
.type gpBootConfig, %object
|
|
.size gpBootConfig, 4
|
|
gpBootConfig:
|
|
.space 4
|
|
.type gSnSectorData, %object
|
|
.size gSnSectorData, 512
|
|
gSnSectorData:
|
|
.space 512
|
|
.type SecureBootUnlockTryCount, %object
|
|
.size SecureBootUnlockTryCount, 4
|
|
SecureBootUnlockTryCount:
|
|
.space 4
|
|
.type gpVendor0Info, %object
|
|
.size gpVendor0Info, 4
|
|
gpVendor0Info:
|
|
.space 4
|
|
.type gpVendor1Info, %object
|
|
.size gpVendor1Info, 4
|
|
gpVendor1Info:
|
|
.space 4
|
|
.type g_idb_buffer, %object
|
|
.size g_idb_buffer, 4
|
|
g_idb_buffer:
|
|
.space 4
|
|
.type g_vendor, %object
|
|
.size g_vendor, 4
|
|
g_vendor:
|
|
.space 4
|
|
.type check_valid_page_count_table, %object
|
|
.size check_valid_page_count_table, 8192
|
|
check_valid_page_count_table:
|
|
.space 8192
|
|
.type g_gc_refresh_block_temp_tbl, %object
|
|
.size g_gc_refresh_block_temp_tbl, 34
|
|
g_gc_refresh_block_temp_tbl:
|
|
.space 34
|
|
.space 2
|
|
.type gToggleModeClkDiv, %object
|
|
.size gToggleModeClkDiv, 4
|
|
gToggleModeClkDiv:
|
|
.space 4
|
|
.type gpNandc1, %object
|
|
.size gpNandc1, 4
|
|
gpNandc1:
|
|
.space 4
|
|
.type gNandFlashResEndPageAddr, %object
|
|
.size gNandFlashResEndPageAddr, 4
|
|
gNandFlashResEndPageAddr:
|
|
.space 4
|
|
.type gNandFlashInfoBlockEcc, %object
|
|
.size gNandFlashInfoBlockEcc, 1
|
|
gNandFlashInfoBlockEcc:
|
|
.space 1
|
|
.type gFlashOnfiModeEn, %object
|
|
.size gFlashOnfiModeEn, 1
|
|
gFlashOnfiModeEn:
|
|
.space 1
|
|
.type gFlashSdrModeEn, %object
|
|
.size gFlashSdrModeEn, 1
|
|
gFlashSdrModeEn:
|
|
.space 1
|
|
.section .rodata.str1.1,"aMS",%progbits,1
|
|
.LC1:
|
|
.ascii "FlashEraseBlocks pageAddr error %x\012\000"
|
|
.LC2:
|
|
.ascii "phyBlk = 0x%x die = %d block_in_die = 0x%x 0x%8x\012"
|
|
.ascii "\000"
|
|
.LC3:
|
|
.ascii "FtlFreeSysBlkQueueOut free count = %d\012\000"
|
|
.LC4:
|
|
.ascii "FtlFreeSysBlkQueueOut = %x, free count = %d, error\012"
|
|
.ascii "\000"
|
|
.LC5:
|
|
.ascii "FtlFreeSysBlkQueueOut = %x, free count = %d\012\000"
|
|
.LC6:
|
|
.ascii "FLASH INFO:\012\000"
|
|
.LC7:
|
|
.ascii "FLASH ID: %x\012\000"
|
|
.LC8:
|
|
.ascii "Device Capacity: %d MB\012\000"
|
|
.LC9:
|
|
.ascii "FMWAIT: %x %x %x %x\012\000"
|
|
.LC10:
|
|
.ascii "FTL INFO:\012\000"
|
|
.LC11:
|
|
.ascii "g_MaxLpn = 0x%x\012\000"
|
|
.LC12:
|
|
.ascii "g_VaildLpn = 0x%x\012\000"
|
|
.LC13:
|
|
.ascii "read_page_count = 0x%x\012\000"
|
|
.LC14:
|
|
.ascii "discard_page_count = 0x%x\012\000"
|
|
.LC15:
|
|
.ascii "write_page_count = 0x%x\012\000"
|
|
.LC16:
|
|
.ascii "cache_write_count = 0x%x\012\000"
|
|
.LC17:
|
|
.ascii "l2p_write_count = 0x%x\012\000"
|
|
.LC18:
|
|
.ascii "gc_page_count = 0x%x\012\000"
|
|
.LC19:
|
|
.ascii "totle_write = %d MB\012\000"
|
|
.LC20:
|
|
.ascii "totle_read = %d MB\012\000"
|
|
.LC21:
|
|
.ascii "GSV = 0x%x\012\000"
|
|
.LC22:
|
|
.ascii "GDV = 0x%x\012\000"
|
|
.LC23:
|
|
.ascii "bad blk num = %d %d\012\000"
|
|
.LC24:
|
|
.ascii "free_superblocks = 0x%x\012\000"
|
|
.LC25:
|
|
.ascii "mlc_EC = 0x%x\012\000"
|
|
.LC26:
|
|
.ascii "slc_EC = 0x%x\012\000"
|
|
.LC27:
|
|
.ascii "avg_EC = 0x%x\012\000"
|
|
.LC28:
|
|
.ascii "sys_EC = 0x%x\012\000"
|
|
.LC29:
|
|
.ascii "max_EC = 0x%x\012\000"
|
|
.LC30:
|
|
.ascii "min_EC = 0x%x\012\000"
|
|
.LC31:
|
|
.ascii "PLT = 0x%x\012\000"
|
|
.LC32:
|
|
.ascii "POT = 0x%x\012\000"
|
|
.LC33:
|
|
.ascii "MaxSector = 0x%x\012\000"
|
|
.LC34:
|
|
.ascii "init_sys_blks_pp = 0x%x\012\000"
|
|
.LC35:
|
|
.ascii "sys_blks_pp = 0x%x\012\000"
|
|
.LC36:
|
|
.ascii "free sysblock = 0x%x\012\000"
|
|
.LC37:
|
|
.ascii "data_blks_pp = 0x%x\012\000"
|
|
.LC38:
|
|
.ascii "data_op_blks_pp = 0x%x\012\000"
|
|
.LC39:
|
|
.ascii "max_data_blks = 0x%x\012\000"
|
|
.LC40:
|
|
.ascii "Sys.id = 0x%x\012\000"
|
|
.LC41:
|
|
.ascii "Bbt.id = 0x%x\012\000"
|
|
.LC42:
|
|
.ascii "ACT.page = 0x%x\012\000"
|
|
.LC43:
|
|
.ascii "ACT.plane = 0x%x\012\000"
|
|
.LC44:
|
|
.ascii "ACT.id = 0x%x\012\000"
|
|
.LC45:
|
|
.ascii "ACT.mode = 0x%x\012\000"
|
|
.LC46:
|
|
.ascii "ACT.a_pages = 0x%x\012\000"
|
|
.LC47:
|
|
.ascii "ACT VPC = 0x%x\012\000"
|
|
.LC48:
|
|
.ascii "BUF.page = 0x%x\012\000"
|
|
.LC49:
|
|
.ascii "BUF.plane = 0x%x\012\000"
|
|
.LC50:
|
|
.ascii "BUF.id = 0x%x\012\000"
|
|
.LC51:
|
|
.ascii "BUF.mode = 0x%x\012\000"
|
|
.LC52:
|
|
.ascii "BUF.a_pages = 0x%x\012\000"
|
|
.LC53:
|
|
.ascii "BUF VPC = 0x%x\012\000"
|
|
.LC54:
|
|
.ascii "TMP.page = 0x%x\012\000"
|
|
.LC55:
|
|
.ascii "TMP.plane = 0x%x\012\000"
|
|
.LC56:
|
|
.ascii "TMP.id = 0x%x\012\000"
|
|
.LC57:
|
|
.ascii "TMP.mode = 0x%x\012\000"
|
|
.LC58:
|
|
.ascii "TMP.a_pages = 0x%x\012\000"
|
|
.LC59:
|
|
.ascii "GC.page = 0x%x\012\000"
|
|
.LC60:
|
|
.ascii "GC.plane = 0x%x\012\000"
|
|
.LC61:
|
|
.ascii "GC.id = 0x%x\012\000"
|
|
.LC62:
|
|
.ascii "GC.mode = 0x%x\012\000"
|
|
.LC63:
|
|
.ascii "GC.a_pages = 0x%x\012\000"
|
|
.LC64:
|
|
.ascii "WR_CHK = 0x%x %x %x %x\012\000"
|
|
.LC65:
|
|
.ascii "Read Err = 0x%x\012\000"
|
|
.LC66:
|
|
.ascii "Prog Err = 0x%x\012\000"
|
|
.LC67:
|
|
.ascii "gc_free_blk_th= 0x%x\012\000"
|
|
.LC68:
|
|
.ascii "gc_merge_free_blk_th= 0x%x\012\000"
|
|
.LC69:
|
|
.ascii "gc_skip_write_count= 0x%x\012\000"
|
|
.LC70:
|
|
.ascii "gc_blk_index= 0x%x\012\000"
|
|
.LC71:
|
|
.ascii "free min EC= 0x%x\012\000"
|
|
.LC72:
|
|
.ascii "free max EC= 0x%x\012\000"
|
|
.LC73:
|
|
.ascii "GC__SB VPC = 0x%x\012\000"
|
|
.LC74:
|
|
.ascii "%d. [0x%x]=0x%x 0x%x 0x%x\012\000"
|
|
.LC75:
|
|
.ascii "free %d. [0x%x] 0x%x 0x%x\012\000"
|
|
.LC76:
|
|
.ascii "FTL version: 5.0.63 20210616\000"
|
|
.LC77:
|
|
.ascii "%s\012\000"
|
|
.LC78:
|
|
.ascii "swblk %x ,avg = %x max= %x vpc= %x,ec=%x ,max ec=%x"
|
|
.ascii "\012\000"
|
|
.LC79:
|
|
.ascii "FtlGcRefreshBlock 0x%x\012\000"
|
|
.LC80:
|
|
.ascii "FtlGcMarkBadPhyBlk %d 0x%x\012\000"
|
|
.LC81:
|
|
.ascii "%s error allocating memory. return -1\012\000"
|
|
.LC82:
|
|
.ascii "%s %p:0x%x:\000"
|
|
.LC83:
|
|
.ascii "%x \000"
|
|
.LC84:
|
|
.ascii "\000"
|
|
.LC85:
|
|
.ascii "otp error! %d\000"
|
|
.LC86:
|
|
.ascii "rr\000"
|
|
.LC87:
|
|
.ascii "%d statReg->V6.mtrans_cnt=%d flReg.V6.page_num=%d\012"
|
|
.ascii "\000"
|
|
.LC88:
|
|
.ascii "nandc:\000"
|
|
.LC89:
|
|
.ascii "%d flReg.d32=%x %x\012\000"
|
|
.LC90:
|
|
.ascii "sdr read ok %x ecc=%d\012\000"
|
|
.LC91:
|
|
.ascii "sync para %d\012\000"
|
|
.LC92:
|
|
.ascii "TOG mode Read error %x %x\012\000"
|
|
.LC93:
|
|
.ascii "read retry status %x %x %x\012\000"
|
|
.LC94:
|
|
.ascii "micron RR %d row=%x,count %d,status=%d\012\000"
|
|
.LC95:
|
|
.ascii "samsung RR %d row=%x,count %d,status=%d\012\000"
|
|
.LC96:
|
|
.ascii "ECC:%d\012\000"
|
|
.LC97:
|
|
.ascii "No.%d FLASH ID:%x %x %x %x %x %x\012\000"
|
|
.LC98:
|
|
.ascii "FlashLoadPhyInfo fail %x!!\012\000"
|
|
.LC99:
|
|
.ascii "Read pageadd=%x ecc=%x err=%x\012\000"
|
|
.LC100:
|
|
.ascii "data:\000"
|
|
.LC101:
|
|
.ascii "spare:\000"
|
|
.LC102:
|
|
.ascii "ReadRetry pageadd=%x ecc=%x err=%x\012\000"
|
|
.LC103:
|
|
.ascii "FLFB:%d %d\012\000"
|
|
.LC104:
|
|
.ascii "prog error: = %x\012\000"
|
|
.LC105:
|
|
.ascii "prog read error: = %x\012\000"
|
|
.LC106:
|
|
.ascii "prog read REFRESH: = %x\012\000"
|
|
.LC107:
|
|
.ascii "prog read s error: = %x %x %x\012\000"
|
|
.LC108:
|
|
.ascii "prog read d error: = %x %x %x\012\000"
|
|
.LC109:
|
|
.ascii "id = %x,%x addr= %x,spare= %x %x %x %x data= %x\012"
|
|
.ascii "\000"
|
|
.LC110:
|
|
.ascii "...%s enter...\012\000"
|
|
.LC111:
|
|
.ascii "superBlkID = %x vpc=%x\012\000"
|
|
.LC112:
|
|
.ascii "flashmode = %x pagenum = %x %x\012\000"
|
|
.LC113:
|
|
.ascii "id = %x,%x addr= %x,spare= %x %x %x %x data=%x %x\012"
|
|
.ascii "\000"
|
|
.LC114:
|
|
.ascii "blk = %x vpc=%x mode = %x\012\000"
|
|
.LC115:
|
|
.ascii "mlc id = %x,%x addr= %x,spare= %x %x %x %x data=%x "
|
|
.ascii "%x\012\000"
|
|
.LC116:
|
|
.ascii "slc id = %x,%x addr= %x,spare= %x %x %x %x data=%x "
|
|
.ascii "%x\012\000"
|
|
.LC117:
|
|
.ascii "ftl_scan_all_ppa blk %x page %x flag: %x\012\000"
|
|
.LC118:
|
|
.ascii "ftl_scan_all_ppa blk %x page %x flag: %x .........."
|
|
.ascii "..... is bad block\012\000"
|
|
.LC119:
|
|
.ascii "addr= %x, status= %d,spare= %x %x %x %x data=%x %x\012"
|
|
.ascii "\000"
|
|
.LC120:
|
|
.ascii "%s finished\012\000"
|
|
.LC121:
|
|
.ascii "FlashMakeFactorBbt %d\012\000"
|
|
.LC122:
|
|
.ascii "bad block:%d %d\012\000"
|
|
.LC123:
|
|
.ascii "FMFB:%d %d\012\000"
|
|
.LC124:
|
|
.ascii "E:bad block:%d\012\000"
|
|
.LC125:
|
|
.ascii "FMFB:Save %d %d\012\000"
|
|
.LC126:
|
|
.ascii "FtlBbmTblFlush id=%x,page=%x,previd=%x cnt=%d\012\000"
|
|
.LC127:
|
|
.ascii "FtlBbmTblFlush error:%x\012\000"
|
|
.LC128:
|
|
.ascii "FtlBbmTblFlush error = %x error count = %d\012\000"
|
|
.LC129:
|
|
.ascii "FtlGcFreeBadSuperBlk 0x%x\012\000"
|
|
.LC130:
|
|
.ascii "decrement_vpc_count %x = %d\012\000"
|
|
.LC131:
|
|
.ascii "decrement_vpc_count %x = %d in free list\012\000"
|
|
.LC132:
|
|
.ascii "FtlVpcTblFlush error = %x error count = %d\012\000"
|
|
.LC133:
|
|
.ascii "page map lost: %x %x\012\000"
|
|
.LC134:
|
|
.ascii "FtlMapWritePage error = %x\012\000"
|
|
.LC135:
|
|
.ascii "FtlMapWritePage error = %x error count = %d\012\000"
|
|
.LC136:
|
|
.ascii "FtlVendorPartRead refresh = %x phyAddr = %x\012\000"
|
|
.LC137:
|
|
.ascii "no ect\000"
|
|
.LC138:
|
|
.ascii "slc mode\000"
|
|
.LC139:
|
|
.ascii "BBT:\000"
|
|
.LC140:
|
|
.ascii "region_id = %x phyAddr = %x\012\000"
|
|
.LC141:
|
|
.ascii "map_ppn:\000"
|
|
.LC142:
|
|
.ascii "load_l2p_region refresh = %x phyAddr = %x\012\000"
|
|
.LC143:
|
|
.ascii "FtlCheckVpc2 %x = %x %x\012\000"
|
|
.LC144:
|
|
.ascii "free blk vpc error %x = %x %x\012\000"
|
|
.LC145:
|
|
.ascii "error_flag %x\012\000"
|
|
.LC146:
|
|
.ascii "Ftlscanalldata = %x\012\000"
|
|
.LC147:
|
|
.ascii "scan lpa = %x ppa= %x\012\000"
|
|
.LC148:
|
|
.ascii "lba = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
|
|
.ascii "\000"
|
|
.LC149:
|
|
.ascii "RSB refresh addr %x\012\000"
|
|
.LC150:
|
|
.ascii "spuer block %x vpn is 0\012 \000"
|
|
.LC151:
|
|
.ascii "g_recovery_ppa %x ver %x\012 \000"
|
|
.LC152:
|
|
.ascii "FtlCheckVpc %x = %x %x\012\000"
|
|
.LC153:
|
|
.ascii "FtlGcScanTempBlk Error ID %x %x!!!!!!! \012\000"
|
|
.LC154:
|
|
.ascii "FtlGcScanTempBlkError ID %x %x!!!!!!!\012\000"
|
|
.LC155:
|
|
.ascii "GC des block %x done\012\000"
|
|
.LC156:
|
|
.ascii "too many bad block = %d %d\012\000"
|
|
.LC157:
|
|
.ascii "%d GC datablk = %x vpc %x %x\012\000"
|
|
.LC158:
|
|
.ascii "SWL %x, FSB = %x vpc= %x,ec=%x th=%x\012\000"
|
|
.LC159:
|
|
.ascii "Ftlwrite decrement_vpc_count %x = %d\012\000"
|
|
.LC160:
|
|
.ascii "rk_ftl_de_init %x\012\000"
|
|
.LC161:
|
|
.ascii "...%s: no bad block mapping table, format device\012"
|
|
.ascii "\000"
|
|
.LC162:
|
|
.ascii "...%s FtlSysBlkInit error ,format device!\012\000"
|
|
.LC163:
|
|
.ascii "FtlInit %x\012\000"
|
|
.LC164:
|
|
.ascii "fix power lost blk = %x vpc=%x\012\000"
|
|
.LC165:
|
|
.ascii "erase power lost blk = %x vpc=%x\012\000"
|
|
.LC166:
|
|
.ascii "FtlWrite: lpa error:%x %x\012\000"
|
|
.LC167:
|
|
.ascii "id = %x,%x addr= %x,spare= %x %x %x %x data = %x\012"
|
|
.ascii "\000"
|
|
.LC168:
|
|
.ascii ":\000"
|
|
.LC169:
|
|
.ascii "phyBlk = %x,addr= %x,spare= %x %x %x %x data=%x %x\012"
|
|
.ascii "\000"
|
|
.LC170:
|
|
.ascii "Mblk:\000"
|
|
.LC171:
|
|
.ascii "L2P:\000"
|
|
.LC172:
|
|
.ascii "L2PC:\000"
|
|
.LC173:
|
|
.ascii "write_idblock fix data %x %x\012\000"
|
|
.LC174:
|
|
.ascii "idblk:\000"
|
|
.LC175:
|
|
.ascii "idb reverse %x %x\012\000"
|
|
.LC176:
|
|
.ascii "write_idblock totle_sec %x %x %x %x\012\000"
|
|
.LC177:
|
|
.ascii "IDBlockWriteData %x %x\012\000"
|
|
.LC178:
|
|
.ascii "IDBlockWriteData %x %x ret= %x\012\000"
|
|
.LC179:
|
|
.ascii "IdBlockReadData %x %x\012\000"
|
|
.LC180:
|
|
.ascii "IdBlockReadData %x %x ret= %x\012\000"
|
|
.LC181:
|
|
.ascii "write and check error:%d idb=%x,offset=%x,r=%x,w=%x"
|
|
.ascii "\012\000"
|
|
.LC182:
|
|
.ascii "write\000"
|
|
.LC183:
|
|
.ascii "read\000"
|
|
.LC184:
|
|
.ascii "write_idblock error %d\012\000"
|
|
.LC185:
|
|
.ascii "wl_lba %p %x %x %x\012\000"
|
|
.LC186:
|
|
.ascii "RKNAND_GET_DRM_KEY\012\000"
|
|
.LC187:
|
|
.ascii "rk_copy_from_user error\012\000"
|
|
.LC188:
|
|
.ascii "RKNAND_STORE_DRM_KEY\012\000"
|
|
.LC189:
|
|
.ascii "RKNAND_DIASBLE_SECURE_BOOT\012\000"
|
|
.LC190:
|
|
.ascii "RKNAND_ENASBLE_SECURE_BOOT\012\000"
|
|
.LC191:
|
|
.ascii "RKNAND_GET_SN_SECTOR\012\000"
|
|
.LC192:
|
|
.ascii "RKNAND_LOADER_UNLOCK\012\000"
|
|
.LC193:
|
|
.ascii "RKNAND_LOADER_STATUS\012\000"
|
|
.LC194:
|
|
.ascii "RKNAND_LOADER_LOCK\012\000"
|
|
.LC195:
|
|
.ascii "LockKey not match %d\012\000"
|
|
.LC196:
|
|
.ascii "RKNAND_GET_VENDOR_SECTOR\012\000"
|
|
.LC197:
|
|
.ascii "RKNAND_STORE_VENDOR_SECTOR\012\000"
|
|
.LC198:
|
|
.ascii "return ret = %lx\012\000"
|
|
.LC199:
|
|
.ascii "secureBootEn check error\012\000"
|
|
.LC200:
|
|
.ascii "\0013vendor storage %x,%x,%x\012\000"
|