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

📄 atapiio.cod

📁 PXA270的BSP
💻 COD
📖 第 1 页 / 共 4 页
字号:
			 ENDP  ; |?WriteSectorNumber@CDisk@@QAAXE@Z|, CDisk::WriteSectorNumber

	EXPORT	|?WriteLowCount@CDisk@@QAAXE@Z|		; CDisk::WriteLowCount

  00000			 AREA	 |.text| { |?WriteLowCount@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$?WriteLowCount@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteLowCount@CDisk@@QAAXE@Z| } ; comdat associative
|$T33158| DCD	|$L33157|
	DCD	0x40000601
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?WriteLowCount@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |?WriteLowCount@CDisk@@QAAXE@Z| PROC	; CDisk::WriteLowCount

; 486  :     inline void WriteLowCount(BYTE bValue) {

  00000		 |$L33157|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M33155|

; 487  :         ATA_WRITE_BYTE( (volatile PBYTE) m_pATAReg + m_dwByteCountLowOffset, bValue);

  00004	e59f0008	 ldr         r0, [pc, #8]
  00008	eb000000	 bl          WRITE_PORT_UCHAR

; 488  :     }

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$L33160|
  00014	b6a00080	 DCD         0xb6a00080
  00018		 |$M33156|

			 ENDP  ; |?WriteLowCount@CDisk@@QAAXE@Z|, CDisk::WriteLowCount

	EXPORT	|?WriteHighCount@CDisk@@QAAXE@Z|	; CDisk::WriteHighCount

  00000			 AREA	 |.text| { |?WriteHighCount@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$?WriteHighCount@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteHighCount@CDisk@@QAAXE@Z| } ; comdat associative
|$T33167| DCD	|$L33166|
	DCD	0x40000601
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?WriteHighCount@CDisk@@QAAXE@Z| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |?WriteHighCount@CDisk@@QAAXE@Z| PROC	; CDisk::WriteHighCount

; 490  :      inline void WriteHighCount(BYTE bValue) {

  00000		 |$L33166|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M33164|

; 491  :         ATA_WRITE_BYTE( (volatile PBYTE) m_pATAReg + m_dwByteCountHighOffset, bValue);

  00004	e59f0008	 ldr         r0, [pc, #8]
  00008	eb000000	 bl          WRITE_PORT_UCHAR

; 492  :     }

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$L33169|
  00014	b6a000a0	 DCD         0xb6a000a0
  00018		 |$M33165|

			 ENDP  ; |?WriteHighCount@CDisk@@QAAXE@Z|, CDisk::WriteHighCount

	EXPORT	|?WaitOnBusy@CDisk@@QAAEH@Z|		; CDisk::WaitOnBusy

  00000			 AREA	 |.text| { |?WaitOnBusy@CDisk@@QAAEH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?WaitOnBusy@CDisk@@QAAEH@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WaitOnBusy@CDisk@@QAAEH@Z| } ; comdat associative
|$T33202| DCD	|$L33201|
	DCD	0x40001f01
; Function compile flags: /Ogsy
; File d:\wince500\platform\bvdmain\drivers\atapi\atapiio.cpp

  00000			 AREA	 |.text| { |?WaitOnBusy@CDisk@@QAAEH@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?WaitOnBusy@CDisk@@QAAEH@Z| PROC	; CDisk::WaitOnBusy

; 92   : { 

  00000		 |$L33201|
  00000	e92d41f0	 stmdb       sp!, {r4 - r8, lr}
  00004		 |$M33199|
  00004	e1a07001	 mov         r7, r1
  00008	e1a08000	 mov         r8, r0

; 93   :     DWORD i,j;
; 94   :     BYTE bStatus;
; 95   :     for (i=0; i< DEFAULT_WAIT_CHECK_ITER; i++)   {

  0000c	e3a06000	 mov         r6, #0
  00010		 |$L32808|

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

  00010	e3a05000	 mov         r5, #0
  00014		 |$L32811|

; 97   :             bStatus = fBase ? GetBaseStatus() : GetAltStatus();

  00014	e3570000	 cmp         r7, #0
  00018	159f0058	 ldrne       r0, [pc, #0x58]
  0001c	059f0050	 ldreq       r0, [pc, #0x50]
  00020	eb000000	 bl          READ_PORT_UCHAR
  00024	e1a04000	 mov         r4, r0

; 98   :             if (!(bStatus & ATA_STATUS_BUSY)) {

  00028	e3140080	 tst         r4, #0x80
  0002c	0a00000d	 beq         |$L32810|
  00030	e2855001	 add         r5, r5, #1
  00034	e3550064	 cmp         r5, #0x64
  00038	3afffff5	 bcc         |$L32811|

; 100  :             }    
; 101  :         }
; 102  :        StallExecution(DEFAULT_WAIT_STALL_TIME);            

  0003c	e5983004	 ldr         r3, [r8, #4]
  00040	e3130301	 tst         r3, #1, 6
  00044	0a000002	 beq         |$L33184|
  00048	e3a00004	 mov         r0, #4
  0004c	eb000000	 bl          Sleep
  00050	ea000001	 b           |$L32809|
  00054		 |$L33184|
  00054	e3a00efa	 mov         r0, #0xFA, 28
  00058	eb000000	 bl          StallExecution
  0005c		 |$L32809|
  0005c	e2866001	 add         r6, r6, #1
  00060	e3560e7d	 cmp         r6, #0x7D, 28
  00064	3affffe9	 bcc         |$L32808|
  00068		 |$L32810|

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

  00068	e2040081	 and         r0, r4, #0x81

; 103  :     }
; 104  :     return bStatus & (ATA_STATUS_ERROR |ATA_STATUS_BUSY);
; 105  : }

  0006c	e8bd41f0	 ldmia       sp!, {r4 - r8, lr}
  00070	e12fff1e	 bx          lr
  00074		 |$L33204|
  00074	b6b000c0	 DCD         0xb6b000c0
  00078	b6a000e0	 DCD         0xb6a000e0
  0007c		 |$M33200|

			 ENDP  ; |?WaitOnBusy@CDisk@@QAAEH@Z|, CDisk::WaitOnBusy

	EXPORT	|?WaitForDisc@CDisk@@QAAHEKK@Z|		; CDisk::WaitForDisc
; File d:\wince500\platform\bvdmain\drivers\atapi\diskmain.h

  00000			 AREA	 |.text| { |?WaitForDisc@CDisk@@QAAHEKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?WaitForDisc@CDisk@@QAAHEKK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WaitForDisc@CDisk@@QAAHEKK@Z| } ; comdat associative
|$T33234| DCD	|$L33233|
	DCD	0x40003901
; Function compile flags: /Ogsy
; File d:\wince500\platform\bvdmain\drivers\atapi\atapiio.cpp

  00000			 AREA	 |.text| { |?WaitForDisc@CDisk@@QAAHEKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?WaitForDisc@CDisk@@QAAHEKK@Z| PROC	; CDisk::WaitForDisc

; 108  : {

  00000		 |$L33233|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004		 |$M33231|
  00004	e1b06003	 movs        r6, r3
  00008	e1a05002	 mov         r5, r2
  0000c	e1a04001	 mov         r4, r1
  00010	e1a07000	 mov         r7, r0

; 109  :     BYTE bStatusRead;
; 110  : 
; 111  :     bStatusRead = 0;
; 112  : 
; 113  :     if (dwPeriod == 0)
; 114  :         dwPeriod = dwTimeOut;

  00014	01a06005	 moveq       r6, r5
  00018		 |$L32824|

; 115  : 
; 116  :     while( TRUE)  {
; 117  :         bStatusRead = GetAltStatus();

  00018	e59f00c0	 ldr         r0, [pc, #0xC0]
  0001c	eb000000	 bl          READ_PORT_UCHAR

; 118  :         switch (bStatusType)  {

  00020	e3540001	 cmp         r4, #1
  00024	0a00001c	 beq         |$L32830|
  00028	e3540002	 cmp         r4, #2
  0002c	0a000018	 beq         |$L32835|
  00030	e3540003	 cmp         r4, #3
  00034	0a00000c	 beq         |$L32839|
  00038	e3540004	 cmp         r4, #4
  0003c	0a000008	 beq         |$L32843|
  00040	e3540005	 cmp         r4, #5
  00044	0a000003	 beq         |$L32847|
  00048	e3540006	 cmp         r4, #6
  0004c	1a000014	 bne         |$L32831|

; 154  :                 
; 155  :             case WAIT_TYPE_ERROR: 
; 156  :                 if (bStatusRead & ATA_STATUS_ERROR) {

  00050	e3100001	 tst         r0, #1

; 157  :                     DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_ERROR\r\n")));
; 158  :                     goto ExitDone;
; 159  :                 }
; 160  :                 break;                

  00054	ea000011	 b           |$L33229|
  00058		 |$L32847|

; 147  : 
; 148  :             case WAIT_TYPE_NOT_DRQ:
; 149  :                 if (!(bStatusRead & ATA_STATUS_DATA_REQ)) {

  00058	e3100008	 tst         r0, #8
  0005c		 |$L33230|
  0005c	0a000019	 beq         |$ExitDone$32833|

; 150  :                     DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_NOT_DRQ\r\n")));
; 151  :                     goto ExitDone;
; 152  :                 }
; 153  :                 break;

  00060	ea00000f	 b           |$L32831|
  00064		 |$L32843|

; 137  :                     goto ExitDone;
; 138  :                 }
; 139  :                 break;
; 140  : 
; 141  :             case WAIT_TYPE_DRQ: 
; 142  :                 if (bStatusRead & ATA_STATUS_DATA_REQ) {

  00064	e3100008	 tst         r0, #8

; 143  :                     DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_DRQ\r\n")));
; 144  :                     goto ExitDone;
; 145  :                 }
; 146  :                 break;

  00068	ea00000c	 b           |$L33229|
  0006c		 |$L32839|

; 132  : 
; 133  :             case WAIT_TYPE_READY:
; 134  :                 if (bStatusRead & ATA_STATUS_READY) {

  0006c	e3100040	 tst         r0, #0x40
  00070	0a00000b	 beq         |$L32831|

; 135  :                     DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_READY\r\n")));
; 136  :                     StallExecution(100);

  00074	e5973004	 ldr         r3, [r7, #4]
  00078	e3130301	 tst         r3, #1, 6
  0007c	0a00000f	 beq         |$L33213|
  00080	e3a00001	 mov         r0, #1
  00084	eb000000	 bl          Sleep

; 170  : 
; 171  : ExitDone:
; 172  :     return ERROR_SUCCESS;

  00088	e3a00000	 mov         r0, #0

; 173  : }

  0008c	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  00090	e12fff1e	 bx          lr
  00094		 |$L32835|

; 121  :                     DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_BUSY\r\n")));
; 122  :                     goto ExitDone;
; 123  :                 }
; 124  :                 break;
; 125  : 
; 126  :             case WAIT_TYPE_NOT_BUSY:
; 127  :                 if (!(bStatusRead & ATA_STATUS_BUSY))  {

  00094	e3100080	 tst         r0, #0x80

; 128  :                     DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_NOT_BUSY\r\n")));
; 129  :                     goto ExitDone;
; 130  :                 }
; 131  :                 break;

  00098	eaffffef	 b           |$L33230|
  0009c		 |$L32830|

; 119  :             case WAIT_TYPE_BUSY:
; 120  :                 if (bStatusRead & ATA_STATUS_BUSY)  {

  0009c	e3100080	 tst         r0, #0x80
  000a0		 |$L33229|
  000a0	1a000008	 bne         |$ExitDone$32833|
  000a4		 |$L32831|

; 161  :         }       
; 162  :         if ((int)dwTimeOut > 0) {

  000a4	e3550000	 cmp         r5, #0
  000a8	da000009	 ble         |$L32856|

; 163  :             StallExecution(dwPeriod);

  000ac	e1a01006	 mov         r1, r6
  000b0	e1a00007	 mov         r0, r7
  000b4	eb000000	 bl          |?StallExecution@CDisk@@QAAXK@Z|

; 164  :             dwTimeOut -= dwPeriod;

  000b8	e0455006	 sub         r5, r5, r6

; 168  :         }    
; 169  :     }

  000bc	eaffffd5	 b           |$L32824|

; 135  :                     DEBUGMSG(ZONE_IO, (TEXT("ATAPI:WaitForDisc - WAIT_TYPE_READY\r\n")));
; 136  :                     StallExecution(100);

  000c0		 |$L33213|
  000c0	e3a00ffa	 mov         r0, #0xFA, 30
  000c4	eb000000	 bl          StallExecution
  000c8		 |$ExitDone$32833|

; 170  : 
; 171  : ExitDone:
; 172  :     return ERROR_SUCCESS;

  000c8	e3a00000	 mov         r0, #0

; 173  : }

  000cc	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  000d0	e12fff1e	 bx          lr
  000d4		 |$L32856|

; 165  :         } else {
; 166  :             DEBUGMSG(ZONE_ERROR, (TEXT("ATAPI:WaitForDisc - TimeOut !!! WaitType = %ld Status=%02X\r\n"), bStatusType, bStatusRead));
; 167  :             return ERROR_GEN_FAILURE;

  000d4	e3a0001f	 mov         r0, #0x1F

; 173  : }

  000d8	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  000dc	e12fff1e	 bx          lr
  000e0		 |$L33236|
  000e0	b6b000c0	 DCD         0xb6b000c0
  000e4		 |$M33232|

			 ENDP  ; |?WaitForDisc@CDisk@@QAAHEKK@Z|, CDisk::WaitForDisc

	EXPORT	|?WaitForDRQ@CDisk@@QAAHXZ|		; CDisk::WaitForDRQ
; File d:\wince500\platform\bvdmain\drivers\atapi\diskmain.h

  00000			 AREA	 |.text| { |?WaitForDRQ@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?WaitForDRQ@CDisk@@QAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?WaitForDRQ@CDisk@@QAAHXZ| } ; comdat associative
|$T33263| DCD	|$L33262|
	DCD	0x40002101
; Function compile flags: /Ogsy
; File d:\wince500\platform\bvdmain\drivers\atapi\atapiio.cpp

  00000			 AREA	 |.text| { |?WaitForDRQ@CDisk@@QAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?WaitForDRQ@CDisk@@QAAHXZ| PROC	; CDisk::WaitForDRQ

; 183  : { 

  00000		 |$L33262|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004		 |$M33260|
  00004	e1a07000	 mov         r7, r0

; 184  :     DWORD i,j;
; 185  :     BYTE bStatus;
; 186  :     
; 187  :     for (i=0; i< DEFAULT_WAIT_CHECK_ITER; i++) {

  00008	e3a04000	 mov         r4, #0
  0000c		 |$L32865|

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

  0000c	e3a05000	 mov         r5, #0
  00010		 |$L32868|

; 189  :             bStatus = GetAltStatus() & (ATA_STATUS_BUSY|ATA_STATUS_DATA_REQ); 

  00010	e59f0068	 ldr         r0, [pc, #0x68]
  00014	eb000000	 bl          READ_PORT_UCHAR
  00018	e2006088	 and         r6, r0, #0x88

; 190  : 
; 191  :             if (bStatus & ATA_STATUS_BUSY) { 

  0001c	e3160080	 tst         r6, #0x80
  00020	1a000009	 bne         |$L32869|

; 192  :                 continue;
; 193  :             }
; 194  :             if (bStatus & ATA_STATUS_DATA_REQ){ 

  00024	e3160008	 tst         r6, #8
  00028	1a000011	 bne         |$L33251|

; 197  :             }
; 198  :             StallExecution(DEFAULT_WAIT_STALL_TIME);            

  0002c	e5973004	 ldr         r3, [r7, #4]
  00030	e3130301	 tst         r3, #1, 6
  00034	0a000002	 beq         |$L33247|
  00038	e3a00004	 mov         r0, #4
  0003c	eb000000	 bl          Sleep
  00040	ea000001	 b           |$L32869|
  00044		 |$L33247|
  00044	e3a00efa	 mov         r0, #0xFA, 28
  00048	eb000000	 bl          StallExecution
  0004c		 |$L32869|
  0004c	e2855001	 add         r5, r5, #1
  00050	e3550064	 cmp         r5, #0x64
  00054	3affffed	 bcc         |$L32868|
  00058	e2844001	 add         r4, r4, #1
  0005c	e3540e7d	 cmp         r4, #0x7D, 28
  00060	3affffe9	 bcc         |$L32865|

; 199  :         }
; 200  :         DEBUGMSG( ZONE_WARNING, (TEXT("ATAPI:WaitForDRQ Status=%02X Error=%02X Reason=%02X\r\n"), GetAltStatus(), GetError(), GetReason()));
; 201  :     } 
; 202  :     //RetailPrint1("ATAPIPCI: ATA_STATUS_DATA_REQ (Sleep)i= %x \r\n",i);
; 203  :     return(bStatus == ATA_STATUS_DATA_REQ); 

  00064	e3560008	 cmp         r6, #8
  00068	13a00000	 movne       r0, #0

⌨️ 快捷键说明

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