www.pudn.com > DMBDRV.rar > SianoDMA.cod


; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345  
 
	TTL	E:\WM604\PLATFORM\SEUICBSP\SRC\DRIVERS\DMBDRV\DmaPxaXXX\.\SianoDMA.c 
	CODE32 
 
  00000			 AREA	 |.drectve|, DRECTVE 
	DCB	"-defaultlib:coredll.lib " 
	DCB	"-defaultlib:corelibc.lib " 
 
	EXPORT	|dpCurSettings| [ DATA ] 
 
  00000			 AREA	 |.data|, DATA 
|dpCurSettings| DCB "P", 0x0, "x", 0x0, "a", 0x0, " ", 0x0, "D", 0x0, "m", 0x0 
	DCB	"a", 0x0, " ", 0x0, "D", 0x0, "r", 0x0, "i", 0x0, "v", 0x0 
	DCB	"e", 0x0, "r", 0x0, 0x0, 0x0 
	%	34 
	DCB	"E", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, "s", 0x0 
	DCB	0x0, 0x0 
	%	50 
	DCB	"W", 0x0, "a", 0x0, "r", 0x0, "n", 0x0, "i", 0x0, "n", 0x0 
	DCB	"g", 0x0, "s", 0x0, 0x0, 0x0 
	%	46 
	DCB	"I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, 0x0, 0x0 
	%	54 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"T", 0x0, "e", 0x0, "m", 0x0, "p", 0x0, "o", 0x0, "r", 0x0 
	DCB	"a", 0x0, "r", 0x0, "y", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCB	"U", 0x0, "n", 0x0, "d", 0x0, "e", 0x0, "f", 0x0, "i", 0x0 
	DCB	"n", 0x0, "e", 0x0, "d", 0x0, 0x0, 0x0 
	%	44 
	DCD	0x9 
	EXPORT	|SetEvent| 
	IMPORT	|EventModify| 
; File e:\wm604\public\common\sdk\inc\kfuncs.h 
 
  00000			 AREA	 |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any 
 
  00000			 AREA	 |.pdata$$SetEvent|, PDATA, SELECTION=5, ASSOC=|.text| { |SetEvent| } ; comdat associative 
|$T38450| DCD	|$L38449| 
	DCD	0x40000501 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any 
 
  00000		 |SetEvent| PROC 
 
