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

📄 ide.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:

; 423  :     WriteAltDriveController(ATA_CTRL_RESET | ATA_CTRL_ENABLE_INTR);

  00018	e3a00004	 mov         r0, #4
  0001c	eb000000	 bl          WriteAltDriveController

; 424  :     
; 425  :     WaitForDisc( WAIT_TYPE_BUSY, 5000);

  00020	e3a03d4e	 mov         r3, #0x4E, 26
  00024	e3831008	 orr         r1, r3, #8
  00028	e3a00001	 mov         r0, #1
  0002c	eb000000	 bl          WaitForDisc

; 426  :     
; 427  :     WriteAltDriveController(ATA_CTRL_ENABLE_INTR);

  00030	e3a00000	 mov         r0, #0
  00034	eb000000	 bl          WriteAltDriveController

; 428  : 
; 429  :     WaitForDisc( WAIT_TYPE_READY, 4000);

  00038	e3a01efa	 mov         r1, #0xFA, 28
  0003c	e3a00003	 mov         r0, #3
  00040	eb000000	 bl          WaitForDisc

; 430  : //    if (bSoftReset) 
; 431  : //    {
; 432  : //    SERPRINT("ATAPI:ResetController ...performing soft reset !\r\n");
; 433  : //        AtapiSoftReset();
; 434  : //    } 
; 435  : //    else 
; 436  :     {
; 437  :         DelayInuSec(50000);

  00044	e3a03cc3	 mov         r3, #0xC3, 24
  00048	e3830050	 orr         r0, r3, #0x50
  0004c	eb000000	 bl          DelayInuSec

; 438  :     }    
; 439  : #define MAX_RESET_ATTEMPTS          10
; 440  : 
; 441  :     for (dwAttempts = 0; dwAttempts < MAX_RESET_ATTEMPTS; dwAttempts++)

  00050	e3a03000	 mov         r3, #0
  00054	e58d3000	 str         r3, [sp]
  00058	ea000002	 b           |$L38937|
  0005c		 |$L38938|
  0005c	e59d3000	 ldr         r3, [sp]
  00060	e2833001	 add         r3, r3, #1
  00064	e58d3000	 str         r3, [sp]
  00068		 |$L38937|
  00068	e59d3000	 ldr         r3, [sp]
  0006c	e353000a	 cmp         r3, #0xA
  00070	2a00002b	 bcs         |$L38939|

; 442  :     {
; 443  :         bStatus = GetBaseStatus();

  00074	eb000000	 bl          GetBaseStatus
  00078	e5cd000d	 strb        r0, [sp, #0xD]
  0007c	e5dd300d	 ldrb        r3, [sp, #0xD]
  00080	e5cd3004	 strb        r3, [sp, #4]

; 444  :         
; 445  :         if ((bStatus != ATA_STATUS_IDLE) && (bStatus != 0x0))

  00084	e5dd3004	 ldrb        r3, [sp, #4]
  00088	e3530050	 cmp         r3, #0x50
  0008c	0a000022	 beq         |$L38940|
  00090	e5dd3004	 ldrb        r3, [sp, #4]
  00094	e3530000	 cmp         r3, #0
  00098	0a00001f	 beq         |$L38940|

; 446  :         {
; 447  :             
; 448  :             if (bStatus == 0xFF)

  0009c	e5dd3004	 ldrb        r3, [sp, #4]
  000a0	e35300ff	 cmp         r3, #0xFF
  000a4	1a000018	 bne         |$L38941|

; 449  :             {
; 450  :                 SetDriveHead( ATA_HEAD_DRIVE_2);

  000a8	e3a000b0	 mov         r0, #0xB0
  000ac	eb000000	 bl          SetDriveHead

; 451  :                 
; 452  :                 bStatus = GetBaseStatus();

  000b0	eb000000	 bl          GetBaseStatus
  000b4	e5cd000e	 strb        r0, [sp, #0xE]
  000b8	e5dd300e	 ldrb        r3, [sp, #0xE]
  000bc	e5cd3004	 strb        r3, [sp, #4]

; 453  :                 
; 454  :                 if ((bStatus != ATA_STATUS_IDLE) && (bStatus != 0x0))

  000c0	e5dd3004	 ldrb        r3, [sp, #4]
  000c4	e3530050	 cmp         r3, #0x50
  000c8	0a00000e	 beq         |$L38942|
  000cc	e5dd3004	 ldrb        r3, [sp, #4]
  000d0	e3530000	 cmp         r3, #0
  000d4	0a00000b	 beq         |$L38942|

; 455  :                 {
; 456  :                     SERPRINT("ATAPI::ResetController Drive 2 status = 0x%X\r\n", bStatus);

  000d8	e5dd1004	 ldrb        r1, [sp, #4]
  000dc	e59f0084	 ldr         r0, [pc, #0x84]
  000e0	eb000000	 bl          EdbgOutputDebugString

; 457  :                     
; 458  :                     if (bStatus == 0xFF)

  000e4	e5dd3004	 ldrb        r3, [sp, #4]
  000e8	e35300ff	 cmp         r3, #0xFF
  000ec	1a000004	 bne         |$L38944|

; 459  :                     {
; 460  :                         SERPRINT("ATAPI::ResetController no second device\r\n");

  000f0	e59f006c	 ldr         r0, [pc, #0x6C]
  000f4	eb000000	 bl          EdbgOutputDebugString

; 461  :                         return -1;

  000f8	e3e03000	 mvn         r3, #0
  000fc	e58d3008	 str         r3, [sp, #8]
  00100	ea000012	 b           |$L38934|
  00104		 |$L38944|

; 462  :                     }
; 463  :                 }
; 464  :                 else

  00104	ea000000	 b           |$L38946|
  00108		 |$L38942|

; 465  :                 {
; 466  :                     break;

  00108	ea000005	 b           |$L38939|
  0010c		 |$L38946|
  0010c		 |$L38941|

; 467  :                 }
; 468  :             }
; 469  :             DelayInuSec(50000);

  0010c	e3a03cc3	 mov         r3, #0xC3, 24
  00110	e3830050	 orr         r0, r3, #0x50
  00114	eb000000	 bl          DelayInuSec

; 470  :         } 
; 471  :         else 

  00118	ea000000	 b           |$L38947|
  0011c		 |$L38940|

; 472  :         {
; 473  :             break;

  0011c	ea000000	 b           |$L38939|
  00120		 |$L38947|

; 474  :         }
; 475  :     }

  00120	eaffffcd	 b           |$L38938|
  00124		 |$L38939|

; 476  :     if (dwAttempts == MAX_RESET_ATTEMPTS)

  00124	e59d3000	 ldr         r3, [sp]
  00128	e353000a	 cmp         r3, #0xA
  0012c	1a000005	 bne         |$L38948|

; 477  :     {
; 478  :         SERPRINT("ATAPIPCI:AtaResetController no response after %d reset attempts\r\n", MAX_RESET_ATTEMPTS);

  00130	e3a0100a	 mov         r1, #0xA
  00134	e59f0024	 ldr         r0, [pc, #0x24]
  00138	eb000000	 bl          EdbgOutputDebugString

; 479  :         return -1;

  0013c	e3e03000	 mvn         r3, #0
  00140	e58d3008	 str         r3, [sp, #8]
  00144	ea000001	 b           |$L38934|
  00148		 |$L38948|

; 480  :     }
; 481  :     return 0;

  00148	e3a03000	 mov         r3, #0
  0014c	e58d3008	 str         r3, [sp, #8]
  00150		 |$L38934|

; 461  :                         return -1;

  00150	e59d0008	 ldr         r0, [sp, #8]

; 482  : }

  00154	e28dd010	 add         sp, sp, #0x10
  00158	e49de004	 ldr         lr, [sp], #4
  0015c	e12fff1e	 bx          lr
  00160		 |$L39485|
  00160	00000000	 DCD         |??_C@_0EC@LGMMBIF@ATAPIPCI?3AtaResetController?5no?5r@|
  00164	00000000	 DCD         |??_C@_0CK@FFOACHGO@ATAPI?3?3ResetController?5no?5second@|
  00168	00000000	 DCD         |??_C@_0CP@GPAFOMID@ATAPI?3?3ResetController?5Drive?52?5s@|
  0016c		 |$M39481|

			 ENDP  ; |ide_reset|

	EXPORT	|WaitOnBusy|

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

  00000			 AREA	 |.pdata$$WaitOnBusy|, PDATA, SELECTION=5, ASSOC=|.text| { |WaitOnBusy| } ; comdat associative
|$T39494| DCD	|$L39493|
	DCD	0x40003904
; Function compile flags: /Ods

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

  00000		 |WaitOnBusy| PROC

; 488  : { 

  00000		 |$L39493|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0001	 stmdb       sp!, {r0}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd01c	 sub         sp, sp, #0x1C
  00010		 |$M39491|

; 489  :     DWORD i,j;
; 490  :     BYTE bStatus;
; 491  :     for (i=0; i< DEFAULT_WAIT_CHECK_ITER; i++)   

  00010	e3a03000	 mov         r3, #0
  00014	e58d3004	 str         r3, [sp, #4]
  00018	ea000002	 b           |$L38957|
  0001c		 |$L38958|
  0001c	e59d3004	 ldr         r3, [sp, #4]
  00020	e2833001	 add         r3, r3, #1
  00024	e58d3004	 str         r3, [sp, #4]
  00028		 |$L38957|
  00028	e59d3004	 ldr         r3, [sp, #4]
  0002c	e3530e7d	 cmp         r3, #0x7D, 28
  00030	2a000023	 bcs         |$L38959|

; 492  :     {
; 493  :         for (j=0; j<DEFAULT_WAIT_SAMPLE_TIMES; j++)  

  00034	e3a03000	 mov         r3, #0
  00038	e58d3008	 str         r3, [sp, #8]
  0003c	ea000002	 b           |$L38960|
  00040		 |$L38961|
  00040	e59d3008	 ldr         r3, [sp, #8]
  00044	e2833001	 add         r3, r3, #1
  00048	e58d3008	 str         r3, [sp, #8]
  0004c		 |$L38960|
  0004c	e59d3008	 ldr         r3, [sp, #8]
  00050	e3530064	 cmp         r3, #0x64
  00054	2a000017	 bcs         |$L38962|

; 494  :         {
; 495  :             bStatus = fBase ? GetBaseStatus() : GetAltStatus();

  00058	e59d3024	 ldr         r3, [sp, #0x24]
  0005c	e3530000	 cmp         r3, #0
  00060	0a000004	 beq         |$L39488|
  00064	eb000000	 bl          GetBaseStatus
  00068	e5cd0010	 strb        r0, [sp, #0x10]
  0006c	e5dd3010	 ldrb        r3, [sp, #0x10]
  00070	e58d3014	 str         r3, [sp, #0x14]
  00074	ea000003	 b           |$L39489|
  00078		 |$L39488|
  00078	eb000000	 bl          GetAltStatus
  0007c	e5cd0018	 strb        r0, [sp, #0x18]
  00080	e5dd3018	 ldrb        r3, [sp, #0x18]
  00084	e58d3014	 str         r3, [sp, #0x14]
  00088		 |$L39489|
  00088	e59d3014	 ldr         r3, [sp, #0x14]
  0008c	e20330ff	 and         r3, r3, #0xFF
  00090	e5cd3000	 strb        r3, [sp]

; 496  :             if (!(bStatus & ATA_STATUS_BUSY)) 

  00094	e5dd3000	 ldrb        r3, [sp]
  00098	e3130080	 tst         r3, #0x80
  0009c	1a000004	 bne         |$L38963|

; 497  :             {
; 498  :                 return bStatus & (ATA_STATUS_ERROR |ATA_STATUS_BUSY);

  000a0	e5dd3000	 ldrb        r3, [sp]
  000a4	e2033081	 and         r3, r3, #0x81
  000a8	e20330ff	 and         r3, r3, #0xFF
  000ac	e5cd300c	 strb        r3, [sp, #0xC]
  000b0	ea000007	 b           |$L38953|
  000b4		 |$L38963|

; 499  :             }    
; 500  :         }

  000b4	eaffffe1	 b           |$L38961|
  000b8		 |$L38962|

; 501  :        DelayInuSec(DEFAULT_WAIT_STALL_TIME);            

  000b8	e3a00efa	 mov         r0, #0xFA, 28
  000bc	eb000000	 bl          DelayInuSec

; 502  :     }

  000c0	eaffffd5	 b           |$L38958|
  000c4		 |$L38959|

; 503  :     return bStatus & (ATA_STATUS_ERROR |ATA_STATUS_BUSY);

  000c4	e5dd3000	 ldrb        r3, [sp]
  000c8	e2033081	 and         r3, r3, #0x81
  000cc	e20330ff	 and         r3, r3, #0xFF
  000d0	e5cd300c	 strb        r3, [sp, #0xC]
  000d4		 |$L38953|

; 497  :             {
; 498  :                 return bStatus & (ATA_STATUS_ERROR |ATA_STATUS_BUSY);

  000d4	e5dd000c	 ldrb        r0, [sp, #0xC]

; 504  : }

  000d8	e28dd01c	 add         sp, sp, #0x1C
  000dc	e89d6000	 ldmia       sp, {sp, lr}
  000e0	e12fff1e	 bx          lr
  000e4		 |$M39492|

			 ENDP  ; |WaitOnBusy|

	EXPORT	|IsAtapiDevice|

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

  00000			 AREA	 |.pdata$$IsAtapiDevice|, PDATA, SELECTION=5, ASSOC=|.text| { |IsAtapiDevice| } ; comdat associative
|$T39504| DCD	|$L39503|
	DCD	0x40001201
; Function compile flags: /Ods

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

  00000		 |IsAtapiDevice| PROC

; 507  : {

  00000		 |$L39503|
  00000	e24dd008	 sub         sp, sp, #8
  00004		 |$M39501|

; 508  : //        return (m_Id.GeneralConfiguration & IDE_IDDATA_ATAPI_DEVICE);
; 509  :     return (m_BootDeviceType==BOOT_FROM_IDE_CDROM);

  00004	e59f3038	 ldr         r3, [pc, #0x38]
  00008	e5932000	 ldr         r2, [r3]
  0000c	e3a03c02	 mov         r3, #2, 24
  00010	e3833002	 orr         r3, r3, #2
  00014	e1520003	 cmp         r2, r3
  00018	1a000002	 bne         |$L39498|
  0001c	e3a03001	 mov         r3, #1
  00020	e58d3004	 str         r3, [sp, #4]
  00024	ea000001	 b           |$L39499|
  00028		 |$L39498|
  00028	e3a03000	 mov         r3, #0
  0002c	e58d3004	 str         r3, [sp, #4]
  00030		 |$L39499|
  00030	e59d3004	 ldr         r3, [sp, #4]
  00034	e58d3000	 str         r3, [sp]
  00038	e59d0000	 ldr         r0, [sp]

; 510  : }    

  0003c	e28dd008	 add         sp, sp, #8
  00040	e12fff1e	 bx          lr
  00044		 |$L39506|
  00044	00000000	 DCD         |m_BootDeviceType|
  00048		 |$M39502|

			 ENDP  ; |IsAtapiDevice|

	EXPORT	|AtapiSoftReset|

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

  00000			 AREA	 |.pdata$$AtapiSoftReset|, PDATA, SELECTION=5, ASSOC=|.text| { |AtapiSoftReset| } ; comdat associative
|$T39512| DCD	|$L39511|
	DCD	0x40001001
; Function compile flags: /Ods

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

  00000		 |AtapiSoftReset| PROC

; 513  : {

  00000		 |$L39511|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M39509|

; 514  :     WriteCommand( ATAPI_CMD_SOFT_RESET);

  00004	e3a00008	 mov         r0, #8
  00008	eb000000	 bl          WriteCommand

; 515  :     DelayInuSec(400);

  0000c	e3a00e19	 mov         r0, #0x19, 28
  00010	eb000000	 bl          DelayInuSec

; 516  :     WaitForDisc_P(WAIT_TYPE_NOT_BUSY,4000, 100);

  00014	e3a02064	 mov         r2, #0x64
  00018	e3a01efa	 mov         r1, #0xFA, 28
  0001c	e3a00002	 mov         r0, #2
  00020	eb000000	 bl          WaitForDisc_P

; 517  :     WaitForDisc_P(WAIT_TYPE_READY,5000, 100);

  00024	e3a02064	 mov         r2, #0x64
  00028	e3a03d4e	 mov         r3, #0x4E, 26
  0002c	e3831008	 orr         r1, r3, #8
  00030	e3a00003	 mov         r0, #3
  00034	eb000000	 bl          WaitForDisc_P

; 518  : }

  00038	e4

⌨️ 快捷键说明

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