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

📄 atapipci.cod

📁 windows CE 的BSP开发包.包含众多的驱动程序和OAL层的开发代码
💻 COD
📖 第 1 页 / 共 5 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4091 

	TTL	D:\WINCE500\PLATFORM\smdk2440\DRIVERS\atapi\.\atapipci.cpp
	CODE32

  00000			 AREA	 |.drectve|, DRECTVE
	DCB	"-defaultlib:coredll.lib "
	DCB	"-defaultlib:corelibc.lib "

	EXPORT	|?m_lDeviceCount@CPCIDisk@@2JA| [ DATA ] ; CPCIDisk::m_lDeviceCount
	EXPORT	|??_C@_1O@BKCJJMBP@?$AAC?$AAD?$AA?9?$AAR?$AAO?$AAM?$AA?$AA@| [ DATA ] ; `string'
	EXPORT	|??_C@_1BE@LMHCDCPA@?$AAH?$AAa?$AAr?$AAd?$AA?5?$AAD?$AAi?$AAs?$AAk?$AA?$AA@| [ DATA ] ; `string'

  00000			 AREA	 |.bss|, NOINIT
|?m_lDeviceCount@CPCIDisk@@2JA| % 0x4			; CPCIDisk::m_lDeviceCount

  00000			 AREA	 |.rdata| { |??_C@_1BE@LMHCDCPA@?$AAH?$AAa?$AAr?$AAd?$AA?5?$AAD?$AAi?$AAs?$AAk?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BE@LMHCDCPA@?$AAH?$AAa?$AAr?$AAd?$AA?5?$AAD?$AAi?$AAs?$AAk?$AA?$AA@| DCB "H"
	DCB	0x0, "a", 0x0, "r", 0x0, "d", 0x0, " ", 0x0, "D", 0x0, "i"
	DCB	0x0, "s", 0x0, "k", 0x0, 0x0, 0x0	; `string'

  00000			 AREA	 |.data|, DATA
|g_szPCIHardDisk| DCD |??_C@_1BE@LMHCDCPA@?$AAH?$AAa?$AAr?$AAd?$AA?5?$AAD?$AAi?$AAs?$AAk?$AA?$AA@|
|g_szPCICDRomDisk| DCD |??_C@_1O@BKCJJMBP@?$AAC?$AAD?$AA?9?$AAR?$AAO?$AAM?$AA?$AA@|

  00000			 AREA	 |.rdata| { |??_C@_1O@BKCJJMBP@?$AAC?$AAD?$AA?9?$AAR?$AAO?$AAM?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1O@BKCJJMBP@?$AAC?$AAD?$AA?9?$AAR?$AAO?$AAM?$AA?$AA@| DCB "C", 0x0
	DCB	"D", 0x0, "-", 0x0, "R", 0x0, "O", 0x0, "M", 0x0, 0x0, 0x0 ; `string'
	EXPORT	|?GetError@CDisk@@QAAEXZ|		; CDisk::GetError
	IMPORT	|READ_PORT_UCHAR|
; File d:\wince500\platform\smdk2440\drivers\atapi\diskmain.h

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

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

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

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

; 212  :     inline BYTE GetError() {

  00000		 |$L32409|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32407|

; 213  :         return (BYTE) ATA_READ_BYTE(m_pATAReg + m_dwFeatureErrorOffset);

  00004	e5902030	 ldr         r2, [r0, #0x30]
  00008	e590300c	 ldr         r3, [r0, #0xC]
  0000c	e0820003	 add         r0, r2, r3
  00010	eb000000	 bl          READ_PORT_UCHAR

; 214  :     }

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

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

	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
|$T32421| DCD	|$L32420|
	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		 |$L32420|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004	e24dd014	 sub         sp, sp, #0x14
  00008		 |$M32418|

; 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         |$L31617|
  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		 |$L31617|

; 260  :         return bStatus;
; 261  :     }

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

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

	EXPORT	|?WriteBMCommand@CPCIDisk@@QAAXE@Z|	; CPCIDisk::WriteBMCommand
	IMPORT	|WRITE_PORT_UCHAR|
; File d:\wince500\platform\smdk2440\drivers\atapi\atapipci.h

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

  00000			 AREA	 |.pdata$$?WriteBMCommand@CPCIDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteBMCommand@CPCIDisk@@QAAXE@Z| } ; comdat associative
|$T32431| DCD	|$L32430|
	DCD	0x40000501
; Function compile flags: /Ogsy

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

  00000		 |?WriteBMCommand@CPCIDisk@@QAAXE@Z| PROC ; CPCIDisk::WriteBMCommand

; 75   :     inline void CPCIDisk::WriteBMCommand(BYTE bCommand) {

  00000		 |$L32430|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32428|

; 76   :         ATA_WRITE_BYTE(m_pBMCommand, bCommand);

  00004	e590076c	 ldr         r0, [r0, #0x76C]
  00008	eb000000	 bl          WRITE_PORT_UCHAR

; 77   :     }

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$M32429|

			 ENDP  ; |?WriteBMCommand@CPCIDisk@@QAAXE@Z|, CPCIDisk::WriteBMCommand

	EXPORT	|?ReadBMStatus@CPCIDisk@@QAAEXZ|	; CPCIDisk::ReadBMStatus

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

  00000			 AREA	 |.pdata$$?ReadBMStatus@CPCIDisk@@QAAEXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?ReadBMStatus@CPCIDisk@@QAAEXZ| } ; comdat associative
|$T32441| DCD	|$L32440|
	DCD	0x40000601
; Function compile flags: /Ogsy

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

  00000		 |?ReadBMStatus@CPCIDisk@@QAAEXZ| PROC	; CPCIDisk::ReadBMStatus

; 78   :     inline BYTE CPCIDisk::ReadBMStatus() {

  00000		 |$L32440|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32438|

; 79   :         return ATA_READ_BYTE(m_pBMCommand + 2);

  00004	e590376c	 ldr         r3, [r0, #0x76C]
  00008	e2830002	 add         r0, r3, #2
  0000c	eb000000	 bl          READ_PORT_UCHAR

; 80   :     }

  00010	e49de004	 ldr         lr, [sp], #4
  00014	e12fff1e	 bx          lr
  00018		 |$M32439|

			 ENDP  ; |?ReadBMStatus@CPCIDisk@@QAAEXZ|, CPCIDisk::ReadBMStatus

	EXPORT	|?WriteBMTable@CPCIDisk@@QAAXK@Z|	; CPCIDisk::WriteBMTable
	IMPORT	|WRITE_PORT_ULONG|

  00000			 AREA	 |.text| { |?WriteBMTable@CPCIDisk@@QAAXK@Z| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$?WriteBMTable@CPCIDisk@@QAAXK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteBMTable@CPCIDisk@@QAAXK@Z| } ; comdat associative
|$T32450| DCD	|$L32449|
	DCD	0x40000601
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?WriteBMTable@CPCIDisk@@QAAXK@Z| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |?WriteBMTable@CPCIDisk@@QAAXK@Z| PROC	; CPCIDisk::WriteBMTable

; 81   :     inline void CPCIDisk::WriteBMTable(DWORD dwPhys) {

  00000		 |$L32449|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32447|

; 82   :         ATA_WRITE_DWORD((LPDWORD)(m_pBMCommand + 4), dwPhys);

  00004	e590376c	 ldr         r3, [r0, #0x76C]
  00008	e2830004	 add         r0, r3, #4
  0000c	eb000000	 bl          WRITE_PORT_ULONG

; 83   :     }

  00010	e49de004	 ldr         lr, [sp], #4
  00014	e12fff1e	 bx          lr
  00018		 |$M32448|

			 ENDP  ; |?WriteBMTable@CPCIDisk@@QAAXK@Z|, CPCIDisk::WriteBMTable

	EXPORT	|?WriteBMStatus@CPCIDisk@@QAAXE@Z|	; CPCIDisk::WriteBMStatus

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

  00000			 AREA	 |.pdata$$?WriteBMStatus@CPCIDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteBMStatus@CPCIDisk@@QAAXE@Z| } ; comdat associative
|$T32459| DCD	|$L32458|
	DCD	0x40000601
; Function compile flags: /Ogsy

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

  00000		 |?WriteBMStatus@CPCIDisk@@QAAXE@Z| PROC ; CPCIDisk::WriteBMStatus

; 84   :     inline void CPCIDisk::WriteBMStatus(BYTE bStatus) {

  00000		 |$L32458|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M32456|

; 85   :         ATA_WRITE_BYTE(m_pBMCommand + 2, bStatus);

  00004	e590376c	 ldr         r3, [r0, #0x76C]
  00008	e2830002	 add         r0, r3, #2
  0000c	eb000000	 bl          WRITE_PORT_UCHAR

; 86   :     }

  00010	e49de004	 ldr         lr, [sp], #4
  00014	e12fff1e	 bx          lr
  00018		 |$M32457|

			 ENDP  ; |?WriteBMStatus@CPCIDisk@@QAAXE@Z|, CPCIDisk::WriteBMStatus

	EXPORT	|??0CPCIDisk@@QAA@PAUHKEY__@@@Z|	; CPCIDisk::CPCIDisk
	EXPORT	|?ConfigureRegisterBlock@CPCIDisk@@UAAXK@Z| ; CPCIDisk::ConfigureRegisterBlock
	EXPORT	|?Init@CPCIDisk@@UAAHPAUHKEY__@@@Z|	; CPCIDisk::Init
	EXPORT	|?MainIoctl@CPCIDisk@@UAAKPAU_IOREQ@@@Z| ; CPCIDisk::MainIoctl
	EXPORT	|?WaitForInterrupt@CPCIDisk@@UAAHK@Z|	; CPCIDisk::WaitForInterrupt
	EXPORT	|?EnableInterrupt@CPCIDisk@@UAAXXZ|	; CPCIDisk::EnableInterrupt
	EXPORT	|?ConfigPort@CPCIDisk@@UAAHXZ|		; CPCIDisk::ConfigPort
	EXPORT	|?SetupDMA@CPCIDisk@@UAAHPAU_SG_BUF@@KH@Z| ; CPCIDisk::SetupDMA
	EXPORT	|?BeginDMA@CPCIDisk@@UAAHH@Z|		; CPCIDisk::BeginDMA
	EXPORT	|?EndDMA@CPCIDisk@@UAAHXZ|		; CPCIDisk::EndDMA
	EXPORT	|?AbortDMA@CPCIDisk@@UAAHXZ|		; CPCIDisk::AbortDMA
	EXPORT	|?CompleteDMA@CPCIDisk@@UAAHPAU_SG_BUF@@KH@Z| ; CPCIDisk::CompleteDMA
	EXPORT	|?TakeCS@CPCIDisk@@UAAXXZ|		; CPCIDisk::TakeCS
	EXPORT	|?ReleaseCS@CPCIDisk@@UAAXXZ|		; CPCIDisk::ReleaseCS
	EXPORT	|??_7CPCIDisk@@6B@| [ DATA ]		; CPCIDisk::`vftable'
	EXPORT	|??_GCPCIDisk@@UAAPAXI@Z|		; CPCIDisk::`scalar deleting destructor'
	IMPORT	|??_ECPCIDisk@@UAAPAXI@Z|, WEAK |??_GCPCIDisk@@UAAPAXI@Z| ; CPCIDisk::`vector deleting destructor', CPCIDisk::`scalar deleting destructor'
	IMPORT	|??0CDisk@@QAA@PAUHKEY__@@@Z|		; CDisk::CDisk
	IMPORT	|?InitController@CDisk@@UAAHH@Z|	; CDisk::InitController
	IMPORT	|?GetDeviceInfo@CDisk@@UAAKPAU_IOREQ@@@Z| ; CDisk::GetDeviceInfo
	IMPORT	|?WaitForDRQ@CDisk@@UAAHXZ|		; CDisk::WaitForDRQ
	IMPORT	|?WaitForDisc@CDisk@@UAAHEKK@Z|		; CDisk::WaitForDisc
	IMPORT	|?ReadWriteDiskDMA@CDisk@@UAAKPAU_IOREQ@@H@Z| ; CDisk::ReadWriteDiskDMA
	IMPORT	|?GetDiskPowerInterface@CDisk@@UAAPAVCDiskPower@@XZ| ; CDisk::GetDiskPowerInterface
	IMPORT	|?SetDiskPowerState@CDisk@@UAAHW4_CEDEVICE_POWER_STATE@@@Z| ; CDisk::SetDiskPowerState
	IMPORT	|?WakeUp@CDisk@@UAAHXZ|			; CDisk::WakeUp
	IMPORT	|InterlockedIncrement|
; File d:\wince500\platform\smdk2440\drivers\atapi\atapipci.cpp

  00000			 AREA	 |.text| { |??0CPCIDisk@@QAA@PAUHKEY__@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$??0CPCIDisk@@QAA@PAUHKEY__@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |??0CPCIDisk@@QAA@PAUHKEY__@@@Z| } ; comdat associative
|$T32470| DCD	|$L32469|
	DCD	0x40001801

  00000			 AREA	 |.rdata| { |??_7CPCIDisk@@6B@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_7CPCIDisk@@6B@| DCD |??_ECPCIDisk@@UAAPAXI@Z|	; CPCIDisk::`vftable'
	DCD	|?ConfigureRegisterBlock@CPCIDisk@@UAAXK@Z|
	DCD	|?Init@CPCIDisk@@UAAHPAUHKEY__@@@Z|
	DCD	|?InitController@CDisk@@UAAHH@Z|
	DCD	|?GetDeviceInfo@CDisk@@UAAKPAU_IOREQ@@@Z|
	DCD	|?MainIoctl@CPCIDisk@@UAAKPAU_IOREQ@@@Z|
	DCD	|?WaitForDRQ@CDisk@@UAAHXZ|
	DCD	|?WaitForDisc@CDisk@@UAAHEKK@Z|
	DCD	|?ReadWriteDiskDMA@CDisk@@UAAKPAU_IOREQ@@H@Z|
	DCD	|?GetDiskPowerInterface@CDisk@@UAAPAVCDiskPower@@XZ|
	DCD	|?SetDiskPowerState@CDisk@@UAAHW4_CEDEVICE_POWER_STATE@@@Z|
	DCD	|?WakeUp@CDisk@@UAAHXZ|
	DCD	|?TakeCS@CPCIDisk@@UAAXXZ|
	DCD	|?ReleaseCS@CPCIDisk@@UAAXXZ|
	DCD	|?WaitForInterrupt@CPCIDisk@@UAAHK@Z|
	DCD	|?EnableInterrupt@CPCIDisk@@UAAXXZ|
	DCD	|?SetupDMA@CPCIDisk@@UAAHPAU_SG_BUF@@KH@Z|
	DCD	|?BeginDMA@CPCIDisk@@UAAHH@Z|
	DCD	|?EndDMA@CPCIDisk@@UAAHXZ|
	DCD	|?AbortDMA@CPCIDisk@@UAAHXZ|
	DCD	|?CompleteDMA@CPCIDisk@@UAAHPAU_SG_BUF@@KH@Z|
	DCD	|?ConfigPort@CPCIDisk@@UAAHXZ|
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |??0CPCIDisk@@QAA@PAUHKEY__@@@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |??0CPCIDisk@@QAA@PAUHKEY__@@@Z| PROC	; CPCIDisk::CPCIDisk

; 59   : {

  00000		 |$L32469|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M32467|
  00004	e1a04000	 mov         r4, r0
  00008	eb000000	 bl          |??0CDisk@@QAA@PAUHKEY__@@@Z|
  0000c	e59f3048	 ldr         r3, [pc, #0x48]

; 60   :     m_pStartMemory = NULL;
; 61   :     m_pPort = NULL;
; 62   :     m_pPhysList = NULL;
; 63   :     m_pSGCopy = NULL;
; 64   :     m_pPFNs = NULL;
; 65   :     m_pPRDPhys = 0;
; 66   :     m_pPRD = NULL;
; 67   :     m_dwPhysCount = 0;
; 68   :     m_dwSGCount = 0;
; 69   :     m_dwPRDSize = 0;
; 70   :     m_pBMCommand = NULL;
; 71   : 
; 72   :     InterlockedIncrement(&m_lDeviceCount);

  00010	e59f0040	 ldr         r0, [pc, #0x40]
  00014	e3a02000	 mov         r2, #0
  00018	e5843000	 str         r3, [r4]
  0001c	e5842748	 str         r2, [r4, #0x748]
  00020	e584203c	 str         r2, [r4, #0x3C]
  00024	e5842750	 str         r2, [r4, #0x750]
  00028	e5842754	 str         r2, [r4, #0x754]
  0002c	e5842758	 str         r2, [r4, #0x758]
  00030	e5842760	 str         r2, [r4, #0x760]
  00034	e584274c	 str         r2, [r4, #0x74C]
  00038	e5842764	 str         r2, [r4, #0x764]
  0003c	e584275c	 str         r2, [r4, #0x75C]
  00040	e5842768	 str         r2, [r4, #0x768]
  00044	e584276c	 str         r2, [r4, #0x76C]
  00048	eb000000	 bl          InterlockedIncrement

; 73   : 
; 74   :     DEBUGMSG(ZONE_INIT|ZONE_PCI, (_T(
; 75   :         "Atapi!CPCIDisk::CPCIDisk> device count(%d)\r\n"
; 76   :         ), m_lDeviceCount));
; 77   : }

  0004c	e1a00004	 mov         r0, r4
  00050	e8bd4010	 ldmia       sp!, {r4, lr}

⌨️ 快捷键说明

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