📄 mmcdrv.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615
TTL d:\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 d:\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 0x40000f01
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 1a000003 bne |$L36530|
; 63 : {
; 64 : RETAILMSG(1, (TEXT("fail to set setMMCClockRate()\r\n")));
00018 e59f0018 ldr r0, [pc, #0x18]
0001c eb000000 bl NKDbgPrintfW
; 65 : return NO;
00020 e3a00000 mov r0, #0
; 72 : }
00024 e8bd8010 ldmia sp!, {r4, pc}
00028 |$L36530|
; 66 : }
; 67 :
; 68 :
; 69 : startMMC80Clocks(ctrlNo);
00028 e1a00004 mov r0, r4
0002c eb000000 bl startMMC80Clocks
; 70 :
; 71 : return YES;
00030 e3a00001 mov r0, #1
; 72 : }
00034 e8bd8010 ldmia sp!, {r4, pc}
00038 |$L36754|
00038 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@|
0003c |$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 0x40003b01
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
; 96 : {
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 |$M36763|
; 97 : PDEVICE_CONTROLLER pc;
; 98 : INT16 ctrlNo;
; 99 : INT16 nFailures;
; 100 :
; 101 : nFailures = 0;
; 102 : RETAILMSG(1, (TEXT("mmc_init_setup() \r\n")));
00004 e59f00dc ldr r0, [pc, #0xDC]
00008 e3a09000 mov r9, #0
0000c e1a08009 mov r8, r9
00010 eb000000 bl NKDbgPrintfW
; 103 :
; 104 :
; 105 :
; 106 : for (ctrlNo = 0; ctrlNo < N_INTERFACES; ctrlNo++)
00014 e59f40c8 ldr r4, [pc, #0xC8]
00018 e1a06009 mov r6, r9
0001c e1a07009 mov r7, r9
00020 |$L36538|
; 107 : {
; 108 : RETAILMSG(1, (TEXT("mmc_init_setup() enter loop %d\r\n"), ctrlNo));
00020 e59f00b8 ldr r0, [pc, #0xB8]
00024 e1a01007 mov r1, r7
00028 eb000000 bl NKDbgPrintfW
; 109 : pc = &controller_s[ctrlNo];
0002c e0673207 rsb r3, r7, r7, lsl #4
00030 e0845103 add r5, r4, r3, lsl #2
; 110 : pc->controller_number = ctrlNo;
; 111 :
; 112 :
; 113 : 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|
; 114 : {
; 115 : RETAILMSG(1, (TEXT("mmcBusStart successful\r\n")));
00048 e59f008c ldr r0, [pc, #0x8C]
0004c eb000000 bl NKDbgPrintfW
; 116 :
; 117 :
; 118 :
; 119 :
; 120 :
; 121 :
; 122 : 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|
; 123 : {
; 124 :
; 125 : RETAILMSG(1, (TEXT("mmcReset() no error \r\n")));
00064 e59f006c ldr r0, [pc, #0x6C]
00068 eb000000 bl NKDbgPrintfW
; 126 : setMMCClockRate(5);
0006c e3a00005 mov r0, #5
00070 eb000000 bl setMMCClockRate
; 127 : }
; 128 : else
00074 ea000004 b |$L36546|
00078 |$L36544|
; 129 : {
; 130 : 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|
; 131 : }
; 132 : }
; 133 : 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|
; 134 : }
; 135 :
; 136 : if ( nFailures >= N_INTERFACES )
000b0 e1a00808 mov r0, r8, lsl #16
000b4 e1a01840 mov r1, r0, asr #16
000b8 e3510001 cmp r1, #1
; 137 : return NO;
000bc aa000002 bge |$L36533|
; 138 : RETAILMSG(1, (TEXT("mmc_init_setup() end, return value is YES \r\n")));
000c0 e59f000c ldr r0, [pc, #0xC]
000c4 eb000000 bl NKDbgPrintfW
; 139 : return (YES);
000c8 e3a09001 mov r9, #1
000cc |$L36533|
; 137 : return NO;
000cc e1a00009 mov r0, r9
; 140 : }
000d0 e8bd83f0 ldmia sp!, {r4 - r9, pc}
000d4 |$L36767|
000d4 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@|
000d8 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@|
000dc 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@|
000e0 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@|
000e4 00000000 DCD |controller_s|
000e8 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@|
000ec |$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 0x40000c01
; Function compile flags: /Ogsy
00000 AREA |.text| { |mmcConfigDevice| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |mmcConfigDevice| PROC
; 160 : {
00000 e92d0010 stmdb sp!, {r4}
00004 |$M36773|
; 161 : PDEVICE_CONTROLLER pc;
; 162 : INT16 phys_drive;
; 163 :
; 164 :
; 165 :
; 166 : #if (N_INTERFACES > 1)
; 167 : pc = drno_to_controller(driveno);
; 168 : phys_drive = drno_to_phys(driveno);
; 169 : #else
; 170 : pc = &controller_s[0];
00004 e59f4020 ldr r4, [pc, #0x20]
; 171 : phys_drive = driveno;
; 172 : #endif
; 173 :
; 174 :
; 175 : 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 e8bd0010 ldmia sp!, {r4}
00028 ea000000 b mmcIdentify
0002c |$L36777|
0002c 00000000 DCD |controller_s|
00030 |$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 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |receive_data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |receive_data| PROC
; 200 : {
00000 |$M36785|
; 201 :
; 202 : return (MMCReceive((UCHAR *)pc->user_address, dLength, noBlocks, xferMode));
00000 e5900004 ldr r0, [r0, #4]
00004 ea000000 b MMCReceive
00008 |$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 0x40000200
; Function compile flags: /Ogsy
00000 AREA |.text| { |send_data| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -