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

📄 sianodma.cod

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