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

📄 diskmain.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 COD
📖 第 1 页 / 共 5 页
字号:
  007b4	e3a03000	 mov         r3, #0
  007b8	e58d3008	 str         r3, [sp, #8]
  007bc		 |$L33033|
  007bc	e59d3008	 ldr         r3, [sp, #8]
  007c0	e58d3000	 str         r3, [sp]
  007c4	e59d0000	 ldr         r0, [sp]
  007c8	e28dd00c	 add         sp, sp, #0xC
  007cc	e89d6000	 ldmia       sp, {sp, lr}
  007d0	e12fff1e	 bx          lr
  007d4		 |$M33036|

			 ENDP  ; |?IsWriteCacheSupported@CDisk@@QAAHXZ|, CDisk::IsWriteCacheSupported

	EXPORT	|?IsPMSupported@CDisk@@QAAHXZ|		; CDisk::IsPMSupported

  00090			 AREA	 |.pdata|, PDATA
|$T33046| DCD	|$L33045|
	DCD	0x40002004
; Function compile flags: /Odt

  007d4			 AREA	 |.text|, CODE, ARM

  007d4		 |?IsPMSupported@CDisk@@QAAHXZ| PROC	; CDisk::IsPMSupported

; 147  : BOOL CDisk::IsPMSupported()             { return (m_Id.CommandSetSupported1 & COMMAND_SET_POWER_MANAGEMENT_SUPPORTED && IsValidCommandSupportInfo()); }

  007d4		 |$L33045|
  007d4	e1a0c00d	 mov         r12, sp
  007d8	e92d0001	 stmdb       sp!, {r0}
  007dc	e92d5000	 stmdb       sp!, {r12, lr}
  007e0	e24dd00c	 sub         sp, sp, #0xC
  007e4		 |$M33043|
  007e4	e59d3014	 ldr         r3, [sp, #0x14]
  007e8	e2833c05	 add         r3, r3, #5, 24
  007ec	e2831034	 add         r1, r3, #0x34
  007f0	e5d13001	 ldrb        r3, [r1, #1]
  007f4	e1a03403	 mov         r3, r3, lsl #8
  007f8	e1a02803	 mov         r2, r3, lsl #16
  007fc	e1a02822	 mov         r2, r2, lsr #16
  00800	e5d13000	 ldrb        r3, [r1]
  00804	e1833002	 orr         r3, r3, r2
  00808	e3130008	 tst         r3, #8
  0080c	0a000008	 beq         |$L33040|
  00810	e59d0014	 ldr         r0, [sp, #0x14]
  00814	eb000000	 bl          |?IsValidCommandSupportInfo@CDisk@@QAAHXZ|
  00818	e58d0004	 str         r0, [sp, #4]
  0081c	e59d3004	 ldr         r3, [sp, #4]
  00820	e3530000	 cmp         r3, #0
  00824	0a000002	 beq         |$L33040|
  00828	e3a03001	 mov         r3, #1
  0082c	e58d3008	 str         r3, [sp, #8]
  00830	ea000001	 b           |$L33041|
  00834		 |$L33040|
  00834	e3a03000	 mov         r3, #0
  00838	e58d3008	 str         r3, [sp, #8]
  0083c		 |$L33041|
  0083c	e59d3008	 ldr         r3, [sp, #8]
  00840	e58d3000	 str         r3, [sp]
  00844	e59d0000	 ldr         r0, [sp]
  00848	e28dd00c	 add         sp, sp, #0xC
  0084c	e89d6000	 ldmia       sp, {sp, lr}
  00850	e12fff1e	 bx          lr
  00854		 |$M33044|

			 ENDP  ; |?IsPMSupported@CDisk@@QAAHXZ|, CDisk::IsPMSupported

	EXPORT	|?IsPMEnabled@CDisk@@QAAHXZ|		; CDisk::IsPMEnabled

  00098			 AREA	 |.pdata|, PDATA
|$T33054| DCD	|$L33053|
	DCD	0x40002004
; Function compile flags: /Odt

  00854			 AREA	 |.text|, CODE, ARM

  00854		 |?IsPMEnabled@CDisk@@QAAHXZ| PROC	; CDisk::IsPMEnabled

; 148  : BOOL CDisk::IsPMEnabled()               { return (IsPMSupported() && (m_Id.CommandSetFeatureEnabled1 & COMMAND_SET_POWER_MANAGEMENT_ENABLED)); }

  00854		 |$L33053|
  00854	e1a0c00d	 mov         r12, sp
  00858	e92d0001	 stmdb       sp!, {r0}
  0085c	e92d5000	 stmdb       sp!, {r12, lr}
  00860	e24dd00c	 sub         sp, sp, #0xC
  00864		 |$M33051|
  00864	e59d0014	 ldr         r0, [sp, #0x14]
  00868	eb000000	 bl          |?IsPMSupported@CDisk@@QAAHXZ|
  0086c	e58d0004	 str         r0, [sp, #4]
  00870	e59d3004	 ldr         r3, [sp, #4]
  00874	e3530000	 cmp         r3, #0
  00878	0a00000d	 beq         |$L33048|
  0087c	e59d3014	 ldr         r3, [sp, #0x14]
  00880	e2833c05	 add         r3, r3, #5, 24
  00884	e283103a	 add         r1, r3, #0x3A
  00888	e5d13001	 ldrb        r3, [r1, #1]
  0088c	e1a03403	 mov         r3, r3, lsl #8
  00890	e1a02803	 mov         r2, r3, lsl #16
  00894	e1a02822	 mov         r2, r2, lsr #16
  00898	e5d13000	 ldrb        r3, [r1]
  0089c	e1833002	 orr         r3, r3, r2
  008a0	e3130008	 tst         r3, #8
  008a4	0a000002	 beq         |$L33048|
  008a8	e3a03001	 mov         r3, #1
  008ac	e58d3008	 str         r3, [sp, #8]
  008b0	ea000001	 b           |$L33049|
  008b4		 |$L33048|
  008b4	e3a03000	 mov         r3, #0
  008b8	e58d3008	 str         r3, [sp, #8]
  008bc		 |$L33049|
  008bc	e59d3008	 ldr         r3, [sp, #8]
  008c0	e58d3000	 str         r3, [sp]
  008c4	e59d0000	 ldr         r0, [sp]
  008c8	e28dd00c	 add         sp, sp, #0xC
  008cc	e89d6000	 ldmia       sp, {sp, lr}
  008d0	e12fff1e	 bx          lr
  008d4		 |$M33052|

			 ENDP  ; |?IsPMEnabled@CDisk@@QAAHXZ|, CDisk::IsPMEnabled

	EXPORT	|?SetActiveKey@CDisk@@QAAXPAG@Z|	; CDisk::SetActiveKey
	IMPORT	|wcsncpy|

  000a0			 AREA	 |.pdata|, PDATA
|$T33059| DCD	|$L33058|
	DCD	0x40001003
; Function compile flags: /Odt

  008d4			 AREA	 |.text|, CODE, ARM

  008d4		 |?SetActiveKey@CDisk@@QAAXPAG@Z| PROC	; CDisk::SetActiveKey

; 152  : {

  008d4		 |$L33058|
  008d4	e1a0c00d	 mov         r12, sp
  008d8	e92d0003	 stmdb       sp!, {r0, r1}
  008dc	e92d5000	 stmdb       sp!, {r12, lr}
  008e0		 |$M33056|

; 153  :     wcsncpy(m_szActiveKey, szActiveKey, MAX_PATH - 1);

  008e0	e3a03c01	 mov         r3, #1, 24
  008e4	e3832003	 orr         r2, r3, #3
  008e8	e59d100c	 ldr         r1, [sp, #0xC]
  008ec	e59d3008	 ldr         r3, [sp, #8]
  008f0	e2830070	 add         r0, r3, #0x70
  008f4	eb000000	 bl          wcsncpy

; 154  :     m_szActiveKey[MAX_PATH - 1] = 0;

  008f8	e59d3008	 ldr         r3, [sp, #8]
  008fc	e2833c02	 add         r3, r3, #2, 24
  00900	e2832076	 add         r2, r3, #0x76
  00904	e3a03000	 mov         r3, #0
  00908	e1c230b0	 strh        r3, [r2]

; 155  : }

  0090c	e89d6000	 ldmia       sp, {sp, lr}
  00910	e12fff1e	 bx          lr
  00914		 |$M33057|

			 ENDP  ; |?SetActiveKey@CDisk@@QAAXPAG@Z|, CDisk::SetActiveKey

	EXPORT	|?SetDeviceKey@CDisk@@QAAXPAG@Z|	; CDisk::SetDeviceKey

  000a8			 AREA	 |.pdata|, PDATA
|$T33064| DCD	|$L33063|
	DCD	0x40001003
; Function compile flags: /Odt

  00914			 AREA	 |.text|, CODE, ARM

  00914		 |?SetDeviceKey@CDisk@@QAAXPAG@Z| PROC	; CDisk::SetDeviceKey

; 158  : {

  00914		 |$L33063|
  00914	e1a0c00d	 mov         r12, sp
  00918	e92d0003	 stmdb       sp!, {r0, r1}
  0091c	e92d5000	 stmdb       sp!, {r12, lr}
  00920		 |$M33061|

; 159  :     wcsncpy(m_szDeviceKey, szDeviceKey, MAX_PATH - 1);

  00920	e3a03c01	 mov         r3, #1, 24
  00924	e3832003	 orr         r2, r3, #3
  00928	e59d100c	 ldr         r1, [sp, #0xC]
  0092c	e59d3008	 ldr         r3, [sp, #8]
  00930	e2830f9e	 add         r0, r3, #0x9E, 30
  00934	eb000000	 bl          wcsncpy

; 160  :     m_szDeviceKey[MAX_PATH - 1] = 0;

  00938	e59d3008	 ldr         r3, [sp, #8]
  0093c	e2833b01	 add         r3, r3, #1, 22
  00940	e283207e	 add         r2, r3, #0x7E
  00944	e3a03000	 mov         r3, #0
  00948	e1c230b0	 strh        r3, [r2]

; 161  : }

  0094c	e89d6000	 ldmia       sp, {sp, lr}
  00950	e12fff1e	 bx          lr
  00954		 |$M33062|

			 ENDP  ; |?SetDeviceKey@CDisk@@QAAXPAG@Z|, CDisk::SetDeviceKey

	EXPORT	|??_C@_1IE@CCFANAPE@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| [ DATA ] ; `string'
	EXPORT	|??_C@_1HI@CBKBLOGO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| [ DATA ] ; `string'
	EXPORT	|?SelectDevice@CDisk@@QAAXXZ|		; CDisk::SelectDevice
	EXPORT	|?WriteAltDriveController@CDisk@@QAAXE@Z| ; CDisk::WriteAltDriveController
	EXPORT	|?Identify@CDisk@@QAAHXZ|		; CDisk::Identify
	EXPORT	|?ResetController@CDisk@@QAAHH@Z|	; CDisk::ResetController
	IMPORT	|NKDbgPrintfW|
	IMPORT	|dpCurSettings|

  000b0			 AREA	 |.pdata|, PDATA
|$T33074| DCD	|$L33073|
	DCD	0x40005d04

  00000			 AREA	 |.rdata| { |??_C@_1HI@CBKBLOGO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HI@CBKBLOGO@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| DCB "A"
	DCB	0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
	DCB	0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, ":", 0x0, ":"
	DCB	0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "C", 0x0, "o"
	DCB	0x0, "n", 0x0, "t", 0x0, "r", 0x0, "o", 0x0, "l", 0x0, "l"
	DCB	0x0, "e", 0x0, "r", 0x0, ">", 0x0, " ", 0x0, "D", 0x0, "e"
	DCB	0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "r"
	DCB	0x0, "e", 0x0, "s", 0x0, "p", 0x0, "o", 0x0, "n", 0x0, "d"
	DCB	0x0, "e", 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " "
	DCB	0x0, "i", 0x0, "d", 0x0, "e", 0x0, "n", 0x0, "t", 0x0, "i"
	DCB	0x0, "f", 0x0, "y", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_1IE@CCFANAPE@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1IE@CCFANAPE@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt?$AAC?$AAo?$AAn@| DCB "A"
	DCB	0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
	DCB	0x0, "D", 0x0, "i", 0x0, "s", 0x0, "k", 0x0, ":", 0x0, ":"
	DCB	0x0, "I", 0x0, "n", 0x0, "i", 0x0, "t", 0x0, "C", 0x0, "o"
	DCB	0x0, "n", 0x0, "t", 0x0, "r", 0x0, "o", 0x0, "l", 0x0, "l"
	DCB	0x0, "e", 0x0, "r", 0x0, ">", 0x0, " ", 0x0, "D", 0x0, "e"
	DCB	0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "d"
	DCB	0x0, "i", 0x0, "d", 0x0, " ", 0x0, "n", 0x0, "o", 0x0, "t"
	DCB	0x0, " ", 0x0, "r", 0x0, "e", 0x0, "s", 0x0, "p", 0x0, "o"
	DCB	0x0, "n", 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o", 0x0, " "
	DCB	0x0, "i", 0x0, "d", 0x0, "e", 0x0, "n", 0x0, "t", 0x0, "i"
	DCB	0x0, "f", 0x0, "y", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Odt

  00954			 AREA	 |.text|, CODE, ARM

  00954		 |?InitController@CDisk@@UAAHH@Z| PROC	; CDisk::InitController

; 178  : {

  00954		 |$L33073|
  00954	e1a0c00d	 mov         r12, sp
  00958	e92d0003	 stmdb       sp!, {r0, r1}
  0095c	e92d5000	 stmdb       sp!, {r12, lr}
  00960	e24dd018	 sub         sp, sp, #0x18
  00964		 |$M33071|

; 179  :     BOOL bRet = TRUE;

  00964	e3a03001	 mov         r3, #1
  00968	e58d3000	 str         r3, [sp]

; 180  : 
; 181  :     // if the controller has not already been reset, then perform a soft-reset
; 182  :     // to enable the channel
; 183  : 
; 184  :     if (!(m_dwDeviceFlags & DFLAGS_DEVICE_INITIALIZED)) {

  0096c	e59d3020	 ldr         r3, [sp, #0x20]
  00970	e2833e69	 add         r3, r3, #0x69, 28
  00974	e5933000	 ldr         r3, [r3]
  00978	e3130101	 tst         r3, #1, 2
  0097c	1a00001a	 bne         |$L32033|

; 185  : 
; 186  :         // perform a soft-reset on the controller; if we don't do this, then
; 187  :         // we won't be able to detect whether or not devices are present on the
; 188  :         // channel
; 189  : 
; 190  :         bRet = ResetController(FALSE);

  00980	e3a01000	 mov         r1, #0
  00984	e59d0020	 ldr         r0, [sp, #0x20]
  00988	eb000000	 bl          |?ResetController@CDisk@@QAAHH@Z|
  0098c	e58d0008	 str         r0, [sp, #8]
  00990	e59d3008	 ldr         r3, [sp, #8]
  00994	e58d3000	 str         r3, [sp]

; 191  :         if (!bRet) {

  00998	e59d3000	 ldr         r3, [sp]
  0099c	e3530000	 cmp         r3, #0
  009a0	1a000000	 bne         |$L32034|

; 192  :             goto exit;

  009a4	ea00003e	 b           |$L32036|
  009a8		 |$L32034|

; 193  :         }
; 194  : 
; 195  :         // if interrupt is supported, enable interrupt
; 196  : 
; 197  :         if (m_fInterruptSupported) {

  009a8	e59d3020	 ldr         r3, [sp, #0x20]
  009ac	e2833040	 add         r3, r3, #0x40
  009b0	e5933000	 ldr         r3, [r3]
  009b4	e3530000	 cmp         r3, #0
  009b8	0a00000b	 beq         |$L32037|

; 198  :             SelectDevice();

  009bc	e59d0020	 ldr         r0, [sp, #0x20]
  009c0	eb000000	 bl          |?SelectDevice@CDisk@@QAAXXZ|

; 199  :             WriteAltDriveController(ATA_CTRL_ENABLE_INTR);

  009c4	e3a01000	 mov         r1, #0
  009c8	e59d0020	 ldr         r0, [sp, #0x20]
  009cc	eb000000	 bl          |?WriteAltDriveController@CDisk@@QAAXE@Z|

; 200  :             EnableInterrupt();

  009d0	e59d3020	 ldr         r3, [sp, #0x20]
  009d4	e5933000	 ldr         r3, [r3]
  009d8	e283303c	 add         r3, r3, #0x3C
  009dc	e59d0020	 ldr         r0, [sp, #0x20]
  009e0	e5933000	 ldr         r3, [r3]
  009e4	e1a0e00f	 mov         lr, pc
  009e8	e12fff13	 bx          r3
  009ec		 |$L32037|
  009ec		 |$L32033|

; 201  :         }
; 202  :     }
; 203  : 
; 204  :     // issue IDENTIFY DEVICE and/or IDENTIFY PACKET DEVICE
; 205  : 
; 206  :     bRet = Identify();

  009ec	e59d0020	 ldr         r0, [sp, #0x20]
  009f0	eb000000	 bl          |?Identify@CDisk@@QAAHXZ|
  009f4	e58d000c	 str         r0, [sp, #0xC]
  009f8	e59d300c	 ldr         r3, [sp, #0xC]
  009fc	e58d3000	 str         r3, [sp]

; 207  :     if (!bRet) {

  00a00	e59d3000	 ldr         r3, [sp]
  00a04	e3530000	 cmp         r3, #0
  00a08	1a00000f	 bne         |$L32038|

; 208  :         DEBUGMSG(ZONE_INIT|ZONE_ERROR, (_T(
; 209  :             "Atapi!CDisk::InitController> Device did not respond to identify\r\n"
; 210  :             )));

⌨️ 快捷键说明

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