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

📄 atapipm.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 COD
📖 第 1 页 / 共 5 页
字号:
  008c0	e59f05b8	 ldr         r0, [pc, #0x5B8]
  008c4	eb000000	 bl          NKDbgPrintfW
  008c8	e6000010	 DCD         0xe6000010
  008cc	e3a03000	 mov         r3, #0
  008d0	e58d3018	 str         r3, [sp, #0x18]
  008d4		 |$L32511|

; 256  :     DEBUGCHK(m_hevDummy);

  008d4	e59d3068	 ldr         r3, [sp, #0x68]
  008d8	e2833024	 add         r3, r3, #0x24
  008dc	e5933000	 ldr         r3, [r3]
  008e0	e3530000	 cmp         r3, #0
  008e4	0a000002	 beq         |$L32512|
  008e8	e3a03001	 mov         r3, #1
  008ec	e58d301c	 str         r3, [sp, #0x1C]
  008f0	ea000007	 b           |$L32513|
  008f4		 |$L32512|
  008f4	e3a03c01	 mov         r3, #1, 24
  008f8	e59f2584	 ldr         r2, [pc, #0x584]
  008fc	e59f1574	 ldr         r1, [pc, #0x574]
  00900	e59f0578	 ldr         r0, [pc, #0x578]
  00904	eb000000	 bl          NKDbgPrintfW
  00908	e6000010	 DCD         0xe6000010
  0090c	e3a03000	 mov         r3, #0
  00910	e58d301c	 str         r3, [sp, #0x1C]
  00914		 |$L32513|

; 257  : 
; 258  :     DEBUGMSG(ZONE_INIT, (_T("CDiskPower::DiskPowerThread: starting up for '%s', timeout is %d ms\r\n"), m_pszPMName, m_dwPowerTimeout));

  00914	e59f355c	 ldr         r3, [pc, #0x55C]
  00918	e5933440	 ldr         r3, [r3, #0x440]
  0091c	e3130001	 tst         r3, #1
  00920	0a00000a	 beq         |$L32514|
  00924	e59d3068	 ldr         r3, [sp, #0x68]
  00928	e2833018	 add         r3, r3, #0x18
  0092c	e5932000	 ldr         r2, [r3]
  00930	e59d3068	 ldr         r3, [sp, #0x68]
  00934	e2833048	 add         r3, r3, #0x48
  00938	e5931000	 ldr         r1, [r3]
  0093c	e59f0558	 ldr         r0, [pc, #0x558]
  00940	eb000000	 bl          NKDbgPrintfW
  00944	e3a03001	 mov         r3, #1
  00948	e58d3020	 str         r3, [sp, #0x20]
  0094c	ea000001	 b           |$L32515|
  00950		 |$L32514|
  00950	e3a03000	 mov         r3, #0
  00954	e58d3020	 str         r3, [sp, #0x20]
  00958		 |$L32515|
  00958		 |$L32094|

; 259  : 
; 260  :     while(!fDone) {

  00958	e59d3000	 ldr         r3, [sp]
  0095c	e3530000	 cmp         r3, #0
  00960	1a000132	 bne         |$L32095|

; 261  :         //DEBUGMSG(ZONE_POWER, (_T("CDiskPower::DiskPowerThread: waiting on '%s', timeout is %u\r\n"), m_pszPMName, dwTimeout));
; 262  :         DWORD dwStatus = WaitForSingleObject(hev, dwTimeout);

  00964	e59d1008	 ldr         r1, [sp, #8]
  00968	e59d0004	 ldr         r0, [sp, #4]
  0096c	eb000000	 bl          WaitForSingleObject
  00970	e58d0024	 str         r0, [sp, #0x24]
  00974	e59d3024	 ldr         r3, [sp, #0x24]
  00978	e58d300c	 str         r3, [sp, #0xC]

; 263  :         //DEBUGMSG(ZONE_POWER, (_T("CDiskPower::DiskPowerThread: WaitForSingleObject() returned %u\r\n"), dwStatus));
; 264  :         switch(dwStatus) {

  0097c	e59d300c	 ldr         r3, [sp, #0xC]
  00980	e58d3028	 str         r3, [sp, #0x28]
  00984	e59d3028	 ldr         r3, [sp, #0x28]
  00988	e3530000	 cmp         r3, #0
  0098c	0a000005	 beq         |$L32101|
  00990	e59d2028	 ldr         r2, [sp, #0x28]
  00994	e3a03c01	 mov         r3, #1, 24
  00998	e3833002	 orr         r3, r3, #2
  0099c	e1520003	 cmp         r2, r3
  009a0	0a00004d	 beq         |$L32110|
  009a4	ea000111	 b           |$L32129|
  009a8		 |$L32101|

; 265  :         case WAIT_OBJECT_0:
; 266  :             // are we supposed to exit?
; 267  :             if(m_fShutdownPowerThread) {

  009a8	e59d3068	 ldr         r3, [sp, #0x68]
  009ac	e2833028	 add         r3, r3, #0x28
  009b0	e5933000	 ldr         r3, [r3]
  009b4	e3530000	 cmp         r3, #0
  009b8	0a00000d	 beq         |$L32102|

; 268  :                 DEBUGMSG(ZONE_INIT, (_T("CDiskPower::DiskPowerThread: shutdown event signaled\r\n")));

  009bc	e59f34b4	 ldr         r3, [pc, #0x4B4]
  009c0	e5933440	 ldr         r3, [r3, #0x440]
  009c4	e3130001	 tst         r3, #1
  009c8	0a000004	 beq         |$L32516|
  009cc	e59f04c4	 ldr         r0, [pc, #0x4C4]
  009d0	eb000000	 bl          NKDbgPrintfW
  009d4	e3a03001	 mov         r3, #1
  009d8	e58d302c	 str         r3, [sp, #0x2C]
  009dc	ea000001	 b           |$L32517|
  009e0		 |$L32516|
  009e0	e3a03000	 mov         r3, #0
  009e4	e58d302c	 str         r3, [sp, #0x2C]
  009e8		 |$L32517|

; 269  :                 fDone = TRUE;

  009e8	e3a03001	 mov         r3, #1
  009ec	e58d3000	 str         r3, [sp]

; 270  :             } else {

  009f0	ea000038	 b           |$L32105|
  009f4		 |$L32102|

; 271  :                 // ignore further activity until the timeout expires
; 272  :                 TakeCS();               // Note: if you take the disk cs here, take it first

  009f4	e59d3068	 ldr         r3, [sp, #0x68]
  009f8	e5933000	 ldr         r3, [r3]
  009fc	e2833024	 add         r3, r3, #0x24
  00a00	e59d0068	 ldr         r0, [sp, #0x68]
  00a04	e5933000	 ldr         r3, [r3]
  00a08	e1a0e00f	 mov         lr, pc
  00a0c	e12fff13	 bx          r3

; 273  :                 DEBUGMSG(ZONE_POWER, (_T("CDiskPower::DiskPowerThread: disk activity detected on '%s', use count is %d\r\n"), m_pszPMName, m_UseCount));

  00a10	e59f3460	 ldr         r3, [pc, #0x460]
  00a14	e5933440	 ldr         r3, [r3, #0x440]
  00a18	e3130c02	 tst         r3, #2, 24
  00a1c	0a00000a	 beq         |$L32518|
  00a20	e59d3068	 ldr         r3, [sp, #0x68]
  00a24	e283304c	 add         r3, r3, #0x4C
  00a28	e5932000	 ldr         r2, [r3]
  00a2c	e59d3068	 ldr         r3, [sp, #0x68]
  00a30	e2833048	 add         r3, r3, #0x48
  00a34	e5931000	 ldr         r1, [r3]
  00a38	e59f0454	 ldr         r0, [pc, #0x454]
  00a3c	eb000000	 bl          NKDbgPrintfW
  00a40	e3a03001	 mov         r3, #1
  00a44	e58d3030	 str         r3, [sp, #0x30]
  00a48	ea000001	 b           |$L32519|
  00a4c		 |$L32518|
  00a4c	e3a03000	 mov         r3, #0
  00a50	e58d3030	 str         r3, [sp, #0x30]
  00a54		 |$L32519|

; 274  :                 DEBUGCHK(hev != m_hevDummy);

  00a54	e59d3068	 ldr         r3, [sp, #0x68]
  00a58	e2833024	 add         r3, r3, #0x24
  00a5c	e59d2004	 ldr         r2, [sp, #4]
  00a60	e5933000	 ldr         r3, [r3]
  00a64	e1520003	 cmp         r2, r3
  00a68	0a000002	 beq         |$L32520|
  00a6c	e3a03001	 mov         r3, #1
  00a70	e58d3034	 str         r3, [sp, #0x34]
  00a74	ea000008	 b           |$L32521|
  00a78		 |$L32520|
  00a78	e3a03e11	 mov         r3, #0x11, 28
  00a7c	e3833002	 orr         r3, r3, #2
  00a80	e59f23fc	 ldr         r2, [pc, #0x3FC]
  00a84	e59f13ec	 ldr         r1, [pc, #0x3EC]
  00a88	e59f03f0	 ldr         r0, [pc, #0x3F0]
  00a8c	eb000000	 bl          NKDbgPrintfW
  00a90	e6000010	 DCD         0xe6000010
  00a94	e3a03000	 mov         r3, #0
  00a98	e58d3034	 str         r3, [sp, #0x34]
  00a9c		 |$L32521|

; 275  :                 hev = m_hevDummy;

  00a9c	e59d3068	 ldr         r3, [sp, #0x68]
  00aa0	e2833024	 add         r3, r3, #0x24
  00aa4	e5933000	 ldr         r3, [r3]
  00aa8	e58d3004	 str         r3, [sp, #4]

; 276  :                 dwTimeout = m_dwPowerTimeout;

  00aac	e59d3068	 ldr         r3, [sp, #0x68]
  00ab0	e2833018	 add         r3, r3, #0x18
  00ab4	e5933000	 ldr         r3, [r3]
  00ab8	e58d3008	 str         r3, [sp, #8]

; 277  :                 ReleaseCS();

  00abc	e59d3068	 ldr         r3, [sp, #0x68]
  00ac0	e5933000	 ldr         r3, [r3]
  00ac4	e2833028	 add         r3, r3, #0x28
  00ac8	e59d0068	 ldr         r0, [sp, #0x68]
  00acc	e5933000	 ldr         r3, [r3]
  00ad0	e1a0e00f	 mov         lr, pc
  00ad4	e12fff13	 bx          r3
  00ad8		 |$L32105|

; 278  :             }
; 279  :             break;

  00ad8	ea0000d3	 b           |$L32098|
  00adc		 |$L32110|

; 280  :         case WAIT_TIMEOUT:
; 281  :             // inactivity timeout -- see if we should spin down the disk
; 282  :             m_pDisk->TakeCS();

  00adc	e59d3068	 ldr         r3, [sp, #0x68]
  00ae0	e2833044	 add         r3, r3, #0x44
  00ae4	e5932000	 ldr         r2, [r3]
  00ae8	e59d3068	 ldr         r3, [sp, #0x68]
  00aec	e2833044	 add         r3, r3, #0x44
  00af0	e5930000	 ldr         r0, [r3]
  00af4	e5923000	 ldr         r3, [r2]
  00af8	e2833030	 add         r3, r3, #0x30
  00afc	e5933000	 ldr         r3, [r3]
  00b00	e1a0e00f	 mov         lr, pc
  00b04	e12fff13	 bx          r3

; 283  :             TakeCS();

  00b08	e59d3068	 ldr         r3, [sp, #0x68]
  00b0c	e5933000	 ldr         r3, [r3]
  00b10	e2833024	 add         r3, r3, #0x24
  00b14	e59d0068	 ldr         r0, [sp, #0x68]
  00b18	e5933000	 ldr         r3, [r3]
  00b1c	e1a0e00f	 mov         lr, pc
  00b20	e12fff13	 bx          r3

; 284  : 
; 285  :             // we should be the only thread in the driver at this point
; 286  :             DEBUGCHK(m_UseCount == 0);

  00b24	e59d3068	 ldr         r3, [sp, #0x68]
  00b28	e283304c	 add         r3, r3, #0x4C
  00b2c	e5933000	 ldr         r3, [r3]
  00b30	e3530000	 cmp         r3, #0
  00b34	1a000002	 bne         |$L32522|
  00b38	e3a03001	 mov         r3, #1
  00b3c	e58d3038	 str         r3, [sp, #0x38]
  00b40	ea000008	 b           |$L32523|
  00b44		 |$L32522|
  00b44	e3a03f47	 mov         r3, #0x47, 30
  00b48	e3833002	 orr         r3, r3, #2
  00b4c	e59f2330	 ldr         r2, [pc, #0x330]
  00b50	e59f1320	 ldr         r1, [pc, #0x320]
  00b54	e59f0324	 ldr         r0, [pc, #0x324]
  00b58	eb000000	 bl          NKDbgPrintfW
  00b5c	e6000010	 DCD         0xe6000010
  00b60	e3a03000	 mov         r3, #0
  00b64	e58d3038	 str         r3, [sp, #0x38]
  00b68		 |$L32523|

; 287  : 
; 288  :             // By the time we have acquired these critical sections, we may have seen
; 289  :             // some disk activity from an I/O thread that held them previously.  Check
; 290  :             // for this by polling our timeout event.
; 291  :             if(WaitForSingleObject(m_hevPowerSignal, 0) == WAIT_TIMEOUT) {

  00b68	e3a01000	 mov         r1, #0
  00b6c	e59d3068	 ldr         r3, [sp, #0x68]
  00b70	e2833020	 add         r3, r3, #0x20
  00b74	e5930000	 ldr         r0, [r3]
  00b78	eb000000	 bl          WaitForSingleObject
  00b7c	e58d003c	 str         r0, [sp, #0x3C]
  00b80	e59d203c	 ldr         r2, [sp, #0x3C]
  00b84	e3a03c01	 mov         r3, #1, 24
  00b88	e3833002	 orr         r3, r3, #2
  00b8c	e1520003	 cmp         r2, r3
  00b90	1a000048	 bne         |$L32113|

; 292  :                 // don't bother asking the PM if we've already requested to spin down
; 293  :                 DEBUGMSG(ZONE_POWER, (_T("CDiskPower::DiskPowerThread: no disk activity on '%s', m_fReductionRequested is %d\r\n"), m_pszPMName, m_fReductionRequested));

  00b94	e59f32dc	 ldr         r3, [pc, #0x2DC]
  00b98	e5933440	 ldr         r3, [r3, #0x440]
  00b9c	e3130c02	 tst         r3, #2, 24
  00ba0	0a00000a	 beq         |$L32524|
  00ba4	e59d3068	 ldr         r3, [sp, #0x68]
  00ba8	e2833014	 add         r3, r3, #0x14
  00bac	e5932000	 ldr         r2, [r3]
  00bb0	e59d3068	 ldr         r3, [sp, #0x68]
  00bb4	e2833048	 add         r3, r3, #0x48
  00bb8	e5931000	 ldr         r1, [r3]
  00bbc	e59f02cc	 ldr         r0, [pc, #0x2CC]
  00bc0	eb000000	 bl          NKDbgPrintfW
  00bc4	e3a03001	 mov         r3, #1
  00bc8	e58d3040	 str         r3, [sp, #0x40]
  00bcc	ea000001	 b           |$L32525|
  00bd0		 |$L32524|
  00bd0	e3a03000	 mov         r3, #0
  00bd4	e58d3040	 str         r3, [sp, #0x40]
  00bd8		 |$L32525|

; 294  :                 if(!m_fReductionRequested) {

  00bd8	e59d3068	 ldr         r3, [sp, #0x68]
  00bdc	e2833014	 add         r3, r3, #0x14
  00be0	e5933000	 ldr         r3, [r3]
  00be4	e3530000	 cmp         r3, #0
  00be8	1a00002b	 bne         |$L32116|

; 295  :                     // spin down the disk to m_timeoutDx
; 296  :                     m_fReductionRequested = TRUE;

  00bec	e59d3068	 ldr         r3, [sp, #0x68]
  00bf0	e2832014	 add         r2, r3, #0x14
  00bf4	e3a03001	 mov         r3, #1
  00bf8	e5823000	 str         r3, [r2]

; 297  :                     dwStatus = m_pfnDevicePowerNotify((PVOID) m_pszPMName, m_timeoutDx, POWER_NAME);

  00bfc	e3a02001	 mov         r2, #1
  00c00	e59d3068	 ldr         r3, [sp, #0x68]
  00c04	e283300c	 add         r3, r3, #0xC
  00c08	e5931000	 ldr         r1, [r3]
  00c0c	e59d3068	 ldr  

⌨️ 快捷键说明

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