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

📄 atamain.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\.\atamain.cpp
	CODE32

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

	EXPORT	|?g_hInstance@@3PAUHINSTANCE__@@A| [ DATA ] ; g_hInstance
	EXPORT	|?g_pDiskRoot@@3PAVCDisk@@A| [ DATA ]	; g_pDiskRoot
	EXPORT	|?g_csMain@@3UCRITICAL_SECTION@@A| [ DATA ] ; g_csMain

  00000			 AREA	 |.bss|, NOINIT
|?g_hInstance@@3PAUHINSTANCE__@@A| % 0x4		; g_hInstance
|?g_pDiskRoot@@3PAVCDisk@@A| % 0x4			; g_pDiskRoot
|?g_csMain@@3UCRITICAL_SECTION@@A| % 0x14		; g_csMain
	EXPORT	|?PowerUp@CDisk@@QAAXXZ|		; CDisk::PowerUp
; File d:\wince500\platform\smdk2440\drivers\atapi\diskmain.h

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

  00000			 AREA	 |.pdata$$?PowerUp@CDisk@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?PowerUp@CDisk@@QAAXXZ| } ; comdat associative
|$T33019| DCD	|$L33018|
	DCD	0x40000400
; Function compile flags: /Ogsy

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

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

; 403  :     void PowerUp() { m_dwDeviceFlags &= ~DFLAGS_DEVICE_PWRDN; }

  00000		 |$L33018|
  00000		 |$M33016|
  00000	e5903690	 ldr         r3, [r0, #0x690]
  00004	e3c33401	 bic         r3, r3, #1, 8
  00008	e5803690	 str         r3, [r0, #0x690]
  0000c	e12fff1e	 bx          lr
  00010		 |$M33017|

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

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

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

  00000			 AREA	 |.pdata$$?PowerDown@CDisk@@QAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?PowerDown@CDisk@@QAAXXZ| } ; comdat associative
|$T33027| DCD	|$L33026|
	DCD	0x40000400
; Function compile flags: /Ogsy

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

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

; 404  :     void PowerDown() { m_dwDeviceFlags |= DFLAGS_DEVICE_PWRDN; }

  00000		 |$L33026|
  00000		 |$M33024|
  00000	e5903690	 ldr         r3, [r0, #0x690]
  00004	e3833401	 orr         r3, r3, #1, 8
  00008	e5803690	 str         r3, [r0, #0x690]
  0000c	e12fff1e	 bx          lr
  00010		 |$M33025|

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

	EXPORT	|??0CIDEBUS@@QAA@XZ|			; CIDEBUS::CIDEBUS
	IMPORT	|memset|
; File d:\wince500\platform\smdk2440\drivers\atapi\atamain.cpp

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

  00000			 AREA	 |.pdata$$??0CIDEBUS@@QAA@XZ|, PDATA, SELECTION=5, ASSOC=|.text| { |??0CIDEBUS@@QAA@XZ| } ; comdat associative
|$T33040| DCD	|$L33039|
	DCD	0x40001401
; Function compile flags: /Ogsy

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

  00000		 |??0CIDEBUS@@QAA@XZ| PROC		; CIDEBUS::CIDEBUS

; 40   : {

  00000		 |$L33039|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M33037|
  00004	e1a04000	 mov         r4, r0

; 41   :     // initialize device handle table and device registry key name table
; 42   :     for (int i = 0; i < MAX_DEVICES_PER_CONTROLLER; i++) {

  00008	e1a03004	 mov         r3, r4
  0000c	e3a02004	 mov         r2, #4
  00010	e3a05000	 mov         r5, #0
  00014		 |$L32332|

; 43   :         m_hDevice[i] = NULL;

  00014	e5835000	 str         r5, [r3]

; 44   :         m_szDevice[i] = NULL;

  00018	e5835010	 str         r5, [r3, #0x10]
  0001c	e2833004	 add         r3, r3, #4
  00020	e2522001	 subs        r2, r2, #1
  00024	1afffffa	 bne         |$L32332|

; 45   :     }
; 46   :     // initialize DDKREGWINDOW structure
; 47   :     memset(&m_dwi, 0, sizeof(m_dwi));

  00028	e3a02074	 mov         r2, #0x74
  0002c	e3a01000	 mov         r1, #0
  00030	e2840020	 add         r0, r4, #0x20
  00034	eb000000	 bl          memset

; 48   :     // initialize port structures
; 49   :     m_pIdeReg = NULL;

  00038	e5845094	 str         r5, [r4, #0x94]

; 50   :     m_pPrimaryPort = NULL;

  0003c	e5845098	 str         r5, [r4, #0x98]

; 51   :     m_pSecondaryPort = NULL;

  00040	e584509c	 str         r5, [r4, #0x9C]

; 52   : }

  00044	e1a00004	 mov         r0, r4
  00048	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  0004c	e12fff1e	 bx          lr
  00050		 |$M33038|

			 ENDP  ; |??0CIDEBUS@@QAA@XZ|, CIDEBUS::CIDEBUS

	EXPORT	|??0CPort@@QAA@PAVCIDEBUS@@@Z|		; CPort::CPort
	IMPORT	|InitializeCriticalSection|

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

  00000			 AREA	 |.pdata$$??0CPort@@QAA@PAVCIDEBUS@@@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |??0CPort@@QAA@PAVCIDEBUS@@@Z| } ; comdat associative
|$T33051| DCD	|$L33050|
	DCD	0x40001901
; Function compile flags: /Ogsy

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

  00000		 |??0CPort@@QAA@PAVCIDEBUS@@@Z| PROC	; CPort::CPort

; 97   : {

  00000		 |$L33050|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M33048|
  00004	e1a04001	 mov         r4, r1
  00008	e1a05000	 mov         r5, r0

; 98   :     DEBUGCHK(pParent);
; 99   :     InitializeCriticalSection(&m_csPort);

  0000c	e2850004	 add         r0, r5, #4
  00010	eb000000	 bl          InitializeCriticalSection

; 100  :     // hook up bus
; 101  :     m_pController = pParent;
; 102  :     // initialize flags
; 103  :     m_fInitialized = 0;
; 104  :     m_dwFlag = 0;
; 105  :     // initialize I/O ports
; 106  :     m_dwRegBase = 0;
; 107  :     m_dwRegAlt = 0;
; 108  :     m_dwBMR = 0;
; 109  :     m_dwBMRStatic = 0;
; 110  :     // initialize interrupt data
; 111  :     m_hIRQEvent = NULL;
; 112  :     m_hThread = NULL;
; 113  :     m_dwSysIntr = SYSINTR_NOP;
; 114  :     m_dwIrq = IRQ_UNSPECIFIED;

  00014	e3e03000	 mvn         r3, #0
  00018	e3a02000	 mov         r2, #0
  0001c	e5853040	 str         r3, [r5, #0x40]
  00020	e5852018	 str         r2, [r5, #0x18]
  00024	e585201c	 str         r2, [r5, #0x1C]
  00028	e5852020	 str         r2, [r5, #0x20]
  0002c	e5852024	 str         r2, [r5, #0x24]
  00030	e5852028	 str         r2, [r5, #0x28]
  00034	e585202c	 str         r2, [r5, #0x2C]
  00038	e5852030	 str         r2, [r5, #0x30]
  0003c	e5852044	 str         r2, [r5, #0x44]
  00040	e585203c	 str         r2, [r5, #0x3C]

; 115  :     // initialize master/slave registry value set
; 116  :     m_pDskReg[0] = NULL;

  00044	e5852034	 str         r2, [r5, #0x34]

; 117  :     m_pDskReg[1] = NULL;

  00048	e5852038	 str         r2, [r5, #0x38]

; 118  :     // initialize master/slave stream interface handles
; 119  :     m_pDisk[0] = NULL;

  0004c	e5852048	 str         r2, [r5, #0x48]

; 120  :     m_pDisk[1] = NULL;

  00050	e585204c	 str         r2, [r5, #0x4C]
  00054	e5854000	 str         r4, [r5]

; 121  : }

  00058	e1a00005	 mov         r0, r5
  0005c	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00060	e12fff1e	 bx          lr
  00064		 |$M33049|

			 ENDP  ; |??0CPort@@QAA@PAVCIDEBUS@@@Z|, CPort::CPort

	EXPORT	|??1CPort@@QAA@XZ|			; CPort::~CPort
	IMPORT	|LocalFree|
	IMPORT	|DeleteCriticalSection|
	IMPORT	|CloseHandle|
	IMPORT	|InterruptDisable|
	IMPORT	|MmUnmapIoSpace|

  00000			 AREA	 |.text| { |??1CPort@@QAA@XZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$??1CPort@@QAA@XZ|, PDATA, SELECTION=5, ASSOC=|.text| { |??1CPort@@QAA@XZ| } ; comdat associative
|$T33059| DCD	|$L33058|
	DCD	0x40002901
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |??1CPort@@QAA@XZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |??1CPort@@QAA@XZ| PROC		; CPort::~CPort

; 126  : {

  00000		 |$L33058|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M33056|
  00004	e1a04000	 mov         r4, r0

; 127  :     DeleteCriticalSection(&m_csPort);

  00008	e2840004	 add         r0, r4, #4
  0000c	eb000000	 bl          DeleteCriticalSection

; 128  :     // unmap ATA channel's I/O windows
; 129  :     if (m_dwRegBase) {

  00010	e5943020	 ldr         r3, [r4, #0x20]
  00014	e3530000	 cmp         r3, #0

; 130  :         MmUnmapIoSpace((LPVOID)m_dwRegBase, ATA_REG_LENGTH);

  00018	13a01008	 movne       r1, #8
  0001c	11a00003	 movne       r0, r3
  00020	1b000000	 blne        MmUnmapIoSpace

; 131  :     }
; 132  :     if (m_dwRegAlt) {

  00024	e5943024	 ldr         r3, [r4, #0x24]
  00028	e3530000	 cmp         r3, #0

; 133  :         MmUnmapIoSpace((LPVOID)m_dwRegAlt, ATA_REG_LENGTH);

  0002c	13a01008	 movne       r1, #8
  00030	11a00003	 movne       r0, r3
  00034	1b000000	 blne        MmUnmapIoSpace

; 134  :     }
; 135  :     if (m_dwBMR) {

  00038	e5943028	 ldr         r3, [r4, #0x28]
  0003c	e3530000	 cmp         r3, #0

; 136  :         MmUnmapIoSpace((LPVOID)m_dwBMR, 16);

  00040	13a01010	 movne       r1, #0x10
  00044	11a00003	 movne       r0, r3
  00048	1b000000	 blne        MmUnmapIoSpace

; 137  :     }
; 138  :     // close interrupt event handle
; 139  :     if (m_hIRQEvent) {

  0004c	e5943030	 ldr         r3, [r4, #0x30]
  00050	e3530000	 cmp         r3, #0

; 140  :         CloseHandle(m_hIRQEvent);

  00054	11a00003	 movne       r0, r3
  00058	1b000000	 blne        CloseHandle

; 141  :     }
; 142  :     // close interrupt thread
; 143  :     if (m_hThread) {

  0005c	e5943044	 ldr         r3, [r4, #0x44]
  00060	e3530000	 cmp         r3, #0

; 144  :         CloseHandle(m_hThread);

  00064	11a00003	 movne       r0, r3
  00068	1b000000	 blne        CloseHandle

; 145  :     }
; 146  :     // disable interrupt
; 147  :     if (m_dwSysIntr != SYSINTR_NOP) {

  0006c	e594303c	 ldr         r3, [r4, #0x3C]
  00070	e3530000	 cmp         r3, #0

; 148  :         InterruptDisable(m_dwSysIntr);

  00074	11a00003	 movne       r0, r3
  00078	1b000000	 blne        InterruptDisable

⌨️ 快捷键说明

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