⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atapipci.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 COD
📖 第 1 页 / 共 5 页
字号:
  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 + -