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

📄 atapipci.cod

📁 2440 CE500BSP包, EBOOT可用DEBUG版调试
💻 COD
📖 第 1 页 / 共 5 页
字号:

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

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

; 212  :     inline BYTE GetError() {

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

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

  00010	e59d3010	 ldr         r3, [sp, #0x10]
  00014	e2832030	 add         r2, r3, #0x30
  00018	e59d3010	 ldr         r3, [sp, #0x10]
  0001c	e283300c	 add         r3, r3, #0xC
  00020	e5922000	 ldr         r2, [r2]
  00024	e5933000	 ldr         r3, [r3]
  00028	e0820003	 add         r0, r2, r3
  0002c	eb000000	 bl          READ_PORT_UCHAR
  00030	e5cd0004	 strb        r0, [sp, #4]
  00034	e5dd3004	 ldrb        r3, [sp, #4]
  00038	e5cd3000	 strb        r3, [sp]
  0003c	e5dd0000	 ldrb        r0, [sp]

; 214  :     }

  00040	e28dd008	 add         sp, sp, #8
  00044	e89d6000	 ldmia       sp, {sp, lr}
  00048	e12fff1e	 bx          lr
  0004c		 |$M32472|

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

	IMPORT	|CeLogData|

  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
|$T32482| DCD	|$L32481|
	DCD	0x40002804
; Function compile flags: /Odt

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

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

; 257  :     inline BYTE GetBaseStatus() {

  00000		 |$L32481|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0001	 stmdb       sp!, {r0}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd01c	 sub         sp, sp, #0x1C
  00010		 |$M32479|

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

  00010	e59d3024	 ldr         r3, [sp, #0x24]
  00014	e2832030	 add         r2, r3, #0x30
  00018	e59d3024	 ldr         r3, [sp, #0x24]
  0001c	e2833024	 add         r3, r3, #0x24
  00020	e5922000	 ldr         r2, [r2]
  00024	e5933000	 ldr         r3, [r3]
  00028	e0820003	 add         r0, r2, r3
  0002c	eb000000	 bl          READ_PORT_UCHAR
  00030	e5cd0018	 strb        r0, [sp, #0x18]
  00034	e5dd3018	 ldrb        r3, [sp, #0x18]
  00038	e5cd3010	 strb        r3, [sp, #0x10]

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

  0003c	e59f3058	 ldr         r3, [pc, #0x58]
  00040	e5933440	 ldr         r3, [r3, #0x440]
  00044	e3130902	 tst         r3, #2, 18
  00048	0a00000d	 beq         |$L31625|
  0004c	e3a03000	 mov         r3, #0
  00050	e58d300c	 str         r3, [sp, #0xC]
  00054	e3a03000	 mov         r3, #0
  00058	e58d3008	 str         r3, [sp, #8]
  0005c	e3a03101	 mov         r3, #1, 2
  00060	e58d3004	 str         r3, [sp, #4]
  00064	e3a03000	 mov         r3, #0
  00068	e58d3000	 str         r3, [sp]
  0006c	e3a03001	 mov         r3, #1
  00070	e28d2010	 add         r2, sp, #0x10
  00074	e3a01d86	 mov         r1, #0x86, 26
  00078	e3811002	 orr         r1, r1, #2
  0007c	e3a00001	 mov         r0, #1
  00080	eb000000	 bl          CeLogData
  00084		 |$L31625|

; 260  :         return bStatus;

  00084	e5dd3010	 ldrb        r3, [sp, #0x10]
  00088	e5cd3014	 strb        r3, [sp, #0x14]
  0008c	e5dd0014	 ldrb        r0, [sp, #0x14]

; 261  :     }

  00090	e28dd01c	 add         sp, sp, #0x1C
  00094	e89d6000	 ldmia       sp, {sp, lr}
  00098	e12fff1e	 bx          lr
  0009c		 |$L32484|
  0009c	00000000	 DCD         |dpCurSettings|
  000a0		 |$M32480|

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


  00030			 AREA	 |.pdata|, PDATA
|$T32490| DCD	|$L32489|
	DCD	0x40000d03
; Function compile flags: /Odt
; File d:\wince500\platform\smdk2440\drivers\atapi\atapipci.cpp

  00698			 AREA	 |.text|, CODE, ARM

  00698		 |?EnableInterrupt@CPCIDisk@@UAAXXZ| PROC ; CPCIDisk::EnableInterrupt

; 217  : {

  00698		 |$L32489|
  00698	e1a0c00d	 mov         r12, sp
  0069c	e92d0001	 stmdb       sp!, {r0}
  006a0	e92d5000	 stmdb       sp!, {r12, lr}
  006a4		 |$M32487|

; 218  :     GetBaseStatus(); // acknowledge interrupt, if pending

  006a4	e59d0008	 ldr         r0, [sp, #8]
  006a8	eb000000	 bl          |?GetBaseStatus@CDisk@@QAAEXZ|

; 219  : 
; 220  :     // signal interrupt done
; 221  :     InterruptDone(m_pPort->m_dwSysIntr);

  006ac	e59d3008	 ldr         r3, [sp, #8]
  006b0	e283303c	 add         r3, r3, #0x3C
  006b4	e5933000	 ldr         r3, [r3]
  006b8	e283303c	 add         r3, r3, #0x3C
  006bc	e5930000	 ldr         r0, [r3]
  006c0	eb000000	 bl          InterruptDone

; 222  : }

  006c4	e89d6000	 ldmia       sp, {sp, lr}
  006c8	e12fff1e	 bx          lr
  006cc		 |$M32488|

			 ENDP  ; |?EnableInterrupt@CPCIDisk@@UAAXXZ|, CPCIDisk::EnableInterrupt


  00038			 AREA	 |.pdata|, PDATA
|$T32495| DCD	|$L32494|
	DCD	0x40004103
; Function compile flags: /Odt

  006cc			 AREA	 |.text|, CODE, ARM

  006cc		 |?ConfigureRegisterBlock@CPCIDisk@@UAAXK@Z| PROC ; CPCIDisk::ConfigureRegisterBlock

; 237  : {

  006cc		 |$L32494|
  006cc	e1a0c00d	 mov         r12, sp
  006d0	e92d0003	 stmdb       sp!, {r0, r1}
  006d4	e92d5000	 stmdb       sp!, {r12, lr}
  006d8		 |$M32492|

; 238  :     m_dwStride = dwStride;

  006d8	e59d3008	 ldr         r3, [sp, #8]
  006dc	e2832004	 add         r2, r3, #4
  006e0	e59d300c	 ldr         r3, [sp, #0xC]
  006e4	e5823000	 str         r3, [r2]

; 239  :     m_dwDataDrvCtrlOffset = ATA_REG_DATA * dwStride;

  006e8	e59d3008	 ldr         r3, [sp, #8]
  006ec	e2832008	 add         r2, r3, #8
  006f0	e3a03000	 mov         r3, #0
  006f4	e5823000	 str         r3, [r2]

; 240  :     m_dwFeatureErrorOffset = ATA_REG_FEATURE * dwStride;

  006f8	e59d3008	 ldr         r3, [sp, #8]
  006fc	e283200c	 add         r2, r3, #0xC
  00700	e59d300c	 ldr         r3, [sp, #0xC]
  00704	e5823000	 str         r3, [r2]

; 241  :     m_dwSectCntReasonOffset = ATA_REG_SECT_CNT * dwStride;

  00708	e59d100c	 ldr         r1, [sp, #0xC]
  0070c	e3a03002	 mov         r3, #2
  00710	e0020391	 mul         r2, r1, r3
  00714	e59d3008	 ldr         r3, [sp, #8]
  00718	e2833010	 add         r3, r3, #0x10
  0071c	e5832000	 str         r2, [r3]

; 242  :     m_dwSectNumOffset = ATA_REG_SECT_NUM * dwStride;

  00720	e59d100c	 ldr         r1, [sp, #0xC]
  00724	e3a03003	 mov         r3, #3
  00728	e0020391	 mul         r2, r1, r3
  0072c	e59d3008	 ldr         r3, [sp, #8]
  00730	e2833014	 add         r3, r3, #0x14
  00734	e5832000	 str         r2, [r3]

; 243  :     m_dwDrvHeadOffset = ATA_REG_DRV_HEAD * dwStride;

  00738	e59d100c	 ldr         r1, [sp, #0xC]
  0073c	e3a03006	 mov         r3, #6
  00740	e0020391	 mul         r2, r1, r3
  00744	e59d3008	 ldr         r3, [sp, #8]
  00748	e2833020	 add         r3, r3, #0x20
  0074c	e5832000	 str         r2, [r3]

; 244  :     m_dwCommandStatusOffset = ATA_REG_COMMAND * dwStride;

  00750	e59d100c	 ldr         r1, [sp, #0xC]
  00754	e3a03007	 mov         r3, #7
  00758	e0020391	 mul         r2, r1, r3
  0075c	e59d3008	 ldr         r3, [sp, #8]
  00760	e2833024	 add         r3, r3, #0x24
  00764	e5832000	 str         r2, [r3]

; 245  :     m_dwByteCountLowOffset = ATA_REG_BYTECOUNTLOW * dwStride;

  00768	e59d100c	 ldr         r1, [sp, #0xC]
  0076c	e3a03004	 mov         r3, #4
  00770	e0020391	 mul         r2, r1, r3
  00774	e59d3008	 ldr         r3, [sp, #8]
  00778	e2833018	 add         r3, r3, #0x18
  0077c	e5832000	 str         r2, [r3]

; 246  :     m_dwByteCountHighOffset = ATA_REG_BYTECOUNTHIGH * dwStride;

  00780	e59d100c	 ldr         r1, [sp, #0xC]
  00784	e3a03005	 mov         r3, #5
  00788	e0020391	 mul         r2, r1, r3
  0078c	e59d3008	 ldr         r3, [sp, #8]
  00790	e283301c	 add         r3, r3, #0x1C
  00794	e5832000	 str         r2, [r3]

; 247  : 
; 248  :     // PCI ATA implementations don't assign I/O resources for the first four
; 249  :     // bytes, as they are unused
; 250  : 
; 251  :     //m_dwAltStatusOffset = ATA_REG_ALT_STATUS * dwStride;
; 252  :     //m_dwAltDrvCtrl = ATA_REG_DRV_CTRL * dwStride;
; 253  : //LQM 2006-8-14
; 254  :     m_dwAltStatusOffset = ATA_REG_ALT_STATUS_CS1 * dwStride;

  00798	e59d100c	 ldr         r1, [sp, #0xC]
  0079c	e3a03006	 mov         r3, #6
  007a0	e0020391	 mul         r2, r1, r3
  007a4	e59d3008	 ldr         r3, [sp, #8]
  007a8	e2833028	 add         r3, r3, #0x28
  007ac	e5832000	 str         r2, [r3]

; 255  :     m_dwAltDrvCtrl = ATA_REG_DRV_CTRL_CS1 * dwStride;

  007b0	e59d100c	 ldr         r1, [sp, #0xC]
  007b4	e3a03006	 mov         r3, #6
  007b8	e0020391	 mul         r2, r1, r3
  007bc	e59d3008	 ldr         r3, [sp, #8]
  007c0	e283302c	 add         r3, r3, #0x2C
  007c4	e5832000	 str         r2, [r3]

; 256  : }

  007c8	e89d6000	 ldmia       sp, {sp, lr}
  007cc	e12fff1e	 bx          lr
  007d0		 |$M32493|

			 ENDP  ; |?ConfigureRegisterBlock@CPCIDisk@@UAAXK@Z|, CPCIDisk::ConfigureRegisterBlock

	EXPORT	|??_C@_1HK@KNLNCEBN@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt@| [ DATA ] ; `string'
	IMPORT	|VirtualAlloc|
	IMPORT	|?Init@CDisk@@UAAHPAUHKEY__@@@Z|	; CDisk::Init
	IMPORT	|?IsCDRomDevice@CDisk@@QAAHXZ|		; CDisk::IsCDRomDevice

  00040			 AREA	 |.pdata|, PDATA
|$T32505| DCD	|$L32504|
	DCD	0x40005a04

  00000			 AREA	 |.rdata| { |??_C@_1HK@KNLNCEBN@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HK@KNLNCEBN@?$AAA?$AAt?$AAa?$AAp?$AAi?$AA?$CB?$AAC?$AAP?$AAC?$AAI?$AAD?$AAi?$AAs?$AAk?$AA?3?$AA?3?$AAI?$AAn?$AAi?$AAt@| DCB "A"
	DCB	0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i", 0x0, "!", 0x0, "C"
	DCB	0x0, "P", 0x0, "C", 0x0, "I", 0x0, "D", 0x0, "i", 0x0, "s"
	DCB	0x0, "k", 0x0, ":", 0x0, ":", 0x0, "I", 0x0, "n", 0x0, "i"
	DCB	0x0, "t", 0x0, ">", 0x0, " ", 0x0, "F", 0x0, "a", 0x0, "i"
	DCB	0x0, "l", 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "o"
	DCB	0x0, " ", 0x0, "c", 0x0, "o", 0x0, "n", 0x0, "f", 0x0, "i"
	DCB	0x0, "g", 0x0, "u", 0x0, "r", 0x0, "e", 0x0, " ", 0x0, "p"
	DCB	0x0, "o", 0x0, "r", 0x0, "t", 0x0, ";", 0x0, " ", 0x0, "d"
	DCB	0x0, "e", 0x0, "v", 0x0, "i", 0x0, "c", 0x0, "e", 0x0, "("
	DCB	0x0, "%", 0x0, "u", 0x0, ")", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
	DCB	0x0					; `string'
; Function compile flags: /Odt

  007d0			 AREA	 |.text|, CODE, ARM

  007d0		 |?Init@CPCIDisk@@UAAHPAUHKEY__@@@Z| PROC ; CPCIDisk::Init

; 270  : {

  007d0		 |$L32504|
  007d0	e1a0c00d	 mov         r12, sp
  007d4	e92d0003	 stmdb       sp!, {r0, r1}
  007d8	e92d5000	 stmdb       sp!, {r12, lr}
  007dc	e24dd020	 sub         sp, sp, #0x20
  007e0		 |$M32502|

; 271  :     BOOL bRet = FALSE;

  007e0	e3a03000	 mov         r3, #0
  007e4	e58d3000	 str         r3, [sp]

; 272  : 
; 273  :     m_f16Bit = TRUE; // PCI is 16-bit

  007e8	e59d3028	 ldr         r3, [sp, #0x28]
  007ec	e2832038	 add         r2, r3, #0x38
  007f0	e3a03001	 mov         r3, #1
  007f4	e5823000	 str         r3, [r2]

; 274  : 
; 275  :     // configure port
; 276  :     if (!ConfigPort()) {

  007f8	e59d3028	 ldr         r3, [sp, #0x28]
  007fc	e5933000	 ldr         r3, [r3]
  00800	e2833054	 add         r3, r3, #0x54
  00804	e59d0028	 ldr         r0, [sp, #0x28]
  00808	e5933000	 ldr         r3, [r3]
  0080c	e1a0e00f	 mov         lr, pc
  00810	e12fff13	 bx          r3
  00814	e58d0008	 str         r0, [sp, #8]
  00818	e59d3008	 ldr         r3, [sp, #8]
  0081c	e3530000	 cmp         r3, #0
  00820	1a00000f	 bne         |$L32097|

⌨️ 快捷键说明

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