; 186  : _inline BOOL SetEvent(HANDLE h) { 
 
  00000		 |$L38449| 
  00000	e52de004	 str         lr, [sp, #-4]! 
  00004		 |$M38447| 
 
; 187  : 	return EventModify(h,EVENT_SET); 
 
  00004	e3a01003	 mov         r1, #3 
  00008	eb000000	 bl          EventModify 
 
; 188  : } 
 
  0000c	e49de004	 ldr         lr, [sp], #4 
  00010	e12fff1e	 bx          lr 
  00014		 |$M38448| 
 
			 ENDP  ; |SetEvent| 
 
	IMPORT	|PhyDmaSendDescriptor| 
; File e:\wm604\platform\seuicbsp\src\drivers\dmbdrv\dmapxaxxx\sianodma.c 
 
  00000			 AREA	 |.text| { |sendDmaTransactionFromDb| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$sendDmaTransactionFromDb|, PDATA, SELECTION=5, ASSOC=|.text| { |sendDmaTransactionFromDb| } ; comdat associative 
|$T38459| DCD	|$L38458| 
	DCD	0x40000a01 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |sendDmaTransactionFromDb| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |sendDmaTransactionFromDb| PROC 
 
; 26   : { 
 
  00000		 |$L38458| 
  00000	e52de004	 str         lr, [sp, #-4]! 
  00004		 |$M38456| 
 
; 27   : 	DMA_DATABASE_ST* dataBase; 
; 28   :  
; 29   : 	dataBase = ((DMA_DRV_PARAMS_ST*)dev)->dataBase; 
 
  00004	e5902020	 ldr         r2, [r0, #0x20] 
 
; 30   :  
; 31   : 	if (dataBase->firstMsg != dataBase->lastMsg) 
 
  00008	e5921000	 ldr         r1, [r2] 
  0000c	e5923004	 ldr         r3, [r2, #4] 
  00010	e1510003	 cmp         r1, r3 
 
; 32   : 	{ //We have a transaction in the database 
; 33   : 		PhyDmaSendDescriptor(	(DMA_DRV_PARAMS_ST*)dev,  
; 34   : 								&dataBase->transactions[dataBase->firstMsg]); 
 
  00014	10823201	 addne       r3, r2, r1, lsl #4 
  00018	12831008	 addne       r1, r3, #8 
  0001c	1b000000	 blne        PhyDmaSendDescriptor 
 
; 35   : 	} 
; 36   :  
; 37   : } 
 
  00020	e49de004	 ldr         lr, [sp], #4 
  00024	e12fff1e	 bx          lr 
  00028		 |$M38457| 
 
			 ENDP  ; |sendDmaTransactionFromDb| 
 
	IMPORT	|ReleaseSemaphore| 
	IMPORT	|WaitForSingleObject| 
 
  00000			 AREA	 |.text| { |addDmaTransactionToDb| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$addDmaTransactionToDb|, PDATA, SELECTION=5, ASSOC=|.text| { |addDmaTransactionToDb| } ; comdat associative 
|$T38480| DCD	|$L38479| 
	DCD	0x40003a02 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |addDmaTransactionToDb| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |addDmaTransactionToDb| PROC 
 
; 44   : { 
 
  00000		 |$L38479| 
  00000	e92d47f0	 stmdb       sp!, {r4 - r10, lr} 
  00004	e24dd004	 sub         sp, sp, #4 
  00008		 |$M38477| 
  00008	e1a04003	 mov         r4, r3 
  0000c	e1a09002	 mov         r9, r2 
  00010	e1a0a001	 mov         r10, r1 
  00014	e1a05000	 mov         r5, r0 
 
; 45   : 	DMA_DATABASE_ST*	dataBase; 
; 46   : 	BOOL				sendNow; 
; 47   : 	DWORD				status; 
; 48   :  
; 49   : 	dataBase = ((DMA_DRV_PARAMS_ST*)dev)->dataBase; 
; 50   :  
; 51   : 	WaitForSingleObject(((DMA_DRV_PARAMS_ST*)dev)->databaseSemaphore, INFINITE); 
 
  00018	e5950028	 ldr         r0, [r5, #0x28] 
  0001c	e5956020	 ldr         r6, [r5, #0x20] 
  00020	e3e01000	 mvn         r1, #0 
  00024	eb000000	 bl          WaitForSingleObject 
 
; 52   : 	if (dataBase->firstMsg == dataBase->lastMsg) 
 
  00028	e5960004	 ldr         r0, [r6, #4] 
 
; 53   : 		sendNow = TRUE; 
; 54   : 	else 
; 55   : 		sendNow = FALSE; 
; 56   :  
; 57   : 	if (dataBase->firstMsg == (dataBase->lastMsg + 1) % MAX_NUM_OF_WAITING_TRANSACTIONS) 
 
  0002c	e59f80b0	 ldr         r8, [pc, #0xB0] 
  00030	e596e000	 ldr         lr, [r6] 
  00034	e2801001	 add         r1, r0, #1 
  00038	e0832891	 umull       r2, r3, r1, r8 
  0003c	e15e0000	 cmp         lr, r0 
  00040	e1a031a3	 mov         r3, r3, lsr #3 
  00044	e0833103	 add         r3, r3, r3, lsl #2 
  00048	e0413083	 sub         r3, r1, r3, lsl #1 
  0004c	03a07001	 moveq       r7, #1 
  00050	13a07000	 movne       r7, #0 
  00054	e15e0003	 cmp         lr, r3 
 
; 58   : 	{ 
; 59   : 		return FALSE; 
 
  00058	03a00000	 moveq       r0, #0 
  0005c	0a00001d	 beq         |$L38283| 
 
; 60   : 	} 
; 61   : 	dataBase->transactions[dataBase->lastMsg].desc = desc; 
 
  00060	e0863200	 add         r3, r6, r0, lsl #4 
  00064	e583a008	 str         r10, [r3, #8] 
 
; 62   : 	dataBase->transactions[dataBase->lastMsg].callBack = callBack; 
 
  00068	e5963004	 ldr         r3, [r6, #4] 
 
; 63   : 	dataBase->transactions[dataBase->lastMsg].transactionId = transactionId; 
; 64   : 	dataBase->lastMsg = (dataBase->lastMsg + 1) % MAX_NUM_OF_WAITING_TRANSACTIONS;		 
; 65   : 	ReleaseSemaphore(((DMA_DRV_PARAMS_ST*)dev)->databaseSemaphore, 1, &status); 
 
  0006c	e28d2000	 add         r2, sp, #0 
  00070	e3a01001	 mov         r1, #1 
  00074	e0863203	 add         r3, r6, r3, lsl #4 
  00078	e5839010	 str         r9, [r3, #0x10] 
  0007c	e5963004	 ldr         r3, [r6, #4] 
  00080	e0863203	 add         r3, r6, r3, lsl #4 
  00084	e5834014	 str         r4, [r3, #0x14] 
  00088	e5963004	 ldr         r3, [r6, #4] 
  0008c	e2834001	 add         r4, r3, #1 
  00090	e083e894	 umull       lr, r3, r4, r8 
  00094	e1a031a3	 mov         r3, r3, lsr #3 
  00098	e0833103	 add         r3, r3, r3, lsl #2 
  0009c	e0443083	 sub         r3, r4, r3, lsl #1 
  000a0	e5863004	 str         r3, [r6, #4] 
  000a4	e5950028	 ldr         r0, [r5, #0x28] 
  000a8	eb000000	 bl          ReleaseSemaphore 
 
; 66   : 	if (sendNow == TRUE) 
 
  000ac	e3570001	 cmp         r7, #1 
  000b0	1a000007	 bne         |$L38466| 
 
; 67   : 		sendDmaTransactionFromDb(dev); 
 
  000b4	e5952020	 ldr         r2, [r5, #0x20] 
  000b8	e5921000	 ldr         r1, [r2] 
  000bc	e5923004	 ldr         r3, [r2, #4] 
  000c0	e1510003	 cmp         r1, r3 
  000c4	10823201	 addne       r3, r2, r1, lsl #4 
  000c8	12831008	 addne       r1, r3, #8 
  000cc	11a00005	 movne       r0, r5 
  000d0	1b000000	 blne        PhyDmaSendDescriptor 
  000d4		 |$L38466| 
 
; 68   : 	return TRUE; 
 
  000d4	e3a00001	 mov         r0, #1 
  000d8		 |$L38283| 
 
; 69   : } 
 
  000d8	e28dd004	 add         sp, sp, #4 
  000dc	e8bd47f0	 ldmia       sp!, {r4 - r10, lr} 
  000e0	e12fff1e	 bx          lr 
  000e4		 |$L38482| 
  000e4	cccccccd	 DCD         0xcccccccd 
  000e8		 |$M38478| 
 
			 ENDP  ; |addDmaTransactionToDb| 
 
	EXPORT	|DmaIst| 
	EXPORT	|??_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@| [ DATA ] ; `string' 
	IMPORT	|LocalFree| 
	IMPORT	|PhyDmaIntHandler| 
	IMPORT	|NKDbgPrintfW| 
 
  00000			 AREA	 |.text| { |DmaIst| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000			 AREA	 |.pdata$$DmaIst|, PDATA, SELECTION=5, ASSOC=|.text| { |DmaIst| } ; comdat associative 
|$T38506| DCD	|$L38505| 
	DCD	0x40004d02 
 
  00000			 AREA	 |.rdata| { |??_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@| }, DATA, READONLY, SELECTION=2 ; comdat any 
|??_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@| DCB "S" 
	DCB	0x0, "i", 0x0, "a", 0x0, "n", 0x0, "o", 0x0, " ", 0x0, "P" 
	DCB	0x0, "x", 0x0, "a", 0x0, "D", 0x0, "M", 0x0, "A", 0x0, "," 
	DCB	0x0, " ", 0x0, "D", 0x0, "m", 0x0, "a", 0x0, "I", 0x0, "s" 
	DCB	0x0, "t", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "-", 0x0, " " 
	DCB	0x0, "B", 0x0, "a", 0x0, "d", 0x0, " ", 0x0, "s", 0x0, "t" 
	DCB	0x0, "a", 0x0, "t", 0x0, "u", 0x0, "s", 0x0, " ", 0x0, "a" 
	DCB	0x0, "f", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "D" 
	DCB	0x0, "M", 0x0, "A", 0x0, " ", 0x0, "t", 0x0, "r", 0x0, "a" 
	DCB	0x0, "n", 0x0, "s", 0x0, "f", 0x0, "e", 0x0, "r", 0x0, 0xa 
	DCB	0x0, 0x0, 0x0				; `string' 
; Function compile flags: /Ogsy 
 
  00000			 AREA	 |.text| { |DmaIst| }, CODE, ARM, SELECTION=1 ; comdat noduplicate 
 
  00000		 |DmaIst| PROC 
 
; 79   : { 
 
  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' 
 
  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 
 
; 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