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

📄 atapiio.cod

📁 windows CE 的BSP开发包.包含众多的驱动程序和OAL层的开发代码
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00008	e590301c	 ldr         r3, [r0, #0x1C]
  0000c	e0820003	 add         r0, r2, r3
  00010	eb000000	 bl          WRITE_PORT_UCHAR

; 241  :     }

  00014	e49de004	 ldr         lr, [sp], #4
  00018	e12fff1e	 bx          lr
  0001c		 |$M32319|

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

	EXPORT	|?SelectDevice@CDisk@@QAAXXZ|		; CDisk::SelectDevice

  00000			 AREA	 |.text| { |?SelectDevice@CDisk@@QAAXXZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$?SelectDevice@CDisk@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?SelectDevice@CDisk@@QAAXXZ| } ; comdat associative
|$T32331| DCD	|$L32330|
	DCD	0x40000c01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?SelectDevice@CDisk@@QAAXXZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |?SelectDevice@CDisk@@QAAXXZ| PROC	; CDisk::SelectDevice

; 246  :     inline void SelectDevice() {

  00000		 |$L32330|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32328|

; 247  :         ATA_WRITE_BYTE(m_pATAReg + m_dwDrvHeadOffset, (m_dwDevice == 0 ) ? ATA_HEAD_DRIVE_1 : ATA_HEAD_DRIVE_2);

  00004	e5903484	 ldr         r3, [r0, #0x484]
  00008	e5902030	 ldr         r2, [r0, #0x30]
  0000c	e3530000	 cmp         r3, #0
  00010	e5903020	 ldr         r3, [r0, #0x20]
  00014	03a010a0	 moveq       r1, #0xA0
  00018	13a010b0	 movne       r1, #0xB0
  0001c	e20110ff	 and         r1, r1, #0xFF
  00020	e0820003	 add         r0, r2, r3
  00024	eb000000	 bl          WRITE_PORT_UCHAR

; 248  :     }

  00028	e49de004	 ldr         lr, [sp], #4
  0002c	e12fff1e	 bx          lr
  00030		 |$M32329|

			 ENDP  ; |?SelectDevice@CDisk@@QAAXXZ|, CDisk::SelectDevice

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

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

  00000			 AREA	 |.pdata$$?WriteDriveHeadReg@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteDriveHeadReg@CDisk@@QAAXE@Z| } ; comdat associative
|$T32340| DCD	|$L32339|
	DCD	0x40000701
; Function compile flags: /Ogsy

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

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

; 253  :     inline void WriteDriveHeadReg(BYTE bValue) {

  00000		 |$L32339|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32337|

; 254  :         ATA_WRITE_BYTE(m_pATAReg + m_dwDrvHeadOffset, bValue);

  00004	e5902030	 ldr         r2, [r0, #0x30]
  00008	e5903020	 ldr         r3, [r0, #0x20]
  0000c	e0820003	 add         r0, r2, r3
  00010	eb000000	 bl          WRITE_PORT_UCHAR

; 255  :     }

  00014	e49de004	 ldr         lr, [sp], #4
  00018	e12fff1e	 bx          lr
  0001c		 |$M32338|

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

	EXPORT	|?GetBaseStatus@CDisk@@QAAEXZ|		; CDisk::GetBaseStatus
	IMPORT	|CeLogData|
	IMPORT	|?dpCurSettings@@3U_DBGPARAM@@A|	; dpCurSettings

  00000			 AREA	 |.text| { |?GetBaseStatus@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$?GetBaseStatus@CDisk@@QAAEXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?GetBaseStatus@CDisk@@QAAEXZ| } ; comdat associative
|$T32351| DCD	|$L32350|
	DCD	0x40001c02
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?GetBaseStatus@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |?GetBaseStatus@CDisk@@QAAEXZ| PROC	; CDisk::GetBaseStatus

; 257  :     inline BYTE GetBaseStatus() {

  00000		 |$L32350|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004	e24dd014	 sub         sp, sp, #0x14
  00008		 |$M32348|

; 258  :         BYTE bStatus = ATA_READ_BYTE(m_pATAReg + m_dwCommandStatusOffset);

  00008	e5902030	 ldr         r2, [r0, #0x30]
  0000c	e5903024	 ldr         r3, [r0, #0x24]
  00010	e0820003	 add         r0, r2, r3
  00014	eb000000	 bl          READ_PORT_UCHAR

; 259  :         if (ZONE_CELOG) CeLogData(TRUE, CELID_ATAPI_BASESTATUS, &bStatus, sizeof(bStatus), 0, CELZONE_ALWAYSON, 0, FALSE);

  00018	e59f304c	 ldr         r3, [pc, #0x4C]
  0001c	e5cd0010	 strb        r0, [sp, #0x10]
  00020	e5933440	 ldr         r3, [r3, #0x440]
  00024	e3130902	 tst         r3, #2, 18
  00028	0a00000c	 beq         |$L31616|
  0002c	e3a01d86	 mov         r1, #0x86, 26
  00030	e3a0e101	 mov         lr, #1, 2
  00034	e3a04000	 mov         r4, #0
  00038	e3811002	 orr         r1, r1, #2
  0003c	e3a03001	 mov         r3, #1
  00040	e28d2010	 add         r2, sp, #0x10
  00044	e3a00001	 mov         r0, #1
  00048	e58d400c	 str         r4, [sp, #0xC]
  0004c	e58d4008	 str         r4, [sp, #8]
  00050	e58de004	 str         lr, [sp, #4]
  00054	e58d4000	 str         r4, [sp]
  00058	eb000000	 bl          CeLogData
  0005c	e5dd0010	 ldrb        r0, [sp, #0x10]
  00060		 |$L31616|

; 260  :         return bStatus;
; 261  :     }

  00060	e28dd014	 add         sp, sp, #0x14
  00064	e8bd4010	 ldmia       sp!, {r4, lr}
  00068	e12fff1e	 bx          lr
  0006c		 |$L32353|
  0006c	00000000	 DCD         |?dpCurSettings@@3U_DBGPARAM@@A|
  00070		 |$M32349|

			 ENDP  ; |?GetBaseStatus@CDisk@@QAAEXZ|, CDisk::GetBaseStatus

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

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

  00000			 AREA	 |.pdata$$?WriteCommand@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteCommand@CDisk@@QAAXE@Z| } ; comdat associative
|$T32361| DCD	|$L32360|
	DCD	0x40000701
; Function compile flags: /Ogsy

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

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

; 263  :     inline void WriteCommand(BYTE bCommand) {

  00000		 |$L32360|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32358|

; 264  :         ATA_WRITE_BYTE(m_pATAReg + m_dwCommandStatusOffset, bCommand);

  00004	e5902030	 ldr         r2, [r0, #0x30]
  00008	e5903024	 ldr         r3, [r0, #0x24]
  0000c	e0820003	 add         r0, r2, r3
  00010	eb000000	 bl          WRITE_PORT_UCHAR

; 265  :     }

  00014	e49de004	 ldr         lr, [sp], #4
  00018	e12fff1e	 bx          lr
  0001c		 |$M32359|

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

	EXPORT	|?GetAltStatus@CDisk@@QAAEXZ|		; CDisk::GetAltStatus

  00000			 AREA	 |.text| { |?GetAltStatus@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$?GetAltStatus@CDisk@@QAAEXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?GetAltStatus@CDisk@@QAAEXZ| } ; comdat associative
|$T32371| DCD	|$L32370|
	DCD	0x40000701
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?GetAltStatus@CDisk@@QAAEXZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |?GetAltStatus@CDisk@@QAAEXZ| PROC	; CDisk::GetAltStatus

; 267  :     inline BYTE GetAltStatus() {

  00000		 |$L32370|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32368|

; 268  :         return (BYTE) ATA_READ_BYTE(m_pATARegAlt + m_dwAltStatusOffset);

  00004	e5902034	 ldr         r2, [r0, #0x34]
  00008	e5903028	 ldr         r3, [r0, #0x28]
  0000c	e0820003	 add         r0, r2, r3
  00010	eb000000	 bl          READ_PORT_UCHAR

; 269  :     }

  00014	e49de004	 ldr         lr, [sp], #4
  00018	e12fff1e	 bx          lr
  0001c		 |$M32369|

			 ENDP  ; |?GetAltStatus@CDisk@@QAAEXZ|, CDisk::GetAltStatus

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

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

  00000			 AREA	 |.pdata$$?WriteAltDriveController@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteAltDriveController@CDisk@@QAAXE@Z| } ; comdat associative
|$T32380| DCD	|$L32379|
	DCD	0x40000701
; Function compile flags: /Ogsy

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

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

; 270  :     inline void WriteAltDriveController(BYTE bData) {

  00000		 |$L32379|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32377|

; 271  :         ATA_WRITE_BYTE(m_pATARegAlt + m_dwAltDrvCtrl, bData);

  00004	e5902034	 ldr         r2, [r0, #0x34]
  00008	e590302c	 ldr         r3, [r0, #0x2C]
  0000c	e0820003	 add         r0, r2, r3
  00010	eb000000	 bl          WRITE_PORT_UCHAR

; 272  :     }

  00014	e49de004	 ldr         lr, [sp], #4
  00018	e12fff1e	 bx          lr
  0001c		 |$M32378|

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

	EXPORT	|?WaitOnBusy@CDisk@@QAAEH@Z|		; CDisk::WaitOnBusy
	IMPORT	|?StallExecution@CDisk@@QAAXK@Z|	; CDisk::StallExecution

  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
|$T32405| DCD	|$L32404|
	DCD	0x40002601
; Function compile flags: /Ogsy
; File d:\wince500\platform\smdk2440\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

; 83   : {

  00000		 |$L32404|
  00000	e92d41f0	 stmdb       sp!, {r4 - r8, lr}
  00004		 |$M32402|
  00004	e1a08001	 mov         r8, r1
  00008	e1a04000	 mov         r4, r0

; 84   :     DWORD i, j;
; 85   :     BYTE bStatus = 0;
; 86   :     for (i = 0; i < m_dwWaitCheckIter; i++) {

  0000c	e59436bc	 ldr         r3, [r4, #0x6BC]
  00010	e3a05000	 mov         r5, #0
  00014	e3a07000	 mov         r7, #0
  00018	e3530000	 cmp         r3, #0
  0001c	9a00001a	 bls         |$L31965|
  00020		 |$L31963|

; 87   :         for (j = 0; j < m_dwWaitSampleTimes; j++)  {

  00020	e59436c0	 ldr         r3, [r4, #0x6C0]
  00024	e3a06000	 mov         r6, #0
  00028	e3530000	 cmp         r3, #0
  0002c	9a00000f	 bls         |$L31968|
  00030		 |$L31966|

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

  00030	e3580000	 cmp         r8, #0
  00034	0a000002	 beq         |$L32384|
  00038	e1a00004	 mov         r0, r4
  0003c	eb000000	 bl          |?GetBaseStatus@CDisk@@QAAEXZ|
  00040	ea000003	 b           |$L32401|
  00044		 |$L32384|
  00044	e5942034	 ldr         r2, [r4, #0x34]
  00048	e5943028	 ldr         r3, [r4, #0x28]
  0004c	e0820003	 add         r0, r2, r3
  00050	eb000000	 bl          READ_PORT_UCHAR
  00054		 |$L32401|
  00054	e1a05000	 mov         r5, r0

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

  00058	e3150080	 tst         r5, #0x80
  0005c	0a00000a	 beq         |$L31965|
  00060	e59436c0	 ldr         r3, [r4, #0x6C0]
  00064	e2866001	 add         r6, r6, #1
  00068	e1560003	 cmp         r6, r3
  0006c	3affffef	 bcc         |$L31966|
  00070		 |$L31968|

; 91   :             }
; 92   :         }
; 93   :        StallExecution(m_dwWaitStallTime);

  00070	e59416c4	 ldr         r1, [r4, #0x6C4]
  00074	e1a00004	 mov         r0, r4
  00078	eb000000	 bl          |?StallExecution@CDisk@@QAAXK@Z|
  0007c	e59436bc	 ldr         r3, [r4, #0x6BC]
  00080	e2877001	 add         r7, r7, #1
  00084	e1570003	 cmp         r7, r3
  00088	3affffe4	 bcc         |$L31963|
  0008c		 |$L31965|

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

  0008c	e2050081	 and         r0, r5, #0x81

; 94   :     }
; 95   :     return bStatus & (ATA_STATUS_ERROR |ATA_STATUS_BUSY);
; 96   : }

  00090	e8bd41f0	 ldmia       sp!, {r4 - r8, lr}
  00094	e12fff1e	 bx          lr
  00098		 |$M32403|

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

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

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

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

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

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

; 114  : {

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

; 115  :     BYTE bStatusRead = 0;
; 116  : 
; 117  :     if (dwPeriod == 0) {
; 118  :         dwPeriod = dwTimeOut;

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

; 119  :     }
; 120  : 
; 121  :     while( TRUE)  {

⌨️ 快捷键说明

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