📄 atapipci.cod
字号:
00414 e5930000 ldr r0, [r3]
00418 eb000000 bl VirtualFree
; 137 : m_pStartMemory = NULL;
0041c e59d300c ldr r3, [sp, #0xC]
00420 e2833c07 add r3, r3, #7, 24
00424 e2832048 add r2, r3, #0x48
00428 e3a03000 mov r3, #0
0042c e5823000 str r3, [r2]
; 138 :
; 139 : m_dwPhysCount = 0;
00430 e59d300c ldr r3, [sp, #0xC]
00434 e2833c07 add r3, r3, #7, 24
00438 e2832064 add r2, r3, #0x64
0043c e3a03000 mov r3, #0
00440 e5823000 str r3, [r2]
; 140 : m_dwSGCount = 0;
00444 e59d300c ldr r3, [sp, #0xC]
00448 e2833c07 add r3, r3, #7, 24
0044c e283205c add r2, r3, #0x5C
00450 e3a03000 mov r3, #0
00454 e5823000 str r3, [r2]
; 141 : }
00458 e28dd004 add sp, sp, #4
0045c e89d6000 ldmia sp, {sp, lr}
00460 e12fff1e bx lr
00464 |$M32450|
ENDP ; |?FreeDMABuffers@CPCIDisk@@QAAXXZ|, CPCIDisk::FreeDMABuffers
EXPORT |?CopyDiskInfoFromPort@CPCIDisk@@QAAXXZ| ; CPCIDisk::CopyDiskInfoFromPort
EXPORT |??_C@_1HC@NLHPELDJ@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@| [ DATA ] ; `string'
EXPORT |??_C@_1BA@LEPJIIOK@?$AAU?$AAn?$AAk?$AAn?$AAo?$AAw?$AAn?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@| [ DATA ] ; `string'
00020 AREA |.pdata|, PDATA
|$T32461| DCD |$L32460|
DCD 0x40004704
00000 AREA |.rdata| { |??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@| DCB "%"
DCB 0x0, "s", 0x0, ":", 0x0, " ", 0x0, "D", 0x0, "E", 0x0, "B"
DCB 0x0, "U", 0x0, "G", 0x0, "C", 0x0, "H", 0x0, "K", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, " ", 0x0, "i", 0x0, "n", 0x0, " ", 0x0, "f", 0x0, "i"
DCB 0x0, "l", 0x0, "e", 0x0, " ", 0x0, "%", 0x0, "s", 0x0, " "
DCB 0x0, "a", 0x0, "t", 0x0, " ", 0x0, "l", 0x0, "i", 0x0, "n"
DCB 0x0, "e", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, " ", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1BA@LEPJIIOK@?$AAU?$AAn?$AAk?$AAn?$AAo?$AAw?$AAn?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BA@LEPJIIOK@?$AAU?$AAn?$AAk?$AAn?$AAo?$AAw?$AAn?$AA?$AA@| DCB "U", 0x0
DCB "n", 0x0, "k", 0x0, "n", 0x0, "o", 0x0, "w", 0x0, "n", 0x0
DCB 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HC@NLHPELDJ@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HC@NLHPELDJ@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@| DCB "d"
DCB 0x0, ":", 0x0, "\\", 0x0, "w", 0x0, "i", 0x0, "n", 0x0, "c"
DCB 0x0, "e", 0x0, "5", 0x0, "0", 0x0, "0", 0x0, "\\", 0x0, "p"
DCB 0x0, "l", 0x0, "a", 0x0, "t", 0x0, "f", 0x0, "o", 0x0, "r"
DCB 0x0, "m", 0x0, "\\", 0x0, "s", 0x0, "m", 0x0, "d", 0x0, "k"
DCB 0x0, "2", 0x0, "4", 0x0, "4", 0x0, "0", 0x0, "\\", 0x0, "d"
DCB 0x0, "r", 0x0, "i", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "s"
DCB 0x0, "\\", 0x0, "a", 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i"
DCB 0x0, "\\", 0x0, "a", 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i"
DCB 0x0, "p", 0x0, "c", 0x0, "i", 0x0, ".", 0x0, "c", 0x0, "p"
DCB 0x0, "p", 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Odt
00464 AREA |.text|, CODE, ARM
00464 |?CopyDiskInfoFromPort@CPCIDisk@@QAAXXZ| PROC ; CPCIDisk::CopyDiskInfoFromPort
; 154 : {
00464 |$L32460|
00464 e1a0c00d mov r12, sp
00468 e92d0001 stmdb sp!, {r0}
0046c e92d5000 stmdb sp!, {r12, lr}
00470 e24dd008 sub sp, sp, #8
00474 |$M32458|
; 155 : ASSERT(m_pPort->m_dwRegBase != 0);
00474 e59d3010 ldr r3, [sp, #0x10]
00478 e283303c add r3, r3, #0x3C
0047c e5933000 ldr r3, [r3]
00480 e2833020 add r3, r3, #0x20
00484 e5933000 ldr r3, [r3]
00488 e3530000 cmp r3, #0
0048c 0a000002 beq |$L32454|
00490 e3a03001 mov r3, #1
00494 e58d3000 str r3, [sp]
00498 ea000007 b |$L32455|
0049c |$L32454|
0049c e3a0309b mov r3, #0x9B
004a0 e59f20d4 ldr r2, [pc, #0xD4]
004a4 e59f10cc ldr r1, [pc, #0xCC]
004a8 e59f00c4 ldr r0, [pc, #0xC4]
004ac eb000000 bl NKDbgPrintfW
004b0 e6000010 DCD 0xe6000010
004b4 e3a03000 mov r3, #0
004b8 e58d3000 str r3, [sp]
004bc |$L32455|
; 156 : m_pATAReg = (PBYTE)m_pPort->m_dwRegBase;
004bc e59d3010 ldr r3, [sp, #0x10]
004c0 e283303c add r3, r3, #0x3C
004c4 e5933000 ldr r3, [r3]
004c8 e2831020 add r1, r3, #0x20
004cc e59d3010 ldr r3, [sp, #0x10]
004d0 e2832030 add r2, r3, #0x30
004d4 e5913000 ldr r3, [r1]
004d8 e5823000 str r3, [r2]
; 157 : m_pATARegAlt = (PBYTE)m_pPort->m_dwRegAlt;
004dc e59d3010 ldr r3, [sp, #0x10]
004e0 e283303c add r3, r3, #0x3C
004e4 e5933000 ldr r3, [r3]
004e8 e2831024 add r1, r3, #0x24
004ec e59d3010 ldr r3, [sp, #0x10]
004f0 e2832034 add r2, r3, #0x34
004f4 e5913000 ldr r3, [r1]
004f8 e5823000 str r3, [r2]
; 158 :
; 159 : ASSERT(m_pPort->m_dwBMR != 0);
004fc e59d3010 ldr r3, [sp, #0x10]
00500 e283303c add r3, r3, #0x3C
00504 e5933000 ldr r3, [r3]
00508 e2833028 add r3, r3, #0x28
0050c e5933000 ldr r3, [r3]
00510 e3530000 cmp r3, #0
00514 0a000002 beq |$L32456|
00518 e3a03001 mov r3, #1
0051c e58d3004 str r3, [sp, #4]
00520 ea000007 b |$L32457|
00524 |$L32456|
00524 e3a0309f mov r3, #0x9F
00528 e59f204c ldr r2, [pc, #0x4C]
0052c e59f1044 ldr r1, [pc, #0x44]
00530 e59f003c ldr r0, [pc, #0x3C]
00534 eb000000 bl NKDbgPrintfW
00538 e6000010 DCD 0xe6000010
0053c e3a03000 mov r3, #0
00540 e58d3004 str r3, [sp, #4]
00544 |$L32457|
; 160 : m_pBMCommand = (LPBYTE)m_pPort->m_dwBMR;
00544 e59d3010 ldr r3, [sp, #0x10]
00548 e283303c add r3, r3, #0x3C
0054c e5933000 ldr r3, [r3]
00550 e2831028 add r1, r3, #0x28
00554 e59d3010 ldr r3, [sp, #0x10]
00558 e2833c07 add r3, r3, #7, 24
0055c e283206c add r2, r3, #0x6C
00560 e5913000 ldr r3, [r1]
00564 e5823000 str r3, [r2]
; 161 : }
00568 e28dd008 add sp, sp, #8
0056c e89d6000 ldmia sp, {sp, lr}
00570 e12fff1e bx lr
00574 |$L32462|
00574 00000000 DCD |??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@|
00578 00000000 DCD |??_C@_1BA@LEPJIIOK@?$AAU?$AAn?$AAk?$AAn?$AAo?$AAw?$AAn?$AA?$AA@|
0057c 00000000 DCD |??_C@_1HC@NLHPELDJ@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@|
00580 |$M32459|
ENDP ; |?CopyDiskInfoFromPort@CPCIDisk@@QAAXXZ|, CPCIDisk::CopyDiskInfoFromPort
EXPORT |?GetError@CDisk@@QAAEXZ| ; CDisk::GetError
EXPORT |?GetBaseStatus@CDisk@@QAAEXZ| ; CDisk::GetBaseStatus
IMPORT |WaitForSingleObject|
IMPORT |InterruptDone|
00028 AREA |.pdata|, PDATA
|$T32468| DCD |$L32467|
DCD 0x40004604
; Function compile flags: /Odt
00580 AREA |.text|, CODE, ARM
00580 |?WaitForInterrupt@CPCIDisk@@UAAHK@Z| PROC ; CPCIDisk::WaitForInterrupt
; 175 : {
00580 |$L32467|
00580 e1a0c00d mov r12, sp
00584 e92d0003 stmdb sp!, {r0, r1}
00588 e92d5010 stmdb sp!, {r4, r12, lr}
0058c e24dd01c sub sp, sp, #0x1C
00590 |$M32465|
; 176 : BYTE bStatus;
; 177 : BOOL fRet = TRUE;
00590 e3a03001 mov r3, #1
00594 e58d3008 str r3, [sp, #8]
; 178 : DWORD dwRet;
; 179 :
; 180 : // wait for interrupt
; 181 : dwRet = WaitForSingleObject(m_pPort->m_hIRQEvent, dwTimeOut);
00598 e59d102c ldr r1, [sp, #0x2C]
0059c e59d3028 ldr r3, [sp, #0x28]
005a0 e283303c add r3, r3, #0x3C
005a4 e5933000 ldr r3, [r3]
005a8 e2833030 add r3, r3, #0x30
005ac e5930000 ldr r0, [r3]
005b0 eb000000 bl WaitForSingleObject
005b4 e58d0010 str r0, [sp, #0x10]
005b8 e59d3010 ldr r3, [sp, #0x10]
005bc e58d3000 str r3, [sp]
; 182 : if (dwRet == WAIT_TIMEOUT) {
005c0 e59d2000 ldr r2, [sp]
005c4 e3a03c01 mov r3, #1, 24
005c8 e3833002 orr r3, r3, #2
005cc e1520003 cmp r2, r3
005d0 1a000002 bne |$L32080|
; 183 : fRet = FALSE;
005d4 e3a03000 mov r3, #0
005d8 e58d3008 str r3, [sp, #8]
; 184 : }
; 185 : else {
005dc ea000012 b |$L32081|
005e0 |$L32080|
; 186 : if (dwRet != WAIT_OBJECT_0) {
005e0 e59d3000 ldr r3, [sp]
005e4 e3530000 cmp r3, #0
005e8 0a00000f beq |$L32082|
; 187 : if (!WaitForDisc(WAIT_TYPE_DRQ, dwTimeOut, 10)) {
005ec e3a0300a mov r3, #0xA
005f0 e59d202c ldr r2, [sp, #0x2C]
005f4 e3a01004 mov r1, #4
005f8 e59d0028 ldr r0, [sp, #0x28]
005fc e5900000 ldr r0, [r0]
00600 e280e01c add lr, r0, #0x1C
00604 e59d0028 ldr r0, [sp, #0x28]
00608 e59e4000 ldr r4, [lr]
0060c e1a0e00f mov lr, pc
00610 e12fff14 bx r4
00614 e58d0014 str r0, [sp, #0x14]
00618 e59d3014 ldr r3, [sp, #0x14]
0061c e3530000 cmp r3, #0
00620 1a000001 bne |$L32083|
; 188 : fRet = FALSE;
00624 e3a03000 mov r3, #0
00628 e58d3008 str r3, [sp, #8]
0062c |$L32083|
0062c |$L32082|
0062c |$L32081|
; 189 : }
; 190 : }
; 191 : }
; 192 :
; 193 : // read status; acknowledge interrupt
; 194 : bStatus = GetBaseStatus();
0062c e59d0028 ldr r0, [sp, #0x28]
00630 eb000000 bl |?GetBaseStatus@CDisk@@QAAEXZ|
00634 e5cd0018 strb r0, [sp, #0x18]
00638 e5dd3018 ldrb r3, [sp, #0x18]
0063c e5cd3004 strb r3, [sp, #4]
; 195 : if (bStatus & ATA_STATUS_ERROR) {
00640 e5dd3004 ldrb r3, [sp, #4]
00644 e3130001 tst r3, #1
00648 0a000006 beq |$L32084|
; 196 : bStatus = GetError();
0064c e59d0028 ldr r0, [sp, #0x28]
00650 eb000000 bl |?GetError@CDisk@@QAAEXZ|
00654 e5cd0019 strb r0, [sp, #0x19]
00658 e5dd3019 ldrb r3, [sp, #0x19]
0065c e5cd3004 strb r3, [sp, #4]
; 197 : fRet = FALSE;
00660 e3a03000 mov r3, #0
00664 e58d3008 str r3, [sp, #8]
00668 |$L32084|
; 198 : }
; 199 :
; 200 : // signal interrupt done
; 201 : InterruptDone(m_pPort->m_dwSysIntr);
00668 e59d3028 ldr r3, [sp, #0x28]
0066c e283303c add r3, r3, #0x3C
00670 e5933000 ldr r3, [r3]
00674 e283303c add r3, r3, #0x3C
00678 e5930000 ldr r0, [r3]
0067c eb000000 bl InterruptDone
; 202 :
; 203 : return fRet;
00680 e59d3008 ldr r3, [sp, #8]
00684 e58d300c str r3, [sp, #0xC]
00688 e59d000c ldr r0, [sp, #0xC]
; 204 : }
0068c e28dd01c add sp, sp, #0x1C
00690 e89d6010 ldmia sp, {r4, sp, lr}
00694 e12fff1e bx lr
00698 |$M32466|
ENDP ; |?WaitForInterrupt@CPCIDisk@@UAAHK@Z|, CPCIDisk::WaitForInterrupt
IMPORT |READ_PORT_UCHAR|
; File d:\wince500\platform\smdk2440\drivers\atapi\diskmain.h
00000 AREA |.text| { |?GetError@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$?GetError@CDisk@@QAAEXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?GetError@CDisk@@QAAEXZ| } ; comdat associative
|$T32474| DCD |$L32473|
DCD 0x40001304
; Function compile flags: /Odt
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -