📄 spihw.cod
字号:
00000 AREA |.rdata| { |??_C@_1CC@PDLHBDMG@?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CC@PDLHBDMG@?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| DCB "D"
DCB 0x0, "M", 0x0, "A", 0x0, "_", 0x0, "S", 0x0, "e", 0x0, "t"
DCB 0x0, "U", 0x0, "p", 0x0, "C", 0x0, "h", 0x0, "a", 0x0, "n"
DCB 0x0, "n", 0x0, "e", 0x0, "l", 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CE@PKEIJDNP@?$AAD?$AAM?$AAA?$AA_?$AAC?$AAo?$AAn?$AAf?$AAi?$AAg?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CE@PKEIJDNP@?$AAD?$AAM?$AAA?$AA_?$AAC?$AAo?$AAn?$AAf?$AAi?$AAg?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| DCB "D"
DCB 0x0, "M", 0x0, "A", 0x0, "_", 0x0, "C", 0x0, "o", 0x0, "n"
DCB 0x0, "f", 0x0, "i", 0x0, "g", 0x0, "C", 0x0, "h", 0x0, "a"
DCB 0x0, "n", 0x0, "n", 0x0, "e", 0x0, "l", 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CE@MPDJICKO@?$AAD?$AAM?$AAA?$AA_?$AAR?$AAe?$AAm?$AAo?$AAv?$AAe?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CE@MPDJICKO@?$AAD?$AAM?$AAA?$AA_?$AAR?$AAe?$AAm?$AAo?$AAv?$AAe?$AAC?$AAh?$AAa?$AAn?$AAn?$AAe?$AAl?$AA?$AA@| DCB "D"
DCB 0x0, "M", 0x0, "A", 0x0, "_", 0x0, "R", 0x0, "e", 0x0, "m"
DCB 0x0, "o", 0x0, "v", 0x0, "e", 0x0, "C", 0x0, "h", 0x0, "a"
DCB 0x0, "n", 0x0, "n", 0x0, "e", 0x0, "l", 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1IG@CPCFIGAI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IG@CPCFIGAI@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "a", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v"
DCB 0x0, "a", 0x0, "t", 0x0, "e", 0x0, "D", 0x0, "M", 0x0, "A"
DCB 0x0, "S", 0x0, "e", 0x0, "r", 0x0, "v", 0x0, "i", 0x0, "c"
DCB 0x0, "e", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "C", 0x0, "o"
DCB 0x0, "u", 0x0, "l", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "o"
DCB 0x0, "t", 0x0, " ", 0x0, "l", 0x0, "o", 0x0, "a", 0x0, "d"
DCB 0x0, " ", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, " ", 0x0, "s"
DCB 0x0, "e", 0x0, "r", 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e"
DCB 0x0, " ", 0x0, "l", 0x0, "i", 0x0, "b", 0x0, "r", 0x0, "a"
DCB 0x0, "r", 0x0, "y", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1JC@FGCOOMKG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1JC@FGCOOMKG@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "a", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v"
DCB 0x0, "a", 0x0, "t", 0x0, "e", 0x0, "D", 0x0, "M", 0x0, "A"
DCB 0x0, "S", 0x0, "e", 0x0, "r", 0x0, "v", 0x0, "i", 0x0, "c"
DCB 0x0, "e", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "C", 0x0, "o"
DCB 0x0, "u", 0x0, "l", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "o"
DCB 0x0, "t", 0x0, " ", 0x0, "a", 0x0, "l", 0x0, "l", 0x0, "o"
DCB 0x0, "c", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "D"
DCB 0x0, "M", 0x0, "A", 0x0, " ", 0x0, "s", 0x0, "e", 0x0, "r"
DCB 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "s"
DCB 0x0, "t", 0x0, "r", 0x0, "u", 0x0, "c", 0x0, "t", 0x0, "u"
DCB 0x0, "r", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HK@GOKELIML@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HK@GOKELIML@?$AAS?$AAm?$AAs?$AAS?$AAp?$AAi?$AA?3?$AA?5?$AAa?$AAc?$AAt?$AAi?$AAv?$AAa?$AAt?$AAe?$AAD?$AAM?$AAA?$AAS@| DCB "S"
DCB 0x0, "m", 0x0, "s", 0x0, "S", 0x0, "p", 0x0, "i", 0x0, ":"
DCB 0x0, " ", 0x0, "a", 0x0, "c", 0x0, "t", 0x0, "i", 0x0, "v"
DCB 0x0, "a", 0x0, "t", 0x0, "e", 0x0, "D", 0x0, "M", 0x0, "A"
DCB 0x0, "S", 0x0, "e", 0x0, "r", 0x0, "v", 0x0, "i", 0x0, "c"
DCB 0x0, "e", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "T", 0x0, "h"
DCB 0x0, "e", 0x0, "r", 0x0, "e", 0x0, " ", 0x0, "i", 0x0, "s"
DCB 0x0, " ", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "D", 0x0, "M"
DCB 0x0, "A", 0x0, " ", 0x0, "s", 0x0, "e", 0x0, "r", 0x0, "v"
DCB 0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "n", 0x0, "a"
DCB 0x0, "m", 0x0, "e", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |activateDMAService| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |activateDMAService| PROC
; 399 : {
00000 |$L39558|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 e24dd010 sub sp, sp, #0x10
00008 |$M39556|
00008 e1a04000 mov r4, r0
; 400 : DMA_INIT_PARAMS_ST dmaSetUp;
; 401 :
; 402 : if (pSpiPhy->DmaDllName[0] == 0)
0000c e5d43004 ldrb r3, [r4, #4]
00010 e3530000 cmp r3, #0
00014 1a000002 bne |$L38926|
; 403 : {
; 404 : RETAILMSG(1, (TEXT("SmsSpi: activateDMAService() There is no DMA service name.\r\n")));
00018 e59f01f4 ldr r0, [pc, #0x1F4]
; 410 : {
; 411 : RETAILMSG(1, (TEXT("SmsSpi: activateDMAService() Could not allocate DMA service structure.\r\n")));
0001c eb000000 bl NKDbgPrintfW
; 412 : return FALSE;
00020 ea00006f b |$L39551|
00024 |$L38926|
; 406 : }
; 407 :
; 408 : pSpiPhy->dmaService = (DEVICE_DMA_SERVICE_ST*)LocalAlloc(LPTR, sizeof(DEVICE_DMA_SERVICE_ST));
00024 e3a01018 mov r1, #0x18
00028 e3a00040 mov r0, #0x40
0002c eb000000 bl LocalAlloc
00030 e3500000 cmp r0, #0
00034 e5840068 str r0, [r4, #0x68]
; 409 : if (pSpiPhy->dmaService == NULL)
00038 1a000002 bne |$L38931|
; 410 : {
; 411 : RETAILMSG(1, (TEXT("SmsSpi: activateDMAService() Could not allocate DMA service structure.\r\n")));
0003c e59f01cc ldr r0, [pc, #0x1CC]
00040 eb000000 bl NKDbgPrintfW
; 412 : return FALSE;
00044 ea000066 b |$L39551|
00048 |$L38931|
; 413 : }
; 414 :
; 415 : pSpiPhy->dmaService->hdl = LoadLibrary((LPCWSTR)pSpiPhy->DmaDllName);
00048 e2840004 add r0, r4, #4
0004c eb000000 bl LoadLibraryW
00050 e5943068 ldr r3, [r4, #0x68]
00054 e5830000 str r0, [r3]
; 416 : if (pSpiPhy->dmaService->hdl == NULL)
00058 e5942068 ldr r2, [r4, #0x68]
0005c e5923000 ldr r3, [r2]
00060 e3530000 cmp r3, #0
00064 1a000002 bne |$L38935|
; 417 : {
; 418 : RETAILMSG(1, (TEXT("SmsSpi: activateDMAService() Could not load DMA service library.\r\n")));
00068 e59f019c ldr r0, [pc, #0x19C]
0006c eb000000 bl NKDbgPrintfW
; 419 : LocalFree(pSpiPhy->dmaService);
; 420 : pSpiPhy->dmaService = NULL;
; 421 : return FALSE;
00070 ea000057 b |$L39552|
00074 |$L38935|
; 422 : }
; 423 :
; 424 : pSpiPhy->dmaService->dmaSetUpChannel = (DMA_SetUpChannelF)GetProcAddress(pSpiPhy->dmaService->hdl, TEXT("DMA_SetUpChannel"));
00074 e59f118c ldr r1, [pc, #0x18C]
00078 e5920000 ldr r0, [r2]
0007c eb000000 bl GetProcAddressW
00080 e5943068 ldr r3, [r4, #0x68]
; 425 : pSpiPhy->dmaService->dmaConfigChannel = (DMA_ConfigChannelF)GetProcAddress(pSpiPhy->dmaService->hdl, TEXT("DMA_ConfigChannel"));
00084 e59f1178 ldr r1, [pc, #0x178]
00088 e583000c str r0, [r3, #0xC]
0008c e5943068 ldr r3, [r4, #0x68]
00090 e5930000 ldr r0, [r3]
00094 eb000000 bl GetProcAddressW
00098 e5943068 ldr r3, [r4, #0x68]
; 426 : pSpiPhy->dmaService->dmaRemoveChannel = (DMA_RemoveChannelF)GetProcAddress(pSpiPhy->dmaService->hdl, TEXT("DMA_RemoveChannel"));
0009c e59f115c ldr r1, [pc, #0x15C]
000a0 e5830010 str r0, [r3, #0x10]
000a4 e5943068 ldr r3, [r4, #0x68]
000a8 e5930000 ldr r0, [r3]
000ac eb000000 bl GetProcAddressW
000b0 e5943068 ldr r3, [r4, #0x68]
000b4 e5830014 str r0, [r3, #0x14]
; 427 : if (pSpiPhy->dmaService->dmaSetUpChannel == NULL ||
; 428 : pSpiPhy->dmaService->dmaConfigChannel == NULL ||
; 429 : pSpiPhy->dmaService->dmaRemoveChannel == NULL)
000b8 e5942068 ldr r2, [r4, #0x68]
000bc e592300c ldr r3, [r2, #0xC]
000c0 e3530000 cmp r3, #0
000c4 0a00003d beq |$L38948|
000c8 e5923010 ldr r3, [r2, #0x10]
000cc e3530000 cmp r3, #0
000d0 0a00003a beq |$L38948|
000d4 e5923014 ldr r3, [r2, #0x14]
000d8 e3530000 cmp r3, #0
000dc 0a000037 beq |$L38948|
; 436 : }
; 437 :
; 438 :
; 439 : dmaSetUp.flags = DMA_USE_HW_FLOW_CTRL;
; 440 : if (useSSPPort == 1)
000e0 e59f5114 ldr r5, [pc, #0x114]
000e4 e3a03001 mov r3, #1
000e8 e58d3000 str r3, [sp]
000ec e5953000 ldr r3, [r5]
000f0 e3530001 cmp r3, #1
; 441 : dmaSetUp.dmaReq = SSP1_TX_CMR;
000f4 03a0300e moveq r3, #0xE
000f8 0a000008 beq |$L39553|
; 442 : else if (useSSPPort == 2)
000fc e3530002 cmp r3, #2
; 443 : dmaSetUp.dmaReq = SSP2_TX_CMR;
00100 03a03010 moveq r3, #0x10
00104 0a000005 beq |$L39553|
; 444 : else if (useSSPPort == 3)
00108 e3530003 cmp r3, #3
; 445 : dmaSetUp.dmaReq = SSP3_TX_CMR;
0010c 03a03043 moveq r3, #0x43
00110 0a000002 beq |$L39553|
; 446 : else if (useSSPPort == 4)
00114 e3530004 cmp r3, #4
00118 1a000001 bne |$L38957|
; 447 : dmaSetUp.dmaReq = SSP4_TX_CMR;
0011c e3a03003 mov r3, #3
00120 |$L39553|
00120 e58d3004 str r3, [sp, #4]
00124 |$L38957|
; 448 : dmaSetUp.burstSize = DMA_BURST_8_BYTES;
00124 e3a03000 mov r3, #0
; 449 : dmaSetUp.busWidth = DMA_BUS_WIDTH_4_BYTE;
00128 e3a01002 mov r1, #2
0012c e58d3008 str r3, [sp, #8]
00130 e58d100c str r1, [sp, #0xC]
; 450 : pSpiPhy->dmaService->txDmaDevice=pSpiPhy->dmaService->dmaSetUpChannel(&dmaSetUp);
00134 e592300c ldr r3, [r2, #0xC]
00138 e28d0000 add r0, sp, #0
0013c e1a0e00f mov lr, pc
00140 e12fff13 bx r3
00144 e5943068 ldr r3, [r4, #0x68]
; 451 :
; 452 : dmaSetUp.flags = DMA_USE_HW_FLOW_CTRL;
00148 e3a02001 mov r2, #1
0014c e5830008 str r0, [r3, #8]
; 453 : if (useSSPPort == 1)
00150 e5953000 ldr r3, [r5]
00154 e58d2000 str r2, [sp]
00158 e3530001 cmp r3, #1
; 454 : dmaSetUp.dmaReq = SSP1_RX_CMR;
0015c 03a0300d moveq r3, #0xD
00160 0a000008 beq |$L39554|
; 455 : else if (useSSPPort == 2)
00164 e3530002 cmp r3, #2
; 456 : dmaSetUp.dmaReq = SSP2_RX_CMR;
00168 03a0300f moveq r3, #0xF
0016c 0a000005 beq |$L39554|
; 457 : else if (useSSPPort == 3)
00170 e3530003 cmp r3, #3
; 458 : dmaSetUp.dmaReq = SSP3_RX_CMR;
00174 03a03042 moveq r3, #0x42
00178 0a000002 beq |$L39554|
; 459 : else if (useSSPPort == 4)
0017c e3530004 cmp r3, #4
00180 1a000001 bne |$L38964|
; 460 : dmaSetUp.dmaReq = SSP4_RX_CMR;
00184 e3a03002 mov r3, #2
00188 |$L39554|
00188 e58d3004 str r3, [sp, #4]
0018c |$L38964|
; 461 : dmaSetUp.burstSize = DMA_BURST_8_BYTES;
; 462 : dmaSetUp.busWidth = DMA_BUS_WIDTH_4_BYTE;
; 463 : pSpiPhy->dmaService->rxDmaDevice=pSpiPhy->dmaService->dmaSetUpChannel(&dmaSetUp);
0018c e5943068 ldr r3, [r4, #0x68]
00190 e3a02000 mov r2, #0
00194 e3a01002 mov r1, #2
00198 e58d2008 str r2, [sp, #8]
0019c e58d100c str r1, [sp, #0xC]
001a0 e593300c ldr r3, [r3, #0xC]
001a4 e28d0000 add r0, sp, #0
001a8 e1a0e00f mov lr, pc
001ac e12fff13 bx r3
001b0 e5943068 ldr r3, [r4, #0x68]
; 464 : return TRUE;
001b4 e3a02001 mov r2, #1
001b8 e5830004 str r0, [r3, #4]
001bc ea000009 b |$L38924|
001c0 |$L38948|
; 430 : {
; 431 : RETAILMSG(1, (TEXT("SmsSpi: activateDMAService() Could not find DMA library routines.\r\n")));
001c0 e59f0030 ldr r0, [pc, #0x30]
001c4 eb000000 bl NKDbgPrintfW
; 432 : FreeLibrary(pSpiPhy->dmaService->hdl);
001c8 e5943068 ldr r3, [r4, #0x68]
001cc e5930000 ldr r0, [r3]
001d0 eb000000 bl FreeLibrary
001d4 |$L39552|
; 433 : LocalFree(pSpiPhy->dmaService);
001d4 e5940068 ldr r0, [r4, #0x68]
001d8 eb000000 bl LocalFree
; 434 : pSpiPhy->dmaService = NULL;
001dc e3a03000 mov r3, #0
001e0 e5843068 str r3, [r4, #0x68]
001e4 |$L39551|
; 435 : return FALSE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -