📄 atapipci.cod
字号:
00000 AREA |.text| { |?GetError@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?GetError@CDisk@@QAAEXZ| PROC ; CDisk::GetError
; 212 : inline BYTE GetError() {
00000 |$L32473|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd008 sub sp, sp, #8
00010 |$M32471|
; 213 : return (BYTE) ATA_READ_BYTE(m_pATAReg + m_dwFeatureErrorOffset);
00010 e59d3010 ldr r3, [sp, #0x10]
00014 e2832030 add r2, r3, #0x30
00018 e59d3010 ldr r3, [sp, #0x10]
0001c e283300c add r3, r3, #0xC
00020 e5922000 ldr r2, [r2]
00024 e5933000 ldr r3, [r3]
00028 e0820003 add r0, r2, r3
0002c eb000000 bl READ_PORT_UCHAR
00030 e5cd0004 strb r0, [sp, #4]
00034 e5dd3004 ldrb r3, [sp, #4]
00038 e5cd3000 strb r3, [sp]
0003c e5dd0000 ldrb r0, [sp]
; 214 : }
00040 e28dd008 add sp, sp, #8
00044 e89d6000 ldmia sp, {sp, lr}
00048 e12fff1e bx lr
0004c |$M32472|
ENDP ; |?GetError@CDisk@@QAAEXZ|, CDisk::GetError
IMPORT |CeLogData|
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
|$T32482| DCD |$L32481|
DCD 0x40002804
; Function compile flags: /Odt
00000 AREA |.text| { |?GetBaseStatus@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?GetBaseStatus@CDisk@@QAAEXZ| PROC ; CDisk::GetBaseStatus
; 257 : inline BYTE GetBaseStatus() {
00000 |$L32481|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd01c sub sp, sp, #0x1C
00010 |$M32479|
; 258 : BYTE bStatus = ATA_READ_BYTE(m_pATAReg + m_dwCommandStatusOffset);
00010 e59d3024 ldr r3, [sp, #0x24]
00014 e2832030 add r2, r3, #0x30
00018 e59d3024 ldr r3, [sp, #0x24]
0001c e2833024 add r3, r3, #0x24
00020 e5922000 ldr r2, [r2]
00024 e5933000 ldr r3, [r3]
00028 e0820003 add r0, r2, r3
0002c eb000000 bl READ_PORT_UCHAR
00030 e5cd0018 strb r0, [sp, #0x18]
00034 e5dd3018 ldrb r3, [sp, #0x18]
00038 e5cd3010 strb r3, [sp, #0x10]
; 259 : if (ZONE_CELOG) CeLogData(TRUE, CELID_ATAPI_BASESTATUS, &bStatus, sizeof(bStatus), 0, CELZONE_ALWAYSON, 0, FALSE);
0003c e59f3058 ldr r3, [pc, #0x58]
00040 e5933440 ldr r3, [r3, #0x440]
00044 e3130902 tst r3, #2, 18
00048 0a00000d beq |$L31625|
0004c e3a03000 mov r3, #0
00050 e58d300c str r3, [sp, #0xC]
00054 e3a03000 mov r3, #0
00058 e58d3008 str r3, [sp, #8]
0005c e3a03101 mov r3, #1, 2
00060 e58d3004 str r3, [sp, #4]
00064 e3a03000 mov r3, #0
00068 e58d3000 str r3, [sp]
0006c e3a03001 mov r3, #1
00070 e28d2010 add r2, sp, #0x10
00074 e3a01d86 mov r1, #0x86, 26
00078 e3811002 orr r1, r1, #2
0007c e3a00001 mov r0, #1
00080 eb000000 bl CeLogData
00084 |$L31625|
; 260 : return bStatus;
00084 e5dd3010 ldrb r3, [sp, #0x10]
00088 e5cd3014 strb r3, [sp, #0x14]
0008c e5dd0014 ldrb r0, [sp, #0x14]
; 261 : }
00090 e28dd01c add sp, sp, #0x1C
00094 e89d6000 ldmia sp, {sp, lr}
00098 e12fff1e bx lr
0009c |$L32484|
0009c 00000000 DCD |dpCurSettings|
000a0 |$M32480|
ENDP ; |?GetBaseStatus@CDisk@@QAAEXZ|, CDisk::GetBaseStatus
00030 AREA |.pdata|, PDATA
|$T32490| DCD |$L32489|
DCD 0x40000d03
; Function compile flags: /Odt
; File d:\wince500\platform\smdk2440\drivers\atapi\atapipci.cpp
00698 AREA |.text|, CODE, ARM
00698 |?EnableInterrupt@CPCIDisk@@UAAXXZ| PROC ; CPCIDisk::EnableInterrupt
; 217 : {
00698 |$L32489|
00698 e1a0c00d mov r12, sp
0069c e92d0001 stmdb sp!, {r0}
006a0 e92d5000 stmdb sp!, {r12, lr}
006a4 |$M32487|
; 218 : GetBaseStatus(); // acknowledge interrupt, if pending
006a4 e59d0008 ldr r0, [sp, #8]
006a8 eb000000 bl |?GetBaseStatus@CDisk@@QAAEXZ|
; 219 :
; 220 : // signal interrupt done
; 221 : InterruptDone(m_pPort->m_dwSysIntr);
006ac e59d3008 ldr r3, [sp, #8]
006b0 e283303c add r3, r3, #0x3C
006b4 e5933000 ldr r3, [r3]
006b8 e283303c add r3, r3, #0x3C
006bc e5930000 ldr r0, [r3]
006c0 eb000000 bl InterruptDone
; 222 : }
006c4 e89d6000 ldmia sp, {sp, lr}
006c8 e12fff1e bx lr
006cc |$M32488|
ENDP ; |?EnableInterrupt@CPCIDisk@@UAAXXZ|, CPCIDisk::EnableInterrupt
00038 AREA |.pdata|, PDATA
|$T32495| DCD |$L32494|
DCD 0x40004103
; Function compile flags: /Odt
006cc AREA |.text|, CODE, ARM
006cc |?ConfigureRegisterBlock@CPCIDisk@@UAAXK@Z| PROC ; CPCIDisk::ConfigureRegisterBlock
; 237 : {
006cc |$L32494|
006cc e1a0c00d mov r12, sp
006d0 e92d0003 stmdb sp!, {r0, r1}
006d4 e92d5000 stmdb sp!, {r12, lr}
006d8 |$M32492|
; 238 : m_dwStride = dwStride;
006d8 e59d3008 ldr r3, [sp, #8]
006dc e2832004 add r2, r3, #4
006e0 e59d300c ldr r3, [sp, #0xC]
006e4 e5823000 str r3, [r2]
; 239 : m_dwDataDrvCtrlOffset = ATA_REG_DATA * dwStride;
006e8 e59d3008 ldr r3, [sp, #8]
006ec e2832008 add r2, r3, #8
006f0 e3a03000 mov r3, #0
006f4 e5823000 str r3, [r2]
; 240 : m_dwFeatureErrorOffset = ATA_REG_FEATURE * dwStride;
006f8 e59d3008 ldr r3, [sp, #8]
006fc e283200c add r2, r3, #0xC
00700 e59d300c ldr r3, [sp, #0xC]
00704 e5823000 str r3, [r2]
; 241 : m_dwSectCntReasonOffset = ATA_REG_SECT_CNT * dwStride;
00708 e59d100c ldr r1, [sp, #0xC]
0070c e3a03002 mov r3, #2
00710 e0020391 mul r2, r1, r3
00714 e59d3008 ldr r3, [sp, #8]
00718 e2833010 add r3, r3, #0x10
0071c e5832000 str r2, [r3]
; 242 : m_dwSectNumOffset = ATA_REG_SECT_NUM * dwStride;
00720 e59d100c ldr r1, [sp, #0xC]
00724 e3a03003 mov r3, #3
00728 e0020391 mul r2, r1, r3
0072c e59d3008 ldr r3, [sp, #8]
00730 e2833014 add r3, r3, #0x14
00734 e5832000 str r2, [r3]
; 243 : m_dwDrvHeadOffset = ATA_REG_DRV_HEAD * dwStride;
00738 e59d100c ldr r1, [sp, #0xC]
0073c e3a03006 mov r3, #6
00740 e0020391 mul r2, r1, r3
00744 e59d3008 ldr r3, [sp, #8]
00748 e2833020 add r3, r3, #0x20
0074c e5832000 str r2, [r3]
; 244 : m_dwCommandStatusOffset = ATA_REG_COMMAND * dwStride;
00750 e59d100c ldr r1, [sp, #0xC]
00754 e3a03007 mov r3, #7
00758 e0020391 mul r2, r1, r3
0075c e59d3008 ldr r3, [sp, #8]
00760 e2833024 add r3, r3, #0x24
00764 e5832000 str r2, [r3]
; 245 : m_dwByteCountLowOffset = ATA_REG_BYTECOUNTLOW * dwStride;
00768 e59d100c ldr r1, [sp, #0xC]
0076c e3a03004 mov r3, #4
00770 e0020391 mul r2, r1, r3
00774 e59d3008 ldr r3, [sp, #8]
00778 e2833018 add r3, r3, #0x18
0077c e5832000 str r2, [r3]
; 246 : m_dwByteCountHighOffset = ATA_REG_BYTECOUNTHIGH * dwStride;
00780 e59d100c ldr r1, [sp, #0xC]
00784 e3a03005 mov r3, #5
00788 e0020391 mul r2, r1, r3
0078c e59d3008 ldr r3, [sp, #8]
00790 e283301c add r3, r3, #0x1C
00794 e5832000 str r2, [r3]
; 247 :
; 248 : // PCI ATA implementations don't assign I/O resources for the first four
; 249 : // bytes, as they are unused
; 250 :
; 251 : //m_dwAltStatusOffset = ATA_REG_ALT_STATUS * dwStride;
; 252 : //m_dwAltDrvCtrl = ATA_REG_DRV_CTRL * dwStride;
; 253 : //LQM 2006-8-14
; 254 : m_dwAltStatusOffset = ATA_REG_ALT_STATUS_CS1 * dwStride;
00798 e59d100c ldr r1, [sp, #0xC]
0079c e3a03006 mov r3, #6
007a0 e0020391 mul r2, r1, r3
007a4 e59d3008 ldr r3, [sp, #8]
007a8 e2833028 add r3, r3, #0x28
007ac e5832000 str r2, [r3]
; 255 : m_dwAltDrvCtrl = ATA_REG_DRV_CTRL_CS1 * dwStride;
007b0 e59d100c ldr r1, [sp, #0xC]
007b4 e3a03006 mov r3, #6
007b8 e0020391 mul r2, r1, r3
007bc e59d3008 ldr r3, [sp, #8]
007c0 e283302c add r3, r3, #0x2C
007c4 e5832000 str r2, [r3]
; 256 : }
007c8 e89d6000 ldmia sp, {sp, lr}
007cc e12fff1e bx lr
007d0 |$M32493|
ENDP ; |?ConfigureRegisterBlock@CPCIDisk@@UAAXK@Z|, CPCIDisk::ConfigureRegisterBlock
EXPORT |??_C@_1HK@KNLNCEBN@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt@| [ DATA ] ; `string'
IMPORT |VirtualAlloc|
IMPORT |?Init@CDisk@@UAAHPAUHKEY__@@@Z| ; CDisk::Init
IMPORT |?IsCDRomDevice@CDisk@@QAAHXZ| ; CDisk::IsCDRomDevice
00040 AREA |.pdata|, PDATA
|$T32505| DCD |$L32504|
DCD 0x40005a04
00000 AREA |.rdata| { |??_C@_1HK@KNLNCEBN@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HK@KNLNCEBN@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt@| DCB "A"
DCB 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
DCB 0x0, "P", 0x0, "C", 0x0, "I", 0x0, "D", 0x0, "i", 0x0, "s"
DCB 0x0, "k", 0x0, ":", 0x0, ":", 0x0, "I", 0x0, "n", 0x0, "i"
DCB 0x0, "t", 0x0, ">", 0x0, " ", 0x0, "F", 0x0, "a", 0x0, "i"
DCB 0x0, "l", 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o"
DCB 0x0, " ", 0x0, "c", 0x0, "o", 0x0, "n", 0x0, "f", 0x0, "i"
DCB 0x0, "g", 0x0, "u", 0x0, "r", 0x0, "e", 0x0, " ", 0x0, "p"
DCB 0x0, "o", 0x0, "r", 0x0, "t", 0x0, ";", 0x0, " ", 0x0, "d"
DCB 0x0, "e", 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, "("
DCB 0x0, "%", 0x0, "u", 0x0, ")", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
; Function compile flags: /Odt
007d0 AREA |.text|, CODE, ARM
007d0 |?Init@CPCIDisk@@UAAHPAUHKEY__@@@Z| PROC ; CPCIDisk::Init
; 270 : {
007d0 |$L32504|
007d0 e1a0c00d mov r12, sp
007d4 e92d0003 stmdb sp!, {r0, r1}
007d8 e92d5000 stmdb sp!, {r12, lr}
007dc e24dd020 sub sp, sp, #0x20
007e0 |$M32502|
; 271 : BOOL bRet = FALSE;
007e0 e3a03000 mov r3, #0
007e4 e58d3000 str r3, [sp]
; 272 :
; 273 : m_f16Bit = TRUE; // PCI is 16-bit
007e8 e59d3028 ldr r3, [sp, #0x28]
007ec e2832038 add r2, r3, #0x38
007f0 e3a03001 mov r3, #1
007f4 e5823000 str r3, [r2]
; 274 :
; 275 : // configure port
; 276 : if (!ConfigPort()) {
007f8 e59d3028 ldr r3, [sp, #0x28]
007fc e5933000 ldr r3, [r3]
00800 e2833054 add r3, r3, #0x54
00804 e59d0028 ldr r0, [sp, #0x28]
00808 e5933000 ldr r3, [r3]
0080c e1a0e00f mov lr, pc
00810 e12fff13 bx r3
00814 e58d0008 str r0, [sp, #8]
00818 e59d3008 ldr r3, [sp, #8]
0081c e3530000 cmp r3, #0
00820 1a00000f bne |$L32097|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -