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

📄 sianodma.cod

📁 这是mobile6.0下的DMB驱动
💻 COD
📖 第 1 页 / 共 4 页
字号:
  00000			 AREA	 |.rdata| { |??_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, READONLY, SELECTION=2 ; comdat any
|??_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@| 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, "P", 0x0, "h", 0x0, "y"
	DCB	0x0, "D", 0x0, "m", 0x0, "a", 0x0, " ", 0x0, "S", 0x0, "e"
	DCB	0x0, "t", 0x0, "u", 0x0, "p", 0x0, " ", 0x0, "f", 0x0, "a"
	DCB	0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d", 0x0, ".", 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'

  00000			 AREA	 |.rdata| { |??_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, READONLY, SELECTION=2 ; comdat any
|??_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@| 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, "A", 0x0, "l", 0x0, "l"
	DCB	0x0, "o", 0x0, "c", 0x0, "a", 0x0, "t", 0x0, "i", 0x0, "n"
	DCB	0x0, "g", 0x0, " ", 0x0, "m", 0x0, "e", 0x0, "m", 0x0, "o"
	DCB	0x0, "r", 0x0, "y", 0x0, " ", 0x0, "f", 0x0, "o", 0x0, "r"
	DCB	0x0, " ", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, " ", 0x0, "m"
	DCB	0x0, "o", 0x0, "d", 0x0, "u", 0x0, "l", 0x0, "e", 0x0, " "
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
	DCB	0x0, ".", 0x0, 0xa, 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_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, READONLY, SELECTION=2 ; comdat any
|??_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@| 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, "l", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t"
	DCB	0x0, " ", 0x0, "c", 0x0, "r", 0x0, "e", 0x0, "a", 0x0, "t"
	DCB	0x0, "e", 0x0, " ", 0x0, "s", 0x0, "e", 0x0, "m", 0x0, "a"
	DCB	0x0, "p", 0x0, "h", 0x0, "o", 0x0, "r", 0x0, "e", 0x0, " "
	DCB	0x0, "f", 0x0, "o", 0x0, "r", 0x0, " ", 0x0, "d", 0x0, "e"
	DCB	0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "d"
	DCB	0x0, "a", 0x0, "t", 0x0, "a", 0x0, "B", 0x0, "a", 0x0, "s"
	DCB	0x0, "e", 0x0, ".", 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_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, READONLY, SELECTION=2 ; comdat any
|??_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@| 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, "l", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t"
	DCB	0x0, " ", 0x0, "a", 0x0, "l", 0x0, "l", 0x0, "o", 0x0, "c"
	DCB	0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "m", 0x0, "e"
	DCB	0x0, "m", 0x0, "o", 0x0, "r", 0x0, "y", 0x0, " ", 0x0, "f"
	DCB	0x0, "o", 0x0, "r", 0x0, " ", 0x0, "d", 0x0, "e", 0x0, "v"
	DCB	0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "h", 0x0, "a"
	DCB	0x0, "n", 0x0, "d", 0x0, "l", 0x0, "e", 0x0, ".", 0x0, 0xa
	DCB	0x0, 0x0, 0x0				; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |DMA_SetUpChannel| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |DMA_SetUpChannel| PROC

; 165  : {

  00000		 |$L38550|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004	e24dd034	 sub         sp, sp, #0x34
  00008		 |$M38548|
  00008	e1a05000	 mov         r5, r0
  0000c	e59f3214	 ldr         r3, [pc, #0x214]
  00010	e5933000	 ldr         r3, [r3]
  00014	e58d3030	 str         r3, [sp, #0x30]

; 166  : 	
; 167  : 	DMA_DRV_PARAMS_ST* drvHandle;
; 168  : 	TCHAR	eventName[20];
; 169  : 
; 170  : 	//Allocate memory for DMA channel handle.
; 171  : 	drvHandle = (DMA_DRV_PARAMS_ST*)VirtualAlloc(NULL, sizeof(DMA_DRV_PARAMS_ST), MEM_COMMIT, PAGE_READWRITE); 

  00018	e3a03004	 mov         r3, #4
  0001c	e3a02a01	 mov         r2, #1, 20
  00020	e3a01040	 mov         r1, #0x40
  00024	e3a00000	 mov         r0, #0
  00028	eb000000	 bl          VirtualAlloc
  0002c	e1b04000	 movs        r4, r0

; 172  : 	if (drvHandle == NULL)

  00030	1a000006	 bne         |$L38343|

; 173  : 	{
; 174  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("PxaDMA, DMA_SetUp(): Error! Could not allocate memory for device handle.\n")));

  00034	e59f31cc	 ldr         r3, [pc, #0x1CC]
  00038	e5933440	 ldr         r3, [r3, #0x440]
  0003c	e3130009	 tst         r3, #9
  00040	0a000062	 beq         |$L38527|
  00044	e59f01d8	 ldr         r0, [pc, #0x1D8]
  00048	eb000000	 bl          NKDbgPrintfW

; 175  : 		return NULL;

  0004c	ea00005f	 b           |$L38527|
  00050		 |$L38343|

; 176  : 	}
; 177  : 
; 178  : 	//Create semaphore to take care of channel database.
; 179  : 	drvHandle->databaseSemaphore = CreateSemaphore(NULL, 1, 1, NULL);

  00050	e3a03000	 mov         r3, #0
  00054	e3a02001	 mov         r2, #1
  00058	e3a01001	 mov         r1, #1
  0005c	e3a00000	 mov         r0, #0
  00060	eb000000	 bl          CreateSemaphoreW
  00064	e3500000	 cmp         r0, #0
  00068	e5840028	 str         r0, [r4, #0x28]

; 180  : 	if (drvHandle->databaseSemaphore == NULL)

  0006c	1a000006	 bne         |$L38349|

; 181  : 	{
; 182  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("PxaDMA, DMA_SetUp(): Error! Could not create semaphore for device dataBase.\n")));

  00070	e59f3190	 ldr         r3, [pc, #0x190]
  00074	e5933440	 ldr         r3, [r3, #0x440]
  00078	e3130009	 tst         r3, #9
  0007c	0a00004f	 beq         |$L38529|
  00080	e59f0198	 ldr         r0, [pc, #0x198]
  00084	eb000000	 bl          NKDbgPrintfW

; 183  : 		VirtualFree (drvHandle, 0, MEM_RELEASE);
; 184  : 		return NULL;

  00088	ea00004c	 b           |$L38529|
  0008c		 |$L38349|

; 185  : 	}
; 186  : 
; 187  : 	//Allocate the driver database memory.
; 188  : 	drvHandle->dataBase = (DMA_DATABASE_ST*)VirtualAlloc(NULL, sizeof(DMA_DATABASE_ST), MEM_COMMIT, PAGE_READWRITE); 

  0008c	e3a03004	 mov         r3, #4
  00090	e3a02a01	 mov         r2, #1, 20
  00094	e3a010a8	 mov         r1, #0xA8
  00098	e3a00000	 mov         r0, #0
  0009c	eb000000	 bl          VirtualAlloc
  000a0	e3500000	 cmp         r0, #0
  000a4	e5840020	 str         r0, [r4, #0x20]

; 189  : 	if (drvHandle->dataBase == NULL)

  000a8	1a000007	 bne         |$L38356|

; 190  : 	{
; 191  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("PxaDMA, DMA_SetUp(): Error! Allocating memory for DMA module failed.\n")));

  000ac	e59f3154	 ldr         r3, [pc, #0x154]
  000b0	e5933440	 ldr         r3, [r3, #0x440]
  000b4	e3130009	 tst         r3, #9
  000b8	0a000001	 beq         |$L38531|
  000bc	e59f0158	 ldr         r0, [pc, #0x158]
  000c0		 |$L38547|
  000c0	eb000000	 bl          NKDbgPrintfW
  000c4		 |$L38531|

; 192  : 		CloseHandle(drvHandle->databaseSemaphore);

  000c4	e5940028	 ldr         r0, [r4, #0x28]

; 193  : 		VirtualFree (drvHandle, 0, MEM_RELEASE);		
; 194  : 		return NULL;

  000c8	ea00003b	 b           |$L38546|
  000cc		 |$L38356|

; 195  : 	}
; 196  : 
; 197  : 	drvHandle->burstSize = userParam->burstSize;

  000cc	e5953008	 ldr         r3, [r5, #8]

; 198  : 	drvHandle->busWidth = userParam->busWidth;	
; 199  : 
; 200  : 	if (userParam->flags & DMA_USE_HW_FLOW_CTRL)

  000d0	e3a06001	 mov         r6, #1

; 201  :        {
; 202  : 		drvHandle->useHWFlowCtrl = TRUE;
; 203  :                 drvHandle->dmaReq = userParam->dmaReq;
; 204  :        }
; 205  : 
; 206  : 	if (PhyDmaSetUp(drvHandle) == FALSE)

  000d4	e1a00004	 mov         r0, r4
  000d8	e5843014	 str         r3, [r4, #0x14]
  000dc	e595300c	 ldr         r3, [r5, #0xC]
  000e0	e5843018	 str         r3, [r4, #0x18]
  000e4	e5953000	 ldr         r3, [r5]
  000e8	e3130001	 tst         r3, #1
  000ec	1584601c	 strne       r6, [r4, #0x1C]
  000f0	15953004	 ldrne       r3, [r5, #4]
  000f4	15843010	 strne       r3, [r4, #0x10]
  000f8	eb000000	 bl          PhyDmaSetUp
  000fc	e3500000	 cmp         r0, #0
  00100	1a000005	 bne         |$L38360|

; 207  : 	{
; 208  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("PxaDMA, DMA_SetUp(): Error! PhyDma Setup failed.\n")));

  00104	e59f30fc	 ldr         r3, [pc, #0xFC]
  00108	e5933440	 ldr         r3, [r3, #0x440]
  0010c	e3130009	 tst         r3, #9
  00110	0affffeb	 beq         |$L38531|
  00114	e59f00fc	 ldr         r0, [pc, #0xFC]

; 209  : 		CloseHandle(drvHandle->databaseSemaphore);
; 210  : 		VirtualFree (drvHandle, 0, MEM_RELEASE);		
; 211  : 		return NULL;

  00118	eaffffe8	 b           |$L38547|
  0011c		 |$L38360|

; 212  : 	}
; 213  : 
; 214  :        DBGMSG(1, (TEXT("PxaDMA, DMA_SetUp(): Channel %d will be used.\r\n"), drvHandle->channel));

  0011c	e5941004	 ldr         r1, [r4, #4]
  00120	e59f00ec	 ldr         r0, [pc, #0xEC]
  00124	eb000000	 bl          NKDbgPrintfW

; 215  : 	wsprintf(eventName, TEXT("DMA_CHANNEL_%d"),drvHandle->channel);

  00128	e5942004	 ldr         r2, [r4, #4]
  0012c	e59f10dc	 ldr         r1, [pc, #0xDC]
  00130	e28d0008	 add         r0, sp, #8
  00134	eb000000	 bl          wsprintfW

; 216  : 	drvHandle->dmaIntEvent = CreateEvent(NULL, FALSE, FALSE, eventName);

  00138	e28d3008	 add         r3, sp, #8
  0013c	e3a02000	 mov         r2, #0
  00140	e3a01000	 mov         r1, #0
  00144	e3a00000	 mov         r0, #0
  00148	eb000000	 bl          CreateEventW
  0014c	e3500000	 cmp         r0, #0
  00150	e584000c	 str         r0, [r4, #0xC]

; 217  : 	if (drvHandle->dmaIntEvent == NULL)

  00154	1a000005	 bne         |$L38367|

; 218  : 	{
; 219  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("PxaDMA, DMA_SetUp(): Error! Couild not create event for DMA interrupt.\n")));

  00158	e59f30a8	 ldr         r3, [pc, #0xA8]
  0015c	e5933440	 ldr         r3, [r3, #0x440]
  00160	e3130009	 tst         r3, #9
  00164	0affffd6	 beq         |$L38531|
  00168	e59f0094	 ldr         r0, [pc, #0x94]

; 220  : 		CloseHandle(drvHandle->databaseSemaphore);
; 221  : 		VirtualFree (drvHandle, 0, MEM_RELEASE);		
; 222  : 		return NULL;

  0016c	eaffffd3	 b           |$L38547|
  00170		 |$L38367|

; 223  : 	}
; 224  : 
; 225  : 
; 226  : 	
; 227  : 
; 228  : 
; 229  : 	//Create IST thread for DMA controller.
; 230  : 	drvHandle->ist = CreateThread(	NULL,
; 231  : 									0, 
; 232  : 									DmaIst,
; 233  : 									drvHandle, 
; 234  : 									0, 
; 235  : 									NULL); 

  00170	e59f2094	 ldr         r2, [pc, #0x94]
  00174	e3a0e000	 mov         lr, #0
  00178	e1a03004	 mov         r3, r4
  0017c	e3a01000	 mov         r1, #0
  00180	e3a00000	 mov         r0, #0
  00184	e58de004	 str         lr, [sp, #4]
  00188	e58de000	 str         lr, [sp]
  0018c	eb000000	 bl          CreateThread
  00190	e3500000	 cmp         r0, #0
  00194	e5840024	 str         r0, [r4, #0x24]

; 236  : 	if (drvHandle->ist == NULL)

  00198	1a000010	 bne         |$L38373|

; 237  : 	{
; 238  : 		DBGMSG(ZONE_INIT | ZONE_ERROR, (TEXT("PxaDMA, DMA_SetUp(): Error! Couild not create event for DMA interrupt.\n")));

  0019c	e59f3064	 ldr         r3, [pc, #0x64]
  001a0	e5933440	 ldr         r3, [r3, #0x440]
  001a4	e3130009	 tst         r3, #9
  001a8	159f0054	 ldrne       r0, [pc, #0x54]
  001ac	1b000000	 blne        NKDbgPrintfW

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -