📄 sdmmc.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615
TTL c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\.\sdmmc.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
00000 AREA |.data|, DATA
COMMON |multipleRdWr|, 0x2
EXPORT |mmcSDApplCmd|
EXPORT |mmcSetXferState|
IMPORT |platform_delayms|
IMPORT |mmcCommandAndResponse|
IMPORT |receive_data|
; File c:\wince420\platform\sdklh7a404\drivers\sdmmc\driver\sdmmc.c
00000 AREA |.text| { |mmcSDApplCmd| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$mmcSDApplCmd|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcSDApplCmd| } ; comdat associative
|$T37232| DCD |mmcSDApplCmd|
DCD 0x40004702
; Function compile flags: /Ogsy
00000 AREA |.text| { |mmcSDApplCmd| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |mmcSDApplCmd| PROC
; 68 : {
00000 e92d4ff0 stmdb sp!, {r4 - r11, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M37230|
00008 e1a0b000 mov r11, r0
0000c e1a08001 mov r8, r1
00010 e1a07002 mov r7, r2
; 69 : MMC_CC respErr;
; 70 : UINT16 tLength;
; 71 :
; 72 : tLength = 0;
; 73 : if (Cmd & SECURITY_CMD_BIT)
00014 e1dd53b0 ldrh r5, [sp, #0x30]
00018 e3a0a000 mov r10, #0
; 74 : tLength = noBlocks;
; 75 :
; 76 : #if (USE_SPI || USE_SPI_EMULATION)
; 77 :
; 78 :
; 79 :
; 80 : selectChip( RCA );
; 81 :
; 82 :
; 83 : respErr = mmcCommandAndResponse ( pc,
; 84 : (((ULONG)RCA) << 16),
; 85 : APPL_CMD,
; 86 : 0,
; 87 : R1 );
; 88 :
; 89 :
; 90 : deSelectChip( RCA );
; 91 : #else
; 92 :
; 93 : if (buff)
0001c e1dd42b8 ldrh r4, [sp, #0x28]
00020 e1a00805 mov r0, r5, lsl #16
00024 e1a09820 mov r9, r0, lsr #16
00028 e1a01809 mov r1, r9, lsl #16
0002c e1a00821 mov r0, r1, lsr #16
00030 e1a02800 mov r2, r0, lsl #16
00034 e1a01822 mov r1, r2, lsr #16
00038 e2116902 ands r6, r1, #2, 18
0003c 11a0a003 movne r10, r3
00040 e3580000 cmp r8, #0
; 94 : {
; 95 :
; 96 : respErr = mmcSetXferState (pc, RCA);
00044 11a01004 movne r1, r4
00048 11a0000b movne r0, r11
0004c 1b000000 blne mmcSetXferState
; 97 : }
; 98 :
; 99 :
; 100 : respErr = mmcCommandAndResponse ( pc,
; 101 : (((ULONG)RCA) << 16),
; 102 : APPL_CMD,
; 103 : 0,
; 104 : R1 );
00050 e3a00001 mov r0, #1
00054 e58d0000 str r0, [sp]
00058 e1a00804 mov r0, r4, lsl #16
0005c e1a01820 mov r1, r0, lsr #16
00060 e3a02f5d mov r2, #0x5D, 30
00064 e3a03000 mov r3, #0
00068 e3822003 orr r2, r2, #3
0006c e1a01801 mov r1, r1, lsl #16
00070 e1a0000b mov r0, r11
00074 eb000000 bl mmcCommandAndResponse
00078 e3500000 cmp r0, #0
; 105 :
; 106 : #endif
; 107 :
; 108 :
; 112 :
; 117 : if ( ( respErr != MMC_NO_ERROR) && (respErr == MMC_COMUNC_ILLEG_COM) )
0007c 0a000003 beq |$L36547|
00080 e35000d0 cmp r0, #0xD0
; 118 : {
; 119 : pc->error_code = (UINT16)respErr;
00084 03a010d0 moveq r1, #0xD0
00088 01cb11b6 streqh r1, [r11, #0x16]
0008c 0a00001e beq |$L36541|
00090 |$L36547|
; 121 : }
; 122 :
; 123 :
; 124 : #if (USE_SPI || USE_SPI_EMULATION)
; 125 :
; 126 : selectChip( RCA );
; 127 : #endif
; 128 :
; 129 : respErr = mmcCommandAndResponse ( pc,
; 130 : multipp,
; 131 : Cmd,
; 132 : tLength,
; 133 : resp );
00090 e59d002c ldr r0, [sp, #0x2C]
00094 e1a0300a mov r3, r10
00098 e1a02005 mov r2, r5
0009c e58d0000 str r0, [sp]
000a0 e1a01007 mov r1, r7
000a4 e1a0000b mov r0, r11
000a8 eb000000 bl mmcCommandAndResponse
; 134 :
; 135 :
; 136 : if (buff)
000ac e3580000 cmp r8, #0
000b0 0a000014 beq |$L36552|
; 137 : {
; 138 :
; 139 : if (Cmd & SECURITY_CMD_BIT)
000b4 e3560000 cmp r6, #0
; 140 : return respErr;
000b8 1a000012 bne |$L36552|
; 141 :
; 142 :
; 143 : pc->user_address = (USERADDRESS)buff;
000bc e58b8004 str r8, [r11, #4]
; 144 :
; 145 :
; 146 : if (respErr == MMC_NO_ERROR)
000c0 e3500000 cmp r0, #0
000c4 1a00000f bne |$L36552|
; 147 : {
; 148 : if (Cmd == SD_SEND_SCR)
000c8 e3a01e17 mov r1, #0x17, 28
000cc e3811003 orr r1, r1, #3
000d0 e1590001 cmp r9, r1
; 149 : {
; 150 : tLength = SD_SCR_LENGTH;
000d4 03a0a008 moveq r10, #8
000d8 0a000003 beq |$L36555|
; 151 : }
; 152 : else if (Cmd == SD_STATUS)
000dc e3a00f53 mov r0, #0x53, 30
000e0 e3800001 orr r0, r0, #1
000e4 e1590000 cmp r9, r0
; 153 : {
; 154 : tLength = SD_STATUS_LENGTH;
000e8 03a0a040 moveq r10, #0x40
000ec |$L36555|
; 155 : }
; 156 :
; 157 :
; 158 :
; 159 : OS_WAIT(200);
000ec e3a000c8 mov r0, #0xC8
000f0 eb000000 bl platform_delayms
; 160 :
; 161 : respErr = receive_data( pc, tLength, 1, NO );
000f4 e3a03000 mov r3, #0
000f8 e3a02001 mov r2, #1
000fc e1a0100a mov r1, r10
00100 e1a0000b mov r0, r11
00104 eb000000 bl receive_data
00108 |$L36552|
; 162 : }
; 163 : }
; 164 :
; 165 : #if (USE_SPI || USE_SPI_EMULATION)
; 166 :
; 167 : deSelectChip( RCA );
; 168 : #endif
; 169 :
; 170 : return respErr;
00108 e1a01000 mov r1, r0
0010c |$L36541|
; 120 : return respErr;
0010c e1a00001 mov r0, r1
; 171 : }
00110 e28dd004 add sp, sp, #4
00114 e8bd4ff0 ldmia sp!, {r4 - r11, lr}
00118 e12fff1e bx lr
0011c |$M37231|
ENDP ; |mmcSDApplCmd|
EXPORT |??_C@_1DA@JCDP@?$AAi?$AAs?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?$DP?$AA?5?$AA?$CF@| [ DATA ] ; `string'
EXPORT |??_C@_1EA@IEBN@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| [ DATA ] ; `string'
EXPORT |??_C@_1FA@LPLD@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| [ DATA ] ; `string'
EXPORT |??_C@_1FM@NKCI@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| [ DATA ] ; `string'
EXPORT |??_C@_1CC@MGHJ@?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAs?$AA?5?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?$CB?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1EA@FIDN@?$AAt?$AAr?$AA?5?$AAt?$AAo?$AA?5?$AAa?$AAs?$AAs?$AAs?$AAi?$AAg?$AAn?$AA?5?$AAR?$AAC?$AAA?$AA?5?$AA?5?$AAw@| [ DATA ] ; `string'
EXPORT |??_C@_1FG@OKKD@?$AAa?$AAs?$AAs?$AAs?$AAi?$AAg?$AAn?$AA?5?$AAR?$AAC?$AAA?$AA?5?$AAi?$AAs?$AA?5?$AAn?$AAo?$AAt?$AA?5?$AAs@| [ DATA ] ; `string'
EXPORT |??_C@_1FE@BKCB@?$AAa?$AAf?$AAt?$AAe?$AAr?$AA?5?$AAs?$AAu?$AAc?$AAc?$AAe?$AAs?$AAs?$AAf?$AAu?$AAl?$AAl?$AAy?$AA?5?$AAa@| [ DATA ] ; `string'
EXPORT |??_C@_1EM@DOL@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AA?9?$AA?9?$AA?5?$AAI?$AAt?$AA?5?$AAe?$AAn?$AAt?$AAe?$AAr@| [ DATA ] ; `string'
EXPORT |??_C@_1EE@PPN@?$AAM?$AAM?$AAC?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AA?9?$AA?5?$AAp?$AAc?$AA?9?$AA?$DO?$AAd?$AAr?$AAi?$AAv?$AAe@| [ DATA ] ; `string'
EXPORT |??_C@_1DK@LFHM@?$AAn?$AAo?$AAw?$AA?0?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAn?$AAu?$AAm?$AAb?$AAe?$AAr?$AA?5?$AAo?$AAf?$AA?5?$AAi@| [ DATA ] ; `string'
EXPORT |??_C@_1CG@DHEP@?$AAN?$AAo?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAi?$AAs?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1DG@DFMO@?$AAd?$AAe?$AAv?$AAC?$AAo?$AAu?$AAn?$AAt?$AA?5?$AAi?$AAs?$AA?5?$AAf?$AAo?$AAl?$AAl?$AAo?$AAw?$AAi?$AAn@| [ DATA ] ; `string'
EXPORT |??_C@_1EG@HFPL@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAR?$AAe?$AAs?$AAE?$AAr?$AAr?$AA?5?$AAi?$AAs?$AA?5?$AAa@| [ DATA ] ; `string'
EXPORT |mmcReset|
EXPORT |mmcIdentify|
EXPORT |??_C@_1CM@KBHA@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt?$AAe?$AAr?$AAe?$AAd?$AA?5?$AA?$AN@| [ DATA ] ; `string'
EXPORT |??_C@_1BE@CPBE@?$AAu?$AAs?$AAe?$AAr?$AA_?$AAs?$AAd?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
IMPORT |NKDbgPrintfW|
IMPORT |to_WORD|
00000 AREA |.text| { |mmcReset| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$mmcReset|, PDATA, SELECTION=5, ASSOC=|.text| { |mmcReset| } ; comdat associative
|$T37266| DCD |mmcReset|
DCD 0x40012002
00000 AREA |.rdata| { |??_C@_1CM@KBHA@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt?$AAe?$AAr?$AAe?$AAd?$AA?5?$AA?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CM@KBHA@?$AAm?$AAm?$AAc?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?$CI?$AA?$CJ?$AA?5?$AAe?$AAn?$AAt?$AAe?$AAr?$AAe?$AAd?$AA?5?$AA?$AN@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "R", 0x0, "e", 0x0, "s", 0x0, "e"
DCB 0x0, "t", 0x0, "(", 0x0, ")", 0x0, " ", 0x0, "e", 0x0, "n"
DCB 0x0, "t", 0x0, "e", 0x0, "r", 0x0, "e", 0x0, "d", 0x0, " "
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1BE@CPBE@?$AAu?$AAs?$AAe?$AAr?$AA_?$AAs?$AAd?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BE@CPBE@?$AAu?$AAs?$AAe?$AAr?$AA_?$AAs?$AAd?$AA?$AN?$AA?6?$AA?$AA@| DCB "u"
DCB 0x0, "s", 0x0, "e", 0x0, "r", 0x0, "_", 0x0, "s", 0x0, "d"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1DA@JCDP@?$AAi?$AAs?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?$DP?$AA?5?$AA?$CF@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DA@JCDP@?$AAi?$AAs?$AA?5?$AAt?$AAh?$AAe?$AA?5?$AAc?$AAa?$AAr?$AAd?$AA?5?$AAr?$AAe?$AAa?$AAd?$AAy?$AA?$DP?$AA?5?$AA?$CF@| DCB "i"
DCB 0x0, "s", 0x0, " ", 0x0, "t", 0x0, "h", 0x0, "e", 0x0, " "
DCB 0x0, "c", 0x0, "a", 0x0, "r", 0x0, "d", 0x0, " ", 0x0, "r"
DCB 0x0, "e", 0x0, "a", 0x0, "d", 0x0, "y", 0x0, "?", 0x0, " "
DCB 0x0, "%", 0x0, "x", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EA@IEBN@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EA@IEBN@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "r", 0x0, "e", 0x0, "s", 0x0, "e"
DCB 0x0, "t", 0x0, ":", 0x0, "S", 0x0, "D", 0x0, "_", 0x0, "S"
DCB 0x0, "E", 0x0, "N", 0x0, "D", 0x0, "_", 0x0, "O", 0x0, "P"
DCB 0x0, "_", 0x0, "C", 0x0, "O", 0x0, "N", 0x0, "D", 0x0, " "
DCB 0x0, "p", 0x0, "a", 0x0, "s", 0x0, "s", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FA@LPLD@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FA@LPLD@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "r", 0x0, "e", 0x0, "s", 0x0, "e"
DCB 0x0, "t", 0x0, ":", 0x0, "S", 0x0, "D", 0x0, "_", 0x0, "S"
DCB 0x0, "E", 0x0, "N", 0x0, "D", 0x0, "_", 0x0, "O", 0x0, "P"
DCB 0x0, "_", 0x0, "C", 0x0, "O", 0x0, "N", 0x0, "D", 0x0, " "
DCB 0x0, "p", 0x0, "a", 0x0, "s", 0x0, "s", 0x0, " ", 0x0, "s"
DCB 0x0, "d", 0x0, " ", 0x0, "c", 0x0, "a", 0x0, "r", 0x0, "d"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1FM@NKCI@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FM@NKCI@?$AAm?$AAm?$AAc?$AAr?$AAe?$AAs?$AAe?$AAt?$AA?3?$AAS?$AAD?$AA_?$AAS?$AAE?$AAN?$AAD?$AA_?$AAO?$AAP?$AA_@| DCB "m"
DCB 0x0, "m", 0x0, "c", 0x0, "r", 0x0, "e", 0x0, "s", 0x0, "e"
DCB 0x0, "t", 0x0, ":", 0x0, "S", 0x0, "D", 0x0, "_", 0x0, "S"
DCB 0x0, "E", 0x0, "N", 0x0, "D", 0x0, "_", 0x0, "O", 0x0, "P"
DCB 0x0, "_", 0x0, "C", 0x0, "O", 0x0, "N", 0x0, "D", 0x0, " "
DCB 0x0, "p", 0x0, "a", 0x0, "s", 0x0, "s", 0x0, " ", 0x0, "s"
DCB 0x0, "d", 0x0, " ", 0x0, "c", 0x0, "a", 0x0, "r", 0x0, "d"
DCB 0x0, " ", 0x0, "a", 0x0, "g", 0x0, "a", 0x0, "i", 0x0, "n"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EA@FIDN@?$AAt?$AAr?$AA?5?$AAt?$AAo?$AA?5?$AAa?$AAs?$AAs?$AAs?$AAi?$AAg?$AAn?$AA?5?$AAR?$AAC?$AAA?$AA?5?$AA?5?$AAw@| }, DATA, READONLY, SELECTION=2 ; comdat any
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -