📄 impl.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL C:\WM520\PLATFORM\AL270\Platform\MAINSTONEII\SRC\DRIVERS\SDHC\.\impl.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |g_pGPIORegs| [ DATA ]
EXPORT |dwSysintrCD| [ DATA ]
00000 AREA |.bss|, NOINIT
|g_pGPIORegs| % 0x4
00000 AREA |.data|, DATA
COMMON |hCardInsertInterruptEvent|, 0x4
COMMON |hCardInsertInterruptThread|, 0x4
COMMON |dwSDCDIrq|, 0x4
COMMON |dwCardDetectIstThreadPriority|, 0x4
|dwSysintrCD| DCD 0x20
EXPORT |SetEvent|
IMPORT |EventModify|
; File c:\wm520\public\wpc\cesysgen\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
|$T37762| DCD |$L37761|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |SetEvent| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |SetEvent| PROC
; 184 : _inline BOOL SetEvent(HANDLE h) {
00000 |$L37761|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M37759|
; 185 : return EventModify(h,EVENT_SET);
00004 e3a01003 mov r1, #3
00008 eb000000 bl EventModify
; 186 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$M37760|
ENDP ; |SetEvent|
EXPORT |GetCurrentThread|
00000 AREA |.text| { |GetCurrentThread| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$GetCurrentThread|, PDATA, SELECTION=5, ASSOC=|.text| { |GetCurrentThread| } ; comdat associative
|$T37771| DCD |$L37770|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetCurrentThread| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |GetCurrentThread| PROC
; 300 : _inline HANDLE GetCurrentThread(void) {
00000 |$L37770|
00000 |$M37768|
; 301 : return ((HANDLE)(SH_CURTHREAD+SYS_HANDLE_BASE));
00000 e3a00041 mov r0, #0x41
; 302 : }
00004 e12fff1e bx lr
00008 |$M37769|
ENDP ; |GetCurrentThread|
EXPORT |InitializeHardware|
EXPORT |??_C@_1CE@OAFLJAPN@?$AA?$CL?$AA?$CL?$AA?5?$AAS?$AAD?$AAH?$AAC?$AA?5?$AAI?$AAn?$AAi?$AAt?$AA?4?$AA?4?$AA?4?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
IMPORT |MmMapIoSpace|
IMPORT |NKDbgPrintfW|
; File c:\wm520\platform\al270\platform\mainstoneii\src\drivers\sdhc\impl.c
00000 AREA |.text| { |InitializeHardware| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$InitializeHardware|, PDATA, SELECTION=5, ASSOC=|.text| { |InitializeHardware| } ; comdat associative
|$T37780| DCD |$L37779|
DCD 0x40002302
00000 AREA |.rdata| { |??_C@_1CE@OAFLJAPN@?$AA?$CL?$AA?$CL?$AA?5?$AAS?$AAD?$AAH?$AAC?$AA?5?$AAI?$AAn?$AAi?$AAt?$AA?4?$AA?4?$AA?4?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CE@OAFLJAPN@?$AA?$CL?$AA?$CL?$AA?5?$AAS?$AAD?$AAH?$AAC?$AA?5?$AAI?$AAn?$AAi?$AAt?$AA?4?$AA?4?$AA?4?$AA?$AN?$AA?6?$AA?$AA@| DCB "+"
DCB 0x0, "+", 0x0, " ", 0x0, "S", 0x0, "D", 0x0, "H", 0x0, "C"
DCB 0x0, " ", 0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "."
DCB 0x0, ".", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |InitializeHardware| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |InitializeHardware| PROC
; 51 : {
00000 |$L37779|
00000 e52de004 str lr, [sp, #-4]!
00004 e24dd008 sub sp, sp, #8
00008 |$M37777|
; 52 : PHYSICAL_ADDRESS Bulverde_GPIO_Base = {BULVERDE_BASE_REG_PA_GPIO};
00008 e3a03101 mov r3, #1, 2
0000c e383360e orr r3, r3, #0xE, 12
; 53 :
; 54 : NKDbgPrintfW(TEXT("++ SDHC Init...\r\n"));
00010 e59f0070 ldr r0, [pc, #0x70]
00014 e58d3000 str r3, [sp]
00018 e3a03000 mov r3, #0
0001c e58d3004 str r3, [sp, #4]
00020 eb000000 bl NKDbgPrintfW
; 55 : g_pGPIORegs = (BULVERDE_GPIO_REG*)MmMapIoSpace( Bulverde_GPIO_Base, sizeof(BULVERDE_GPIO_REG), FALSE );
00024 e59d0000 ldr r0, [sp]
00028 e59d1004 ldr r1, [sp, #4]
0002c e3a03000 mov r3, #0
00030 e3a02f53 mov r2, #0x53, 30
00034 eb000000 bl MmMapIoSpace
00038 e59f1044 ldr r1, [pc, #0x44]
0003c e3500000 cmp r0, #0
00040 e5810000 str r0, [r1]
; 56 : if ( !g_pGPIORegs )
; 57 : {
; 58 : return FALSE;
00044 03a00000 moveq r0, #0
00048 0a00000a beq |$L37633|
; 59 : }
; 60 : MMC_PWRON_CLEAR;
0004c e3a03802 mov r3, #2, 16
00050 e5803024 str r3, [r0, #0x24]
; 61 : //MMC_PWRON_SET;
; 62 : MMC_PWRON_FUNCTION_0_SET;
00054 e5912000 ldr r2, [r1]
; 63 : MMC_PWRON_DIRECTION_OUT_SET;
; 64 :
; 65 : return TRUE;
00058 e3a00001 mov r0, #1
0005c e5923058 ldr r3, [r2, #0x58]
00060 e3c3300c bic r3, r3, #0xC
00064 e5823058 str r3, [r2, #0x58]
00068 e5912000 ldr r2, [r1]
0006c e592300c ldr r3, [r2, #0xC]
00070 e3833802 orr r3, r3, #2, 16
00074 e582300c str r3, [r2, #0xC]
00078 |$L37633|
; 66 :
; 67 : }
00078 e28dd008 add sp, sp, #8
0007c e49de004 ldr lr, [sp], #4
00080 e12fff1e bx lr
00084 |$L37782|
00084 00000000 DCD |g_pGPIORegs|
00088 00000000 DCD |??_C@_1CE@OAFLJAPN@?$AA?$CL?$AA?$CL?$AA?5?$AAS?$AAD?$AAH?$AAC?$AA?5?$AAI?$AAn?$AAi?$AAt?$AA?4?$AA?4?$AA?4?$AA?$AN?$AA?6?$AA?$AA@|
0008c |$M37778|
ENDP ; |InitializeHardware|
EXPORT |UnInitializeHardware|
IMPORT |MmUnmapIoSpace|
00000 AREA |.text| { |UnInitializeHardware| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$UnInitializeHardware|, PDATA, SELECTION=5, ASSOC=|.text| { |UnInitializeHardware| } ; comdat associative
|$T37788| DCD |$L37787|
DCD 0x40000c01
; Function compile flags: /Ogsy
00000 AREA |.text| { |UnInitializeHardware| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |UnInitializeHardware| PROC
; 70 : {
00000 |$L37787|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M37785|
; 71 : if ( g_pGPIORegs ) {
00004 e59f4020 ldr r4, [pc, #0x20]
00008 e5940000 ldr r0, [r4]
0000c e3500000 cmp r0, #0
00010 0a000003 beq |$L37641|
; 72 : MmUnmapIoSpace((PVOID)g_pGPIORegs, sizeof(BULVERDE_GPIO_REG));
00014 e3a01f53 mov r1, #0x53, 30
00018 eb000000 bl MmUnmapIoSpace
; 73 : g_pGPIORegs = NULL;
0001c e3a03000 mov r3, #0
00020 e5843000 str r3, [r4]
00024 |$L37641|
; 74 : }
; 75 : }
00024 e8bd4010 ldmia sp!, {r4, lr}
00028 e12fff1e bx lr
0002c |$L37790|
0002c 00000000 DCD |g_pGPIORegs|
00030 |$M37786|
ENDP ; |UnInitializeHardware|
EXPORT |IsCardWriteProtected|
00000 AREA |.text| { |IsCardWriteProtected| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$IsCardWriteProtected|, PDATA, SELECTION=5, ASSOC=|.text| { |IsCardWriteProtected| } ; comdat associative
|$T37798| DCD |$L37797|
DCD 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |IsCardWriteProtected| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |IsCardWriteProtected| PROC
; 78 : {
00000 |$L37797|
00000 |$M37795|
; 79 : return FALSE;
00000 e3a00000 mov r0, #0
; 80 : }
00004 e12fff1e bx lr
00008 |$M37796|
ENDP ; |IsCardWriteProtected|
EXPORT |IsCardPresent|
00000 AREA |.text| { |IsCardPresent| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$IsCardPresent|, PDATA, SELECTION=5, ASSOC=|.text| { |IsCardPresent| } ; comdat associative
|$T37807| DCD |$L37806|
DCD 0x40000800
; Function compile flags: /Ogsy
00000 AREA |.text| { |IsCardPresent| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |IsCardPresent| PROC
; 83 : {
00000 |$L37806|
00000 |$M37804|
; 84 : if((g_pGPIORegs->GPLR2&(1<<16))==0)
00000 e59f3014 ldr r3, [pc, #0x14]
00004 e5933000 ldr r3, [r3]
00008 e5933008 ldr r3, [r3, #8]
0000c e3130801 tst r3, #1, 16
; 85 : return TRUE;
00010 03a00001 moveq r0, #1
; 86 : else
; 87 : return FALSE;
00014 13a00000 movne r0, #0
; 88 : }
00018 e12fff1e bx lr
0001c |$L37809|
0001c 00000000 DCD |g_pGPIORegs|
00020 |$M37805|
ENDP ; |IsCardPresent|
EXPORT |MMCPowerControl|
IMPORT |Sleep|
00000 AREA |.text| { |MMCPowerControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$MMCPowerControl|, PDATA, SELECTION=5, ASSOC=|.text| { |MMCPowerControl| } ; comdat associative
|$T37816| DCD |$L37815|
DCD 0x40000c01
; Function compile flags: /Ogsy
00000 AREA |.text| { |MMCPowerControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |MMCPowerControl| PROC
; 91 : {
00000 |$L37815|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M37813|
00004 e3500000 cmp r0, #0
; 92 : if(fPowerOn){
; 93 : MMC_PWRON_SET;
00008 e59f301c ldr r3, [pc, #0x1C]
0000c e3a02802 mov r2, #2, 16
; 94 : }else{
; 95 : MMC_PWRON_CLEAR;
; 96 : }
; 97 : Sleep(300);
00010 e3a00f4b mov r0, #0x4B, 30
00014 e5933000 ldr r3, [r3]
00018 15832018 strne r2, [r3, #0x18]
0001c 05832024 streq r2, [r3, #0x24]
00020 eb000000 bl Sleep
; 98 : }
00024 e49de004 ldr lr, [sp], #4
00028 e12fff1e bx lr
0002c |$L37818|
0002c 00000000 DCD |g_pGPIORegs|
00030 |$M37814|
ENDP ; |MMCPowerControl|
EXPORT |SDCardDetectIstThread|
IMPORT |InterruptDone|
IMPORT |WaitForSingleObject|
IMPORT |ProcessCardInsertion|
IMPORT |ProcessCardRemoval|
IMPORT |DriverShutdown|
IMPORT |CeSetThreadPriority|
00000 AREA |.text| { |SDCardDetectIstThread| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SDCardDetectIstThread|, PDATA, SELECTION=5, ASSOC=|.text| { |SDCardDetectIstThread| } ; comdat associative
|$T37846| DCD |$L37845|
DCD 0x40002d01
; Function compile flags: /Ogsy
00000 AREA |.text| { |SDCardDetectIstThread| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SDCardDetectIstThread| PROC
; 107 : {
00000 |$L37845|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M37843|
00004 e1a04000 mov r4, r0
; 108 : DWORD waitStatus;
; 109 : DWORD dwTimeout = INFINITE;
; 110 :
; 111 : dwTimeout = INFINITE;
; 112 : SetEvent( hCardInsertInterruptEvent ); // set it to check for cards already inserted at boot time
00008 e59f70a0 ldr r7, [pc, #0xA0]
0000c e3a01003 mov r1, #3
00010 e5970000 ldr r0, [r7]
00014 eb000000 bl EventModify
; 113 :
; 114 : if (!CeSetThreadPriority(GetCurrentThread(),
; 115 : dwCardDetectIstThreadPriority)) {
00018 e59f308c ldr r3, [pc, #0x8C]
0001c e3a00041 mov r0, #0x41
00020 e5931000 ldr r1, [r3]
00024 eb000000 bl CeSetThreadPriority
; 116 : //DbgPrintZo(SDCARD_ZONE_WARN,
; 117 : // (TEXT("SDCardDetectIstThread: warning, failed to set CEThreadPriority \n")));
; 118 : }
; 119 :
; 120 : while(TRUE)
; 121 : {
; 122 : waitStatus = WaitForSingleObject( hCardInsertInterruptEvent, dwTimeout );
00028 e5970000 ldr r0, [r7]
0002c e3e01000 mvn r1, #0
00030 eb000000 bl WaitForSingleObject
00034 e3500000 cmp r0, #0
; 123 :
; 124 : if (WAIT_OBJECT_0 != waitStatus) {
00038 1a000016 bne |$L37837|
0003c e59f5064 ldr r5, [pc, #0x64]
00040 e59f605c ldr r6, [pc, #0x5C]
00044 |$L37664|
; 125 : return 0;
; 126 : }
; 127 :
; 128 : if( DriverShutdown(pContext) ) {
00044 e1a00004 mov r0, r4
00048 eb000000 bl DriverShutdown
0004c e3500000 cmp r0, #0
00050 1a000010 bne |$L37837|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -