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

📄 ide.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00014	e5cd3000	 strb        r3, [sp]

; 292  : 
; 293  :     if (dwPeriod == 0)

  00018	e59d3020	 ldr         r3, [sp, #0x20]
  0001c	e3530000	 cmp         r3, #0
  00020	1a000001	 bne         |$L38894|

; 294  :         dwPeriod = dwTimeOut;

  00024	e59d301c	 ldr         r3, [sp, #0x1C]
  00028	e58d3020	 str         r3, [sp, #0x20]
  0002c		 |$L38894|
  0002c		 |$L38896|

; 295  : 
; 296  :     while( TRUE)  
; 297  :     {
; 298  :         bStatusRead = GetAltStatus();

  0002c	eb000000	 bl          GetAltStatus
  00030	e5cd0008	 strb        r0, [sp, #8]
  00034	e5dd3008	 ldrb        r3, [sp, #8]
  00038	e5cd3000	 strb        r3, [sp]

; 299  :         switch (bStatusType)  {

  0003c	e5dd3018	 ldrb        r3, [sp, #0x18]
  00040	e58d300c	 str         r3, [sp, #0xC]
  00044	e59d300c	 ldr         r3, [sp, #0xC]
  00048	e3530001	 cmp         r3, #1
  0004c	0a00000f	 beq         |$L38902|
  00050	e59d300c	 ldr         r3, [sp, #0xC]
  00054	e3530002	 cmp         r3, #2
  00058	0a000011	 beq         |$L38905|
  0005c	e59d300c	 ldr         r3, [sp, #0xC]
  00060	e3530003	 cmp         r3, #3
  00064	0a000013	 beq         |$L38907|
  00068	e59d300c	 ldr         r3, [sp, #0xC]
  0006c	e3530004	 cmp         r3, #4
  00070	0a000015	 beq         |$L38909|
  00074	e59d300c	 ldr         r3, [sp, #0xC]
  00078	e3530005	 cmp         r3, #5
  0007c	0a000017	 beq         |$L38911|
  00080	e59d300c	 ldr         r3, [sp, #0xC]
  00084	e3530006	 cmp         r3, #6
  00088	0a000019	 beq         |$L38913|
  0008c	ea00001c	 b           |$L38899|
  00090		 |$L38902|

; 300  :             case WAIT_TYPE_BUSY:
; 301  :                 if (bStatusRead & ATA_STATUS_BUSY)  

  00090	e5dd3000	 ldrb        r3, [sp]
  00094	e3130080	 tst         r3, #0x80
  00098	0a000000	 beq         |$L38903|

; 302  :                 {
; 303  : //                    DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_BUSY\r\n")));
; 304  :                     goto ExitDone;

  0009c	ea000026	 b           |$ExitDone$38904|
  000a0		 |$L38903|

; 305  :                 }
; 306  :                 break;

  000a0	ea000017	 b           |$L38899|
  000a4		 |$L38905|

; 307  : 
; 308  :             case WAIT_TYPE_NOT_BUSY:
; 309  :                 if (!(bStatusRead & ATA_STATUS_BUSY))  

  000a4	e5dd3000	 ldrb        r3, [sp]
  000a8	e3130080	 tst         r3, #0x80
  000ac	1a000000	 bne         |$L38906|

; 310  :                 {
; 311  : //                    DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_NOT_BUSY\r\n")));
; 312  :                     goto ExitDone;

  000b0	ea000021	 b           |$ExitDone$38904|
  000b4		 |$L38906|

; 313  :                 }
; 314  :                 break;

  000b4	ea000012	 b           |$L38899|
  000b8		 |$L38907|

; 315  : 
; 316  :             case WAIT_TYPE_READY:
; 317  :                 if (bStatusRead & ATA_STATUS_READY) 

  000b8	e5dd3000	 ldrb        r3, [sp]
  000bc	e3130040	 tst         r3, #0x40
  000c0	0a000000	 beq         |$L38908|

; 318  :                 {
; 319  : //                    DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_READY\r\n")));
; 320  :                     // DelayInuSec(100);
; 321  :                     goto ExitDone;

  000c4	ea00001c	 b           |$ExitDone$38904|
  000c8		 |$L38908|

; 322  :                 }
; 323  :                 break;

  000c8	ea00000d	 b           |$L38899|
  000cc		 |$L38909|

; 324  : 
; 325  :             case WAIT_TYPE_DRQ: 
; 326  :                 if (bStatusRead & ATA_STATUS_DATA_REQ) 

  000cc	e5dd3000	 ldrb        r3, [sp]
  000d0	e3130008	 tst         r3, #8
  000d4	0a000000	 beq         |$L38910|

; 327  :                 {
; 328  : //                    DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_DRQ\r\n")));
; 329  :                     goto ExitDone;

  000d8	ea000017	 b           |$ExitDone$38904|
  000dc		 |$L38910|

; 330  :                 }
; 331  :                 break;

  000dc	ea000008	 b           |$L38899|
  000e0		 |$L38911|

; 332  : 
; 333  :             case WAIT_TYPE_NOT_DRQ:
; 334  :                 if (!(bStatusRead & ATA_STATUS_DATA_REQ)) 

  000e0	e5dd3000	 ldrb        r3, [sp]
  000e4	e3130008	 tst         r3, #8
  000e8	1a000000	 bne         |$L38912|

; 335  :                 {
; 336  : //                    DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_NOT_DRQ\r\n")));
; 337  :                     goto ExitDone;

  000ec	ea000012	 b           |$ExitDone$38904|
  000f0		 |$L38912|

; 338  :                 }
; 339  :                 break;

  000f0	ea000003	 b           |$L38899|
  000f4		 |$L38913|

; 340  :                 
; 341  :             case WAIT_TYPE_ERROR: 
; 342  :                 if (bStatusRead & ATA_STATUS_ERROR) 

  000f4	e5dd3000	 ldrb        r3, [sp]
  000f8	e3130001	 tst         r3, #1
  000fc	0a000000	 beq         |$L38914|

; 343  :                 {
; 344  : //                    DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_ERROR\r\n")));
; 345  :                     goto ExitDone;

  00100	ea00000d	 b           |$ExitDone$38904|
  00104		 |$L38914|
  00104		 |$L38899|

; 346  :                 }
; 347  :                 break;                
; 348  :         }       
; 349  :         if ((int)dwTimeOut > 0) 

  00104	e59d301c	 ldr         r3, [sp, #0x1C]
  00108	e3530000	 cmp         r3, #0
  0010c	da000006	 ble         |$L38916|

; 350  :         {
; 351  :             DelayInuSec(dwPeriod);

  00110	e59d0020	 ldr         r0, [sp, #0x20]
  00114	eb000000	 bl          DelayInuSec

; 352  :             dwTimeOut -= dwPeriod;

  00118	e59d201c	 ldr         r2, [sp, #0x1C]
  0011c	e59d3020	 ldr         r3, [sp, #0x20]
  00120	e0423003	 sub         r3, r2, r3
  00124	e58d301c	 str         r3, [sp, #0x1C]

; 353  :         } 
; 354  :         else 

  00128	ea000002	 b           |$L38917|
  0012c		 |$L38916|

; 355  :         {
; 356  :             // DEBUGMSG(ZONE_ERROR, (TEXT("ATAPI:WaitForDisc - TimeOut !!! WaitType = %ld Status=%02X\r\n"), bStatusType, bStatusRead));
; 357  :             return ERROR_GEN_FAILURE;

  0012c	e3a0301f	 mov         r3, #0x1F
  00130	e58d3004	 str         r3, [sp, #4]
  00134	ea000002	 b           |$L38892|
  00138		 |$L38917|

; 358  :         }    
; 359  :     }

  00138	eaffffbb	 b           |$L38896|
  0013c		 |$ExitDone$38904|

; 360  : 
; 361  : ExitDone:
; 362  :     return ERROR_SUCCESS;

  0013c	e3a03000	 mov         r3, #0
  00140	e58d3004	 str         r3, [sp, #4]
  00144		 |$L38892|

; 355  :         {
; 356  :             // DEBUGMSG(ZONE_ERROR, (TEXT("ATAPI:WaitForDisc - TimeOut !!! WaitType = %ld Status=%02X\r\n"), bStatusType, bStatusRead));
; 357  :             return ERROR_GEN_FAILURE;

  00144	e59d0004	 ldr         r0, [sp, #4]

; 363  : }

  00148	e28dd010	 add         sp, sp, #0x10
  0014c	e89d6000	 ldmia       sp, {sp, lr}
  00150	e12fff1e	 bx          lr
  00154		 |$M39457|

			 ENDP  ; |WaitForDisc_P|

	EXPORT	|WaitForDisc|

  00000			 AREA	 |.text| { |WaitForDisc| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$WaitForDisc|, PDATA, SELECTION=5, ASSOC=|.text| { |WaitForDisc| } ; comdat associative
|$T39467| DCD	|$L39466|
	DCD	0x40001104
; Function compile flags: /Ods

  00000			 AREA	 |.text| { |WaitForDisc| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |WaitForDisc| PROC

; 365  : {

  00000		 |$L39466|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0003	 stmdb       sp!, {r0, r1}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd00c	 sub         sp, sp, #0xC
  00010		 |$M39464|

; 366  :     DWORD dwPeriod =0;

  00010	e3a03000	 mov         r3, #0
  00014	e58d3000	 str         r3, [sp]

; 367  :     return WaitForDisc_P(bStatusType, dwTimeOut, dwPeriod);

  00018	e59d2000	 ldr         r2, [sp]
  0001c	e59d1018	 ldr         r1, [sp, #0x18]
  00020	e5dd0014	 ldrb        r0, [sp, #0x14]
  00024	eb000000	 bl          WaitForDisc_P
  00028	e58d0008	 str         r0, [sp, #8]
  0002c	e59d3008	 ldr         r3, [sp, #8]
  00030	e58d3004	 str         r3, [sp, #4]
  00034	e59d0004	 ldr         r0, [sp, #4]

; 368  : }

  00038	e28dd00c	 add         sp, sp, #0xC
  0003c	e89d6000	 ldmia       sp, {sp, lr}
  00040	e12fff1e	 bx          lr
  00044		 |$M39465|

			 ENDP  ; |WaitForDisc|

	EXPORT	|ide_enable|
	EXPORT	|??_C@_0BI@DOMOKOHO@Enable?5IDE?5controller?$AN?6?$AA@| [ DATA ] ; `string'
	IMPORT	|EdbgOutputDebugString|

  00000			 AREA	 |.text| { |ide_enable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$ide_enable|, PDATA, SELECTION=5, ASSOC=|.text| { |ide_enable| } ; comdat associative
|$T39474| DCD	|$L39473|
	DCD	0x40001a01

  00000			 AREA	 |.rdata| { |??_C@_0BI@DOMOKOHO@Enable?5IDE?5controller?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@DOMOKOHO@Enable?5IDE?5controller?$AN?6?$AA@| DCB "Enable IDE c"
	DCB	"ontroller", 0xd, 0xa, 0x0		; `string'
; Function compile flags: /Ods

  00000			 AREA	 |.text| { |ide_enable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |ide_enable| PROC

; 370  : {

  00000		 |$L39473|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M39471|

; 371  : 
; 372  :     SERPRINT("Enable IDE controller\r\n");

  00004	e59f0058	 ldr         r0, [pc, #0x58]
  00008	eb000000	 bl          EdbgOutputDebugString

; 373  : 
; 374  :     *IDE_CFG    = 0; 

  0000c	e59f204c	 ldr         r2, [pc, #0x4C]
  00010	e3a03000	 mov         r3, #0
  00014	e5823000	 str         r3, [r2]

; 375  : 
; 376  :     //
; 377  :     // Initialize the IDE interface to PIO mode 4.
; 378  :     //
; 379  :     *IDE_CFG    = IDE_CFG_IDEEN | IDE_CFG_PIOEN | IDE_CFG_PIO4 | (1 <<IDE_CFG_WST_SHIFT);

  00018	e59f2040	 ldr         r2, [pc, #0x40]
  0001c	e3a03d05	 mov         r3, #5, 26
  00020	e3833003	 orr         r3, r3, #3
  00024	e5823000	 str         r3, [r2]

; 380  : 
; 381  :     *IDE_CTRL   = IDE_CTRL_DIOR | IDE_CTRL_DIOW | CSDA_DATA_REG;

  00028	e3a03102	 mov         r3, #2, 2
  0002c	e383280a	 orr         r2, r3, #0xA, 16
  00030	e3a03062	 mov         r3, #0x62
  00034	e5823000	 str         r3, [r2]

; 382  : 
; 383  : 
; 384  :     //
; 385  :     // Make sure that MDMA and UDMA are disabled.
; 386  :     //
; 387  :     *IDE_MDMAOP = 0;

  00038	e59f201c	 ldr         r2, [pc, #0x1C]
  0003c	e3a03000	 mov         r3, #0
  00040	e5823000	 str         r3, [r2]

; 388  :     *IDE_UDMAOP = 0;    

  00044	e59f200c	 ldr         r2, [pc, #0xC]
  00048	e3a03000	 mov         r3, #0
  0004c	e5823000	 str         r3, [r2]

; 389  : 
; 390  : //    SelectDevice();
; 391  : //    WriteDriveController( ATA_CTRL_ENABLE_INTR);
; 392  : //    SelectDevice();
; 393  : //    WriteAltDriveController(ATA_CTRL_ENABLE_INTR);
; 394  : //    
; 395  : }

  00050	e49de004	 ldr         lr, [sp], #4
  00054	e12fff1e	 bx          lr
  00058		 |$L39476|
  00058	800a000c	 DCD         0x800a000c
  0005c	800a0008	 DCD         0x800a0008
  00060	800a0004	 DCD         0x800a0004
  00064	00000000	 DCD         |??_C@_0BI@DOMOKOHO@Enable?5IDE?5controller?$AN?6?$AA@|
  00068		 |$M39472|

			 ENDP  ; |ide_enable|

	EXPORT	|??_C@_0CP@GPAFOMID@ATAPI?3?3ResetController?5Drive?52?5s@| [ DATA ] ; `string'
	EXPORT	|??_C@_0CK@FFOACHGO@ATAPI?3?3ResetController?5no?5second@| [ DATA ] ; `string'
	EXPORT	|??_C@_0EC@LGMMBIF@ATAPIPCI?3AtaResetController?5no?5r@| [ DATA ] ; `string'
	EXPORT	|ide_reset|

  00000			 AREA	 |.text| { |ide_reset| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$ide_reset|, PDATA, SELECTION=5, ASSOC=|.text| { |ide_reset| } ; comdat associative
|$T39483| DCD	|$L39482|
	DCD	0x40005b02

  00000			 AREA	 |.rdata| { |??_C@_0EC@LGMMBIF@ATAPIPCI?3AtaResetController?5no?5r@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0EC@LGMMBIF@ATAPIPCI?3AtaResetController?5no?5r@| DCB "ATAPIPCI:At"
	DCB	"aResetController no response after %d reset attempts", 0xd
	DCB	0xa, 0x0				; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CK@FFOACHGO@ATAPI?3?3ResetController?5no?5second@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CK@FFOACHGO@ATAPI?3?3ResetController?5no?5second@| DCB "ATAPI::Re"
	DCB	"setController no second device", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CP@GPAFOMID@ATAPI?3?3ResetController?5Drive?52?5s@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CP@GPAFOMID@ATAPI?3?3ResetController?5Drive?52?5s@| DCB "ATAPI::R"
	DCB	"esetController Drive 2 status = 0x%X", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ods

  00000			 AREA	 |.text| { |ide_reset| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |ide_reset| PROC

; 397  : {

  00000		 |$L39482|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004	e24dd010	 sub         sp, sp, #0x10
  00008		 |$M39480|

; 398  :     DWORD dwAttempts;
; 399  :     BYTE   bStatus;
; 400  : 
; 401  : 
; 402  : //    if( m_BootDeviceType == BOOT_FROM_PCMCIA)
; 403  : //    {
; 404  : //        DEBUGMSG(ZONE_INFO, (TEXT("ide_reset: entered.\r\n")));
; 405  : //        WAIT_IDE_BUSY;
; 406  : //        WRITE_IDE_UCHAR(IDE_ALT_CTRL_REG,IDE_ALT_CTRL_SRST | IDE_ALT_CTRL_DSBL_INTR);
; 407  : //        DelayInMsec(4);
; 408  : //        WRITE_IDE_UCHAR(IDE_ALT_CTRL_REG,IDE_ALT_CTRL_DSBL_INTR);
; 409  : //        WAIT_IDE_NOT_DRDY;
; 410  : //        WAIT_IDE_BUSY;
; 411  : //        if(IS_IDE_ERROR)
; 412  : //        {
; 413  : //            DEBUGMSG(1, (TEXT("WARNING: Drive reset failed.\r\n")));
; 414  : //        }
; 415  : //
; 416  : //        DEBUGMSG(ZONE_INFO, (TEXT("ide_reset: done.\r\n")));
; 417  : //        return 0;
; 418  : //    }
; 419  : //
; 420  : //    WriteAltDriveController( 0x8);
; 421  :     // Read the status first
; 422  :     bStatus = GetBaseStatus();

  00008	eb000000	 bl          GetBaseStatus
  0000c	e5cd000c	 strb        r0, [sp, #0xC]
  00010	e5dd300c	 ldrb        r3, [sp, #0xC]
  00014	e5cd3004	 strb        r3, [sp, #4]

⌨️ 快捷键说明

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