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

📄 cdio.cod

📁 PXA270的BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4091 

	TTL	C:\WINCE500\PLATFORM\bvdmain\drivers\atapi\.\cdio.cpp
	CODE32

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

	EXPORT	|?StallExecution@CDisk@@QAAXK@Z|	; CDisk::StallExecution
	IMPORT	|StallExecution|
	IMPORT	|Sleep|
; File c:\wince500\platform\bvdmain\drivers\atapi\diskmain.h

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

  00000			 AREA	 |.pdata$$?StallExecution@CDisk@@QAAXK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?StallExecution@CDisk@@QAAXK@Z| } ; comdat associative
|$T33420| DCD	|$L33419|
	DCD	0x40001201
; Function compile flags: /Ogsy

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

  00000		 |?StallExecution@CDisk@@QAAXK@Z| PROC	; CDisk::StallExecution

; 350  :     {

  00000		 |$L33419|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M33417|

; 351  :         if ((dwTime >= 100) && (m_dwDeviceFlags & DFLAGS_DEVICE_CDROM)) 

  00004	e3510064	 cmp         r1, #0x64
  00008	3a000008	 bcc         |$L32464|
  0000c	e5903004	 ldr         r3, [r0, #4]
  00010	e3130301	 tst         r3, #1, 6
  00014	0a000005	 beq         |$L32464|

; 352  :             Sleep (dwTime / 100);

  00018	e59f3024	 ldr         r3, [pc, #0x24]
  0001c	e0803391	 umull       r3, r0, r1, r3
  00020	e1a002a0	 mov         r0, r0, lsr #5
  00024	eb000000	 bl          Sleep

; 355  :     }    

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

; 353  :         else 
; 354  :             ::StallExecution(dwTime*10);         

  00030	e0810101	 add         r0, r1, r1, lsl #2
  00034	e1a00080	 mov         r0, r0, lsl #1
  00038	eb000000	 bl          StallExecution

; 355  :     }    

  0003c	e49de004	 ldr         lr, [sp], #4
  00040	e12fff1e	 bx          lr
  00044		 |$L33422|
  00044	51eb851f	 DCD         0x51eb851f
  00048		 |$M33418|

			 ENDP  ; |?StallExecution@CDisk@@QAAXK@Z|, CDisk::StallExecution

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

  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
|$T33430| DCD	|$L33429|
	DCD	0x40000601
; Function compile flags: /Ogsy

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

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

; 371  :      {

  00000		 |$L33429|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M33427|

; 372  :      //RETAILMSG(1,(TEXT("GetAltStatus:111111------\r\n")));
; 373  :         return (BYTE) ATA_READ_BYTE((volatile PBYTE)m_pATARegAlt + m_dwAltStatusOffset);

  00004	e59f0008	 ldr         r0, [pc, #8]
  00008	eb000000	 bl          READ_PORT_UCHAR

; 374  :     }

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$L33432|
  00014	b6b000c0	 DCD         0xb6b000c0
  00018		 |$M33428|

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

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

  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
|$T33440| DCD	|$L33439|
	DCD	0x40000601
; Function compile flags: /Ogsy

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

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

; 379  :     	{

  00000		 |$L33439|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M33437|

; 380  :     	   BYTE bStatus = ATA_READ_BYTE((volatile PBYTE)m_pATAReg + m_dwCommandStatusOffset);

  00004	e59f0008	 ldr         r0, [pc, #8]
  00008	eb000000	 bl          READ_PORT_UCHAR

; 381  : 		return bStatus;
; 382  :     	}

  0000c	e49de004	 ldr         lr, [sp], #4
  00010	e12fff1e	 bx          lr
  00014		 |$L33442|
  00014	b6a000e0	 DCD         0xb6a000e0
  00018		 |$M33438|

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

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

  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
|$T33450| DCD	|$L33449|
	DCD	0x40000601
; Function compile flags: /Ogsy

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

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

; 386  : 	  inline BYTE GetError() {

  00000		 |$L33449|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M33447|

; 387  :         return (BYTE) ATA_READ_BYTE( (volatile PBYTE) m_pATAReg + m_dwFeatureErrorOffset);

  00004	e3a00183	 mov         r0, #0x83, 2
  00008	e2400696	 sub         r0, r0, #0x96, 12
  0000c	eb000000	 bl          READ_PORT_UCHAR

; 388  :     }

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

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

	EXPORT	|?SelectDevice@CDisk@@QAAXXZ|		; CDisk::SelectDevice
	EXPORT	|??_C@_1CM@IOJCIMKI@?$AAW?$AAr?$AAi?$AAt?$AAe?$AAC?$AAo?$AAm?$AAm?$AAa?$AAn?$AAd?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AN@| [ DATA ] ; `string'
	IMPORT	|WRITE_PORT_UCHAR|
	IMPORT	|NKDbgPrintfW|
	IMPORT	|msWait|

  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
|$T33467| DCD	|$L33466|
	DCD	0x40001a01

  00000			 AREA	 |.rdata| { |??_C@_1CM@IOJCIMKI@?$AAW?$AAr?$AAi?$AAt?$AAe?$AAC?$AAo?$AAm?$AAm?$AAa?$AAn?$AAd?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CM@IOJCIMKI@?$AAW?$AAr?$AAi?$AAt?$AAe?$AAC?$AAo?$AAm?$AAm?$AAa?$AAn?$AAd?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AN@| DCB "W"
	DCB	0x0, "r", 0x0, "i", 0x0, "t", 0x0, "e", 0x0, "C", 0x0, "o"
	DCB	0x0, "m", 0x0, "m", 0x0, "a", 0x0, "n", 0x0, "d", 0x0, " "
	DCB	0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
	DCB	0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0	; `string'
; Function compile flags: /Ogsy

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

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

; 399  :     inline void SelectDevice() {

  00000		 |$L33466|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M33464|

; 400  :     int i ;
; 401  :        ATA_WRITE_BYTE((volatile PBYTE)m_pATAReg+m_dwDrvHeadOffset, (m_dwDevice == 0 ) ? ATA_HEAD_DRIVE_1 : ATA_HEAD_DRIVE_2);

  00004	e590364c	 ldr         r3, [r0, #0x64C]
  00008	e59f0054	 ldr         r0, [pc, #0x54]
  0000c	e3530000	 cmp         r3, #0
  00010	03a030a0	 moveq       r3, #0xA0
  00014	13a030b0	 movne       r3, #0xB0
  00018	e20310ff	 and         r1, r3, #0xFF
  0001c	eb000000	 bl          WRITE_PORT_UCHAR

; 402  : 	
; 403  : 	  for(i=0; i<10; i++) 

  00020	e59f5038	 ldr         r5, [pc, #0x38]
  00024	e3a04000	 mov         r4, #0
  00028		 |$L32496|

; 404  : 	{
; 405  : 		//msWait(500);
; 406  : 		msWait(10);

  00028	e3a0000a	 mov         r0, #0xA
  0002c	eb000000	 bl          msWait

; 407  : 
; 408  : 		//RETAILMSG(1,(TEXT("msWait---------\r\n")));
; 409  : 		
; 410  : 		if(!IdeIsBusy())		

  00030	e1d530b0	 ldrh        r3, [r5]
  00034	e3130080	 tst         r3, #0x80
  00038	0a000002	 beq         |$L33459|
  0003c	e2844001	 add         r4, r4, #1
  00040	e354000a	 cmp         r4, #0xA
  00044	bafffff7	 blt         |$L32496|
  00048		 |$L33459|

; 411  : 			break;
; 412  : 	}
; 413  : 	if ( i>=10 )

  00048	e354000a	 cmp         r4, #0xA

; 414  : 		{
; 415  : 		   RETAILMSG(1,(TEXT("WriteCommand failed\r\n")));

  0004c	a59f0008	 ldrge       r0, [pc, #8]
  00050	ab000000	 blge        NKDbgPrintfW

; 416  : 		} 
; 417  : 		
; 418  : 		
; 419  : 	//RETAILMSG(1,(TEXT("----------------liudiping-------Test\r\n")));
; 420  :         //return ;
; 421  :     }

  00054	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00058	e12fff1e	 bx          lr
  0005c		 |$L33469|
  0005c	00000000	 DCD         |??_C@_1CM@IOJCIMKI@?$AAW?$AAr?$AAi?$AAt?$AAe?$AAC?$AAo?$AAm?$AAm?$AAa?$AAn?$AAd?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AN@|
  00060	b6a000e0	 DCD         0xb6a000e0
  00064	b6a000c0	 DCD         0xb6a000c0
  00068		 |$M33465|

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

	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
|$T33483| DCD	|$L33482|
	DCD	0x40001401
; 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

; 442  :       inline void WriteCommand(BYTE bCommand) {

  00000		 |$L33482|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M33480|

; 443  :       int i ;
; 444  : 	  //RETAILMSG(1,(TEXT("WriteCommand -----\r\n")));
; 445  :       ATA_WRITE_BYTE( (volatile PBYTE)m_pATAReg + m_dwCommandStatusOffset, bCommand);

  00004	e59f5040	 ldr         r5, [pc, #0x40]
  00008	e1a00005	 mov         r0, r5
  0000c	eb000000	 bl          WRITE_PORT_UCHAR

; 446  : 	  
; 447  :       for(i=0; i<10; i++) 

  00010	e3a04000	 mov         r4, #0
  00014		 |$L32516|

; 448  : 	{
; 449  : 		//msWait(200);
; 450  : 
; 451  : 		msWait(10);

  00014	e3a0000a	 mov         r0, #0xA
  00018	eb000000	 bl          msWait

; 452  : 
; 453  : 		//RETAILMSG(1,(TEXT("msWait---------\r\n")));
; 454  : 		
; 455  : 		if(!IdeIsBusy())		

  0001c	e1d530b0	 ldrh        r3, [r5]
  00020	e3130080	 tst         r3, #0x80
  00024	0a000002	 beq         |$L33475|
  00028	e2844001	 add         r4, r4, #1
  0002c	e354000a	 cmp         r4, #0xA
  00030	bafffff7	 blt         |$L32516|
  00034		 |$L33475|

; 456  : 			break;
; 457  : 	}
; 458  : 	  
; 459  : 	if ( i>=10 )

  00034	e354000a	 cmp         r4, #0xA

; 460  : 		{
; 461  : 		   RETAILMSG(1,(TEXT("WriteCommand failed\r\n")));

  00038	a59f0008	 ldrge       r0, [pc, #8]
  0003c	ab000000	 blge        NKDbgPrintfW

; 462  : 		}
; 463  : 		
; 464  : 		
; 465  :     }

  00040	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00044	e12fff1e	 bx          lr
  00048		 |$L33485|
  00048	00000000	 DCD         |??_C@_1CM@IOJCIMKI@?$AAW?$AAr?$AAi?$AAt?$AAe?$AAC?$AAo?$AAm?$AAm?$AAa?$AAn?$AAd?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?$AN@|
  0004c	b6a000e0	 DCD         0xb6a000e0
  00050		 |$M33481|

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

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

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

  00000			 AREA	 |.pdata$$?WriteFeature@CDisk@@QAAXE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?WriteFeature@CDisk@@QAAXE@Z| } ; comdat associative
|$T33492| DCD	|$L33491|
	DCD	0x40000601
; Function compile flags: /Ogsy

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

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

; 468  : 	 inline void WriteFeature(BYTE bFeature) {

  00000		 |$L33491|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M33489|

; 469  :         ATA_WRITE_BYTE(  (volatile PBYTE) m_pATAReg + m_dwFeatureErrorOffset, bFeature);

  00004	e3a00183	 mov         r0, #0x83, 2
  00008	e2400696	 sub         r0, r0, #0x96, 12
  0000c	eb000000	 bl          WRITE_PORT_UCHAR

; 470  :     }

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

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

⌨️ 快捷键说明

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