📄 mmcdrv.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615
TTL c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\.\mmcdrv.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
00000 AREA |.data|, DATA
COMMON |multipleRdWr|, 0x2
EXPORT |mmcBusStart|
EXPORT |??_C@_1EA@PJAO@?$AAf?$AAa?$AAi?$AAl?$AA?5?$AAt?$AAo?$AA?5?$AAs?$AAe?$AAt?$AA?5?$AAs?$AAe?$AAt?$AAM?$AAM?$AAC?$AAC?$AAl@| [ DATA ] ; `string'
IMPORT |NKDbgPrintfW|
IMPORT |startMMC80Clocks|
IMPORT |setMMCClockRate|
; File c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\mmcdrv.c
00000 AREA |.text| { |mmcBusStart| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$mmcBusStart|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcBusStart| } ; comdat associative
|$T36752| DCD |mmcBusStart|
DCD 0x40001101
00000 AREA |.rdata| { |??_C@_1EA@PJAO@?$AAf?$AAa?$AAi?$AAl?$AA?5?$AAt?$AAo?$AA?5?$AAs?$AAe?$AAt?$AA?5?$AAs?$AAe?$AAt?$AAM?$AAM?$AAC?$AAC?$AAl@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@PJAO@?$AAf?$AAa?$AAi?$AAl?$AA?5?$AAt?$AAo?$AA?5?$AAs?$AAe?$AAt?$AA?5?$AAs?$AAe?$AAt?$AAM?$AAM?$AAC?$AAC?$AAl@| DCB "f"
DCB 0x0, "a", 0x0, "i", 0x0, "l", 0x0, " ", 0x0, "t", 0x0, "o"
DCB 0x0, " ", 0x0, "s", 0x0, "e", 0x0, "t", 0x0, " ", 0x0, "s"
DCB 0x0, "e", 0x0, "t", 0x0, "M", 0x0, "M", 0x0, "C", 0x0, "C"
DCB 0x0, "l", 0x0, "o", 0x0, "c", 0x0, "k", 0x0, "R", 0x0, "a"
DCB 0x0, "t", 0x0, "e", 0x0, "(", 0x0, ")", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |mmcBusStart| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |mmcBusStart| PROC
; 56 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M36750|
00004 e1a04000 mov r4, r0
; 57 :
; 58 :
; 59 :
; 60 :
; 61 :
; 62 : if ( !setMMCClockRate(5) )
00008 e3a00005 mov r0, #5
0000c eb000000 bl setMMCClockRate
00010 e3500000 cmp r0, #0
00014 1a000004 bne |$L36530|
; 63 :
; 64 : {
; 65 : RETAILMSG(1, (TEXT("fail to set setMMCClockRate()\r\n")));
00018 e59f0020 ldr r0, [pc, #0x20]
0001c eb000000 bl NKDbgPrintfW
; 66 : return NO;
00020 e3a00000 mov r0, #0
; 73 : }
00024 e8bd4010 ldmia sp!, {r4, lr}
00028 e12fff1e bx lr
0002c |$L36530|
; 67 : }
; 68 :
; 69 :
; 70 : startMMC80Clocks(ctrlNo);
0002c e1a00004 mov r0, r4
00030 eb000000 bl startMMC80Clocks
; 71 :
; 72 : return YES;
00034 e3a00001 mov r0, #1
; 73 : }
00038 e8bd4010 ldmia sp!, {r4, lr}
0003c e12fff1e bx lr
00040 |$L36754|
00040 00000000 DCD |??_C@_1EA@PJAO@?$AAf?$AAa?$AAi?$AAl?$AA?5?$AAt?$AAo?$AA?5?$AAs?$AAe?$AAt?$AA?5?$AAs?$AAe?$AAt?$AAM?$AAM?$AAC?$AAC?$AAl@|
00044 |$M36751|
ENDP ; |mmcBusStart|
EXPORT |mmc_init_setup|
EXPORT |??_C@_1CI@DBNE@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1EC@JFDD@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt@| [ DATA ] ; `string'
EXPORT |??_C@_1DC@MMOC@?$AAm?$AAm?$AAc?$AAB?$AAu?$AAs?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf@| [ DATA ] ; `string'
EXPORT |??_C@_1CO@PNCP@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAn?$AAo?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@| [ DATA ] ; `string'
EXPORT |??_C@_1FK@CDMJ@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAd@| [ DATA ] ; `string'
IMPORT |controller_s|
IMPORT |mmcReset|
00000 AREA |.text| { |mmc_init_setup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$mmc_init_setup|, PDATA, SELECTION=5, ASSOC=|.text| { |mmc_init_setup| } ; comdat associative
|$T36765| DCD |mmc_init_setup|
DCD 0x40003c01
00000 AREA |.rdata| { |??_C@_1CI@DBNE@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CI@DBNE@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AA?$AN?$AA?6?$AA?$AA@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "_", 0x0, "i", 0x0, "n", 0x0, "i"
DCB 0x0, "t", 0x0, "_", 0x0, "s", 0x0, "e", 0x0, "t", 0x0, "u"
DCB 0x0, "p", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EC@JFDD@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EC@JFDD@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "_", 0x0, "i", 0x0, "n", 0x0, "i"
DCB 0x0, "t", 0x0, "_", 0x0, "s", 0x0, "e", 0x0, "t", 0x0, "u"
DCB 0x0, "p", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "e", 0x0, "n"
DCB 0x0, "t", 0x0, "e", 0x0, "r", 0x0, " ", 0x0, "l", 0x0, "o"
DCB 0x0, "o", 0x0, "p", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DC@MMOC@?$AAm?$AAm?$AAc?$AAB?$AAu?$AAs?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DC@MMOC@?$AAm?$AAm?$AAc?$AAB?$AAu?$AAs?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "B", 0x0, "u", 0x0, "s", 0x0, "S"
DCB 0x0, "t", 0x0, "a", 0x0, "r", 0x0, "t", 0x0, " ", 0x0, "s"
DCB 0x0, "u", 0x0, "c", 0x0, "c", 0x0, "e", 0x0, "s", 0x0, "s"
DCB 0x0, "f", 0x0, "u", 0x0, "l", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CO@PNCP@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAn?$AAo?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CO@PNCP@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAn?$AAo?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "R", 0x0, "e", 0x0, "s", 0x0, "e"
DCB 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "n", 0x0, "o"
DCB 0x0, " ", 0x0, "e", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r"
DCB 0x0, " ", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FK@CDMJ@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAd@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FK@CDMJ@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAd@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "_", 0x0, "i", 0x0, "n", 0x0, "i"
DCB 0x0, "t", 0x0, "_", 0x0, "s", 0x0, "e", 0x0, "t", 0x0, "u"
DCB 0x0, "p", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "e", 0x0, "n"
DCB 0x0, "d", 0x0, ",", 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "t"
DCB 0x0, "u", 0x0, "r", 0x0, "n", 0x0, " ", 0x0, "v", 0x0, "a"
DCB 0x0, "l", 0x0, "u", 0x0, "e", 0x0, " ", 0x0, "i", 0x0, "s"
DCB 0x0, " ", 0x0, "Y", 0x0, "E", 0x0, "S", 0x0, " ", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |mmc_init_setup| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |mmc_init_setup| PROC
; 97 : {
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 |$M36763|
; 98 : PDEVICE_CONTROLLER pc;
; 99 : INT16 ctrlNo;
; 100 : INT16 nFailures;
; 101 :
; 102 : nFailures = 0;
; 103 : RETAILMSG(1, (TEXT("mmc_init_setup() \r\n")));
00004 e59f00e0 ldr r0, [pc, #0xE0]
00008 e3a09000 mov r9, #0
0000c e1a08009 mov r8, r9
00010 eb000000 bl NKDbgPrintfW
; 104 :
; 105 :
; 106 :
; 107 : for (ctrlNo = 0; ctrlNo < N_INTERFACES; ctrlNo++)
00014 e59f40cc ldr r4, [pc, #0xCC]
00018 e1a06009 mov r6, r9
0001c e1a07009 mov r7, r9
00020 |$L36538|
; 108 : {
; 109 : RETAILMSG(1, (TEXT("mmc_init_setup() enter loop %d\r\n"), ctrlNo));
00020 e59f00bc ldr r0, [pc, #0xBC]
00024 e1a01007 mov r1, r7
00028 eb000000 bl NKDbgPrintfW
; 110 : pc = &controller_s[ctrlNo];
0002c e0673207 rsb r3, r7, r7, lsl #4
00030 e0845103 add r5, r4, r3, lsl #2
; 111 : pc->controller_number = ctrlNo;
; 112 :
; 113 :
; 114 : if ( mmcBusStart(ctrlNo) )
00034 e1a00006 mov r0, r6
00038 e1c561b4 strh r6, [r5, #0x14]
0003c eb000000 bl mmcBusStart
00040 e3500000 cmp r0, #0
00044 0a000010 beq |$L36546|
; 115 : {
; 116 : RETAILMSG(1, (TEXT("mmcBusStart successful\r\n")));
00048 e59f0090 ldr r0, [pc, #0x90]
0004c eb000000 bl NKDbgPrintfW
; 117 :
; 118 :
; 119 :
; 120 :
; 121 :
; 122 :
; 123 : if ( MMC_NO_ERROR == mmcReset ( pc, 0x00020000 ) )
00050 e3a01802 mov r1, #2, 16
00054 e1a00005 mov r0, r5
00058 eb000000 bl mmcReset
0005c e3500000 cmp r0, #0
00060 1a000004 bne |$L36544|
; 124 : {
; 125 :
; 126 : RETAILMSG(1, (TEXT("mmcReset() no error \r\n")));
00064 e59f0070 ldr r0, [pc, #0x70]
00068 eb000000 bl NKDbgPrintfW
; 127 : setMMCClockRate(5);
0006c e3a00005 mov r0, #5
00070 eb000000 bl setMMCClockRate
; 128 :
; 129 : }
; 130 : else
00074 ea000004 b |$L36546|
00078 |$L36544|
; 131 : {
; 132 : nFailures++;
00078 e1a00808 mov r0, r8, lsl #16
0007c e1a01840 mov r1, r0, asr #16
00080 e2812001 add r2, r1, #1
00084 e1a00802 mov r0, r2, lsl #16
00088 e1a08840 mov r8, r0, asr #16
0008c |$L36546|
; 133 : }
; 134 : }
; 135 : pc->controller_number = -1;
0008c e3e00000 mvn r0, #0
00090 e1c501b4 strh r0, [r5, #0x14]
00094 e2870001 add r0, r7, #1
00098 e1a01800 mov r1, r0, lsl #16
0009c e1a06841 mov r6, r1, asr #16
000a0 e1a00806 mov r0, r6, lsl #16
000a4 e1a07840 mov r7, r0, asr #16
000a8 e3570001 cmp r7, #1
000ac baffffdb blt |$L36538|
; 136 : }
; 137 :
; 138 : if ( nFailures >= N_INTERFACES )
000b0 e1a00808 mov r0, r8, lsl #16
000b4 e1a01840 mov r1, r0, asr #16
000b8 e3510001 cmp r1, #1
; 139 : return NO;
000bc aa000002 bge |$L36533|
; 140 : RETAILMSG(1, (TEXT("mmc_init_setup() end, return value is YES \r\n")));
000c0 e59f0010 ldr r0, [pc, #0x10]
000c4 eb000000 bl NKDbgPrintfW
; 141 : return (YES);
000c8 e3a09001 mov r9, #1
000cc |$L36533|
; 139 : return NO;
000cc e1a00009 mov r0, r9
; 142 : }
000d0 e8bd43f0 ldmia sp!, {r4 - r9, lr}
000d4 e12fff1e bx lr
000d8 |$L36767|
000d8 00000000 DCD |??_C@_1FK@CDMJ@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAd@|
000dc 00000000 DCD |??_C@_1CO@PNCP@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAn?$AAo?$AA?5?$AAe?$AAr?$AAr?$AAo?$AAr?$AA?5@|
000e0 00000000 DCD |??_C@_1DC@MMOC@?$AAm?$AAm?$AAc?$AAB?$AAu?$AAs?$AAS?$AAt?$AAa?$AAr?$AAt?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf@|
000e4 00000000 DCD |??_C@_1EC@JFDD@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt@|
000e8 00000000 DCD |controller_s|
000ec 00000000 DCD |??_C@_1CI@DBNE@?$AAm?$AAm?$AAc?$AA_?$AAi?$AAn?$AAi?$AAt?$AA_?$AAs?$AAe?$AAt?$AAu?$AAp?$AA?$CI?$AA?$CJ?$AA?5?$AA?$AN?$AA?6?$AA?$AA@|
000f0 |$M36764|
ENDP ; |mmc_init_setup|
EXPORT |mmcConfigDevice|
IMPORT |mmcIdentify|
00000 AREA |.text| { |mmcConfigDevice| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$mmcConfigDevice|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcConfigDevice| } ; comdat associative
|$T36775| DCD |mmcConfigDevice|
DCD 0x40000d01
; Function compile flags: /Ogsy
00000 AREA |.text| { |mmcConfigDevice| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |mmcConfigDevice| PROC
; 162 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M36773|
; 163 : PDEVICE_CONTROLLER pc;
; 164 : INT16 phys_drive;
; 165 :
; 166 :
; 167 :
; 168 : #if (N_INTERFACES > 1)
; 169 : pc = drno_to_controller(driveno);
; 170 : phys_drive = drno_to_phys(driveno);
; 171 : #else
; 172 : pc = &controller_s[0];
00004 e59f4024 ldr r4, [pc, #0x24]
; 173 : phys_drive = driveno;
; 174 : #endif
; 175 :
; 176 :
; 177 : return (mmcIdentify( pc, pc->drive[phys_drive].drv_type, phys_drive ));
00008 e1a02000 mov r2, r0
0000c e1a00800 mov r0, r0, lsl #16
00010 e5941000 ldr r1, [r4]
00014 e1a03840 mov r3, r0, asr #16
00018 e0810283 add r0, r1, r3, lsl #5
0001c e5901010 ldr r1, [r0, #0x10]
00020 e1a00004 mov r0, r4
00024 eb000000 bl mmcIdentify
; 178 : }
00028 e8bd4010 ldmia sp!, {r4, lr}
0002c e12fff1e bx lr
00030 |$L36777|
00030 00000000 DCD |controller_s|
00034 |$M36774|
ENDP ; |mmcConfigDevice|
EXPORT |receive_data|
IMPORT |MMCReceive|
00000 AREA |.text| { |receive_data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$receive_data|, PDATA, SELECTION=5, ASSOC=|.text| { |receive_data| } ; comdat associative
|$T36787| DCD |receive_data|
DCD 0x40000501
; Function compile flags: /Ogsy
00000 AREA |.text| { |receive_data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |receive_data| PROC
; 202 : {
00000 e52de004 str lr, [sp, #-4]!
00004 |$M36785|
; 203 :
; 204 : return (MMCReceive((UCHAR *)pc->user_address, dLength, noBlocks, xferMode));
00004 e5900004 ldr r0, [r0, #4]
00008 eb000000 bl MMCReceive
; 205 : }
0000c e8bd4000 ldmia sp!, {lr}
00010 e12fff1e bx lr
00014 |$M36786|
ENDP ; |receive_data|
EXPORT |send_data|
IMPORT |MMCTransmit|
00000 AREA |.text| { |send_data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$send_data|, PDATA, SELECTION=5, ASSOC=|.text| { |send_data| } ; comdat associative
|$T36798| DCD |send_data|
DCD 0x40000501
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -