📄 intel_28f160.cod
字号:
00074 e153000b cmp r3, r11
00078 1a00000b bne |$L29773|
; 168 : {
; 169 : for (i = 0; i < 8; i++)
0007c e3a04000 mov r4, #0
00080 e3a0681f mov r6, #0x1F, 16
00084 |$L29774|
; 170 : {
; 171 : if (!SetBlockLockStatusEx(
; 172 : COMMON_BLOCK_SIZE * 31 + i * SMALL_BLOCK_SIZE,
; 173 : bLock))
00084 e1a01009 mov r1, r9
00088 e1a00006 mov r0, r6
0008c eb000000 bl |?SetBlockLockStatusEx@@YAHKH@Z|
00090 e3500000 cmp r0, #0
00094 0a00000f beq |$L30168|
00098 e2844001 add r4, r4, #1
0009c e3540008 cmp r4, #8
000a0 e2866a02 add r6, r6, #2, 20
000a4 3afffff6 bcc |$L29774|
; 174 :
; 175 : return FALSE;
; 176 : }
; 177 : }
; 178 : else
000a8 ea000004 b |$L29779|
000ac |$L29773|
; 179 : {
; 180 : if (!SetBlockLockStatusEx(blockID * COMMON_BLOCK_SIZE, bLock))
000ac e1a01009 mov r1, r9
000b0 e1a00805 mov r0, r5, lsl #16
000b4 eb000000 bl |?SetBlockLockStatusEx@@YAHKH@Z|
000b8 e3500000 cmp r0, #0
000bc 0a000005 beq |$L30168|
000c0 |$L29779|
; 182 : }
; 183 :
; 184 : blockID++;
000c0 e2855001 add r5, r5, #1
000c4 e3570000 cmp r7, #0
000c8 1affffd6 bne |$L29765|
000cc |$L30171|
; 185 : }
; 186 :
; 187 : return TRUE;
000cc e3a00001 mov r0, #1
; 188 : }
000d0 e8bd4ff0 ldmia sp!, {r4 - r11, lr}
000d4 e12fff1e bx lr
000d8 |$L30168|
; 181 : return FALSE;
000d8 e3a00000 mov r0, #0
; 188 : }
000dc e8bd4ff0 ldmia sp!, {r4 - r11, lr}
000e0 e12fff1e bx lr
000e4 |$L30184|
000e4 00000000 DCD |g_FlashInfo|
000e8 |$M30180|
ENDP ; |?SetBlockLockStatus@@YAHKKH@Z|, SetBlockLockStatus
EXPORT |?Intel_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| ; Intel_Nor_FMD_Init
EXPORT |??_C@_1FG@IADLLEKH@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5?$AAB?$AAa?$AAd?$AA?5?$AAm?$AAa@| [ DATA ] ; `string'
EXPORT |??_C@_1FE@OFPFNKOJ@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5?$AAU?$AAn?$AAk?$AAn?$AAo?$AAw@| [ DATA ] ; `string'
EXPORT |??_C@_0BH@OLEDPNMH@FLASH_F160C3TDA4137360?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0BB@BOEHEHMK@FLASH_F160C3BCES?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1EI@LMKEIDPI@?$AAI?$AAn?$AAt?$AAe?$AAl?$AA?5?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5@| [ DATA ] ; `string'
00000 AREA |.text| { |?Intel_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?Intel_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?Intel_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| } ; comdat associative
|$T30218| DCD |$L30217|
DCD 0x40003d01
00000 AREA |.rdata| { |??_C@_1EI@LMKEIDPI@?$AAI?$AAn?$AAt?$AAe?$AAl?$AA?5?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EI@LMKEIDPI@?$AAI?$AAn?$AAt?$AAe?$AAl?$AA?5?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5@| DCB "I"
DCB 0x0, "n", 0x0, "t", 0x0, "e", 0x0, "l", 0x0, " ", 0x0, "N"
DCB 0x0, "o", 0x0, "r", 0x0, "_", 0x0, "F", 0x0, "M", 0x0, "D"
DCB 0x0, "_", 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, ":"
DCB 0x0, " ", 0x0, "F", 0x0, "l", 0x0, "a", 0x0, "s", 0x0, "h"
DCB 0x0, " ", 0x0, "T", 0x0, "y", 0x0, "p", 0x0, "e", 0x0, " "
DCB 0x0, "%", 0x0, "s", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BB@BOEHEHMK@FLASH_F160C3BCES?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BB@BOEHEHMK@FLASH_F160C3BCES?$AA@| DCB "FLASH_F160C3BCES", 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BH@OLEDPNMH@FLASH_F160C3TDA4137360?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BH@OLEDPNMH@FLASH_F160C3TDA4137360?$AA@| DCB "FLASH_F160C3TDA4137"
DCB "360", 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FE@OFPFNKOJ@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5?$AAU?$AAn?$AAk?$AAn?$AAo?$AAw@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FE@OFPFNKOJ@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5?$AAU?$AAn?$AAk?$AAn?$AAo?$AAw@| DCB "N"
DCB 0x0, "o", 0x0, "r", 0x0, "_", 0x0, "F", 0x0, "M", 0x0, "D"
DCB 0x0, "_", 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, ":"
DCB 0x0, " ", 0x0, "U", 0x0, "n", 0x0, "k", 0x0, "n", 0x0, "o"
DCB 0x0, "w", 0x0, "n", 0x0, " ", 0x0, "d", 0x0, "e", 0x0, "v"
DCB 0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "c", 0x0, "o"
DCB 0x0, "d", 0x0, "e", 0x0, " ", 0x0, "0", 0x0, "x", 0x0, "%"
DCB 0x0, "x", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FG@IADLLEKH@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5?$AAB?$AAa?$AAd?$AA?5?$AAm?$AAa@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FG@IADLLEKH@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5?$AAB?$AAa?$AAd?$AA?5?$AAm?$AAa@| DCB "N"
DCB 0x0, "o", 0x0, "r", 0x0, "_", 0x0, "F", 0x0, "M", 0x0, "D"
DCB 0x0, "_", 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, ":"
DCB 0x0, " ", 0x0, "B", 0x0, "a", 0x0, "d", 0x0, " ", 0x0, "m"
DCB 0x0, "a", 0x0, "n", 0x0, "u", 0x0, "f", 0x0, "a", 0x0, "c"
DCB 0x0, "t", 0x0, "u", 0x0, "r", 0x0, "e", 0x0, "r", 0x0, "c"
DCB 0x0, "o", 0x0, "d", 0x0, "e", 0x0, " ", 0x0, "0", 0x0, "x"
DCB 0x0, "%", 0x0, "x", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |?Intel_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?Intel_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z| PROC ; Intel_Nor_FMD_Init
; 196 : {
00000 |$L30217|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M30215|
; 197 : WORD wMfgCode;
; 198 : WORD wDevCode;
; 199 :
; 200 : g_FlashInfo.dwBaseAddr = pRegIn->MemBase.Reg[0];
00004 e59f50e4 ldr r5, [pc, #0xE4]
00008 e5913310 ldr r3, [r1, #0x310]
; 201 : //RETAILMSG(1, (TEXT("Intel_Nor_FMD_Init: dwBaseAddr 0x%x.\r\n"), g_FlashInfo.dwBaseAddr ));
; 202 :
; 203 : // read manufacture id and device id
; 204 : intel_IssueCmd(&g_FlashInfo, CMD_READIDENT);
0000c e3a02090 mov r2, #0x90
00010 e5853000 str r3, [r5]
00014 e1c320b0 strh r2, [r3]
; 205 : wMfgCode = intel_ReadWord(&g_FlashInfo, MFG_CODE_OFF);
00018 e5953000 ldr r3, [r5]
0001c e1d310b0 ldrh r1, [r3]
; 206 : wDevCode = intel_ReadWord(&g_FlashInfo, DEV_CODE_OFF);
00020 e1d320b2 ldrh r2, [r3, #2]
; 207 :
; 208 : if (MFG_CODE != wMfgCode)
00024 e3510089 cmp r1, #0x89
; 209 : {
; 210 : RETAILMSG(1, (TEXT("Nor_FMD_Init: Bad manufacturercode 0x%x.\r\n"), wMfgCode));
00028 159f00bc ldrne r0, [pc, #0xBC]
0002c 1a000009 bne |$L30214|
; 211 : return NULL;
; 212 : }
; 213 :
; 214 : if (wDevCode != FLASH_F160C3TDA4137360 && wDevCode != FLASH_F160C3BCES)
00030 e3a01b22 mov r1, #0x22, 22
00034 e38110c2 orr r1, r1, #0xC2
00038 e1520001 cmp r2, r1
0003c 0a000009 beq |$L29789|
00040 e3a03b22 mov r3, #0x22, 22
00044 e38330c3 orr r3, r3, #0xC3
00048 e1520003 cmp r2, r3
0004c 0a000005 beq |$L29789|
; 215 : {
; 216 : RETAILMSG(1, (_T("Nor_FMD_Init: Unknown device code 0x%x.\r\n"), wDevCode));
00050 e59f0090 ldr r0, [pc, #0x90]
00054 e1a01002 mov r1, r2
00058 |$L30214|
00058 eb000000 bl NKDbgPrintfW
; 217 : return NULL;
0005c e3a00000 mov r0, #0
; 236 : }
00060 e8bd4030 ldmia sp!, {r4, r5, lr}
00064 e12fff1e bx lr
00068 |$L29789|
; 218 : }
; 219 :
; 220 : g_FlashInfo.flashType = wDevCode;
; 221 : RETAILMSG(1, (_T("Intel Nor_FMD_Init: Flash Type %s\r\n"),
; 222 : (g_FlashInfo.flashType == FLASH_F160C3TDA4137360)?
; 223 : "FLASH_F160C3TDA4137360" : "FLASH_F160C3BCES"));
00068 e1520001 cmp r2, r1
0006c 059f1070 ldreq r1, [pc, #0x70]
00070 159f1068 ldrne r1, [pc, #0x68]
00074 e59f0060 ldr r0, [pc, #0x60]
00078 e5852018 str r2, [r5, #0x18]
0007c eb000000 bl NKDbgPrintfW
; 224 :
; 225 : // reset the chip
; 226 : intel_IssueCmd(&g_FlashInfo, CMD_READARRAY);
00080 e5953000 ldr r3, [r5]
; 227 :
; 228 : g_FlashInfo.pErsBlkRegion = g_EraseBlockInfo;
00084 e59f104c ldr r1, [pc, #0x4C]
00088 e3a020ff mov r2, #0xFF
0008c e1c320b0 strh r2, [r3]
; 229 : g_FlashInfo.bBusWidth = 2;
; 230 : g_FlashInfo.dwBlkNum = g_FlashInfo.pErsBlkRegion[0].dwBlkNum;
; 231 : g_FlashInfo.dwBlkSize = g_FlashInfo.pErsBlkRegion[0].dwBlkSize;
00090 e5914004 ldr r4, [r1, #4]
; 232 : g_FlashInfo.wUnusedBytesPerBlock = (USHORT)(g_FlashInfo.dwBlkSize % (SECTOR_SIZE + sizeof (SectorInfo)) );
00094 e59f3038 ldr r3, [pc, #0x38]
00098 e5912000 ldr r2, [r1]
0009c e3a00002 mov r0, #2
000a0 e083e394 umull lr, r3, r4, r3
000a4 e5851008 str r1, [r5, #8]
000a8 e5c50004 strb r0, [r5, #4]
000ac e585200c str r2, [r5, #0xC]
000b0 e1a024a3 mov r2, r3, lsr #9
000b4 e0823302 add r3, r2, r2, lsl #6
000b8 e0443183 sub r3, r4, r3, lsl #3
000bc e5854010 str r4, [r5, #0x10]
000c0 e1c531b4 strh r3, [r5, #0x14]
; 233 : g_FlashInfo.wSectorsPerBlock = (USHORT)(g_FlashInfo.dwBlkSize / (SECTOR_SIZE + sizeof (SectorInfo)));
000c4 e1c521b6 strh r2, [r5, #0x16]
; 234 :
; 235 : return (PVOID)g_FlashInfo.dwBaseAddr;
000c8 e5950000 ldr r0, [r5]
; 236 : }
000cc e8bd4030 ldmia sp!, {r4, r5, lr}
000d0 e12fff1e bx lr
000d4 |$L30220|
000d4 fc0fc0fd DCD 0xfc0fc0fd
000d8 00000000 DCD |g_EraseBlockInfo|
000dc 00000000 DCD |??_C@_1EI@LMKEIDPI@?$AAI?$AAn?$AAt?$AAe?$AAl?$AA?5?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5@|
000e0 00000000 DCD |??_C@_0BB@BOEHEHMK@FLASH_F160C3BCES?$AA@|
000e4 00000000 DCD |??_C@_0BH@OLEDPNMH@FLASH_F160C3TDA4137360?$AA@|
000e8 00000000 DCD |??_C@_1FE@OFPFNKOJ@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5?$AAU?$AAn?$AAk?$AAn?$AAo?$AAw@|
000ec 00000000 DCD |??_C@_1FG@IADLLEKH@?$AAN?$AAo?$AAr?$AA_?$AAF?$AAM?$AAD?$AA_?$AAI?$AAn?$AAi?$AAt?$AA?3?$AA?5?$AAB?$AAa?$AAd?$AA?5?$AAm?$AAa@|
000f0 00000000 DCD |g_FlashInfo|
000f4 |$M30216|
ENDP ; |?Intel_Nor_FMD_Init@@YAPAXPBGPAU_PCI_REG_INFO@@1@Z|, Intel_Nor_FMD_Init
EXPORT |?Intel_Nor_FMD_Deinit@@YAHPAX@Z| ; Intel_Nor_FMD_Deinit
00000 AREA |.text| { |?Intel_Nor_FMD_Deinit@@YAHPAX@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?Intel_Nor_FMD_Deinit@@YAHPAX@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?Intel_Nor_FMD_Deinit@@YAHPAX@Z| } ; comdat associative
|$T30228| DCD |$L30227|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |?Intel_Nor_FMD_Deinit@@YAHPAX@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?Intel_Nor_FMD_Deinit@@YAHPAX@Z| PROC ; Intel_Nor_FMD_Deinit
; 245 : {
00000 |$L30227|
00000 |$M30225|
; 246 : return TRUE;
00000 e3a00001 mov r0, #1
; 247 : }
00004 e12fff1e bx lr
00008 |$M30226|
ENDP ; |?Intel_Nor_FMD_Deinit@@YAHPAX@Z|, Intel_Nor_FMD_Deinit
EXPORT |?Intel_Nor_FMD_GetInfo@@YAHPAU_FlashInfo@@@Z| ; Intel_Nor_FMD_GetInfo
00000 AREA |.text| { |?Intel_Nor_FMD_GetInfo@@YAHPAU_FlashInfo@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?Intel_Nor_FMD_GetInfo@@YAHPAU_FlashInfo@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?Intel_Nor_FMD_GetInfo@@YAHPAU_FlashInfo@@@Z| } ; comdat associative
|$T30238| DCD |$L30237|
DCD 0x40001101
; Function compile flags: /Ogsy
00000 AREA |.text| { |?Intel_Nor_FMD_GetInfo@@YAHPAU_FlashInfo@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?Intel_Nor_FMD_GetInfo@@YAHPAU_FlashInfo@@@Z| PROC ; Intel_Nor_FMD_GetInfo
; 261 : {
00000 |$L30237|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M30235|
00004 e1a01000 mov r1, r0
; 262 : pFlashInfo->flashType = NOR;
; 263 : pFlashInfo->dwNumBlocks = g_FlashInfo.dwBlkNum;
00008 e59f2030 ldr r2, [pc, #0x30]
0000c e3a03001 mov r3, #1
00010 e5813000 str r3, [r1]
00014 e592300c ldr r3, [r2, #0xC]
; 264 : pFlashInfo->dwBytesPerBlock = g_FlashInfo.dwBlkSize;
; 265 : pFlashInfo->wDataBytesPerSector = SECTOR_SIZE;
00018 e3a0ec02 mov lr, #2, 24
; 266 : pFlashInfo->wSectorsPerBlock = g_FlashInfo.wSectorsPerBlock;
; 267 :
; 268 : return(TRUE);
0001c e3a00001 mov r0, #1
00020 e5813004 str r3, [r1, #4]
00024 e5923010 ldr r3, [r2, #0x10]
00028 e1c1e0be strh lr, [r1, #0xE]
0002c e5813008 str r3, [r1, #8]
00030 e1d231b6 ldrh r3, [r2, #0x16]
00034 e1c130bc strh r3, [r1, #0xC]
; 269 : }
00038 e49de004 ldr lr, [sp], #4
0003c e12fff1e bx lr
00040 |$L30240|
00040 00000000 DCD |g_FlashInfo|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -