📄 intel_28f160.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL E:\WM604\PLATFORM\SEUICBSP\SRC\BOOTLOADER\EBOOT\.\intel_28f160.cpp
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
00000 AREA |.bss|, NOINIT
|s_bXIPMode| % 0x4
00000 AREA |.data|, DATA
|g_EraseBlockInfo| DCD 0x20
DCD 0x10000
; File e:\wm604\platform\seuicbsp\src\bootloader\eboot\intel_28f160.cpp
00000 AREA |.text| { |?intel_IssueCmd@@YAXPAU_INTEL_FLS_INFO_@@G@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?intel_IssueCmd@@YAXPAU_INTEL_FLS_INFO_@@G@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?intel_IssueCmd@@YAXPAU_INTEL_FLS_INFO_@@G@Z| } ; comdat associative
|$T30053| DCD |$L30052|
DCD 0x40000300
; Function compile flags: /Ogsy
00000 AREA |.text| { |?intel_IssueCmd@@YAXPAU_INTEL_FLS_INFO_@@G@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?intel_IssueCmd@@YAXPAU_INTEL_FLS_INFO_@@G@Z| PROC ; intel_IssueCmd
; 98 : {
00000 |$L30052|
00000 |$M30050|
; 99 : *((volatile WORD*)(pSTFlsInfo->dwBaseAddr)) = wCmd;
00000 e5903000 ldr r3, [r0]
00004 e1c310b0 strh r1, [r3]
; 100 : }
00008 e12fff1e bx lr
0000c |$M30051|
ENDP ; |?intel_IssueCmd@@YAXPAU_INTEL_FLS_INFO_@@G@Z|, intel_IssueCmd
00000 AREA |.text| { |?intel_ReadWord@@YAGPAU_INTEL_FLS_INFO_@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?intel_ReadWord@@YAGPAU_INTEL_FLS_INFO_@@K@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?intel_ReadWord@@YAGPAU_INTEL_FLS_INFO_@@K@Z| } ; comdat associative
|$T30064| DCD |$L30063|
DCD 0x40000300
; Function compile flags: /Ogsy
00000 AREA |.text| { |?intel_ReadWord@@YAGPAU_INTEL_FLS_INFO_@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?intel_ReadWord@@YAGPAU_INTEL_FLS_INFO_@@K@Z| PROC ; intel_ReadWord
; 103 : {
00000 |$L30063|
00000 |$M30061|
; 104 : return *(volatile WORD*)(pSTFlsInfo->dwBaseAddr + dwOffset);
00000 e5903000 ldr r3, [r0]
00004 e19300b1 ldrh r0, [r3, +r1]
; 105 : }
00008 e12fff1e bx lr
0000c |$M30062|
ENDP ; |?intel_ReadWord@@YAGPAU_INTEL_FLS_INFO_@@K@Z|, intel_ReadWord
00000 AREA |.text| { |?intel_WriteWord@@YAXPAU_INTEL_FLS_INFO_@@KG@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?intel_WriteWord@@YAXPAU_INTEL_FLS_INFO_@@KG@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?intel_WriteWord@@YAXPAU_INTEL_FLS_INFO_@@KG@Z| } ; comdat associative
|$T30074| DCD |$L30073|
DCD 0x40000300
; Function compile flags: /Ogsy
00000 AREA |.text| { |?intel_WriteWord@@YAXPAU_INTEL_FLS_INFO_@@KG@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?intel_WriteWord@@YAXPAU_INTEL_FLS_INFO_@@KG@Z| PROC ; intel_WriteWord
; 108 : {
00000 |$L30073|
00000 |$M30071|
; 109 : *((volatile WORD*)(pSTFlsInfo->dwBaseAddr+dwOffset)) = wData;
00000 e5903000 ldr r3, [r0]
00004 e18320b1 strh r2, [r3, +r1]
; 110 : }
00008 e12fff1e bx lr
0000c |$M30072|
ENDP ; |?intel_WriteWord@@YAXPAU_INTEL_FLS_INFO_@@KG@Z|, intel_WriteWord
00000 AREA |.text| { |?intel_WaitComplete@@YAHPAU_INTEL_FLS_INFO_@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?intel_WaitComplete@@YAHPAU_INTEL_FLS_INFO_@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?intel_WaitComplete@@YAHPAU_INTEL_FLS_INFO_@@@Z| } ; comdat associative
|$T30097| DCD |$L30096|
DCD 0x40001301
; Function compile flags: /Ogsy
00000 AREA |.text| { |?intel_WaitComplete@@YAHPAU_INTEL_FLS_INFO_@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?intel_WaitComplete@@YAHPAU_INTEL_FLS_INFO_@@@Z| PROC ; intel_WaitComplete
; 113 : {
00000 |$L30096|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M30094|
00004 e1a01000 mov r1, r0
; 114 : WORD status = 0;
; 115 : BOOL ret = TRUE;
00008 e5912000 ldr r2, [r1]
0000c e3a00001 mov r0, #1
00010 e3a0e070 mov lr, #0x70
00014 |$L29745|
; 116 :
; 117 : do
; 118 : {
; 119 : intel_IssueCmd(pSTFlsInfo, CMD_READSTATUS);
00014 e1c2e0b0 strh lr, [r2]
; 120 : status = intel_ReadWord(pSTFlsInfo, 0);
00018 e5912000 ldr r2, [r1]
0001c e1d230b0 ldrh r3, [r2]
; 121 : } while (!(status & 0x80));
00020 e3130080 tst r3, #0x80
00024 0afffffa beq |$L29745|
; 122 :
; 123 : // error in program or erase?
; 124 : if (status & 0x20 || status & 0x10)
00028 e3130020 tst r3, #0x20
0002c 1a000001 bne |$L29749|
00030 e3130010 tst r3, #0x10
00034 0a000000 beq |$L29748|
00038 |$L29749|
; 125 : ret = FALSE;
00038 e3a00000 mov r0, #0
0003c |$L29748|
; 126 :
; 127 : intel_IssueCmd(pSTFlsInfo, CMD_CLEARSTATUS);
0003c e3a03050 mov r3, #0x50
00040 e1c230b0 strh r3, [r2]
; 128 :
; 129 : return ret;
; 130 : }
00044 e49de004 ldr lr, [sp], #4
00048 e12fff1e bx lr
0004c |$M30095|
ENDP ; |?intel_WaitComplete@@YAHPAU_INTEL_FLS_INFO_@@@Z|, intel_WaitComplete
EXPORT |??_C@_1DE@DAEPDGKI@?$AAL?$AAo?$AAc?$AAk?$AA?1?$AAu?$AAn?$AAL?$AAo?$AAc?$AAk?$AA?5?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe?$AAr@| [ DATA ] ; `string'
IMPORT |NKDbgPrintfW|
00004 AREA |.bss|, NOINIT
|g_FlashInfo| % 0x1c
00000 AREA |.text| { |?SetBlockLockStatusEx@@YAHKH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?SetBlockLockStatusEx@@YAHKH@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?SetBlockLockStatusEx@@YAHKH@Z| } ; comdat associative
|$T30158| DCD |$L30157|
DCD 0x40002901
00000 AREA |.rdata| { |??_C@_1DE@DAEPDGKI@?$AAL?$AAo?$AAc?$AAk?$AA?1?$AAu?$AAn?$AAL?$AAo?$AAc?$AAk?$AA?5?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe?$AAr@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DE@DAEPDGKI@?$AAL?$AAo?$AAc?$AAk?$AA?1?$AAu?$AAn?$AAL?$AAo?$AAc?$AAk?$AA?5?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe?$AAr@| DCB "L"
DCB 0x0, "o", 0x0, "c", 0x0, "k", 0x0, "/", 0x0, "u", 0x0, "n"
DCB 0x0, "L", 0x0, "o", 0x0, "c", 0x0, "k", 0x0, " ", 0x0, "B"
DCB 0x0, "l", 0x0, "o", 0x0, "c", 0x0, "k", 0x0, " ", 0x0, "e"
DCB 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |?SetBlockLockStatusEx@@YAHKH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?SetBlockLockStatusEx@@YAHKH@Z| PROC ; SetBlockLockStatusEx
; 133 : {
00000 |$L30157|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M30155|
00004 e3510000 cmp r1, #0
00008 e1a02000 mov r2, r0
; 134 : intel_IssueCmd(&g_FlashInfo, CMD_CLEARSTATUS);
0000c e59f408c ldr r4, [pc, #0x8C]
00010 e3a05050 mov r5, #0x50
; 135 : intel_IssueCmd(&g_FlashInfo, CMD_UNLOCK);
00014 e3a01060 mov r1, #0x60
00018 e5943000 ldr r3, [r4]
; 136 :
; 137 : if (bLock)
0001c e3a00001 mov r0, #1
; 138 : intel_WriteWord(&g_FlashInfo, BlockAddr, 0x01);
; 139 : else
; 140 : intel_WriteWord(&g_FlashInfo, BlockAddr, CMD_CONFIRM);
; 141 :
; 142 : if(!intel_WaitComplete(&g_FlashInfo))
00020 e3a0e070 mov lr, #0x70
00024 e1c350b0 strh r5, [r3]
00028 e5943000 ldr r3, [r4]
0002c e1c310b0 strh r1, [r3]
00030 e5943000 ldr r3, [r4]
00034 03a010d0 moveq r1, #0xD0
00038 118300b2 strneh r0, [r3, +r2]
0003c 018310b2 streqh r1, [r3, +r2]
00040 e5942000 ldr r2, [r4]
00044 e3a01001 mov r1, #1
00048 |$L30129|
00048 e1c2e0b0 strh lr, [r2]
0004c e5942000 ldr r2, [r4]
00050 e1d230b0 ldrh r3, [r2]
00054 e3130080 tst r3, #0x80
00058 0afffffa beq |$L30129|
0005c e3130020 tst r3, #0x20
00060 1a000001 bne |$L30133|
00064 e3130010 tst r3, #0x10
00068 0a000000 beq |$L30132|
0006c |$L30133|
0006c e3a01000 mov r1, #0
00070 |$L30132|
00070 e1c250b0 strh r5, [r2]
00074 e3510000 cmp r1, #0
00078 1a000002 bne |$L29756|
; 143 : {
; 144 : RETAILMSG(1, (TEXT("Lock/unLock Block error\r\n")));
0007c e59f0018 ldr r0, [pc, #0x18]
00080 eb000000 bl NKDbgPrintfW
00084 e3a00000 mov r0, #0
00088 |$L29756|
; 145 : intel_IssueCmd(&g_FlashInfo, CMD_READARRAY);
; 146 : return FALSE;
; 147 : }
; 148 :
; 149 : intel_IssueCmd(&g_FlashInfo, CMD_READARRAY);
00088 e5943000 ldr r3, [r4]
0008c e3a020ff mov r2, #0xFF
; 150 : return TRUE;
00090 e1c320b0 strh r2, [r3]
; 151 : }
00094 e8bd4030 ldmia sp!, {r4, r5, lr}
00098 e12fff1e bx lr
0009c |$L30160|
0009c 00000000 DCD |??_C@_1DE@DAEPDGKI@?$AAL?$AAo?$AAc?$AAk?$AA?1?$AAu?$AAn?$AAL?$AAo?$AAc?$AAk?$AA?5?$AAB?$AAl?$AAo?$AAc?$AAk?$AA?5?$AAe?$AAr@|
000a0 00000000 DCD |g_FlashInfo|
000a4 |$M30156|
ENDP ; |?SetBlockLockStatusEx@@YAHKH@Z|, SetBlockLockStatusEx
00000 AREA |.text| { |?SetBlockLockStatus@@YAHKKH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?SetBlockLockStatus@@YAHKKH@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?SetBlockLockStatus@@YAHKKH@Z| } ; comdat associative
|$T30182| DCD |$L30181|
DCD 0x40003a01
; Function compile flags: /Ogsy
00000 AREA |.text| { |?SetBlockLockStatus@@YAHKKH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?SetBlockLockStatus@@YAHKKH@Z| PROC ; SetBlockLockStatus
; 154 : {
00000 |$L30181|
00000 e92d4ff0 stmdb sp!, {r4 - r11, lr}
00004 |$M30179|
00004 e1a09002 mov r9, r2
00008 e1b07001 movs r7, r1
0000c e1a05000 mov r5, r0
; 155 : DWORD i;
; 156 :
; 157 : while (NumBlocks--)
00010 0a00002d beq |$L30171|
00014 e3a0ab22 mov r10, #0x22, 22
00018 e3a0bb22 mov r11, #0x22, 22
0001c e59f80c0 ldr r8, [pc, #0xC0]
00020 e38aa0c3 orr r10, r10, #0xC3
00024 e38bb0c2 orr r11, r11, #0xC2
00028 |$L29765|
00028 e2477001 sub r7, r7, #1
; 158 : {
; 159 : if (blockID == 0 && g_FlashInfo.flashType == FLASH_F160C3BCES)
0002c e3550000 cmp r5, #0
00030 1a00000c bne |$L29767|
00034 e5983018 ldr r3, [r8, #0x18]
00038 e153000a cmp r3, r10
0003c 1a00001a bne |$L29773|
; 160 : {
; 161 : for (i = 0; i < 8; i++)
00040 e3a04000 mov r4, #0
00044 |$L29768|
; 162 : {
; 163 : if (!SetBlockLockStatusEx(i * SMALL_BLOCK_SIZE, bLock))
00044 e1a01009 mov r1, r9
00048 e1a00004 mov r0, r4
0004c eb000000 bl |?SetBlockLockStatusEx@@YAHKH@Z|
00050 e3500000 cmp r0, #0
00054 0a00001f beq |$L30168|
00058 e2844a02 add r4, r4, #2, 20
0005c e3540801 cmp r4, #1, 16
00060 3afffff7 bcc |$L29768|
; 164 : return FALSE;
; 165 : }
; 166 : }
; 167 : else if (blockID == 31 && g_FlashInfo.flashType == FLASH_F160C3TDA4137360)
00064 ea000015 b |$L29779|
00068 |$L29767|
00068 e355001f cmp r5, #0x1F
0006c 1a00000e bne |$L29773|
00070 e5983018 ldr r3, [r8, #0x18]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -