📄 atapipci.cod
字号:
00000 AREA |.pdata$$?ReleaseCS@CPCIDisk@@UAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?ReleaseCS@CPCIDisk@@UAAXXZ| } ; comdat associative
|$T32429| DCD |$L32428|
DCD 0x40000903
; Function compile flags: /Odt
00000 AREA |.text| { |?ReleaseCS@CPCIDisk@@UAAXXZ| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |?ReleaseCS@CPCIDisk@@UAAXXZ| PROC ; CPCIDisk::ReleaseCS
; 72 : inline virtual void CPCIDisk::ReleaseCS() {
00000 |$L32428|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c |$M32426|
; 73 : m_pPort->ReleaseCS();
0000c e59d3008 ldr r3, [sp, #8]
00010 e283303c add r3, r3, #0x3C
00014 e5930000 ldr r0, [r3]
00018 eb000000 bl |?ReleaseCS@CPort@@QAAXXZ|
; 74 : }
0001c e89d6000 ldmia sp, {sp, lr}
00020 e12fff1e bx lr
00024 |$M32427|
ENDP ; |?ReleaseCS@CPCIDisk@@UAAXXZ|, CPCIDisk::ReleaseCS
EXPORT |??1CPCIDisk@@UAA@XZ| ; CPCIDisk::~CPCIDisk
IMPORT |??3@YAXPAX@Z| ; operator delete
00000 AREA |.text| { |??_GCPCIDisk@@UAAPAXI@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 AREA |.pdata$$??_GCPCIDisk@@UAAPAXI@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |??_GCPCIDisk@@UAAPAXI@Z| } ; comdat associative
|$T32437| DCD |$L32436|
DCD 0x40001104
; Function compile flags: /Odt
00000 AREA |.text| { |??_GCPCIDisk@@UAAPAXI@Z| }, CODE, ARM, SELECTION=2 ; comdat any
00000 |??_GCPCIDisk@@UAAPAXI@Z| PROC ; CPCIDisk::`scalar deleting destructor'
00000 |$L32436|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd004 sub sp, sp, #4
00010 |$M32434|
00010 e59d000c ldr r0, [sp, #0xC]
00014 eb000000 bl |??1CPCIDisk@@UAA@XZ|
00018 e59d3010 ldr r3, [sp, #0x10]
0001c e3130001 tst r3, #1
00020 0a000001 beq |$L32037|
00024 e59d000c ldr r0, [sp, #0xC]
00028 eb000000 bl |??3@YAXPAX@Z|
0002c |$L32037|
0002c e59d300c ldr r3, [sp, #0xC]
00030 e58d3000 str r3, [sp]
00034 e59d0000 ldr r0, [sp]
00038 e28dd004 add sp, sp, #4
0003c e89d6000 ldmia sp, {sp, lr}
00040 e12fff1e bx lr
00044 |$M32435|
ENDP ; |??_GCPCIDisk@@UAAPAXI@Z|, CPCIDisk::`scalar deleting destructor'
EXPORT |?FreeDMABuffers@CPCIDisk@@QAAXXZ| ; CPCIDisk::FreeDMABuffers
EXPORT |??_C@_1FM@JMDIDHPB@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AA?$HO?$AAC?$AAP?$AAC@| [ DATA ] ; `string'
IMPORT |??1CDisk@@UAA@XZ| ; CDisk::~CDisk
IMPORT |InterlockedDecrement|
00010 AREA |.pdata|, PDATA
|$T32446| DCD |$L32445|
DCD 0x40002504
; File d:\wince500\platform\smdk2440\drivers\atapi\atapipci.cpp
00000 AREA |.rdata| { |??_C@_1FM@JMDIDHPB@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AA?$HO?$AAC?$AAP?$AAC@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FM@JMDIDHPB@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AA?$HO?$AAC?$AAP?$AAC@| 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, "~", 0x0, "C", 0x0, "P"
DCB 0x0, "C", 0x0, "I", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k"
DCB 0x0, ">", 0x0, " ", 0x0, "d", 0x0, "e", 0x0, "v", 0x0, "i"
DCB 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "c", 0x0, "o", 0x0, "u"
DCB 0x0, "n", 0x0, "t", 0x0, "(", 0x0, "%", 0x0, "d", 0x0, ")"
DCB 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Odt
001dc AREA |.text|, CODE, ARM
001dc |??1CPCIDisk@@UAA@XZ| PROC ; CPCIDisk::~CPCIDisk
; 89 : {
001dc |$L32445|
001dc e1a0c00d mov r12, sp
001e0 e92d0001 stmdb sp!, {r0}
001e4 e92d5000 stmdb sp!, {r12, lr}
001e8 e24dd004 sub sp, sp, #4
001ec |$M32443|
001ec e59f2078 ldr r2, [pc, #0x78]
001f0 e59d300c ldr r3, [sp, #0xC]
001f4 e5832000 str r2, [r3]
; 90 : FreeDMABuffers();
001f8 e59d000c ldr r0, [sp, #0xC]
001fc eb000000 bl |?FreeDMABuffers@CPCIDisk@@QAAXXZ|
; 91 :
; 92 : InterlockedDecrement(&m_lDeviceCount);
00200 e59f005c ldr r0, [pc, #0x5C]
00204 eb000000 bl InterlockedDecrement
; 93 :
; 94 : DEBUGMSG(ZONE_INIT|ZONE_PCI, (_T(
; 95 : "Atapi!CPCIDisk::~CPCIDisk> device count(%d)\r\n"
; 96 : ), m_lDeviceCount));
00208 e59f3058 ldr r3, [pc, #0x58]
0020c e5933440 ldr r3, [r3, #0x440]
00210 e2032001 and r2, r3, #1
00214 e59f304c ldr r3, [pc, #0x4C]
00218 e5933440 ldr r3, [r3, #0x440]
0021c e2033020 and r3, r3, #0x20
00220 e1923003 orrs r3, r2, r3
00224 0a000006 beq |$L32441|
00228 e59f3034 ldr r3, [pc, #0x34]
0022c e5931000 ldr r1, [r3]
00230 e59f0028 ldr r0, [pc, #0x28]
00234 eb000000 bl NKDbgPrintfW
00238 e3a03001 mov r3, #1
0023c e58d3000 str r3, [sp]
00240 ea000001 b |$L32442|
00244 |$L32441|
00244 e3a03000 mov r3, #0
00248 e58d3000 str r3, [sp]
0024c |$L32442|
; 97 : }
0024c e59d000c ldr r0, [sp, #0xC]
00250 eb000000 bl |??1CDisk@@UAA@XZ|
00254 e28dd004 add sp, sp, #4
00258 e89d6000 ldmia sp, {sp, lr}
0025c e12fff1e bx lr
00260 |$L32447|
00260 00000000 DCD |??_C@_1FM@JMDIDHPB@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AA?$HO?$AAC?$AAP?$AAC@|
00264 00000000 DCD |?m_lDeviceCount@CPCIDisk@@2JA|
00268 00000000 DCD |dpCurSettings|
0026c 00000000 DCD |??_7CPCIDisk@@6B@|
00270 |$M32444|
ENDP ; |??1CPCIDisk@@UAA@XZ|, CPCIDisk::~CPCIDisk
IMPORT |VirtualFree|
IMPORT |FreePhysMem|
00018 AREA |.pdata|, PDATA
|$T32452| DCD |$L32451|
DCD 0x40007d04
; Function compile flags: /Odt
00270 AREA |.text|, CODE, ARM
00270 |?FreeDMABuffers@CPCIDisk@@QAAXXZ| PROC ; CPCIDisk::FreeDMABuffers
; 110 : {
00270 |$L32451|
00270 e1a0c00d mov r12, sp
00274 e92d0001 stmdb sp!, {r0}
00278 e92d5000 stmdb sp!, {r12, lr}
0027c e24dd004 sub sp, sp, #4
00280 |$M32449|
; 111 : if (m_pPRD) {
00280 e59d300c ldr r3, [sp, #0xC]
00284 e2833c07 add r3, r3, #7, 24
00288 e283304c add r3, r3, #0x4C
0028c e5933000 ldr r3, [r3]
00290 e3530000 cmp r3, #0
00294 0a00000d beq |$L32046|
; 112 : FreePhysMem(m_pPRD);
00298 e59d300c ldr r3, [sp, #0xC]
0029c e2833c07 add r3, r3, #7, 24
002a0 e283304c add r3, r3, #0x4C
002a4 e5930000 ldr r0, [r3]
002a8 eb000000 bl FreePhysMem
; 113 : m_pPRDPhys = NULL;
002ac e59d300c ldr r3, [sp, #0xC]
002b0 e2832e76 add r2, r3, #0x76, 28
002b4 e3a03000 mov r3, #0
002b8 e5823000 str r3, [r2]
; 114 : m_pPRD = NULL;
002bc e59d300c ldr r3, [sp, #0xC]
002c0 e2833c07 add r3, r3, #7, 24
002c4 e283204c add r2, r3, #0x4C
002c8 e3a03000 mov r3, #0
002cc e5823000 str r3, [r2]
002d0 |$L32046|
; 115 : }
; 116 :
; 117 : if (m_pPhysList) {
002d0 e59d300c ldr r3, [sp, #0xC]
002d4 e2833e75 add r3, r3, #0x75, 28
002d8 e5933000 ldr r3, [r3]
002dc e3530000 cmp r3, #0
002e0 0a00001e beq |$L32047|
; 118 : // free the fixed pages; the variable pages should already be free
; 119 : for (DWORD i = 0; i < MIN_PHYS_PAGES; i++) {
002e4 e3a03000 mov r3, #0
002e8 e58d3000 str r3, [sp]
002ec ea000002 b |$L32049|
002f0 |$L32050|
002f0 e59d3000 ldr r3, [sp]
002f4 e2833001 add r3, r3, #1
002f8 e58d3000 str r3, [sp]
002fc |$L32049|
002fc e59d3000 ldr r3, [sp]
00300 e3530004 cmp r3, #4
00304 2a000009 bcs |$L32051|
; 120 : FreePhysMem(m_pPhysList[i].pVirtualAddress);
00308 e59d300c ldr r3, [sp, #0xC]
0030c e2830e75 add r0, r3, #0x75, 28
00310 e59d1000 ldr r1, [sp]
00314 e3a03008 mov r3, #8
00318 e0020391 mul r2, r1, r3
0031c e5903000 ldr r3, [r0]
00320 e0833002 add r3, r3, r2
00324 e5930000 ldr r0, [r3]
00328 eb000000 bl FreePhysMem
; 121 : }
0032c eaffffef b |$L32050|
00330 |$L32051|
; 122 : VirtualFree(m_pPhysList, UserKInfo[KINX_PAGESIZE], MEM_DECOMMIT);
00330 e3a02901 mov r2, #1, 18
00334 e3a03004 mov r3, #4
00338 e2433c35 sub r3, r3, #0x35, 24
0033c e5931000 ldr r1, [r3]
00340 e59d300c ldr r3, [sp, #0xC]
00344 e2833e75 add r3, r3, #0x75, 28
00348 e5930000 ldr r0, [r3]
0034c eb000000 bl VirtualFree
; 123 : m_pPhysList = NULL;
00350 e59d300c ldr r3, [sp, #0xC]
00354 e2832e75 add r2, r3, #0x75, 28
00358 e3a03000 mov r3, #0
0035c e5823000 str r3, [r2]
00360 |$L32047|
; 124 : }
; 125 :
; 126 : if (m_pSGCopy) {
00360 e59d300c ldr r3, [sp, #0xC]
00364 e2833c07 add r3, r3, #7, 24
00368 e2833054 add r3, r3, #0x54
0036c e5933000 ldr r3, [r3]
00370 e3530000 cmp r3, #0
00374 0a00000d beq |$L32054|
; 127 : VirtualFree(m_pSGCopy, UserKInfo[KINX_PAGESIZE], MEM_DECOMMIT);
00378 e3a02901 mov r2, #1, 18
0037c e3a03004 mov r3, #4
00380 e2433c35 sub r3, r3, #0x35, 24
00384 e5931000 ldr r1, [r3]
00388 e59d300c ldr r3, [sp, #0xC]
0038c e2833c07 add r3, r3, #7, 24
00390 e2833054 add r3, r3, #0x54
00394 e5930000 ldr r0, [r3]
00398 eb000000 bl VirtualFree
; 128 : m_pSGCopy = NULL;
0039c e59d300c ldr r3, [sp, #0xC]
003a0 e2833c07 add r3, r3, #7, 24
003a4 e2832054 add r2, r3, #0x54
003a8 e3a03000 mov r3, #0
003ac e5823000 str r3, [r2]
003b0 |$L32054|
; 129 : }
; 130 :
; 131 : if (m_pPFNs) {
003b0 e59d300c ldr r3, [sp, #0xC]
003b4 e2833c07 add r3, r3, #7, 24
003b8 e2833058 add r3, r3, #0x58
003bc e5933000 ldr r3, [r3]
003c0 e3530000 cmp r3, #0
003c4 0a00000d beq |$L32057|
; 132 : VirtualFree(m_pPFNs, UserKInfo[KINX_PAGESIZE], MEM_DECOMMIT);
003c8 e3a02901 mov r2, #1, 18
003cc e3a03004 mov r3, #4
003d0 e2433c35 sub r3, r3, #0x35, 24
003d4 e5931000 ldr r1, [r3]
003d8 e59d300c ldr r3, [sp, #0xC]
003dc e2833c07 add r3, r3, #7, 24
003e0 e2833058 add r3, r3, #0x58
003e4 e5930000 ldr r0, [r3]
003e8 eb000000 bl VirtualFree
; 133 : m_pSGCopy = NULL;
003ec e59d300c ldr r3, [sp, #0xC]
003f0 e2833c07 add r3, r3, #7, 24
003f4 e2832054 add r2, r3, #0x54
003f8 e3a03000 mov r3, #0
003fc e5823000 str r3, [r2]
00400 |$L32057|
; 134 : }
; 135 :
; 136 : VirtualFree(m_pStartMemory, 0, MEM_RELEASE);
00400 e3a02902 mov r2, #2, 18
00404 e3a01000 mov r1, #0
00408 e59d300c ldr r3, [sp, #0xC]
0040c e2833c07 add r3, r3, #7, 24
00410 e2833048 add r3, r3, #0x48
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -