📄 basei2s.cod
字号:
; 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 + -