📄 sianodma.cod
字号:
; 239 : CloseHandle(drvHandle->databaseSemaphore);
001b0 e5940028 ldr r0, [r4, #0x28]
001b4 eb000000 bl CloseHandle
; 240 : CloseHandle(drvHandle->dmaIntEvent);
001b8 e594000c ldr r0, [r4, #0xC]
001bc |$L38546|
001bc eb000000 bl CloseHandle
; 181 : {
; 182 : DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("PxaDMA, DMA_SetUp(): Error! Could not create semaphore for device dataBase.\n")));
001c0 |$L38529|
; 241 : VirtualFree (drvHandle, 0, MEM_RELEASE);
001c0 e3a02902 mov r2, #2, 18
001c4 e3a01000 mov r1, #0
001c8 e1a00004 mov r0, r4
001cc eb000000 bl VirtualFree
001d0 |$L38527|
; 242 : return NULL;
001d0 e59d0030 ldr r0, [sp, #0x30]
001d4 eb000000 bl __security_check_cookie
001d8 e3a04000 mov r4, #0
001dc ea000004 b |$L38336|
001e0 |$L38373|
; 243 : }
; 244 :
; 245 : CeSetThreadPriority(drvHandle->ist, 0);
001e0 e3a01000 mov r1, #0
001e4 eb000000 bl CeSetThreadPriority
; 246 : drvHandle->activeChannel = TRUE;
001e8 e584602c str r6, [r4, #0x2C]
; 247 : return drvHandle;
001ec e59d0030 ldr r0, [sp, #0x30]
001f0 eb000000 bl __security_check_cookie
001f4 |$L38336|
; 175 : return NULL;
001f4 e1a00004 mov r0, r4
; 248 :
; 249 : }
001f8 e28dd034 add sp, sp, #0x34
001fc e8bd4070 ldmia sp!, {r4 - r6, lr}
00200 e12fff1e bx lr
00204 |$L38553|
00204 00000000 DCD |??_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@|
00208 00000000 DCD |dpCurSettings|
0020c 00000000 DCD |DmaIst|
00210 00000000 DCD |??_C@_1BO@CBBPPMOA@?$AAD?$AAM?$AAA?$AA_?$AAC?$AAH?$AAA?$AAN?$AAN?$AAE?$AAL?$AA_?$AA?$CF?$AAd?$AA?$AA@|
00214 00000000 DCD |??_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@|
00218 00000000 DCD |??_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@|
0021c 00000000 DCD |??_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@|
00220 00000000 DCD |??_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@|
00224 00000000 DCD |??_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@|
00228 00000000 DCD |__security_cookie|
0022c |$M38549|
ENDP ; |DMA_SetUpChannel|
EXPORT |DMA_RemoveChannel|
IMPORT |PhyDmaRemoveChannel|
IMPORT |GetExitCodeThread|
; File e:\wm604\public\common\sdk\inc\kfuncs.h
00000 AREA |.text| { |DMA_RemoveChannel| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DMA_RemoveChannel|, PDATA, SELECTION=5, ASSOC=|.text| { |DMA_RemoveChannel| } ; comdat associative
|$T38568| DCD |$L38567|
DCD 0x40002a02
; Function compile flags: /Ogsy
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\dmapxaxxx\sianodma.c
00000 AREA |.text| { |DMA_RemoveChannel| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DMA_RemoveChannel| PROC
; 260 : {
00000 |$L38567|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M38565|
00008 e1a04000 mov r4, r0
; 261 : DMA_DRV_PARAMS_ST* drvHandle = (DMA_DRV_PARAMS_ST*)dev;
; 262 : DWORD exitCode;
; 263 :
; 264 : drvHandle->activeChannel = FALSE;
; 265 : if (drvHandle->dmaIntEvent)
0000c e594300c ldr r3, [r4, #0xC]
00010 e3a02000 mov r2, #0
00014 e584202c str r2, [r4, #0x2C]
00018 e3530000 cmp r3, #0
; 266 : SetEvent(drvHandle->dmaIntEvent);
0001c 13a01003 movne r1, #3
00020 11a00003 movne r0, r3
00024 1b000000 blne EventModify
00028 e3a05c01 mov r5, #1, 24
0002c e3855003 orr r5, r5, #3
00030 |$L38384|
; 267 :
; 268 : //Wait until the thread exits.
; 269 : while (GetExitCodeThread(drvHandle->ist, &exitCode) == STILL_ACTIVE);
00030 e5940024 ldr r0, [r4, #0x24]
00034 e28d1000 add r1, sp, #0
00038 eb000000 bl GetExitCodeThread
0003c e1500005 cmp r0, r5
00040 0afffffa beq |$L38384|
; 270 :
; 271 : if (drvHandle->ist)
00044 e5943024 ldr r3, [r4, #0x24]
00048 e3530000 cmp r3, #0
; 272 : CloseHandle(drvHandle->ist);
0004c 11a00003 movne r0, r3
00050 1b000000 blne CloseHandle
; 273 : if (drvHandle->dmaIntEvent)
00054 e594300c ldr r3, [r4, #0xC]
00058 e3530000 cmp r3, #0
; 274 : CloseHandle(drvHandle->dmaIntEvent);
0005c 11a00003 movne r0, r3
00060 1b000000 blne CloseHandle
; 275 : PhyDmaRemoveChannel(drvHandle);
00064 e1a00004 mov r0, r4
00068 eb000000 bl PhyDmaRemoveChannel
; 276 : if (drvHandle->dataBase)
0006c e5943020 ldr r3, [r4, #0x20]
00070 e3530000 cmp r3, #0
; 277 : VirtualFree(drvHandle->dataBase, sizeof(DMA_DATABASE_ST), MEM_RELEASE);
00074 13a02902 movne r2, #2, 18
00078 13a010a8 movne r1, #0xA8
0007c 11a00003 movne r0, r3
00080 1b000000 blne VirtualFree
; 278 : CloseHandle(drvHandle->databaseSemaphore);
00084 e5940028 ldr r0, [r4, #0x28]
00088 eb000000 bl CloseHandle
; 279 : //Allocate memory for DMA channel handle.
; 280 : if (drvHandle)
; 281 : VirtualFree(drvHandle, sizeof(DMA_DRV_PARAMS_ST), MEM_RELEASE);
0008c e3a02902 mov r2, #2, 18
00090 e3a01040 mov r1, #0x40
00094 e1a00004 mov r0, r4
00098 eb000000 bl VirtualFree
; 282 :
; 283 : }
0009c e28dd004 add sp, sp, #4
000a0 e8bd4030 ldmia sp!, {r4, r5, lr}
000a4 e12fff1e bx lr
000a8 |$M38566|
ENDP ; |DMA_RemoveChannel|
EXPORT |DMA_ConfigChannel|
IMPORT |LocalAlloc|
00000 AREA |.text| { |DMA_ConfigChannel| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DMA_ConfigChannel|, PDATA, SELECTION=5, ASSOC=|.text| { |DMA_ConfigChannel| } ; comdat associative
|$T38604| DCD |$L38603|
DCD 0x40004402
; Function compile flags: /Ogsy
00000 AREA |.text| { |DMA_ConfigChannel| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DMA_ConfigChannel| PROC
; 297 : {
00000 |$L38603|
00000 e92d47f0 stmdb sp!, {r4 - r10, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M38601|
00008 e1a04001 mov r4, r1
0000c e1a05000 mov r5, r0
; 298 : DMA_DESCRIPTOR_ST* desc;
; 299 : DMA_DRV_PARAMS_ST* devHandle = (DMA_DRV_PARAMS_ST *)dev;
; 300 :
; 301 :
; 302 :
; 303 : desc = LocalAlloc(LPTR, sizeof(DMA_DESCRIPTOR_ST));
00010 e3a01010 mov r1, #0x10
00014 e3a00040 mov r0, #0x40
00018 eb000000 bl LocalAlloc
; 304 :
; 305 : desc->srcPhyAddr = dmaParam->srcAddr;
0001c e5943000 ldr r3, [r4]
00020 e1a07000 mov r7, r0
; 306 : desc->dstPhyAddr = dmaParam->dstAddr;
; 307 : desc->len = dmaParam->len;
; 308 : desc->flags = dmaParam->flags;
; 309 :
; 310 : addDmaTransactionToDb( dev,
; 311 : desc,
; 312 : dmaParam->callBack,
; 313 : dmaParam->transactionId);
00024 e3e01000 mvn r1, #0
00028 e5873000 str r3, [r7]
0002c e5943004 ldr r3, [r4, #4]
00030 e5873004 str r3, [r7, #4]
00034 e5943008 ldr r3, [r4, #8]
00038 e5873008 str r3, [r7, #8]
0003c e594300c ldr r3, [r4, #0xC]
00040 e587300c str r3, [r7, #0xC]
00044 e5950028 ldr r0, [r5, #0x28]
00048 e5949014 ldr r9, [r4, #0x14]
0004c e594a010 ldr r10, [r4, #0x10]
00050 e5958020 ldr r8, [r5, #0x20]
00054 eb000000 bl WaitForSingleObject
00058 e5980004 ldr r0, [r8, #4]
0005c e59fe0a8 ldr lr, [pc, #0xA8]
00060 e5984000 ldr r4, [r8]
00064 e2801001 add r1, r0, #1
00068 e0832e91 umull r2, r3, r1, lr
0006c e1540000 cmp r4, r0
00070 e1a031a3 mov r3, r3, lsr #3
00074 e0833103 add r3, r3, r3, lsl #2
00078 e0413083 sub r3, r1, r3, lsl #1
0007c 03a06001 moveq r6, #1
00080 13a06000 movne r6, #0
00084 e1540003 cmp r4, r3
00088 0a00001c beq |$L38589|
0008c e0883200 add r3, r8, r0, lsl #4
00090 e5837008 str r7, [r3, #8]
00094 e5983004 ldr r3, [r8, #4]
00098 e28d2000 add r2, sp, #0
0009c e3a01001 mov r1, #1
000a0 e0883203 add r3, r8, r3, lsl #4
000a4 e5839010 str r9, [r3, #0x10]
000a8 e5983004 ldr r3, [r8, #4]
000ac e0883203 add r3, r8, r3, lsl #4
000b0 e583a014 str r10, [r3, #0x14]
000b4 e5983004 ldr r3, [r8, #4]
000b8 e2834001 add r4, r3, #1
000bc e083ee94 umull lr, r3, r4, lr
000c0 e1a031a3 mov r3, r3, lsr #3
000c4 e0833103 add r3, r3, r3, lsl #2
000c8 e0443083 sub r3, r4, r3, lsl #1
000cc e5883004 str r3, [r8, #4]
000d0 e5950028 ldr r0, [r5, #0x28]
000d4 eb000000 bl ReleaseSemaphore
000d8 e3560001 cmp r6, #1
000dc 1a000007 bne |$L38589|
000e0 e5952020 ldr r2, [r5, #0x20]
000e4 e5921000 ldr r1, [r2]
000e8 e5923004 ldr r3, [r2, #4]
000ec e1510003 cmp r1, r3
000f0 10823201 addne r3, r2, r1, lsl #4
000f4 12831008 addne r1, r3, #8
000f8 11a00005 movne r0, r5
000fc 1b000000 blne PhyDmaSendDescriptor
00100 |$L38589|
; 314 :
; 315 : }
00100 e28dd004 add sp, sp, #4
00104 e8bd47f0 ldmia sp!, {r4 - r10, lr}
00108 e12fff1e bx lr
0010c |$L38606|
0010c cccccccd DCD 0xcccccccd
00110 |$M38602|
ENDP ; |DMA_ConfigChannel|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -