?? cdio.cod
字號:
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M32793|
00004 e1a04000 mov r4, r0
; 243 : return GetLowCount() + ((WORD)GetHighCount() << 8);
00008 e5942030 ldr r2, [r4, #0x30]
0000c e5943018 ldr r3, [r4, #0x18]
00010 e0820003 add r0, r2, r3
00014 eb000000 bl READ_PORT_UCHAR
00018 e5942030 ldr r2, [r4, #0x30]
0001c e594301c ldr r3, [r4, #0x1C]
00020 e1a04000 mov r4, r0
00024 e0820003 add r0, r2, r3
00028 eb000000 bl READ_PORT_UCHAR
0002c e0843400 add r3, r4, r0, lsl #8
00030 e1a00803 mov r0, r3, lsl #16
00034 e1a00820 mov r0, r0, lsr #16
; 244 : }
00038 e8bd4010 ldmia sp!, {r4, lr}
0003c e12fff1e bx lr
00040 |$M32794|
ENDP ; |?GetCount@CDisk@@QAAGXZ|, CDisk::GetCount
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
|$T32806| DCD |$L32805|
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 |$L32805|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M32803|
; 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 |$M32804|
ENDP ; |?SelectDevice@CDisk@@QAAXXZ|, CDisk::SelectDevice
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
|$T32817| DCD |$L32816|
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 |$L32816|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 e24dd014 sub sp, sp, #0x14
00008 |$M32814|
; 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 |$L32819|
0006c 00000000 DCD |?dpCurSettings@@3U_DBGPARAM@@A|
00070 |$M32815|
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
|$T32827| DCD |$L32826|
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 |$L32826|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M32824|
; 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 |$M32825|
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
|$T32837| DCD |$L32836|
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 |$L32836|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M32834|
; 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 |$M32835|
ENDP ; |?GetAltStatus@CDisk@@QAAEXZ|, CDisk::GetAltStatus
EXPORT |?SetupCdRomRead@CPCIDiskAndCD@@QAAKHKKPAU_ATAPI_COMMAND_PACKET@@@Z| ; CPCIDiskAndCD::SetupCdRomRead
IMPORT |memset|
; File d:\wince500\platform\smdk2440\drivers\atapi\cdio.cpp
00000 AREA |.text| { |?SetupCdRomRead@CPCIDiskAndCD@@QAAKHKKPAU_ATAPI_COMMAND_PACKET@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?SetupCdRomRead@CPCIDiskAndCD@@QAAKHKKPAU_ATAPI_COMMAND_PACKET@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?SetupCdRomRead@CPCIDiskAndCD@@QAAKHKKPAU_ATAPI_COMMAND_PACKET@@@Z| } ; comdat associative
|$T32855| DCD |$L32854|
DCD 0x40003303
; Function compile flags: /Ogsy
00000 AREA |.text| { |?SetupCdRomRead@CPCIDiskAndCD@@QAAKHKKPAU_ATAPI_COMMAND_PACKET@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?SetupCdRomRead@CPCIDiskAndCD@@QAAKHKKPAU_ATAPI_COMMAND_PACKET@@@Z| PROC ; CPCIDiskAndCD::SetupCdRomRead
; 166 : {
00000 |$L32854|
00000 e1a0c00d mov r12, sp
00004 e92d0004 stmdb sp!, {r2}
00008 e92d53f0 stmdb sp!, {r4 - r9, r12, lr}
0000c |$M32852|
0000c e1a07003 mov r7, r3
00010 e1a08001 mov r8, r1
; 167 : BOOL fIsDVD = (m_dwDeviceFlags & DFLAGS_DEVICE_ISDVD);
; 168 :
; 169 : memset( pCmdPkt, 0, sizeof(ATAPI_COMMAND_PACKET));
00014 e59d6024 ldr r6, [sp, #0x24]
00018 e5905690 ldr r5, [r0, #0x690]
0001c e3a02014 mov r2, #0x14
00020 e1a00006 mov r0, r6
00024 e3a01000 mov r1, #0
00028 eb000000 bl memset
; 170 :
; 171 :
; 172 : /**** Atapi Packet *****
; 173 : Byte 0 - Cmd/OpCode
; 174 : Byte 1 - N/A
; 175 : Byte 2 - Logical Block (MSB)
; 176 : Byte 2 - Logical Block
; 177 : Byte 2 - Logical Block
; 178 : Byte 2 - Logical Block (LSB)
; 179 : Byte 6 - Reserved
; 180 : Byte 7 - DataLength (MSB)
; 181 : Byte 8 - DataLength (LSB)
; 182 : Byte 9 - Control Byte
; 183 : ****** Atapi Packet ****/
; 184 : pCmdPkt->Byte_1 = 0x00;
; 185 : pCmdPkt->Byte_2 = LBA_MSB(&dwLBAAddr);
; 186 : pCmdPkt->Byte_3 = LBA_3rdLSB(&dwLBAAddr);
; 187 : pCmdPkt->Byte_4 = LBA_2ndLSB(&dwLBAAddr);
0002c e5dde021 ldrb lr, [sp, #0x21]
00030 e5dd2023 ldrb r2, [sp, #0x23]
00034 e5dd0022 ldrb r0, [sp, #0x22]
; 188 : pCmdPkt->Byte_5 = LBA_LSB(&dwLBAAddr);
00038 e5dd4020 ldrb r4, [sp, #0x20]
0003c e3a09000 mov r9, #0
00040 e5c6e004 strb lr, [r6, #4]
00044 e5c62002 strb r2, [r6, #2]
00048 e5c60003 strb r0, [r6, #3]
0004c e5c64005 strb r4, [r6, #5]
00050 e5c69001 strb r9, [r6, #1]
; 189 : if (fIsDVD && !bRawMode) {
00054 e3150040 tst r5, #0x40
00058 0a00000b beq |$L32182|
0005c e3580000 cmp r8, #0
00060 1a00000b bne |$L32843|
; 190 : pCmdPkt->Opcode = ATAPI_PACKET_CMD_READ_12;
00064 e3a000a8 mov r0, #0xA8
; 191 : pCmdPkt->Byte_6 = (BYTE)( dwTransferLength >> 24);
00068 e1a03c27 mov r3, r7, lsr #24
; 192 : pCmdPkt->Byte_7 = (BYTE)( (dwTransferLength & 0x00ff0000) >> 16);
0006c e1a02827 mov r2, r7, lsr #16
; 193 : pCmdPkt->Byte_8 = (BYTE)( (dwTransferLength & 0x0000ff00) >> 8);
00070 e1a01427 mov r1, r7, lsr #8
00074 e5c60000 strb r0, [r6]
00078 e5c63006 strb r3, [r6, #6]
0007c e5c62007 strb r2, [r6, #7]
00080 e5c61008 strb r1, [r6, #8]
; 194 : pCmdPkt->Byte_9 = (BYTE)( dwTransferLength);
00084 e5c67009 strb r7, [r6, #9]
; 195 : } else {
00088 ea00000b b |$L32187|
0008c |$L32182|
; 196 : pCmdPkt->Opcode = bRawMode ? ATAPI_PACKET_CMD_READ_CD : ATAPI_PACKET_CMD_READ;
0008c e3580000 cmp r8, #0
00090 0a000001 beq |$L32841|
00094 |$L32843|
00094 e3a020be mov r2, #0xBE
00098 ea000000 b |$L32842|
0009c |$L32841|
0009c e3a02028 mov r2, #0x28
000a0 |$L32842|
; 197 : pCmdPkt->Byte_6 = 0x00; // Reserved
; 198 : pCmdPkt->Byte_7 = (BYTE)( (dwTransferLength & 0x0000ff00) >> 8);
000a0 e1a03427 mov r3, r7, lsr #8
; 199 : pCmdPkt->Byte_8 = (BYTE)( dwTransferLength);
; 200 : pCmdPkt->Byte_9 = 0x10;
000a4 e3a01010 mov r1, #0x10
000a8 e5c63007 strb r3, [r6, #7]
000ac e5c61009 strb r1, [r6, #9]
000b0 e5c62000 strb r2, [r6]
000b4 e5c69006 strb r9, [r6, #6]
000b8 e5c67008 strb r7, [r6, #8]
000bc |$L32187|
; 201 : }
; 202 :
; 203 : pCmdPkt->Byte_10 = 0;
000bc e5c6900a strb r9, [r6, #0xA]
; 204 : return ERROR_SUCCESS;
000c0 e3a00000 mov r0, #0
; 205 : }
000c4 e89d63f0 ldmia sp, {r4 - r9, sp, lr}
000c8 e12fff1e bx lr
000cc |$M32853|
ENDP ; |?SetupCdRomRead@CPCIDiskAndCD@@QAAKHKKPAU_ATAPI_COMMAND_PACKET@@@Z|, CPCIDiskAndCD::SetupCdRomRead
EXPORT |?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z| ; CPCIDiskAndCD::AtapiSendCommand
IMPORT |?WaitOnBusy@CDisk@@QAAEH@Z| ; CDisk::WaitOnBusy
IMPORT |?GetPacketSize@CDisk@@QAAGXZ| ; CDisk::GetPacketSize
IMPORT |?IsDRQTypeIRQ@CDisk@@QAAHXZ| ; CDisk::IsDRQTypeIRQ
; File d:\wince500\platform\smdk2440\drivers\atapi\diskmain.h
00000 AREA |.text| { |?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z| } ; comdat associative
|$T32923| DCD |$L32922|
DCD 0x40008e01
; Function compile flags: /Ogsy
; File d:\wince500\platform\smdk2440\drivers\atapi\cdio.cpp
00000 AREA |.text| { |?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?AtapiSendCommand@CPCIDiskAndCD@@QAAHPAU_ATAPI_COMMAND_PACKET@@GH@Z| PROC ; CPCIDiskAndCD::AtapiSendCommand
; 352 : {
00000 |$L32922|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M32920|
00004 e1a06003 mov r6, r3
00008 e1a04002 mov r4, r2
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -