⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sianodma.cod

📁 这是mobile6.0下的DMB驱动
💻 COD
📖 第 1 页 / 共 4 页
字号:
; 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 + -