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

📄 atamain.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 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	|??0CIDEBUS@@QAA@XZ|			; CIDEBUS::CIDEBUS
	IMPORT	|memset|

  00000			 AREA	 |.pdata|, PDATA
|$T33063| DCD	|$L33062|
	DCD	0x40003404
; Function compile flags: /Odt
; File d:\wince500\platform\smdk2440\drivers\atapi\atamain.cpp

  00000			 AREA	 |.text|, CODE, ARM

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

; 40   : {

  00000		 |$L33062|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0001	 stmdb       sp!, {r0}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd008	 sub         sp, sp, #8
  00010		 |$M33060|

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

  00010	e3a03000	 mov         r3, #0
  00014	e58d3000	 str         r3, [sp]
  00018	ea000002	 b           |$L32340|
  0001c		 |$L32341|
  0001c	e59d3000	 ldr         r3, [sp]
  00020	e2833001	 add         r3, r3, #1
  00024	e58d3000	 str         r3, [sp]
  00028		 |$L32340|
  00028	e59d3000	 ldr         r3, [sp]
  0002c	e3530004	 cmp         r3, #4
  00030	aa00000f	 bge         |$L32342|

; 43   :         m_hDevice[i] = NULL;

  00034	e59d1000	 ldr         r1, [sp]
  00038	e3a03004	 mov         r3, #4
  0003c	e0020391	 mul         r2, r1, r3
  00040	e59d3010	 ldr         r3, [sp, #0x10]
  00044	e0832002	 add         r2, r3, r2
  00048	e3a03000	 mov         r3, #0
  0004c	e5823000	 str         r3, [r2]

; 44   :         m_szDevice[i] = NULL;

  00050	e59d3010	 ldr         r3, [sp, #0x10]
  00054	e2831010	 add         r1, r3, #0x10
  00058	e59d2000	 ldr         r2, [sp]
  0005c	e3a03004	 mov         r3, #4
  00060	e0030392	 mul         r3, r2, r3
  00064	e0812003	 add         r2, r1, r3
  00068	e3a03000	 mov         r3, #0
  0006c	e5823000	 str         r3, [r2]

; 45   :     }

  00070	eaffffe9	 b           |$L32341|
  00074		 |$L32342|

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

  00074	e3a02074	 mov         r2, #0x74
  00078	e3a01000	 mov         r1, #0
  0007c	e59d3010	 ldr         r3, [sp, #0x10]
  00080	e2830020	 add         r0, r3, #0x20
  00084	eb000000	 bl          memset

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

  00088	e59d3010	 ldr         r3, [sp, #0x10]
  0008c	e2832094	 add         r2, r3, #0x94
  00090	e3a03000	 mov         r3, #0
  00094	e5823000	 str         r3, [r2]

; 50   :     m_pPrimaryPort = NULL;

  00098	e59d3010	 ldr         r3, [sp, #0x10]
  0009c	e2832098	 add         r2, r3, #0x98
  000a0	e3a03000	 mov         r3, #0
  000a4	e5823000	 str         r3, [r2]

; 51   :     m_pSecondaryPort = NULL;

  000a8	e59d3010	 ldr         r3, [sp, #0x10]
  000ac	e283209c	 add         r2, r3, #0x9C
  000b0	e3a03000	 mov         r3, #0
  000b4	e5823000	 str         r3, [r2]

; 52   : }

  000b8	e59d3010	 ldr         r3, [sp, #0x10]
  000bc	e58d3004	 str         r3, [sp, #4]
  000c0	e59d0004	 ldr         r0, [sp, #4]
  000c4	e28dd008	 add         sp, sp, #8
  000c8	e89d6000	 ldmia       sp, {sp, lr}
  000cc	e12fff1e	 bx          lr
  000d0		 |$M33061|

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

	EXPORT	|??1CIDEBUS@@QAA@XZ|			; CIDEBUS::~CIDEBUS
	EXPORT	|??_GCPort@@QAAPAXI@Z|			; CPort::`scalar deleting destructor'
	EXPORT	|??_C@_1HA@HPHGJOKB@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@| [ DATA ] ; `string'
	EXPORT	|??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@| [ DATA ] ; `string'
	IMPORT	|??3@YAXPAX@Z|				; operator delete
	IMPORT	|LocalFree|
	IMPORT	|NKDbgPrintfW|
	IMPORT	|dpCurSettings|
	IMPORT	|DeactivateDevice|

  00008			 AREA	 |.pdata|, PDATA
|$T33081| DCD	|$L33080|
	DCD	0x4000b904

  00000			 AREA	 |.rdata| { |??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@| DCB "%"
	DCB	0x0, "s", 0x0, ":", 0x0, " ", 0x0, "D", 0x0, "E", 0x0, "B"
	DCB	0x0, "U", 0x0, "G", 0x0, "C", 0x0, "H", 0x0, "K", 0x0, " "
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
	DCB	0x0, " ", 0x0, "i", 0x0, "n", 0x0, " ", 0x0, "f", 0x0, "i"
	DCB	0x0, "l", 0x0, "e", 0x0, " ", 0x0, "%", 0x0, "s", 0x0, " "
	DCB	0x0, "a", 0x0, "t", 0x0, " ", 0x0, "l", 0x0, "i", 0x0, "n"
	DCB	0x0, "e", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, " ", 0x0, 0xd
	DCB	0x0, 0xa, 0x0, 0x0, 0x0			; `string'

  00000			 AREA	 |.rdata| { |??_C@_1HA@HPHGJOKB@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HA@HPHGJOKB@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@| DCB "d"
	DCB	0x0, ":", 0x0, "\\", 0x0, "w", 0x0, "i", 0x0, "n", 0x0, "c"
	DCB	0x0, "e", 0x0, "5", 0x0, "0", 0x0, "0", 0x0, "\\", 0x0, "p"
	DCB	0x0, "l", 0x0, "a", 0x0, "t", 0x0, "f", 0x0, "o", 0x0, "r"
	DCB	0x0, "m", 0x0, "\\", 0x0, "s", 0x0, "m", 0x0, "d", 0x0, "k"
	DCB	0x0, "2", 0x0, "4", 0x0, "4", 0x0, "0", 0x0, "\\", 0x0, "d"
	DCB	0x0, "r", 0x0, "i", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "s"
	DCB	0x0, "\\", 0x0, "a", 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i"
	DCB	0x0, "\\", 0x0, "a", 0x0, "t", 0x0, "a", 0x0, "m", 0x0, "a"
	DCB	0x0, "i", 0x0, "n", 0x0, ".", 0x0, "c", 0x0, "p", 0x0, "p"
	DCB	0x0, 0x0, 0x0				; `string'
; Function compile flags: /Odt

  000d0			 AREA	 |.text|, CODE, ARM

  000d0		 |??1CIDEBUS@@QAA@XZ| PROC		; CIDEBUS::~CIDEBUS

; 57   : {

  000d0		 |$L33080|
  000d0	e1a0c00d	 mov         r12, sp
  000d4	e92d0001	 stmdb       sp!, {r0}
  000d8	e92d5000	 stmdb       sp!, {r12, lr}
  000dc	e24dd038	 sub         sp, sp, #0x38
  000e0		 |$M33078|

; 58   :     // deinitialize device handle table and device registry key name table
; 59   :     for (int i = 0; i < MAX_DEVICES_PER_CONTROLLER; i++) {

  000e0	e3a03000	 mov         r3, #0
  000e4	e58d3000	 str         r3, [sp]
  000e8	ea000002	 b           |$L32347|
  000ec		 |$L32348|
  000ec	e59d3000	 ldr         r3, [sp]
  000f0	e2833001	 add         r3, r3, #1
  000f4	e58d3000	 str         r3, [sp]
  000f8		 |$L32347|
  000f8	e59d3000	 ldr         r3, [sp]
  000fc	e3530004	 cmp         r3, #4
  00100	aa000047	 bge         |$L32349|

; 60   :         if (m_hDevice[i]) {

  00104	e59d1000	 ldr         r1, [sp]
  00108	e3a03004	 mov         r3, #4
  0010c	e0020391	 mul         r2, r1, r3
  00110	e59d3040	 ldr         r3, [sp, #0x40]
  00114	e0833002	 add         r3, r3, r2
  00118	e5933000	 ldr         r3, [r3]
  0011c	e3530000	 cmp         r3, #0
  00120	0a00002b	 beq         |$L32350|

; 61   :             BOOL fOk = DeactivateDevice(m_hDevice[i]);

  00124	e59d1000	 ldr         r1, [sp]
  00128	e3a03004	 mov         r3, #4
  0012c	e0020391	 mul         r2, r1, r3
  00130	e59d3040	 ldr         r3, [sp, #0x40]
  00134	e0833002	 add         r3, r3, r2
  00138	e5930000	 ldr         r0, [r3]
  0013c	eb000000	 bl          DeactivateDevice
  00140	e58d001c	 str         r0, [sp, #0x1C]
  00144	e59d301c	 ldr         r3, [sp, #0x1C]
  00148	e58d3004	 str         r3, [sp, #4]

; 62   :             DEBUGCHK(fOk);

  0014c	e59d3004	 ldr         r3, [sp, #4]
  00150	e3530000	 cmp         r3, #0
  00154	0a000002	 beq         |$L33065|
  00158	e3a03001	 mov         r3, #1
  0015c	e58d3020	 str         r3, [sp, #0x20]
  00160	ea000007	 b           |$L33066|
  00164		 |$L33065|
  00164	e3a0303e	 mov         r3, #0x3E
  00168	e59f2240	 ldr         r2, [pc, #0x240]
  0016c	e59f1238	 ldr         r1, [pc, #0x238]
  00170	e59f0230	 ldr         r0, [pc, #0x230]
  00174	eb000000	 bl          NKDbgPrintfW
  00178	e6000010	 DCD         0xe6000010
  0017c	e3a03000	 mov         r3, #0
  00180	e58d3020	 str         r3, [sp, #0x20]
  00184		 |$L33066|

; 63   :             DEBUGCHK(m_szDevice[i] != NULL);

  00184	e59d3040	 ldr         r3, [sp, #0x40]
  00188	e2831010	 add         r1, r3, #0x10
  0018c	e59d2000	 ldr         r2, [sp]
  00190	e3a03004	 mov         r3, #4
  00194	e0030392	 mul         r3, r2, r3
  00198	e0813003	 add         r3, r1, r3
  0019c	e5933000	 ldr         r3, [r3]
  001a0	e3530000	 cmp         r3, #0
  001a4	0a000002	 beq         |$L33067|
  001a8	e3a03001	 mov         r3, #1
  001ac	e58d3024	 str         r3, [sp, #0x24]
  001b0	ea000007	 b           |$L33068|
  001b4		 |$L33067|
  001b4	e3a0303f	 mov         r3, #0x3F
  001b8	e59f21f0	 ldr         r2, [pc, #0x1F0]
  001bc	e59f11e8	 ldr         r1, [pc, #0x1E8]
  001c0	e59f01e0	 ldr         r0, [pc, #0x1E0]
  001c4	eb000000	 bl          NKDbgPrintfW
  001c8	e6000010	 DCD         0xe6000010
  001cc	e3a03000	 mov         r3, #0
  001d0	e58d3024	 str         r3, [sp, #0x24]
  001d4		 |$L33068|
  001d4		 |$L32350|

; 64   :         }
; 65   :         if (m_szDevice[i] != NULL) {

  001d4	e59d3040	 ldr         r3, [sp, #0x40]
  001d8	e2831010	 add         r1, r3, #0x10
  001dc	e59d2000	 ldr         r2, [sp]
  001e0	e3a03004	 mov         r3, #4
  001e4	e0030392	 mul         r3, r2, r3
  001e8	e0813003	 add         r3, r1, r3
  001ec	e5933000	 ldr         r3, [r3]
  001f0	e3530000	 cmp         r3, #0
  001f4	0a000009	 beq         |$L32358|

; 66   :             delete m_szDevice[i];

  001f8	e59d3040	 ldr         r3, [sp, #0x40]
  001fc	e2831010	 add         r1, r3, #0x10
  00200	e59d2000	 ldr         r2, [sp]
  00204	e3a03004	 mov         r3, #4
  00208	e0030392	 mul         r3, r2, r3
  0020c	e0813003	 add         r3, r1, r3
  00210	e5933000	 ldr         r3, [r3]
  00214	e58d3008	 str         r3, [sp, #8]
  00218	e59d0008	 ldr         r0, [sp, #8]
  0021c	eb000000	 bl          |??3@YAXPAX@Z|
  00220		 |$L32358|

; 67   :         }
; 68   :     }

  00220	eaffffb1	 b           |$L32348|
  00224		 |$L32349|

; 69   :     // delete IDE_ registry value set
; 70   :     if (m_pIdeReg) {

  00224	e59d3040	 ldr         r3, [sp, #0x40]
  00228	e2833094	 add         r3, r3, #0x94
  0022c	e5933000	 ldr         r3, [r3]
  00230	e3530000	 cmp         r3, #0
  00234	0a00002a	 beq         |$L32360|

; 71   :         if (m_pIdeReg->pszSpawnFunction) {

  00238	e59d3040	 ldr         r3, [sp, #0x40]
  0023c	e2833094	 add         r3, r3, #0x94
  00240	e5933000	 ldr         r3, [r3]
  00244	e2833024	 add         r3, r3, #0x24
  00248	e5933000	 ldr         r3, [r3]
  0024c	e3530000	 cmp         r3, #0
  00250	0a000005	 beq         |$L32361|

; 72   :             LocalFree(m_pIdeReg->pszSpawnFunction);

  00254	e59d3040	 ldr         r3, [sp, #0x40]
  00258	e2833094	 add         r3, r3, #0x94
  0025c	e5933000	 ldr         r3, [r3]
  00260	e2833024	 add         r3, r3, #0x24
  00264	e5930000	 ldr         r0, [r3]
  00268	eb000000	 bl          LocalFree
  0026c		 |$L32361|

; 73   :         }
; 74   :         if (m_pIdeReg->pszIsrDll) {

  0026c	e59d3040	 ldr         r3, [sp, #0x40]
  00270	e2833094	 add         r3, r3, #0x94
  00274	e5933000	 ldr         r3, [r3]
  00278	e2833028	 add         r3, r3, #0x28
  0027c	e5933000	 ldr         r3, [r3]
  00280	e3530000	 cmp         r3, #0
  00284	0a000005	 beq         |$L32362|

; 75   :             LocalFree(m_pIdeReg->pszIsrDll);

  00288	e59d3040	 ldr         r3, [sp, #0x40]
  0028c	e2833094	 add         r3, r3, #0x94
  00290	e5933000	 ldr         r3, [r3]
  00294	e2833028	 add         r3, r3, #0x28
  00298	e5930000	 ldr         r0, [r3]
  0029c	eb000000	 bl          LocalFree
  002a0		 |$L32362|

; 76   :         }
; 77   :         if (m_pIdeReg->pszIsrHandler) {

  002a0	e59d3040	 ldr         r3, [sp, #0x40]
  002a4	e2833094	 add         r3, r3, #0x94
  002a8	e5933000	 ldr         r3, [r3]
  002ac	e283302c	 add         r3, r3, #0x2C
  002b0	e5933000	 ldr         r3, [r3]
  002b4	e3530000	 cmp         r3, #0
  002b8	0a000005	 beq         |$L32363|

; 78   :             LocalFree(m_pIdeReg->pszIsrHandler);

  002bc	e59d3040	 ldr         r3, [sp, #0x40]

⌨️ 快捷键说明

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