📄 m29w800dt.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL E:\WM604\PLATFORM\SEUICBSP\SRC\BOOTLOADER\EBOOT\.\m29w800dt.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
|s_STErsBlkInfo| DCD 0x10
DCD 0x10000
EXPORT |?STUnlockChip@@YAXPAU_ST_FLS_INFO_@@@Z| ; STUnlockChip
00004 AREA |.bss|, NOINIT
|s_STFlsInfo| % 0x2c
; File e:\wm604\platform\seuicbsp\src\bootloader\eboot\m29w800dt.cpp
00000 AREA |.text| { |?STUnlockChip@@YAXPAU_ST_FLS_INFO_@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?STUnlockChip@@YAXPAU_ST_FLS_INFO_@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?STUnlockChip@@YAXPAU_ST_FLS_INFO_@@@Z| } ; comdat associative
|$T34546| DCD |$L34545|
DCD 0x40000d01
; Function compile flags: /Ogsy
00000 AREA |.text| { |?STUnlockChip@@YAXPAU_ST_FLS_INFO_@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?STUnlockChip@@YAXPAU_ST_FLS_INFO_@@@Z| PROC ; STUnlockChip
; 78 : {
00000 |$L34545|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M34543|
; 79 : *((volatile WORD*)(pSTFlsInfo->dwBaseAddr + s_STFlsInfo.stFlashCmd.dwUnlockAddr1))=ST_CMD_UNLOCK1;
00004 e59f1024 ldr r1, [pc, #0x24]
00008 e5902000 ldr r2, [r0]
0000c e3a0e0aa mov lr, #0xAA
00010 e5913024 ldr r3, [r1, #0x24]
; 80 : *((volatile WORD*)(pSTFlsInfo->dwBaseAddr + s_STFlsInfo.stFlashCmd.dwUnlockAddr2))=ST_CMD_UNLOCK2;
00014 e3a04055 mov r4, #0x55
00018 e182e0b3 strh lr, [r2, +r3]
0001c e5902000 ldr r2, [r0]
00020 e5913028 ldr r3, [r1, #0x28]
00024 e18240b3 strh r4, [r2, +r3]
; 81 : }
00028 e8bd4010 ldmia sp!, {r4, lr}
0002c e12fff1e bx lr
00030 |$L34548|
00030 00000000 DCD |s_STFlsInfo|
00034 |$M34544|
ENDP ; |?STUnlockChip@@YAXPAU_ST_FLS_INFO_@@@Z|, STUnlockChip
EXPORT |?STIssueCmd@@YAXPAU_ST_FLS_INFO_@@G@Z| ; STIssueCmd
00000 AREA |.text| { |?STIssueCmd@@YAXPAU_ST_FLS_INFO_@@G@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?STIssueCmd@@YAXPAU_ST_FLS_INFO_@@G@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?STIssueCmd@@YAXPAU_ST_FLS_INFO_@@G@Z| } ; comdat associative
|$T34556| DCD |$L34555|
DCD 0x40000600
; Function compile flags: /Ogsy
00000 AREA |.text| { |?STIssueCmd@@YAXPAU_ST_FLS_INFO_@@G@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?STIssueCmd@@YAXPAU_ST_FLS_INFO_@@G@Z| PROC ; STIssueCmd
; 83 : {
00000 |$L34555|
00000 |$M34553|
; 84 : *((volatile WORD*)(pSTFlsInfo->dwBaseAddr + s_STFlsInfo.stFlashCmd.dwCmdAddr))=wCmd;
00000 e59f300c ldr r3, [pc, #0xC]
00004 e5902000 ldr r2, [r0]
00008 e5933020 ldr r3, [r3, #0x20]
0000c e18210b3 strh r1, [r2, +r3]
; 85 : }
00010 e12fff1e bx lr
00014 |$L34558|
00014 00000000 DCD |s_STFlsInfo|
00018 |$M34554|
ENDP ; |?STIssueCmd@@YAXPAU_ST_FLS_INFO_@@G@Z|, STIssueCmd
EXPORT |?STReadWord@@YAGPAU_ST_FLS_INFO_@@K@Z| ; STReadWord
00000 AREA |.text| { |?STReadWord@@YAGPAU_ST_FLS_INFO_@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?STReadWord@@YAGPAU_ST_FLS_INFO_@@K@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?STReadWord@@YAGPAU_ST_FLS_INFO_@@K@Z| } ; comdat associative
|$T34568| DCD |$L34567|
DCD 0x40000300
; Function compile flags: /Ogsy
00000 AREA |.text| { |?STReadWord@@YAGPAU_ST_FLS_INFO_@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?STReadWord@@YAGPAU_ST_FLS_INFO_@@K@Z| PROC ; STReadWord
; 87 : {
00000 |$L34567|
00000 |$M34565|
; 88 : return *(volatile WORD*)(pSTFlsInfo->dwBaseAddr+dwOffset);
00000 e5903000 ldr r3, [r0]
00004 e19300b1 ldrh r0, [r3, +r1]
; 89 : }
00008 e12fff1e bx lr
0000c |$M34566|
ENDP ; |?STReadWord@@YAGPAU_ST_FLS_INFO_@@K@Z|, STReadWord
EXPORT |?STWriteWord@@YAXPAU_ST_FLS_INFO_@@KG@Z| ; STWriteWord
00000 AREA |.text| { |?STWriteWord@@YAXPAU_ST_FLS_INFO_@@KG@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?STWriteWord@@YAXPAU_ST_FLS_INFO_@@KG@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?STWriteWord@@YAXPAU_ST_FLS_INFO_@@KG@Z| } ; comdat associative
|$T34578| DCD |$L34577|
DCD 0x40000300
; Function compile flags: /Ogsy
00000 AREA |.text| { |?STWriteWord@@YAXPAU_ST_FLS_INFO_@@KG@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?STWriteWord@@YAXPAU_ST_FLS_INFO_@@KG@Z| PROC ; STWriteWord
; 91 : {
00000 |$L34577|
00000 |$M34575|
; 92 : *((volatile WORD*)(pSTFlsInfo->dwBaseAddr+dwOffset))=wData;
00000 e5903000 ldr r3, [r0]
00004 e18320b1 strh r2, [r3, +r1]
; 93 : }
00008 e12fff1e bx lr
0000c |$M34576|
ENDP ; |?STWriteWord@@YAXPAU_ST_FLS_INFO_@@KG@Z|, STWriteWord
EXPORT |?STWaitComplete@@YAHPAU_ST_FLS_INFO_@@@Z| ; STWaitComplete
EXPORT |??_C@_1HA@IKGBGCGG@?$AAN?$AAo?$AAr?$AA?5?$AAf?$AAl?$AAa?$AAs?$AAh?$AA?5?$AAo?$AAp?$AAe?$AAr?$AAa?$AAt?$AAe?$AA?5?$AAE?$AAR@| [ DATA ] ; `string'
IMPORT |NKDbgPrintfW|
00000 AREA |.text| { |?STWaitComplete@@YAHPAU_ST_FLS_INFO_@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?STWaitComplete@@YAHPAU_ST_FLS_INFO_@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?STWaitComplete@@YAHPAU_ST_FLS_INFO_@@@Z| } ; comdat associative
|$T34598| DCD |$L34597|
DCD 0x40002302
00000 AREA |.rdata| { |??_C@_1HA@IKGBGCGG@?$AAN?$AAo?$AAr?$AA?5?$AAf?$AAl?$AAa?$AAs?$AAh?$AA?5?$AAo?$AAp?$AAe?$AAr?$AAa?$AAt?$AAe?$AA?5?$AAE?$AAR@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HA@IKGBGCGG@?$AAN?$AAo?$AAr?$AA?5?$AAf?$AAl?$AAa?$AAs?$AAh?$AA?5?$AAo?$AAp?$AAe?$AAr?$AAa?$AAt?$AAe?$AA?5?$AAE?$AAR@| DCB "N"
DCB 0x0, "o", 0x0, "r", 0x0, " ", 0x0, "f", 0x0, "l", 0x0, "a"
DCB 0x0, "s", 0x0, "h", 0x0, " ", 0x0, "o", 0x0, "p", 0x0, "e"
DCB 0x0, "r", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "E"
DCB 0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, "!", 0x0, "w"
DCB 0x0, "O", 0x0, "l", 0x0, "d", 0x0, "S", 0x0, "t", 0x0, "a"
DCB 0x0, "t", 0x0, "u", 0x0, "s", 0x0, "=", 0x0, "0", 0x0, "x"
DCB 0x0, "%", 0x0, "x", 0x0, ",", 0x0, " ", 0x0, "w", 0x0, "S"
DCB 0x0, "t", 0x0, "a", 0x0, "t", 0x0, "u", 0x0, "s", 0x0, "="
DCB 0x0, "0", 0x0, "x", 0x0, "%", 0x0, "x", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |?STWaitComplete@@YAHPAU_ST_FLS_INFO_@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?STWaitComplete@@YAHPAU_ST_FLS_INFO_@@@Z| PROC ; STWaitComplete
; 96 : {
00000 |$L34597|
00000 e52de004 str lr, [sp, #-4]!
00004 e24dd004 sub sp, sp, #4
00008 |$M34595|
; 97 : volatile WORD wStatus, wOldStatus;
; 98 :
; 99 : wOldStatus = *((volatile WORD *)(pSTFlsInfo->dwBaseAddr));
00008 e5901000 ldr r1, [r0]
0000c e1d130b0 ldrh r3, [r1]
; 100 :
; 101 : while(1)
; 102 : {
; 103 : wStatus = *((volatile WORD *)(pSTFlsInfo->dwBaseAddr));
; 104 : if (wOldStatus == wStatus)
00010 ea000003 b |$L34593|
00014 |$L34269|
; 107 : }
; 108 : if(wStatus & 0x20)
00014 e1dd30b0 ldrh r3, [sp]
00018 e3130020 tst r3, #0x20
0001c 1a000009 bne |$L34587|
; 120 : }
; 121 : }
; 122 : wOldStatus = wStatus;
00020 e1dd30b0 ldrh r3, [sp]
00024 |$L34593|
00024 e1cd30b2 strh r3, [sp, #2]
00028 e1d130b0 ldrh r3, [r1]
0002c e1cd30b0 strh r3, [sp]
00030 e1dd20b0 ldrh r2, [sp]
00034 e1dd30b2 ldrh r3, [sp, #2]
00038 e1530002 cmp r3, r2
0003c 1afffff4 bne |$L34269|
00040 |$L34594|
; 105 : {
; 106 : return(TRUE);
00040 e3a00001 mov r0, #1
00044 ea00000c b |$L34270|
00048 |$L34587|
; 109 : {
; 110 : wOldStatus = *((volatile WORD *)(pSTFlsInfo->dwBaseAddr));
00048 e1d130b0 ldrh r3, [r1]
0004c e1cd30b2 strh r3, [sp, #2]
; 111 : wStatus = *((volatile WORD *)(pSTFlsInfo->dwBaseAddr));
00050 e1d130b0 ldrh r3, [r1]
00054 e1cd30b0 strh r3, [sp]
; 112 : if (wOldStatus == wStatus)
00058 e1dd20b0 ldrh r2, [sp]
0005c e1dd30b2 ldrh r3, [sp, #2]
00060 e1530002 cmp r3, r2
; 113 : {
; 114 : return(TRUE);
00064 0afffff5 beq |$L34594|
; 115 : }
; 116 : else
; 117 : {
; 118 : RETAILMSG(1, (TEXT("Nor flash operate ERROR!wOldStatus=0x%x, wStatus=0x%x\r\n"),wOldStatus,wStatus));
00068 e1dd20b0 ldrh r2, [sp]
0006c e1dd10b2 ldrh r1, [sp, #2]
00070 e59f0010 ldr r0, [pc, #0x10]
00074 eb000000 bl NKDbgPrintfW
; 119 : return(FALSE);
00078 e3a00000 mov r0, #0
0007c |$L34270|
; 123 : }
; 124 : }
0007c e28dd004 add sp, sp, #4
00080 e49de004 ldr lr, [sp], #4
00084 e12fff1e bx lr
00088 |$L34600|
00088 00000000 DCD |??_C@_1HA@IKGBGCGG@?$AAN?$AAo?$AAr?$AA?5?$AAf?$AAl?$AAa?$AAs?$AAh?$AA?5?$AAo?$AAp?$AAe?$AAr?$AAa?$AAt?$AAe?$AA?5?$AAE?$AAR@|
0008c |$M34596|
ENDP ; |?STWaitComplete@@YAHPAU_ST_FLS_INFO_@@@Z|, STWaitComplete
EXPORT |?Spansion_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| ; Spansion_Nor_FMD_Init
EXPORT |??_C@_1DK@LLDFCACJ@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAS?$AAp?$AAa?$AAn?$AAs?$AAi?$AAo?$AAn?$AA?5?$AAN?$AAo?$AAr?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_1GG@JGLKIKD@?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?3?$AA?5?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3@| [ DATA ] ; `string'
EXPORT |??_C@_1EG@CPNPAHEB@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAS?$AAS?$AAT?$AA?5?$AAN?$AAo?$AAr?$AA?5?$AAf?$AAl?$AAa?$AAs?$AAh@| [ DATA ] ; `string'
00000 AREA |.text| { |?Spansion_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?Spansion_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?Spansion_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| } ; comdat associative
|$T34656| DCD |$L34655|
DCD 0x40005f01
00000 AREA |.rdata| { |??_C@_1EG@CPNPAHEB@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAS?$AAS?$AAT?$AA?5?$AAN?$AAo?$AAr?$AA?5?$AAf?$AAl?$AAa?$AAs?$AAh@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EG@CPNPAHEB@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAS?$AAS?$AAT?$AA?5?$AAN?$AAo?$AAr?$AA?5?$AAf?$AAl?$AAa?$AAs?$AAh@| DCB "D"
DCB 0x0, "e", 0x0, "t", 0x0, "e", 0x0, "c", 0x0, "t", 0x0, " "
DCB 0x0, "S", 0x0, "S", 0x0, "T", 0x0, " ", 0x0, "N", 0x0, "o"
DCB 0x0, "r", 0x0, " ", 0x0, "f", 0x0, "l", 0x0, "a", 0x0, "s"
DCB 0x0, "h", 0x0, ",", 0x0, " ", 0x0, "c", 0x0, "o", 0x0, "d"
DCB 0x0, "e", 0x0, ":", 0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%"
DCB 0x0, "x", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1GG@JGLKIKD@?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?3?$AA?5?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GG@JGLKIKD@?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?3?$AA?5?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3@| DCB "E"
DCB 0x0, "R", 0x0, "R", 0x0, "O", 0x0, "R", 0x0, ":", 0x0, " "
DCB 0x0, "N", 0x0, "o", 0x0, "r", 0x0, "_", 0x0, "F", 0x0, "M"
DCB 0x0, "D", 0x0, "_", 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t"
DCB 0x0, ":", 0x0, " ", 0x0, "B", 0x0, "a", 0x0, "d", 0x0, " "
DCB 0x0, "m", 0x0, "a", 0x0, "n", 0x0, "u", 0x0, "f", 0x0, "a"
DCB 0x0, "c", 0x0, "t", 0x0, "u", 0x0, "r", 0x0, "e", 0x0, "r"
DCB 0x0, " ", 0x0, ":", 0x0, " ", 0x0, "M", 0x0, "f", 0x0, "g"
DCB 0x0, "=", 0x0, "0", 0x0, "x", 0x0, "%", 0x0, "x", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DK@LLDFCACJ@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAS?$AAp?$AAa?$AAn?$AAs?$AAi?$AAo?$AAn?$AA?5?$AAN?$AAo?$AAr?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DK@LLDFCACJ@?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AA?5?$AAS?$AAp?$AAa?$AAn?$AAs?$AAi?$AAo?$AAn?$AA?5?$AAN?$AAo?$AAr?$AA?5@| DCB "D"
DCB 0x0, "e", 0x0, "t", 0x0, "e", 0x0, "c", 0x0, "t", 0x0, " "
DCB 0x0, "S", 0x0, "p", 0x0, "a", 0x0, "n", 0x0, "s", 0x0, "i"
DCB 0x0, "o", 0x0, "n", 0x0, " ", 0x0, "N", 0x0, "o", 0x0, "r"
DCB 0x0, " ", 0x0, "f", 0x0, "l", 0x0, "a", 0x0, "s", 0x0, "h"
DCB 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |?Spansion_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?Spansion_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| PROC ; Spansion_Nor_FMD_Init
; 132 : {
00000 |$L34655|
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 |$M34653|
; 133 : WORD wMfgCode;
; 134 : WORD wDevCode;
; 135 :
; 136 : s_STFlsInfo.dwBaseAddr = pRegIn->MemBase.Reg[0];;
00004 e59f416c ldr r4, [pc, #0x16C]
00008 e5912310 ldr r2, [r1, #0x310]
; 137 : // RETAILMSG(1, (TEXT("Intel_Nor_FMD_Init: dwBaseAddr 0x%x.\r\n"), s_STFlsInfo.dwBaseAddr ));
; 138 :
; 139 : // 尝试Spansion FLASH
; 140 : s_STFlsInfo.stFlashCmd.dwEraseConfm = ST_CMD_ERASE_CONFM;
0000c e3a03030 mov r3, #0x30
; 141 : s_STFlsInfo.stFlashCmd.dwCmdAddr = ST_CMD_ADDR;
; 142 : s_STFlsInfo.stFlashCmd.dwUnlockAddr1 = ST_UNLOCK_ADDR1;
; 143 : s_STFlsInfo.stFlashCmd.dwUnlockAddr2 = ST_UNLOCK_ADDR2;
00010 e3a01e55 mov r1, #0x55, 28
00014 e5842000 str r2, [r4]
00018 e584301c str r3, [r4, #0x1C]
0001c e3a03eaa mov r3, #0xAA, 28
00020 e383300a orr r3, r3, #0xA
00024 e5843020 str r3, [r4, #0x20]
00028 e3811004 orr r1, r1, #4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -