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

📄 basei2s.cod

📁 CS4245 Wince驱动
💻 COD
📖 第 1 页 / 共 5 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4237 

	TTL	C:\WINCE500\PLATFORM\MP2530F\SRC\DRIVERS\BOARD\AUDIOCODEC\I2S\.\BASEI2S.cpp
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "

	EXPORT	|?pBSPargs@@3PAUBSP_ARGS@@A| [ DATA ]	; pBSPargs
	EXPORT	|?m_pRegSet@@3PAPAKA| [ DATA ]		; m_pRegSet

  00000			 AREA	 |.bss|, NOINIT
|?m_pRegSet@@3PAPAKA| % 0x8				; m_pRegSet

  00000			 AREA	 |.data|, DATA
|?pBSPargs@@3PAUBSP_ARGS@@A| DCD 0x80000		; pBSPargs
	EXPORT	|?MFP_AllocRegisterBase@@YAHPAVMES_IModule@@K@Z| ; MFP_AllocRegisterBase
	IMPORT	|VirtualAlloc|
	IMPORT	|VirtualCopy|
	IMPORT	|?SetPhysicalAddress@MES_IModule@@QAAXK@Z| ; MES_IModule::SetPhysicalAddress
; File c:\wince500\platform\mp2530f\src\drivers\board\audiocodec\drvlibi2s\basei2s.cpp

  00000			 AREA	 |.text| { |?MFP_AllocRegisterBase@@YAHPAVMES_IModule@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?MFP_AllocRegisterBase@@YAHPAVMES_IModule@@K@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?MFP_AllocRegisterBase@@YAHPAVMES_IModule@@K@Z| } ; comdat associative
|$T37196| DCD	|$L37195|
	DCD	0x40004702
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?MFP_AllocRegisterBase@@YAHPAVMES_IModule@@K@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?MFP_AllocRegisterBase@@YAHPAVMES_IModule@@K@Z| PROC ; MFP_AllocRegisterBase

; 39   : {

  00000		 |$L37195|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M37193|
  00008	e1a06001	 mov         r6, r1
  0000c	e1a04000	 mov         r4, r0

; 40   : 
; 41   : 	U32	OffsetAddr, AlignAddr;
; 42   : 
; 43   : 	DWORD dwNumRegSet = pModule->GetNumberOfRegisterSet();

  00010	e5943000	 ldr         r3, [r4]
  00014	e5933008	 ldr         r3, [r3, #8]
  00018	e1a0e00f	 mov         lr, pc
  0001c	e12fff13	 bx          r3
  00020	e1a08000	 mov         r8, r0

; 44   : 	RETAILMSG(0, (TEXT("MFP_AllocRegisterBase dwNumRegSet : %d\t\n"),dwNumRegSet));
; 45   : 	DWORD dwSizeRegSet,dwRegOffset;
; 46   : 
; 47   : 	pModule->SetPhysicalAddress(PHY_BASEADDR);

  00024	e1a00004	 mov         r0, r4
  00028	e1a01006	 mov         r1, r6
  0002c	eb000000	 bl          |?SetPhysicalAddress@MES_IModule@@QAAXK@Z|

; 48   : 
; 49   : 	for(DWORD index = 0 ; index < dwNumRegSet ; index++)

  00030	e3a05000	 mov         r5, #0
  00034	e3580000	 cmp         r8, #0
  00038	0a000030	 beq         |$L36181|
  0003c	e3a03eff	 mov         r3, #0xFF, 28
  00040	e383300f	 orr         r3, r3, #0xF
  00044	e59f70cc	 ldr         r7, [pc, #0xCC]
  00048	e3a09401	 mov         r9, #1, 8
  0004c	e006a003	 and         r10, r6, r3
  00050	e2499010	 sub         r9, r9, #0x10
  00054		 |$L36179|

; 50   : 	{
; 51   : 		dwSizeRegSet = pModule->GetSizeOfRegisterSet(index);

  00054	e5943000	 ldr         r3, [r4]
  00058	e1a01005	 mov         r1, r5
  0005c	e1a00004	 mov         r0, r4
  00060	e593300c	 ldr         r3, [r3, #0xC]
  00064	e1a0e00f	 mov         lr, pc
  00068	e12fff13	 bx          r3

; 52   : 		dwRegOffset = pModule->GetOffsetOfRegisterSet(index);

  0006c	e5943000	 ldr         r3, [r4]
  00070	e1a0b000	 mov         r11, r0
  00074	e1a01005	 mov         r1, r5
  00078	e5933014	 ldr         r3, [r3, #0x14]
  0007c	e1a00004	 mov         r0, r4
  00080	e1a0e00f	 mov         lr, pc
  00084	e12fff13	 bx          r3
  00088	e58d0000	 str         r0, [sp]

; 53   : 		AlignAddr	= PHY_BASEADDR & 0xfffff000;
; 54   : 		OffsetAddr	= PHY_BASEADDR & 0x00000fff;
; 55   : 
; 56   : 
; 57   : 		m_pRegSet[index] = (DWORD*)VirtualAlloc(0, dwSizeRegSet, MEM_RESERVE, PAGE_NOACCESS);

  0008c	e3a00000	 mov         r0, #0
  00090	e3a03001	 mov         r3, #1
  00094	e3a02a02	 mov         r2, #2, 20
  00098	e1a0100b	 mov         r1, r11
  0009c	eb000000	 bl          VirtualAlloc
  000a0	e3500000	 cmp         r0, #0
  000a4	e5870000	 str         r0, [r7]

; 58   : 		if(!m_pRegSet[index])

  000a8	0a000018	 beq         |$L37183|

; 59   : 		{
; 60   : 			DEBUGMSG(1, (TEXT("m_pRegSet[%d]: VirtualAlloc failed!\r\n"),index));
; 61   : 			return(CFALSE);
; 62   : 		}
; 63   : 		if (!VirtualCopy((PVOID)m_pRegSet[index], (PVOID)(AlignAddr >> 8),
; 64   : 				dwSizeRegSet, PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE))

  000ac	e3a03c06	 mov         r3, #6, 24
  000b0	e3833004	 orr         r3, r3, #4
  000b4	e1a0200b	 mov         r2, r11
  000b8	e0091426	 and         r1, r9, r6, lsr #8
  000bc	eb000000	 bl          VirtualCopy
  000c0	e3500000	 cmp         r0, #0
  000c4	0a000011	 beq         |$L37183|
  000c8	e5973000	 ldr         r3, [r7]

; 68   : 		}
; 69   : 		m_pRegSet[index] = (DWORD*)((U32)m_pRegSet[index] + OffsetAddr + dwRegOffset);
; 70   : 
; 71   : 		RETAILMSG(0, (TEXT("MFP_AllocRegisterBase dwSizeRegSet : %d\t\n"),dwSizeRegSet));
; 72   : 		RETAILMSG(0, (TEXT("MFP_AllocRegisterBase dwRegOffset : %d\t\n"),dwRegOffset));
; 73   : 
; 74   : 
; 75   : 		pModule->SetVirtualAddressOfRegisterSet(
; 76   : 					index,
; 77   : 					(U32)m_pRegSet[index]);

  000cc	e59d2000	 ldr         r2, [sp]
  000d0	e1a01005	 mov         r1, r5
  000d4	e08a3003	 add         r3, r10, r3
  000d8	e0832002	 add         r2, r3, r2
  000dc	e4872004	 str         r2, [r7], #4
  000e0	e5943000	 ldr         r3, [r4]
  000e4	e1a00004	 mov         r0, r4
  000e8	e5933010	 ldr         r3, [r3, #0x10]
  000ec	e1a0e00f	 mov         lr, pc
  000f0	e12fff13	 bx          r3
  000f4	e2855001	 add         r5, r5, #1
  000f8	e1550008	 cmp         r5, r8
  000fc	3affffd4	 bcc         |$L36179|
  00100		 |$L36181|

; 78   : 	}
; 79   : 
; 80   : 	return(CTRUE);

  00100	e3a00001	 mov         r0, #1
  00104		 |$L36171|

; 81   : 
; 82   : }

  00104	e28dd004	 add         sp, sp, #4
  00108	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  0010c	e12fff1e	 bx          lr
  00110		 |$L37183|

; 65   : 		{
; 66   : 			DEBUGMSG(1, (TEXT("m_pRegSet[%d]: VirtualCopy failed!\r\n"),index));
; 67   : 			return(CFALSE);

  00110	e3a00000	 mov         r0, #0
  00114	eafffffa	 b           |$L36171|
  00118		 |$L37198|
  00118	00000000	 DCD         |?m_pRegSet@@3PAPAKA|
  0011c		 |$M37194|

			 ENDP  ; |?MFP_AllocRegisterBase@@YAHPAVMES_IModule@@K@Z|, MFP_AllocRegisterBase

	EXPORT	|?MFP_FreeRegisterBase@@YAHPAVMES_IModule@@@Z| ; MFP_FreeRegisterBase
	IMPORT	|VirtualFree|

  00000			 AREA	 |.text| { |?MFP_FreeRegisterBase@@YAHPAVMES_IModule@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?MFP_FreeRegisterBase@@YAHPAVMES_IModule@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?MFP_FreeRegisterBase@@YAHPAVMES_IModule@@@Z| } ; comdat associative
|$T37213| DCD	|$L37212|
	DCD	0x40002101
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?MFP_FreeRegisterBase@@YAHPAVMES_IModule@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?MFP_FreeRegisterBase@@YAHPAVMES_IModule@@@Z| PROC ; MFP_FreeRegisterBase

; 85   : {

  00000		 |$L37212|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004		 |$M37210|
  00004	e1a06000	 mov         r6, r0

; 86   : 	DWORD dwSizeRegSet;
; 87   : 
; 88   : 	DWORD dwNumRegSet = pModule->GetNumberOfRegisterSet();

  00008	e5963000	 ldr         r3, [r6]
  0000c	e5933008	 ldr         r3, [r3, #8]
  00010	e1a0e00f	 mov         lr, pc
  00014	e12fff13	 bx          r3
  00018	e1b07000	 movs        r7, r0

; 89   : 	for(DWORD index = 0 ; index < dwNumRegSet ; index++)

  0001c	e3a04000	 mov         r4, #0
  00020	0a000010	 beq         |$L36202|

; 86   : 	DWORD dwSizeRegSet;
; 87   : 
; 88   : 	DWORD dwNumRegSet = pModule->GetNumberOfRegisterSet();

  00024	e59f5054	 ldr         r5, [pc, #0x54]
  00028		 |$L36200|

; 90   : 	{
; 91   : 		dwSizeRegSet = pModule->GetSizeOfRegisterSet(index);

  00028	e5963000	 ldr         r3, [r6]
  0002c	e1a01004	 mov         r1, r4
  00030	e1a00006	 mov         r0, r6
  00034	e593300c	 ldr         r3, [r3, #0xC]
  00038	e1a0e00f	 mov         lr, pc
  0003c	e12fff13	 bx          r3
  00040	e1a01000	 mov         r1, r0

; 92   : 		if(!VirtualFree(m_pRegSet[index],dwSizeRegSet,MEM_RELEASE ))

  00044	e5950000	 ldr         r0, [r5]
  00048	e3a02902	 mov         r2, #2, 18
  0004c	eb000000	 bl          VirtualFree
  00050	e3500000	 cmp         r0, #0
  00054	0a000006	 beq         |$L37202|
  00058	e2844001	 add         r4, r4, #1
  0005c	e1540007	 cmp         r4, r7
  00060	e2855004	 add         r5, r5, #4
  00064	3affffef	 bcc         |$L36200|
  00068		 |$L36202|

; 96   : 		}
; 97   : 
; 98   : 	}
; 99   : 
; 100  : 	return(CTRUE);

  00068	e3a00001	 mov         r0, #1

; 101  : 
; 102  : }

  0006c	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  00070	e12fff1e	 bx          lr
  00074		 |$L37202|

; 93   : 		{
; 94   : 			DEBUGMSG(1, (TEXT("m_pRegSet[%d]: VirtualFree failed!\r\n"),index));
; 95   : 			return(CFALSE);

  00074	e3a00000	 mov         r0, #0

; 101  : 
; 102  : }

  00078	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  0007c	e12fff1e	 bx          lr
  00080		 |$L37215|
  00080	00000000	 DCD         |?m_pRegSet@@3PAPAKA|
  00084		 |$M37211|

			 ENDP  ; |?MFP_FreeRegisterBase@@YAHPAVMES_IModule@@@Z|, MFP_FreeRegisterBase

	EXPORT	|?I2C_Write@BASEI2S@@AAAHEE@Z|		; BASEI2S::I2C_Write
	IMPORT	|?Write@MutexI2C@@QAAHPAEH@Z|		; MutexI2C::Write

  00000			 AREA	 |.text| { |?I2C_Write@BASEI2S@@AAAHEE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?I2C_Write@BASEI2S@@AAAHEE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2C_Write@BASEI2S@@AAAHEE@Z| } ; comdat associative
|$T37226| DCD	|$L37225|
	DCD	0x40001002
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?I2C_Write@BASEI2S@@AAAHEE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?I2C_Write@BASEI2S@@AAAHEE@Z| PROC	; BASEI2S::I2C_Write

; 110  : {

  00000		 |$L37225|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004	e24dd004	 sub         sp, sp, #4
  00008		 |$M37223|
  00008	e1a0e002	 mov         lr, r2
  0000c	e1a03001	 mov         r3, r1

; 111  : 	//U8 buf[3]={ (SubAddr >> 8), (SubAddr & 0xFF), Data };
; 112  : 	U8 buf[2]={ ((U8)SubAddr), Data }; 
; 113  : 		
; 114  : 	if( ! m_pi2c->Write(&buf[0], 2) )

  00010	e5900010	 ldr         r0, [r0, #0x10]
  00014	e3a02002	 mov         r2, #2
  00018	e28d1000	 add         r1, sp, #0
  0001c	e5cd3000	 strb        r3, [sp]
  00020	e5cde001	 strb        lr, [sp, #1]
  00024	eb000000	 bl          |?Write@MutexI2C@@QAAHPAEH@Z|
  00028	e3500000	 cmp         r0, #0

; 115  : 		return CFALSE;

  0002c	03a00000	 moveq       r0, #0

; 116  : 	else
; 117  : 		return CTRUE;	

  00030	13a00001	 movne       r0, #1

; 118  : }

  00034	e28dd004	 add         sp, sp, #4
  00038	e49de004	 ldr         lr, [sp], #4
  0003c	e12fff1e	 bx          lr
  00040		 |$M37224|

			 ENDP  ; |?I2C_Write@BASEI2S@@AAAHEE@Z|, BASEI2S::I2C_Write

	EXPORT	|?I2C_Read@BASEI2S@@AAAHEPAE@Z|		; BASEI2S::I2C_Read
	IMPORT	|?Read@MutexI2C@@QAAHPAEH@Z|		; MutexI2C::Read

  00000			 AREA	 |.text| { |?I2C_Read@BASEI2S@@AAAHEPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?I2C_Read@BASEI2S@@AAAHEPAE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?I2C_Read@BASEI2S@@AAAHEPAE@Z| } ; comdat associative
|$T37239| DCD	|$L37238|
	DCD	0x40001802
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?I2C_Read@BASEI2S@@AAAHEPAE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

⌨️ 快捷键说明

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