📄 atapiio.cod
字号:
00000 |?WriteDriveHeadReg@CDisk@@QAAXE@Z| PROC ; CDisk::WriteDriveHeadReg
; 478 : inline void WriteDriveHeadReg(BYTE bValue) {
00000 |$L33168|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M33166|
; 479 : ATA_WRITE_BYTE( (volatile PBYTE) m_pATAReg + m_dwDrvHeadOffset, bValue);
00004 e59f0008 ldr r0, [pc, #8]
00008 eb000000 bl WRITE_PORT_UCHAR
; 480 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$L33171|
00014 b6a000c0 DCD 0xb6a000c0
00018 |$M33167|
ENDP ; |?WriteDriveHeadReg@CDisk@@QAAXE@Z|, CDisk::WriteDriveHeadReg
EXPORT |?WriteSectorNumber@CDisk@@QAAXE@Z| ; CDisk::WriteSectorNumber
00000 AREA |.text| { |?WriteSectorNumber@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?WriteSectorNumber@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteSectorNumber@CDisk@@QAAXE@Z| } ; comdat associative
|$T33178| DCD |$L33177|
DCD 0x40000601
; Function compile flags: /Ogsy
00000 AREA |.text| { |?WriteSectorNumber@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?WriteSectorNumber@CDisk@@QAAXE@Z| PROC ; CDisk::WriteSectorNumber
; 483 : {
00000 |$L33177|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M33175|
; 484 : ATA_WRITE_BYTE((volatile PBYTE)m_pATAReg + m_dwSectNumOffset, bValue);
00004 e59f0008 ldr r0, [pc, #8]
00008 eb000000 bl WRITE_PORT_UCHAR
; 485 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$L33180|
00014 b6a00060 DCD 0xb6a00060
00018 |$M33176|
ENDP ; |?WriteSectorNumber@CDisk@@QAAXE@Z|, CDisk::WriteSectorNumber
EXPORT |?WriteLowCount@CDisk@@QAAXE@Z| ; CDisk::WriteLowCount
00000 AREA |.text| { |?WriteLowCount@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?WriteLowCount@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteLowCount@CDisk@@QAAXE@Z| } ; comdat associative
|$T33187| DCD |$L33186|
DCD 0x40000601
; Function compile flags: /Ogsy
00000 AREA |.text| { |?WriteLowCount@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?WriteLowCount@CDisk@@QAAXE@Z| PROC ; CDisk::WriteLowCount
; 487 : inline void WriteLowCount(BYTE bValue) {
00000 |$L33186|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M33184|
; 488 : ATA_WRITE_BYTE( (volatile PBYTE) m_pATAReg + m_dwByteCountLowOffset, bValue);
00004 e59f0008 ldr r0, [pc, #8]
00008 eb000000 bl WRITE_PORT_UCHAR
; 489 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$L33189|
00014 b6a00080 DCD 0xb6a00080
00018 |$M33185|
ENDP ; |?WriteLowCount@CDisk@@QAAXE@Z|, CDisk::WriteLowCount
EXPORT |?WriteHighCount@CDisk@@QAAXE@Z| ; CDisk::WriteHighCount
00000 AREA |.text| { |?WriteHighCount@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?WriteHighCount@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteHighCount@CDisk@@QAAXE@Z| } ; comdat associative
|$T33196| DCD |$L33195|
DCD 0x40000601
; Function compile flags: /Ogsy
00000 AREA |.text| { |?WriteHighCount@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?WriteHighCount@CDisk@@QAAXE@Z| PROC ; CDisk::WriteHighCount
; 491 : inline void WriteHighCount(BYTE bValue) {
00000 |$L33195|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M33193|
; 492 : ATA_WRITE_BYTE( (volatile PBYTE) m_pATAReg + m_dwByteCountHighOffset, bValue);
00004 e59f0008 ldr r0, [pc, #8]
00008 eb000000 bl WRITE_PORT_UCHAR
; 493 : }
0000c e49de004 ldr lr, [sp], #4
00010 e12fff1e bx lr
00014 |$L33198|
00014 b6a000a0 DCD 0xb6a000a0
00018 |$M33194|
ENDP ; |?WriteHighCount@CDisk@@QAAXE@Z|, CDisk::WriteHighCount
EXPORT |?WaitOnBusy@CDisk@@QAAEH@Z| ; CDisk::WaitOnBusy
00000 AREA |.text| { |?WaitOnBusy@CDisk@@QAAEH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?WaitOnBusy@CDisk@@QAAEH@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WaitOnBusy@CDisk@@QAAEH@Z| } ; comdat associative
|$T33231| DCD |$L33230|
DCD 0x40001f01
; Function compile flags: /Ogsy
; File c:\wince500\platform\bvdmain\drivers\atapi\atapiio.cpp
00000 AREA |.text| { |?WaitOnBusy@CDisk@@QAAEH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?WaitOnBusy@CDisk@@QAAEH@Z| PROC ; CDisk::WaitOnBusy
; 92 : {
00000 |$L33230|
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 |$M33228|
00004 e1a07001 mov r7, r1
00008 e1a08000 mov r8, r0
; 93 : DWORD i,j;
; 94 : BYTE bStatus;
; 95 : for (i=0; i< DEFAULT_WAIT_CHECK_ITER; i++) {
0000c e3a06000 mov r6, #0
00010 |$L32822|
; 96 : for (j=0; j<DEFAULT_WAIT_SAMPLE_TIMES; j++) {
00010 e3a05000 mov r5, #0
00014 |$L32825|
; 97 : bStatus = fBase ? GetBaseStatus() : GetAltStatus();
00014 e3570000 cmp r7, #0
00018 159f0058 ldrne r0, [pc, #0x58]
0001c 059f0050 ldreq r0, [pc, #0x50]
00020 eb000000 bl READ_PORT_UCHAR
00024 e1a04000 mov r4, r0
; 98 : if (!(bStatus & ATA_STATUS_BUSY)) {
00028 e3140080 tst r4, #0x80
0002c 0a00000d beq |$L32824|
00030 e2855001 add r5, r5, #1
00034 e3550064 cmp r5, #0x64
00038 3afffff5 bcc |$L32825|
; 100 : }
; 101 : }
; 102 : StallExecution(DEFAULT_WAIT_STALL_TIME);
0003c e5983004 ldr r3, [r8, #4]
00040 e3130301 tst r3, #1, 6
00044 0a000002 beq |$L33213|
00048 e3a00004 mov r0, #4
0004c eb000000 bl Sleep
00050 ea000001 b |$L32823|
00054 |$L33213|
00054 e3a00efa mov r0, #0xFA, 28
00058 eb000000 bl StallExecution
0005c |$L32823|
0005c e2866001 add r6, r6, #1
00060 e3560e7d cmp r6, #0x7D, 28
00064 3affffe9 bcc |$L32822|
00068 |$L32824|
; 99 : return bStatus & (ATA_STATUS_ERROR |ATA_STATUS_BUSY);
00068 e2040081 and r0, r4, #0x81
; 103 : }
; 104 : return bStatus & (ATA_STATUS_ERROR |ATA_STATUS_BUSY);
; 105 : }
0006c e8bd41f0 ldmia sp!, {r4 - r8, lr}
00070 e12fff1e bx lr
00074 |$L33233|
00074 b6b000c0 DCD 0xb6b000c0
00078 b6a000e0 DCD 0xb6a000e0
0007c |$M33229|
ENDP ; |?WaitOnBusy@CDisk@@QAAEH@Z|, CDisk::WaitOnBusy
EXPORT |?WaitForDisc@CDisk@@QAAHEKK@Z| ; CDisk::WaitForDisc
; File c:\wince500\platform\bvdmain\drivers\atapi\diskmain.h
00000 AREA |.text| { |?WaitForDisc@CDisk@@QAAHEKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?WaitForDisc@CDisk@@QAAHEKK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WaitForDisc@CDisk@@QAAHEKK@Z| } ; comdat associative
|$T33263| DCD |$L33262|
DCD 0x40003901
; Function compile flags: /Ogsy
; File c:\wince500\platform\bvdmain\drivers\atapi\atapiio.cpp
00000 AREA |.text| { |?WaitForDisc@CDisk@@QAAHEKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?WaitForDisc@CDisk@@QAAHEKK@Z| PROC ; CDisk::WaitForDisc
; 108 : {
00000 |$L33262|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M33260|
00004 e1b06003 movs r6, r3
00008 e1a05002 mov r5, r2
0000c e1a04001 mov r4, r1
00010 e1a07000 mov r7, r0
; 109 : BYTE bStatusRead;
; 110 :
; 111 : bStatusRead = 0;
; 112 :
; 113 : if (dwPeriod == 0)
; 114 : dwPeriod = dwTimeOut;
00014 01a06005 moveq r6, r5
00018 |$L32838|
; 115 :
; 116 : while( TRUE) {
; 117 : bStatusRead = GetAltStatus();
00018 e59f00c0 ldr r0, [pc, #0xC0]
0001c eb000000 bl READ_PORT_UCHAR
; 118 : switch (bStatusType) {
00020 e3540001 cmp r4, #1
00024 0a00001c beq |$L32844|
00028 e3540002 cmp r4, #2
0002c 0a000018 beq |$L32849|
00030 e3540003 cmp r4, #3
00034 0a00000c beq |$L32853|
00038 e3540004 cmp r4, #4
0003c 0a000008 beq |$L32857|
00040 e3540005 cmp r4, #5
00044 0a000003 beq |$L32861|
00048 e3540006 cmp r4, #6
0004c 1a000014 bne |$L32845|
; 154 :
; 155 : case WAIT_TYPE_ERROR:
; 156 : if (bStatusRead & ATA_STATUS_ERROR) {
00050 e3100001 tst r0, #1
; 157 : DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_ERROR\r\n")));
; 158 : goto ExitDone;
; 159 : }
; 160 : break;
00054 ea000011 b |$L33258|
00058 |$L32861|
; 147 :
; 148 : case WAIT_TYPE_NOT_DRQ:
; 149 : if (!(bStatusRead & ATA_STATUS_DATA_REQ)) {
00058 e3100008 tst r0, #8
0005c |$L33259|
0005c 0a000019 beq |$ExitDone$32847|
; 150 : DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_NOT_DRQ\r\n")));
; 151 : goto ExitDone;
; 152 : }
; 153 : break;
00060 ea00000f b |$L32845|
00064 |$L32857|
; 137 : goto ExitDone;
; 138 : }
; 139 : break;
; 140 :
; 141 : case WAIT_TYPE_DRQ:
; 142 : if (bStatusRead & ATA_STATUS_DATA_REQ) {
00064 e3100008 tst r0, #8
; 143 : DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_DRQ\r\n")));
; 144 : goto ExitDone;
; 145 : }
; 146 : break;
00068 ea00000c b |$L33258|
0006c |$L32853|
; 132 :
; 133 : case WAIT_TYPE_READY:
; 134 : if (bStatusRead & ATA_STATUS_READY) {
0006c e3100040 tst r0, #0x40
00070 0a00000b beq |$L32845|
; 135 : DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_READY\r\n")));
; 136 : StallExecution(100);
00074 e5973004 ldr r3, [r7, #4]
00078 e3130301 tst r3, #1, 6
0007c 0a00000f beq |$L33242|
00080 e3a00001 mov r0, #1
00084 eb000000 bl Sleep
; 170 :
; 171 : ExitDone:
; 172 : return ERROR_SUCCESS;
00088 e3a00000 mov r0, #0
; 173 : }
0008c e8bd40f0 ldmia sp!, {r4 - r7, lr}
00090 e12fff1e bx lr
00094 |$L32849|
; 121 : DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_BUSY\r\n")));
; 122 : goto ExitDone;
; 123 : }
; 124 : break;
; 125 :
; 126 : case WAIT_TYPE_NOT_BUSY:
; 127 : if (!(bStatusRead & ATA_STATUS_BUSY)) {
00094 e3100080 tst r0, #0x80
; 128 : DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_NOT_BUSY\r\n")));
; 129 : goto ExitDone;
; 130 : }
; 131 : break;
00098 eaffffef b |$L33259|
0009c |$L32844|
; 119 : case WAIT_TYPE_BUSY:
; 120 : if (bStatusRead & ATA_STATUS_BUSY) {
0009c e3100080 tst r0, #0x80
000a0 |$L33258|
000a0 1a000008 bne |$ExitDone$32847|
000a4 |$L32845|
; 161 : }
; 162 : if ((int)dwTimeOut > 0) {
000a4 e3550000 cmp r5, #0
000a8 da000009 ble |$L32870|
; 163 : StallExecution(dwPeriod);
000ac e1a01006 mov r1, r6
000b0 e1a00007 mov r0, r7
000b4 eb000000 bl |?StallExecution@CDisk@@QAAXK@Z|
; 164 : dwTimeOut -= dwPeriod;
000b8 e0455006 sub r5, r5, r6
; 168 : }
; 169 : }
000bc eaffffd5 b |$L32838|
; 135 : DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_READY\r\n")));
; 136 : StallExecution(100);
000c0 |$L33242|
000c0 e3a00ffa mov r0, #0xFA, 30
000c4 eb000000 bl StallExecution
000c8 |$ExitDone$32847|
; 170 :
; 171 : ExitDone:
; 172 : return ERROR_SUCCESS;
000c8 e3a00000 mov r0, #0
; 173 : }
000cc e8bd40f0 ldmia sp!, {r4 - r7, lr}
000d0 e12fff1e bx lr
000d4 |$L32870|
; 165 : } else {
; 166 : DEBUGMSG(ZONE_ERROR, (TEXT("ATAPI:WaitForDisc - TimeOut !!! WaitType = %ld Status=%02X\r\n"), bStatusType, bStatusRead));
; 167 : return ERROR_GEN_FAILURE;
000d4 e3a0001f mov r0, #0x1F
; 173 : }
000d8 e8bd40f0 ldmia sp!, {r4 - r7, lr}
000dc e12fff1e bx lr
000e0 |$L33265|
000e0 b6b000c0 DCD 0xb6b000c0
000e4 |$M33261|
ENDP ; |?WaitForDisc@CDisk@@QAAHEKK@Z|, CDisk::WaitForDisc
EXPORT |?WaitForDRQ@CDisk@@QAAHXZ| ; CDisk::WaitForDRQ
; File c:\wince500\platform\bvdmain\drivers\atapi\diskmain.h
00000 AREA |.text| { |?WaitForDRQ@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?WaitForDRQ@CDisk@@QAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?WaitForDRQ@CDisk@@QAAHXZ| } ; comdat associative
|$T33292| DCD |$L33291|
DCD 0x40002101
; Function compile flags: /Ogsy
; File c:\wince500\platform\bvdmain\drivers\atapi\atapiio.cpp
00000 AREA |.text| { |?WaitForDRQ@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?WaitForDRQ@CDisk@@QAAHXZ| PROC ; CDisk::WaitForDRQ
; 183 : {
00000 |$L33291|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M33289|
00004 e1a07000 mov r7, r0
; 184 : DWORD i,j;
; 185 : BYTE bStatus;
; 186 :
; 187 : for (i=0; i< DEFAULT_WAIT_CHECK_ITER; i++) {
00008 e3a04000 mov r4, #0
0000c |$L32879|
; 188 : for (j=0; j<DEFAULT_WAIT_SAMPLE_TIMES; j++) {
0000c e3a05000 mov r5, #0
00010 |$L32882|
; 189 : bStatus = GetAltStatus() & (ATA_STATUS_BUSY|ATA_STATUS_DATA_REQ);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -