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

📄 atapipci.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 277  :         DEBUGMSG(ZONE_INIT, (_T(
; 278  :             "Atapi!CPCIDisk::Init> Failed to configure port; device(%u)\r\n"
; 279  :             ), m_dwDeviceId));

  00824	e59f3108	 ldr         r3, [pc, #0x108]
  00828	e5933440	 ldr         r3, [r3, #0x440]
  0082c	e3130001	 tst         r3, #1
  00830	0a000008	 beq         |$L32497|
  00834	e59d3028	 ldr         r3, [sp, #0x28]
  00838	e2833b01	 add         r3, r3, #1, 22
  0083c	e2833088	 add         r3, r3, #0x88
  00840	e5931000	 ldr         r1, [r3]
  00844	e59f00e4	 ldr         r0, [pc, #0xE4]
  00848	eb000000	 bl          NKDbgPrintfW
  0084c	e3a03001	 mov         r3, #1
  00850	e58d300c	 str         r3, [sp, #0xC]
  00854	ea000001	 b           |$L32498|
  00858		 |$L32497|
  00858	e3a03000	 mov         r3, #0
  0085c	e58d300c	 str         r3, [sp, #0xC]
  00860		 |$L32498|

; 280  :         goto exit;

  00860	ea00002a	 b           |$L32101|
  00864		 |$L32097|

; 281  :     }
; 282  : 
; 283  :     // assign the appropriate folder name
; 284  :     m_szDiskName = (IsCDRomDevice() ? g_szPCICDRomDisk : g_szPCIHardDisk);

  00864	e59d0028	 ldr         r0, [sp, #0x28]
  00868	eb000000	 bl          |?IsCDRomDevice@CDisk@@QAAHXZ|
  0086c	e58d0010	 str         r0, [sp, #0x10]
  00870	e59d3010	 ldr         r3, [sp, #0x10]
  00874	e3530000	 cmp         r3, #0
  00878	0a000003	 beq         |$L32499|
  0087c	e59f30a8	 ldr         r3, [pc, #0xA8]
  00880	e5933000	 ldr         r3, [r3]
  00884	e58d3014	 str         r3, [sp, #0x14]
  00888	ea000002	 b           |$L32500|
  0088c		 |$L32499|
  0088c	e59f3094	 ldr         r3, [pc, #0x94]
  00890	e5933000	 ldr         r3, [r3]
  00894	e58d3014	 str         r3, [sp, #0x14]
  00898		 |$L32500|
  00898	e59d3028	 ldr         r3, [sp, #0x28]
  0089c	e2833c06	 add         r3, r3, #6, 24
  008a0	e28320b8	 add         r2, r3, #0xB8
  008a4	e59d3014	 ldr         r3, [sp, #0x14]
  008a8	e5823000	 str         r3, [r2]

; 285  : 
; 286  :     // reserve memory for DMA buffers
; 287  :     m_pStartMemory = (LPBYTE)VirtualAlloc(NULL, 0x10000, MEM_RESERVE, PAGE_READWRITE);

  008ac	e3a03004	 mov         r3, #4
  008b0	e3a02a02	 mov         r2, #2, 20
  008b4	e3a01801	 mov         r1, #1, 16
  008b8	e3a00000	 mov         r0, #0
  008bc	eb000000	 bl          VirtualAlloc
  008c0	e58d0018	 str         r0, [sp, #0x18]
  008c4	e59d3028	 ldr         r3, [sp, #0x28]
  008c8	e2833c07	 add         r3, r3, #7, 24
  008cc	e2832048	 add         r2, r3, #0x48
  008d0	e59d3018	 ldr         r3, [sp, #0x18]
  008d4	e5823000	 str         r3, [r2]

; 288  :     if (!m_pStartMemory) {

  008d8	e59d3028	 ldr         r3, [sp, #0x28]
  008dc	e2833c07	 add         r3, r3, #7, 24
  008e0	e2833048	 add         r3, r3, #0x48
  008e4	e5933000	 ldr         r3, [r3]
  008e8	e3530000	 cmp         r3, #0
  008ec	1a000001	 bne         |$L32103|

; 289  :         bRet = FALSE;

  008f0	e3a03000	 mov         r3, #0
  008f4	e58d3000	 str         r3, [sp]
  008f8		 |$L32103|

; 290  :     }
; 291  : 
; 292  :     // finish intialization; i.e., initialize device
; 293  :     bRet = CDisk::Init(hActiveKey);

  008f8	e59d102c	 ldr         r1, [sp, #0x2C]
  008fc	e59d0028	 ldr         r0, [sp, #0x28]
  00900	eb000000	 bl          |?Init@CDisk@@UAAHPAUHKEY__@@@Z|
  00904	e58d001c	 str         r0, [sp, #0x1C]
  00908	e59d301c	 ldr         r3, [sp, #0x1C]
  0090c	e58d3000	 str         r3, [sp]
  00910		 |$L32101|
  00910		 |$exit$32100|

; 294  :     if (!bRet) {
; 295  :         goto exit;
; 296  :     }
; 297  : 
; 298  : exit:;
; 299  :     return bRet;

  00910	e59d3000	 ldr         r3, [sp]
  00914	e58d3004	 str         r3, [sp, #4]
  00918	e59d0004	 ldr         r0, [sp, #4]

; 300  : }

  0091c	e28dd020	 add         sp, sp, #0x20
  00920	e89d6000	 ldmia       sp, {sp, lr}
  00924	e12fff1e	 bx          lr
  00928		 |$L32506|
  00928	00000000	 DCD         |g_szPCIHardDisk|
  0092c	00000000	 DCD         |g_szPCICDRomDisk|
  00930	00000000	 DCD         |??_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@|
  00934	00000000	 DCD         |dpCurSettings|
  00938		 |$M32503|

			 ENDP  ; |?Init@CPCIDisk@@UAAHPAUHKEY__@@@Z|, CPCIDisk::Init

	EXPORT	|??_C@_1GI@HMCPGEHO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAM?$AAa?$AAi?$AAn@| [ DATA ] ; `string'
	IMPORT	|?MainIoctl@CDisk@@UAAKPAU_IOREQ@@@Z|	; CDisk::MainIoctl

  00048			 AREA	 |.pdata|, PDATA
|$T32514| DCD	|$L32513|
	DCD	0x40002204

  00000			 AREA	 |.rdata| { |??_C@_1GI@HMCPGEHO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAM?$AAa?$AAi?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1GI@HMCPGEHO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAM?$AAa?$AAi?$AAn@| 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, "M", 0x0, "a", 0x0, "i"
	DCB	0x0, "n", 0x0, "I", 0x0, "o", 0x0, "c", 0x0, "t", 0x0, "l"
	DCB	0x0, ">", 0x0, " ", 0x0, "I", 0x0, "O", 0x0, "C", 0x0, "T"
	DCB	0x0, "L", 0x0, "(", 0x0, "%", 0x0, "d", 0x0, ")", 0x0, ","
	DCB	0x0, " ", 0x0, "d", 0x0, "e", 0x0, "v", 0x0, "i", 0x0, "c"
	DCB	0x0, "e", 0x0, "(", 0x0, "%", 0x0, "d", 0x0, ")", 0x0, " "
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'
; Function compile flags: /Odt

  00938			 AREA	 |.text|, CODE, ARM

  00938		 |?MainIoctl@CPCIDisk@@UAAKPAU_IOREQ@@@Z| PROC ; CPCIDisk::MainIoctl

; 314  : {

  00938		 |$L32513|
  00938	e1a0c00d	 mov         r12, sp
  0093c	e92d0003	 stmdb       sp!, {r0, r1}
  00940	e92d5000	 stmdb       sp!, {r12, lr}
  00944	e24dd00c	 sub         sp, sp, #0xC
  00948		 |$M32511|

; 315  :     DEBUGMSG(ZONE_IOCTL, (_T(
; 316  :         "Atapi!CPCIDisk::MainIoctl> IOCTL(%d), device(%d) \r\n"
; 317  :         ), pIOReq->dwCode, m_dwDeviceId));

  00948	e59f306c	 ldr         r3, [pc, #0x6C]
  0094c	e5933440	 ldr         r3, [r3, #0x440]
  00950	e3130040	 tst         r3, #0x40
  00954	0a00000b	 beq         |$L32508|
  00958	e59d3014	 ldr         r3, [sp, #0x14]
  0095c	e2833b01	 add         r3, r3, #1, 22
  00960	e2833088	 add         r3, r3, #0x88
  00964	e5932000	 ldr         r2, [r3]
  00968	e59d3018	 ldr         r3, [sp, #0x18]
  0096c	e2833014	 add         r3, r3, #0x14
  00970	e5931000	 ldr         r1, [r3]
  00974	e59f003c	 ldr         r0, [pc, #0x3C]
  00978	eb000000	 bl          NKDbgPrintfW
  0097c	e3a03001	 mov         r3, #1
  00980	e58d3004	 str         r3, [sp, #4]
  00984	ea000001	 b           |$L32509|
  00988		 |$L32508|
  00988	e3a03000	 mov         r3, #0
  0098c	e58d3004	 str         r3, [sp, #4]
  00990		 |$L32509|

; 318  : 
; 319  :     return CDisk::MainIoctl(pIOReq);

  00990	e59d1018	 ldr         r1, [sp, #0x18]
  00994	e59d0014	 ldr         r0, [sp, #0x14]
  00998	eb000000	 bl          |?MainIoctl@CDisk@@UAAKPAU_IOREQ@@@Z|
  0099c	e58d0008	 str         r0, [sp, #8]
  009a0	e59d3008	 ldr         r3, [sp, #8]
  009a4	e58d3000	 str         r3, [sp]
  009a8	e59d0000	 ldr         r0, [sp]

; 320  : }

  009ac	e28dd00c	 add         sp, sp, #0xC
  009b0	e89d6000	 ldmia       sp, {sp, lr}
  009b4	e12fff1e	 bx          lr
  009b8		 |$L32515|
  009b8	00000000	 DCD         |??_C@_1GI@HMCPGEHO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAM?$AAa?$AAi?$AAn@|
  009bc	00000000	 DCD         |dpCurSettings|
  009c0		 |$M32512|

			 ENDP  ; |?MainIoctl@CPCIDisk@@UAAKPAU_IOREQ@@@Z|, CPCIDisk::MainIoctl

	EXPORT	|??_C@_1JM@CNOKLOGO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAC?$AAo?$AAn?$AAf@| [ DATA ] ; `string'
	EXPORT	|??_C@_1LC@MNNIOALB@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAC?$AAo?$AAn?$AAf@| [ DATA ] ; `string'
	IMPORT	|CreateEventW|
	IMPORT	|InterruptInitialize|

  00050			 AREA	 |.pdata|, PDATA
|$T32525| DCD	|$L32524|
	DCD	0x40008904

  00000			 AREA	 |.rdata| { |??_C@_1LC@MNNIOALB@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAC?$AAo?$AAn?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1LC@MNNIOALB@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAC?$AAo?$AAn?$AAf@| 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, "C", 0x0, "o", 0x0, "n"
	DCB	0x0, "f", 0x0, "i", 0x0, "g", 0x0, "P", 0x0, "o", 0x0, "r"
	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, "i", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "i"
	DCB	0x0, "a", 0x0, "l", 0x0, "i", 0x0, "z", 0x0, "e", 0x0, " "
	DCB	0x0, "i", 0x0, "n", 0x0, "t", 0x0, "e", 0x0, "r", 0x0, "r"
	DCB	0x0, "u", 0x0, "p", 0x0, "t", 0x0, "(", 0x0, "S", 0x0, "y"
	DCB	0x0, "s", 0x0, "I", 0x0, "n", 0x0, "t", 0x0, "r", 0x0, "("
	DCB	0x0, "%", 0x0, "d", 0x0, ")", 0x0, ")", 0x0, " ", 0x0, "f"
	DCB	0x0, "o", 0x0, "r", 0x0, " ", 0x0, "d", 0x0, "e", 0x0, "v"
	DCB	0x0, "i", 0x0, "c", 0x0, "e", 0x0, "(", 0x0, "%", 0x0, "d"
	DCB	0x0, ")", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1JM@CNOKLOGO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAC?$AAo?$AAn?$AAf@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1JM@CNOKLOGO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAC?$AAo?$AAn?$AAf@| 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, "C", 0x0, "o", 0x0, "n"
	DCB	0x0, "f", 0x0, "i", 0x0, "g", 0x0, "P", 0x0, "o", 0x0, "r"
	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, "r", 0x0, "e", 0x0, "a", 0x0, "t"
	DCB	0x0, "e", 0x0, " ", 0x0, "i", 0x0, "n", 0x0, "t", 0x0, "e"
	DCB	0x0, "r", 0x0, "r", 0x0, "u", 0x0, "p", 0x0, "t", 0x0, " "
	DCB	0x0, "e", 0x0, "v", 0x0, "e", 0x0, "n", 0x0, "t", 0x0, " "
	DCB	0x0, "f", 0x0, "o", 0x0, "r", 0x0, " ", 0x0, "d", 0x0, "e"
	DCB	0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, "(", 0x0, "%"
	DCB	0x0, "d", 0x0, ")", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Odt

  009c0			 AREA	 |.text|, CODE, ARM

  009c0		 |?ConfigPort@CPCIDisk@@UAAHXZ| PROC	; CPCIDisk::ConfigPort

; 333  : {

  009c0		 |$L32524|
  009c0	e1a0c00d	 mov         r12, sp
  009c4	e92d0001	 stmdb       sp!, {r0}
  009c8	e92d5000	 stmdb       sp!, {r12, lr}
  009cc	e24dd014	 sub         sp, sp, #0x14
  009d0		 |$M32522|

; 334  :     m_pATAReg = (PBYTE)m_pPort->m_dwRegBase;

  009d0	e59d301c	 ldr         r3, [sp, #0x1C]
  009d4	e283303c	 add         r3, r3, #0x3C
  009d8	e5933000	 ldr         r3, [r3]
  009dc	e2831020	 add         r1, r3, #0x20
  009e0	e59d301c	 ldr         r3, [sp, #0x1C]
  009e4	e2832030	 add         r2, r3, #0x30
  009e8	e5913000	 ldr         r3, [r1]
  009ec	e5823000	 str         r3, [r2]

; 335  :     m_pATARegAlt = (PBYTE)m_pPort->m_dwRegAlt;

  009f0	e59d301c	 ldr         r3, [sp, #0x1C]
  009f4	e283303c	 add         r3, r3, #0x3C
  009f8	e5933000	 ldr         r3, [r3]
  009fc	e2831024	 add         r1, r3, #0x24
  00a00	e59d301c	 ldr         r3, [sp, #0x1C]
  00a04	e2832034	 add         r2, r3, #0x34
  00a08	e5913000	 ldr         r3, [r1]
  00a0c	e5823000	 str         r3, [r2]

; 336  :     m_pBMCommand = (PBYTE)m_pPort->m_dwBMR;

  00a10	e59d301c	 ldr         r3, [sp, #0x1C]
  00a14	e283303c	 add         r3, r3, #0x3C
  00a18	e5933000	 ldr         r3, [r3]
  00a1c	e2831028	 add         r1, r3, #0x28
  00a20	e59d301c	 ldr         r3, [sp, #0x1C]
  00a24	e2833c07	 add         r3, r3, #7, 24
  00a28	e283206c	 add         r2, r3, #0x6C
  00a2c	e5913000	 ldr         r3, [r1]
  00a30	e5823000	 str         r3, [r2]

; 337  : 
; 338  :     // this function is called for the master and slave on this channel; if
; 339  :     // this has already been called, then exit
; 340  :     if (m_pPort->m_hIRQEvent) {

  00a34	e59d301c	 ldr         r3, [sp, #0x1C]
  00a38	e283303c	 add         r3, r3, #0x3C
  00a3c	e5933000	 ldr         r3, [r3]
  00a40	e2833030	 add         r3, r3, #0x30
  00a44	e5933000	 ldr         r3, [r3]
  00a48	e3530000	 cmp         r3, #0
  00a4c	0a000009	 beq         |$L32118|

; 341  :         m_dwDeviceFlags |= DFLAGS_DEVICE_INITIALIZED;

  00a50	e59d301c	 ldr         r3, [sp, #0x1C]
  00a54	e2833e69	 add         r3, r3, #0x69, 28
  00a58	e5933000	 ldr         r3, [r3]
  00a5c	e3832101	 orr         r2, r3, #1, 2
  00a60	e59d301c	 ldr         r3, [sp, #0x1C]
  00a64	e2833e69	 add         r3, r3, #0x69, 28
  00a68	e5832000	 str         r2, [r3]

; 342  :         return TRUE;

  00a6c	e3a03001	 mov         r3, #1
  00a70	e58d3000	 str         r3, [sp]
  00a74	ea000053	 b           |$L32114|
  00a78		 |$L32118|

; 343  :     }
; 344  : 
; 345  :     // create interrupt event
; 346  :     if (NULL == (m_pPort->m_hIRQEvent = CreateEvent(NULL, FALSE, FALSE, NULL))) {

  00a78	e3a03000	 mov         r3, #0
  00a7c	e3a02000	 mov         r2, #0
  00a80	e3a01000	 mov         r1, #0
  00a84	e3a00000	 mov         r0, #0
  00a88	eb000000	 bl          CreateEventW
  00a8c	e58d0004	 str         r0, [sp, #4]
  00a90	e59d301c	 ldr         r3, [sp, #0x1C]
  00a94	e283303c	 add         r3, r3, #0x3C
  00a98	e5933000	 ldr         r3, [r3]
  00a9c	e2832030	 add         r2, r3, #0x30
  00aa0	e59d3004	 ldr         r3, [sp, #4]
  00aa4	e5823000	 str         r3, [r2]
  00aa8	e59d301c	 ldr         r3, [sp, #0x1C]
  00aac	e283303c	 add         r3, r3, #0x3C
  00ab0	e5933000	 ldr         r3, [r3]
  00ab4	e2833030	 add         r3, r3, #0x30
  00ab8	e5933000	 ldr         r3, [r3]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -