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

📄 impl.cod

📁 PXA270 平台 Windows Mobile 5。0 SD卡驱动
💻 COD
📖 第 1 页 / 共 2 页
字号:
; 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 + -