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

📄 atapiio.cod

📁 PXA270的BSP
💻 COD
📖 第 1 页 / 共 4 页
字号:
; 367  :     if (dwCount == 1) {

  000d0	e3540001	 cmp         r4, #1
  000d4		 |$L33335|

; 368  :         DEBUGMSG( ZONE_WARNING, (TEXT("ATAPI:ReadBuffer - reading one word!!!\r\n")));
; 369  :         m_wNextByte = (WORD) *pBuffer;  // Save byte for the next SG if 

  000d4	05d52000	 ldreqb      r2, [r5]
  000d8	02863c06	 addeq       r3, r6, #6, 24
  000dc	01c328b0	 streqh      r2, [r3, #0x80]
  000e0		 |$L32962|

; 370  :     }
; 371  :     
; 372  :     DEBUGMSG( ZONE_IO, (TEXT("ATAPI:WriteBuffer Exit Status: %x\r\n"),GetAltStatus()));
; 373  : }

  000e0	e28dd004	 add         sp, sp, #4
  000e4	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  000e8	e12fff1e	 bx          lr
  000ec		 |$M33337|

			 ENDP  ; |?WriteBuffer@CDisk@@QAAXPAEK@Z|, CDisk::WriteBuffer

	EXPORT	|?SetTransferMode@CDisk@@QAAHE@Z|	; CDisk::SetTransferMode
	IMPORT	|?ResetController@CDisk@@QAAHH@Z|	; CDisk::ResetController
; File c:\wince500\platform\bvdmain\drivers\atapi\diskmain.h

  00000			 AREA	 |.text| { |?SetTransferMode@CDisk@@QAAHE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?SetTransferMode@CDisk@@QAAHE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?SetTransferMode@CDisk@@QAAHE@Z| } ; comdat associative
|$T33374| DCD	|$L33373|
	DCD	0x40004a01
; Function compile flags: /Ogsy
; File c:\wince500\platform\bvdmain\drivers\atapi\atapiio.cpp

  00000			 AREA	 |.text| { |?SetTransferMode@CDisk@@QAAHE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?SetTransferMode@CDisk@@QAAHE@Z| PROC	; CDisk::SetTransferMode

; 380  :  {

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

; 381  :     BYTE bError, bStatus;
; 382  : 
; 383  : 	//* * * CAMSDB040504 - Try forceing the IDE/ATA mode to
; 384  : 	//* * * a UDMA mode. (START)
; 385  : 	//bMode = 0x41;
; 386  : 	//DEBUGMSG( 1, (TEXT("ATAPI:SetTransferMode(...) FORCING mode to Mode=%02X\r\n"), bMode));
; 387  : 	//* * * CAMSDB040504 - Try forceing the IDE/ATA mode to
; 388  : 	//* * * a UDMA mode. (START)
; 389  :  
; 390  :     SelectDevice();

  0000c	eb000000	 bl          |?SelectDevice@CDisk@@QAAXXZ|

; 391  : 
; 392  :     WaitForDisc(WAIT_TYPE_NOT_BUSY, 100);

  00010	e3a03000	 mov         r3, #0
  00014	e3a02064	 mov         r2, #0x64
  00018	e3a01002	 mov         r1, #2
  0001c	e1a00005	 mov         r0, r5
  00020	eb000000	 bl          |?WaitForDisc@CDisk@@QAAHEKK@Z|

; 393  :     WaitForDisc(WAIT_TYPE_READY, 1000);

  00024	e3a03000	 mov         r3, #0
  00028	e3a02ffa	 mov         r2, #0xFA, 30
  0002c	e3a01003	 mov         r1, #3
  00030	e1a00005	 mov         r0, r5
  00034	eb000000	 bl          |?WaitForDisc@CDisk@@QAAHEKK@Z|

; 394  :     WaitOnBusy(TRUE);

  00038	e3a01001	 mov         r1, #1
  0003c	e1a00005	 mov         r0, r5
  00040	eb000000	 bl          |?WaitOnBusy@CDisk@@QAAEH@Z|

; 395  :     
; 396  :     SelectDevice();

  00044	e1a00005	 mov         r0, r5
  00048	eb000000	 bl          |?SelectDevice@CDisk@@QAAXXZ|

; 397  : 
; 398  :     WriteFeature(ATA_SET_TRANSFER_MODE);

  0004c	e3a00183	 mov         r0, #0x83, 2
  00050	e2400696	 sub         r0, r0, #0x96, 12
  00054	e3a01003	 mov         r1, #3
  00058	eb000000	 bl          WRITE_PORT_UCHAR

; 399  :     WriteSectorCount( bMode);

  0005c	e59f00c0	 ldr         r0, [pc, #0xC0]
  00060	e1a01004	 mov         r1, r4
  00064	eb000000	 bl          WRITE_PORT_UCHAR

; 400  :     WriteSectorNumber(0);

  00068	e59f00b0	 ldr         r0, [pc, #0xB0]
  0006c	e3a01000	 mov         r1, #0
  00070	eb000000	 bl          WRITE_PORT_UCHAR

; 401  :     WriteLowCount(0);

  00074	e59f00a0	 ldr         r0, [pc, #0xA0]
  00078	e3a01000	 mov         r1, #0
  0007c	eb000000	 bl          WRITE_PORT_UCHAR

; 402  :     WriteHighCount(0);

  00080	e59f0090	 ldr         r0, [pc, #0x90]
  00084	e3a01000	 mov         r1, #0
  00088	eb000000	 bl          WRITE_PORT_UCHAR

; 403  :     WriteCommand( IDE_COMMAND_SET_FEATURE);

  0008c	e3a010ef	 mov         r1, #0xEF
  00090	e1a00005	 mov         r0, r5
  00094	eb000000	 bl          |?WriteCommand@CDisk@@QAAXE@Z|

; 404  : 
; 405  :     SelectDevice();

  00098	e1a00005	 mov         r0, r5
  0009c	eb000000	 bl          |?SelectDevice@CDisk@@QAAXXZ|

; 406  :     WaitOnBusy(TRUE);

  000a0	e3a01001	 mov         r1, #1
  000a4	e1a00005	 mov         r0, r5
  000a8	eb000000	 bl          |?WaitOnBusy@CDisk@@QAAEH@Z|

; 407  :     //
; 408  :     //  Set Default PIO mode 
; 409  :     //
; 410  :     SelectDevice();

  000ac	e1a00005	 mov         r0, r5
  000b0	eb000000	 bl          |?SelectDevice@CDisk@@QAAXXZ|

; 411  :     WaitForDisc(WAIT_TYPE_NOT_BUSY, 200);

  000b4	e3a03000	 mov         r3, #0
  000b8	e3a020c8	 mov         r2, #0xC8
  000bc	e3a01002	 mov         r1, #2
  000c0	e1a00005	 mov         r0, r5
  000c4	eb000000	 bl          |?WaitForDisc@CDisk@@QAAHEKK@Z|

; 412  : 
; 413  :     bStatus = GetBaseStatus();

  000c8	e59f0044	 ldr         r0, [pc, #0x44]
  000cc	eb000000	 bl          READ_PORT_UCHAR
  000d0	e1a04000	 mov         r4, r0

; 414  :     bError = GetError();

  000d4	e3a00183	 mov         r0, #0x83, 2
  000d8	e2400696	 sub         r0, r0, #0x96, 12
  000dc	eb000000	 bl          READ_PORT_UCHAR

; 415  :     DEBUGMSG( 1, (TEXT("ATAPI:SetTransferMode Mode=%02X Status=%02X Error=%02X\r\n"), bMode, bStatus, bError));
; 416  :     if ((bStatus & 0x1) && (bError & 0x4)) {

  000e0	e3140001	 tst         r4, #1
  000e4	0a000007	 beq         |$L32973|
  000e8	e3100004	 tst         r0, #4
  000ec	0a000005	 beq         |$L32973|

; 417  :         ResetController(FALSE);

  000f0	e3a01000	 mov         r1, #0
  000f4	e1a00005	 mov         r0, r5
  000f8	eb000000	 bl          |?ResetController@CDisk@@QAAHH@Z|

; 418  :         return FALSE;

  000fc	e3a00000	 mov         r0, #0

; 428  : }

  00100	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00104	e12fff1e	 bx          lr
  00108		 |$L32973|

; 419  :     }
; 420  : 
; 421  : 	//* * * CAMSDB04/05/04 - Re-print capabilities after forced mode above (START)
; 422  :     //DEBUGMSG( 1, (TEXT("* * * ATAPI:Doing AnalyzeDeviceCapabilities() again START.\r\n")));
; 423  : 	//AnalyzeDeviceCapabilities();
; 424  :     //DEBUGMSG( 1, (TEXT("* * * ATAPI:Doing AnalyzeDeviceCapabilities() again END.\r\n")));
; 425  : 	//* * * CAMSDB04/05/04 - Re-print capabilities after forced mode above (END)
; 426  : 
; 427  :     return TRUE;

  00108	e3a00001	 mov         r0, #1

; 428  : }

  0010c	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00110	e12fff1e	 bx          lr
  00114		 |$L33376|
  00114	b6a000e0	 DCD         0xb6a000e0
  00118	b6a000a0	 DCD         0xb6a000a0
  0011c	b6a00080	 DCD         0xb6a00080
  00120	b6a00060	 DCD         0xb6a00060
  00124	b6a00040	 DCD         0xb6a00040
  00128		 |$M33372|

			 ENDP  ; |?SetTransferMode@CDisk@@QAAHE@Z|, CDisk::SetTransferMode

	EXPORT	|?SendIOCommand@CDisk@@QAAHKKE@Z|	; CDisk::SendIOCommand
	IMPORT	|__imp___rt_udiv|
; File c:\wince500\platform\bvdmain\drivers\atapi\diskmain.h

  00000			 AREA	 |.text| { |?SendIOCommand@CDisk@@QAAHKKE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?SendIOCommand@CDisk@@QAAHKKE@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?SendIOCommand@CDisk@@QAAHKKE@Z| } ; comdat associative
|$T33430| DCD	|$L33429|
	DCD	0x40006001
; Function compile flags: /Ogsy
; File c:\wince500\platform\bvdmain\drivers\atapi\atapiio.cpp

  00000			 AREA	 |.text| { |?SendIOCommand@CDisk@@QAAHKKE@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?SendIOCommand@CDisk@@QAAHKKE@Z| PROC	; CDisk::SendIOCommand

; 14   : {

  00000		 |$L33429|
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr}
  00004		 |$M33427|
  00004	e1a07003	 mov         r7, r3
  00008	e1a04002	 mov         r4, r2
  0000c	e1a06001	 mov         r6, r1
  00010	e1a05000	 mov         r5, r0

; 15   : 	volatile ULONG           ulIdeCtrl;
; 16   : 
; 17   :     //DEBUGMSG( ZONE_IO, (TEXT("ATAPI:SendIOCommand - Sector %d SectorsLeft %x Command %x\r\n"), dwStartSector,dwNumberOfSectors,bCmd));
; 18   : 
; 19   : 	//* * * CAMSDB - Changed the zone (START)
; 20   : 	DEBUGMSG( ZONE_WARNING, (TEXT("ATAPI:SendIOCommand - Sector %d SectorsLeft %x Command %x\r\n"), dwStartSector,dwNumberOfSectors,bCmd));
; 21   : 	//* * * CAMSDB - Changed the zone (END)
; 22   : 
; 23   :     SelectDevice(); 

  00014	eb000000	 bl          |?SelectDevice@CDisk@@QAAXXZ|

; 24   : 
; 25   :     if (WaitOnBusy(FALSE)) 

  00018	e3a01000	 mov         r1, #0
  0001c	e1a00005	 mov         r0, r5
  00020	eb000000	 bl          |?WaitOnBusy@CDisk@@QAAEH@Z|
  00024	e3500000	 cmp         r0, #0

; 26   :     {
; 27   : 		//* * * CAMSDB - Changed the zone (START)
; 28   :         //DEBUGMSG( ZONE_IO, (TEXT("ATAPI:SendIOCommand - Can't send a command!!! Status:%x Error:%x \r\n"), GetAltStatus(),GetError()));
; 29   : 		DEBUGMSG( ZONE_WARNING, (TEXT("ATAPI:SendIOCommand - Can't send a command!!! Status:%x Error:%x \r\n"), GetAltStatus(),GetError()));
; 30   : 		//* * * CAMSDB - Changed the zone (END)
; 31   : 
; 32   : 		//* * * CAMSDB - Changed the zone (START)
; 33   : 		DEBUGMSG( ZONE_WARNING, (TEXT("ATAPI:SendIOCommand BAD EXIT\r\n")));
; 34   : 		//* * * CAMSDB - Changed the zone (END)
; 35   : 
; 36   :         return (FALSE);

  00028	13a00000	 movne       r0, #0

; 87   : }   

  0002c	18bd43f0	 ldmneia     sp!, {r4 - r9, lr}
  00030	112fff1e	 bxne        lr

; 37   :     }
; 38   : 
; 39   : 	//RETAILMSG(1,(TEXT("Test-------------------\r\n")));
; 40   : 
; 41   : 	GetBaseStatus();

  00034	e59f0140	 ldr         r0, [pc, #0x140]
  00038	eb000000	 bl          READ_PORT_UCHAR

; 42   : 
; 43   : 	//ulIdeCtrl = *IDE_CTRL;
; 44   : 
; 45   :     //
; 46   :     //  To transfer 256 Sectors set Sector Count Register to 0.
; 47   :     //
; 48   :     if(dwNumberOfSectors == MAX_SECT_PER_COMMAND)

  0003c	e3540c01	 cmp         r4, #1, 24

; 49   :             dwNumberOfSectors = 0;

  00040	03a04000	 moveq       r4, #0

; 50   : 
; 51   : 
; 52   :     WriteSectorCount((BYTE)dwNumberOfSectors);

  00044	e59f012c	 ldr         r0, [pc, #0x12C]
  00048	e20410ff	 and         r1, r4, #0xFF
  0004c	eb000000	 bl          WRITE_PORT_UCHAR

; 53   : 
; 54   :     if (m_fLBAMode == TRUE) 

  00050	e5953678	 ldr         r3, [r5, #0x678]
  00054	e3530001	 cmp         r3, #1
  00058	1a000011	 bne         |$L32802|

; 55   :     {
; 56   :     //RETAILMSG(1,(TEXT("Test-2222222222------------------\r\n")));
; 57   :         WriteSectorNumber( (BYTE)dwStartSector);

  0005c	e59f0110	 ldr         r0, [pc, #0x110]
  00060	e20610ff	 and         r1, r6, #0xFF
  00064	eb000000	 bl          WRITE_PORT_UCHAR

; 58   :         WriteLowCount((BYTE)(dwStartSector >> 8));

  00068	e59f0100	 ldr         r0, [pc, #0x100]
  0006c	e1a03426	 mov         r3, r6, lsr #8
  00070	e20310ff	 and         r1, r3, #0xFF
  00074	eb000000	 bl          WRITE_PORT_UCHAR

; 59   :         WriteHighCount((BYTE)(dwStartSector >> 16));

  00078	e59f00ec	 ldr         r0, [pc, #0xEC]
  0007c	e1a03826	 mov         r3, r6, lsr #16
  00080	e20310ff	 and         r1, r3, #0xFF
  00084	eb000000	 bl          WRITE_PORT_UCHAR

; 60   :         WriteDriveHeadReg((BYTE)((dwStartSector >> 24) | ATA_HEAD_LBA_MODE) | ((m_dwDevice == 0 ) ? ATA_HEAD_DRIVE_1 : ATA_HEAD_DRIVE_2));

  00088	e595364c	 ldr         r3, [r5, #0x64C]
  0008c	e3530000	 cmp         r3, #0
  00090	03a030a0	 moveq       r3, #0xA0
  00094	13a030b0	 movne       r3, #0xB0
  00098	e1833c26	 orr         r3, r3, r6, lsr #24
  0009c	e38330e0	 orr         r3, r3, #0xE0

; 61   :                             
; 62   :     } else {    // translate LBA to CHS format

  000a0	ea000026	 b           |$L33426|
  000a4		 |$L32802|

; 63   : 
; 64   :          DWORD dwSectors  = m_DiskInfo.di_sectors;
; 65   :         DWORD dwHeads   = m_DiskInfo.di_heads;
; 66   : 
; 67   :         WriteSectorNumber((BYTE)((dwStartSector % dwSectors) + 1));

  000a4	e59f30bc	 ldr         r3, [pc, #0xBC]
  000a8	e5954670	 ldr         r4, [r5, #0x670]
  000ac	e595866c	 ldr         r8, [r5, #0x66C]
  000b0	e5933000	 ldr         r3, [r3]
  000b4	e1a00004	 mov         r0, r4
  000b8	e1a01006	 mov         r1, r6
  000bc	e1a0e00f	 mov         lr, pc
  000c0	e12fff13	 bx          r3
  000c4	e1a09000	 mov         r9, r0
  000c8	e59f00a4	 ldr         r0, [pc, #0xA4]
  000cc	e2813001	 add         r3, r1, #1
  000d0	e20310ff	 and         r1, r3, #0xFF
  000d4	eb000000	 bl          WRITE_PORT_UCHAR

; 68   :         WriteLowCount((BYTE) (dwStartSector /(dwSectors*dwHeads)));

  000d8	e59f3088	 ldr         r3, [pc, #0x88]
  000dc	e1a01006	 mov         r1, r6
  000e0	e0000498	 mul         r0, r8, r4
  000e4	e5933000	 ldr         r3, [r3]
  000e8	e1a0e00f	 mov         lr, pc
  000ec	e12fff13	 bx          r3
  000f0	e1a04000	 mov         r4, r0
  000f4	e59f0074	 ldr         r0, [pc, #0x74]
  000f8	e20410ff	 and         r1, r4, #0xFF
  000fc	eb000000	 bl          WRITE_PORT_UCHAR

; 69   :         WriteHighCount((BYTE)((dwStartSector /(dwSectors*dwHeads)) >> 8));

  00100	e59f0064	 ldr         r0, [pc, #0x64]
  00104	e1a03424	 mov         r3, r4, lsr #8
  00108	e20310ff	 and         r1, r3, #0xFF
  0010c	eb000000	 bl          WRITE_PORT_UCHAR

; 70   :         WriteDriveHeadReg((BYTE)(((dwStartSector/dwSectors)% dwHeads) | ((m_dwDevice == 0 ) ? ATA_HEAD_DRIVE_1 : ATA_HEAD_DRIVE_2)));

  00110	e595364c	 ldr         r3, [r5, #0x64C]
  00114	e1a00008	 mov         r0, r8
  00118	e1a01009	 mov         r1, r9
  0011c	e3530000	 cmp         r3, #0
  00120	e59f3040	 ldr         r3, [pc, #0x40]
  00124	03a040a0	 moveq       r4, #0xA0
  00128	13a040b0	 movne       r4, #0xB0
  0012c	e5933000	 ldr         r3, [r3]
  00130	e1a0e00f	 mov         lr, pc
  00134	e12fff13	 bx          r3
  00138	e1a02000	 mov         r2, r0
  0013c	e1843001	 orr         r3, r4, r1
  00140		 |$L33426|
  00140	e59f001c	 ldr         r0, [pc, #0x1C]
  00144	e20310ff	 and         r1, r3, #0xFF
  00148	eb000000	 bl          WRITE_PORT_UCHAR

; 71   :     }
; 72   : 
; 73   : 	
; 74   : //RETAILMSG(1,(TEXT("Test555555555555-------------------\r\n")));
; 75   : 
; 76   :     //* * * CAMSDB - Took this out for test, put it back 04/20/04 (START) 
; 77   :     WriteCommand(bCmd);

  0014c	e1a01007	 mov         r1, r7
  00150	e1a00005	 mov         r0, r5
  00154	eb000000	 bl          |?WriteCommand@CDisk@@QAAXE@Z|

; 78   : 	//* * * CAMSDB - Took this out for test, put it back 04/20/04 (END) 
; 79   : 
; 80   : 	//* * * CAMSDB - Changed the zone (START)
; 81   : 	DEBUGMSG( ZONE_WARNING, (TEXT("ATAPI:SendIOCommand GOOD EXIT\r\n")));
; 82   : 	//* * * CAMSDB - Changed the zone (END)
; 83   : 
; 84   : 	//RETAILMSG(1,(TEXT("Test444444444444444-------------------\r\n")));
; 85   : 
; 86   :     return (TRUE);

  00158	e3a00001	 mov         r0, #1

; 87   : }   

  0015c	e8bd43f0	 ldmia       sp!, {r4 - r9, lr}
  00160	e12fff1e	 bx          lr
  00164		 |$L33432|
  00164	b6a000c0	 DCD         0xb6a000c0
  00168	00000000	 DCD         |__imp___rt_udiv|
  0016c	b6a000a0	 DCD         0xb6a000a0
  00170	b6a00080	 DCD         0xb6a00080
  00174	b6a00060	 DCD         0xb6a00060
  00178	b6a00040	 DCD         0xb6a00040
  0017c	b6a000e0	 DCD         0xb6a000e0
  00180		 |$M33428|

			 ENDP  ; |?SendIOCommand@CDisk@@QAAHKKE@Z|, CDisk::SendIOCommand

	END

⌨️ 快捷键说明

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