📄 bsl_flash.asm
字号:
ADD .L1X B4,A5,A3 ; |293|
|| [!A1] LDW .D2T2 *+SP(20),B3 ; |311|
|| MVKH .S1 0x90005555,A0 ; |87|
|| MVKH .S2 0x90002aaa,B5 ; |86|
|| MV .D1 A3,A4
; BRANCH OCCURS ; |289|
;** --------------------------------------------------------------------------*
STB .D1T1 A12,*A11 ; |85|
ADD .S2X 1,A3,B4
|| STB .D2T2 B6,*B5 ; |86|
ADD .S2X 1,A4,B6
|| STB .D1T1 A13,*A0 ; |87|
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 294
;* Loop opening brace source line : 294
;* Loop closing brace source line : 296
;* Loop Unroll Multiple : 4x
;* Known Minimum Trip Count : 32
;* Known Maximum Trip Count : 32
;* Known Max Trip Count Factor : 32
;* Loop Carried Dependency Bound(^) : 24
;* Unpartitioned Resource Bound : 4
;* Partitioned Resource Bound(*) : 6
;* Resource Partition:
;* A-side B-side
;* .L units 0 0
;* .S units 0 1
;* .D units 6* 2
;* .M units 0 0
;* .X cross paths 0 0
;* .T address paths 6* 2
;* Long read paths 3 1
;* Long write paths 0 0
;* Logical ops (.LS) 0 0 (.L or .S unit)
;* Addition ops (.LSD) 1 1 (.L or .S or .D unit)
;* Bound(.L .S .LS) 0 1
;* Bound(.L .S .D .LS .LSD) 3 2
;*
;* Searching for software pipeline schedule at ...
;* ii = 24 Schedule found with 1 iterations in parallel
;* done
;*
;* Loop is interruptible
;* Collapsed epilog stages : 0
;* Collapsed prolog stages : 0
;*
;* Minimum safe trip count : 1 (after unrolling)
;*----------------------------------------------------------------------------*
L7: ; PIPED LOOP PROLOG
;** --------------------------------------------------------------------------*
L8: ; PIPED LOOP KERNEL
LDB .D1T1 *++A4(4),A0 ; ^ |295|
NOP 4
STB .D1T1 A0,*++A3(4) ; ^ |295|
ADD .D1 1,A3,A5 ; |295|
|| LDB .D2T2 *++B6(4),B5 ; ^ |295|
NOP 4
STB .D2T2 B5,*++B4(4) ; ^ |295|
LDB .D1T1 *+A4(2),A0 ; ^ |295|
NOP 4
[ B0] SUB .D2 B0,1,B0 ; |296|
|| STB .D1T1 A0,*+A3(2) ; ^ |295|
[ B0] B .S2 L8 ; |296|
|| LDB .D1T1 *+A4(3),A0 ; ^ |295|
NOP 4
STB .D1T1 A0,*+A3(3) ; ^ |295|
;** --------------------------------------------------------------------------*
L9: ; PIPED LOOP EPILOG
;** --------------------------------------------------------------------------*
MVKL .S1 _page_buffer+127,A0 ; |300|
|| ADD .D1 4,A3,A3
MVKH .S1 _page_buffer+127,A0 ; |300|
|| LDB .D1T1 *--A3,A4 ; |298|
LDB .D1T1 *A0,A0 ; |300|
NOP 3
STB .D2T1 A4,*+SP(4) ; |298|
LDB .D2T2 *+SP(4),B5 ; |300|
|| MV .S2X A0,B4
NOP 4
CMPEQ .L1X B5,A0,A1 ; |300|
[ A1] B .S2 L12 ; |300|
[ A1] CMPLTU .L1 A2,A6,A1 ; |304|
NOP 4
; BRANCH OCCURS ; |300|
;** --------------------------------------------------------------------------*
LDB .D1T1 *A3,A0 ; |301|
NOP 4
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 300
;* Loop opening brace source line : 300
;* Loop closing brace source line : 302
;* Known Minimum Trip Count : 1
;* Known Max Trip Count Factor : 1
;* Loop Carried Dependency Bound(^) : 13
;* Unpartitioned Resource Bound : 2
;* Partitioned Resource Bound(*) : 2
;* Resource Partition:
;* A-side B-side
;* .L units 0 1
;* .S units 1 0
;* .D units 1 2*
;* .M units 0 0
;* .X cross paths 0 0
;* .T address paths 2* 1
;* Long read paths 1 0
;* Long write paths 0 0
;* Logical ops (.LS) 0 0 (.L or .S unit)
;* Addition ops (.LSD) 4 0 (.L or .S or .D unit)
;* Bound(.L .S .LS) 1 1
;* Bound(.L .S .D .LS .LSD) 2* 1
;*
;* Disqualified loop: Loop carried dependency bound too large
;*----------------------------------------------------------------------------*
L10:
STB .D2T1 A0,*+SP(4) ; |301|
LDB .D2T2 *+SP(4),B5 ; |302|
NOP 4
CMPEQ .L2 B5,B4,B0 ; |302|
[!B0] B .S1 L10 ; |302|
[!B0] LDB .D1T1 *A3,A0 ; |301|
NOP 4
; BRANCH OCCURS ; |302|
;** --------------------------------------------------------------------------*
L11:
CMPLTU .L1 A2,A6,A1 ; |304|
;** --------------------------------------------------------------------------*
L12:
[!A1] B .S1 L14 ; |304|
MVKL .S2 RL4,B3 ; |305|
MVKL .S2 _FLASH_write,B5 ; |305|
MVKH .S2 RL4,B3 ; |305|
MVKH .S2 _FLASH_write,B5 ; |305|
|| SUB .D1 A6,A2,A6
|| MV .S1 A7,A4
|| [!A1] LDW .D2T2 *+SP(20),B3 ; |311|
NOP 1
; BRANCH OCCURS ; |304|
;** --------------------------------------------------------------------------*
B .S2 B5 ; |305|
ADD .S2X 3,A5,B4
NOP 4
RL4: ; CALL OCCURS ; |305|
LDW .D2T2 *+SP(20),B3 ; |311|
;** --------------------------------------------------------------------------*
L13:
NOP 1
;** --------------------------------------------------------------------------*
L14:
LDW .D2T1 *+SP(16),A12 ; |311|
|| MVKL .S1 0x1800004,A0 ; |310|
LDW .D2T1 *+SP(12),A11 ; |311|
|| MVKH .S1 0x1800004,A0 ; |310|
STW .D1T1 A10,*A0 ; |310|
B .S2 B3 ; |311|
|| LDW .D2T1 *+SP(8),A10 ; |311|
LDW .D2T1 *++SP(24),A13 ; |311|
NOP 4
; BRANCH OCCURS ; |311|
.sect ".text:_FLASH_read"
.clink
.global _FLASH_read
;******************************************************************************
;* FUNCTION NAME: _FLASH_read *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B3,B4,B5,B6,B9 *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B3,B4,B5,B6,B9 *
;* Local Frame Size : 0 Args + 0 Auto + 0 Save = 0 byte *
;******************************************************************************
_FLASH_read:
;** --------------------------------------------------------------------------*
MVKL .S1 0x1800004,A0 ; |233|
MVKH .S1 0x1800004,A0 ; |233|
|| MVKL .S2 _validate_FLASH,B6 ; |245|
LDW .D1T1 *A0,A9 ; |233|
|| MVKH .S2 _validate_FLASH,B6 ; |245|
B .S2 B6 ; |245|
MVKL .S2 0x1800004,B5 ; |242|
MV .D2 B3,B9 ; |231|
MVKL .S2 RL6,B3 ; |245|
CLR .S1 A9,4,7,A0 ; |242|
|| MVKH .S2 0x1800004,B5 ; |242|
STW .D2T1 A0,*B5 ; |242|
|| MVKH .S2 RL6,B3 ; |245|
|| MV .L2X A6,B4
|| MV .D1 A4,A8
|| MV .S1X B4,A7
RL6: ; CALL OCCURS ; |245|
MV .D1 A4,A2
[!A2] MV .D1 A2,A6 ; |245|
|| MV .S2X A6,B0
MV .D1 A6,A1 ; |245|
[!A1] B .S1 L16 ; |245|
[ A1] SUB .D2 B0,1,B0 ; |247|
NOP 4
; BRANCH OCCURS ; |245|
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 247
;* Loop opening brace source line : 247
;* Loop closing brace source line : 247
;* Known Minimum Trip Count : 1
;* Known Max Trip Count Factor : 1
;* Loop Carried Dependency Bound(^) : 7
;* Unpartitioned Resource Bound : 1
;* Partitioned Resource Bound(*) : 1
;* Resource Partition:
;* A-side B-side
;* .L units 0 0
;* .S units 1* 0
;* .D units 1* 1*
;* .M units 0 0
;* .X cross paths 0 1*
;* .T address paths 1* 1*
;* Long read paths 0 1*
;* Long write paths 0 0
;* Logical ops (.LS) 0 1 (.L or .S unit)
;* Addition ops (.LSD) 0 1 (.L or .S or .D unit)
;* Bound(.L .S .LS) 1* 1*
;* Bound(.L .S .D .LS .LSD) 1* 1*
;*
;* Disqualified loop: Loop carried dependency bound too large
;*----------------------------------------------------------------------------*
L15:
[ B0] B .S1 L15 ; |247|
|| LDB .D1T1 *A8++,A0 ; |247|
[ B0] SUB .D2 B0,1,B0 ; |247|
NOP 3
STB .D1T1 A0,*A7++ ; |247|
; BRANCH OCCURS ; |247|
;** --------------------------------------------------------------------------*
L16:
B .S2 B9 ; |251|
MVKL .S1 0x1800004,A0 ; |250|
MVKH .S1 0x1800004,A0 ; |250|
STW .D1T1 A9,*A0 ; |250|
NOP 2
; BRANCH OCCURS ; |251|
.sect ".text:_FLASH_erase"
.clink
.global _FLASH_erase
;******************************************************************************
;* FUNCTION NAME: _FLASH_erase *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,B0,B1,B2, *
;* B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,SP *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,B0,B1,B2, *
;* B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,SP *
;* Local Frame Size : 0 Args + 4 Auto + 28 Save = 32 byte *
;******************************************************************************
_FLASH_erase:
;** --------------------------------------------------------------------------*
MVKL .S1 0x1800004,A0 ; |159|
|| MV .D1 A4,A6
EXTU .S1 A6,25,25,A2 ; |66|
|| STW .D2T2 B12,*SP--(32) ; |157|
MVKH .S1 0x1800004,A0 ; |159|
|| STW .D2T1 A10,*+SP(8) ; |157|
MVK .S1 128,A0 ; |66|
|| LDW .D1T1 *A0,A10 ; |159|
|| MV .L1 A2,A1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -