📄 sianodma.cod
字号:
00000 |$L38505|
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M38503|
00008 e1a04000 mov r4, r0
; 80 : DMA_DRV_PARAMS_ST* devHandle = (DMA_DRV_PARAMS_ST *)dev;
; 81 : DWORD status;
; 82 : DMA_DATABASE_ST* dataBase;
; 83 : DMA_DB_NODE_ST* transaction;
; 84 : BOOL sendNow;
; 85 :
; 86 : while (1)
; 87 : {
; 88 : status = WaitForSingleObject(devHandle->dmaIntEvent, INFINITE);
0000c e594000c ldr r0, [r4, #0xC]
00010 e3e01000 mvn r1, #0
00014 eb000000 bl WaitForSingleObject
; 89 : if (devHandle->activeChannel == FALSE)
00018 e594302c ldr r3, [r4, #0x2C]
0001c e58d0000 str r0, [sp]
00020 e3530000 cmp r3, #0
00024 0a00003b beq |$L38494|
00028 e59f7100 ldr r7, [pc, #0x100]
0002c e59f80f8 ldr r8, [pc, #0xF8]
00030 |$L38305|
; 92 : }
; 93 : dataBase = devHandle->dataBase;
00030 e5945020 ldr r5, [r4, #0x20]
; 94 : transaction = &dataBase->transactions[dataBase->firstMsg];
; 95 : status = PhyDmaIntHandler(devHandle, transaction);
00034 e1a00004 mov r0, r4
00038 e5953000 ldr r3, [r5]
0003c e0856203 add r6, r5, r3, lsl #4
00040 e2861008 add r1, r6, #8
00044 eb000000 bl PhyDmaIntHandler
00048 e1a03000 mov r3, r0
; 96 : WaitForSingleObject(devHandle->databaseSemaphore, INFINITE);
0004c e5940028 ldr r0, [r4, #0x28]
00050 e3e01000 mvn r1, #0
00054 e58d3000 str r3, [sp]
00058 eb000000 bl WaitForSingleObject
; 97 : if (status != DMA_STATUS_OK)
0005c e59d3000 ldr r3, [sp]
00060 e3530000 cmp r3, #0
; 98 : {
; 99 : DBGMSG(ZONE_ERROR, (TEXT("Siano PxaDMA, DmaIst() - Bad status after DMA transfer\n")));
00064 15973440 ldrne r3, [r7, #0x440]
00068 13130001 tstne r3, #1
0006c 159f00b4 ldrne r0, [pc, #0xB4]
00070 1b000000 blne NKDbgPrintfW
; 100 : }
; 101 : if (dataBase->firstMsg != dataBase->lastMsg)
00074 e5953000 ldr r3, [r5]
00078 e5950004 ldr r0, [r5, #4]
0007c e1530000 cmp r3, r0
00080 0a000019 beq |$L38315|
; 102 : {
; 103 :
; 104 : dataBase->firstMsg = (dataBase->firstMsg + 1) % MAX_NUM_OF_WAITING_TRANSACTIONS;
00084 e2831001 add r1, r3, #1
00088 e0832891 umull r2, r3, r1, r8
0008c e1a031a3 mov r3, r3, lsr #3
00090 e0833103 add r3, r3, r3, lsl #2
00094 e0413083 sub r3, r1, r3, lsl #1
00098 e5853000 str r3, [r5]
; 105 : if (dataBase->firstMsg == dataBase->lastMsg)
0009c e1530000 cmp r3, r0
; 106 : sendNow = FALSE;
; 107 : else
; 108 : sendNow = TRUE;
; 109 :
; 110 : LocalFree(transaction->desc);
000a0 e5960008 ldr r0, [r6, #8]
000a4 03a05000 moveq r5, #0
000a8 13a05001 movne r5, #1
000ac eb000000 bl LocalFree
; 111 : if (sendNow)
000b0 e3550000 cmp r5, #0
; 112 : sendDmaTransactionFromDb(dev);
000b4 15942020 ldrne r2, [r4, #0x20]
000b8 15921000 ldrne r1, [r2]
000bc 15923004 ldrne r3, [r2, #4]
000c0 11510003 cmpne r1, r3
000c4 10823201 addne r3, r2, r1, lsl #4
000c8 12831008 addne r1, r3, #8
000cc 11a00004 movne r0, r4
000d0 1b000000 blne PhyDmaSendDescriptor
; 113 : if (transaction->callBack!= NULL)
000d4 e5963010 ldr r3, [r6, #0x10]
000d8 e3530000 cmp r3, #0
; 114 : transaction->callBack(transaction->transactionId, status);
000dc 159d1000 ldrne r1, [sp]
000e0 15960014 ldrne r0, [r6, #0x14]
000e4 11a0e00f movne lr, pc
000e8 112fff13 bxne r3
000ec |$L38315|
; 115 : }
; 116 : ReleaseSemaphore(devHandle->databaseSemaphore, 1, &status);
000ec e5940028 ldr r0, [r4, #0x28]
000f0 e28d2000 add r2, sp, #0
000f4 e3a01001 mov r1, #1
000f8 eb000000 bl ReleaseSemaphore
000fc e594000c ldr r0, [r4, #0xC]
00100 e3e01000 mvn r1, #0
00104 eb000000 bl WaitForSingleObject
00108 e594302c ldr r3, [r4, #0x2C]
0010c e58d0000 str r0, [sp]
00110 e3530000 cmp r3, #0
00114 1affffc5 bne |$L38305|
00118 |$L38494|
; 90 : {
; 91 : return 0;
00118 e3a00000 mov r0, #0
; 117 : }
; 118 : }
0011c e28dd004 add sp, sp, #4
00120 e8bd41f0 ldmia sp!, {r4 - r8, lr}
00124 e12fff1e bx lr
00128 |$L38508|
00128 00000000 DCD |??_C@_1HA@NJLDGKHM@?$AAS?$AAi?$AAa?$AAn?$AAo?$AA?5?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAm?$AAa?$AAI?$AAs?$AAt@|
0012c cccccccd DCD 0xcccccccd
00130 00000000 DCD |dpCurSettings|
00134 |$M38504|
ENDP ; |DmaIst|
EXPORT |??_C@_1FO@JHBINHG@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAl?$AAl?$AAM?$AAa?$AAi?$AAn?$AA?$CI?$AA?$CJ?$AA?3?$AA?5?$AAP@| [ DATA ] ; `string'
EXPORT |??_C@_1FC@GOMGHGBJ@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAl?$AAl?$AAM?$AAa?$AAi?$AAn?$AA?$CI?$AA?$CJ?$AA?3?$AA?5?$AAD@| [ DATA ] ; `string'
EXPORT |DllMain|
00000 AREA |.text| { |DllMain| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DllMain|, PDATA, SELECTION=5, ASSOC=|.text| { |DllMain| } ; comdat associative
|$T38522| DCD |$L38521|
DCD 0x40001401
00000 AREA |.rdata| { |??_C@_1FC@GOMGHGBJ@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAl?$AAl?$AAM?$AAa?$AAi?$AAn?$AA?$CI?$AA?$CJ?$AA?3?$AA?5?$AAD@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FC@GOMGHGBJ@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAl?$AAl?$AAM?$AAa?$AAi?$AAn?$AA?$CI?$AA?$CJ?$AA?3?$AA?5?$AAD@| DCB "P"
DCB 0x0, "x", 0x0, "a", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, ","
DCB 0x0, " ", 0x0, "D", 0x0, "l", 0x0, "l", 0x0, "M", 0x0, "a"
DCB 0x0, "i", 0x0, "n", 0x0, "(", 0x0, ")", 0x0, ":", 0x0, " "
DCB 0x0, "D", 0x0, "L", 0x0, "L", 0x0, "_", 0x0, "P", 0x0, "R"
DCB 0x0, "O", 0x0, "C", 0x0, "E", 0x0, "S", 0x0, "S", 0x0, "_"
DCB 0x0, "D", 0x0, "E", 0x0, "T", 0x0, "A", 0x0, "C", 0x0, "H"
DCB 0x0, " ", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FO@JHBINHG@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAl?$AAl?$AAM?$AAa?$AAi?$AAn?$AA?$CI?$AA?$CJ?$AA?3?$AA?5?$AAP@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FO@JHBINHG@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAl?$AAl?$AAM?$AAa?$AAi?$AAn?$AA?$CI?$AA?$CJ?$AA?3?$AA?5?$AAP@| DCB "P"
DCB 0x0, "x", 0x0, "a", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, ","
DCB 0x0, " ", 0x0, "D", 0x0, "l", 0x0, "l", 0x0, "M", 0x0, "a"
DCB 0x0, "i", 0x0, "n", 0x0, "(", 0x0, ")", 0x0, ":", 0x0, " "
DCB 0x0, "P", 0x0, "x", 0x0, "a", 0x0, "D", 0x0, "M", 0x0, "A"
DCB 0x0, " ", 0x0, "D", 0x0, "L", 0x0, "L", 0x0, "_", 0x0, "P"
DCB 0x0, "R", 0x0, "O", 0x0, "C", 0x0, "E", 0x0, "S", 0x0, "S"
DCB 0x0, "_", 0x0, "A", 0x0, "T", 0x0, "T", 0x0, "A", 0x0, "C"
DCB 0x0, "H", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |DllMain| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DllMain| PROC
; 136 : {
00000 |$L38521|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M38519|
00004 e3510000 cmp r1, #0
; 137 : switch(Reason)
00008 e59f403c ldr r4, [pc, #0x3C]
0000c 0a000005 beq |$L38516|
00010 e3510001 cmp r1, #1
; 148 : }
; 149 : default:
; 150 : return TRUE;
00014 1a000007 bne |$L38513|
00018 e5943440 ldr r3, [r4, #0x440]
0001c e3130004 tst r3, #4
00020 159f0020 ldrne r0, [pc, #0x20]
00024 1b000000 blne NKDbgPrintfW
00028 |$L38516|
00028 e5943440 ldr r3, [r4, #0x440]
0002c e3130004 tst r3, #4
00030 159f000c ldrne r0, [pc, #0xC]
00034 1b000000 blne NKDbgPrintfW
00038 |$L38513|
; 138 : {
; 139 : case DLL_PROCESS_ATTACH:
; 140 : {
; 141 : DEBUGREGISTER(DLLinstance);
; 142 : DBGMSG(ZONE_DLLINIT, (TEXT("PxaDMA, DllMain(): PxaDMA DLL_PROCESS_ATTACH\r\n")));
; 143 : }
; 144 : case DLL_PROCESS_DETACH:
; 145 : {
; 146 : DBGMSG(ZONE_DLLINIT, (TEXT("PxaDMA, DllMain(): DLL_PROCESS_DETACH \r\n")));
; 147 : return TRUE;
00038 e3a00001 mov r0, #1
; 151 : }
; 152 : }
0003c e8bd4010 ldmia sp!, {r4, lr}
00040 e12fff1e bx lr
00044 |$L38524|
00044 00000000 DCD |??_C@_1FC@GOMGHGBJ@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAl?$AAl?$AAM?$AAa?$AAi?$AAn?$AA?$CI?$AA?$CJ?$AA?3?$AA?5?$AAD@|
00048 00000000 DCD |??_C@_1FO@JHBINHG@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAl?$AAl?$AAM?$AAa?$AAi?$AAn?$AA?$CI?$AA?$CJ?$AA?3?$AA?5?$AAP@|
0004c 00000000 DCD |dpCurSettings|
00050 |$M38520|
ENDP ; |DllMain|
EXPORT |DMA_SetUpChannel|
EXPORT |??_C@_1JE@HGFPBKNC@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| [ DATA ] ; `string'
EXPORT |??_C@_1JK@JCMJHJOD@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| [ DATA ] ; `string'
EXPORT |??_C@_1IM@IKBEMGNI@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| [ DATA ] ; `string'
EXPORT |??_C@_1GE@EFIJMFCD@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| [ DATA ] ; `string'
EXPORT |??_C@_1GA@NGBJPOKA@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| [ DATA ] ; `string'
EXPORT |??_C@_1BO@CBBPPMOA@?$AAD?$AAM?$AAA?$AA_?$AAC?$AAH?$AAA?$AAN?$AAN?$AAE?$AAL?$AA_?$AA?$CF?$AAd?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1JA@DEAPAEML@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| [ DATA ] ; `string'
IMPORT |wsprintfW|
IMPORT |VirtualAlloc|
IMPORT |VirtualFree|
IMPORT |PhyDmaSetUp|
IMPORT |CreateEventW|
IMPORT |CreateSemaphoreW|
IMPORT |CreateThread|
IMPORT |__security_cookie|
IMPORT |__security_check_cookie|
IMPORT |CloseHandle|
IMPORT |CeSetThreadPriority|
00000 AREA |.text| { |DMA_SetUpChannel| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DMA_SetUpChannel|, PDATA, SELECTION=5, ASSOC=|.text| { |DMA_SetUpChannel| } ; comdat associative
|$T38551| DCD |$L38550|
DCD 0x40008b02
00000 AREA |.rdata| { |??_C@_1JA@DEAPAEML@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1JA@DEAPAEML@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| DCB "P"
DCB 0x0, "x", 0x0, "a", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, ","
DCB 0x0, " ", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, "_", 0x0, "S"
DCB 0x0, "e", 0x0, "t", 0x0, "U", 0x0, "p", 0x0, "(", 0x0, ")"
DCB 0x0, ":", 0x0, " ", 0x0, "E", 0x0, "r", 0x0, "r", 0x0, "o"
DCB 0x0, "r", 0x0, "!", 0x0, " ", 0x0, "C", 0x0, "o", 0x0, "u"
DCB 0x0, "i", 0x0, "l", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "o"
DCB 0x0, "t", 0x0, " ", 0x0, "c", 0x0, "r", 0x0, "e", 0x0, "a"
DCB 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "e", 0x0, "v", 0x0, "e"
DCB 0x0, "n", 0x0, "t", 0x0, " ", 0x0, "f", 0x0, "o", 0x0, "r"
DCB 0x0, " ", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, " ", 0x0, "i"
DCB 0x0, "n", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, "r", 0x0, "u"
DCB 0x0, "p", 0x0, "t", 0x0, ".", 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1GA@NGBJPOKA@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GA@NGBJPOKA@?$AAP?$AAx?$AAa?$AAD?$AAM?$AAA?$AA?0?$AA?5?$AAD?$AAM?$AAA?$AA_?$AAS?$AAe?$AAt?$AAU?$AAp?$AA?$CI?$AA?$CJ?$AA?3@| DCB "P"
DCB 0x0, "x", 0x0, "a", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, ","
DCB 0x0, " ", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, "_", 0x0, "S"
DCB 0x0, "e", 0x0, "t", 0x0, "U", 0x0, "p", 0x0, "(", 0x0, ")"
DCB 0x0, ":", 0x0, " ", 0x0, "C", 0x0, "h", 0x0, "a", 0x0, "n"
DCB 0x0, "n", 0x0, "e", 0x0, "l", 0x0, " ", 0x0, "%", 0x0, "d"
DCB 0x0, " ", 0x0, "w", 0x0, "i", 0x0, "l", 0x0, "l", 0x0, " "
DCB 0x0, "b", 0x0, "e", 0x0, " ", 0x0, "u", 0x0, "s", 0x0, "e"
DCB 0x0, "d", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1BO@CBBPPMOA@?$AAD?$AAM?$AAA?$AA_?$AAC?$AAH?$AAA?$AAN?$AAN?$AAE?$AAL?$AA_?$AA?$CF?$AAd?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BO@CBBPPMOA@?$AAD?$AAM?$AAA?$AA_?$AAC?$AAH?$AAA?$AAN?$AAN?$AAE?$AAL?$AA_?$AA?$CF?$AAd?$AA?$AA@| DCB "D"
DCB 0x0, "M", 0x0, "A", 0x0, "_", 0x0, "C", 0x0, "H", 0x0, "A"
DCB 0x0, "N", 0x0, "N", 0x0, "E", 0x0, "L", 0x0, "_", 0x0, "%"
DCB 0x0, "d", 0x0, 0x0, 0x0 ; `string'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -