📄 atapiio.cod
字号:
00008 e590301c ldr r3, [r0, #0x1C]
0000c e0820003 add r0, r2, r3
00010 eb000000 bl WRITE_PORT_UCHAR
; 241 : }
00014 e49de004 ldr lr, [sp], #4
00018 e12fff1e bx lr
0001c |$M32319|
ENDP ; |?WriteHighCount@CDisk@@QAAXE@Z|, CDisk::WriteHighCount
EXPORT |?SelectDevice@CDisk@@QAAXXZ| ; CDisk::SelectDevice
00000 AREA |.text| { |?SelectDevice@CDisk@@QAAXXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?SelectDevice@CDisk@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?SelectDevice@CDisk@@QAAXXZ| } ; comdat associative
|$T32331| DCD |$L32330|
DCD 0x40000c01
; Function compile flags: /Ogsy
00000 AREA |.text| { |?SelectDevice@CDisk@@QAAXXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?SelectDevice@CDisk@@QAAXXZ| PROC ; CDisk::SelectDevice
; 246 : inline void SelectDevice() {
00000 |$L32330|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M32328|
; 247 : ATA_WRITE_BYTE(m_pATAReg + m_dwDrvHeadOffset, (m_dwDevice == 0 ) ? ATA_HEAD_DRIVE_1 : ATA_HEAD_DRIVE_2);
00004 e5903484 ldr r3, [r0, #0x484]
00008 e5902030 ldr r2, [r0, #0x30]
0000c e3530000 cmp r3, #0
00010 e5903020 ldr r3, [r0, #0x20]
00014 03a010a0 moveq r1, #0xA0
00018 13a010b0 movne r1, #0xB0
0001c e20110ff and r1, r1, #0xFF
00020 e0820003 add r0, r2, r3
00024 eb000000 bl WRITE_PORT_UCHAR
; 248 : }
00028 e49de004 ldr lr, [sp], #4
0002c e12fff1e bx lr
00030 |$M32329|
ENDP ; |?SelectDevice@CDisk@@QAAXXZ|, CDisk::SelectDevice
EXPORT |?WriteDriveHeadReg@CDisk@@QAAXE@Z| ; CDisk::WriteDriveHeadReg
00000 AREA |.text| { |?WriteDriveHeadReg@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?WriteDriveHeadReg@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteDriveHeadReg@CDisk@@QAAXE@Z| } ; comdat associative
|$T32340| DCD |$L32339|
DCD 0x40000701
; Function compile flags: /Ogsy
00000 AREA |.text| { |?WriteDriveHeadReg@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?WriteDriveHeadReg@CDisk@@QAAXE@Z| PROC ; CDisk::WriteDriveHeadReg
; 253 : inline void WriteDriveHeadReg(BYTE bValue) {
00000 |$L32339|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M32337|
; 254 : ATA_WRITE_BYTE(m_pATAReg + m_dwDrvHeadOffset, bValue);
00004 e5902030 ldr r2, [r0, #0x30]
00008 e5903020 ldr r3, [r0, #0x20]
0000c e0820003 add r0, r2, r3
00010 eb000000 bl WRITE_PORT_UCHAR
; 255 : }
00014 e49de004 ldr lr, [sp], #4
00018 e12fff1e bx lr
0001c |$M32338|
ENDP ; |?WriteDriveHeadReg@CDisk@@QAAXE@Z|, CDisk::WriteDriveHeadReg
EXPORT |?GetBaseStatus@CDisk@@QAAEXZ| ; CDisk::GetBaseStatus
IMPORT |CeLogData|
IMPORT |?dpCurSettings@@3U_DBGPARAM@@A| ; dpCurSettings
00000 AREA |.text| { |?GetBaseStatus@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?GetBaseStatus@CDisk@@QAAEXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?GetBaseStatus@CDisk@@QAAEXZ| } ; comdat associative
|$T32351| DCD |$L32350|
DCD 0x40001c02
; Function compile flags: /Ogsy
00000 AREA |.text| { |?GetBaseStatus@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?GetBaseStatus@CDisk@@QAAEXZ| PROC ; CDisk::GetBaseStatus
; 257 : inline BYTE GetBaseStatus() {
00000 |$L32350|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 e24dd014 sub sp, sp, #0x14
00008 |$M32348|
; 258 : BYTE bStatus = ATA_READ_BYTE(m_pATAReg + m_dwCommandStatusOffset);
00008 e5902030 ldr r2, [r0, #0x30]
0000c e5903024 ldr r3, [r0, #0x24]
00010 e0820003 add r0, r2, r3
00014 eb000000 bl READ_PORT_UCHAR
; 259 : if (ZONE_CELOG) CeLogData(TRUE, CELID_ATAPI_BASESTATUS, &bStatus, sizeof(bStatus), 0, CELZONE_ALWAYSON, 0, FALSE);
00018 e59f304c ldr r3, [pc, #0x4C]
0001c e5cd0010 strb r0, [sp, #0x10]
00020 e5933440 ldr r3, [r3, #0x440]
00024 e3130902 tst r3, #2, 18
00028 0a00000c beq |$L31616|
0002c e3a01d86 mov r1, #0x86, 26
00030 e3a0e101 mov lr, #1, 2
00034 e3a04000 mov r4, #0
00038 e3811002 orr r1, r1, #2
0003c e3a03001 mov r3, #1
00040 e28d2010 add r2, sp, #0x10
00044 e3a00001 mov r0, #1
00048 e58d400c str r4, [sp, #0xC]
0004c e58d4008 str r4, [sp, #8]
00050 e58de004 str lr, [sp, #4]
00054 e58d4000 str r4, [sp]
00058 eb000000 bl CeLogData
0005c e5dd0010 ldrb r0, [sp, #0x10]
00060 |$L31616|
; 260 : return bStatus;
; 261 : }
00060 e28dd014 add sp, sp, #0x14
00064 e8bd4010 ldmia sp!, {r4, lr}
00068 e12fff1e bx lr
0006c |$L32353|
0006c 00000000 DCD |?dpCurSettings@@3U_DBGPARAM@@A|
00070 |$M32349|
ENDP ; |?GetBaseStatus@CDisk@@QAAEXZ|, CDisk::GetBaseStatus
EXPORT |?WriteCommand@CDisk@@QAAXE@Z| ; CDisk::WriteCommand
00000 AREA |.text| { |?WriteCommand@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?WriteCommand@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteCommand@CDisk@@QAAXE@Z| } ; comdat associative
|$T32361| DCD |$L32360|
DCD 0x40000701
; Function compile flags: /Ogsy
00000 AREA |.text| { |?WriteCommand@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?WriteCommand@CDisk@@QAAXE@Z| PROC ; CDisk::WriteCommand
; 263 : inline void WriteCommand(BYTE bCommand) {
00000 |$L32360|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M32358|
; 264 : ATA_WRITE_BYTE(m_pATAReg + m_dwCommandStatusOffset, bCommand);
00004 e5902030 ldr r2, [r0, #0x30]
00008 e5903024 ldr r3, [r0, #0x24]
0000c e0820003 add r0, r2, r3
00010 eb000000 bl WRITE_PORT_UCHAR
; 265 : }
00014 e49de004 ldr lr, [sp], #4
00018 e12fff1e bx lr
0001c |$M32359|
ENDP ; |?WriteCommand@CDisk@@QAAXE@Z|, CDisk::WriteCommand
EXPORT |?GetAltStatus@CDisk@@QAAEXZ| ; CDisk::GetAltStatus
00000 AREA |.text| { |?GetAltStatus@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?GetAltStatus@CDisk@@QAAEXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?GetAltStatus@CDisk@@QAAEXZ| } ; comdat associative
|$T32371| DCD |$L32370|
DCD 0x40000701
; Function compile flags: /Ogsy
00000 AREA |.text| { |?GetAltStatus@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?GetAltStatus@CDisk@@QAAEXZ| PROC ; CDisk::GetAltStatus
; 267 : inline BYTE GetAltStatus() {
00000 |$L32370|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M32368|
; 268 : return (BYTE) ATA_READ_BYTE(m_pATARegAlt + m_dwAltStatusOffset);
00004 e5902034 ldr r2, [r0, #0x34]
00008 e5903028 ldr r3, [r0, #0x28]
0000c e0820003 add r0, r2, r3
00010 eb000000 bl READ_PORT_UCHAR
; 269 : }
00014 e49de004 ldr lr, [sp], #4
00018 e12fff1e bx lr
0001c |$M32369|
ENDP ; |?GetAltStatus@CDisk@@QAAEXZ|, CDisk::GetAltStatus
EXPORT |?WriteAltDriveController@CDisk@@QAAXE@Z| ; CDisk::WriteAltDriveController
00000 AREA |.text| { |?WriteAltDriveController@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?WriteAltDriveController@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteAltDriveController@CDisk@@QAAXE@Z| } ; comdat associative
|$T32380| DCD |$L32379|
DCD 0x40000701
; Function compile flags: /Ogsy
00000 AREA |.text| { |?WriteAltDriveController@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?WriteAltDriveController@CDisk@@QAAXE@Z| PROC ; CDisk::WriteAltDriveController
; 270 : inline void WriteAltDriveController(BYTE bData) {
00000 |$L32379|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M32377|
; 271 : ATA_WRITE_BYTE(m_pATARegAlt + m_dwAltDrvCtrl, bData);
00004 e5902034 ldr r2, [r0, #0x34]
00008 e590302c ldr r3, [r0, #0x2C]
0000c e0820003 add r0, r2, r3
00010 eb000000 bl WRITE_PORT_UCHAR
; 272 : }
00014 e49de004 ldr lr, [sp], #4
00018 e12fff1e bx lr
0001c |$M32378|
ENDP ; |?WriteAltDriveController@CDisk@@QAAXE@Z|, CDisk::WriteAltDriveController
EXPORT |?WaitOnBusy@CDisk@@QAAEH@Z| ; CDisk::WaitOnBusy
IMPORT |?StallExecution@CDisk@@QAAXK@Z| ; CDisk::StallExecution
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
|$T32405| DCD |$L32404|
DCD 0x40002601
; Function compile flags: /Ogsy
; File d:\wince500\platform\smdk2440\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
; 83 : {
00000 |$L32404|
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 |$M32402|
00004 e1a08001 mov r8, r1
00008 e1a04000 mov r4, r0
; 84 : DWORD i, j;
; 85 : BYTE bStatus = 0;
; 86 : for (i = 0; i < m_dwWaitCheckIter; i++) {
0000c e59436bc ldr r3, [r4, #0x6BC]
00010 e3a05000 mov r5, #0
00014 e3a07000 mov r7, #0
00018 e3530000 cmp r3, #0
0001c 9a00001a bls |$L31965|
00020 |$L31963|
; 87 : for (j = 0; j < m_dwWaitSampleTimes; j++) {
00020 e59436c0 ldr r3, [r4, #0x6C0]
00024 e3a06000 mov r6, #0
00028 e3530000 cmp r3, #0
0002c 9a00000f bls |$L31968|
00030 |$L31966|
; 88 : bStatus = fBase ? GetBaseStatus() : GetAltStatus();
00030 e3580000 cmp r8, #0
00034 0a000002 beq |$L32384|
00038 e1a00004 mov r0, r4
0003c eb000000 bl |?GetBaseStatus@CDisk@@QAAEXZ|
00040 ea000003 b |$L32401|
00044 |$L32384|
00044 e5942034 ldr r2, [r4, #0x34]
00048 e5943028 ldr r3, [r4, #0x28]
0004c e0820003 add r0, r2, r3
00050 eb000000 bl READ_PORT_UCHAR
00054 |$L32401|
00054 e1a05000 mov r5, r0
; 89 : if (!(bStatus & ATA_STATUS_BUSY)) {
00058 e3150080 tst r5, #0x80
0005c 0a00000a beq |$L31965|
00060 e59436c0 ldr r3, [r4, #0x6C0]
00064 e2866001 add r6, r6, #1
00068 e1560003 cmp r6, r3
0006c 3affffef bcc |$L31966|
00070 |$L31968|
; 91 : }
; 92 : }
; 93 : StallExecution(m_dwWaitStallTime);
00070 e59416c4 ldr r1, [r4, #0x6C4]
00074 e1a00004 mov r0, r4
00078 eb000000 bl |?StallExecution@CDisk@@QAAXK@Z|
0007c e59436bc ldr r3, [r4, #0x6BC]
00080 e2877001 add r7, r7, #1
00084 e1570003 cmp r7, r3
00088 3affffe4 bcc |$L31963|
0008c |$L31965|
; 90 : return bStatus & (ATA_STATUS_ERROR |ATA_STATUS_BUSY);
0008c e2050081 and r0, r5, #0x81
; 94 : }
; 95 : return bStatus & (ATA_STATUS_ERROR |ATA_STATUS_BUSY);
; 96 : }
00090 e8bd41f0 ldmia sp!, {r4 - r8, lr}
00094 e12fff1e bx lr
00098 |$M32403|
ENDP ; |?WaitOnBusy@CDisk@@QAAEH@Z|, CDisk::WaitOnBusy
EXPORT |?WaitForDisc@CDisk@@UAAHEKK@Z| ; CDisk::WaitForDisc
; File d:\wince500\platform\smdk2440\drivers\atapi\diskmain.h
00000 AREA |.text| { |?WaitForDisc@CDisk@@UAAHEKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?WaitForDisc@CDisk@@UAAHEKK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WaitForDisc@CDisk@@UAAHEKK@Z| } ; comdat associative
|$T32431| DCD |$L32430|
DCD 0x40003301
; Function compile flags: /Ogsy
; File d:\wince500\platform\smdk2440\drivers\atapi\atapiio.cpp
00000 AREA |.text| { |?WaitForDisc@CDisk@@UAAHEKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?WaitForDisc@CDisk@@UAAHEKK@Z| PROC ; CDisk::WaitForDisc
; 114 : {
00000 |$L32430|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M32428|
00004 e1b06003 movs r6, r3
00008 e1a05002 mov r5, r2
0000c e1a04001 mov r4, r1
00010 e1a07000 mov r7, r0
; 115 : BYTE bStatusRead = 0;
; 116 :
; 117 : if (dwPeriod == 0) {
; 118 : dwPeriod = dwTimeOut;
00014 01a06005 moveq r6, r5
00018 |$L31979|
; 119 : }
; 120 :
; 121 : while( TRUE) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -