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

📄 ide.cod

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

	TTL	C:\WINCE500\PLATFORM\Ep93xx\Src\Bootloader\Common\.\ide.c
	CODE32

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

	EXPORT	|m_BootDeviceType| [ DATA ]
	EXPORT	|g_sectorsread| [ DATA ]
	EXPORT	|g_bstartcounting| [ DATA ]

  00000			 AREA	 |.bss|, NOINIT
|m_BootDeviceType| % 0x4
|m_dwDevice| %	0x4
|g_sectorsread| % 0x4
|g_bstartcounting| % 0x1

  00000			 AREA	 |.data|, DATA
|m_bSectorsPerBlock| DCD 0x1
|m_fLBAMode| DCD 0x1
|m_f16Bit| DCD	0x1

  00000			 AREA	 |.rdata|, DATA, READONLY
|EdbgVendorIds| DCW 0x0
	DCW	0x0
	DCD	0x4033
	DCB	0x1
	DCB	0x0
	DCB	"AD", 0x0
	%	3
	DCW	0x1050
	DCW	0x940
	DCD	0x4005
	DCB	0x1
	DCB	0x0
	DCB	"LS", 0x0
	%	3
	DCW	0x1050
	DCW	0x940
	DCD	0x2078
	DCB	0x1
	DCB	0x0
	DCB	"LS", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8029
	DCD	0xc0f0
	DCB	0x1
	DCB	0x0
	DCB	"KS", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8129
	DCD	0x0
	DCB	0x4
	DCB	0x0
	DCB	"RT", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8139
	DCD	0x900b
	DCB	0x4
	DCB	0x0
	DCB	"RT", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8139
	DCD	0xd0c9
	DCB	0x4
	DCB	0x0
	DCB	"RT", 0x0
	%	3
	DCW	0x10ec
	DCW	0x8139
	DCD	0xe04c
	DCB	0x4
	DCB	0x0
	DCB	"RT", 0x0
	%	3
	DCW	0x1186
	DCW	0x1300
	DCD	0x50ba
	DCB	0x4
	DCB	0x0
	DCB	"DL", 0x0
	%	3
	DCW	0x100b
	DCW	0x20
	DCD	0xa0cc
	DCB	0x5
	DCB	0x0
	DCB	"NG", 0x0
	%	3
	DCW	0x10b7
	DCW	0x9050
	DCD	0x6008
	DCB	0x6
	DCB	0x0
	DCB	"3C", 0x0
	%	3
	DCW	0x10b7
	DCW	0x9200
	DCD	0x476
	DCB	0x6
	DCB	0x0
	DCB	"3C", 0x0
	%	3
	DCW	0x8086
	DCW	0x1039
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	DCW	0x8086
	DCW	0x103a
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	DCW	0x8086
	DCW	0x1051
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	DCW	0x8086
	DCW	0x1229
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	DCW	0x8086
	DCW	0x2449
	DCD	0x4033
	DCB	0x7
	DCB	0x1
	DCB	"IN", 0x0
	%	3
	EXPORT	|ATAReadRegister|
; File c:\wince500\platform\ep93xx\src\bootloader\common\ide.c

  00000			 AREA	 |.text| { |ATAReadRegister| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$ATAReadRegister|, PDATA, SELECTION=5, ASSOC=|.text| { |ATAReadRegister| } ; comdat associative
|$T39302| DCD	|$L39301|
	DCD	0x40004704
; Function compile flags: /Ods

  00000			 AREA	 |.text| { |ATAReadRegister| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |ATAReadRegister| PROC

; 113  : {

  00000		 |$L39301|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0001	 stmdb       sp!, {r0}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd010	 sub         sp, sp, #0x10
  00010		 |$M39299|

; 114  :     switch(m_BootDeviceType)

  00010	e59f3100	 ldr         r3, [pc, #0x100]
  00014	e5933000	 ldr         r3, [r3]
  00018	e58d300c	 str         r3, [sp, #0xC]
  0001c	e59d300c	 ldr         r3, [sp, #0xC]
  00020	e3530c01	 cmp         r3, #1, 24
  00024	0a000008	 beq         |$L38749|
  00028	e59d300c	 ldr         r3, [sp, #0xC]
  0002c	e3530c02	 cmp         r3, #2, 24
  00030	da000031	 ble         |$L38746|
  00034	e59d200c	 ldr         r2, [sp, #0xC]
  00038	e3a03c02	 mov         r3, #2, 24
  0003c	e3833002	 orr         r3, r3, #2
  00040	e1520003	 cmp         r2, r3
  00044	da000006	 ble         |$L38751|
  00048	ea00002b	 b           |$L38746|
  0004c		 |$L38749|

; 115  :     {
; 116  : #ifdef EDB9307_12_15
; 117  :         case BOOT_FROM_PCMCIA:
; 118  :             return *(volatile UCHAR *)(PCMCIACARD_IO + (ulRegister>>2));

  0004c	e59d3018	 ldr         r3, [sp, #0x18]
  00050	e1a03123	 mov         r3, r3, lsr #2
  00054	e2833101	 add         r3, r3, #1, 2
  00058	e5d33000	 ldrb        r3, [r3]
  0005c	e58d3008	 str         r3, [sp, #8]
  00060	ea000027	 b           |$L38744|
  00064		 |$L38751|

; 119  :         break;
; 120  : #endif
; 121  :         case BOOT_FROM_IDE_ATADISK:
; 122  :         case BOOT_FROM_IDE_CDROM:
; 123  :         {
; 124  :             ULONG uiValue;
; 125  :             register ULONG ulControl;
; 126  :             *IDE_CTRL = ulControl = IDE_CTRL_DIOR | IDE_CTRL_DIOW | ulRegister;

  00064	e59d3018	 ldr         r3, [sp, #0x18]
  00068	e3833060	 orr         r3, r3, #0x60
  0006c	e58d3004	 str         r3, [sp, #4]
  00070	e3a03102	 mov         r3, #2, 2
  00074	e383280a	 orr         r2, r3, #0xA, 16
  00078	e59d3004	 ldr         r3, [sp, #4]
  0007c	e5823000	 str         r3, [r2]

; 127  :             *IDE_CTRL = ulControl &= ~IDE_CTRL_DIOR;

  00080	e59d2004	 ldr         r2, [sp, #4]
  00084	e3e03020	 mvn         r3, #0x20
  00088	e0023003	 and         r3, r2, r3
  0008c	e58d3004	 str         r3, [sp, #4]
  00090	e3a03102	 mov         r3, #2, 2
  00094	e383280a	 orr         r2, r3, #0xA, 16
  00098	e59d3004	 ldr         r3, [sp, #4]
  0009c	e5823000	 str         r3, [r2]

; 128  :             *IDE_CTRL = ulControl |= IDE_CTRL_DIOR;

  000a0	e59d3004	 ldr         r3, [sp, #4]
  000a4	e3833020	 orr         r3, r3, #0x20
  000a8	e58d3004	 str         r3, [sp, #4]
  000ac	e3a03102	 mov         r3, #2, 2
  000b0	e383280a	 orr         r2, r3, #0xA, 16
  000b4	e59d3004	 ldr         r3, [sp, #4]
  000b8	e5823000	 str         r3, [r2]

; 129  :         
; 130  :             uiValue = *IDE_DATAIN;

  000bc	e59f3050	 ldr         r3, [pc, #0x50]
  000c0	e5933000	 ldr         r3, [r3]
  000c4	e58d3000	 str         r3, [sp]

; 131  :         
; 132  :             if(ulRegister == CSDA_DATA_REG)

  000c8	e59d3018	 ldr         r3, [sp, #0x18]
  000cc	e3530002	 cmp         r3, #2
  000d0	1a000005	 bne         |$L38758|

; 133  :             {
; 134  :                 return(uiValue & 0xFFFF);

  000d4	e59d2000	 ldr         r2, [sp]
  000d8	e3a03cff	 mov         r3, #0xFF, 24
  000dc	e38330ff	 orr         r3, r3, #0xFF
  000e0	e0023003	 and         r3, r2, r3
  000e4	e58d3008	 str         r3, [sp, #8]
  000e8	ea000005	 b           |$L38744|
  000ec		 |$L38758|

; 135  :             }
; 136  :             else
; 137  :             {
; 138  :                 return(uiValue & 0xFF);

  000ec	e59d3000	 ldr         r3, [sp]
  000f0	e20330ff	 and         r3, r3, #0xFF
  000f4	e58d3008	 str         r3, [sp, #8]
  000f8	ea000001	 b           |$L38744|
  000fc		 |$L38746|

; 139  :             }
; 140  :         }
; 141  :         break;
; 142  :         
; 143  :         
; 144  :     }
; 145  :     return 0;

  000fc	e3a03000	 mov         r3, #0
  00100	e58d3008	 str         r3, [sp, #8]
  00104		 |$L38744|

; 115  :     {
; 116  : #ifdef EDB9307_12_15
; 117  :         case BOOT_FROM_PCMCIA:
; 118  :             return *(volatile UCHAR *)(PCMCIACARD_IO + (ulRegister>>2));

  00104	e59d0008	 ldr         r0, [sp, #8]

; 146  : }

  00108	e28dd010	 add         sp, sp, #0x10
  0010c	e89d6000	 ldmia       sp, {sp, lr}
  00110	e12fff1e	 bx          lr
  00114		 |$L39304|
  00114	800a0014	 DCD         0x800a0014
  00118	00000000	 DCD         |m_BootDeviceType|
  0011c		 |$M39300|

			 ENDP  ; |ATAReadRegister|

	EXPORT	|ATAWriteRegister|

  00000			 AREA	 |.text| { |ATAWriteRegister| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$ATAWriteRegister|, PDATA, SELECTION=5, ASSOC=|.text| { |ATAWriteRegister| } ; comdat associative
|$T39310| DCD	|$L39309|
	DCD	0x40003804
; Function compile flags: /Ods

  00000			 AREA	 |.text| { |ATAWriteRegister| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |ATAWriteRegister| PROC

; 149  : {

  00000		 |$L39309|
  00000	e1a0c00d	 mov         r12, sp
  00004	e92d0003	 stmdb       sp!, {r0, r1}
  00008	e92d5000	 stmdb       sp!, {r12, lr}
  0000c	e24dd008	 sub         sp, sp, #8
  00010		 |$M39307|

; 150  :     switch(m_BootDeviceType)

  00010	e59f30c4	 ldr         r3, [pc, #0xC4]
  00014	e5933000	 ldr         r3, [r3]
  00018	e58d3004	 str         r3, [sp, #4]
  0001c	e59d3004	 ldr         r3, [sp, #4]
  00020	e3530c01	 cmp         r3, #1, 24
  00024	0a000008	 beq         |$L38770|
  00028	e59d3004	 ldr         r3, [sp, #4]
  0002c	e3530c02	 cmp         r3, #2, 24
  00030	da000025	 ble         |$L38767|
  00034	e59d2004	 ldr         r2, [sp, #4]
  00038	e3a03c02	 mov         r3, #2, 24
  0003c	e3833002	 orr         r3, r3, #2
  00040	e1520003	 cmp         r2, r3
  00044	da000007	 ble         |$L38773|
  00048	ea00001f	 b           |$L38767|
  0004c		 |$L38770|

; 151  :     {
; 152  : #ifdef EDB9307_12_15
; 153  :         case BOOT_FROM_PCMCIA:
; 154  :             *(volatile UCHAR *)(PCMCIACARD_IO + (ulRegister>>2)) = (BYTE)uiData;

  0004c	e59d3014	 ldr         r3, [sp, #0x14]
  00050	e20320ff	 and         r2, r3, #0xFF
  00054	e59d3010	 ldr         r3, [sp, #0x10]
  00058	e1a03123	 mov         r3, r3, lsr #2
  0005c	e2833101	 add         r3, r3, #1, 2
  00060	e5c32000	 strb        r2, [r3]

; 155  :         break;

  00064	ea000018	 b           |$L38767|
  00068		 |$L38773|

; 156  : #endif
; 157  :         case BOOT_FROM_IDE_CDROM:
; 158  :         case BOOT_FROM_IDE_ATADISK:
; 159  :         {
; 160  :             register ULONG   ulControl;
; 161  :             *IDE_CTRL       = ulControl = IDE_CTRL_DIOR | IDE_CTRL_DIOW | ulRegister;

  00068	e59d3010	 ldr         r3, [sp, #0x10]
  0006c	e3833060	 orr         r3, r3, #0x60
  00070	e58d3000	 str         r3, [sp]
  00074	e3a03102	 mov         r3, #2, 2
  00078	e383280a	 orr         r2, r3, #0xA, 16
  0007c	e59d3000	 ldr         r3, [sp]
  00080	e5823000	 str         r3, [r2]

; 162  :             *IDE_DATAOUT    = uiData;

  00084	e59f204c	 ldr         r2, [pc, #0x4C]
  00088	e59d3014	 ldr         r3, [sp, #0x14]
  0008c	e5823000	 str         r3, [r2]

; 163  :             *IDE_CTRL = ulControl &= ~IDE_CTRL_DIOW;

  00090	e59d2000	 ldr         r2, [sp]
  00094	e3e03040	 mvn         r3, #0x40
  00098	e0023003	 and         r3, r2, r3
  0009c	e58d3000	 str         r3, [sp]
  000a0	e3a03102	 mov         r3, #2, 2
  000a4	e383280a	 orr         r2, r3, #0xA, 16
  000a8	e59d3000	 ldr         r3, [sp]
  000ac	e5823000	 str         r3, [r2]

; 164  :             *IDE_CTRL = ulControl |= IDE_CTRL_DIOW;

  000b0	e59d3000	 ldr         r3, [sp]
  000b4	e3833040	 orr         r3, r3, #0x40
  000b8	e58d3000	 str         r3, [sp]
  000bc	e3a03102	 mov         r3, #2, 2
  000c0	e383280a	 orr         r2, r3, #0xA, 16
  000c4	e59d3000	 ldr         r3, [sp]
  000c8	e5823000	 str         r3, [r2]
  000cc		 |$L38767|

; 165  :         }
; 166  :         break;
; 167  :     }
; 168  : }

  000cc	e28dd008	 add         sp, sp, #8
  000d0	e89d6000	 ldmia       sp, {sp, lr}
  000d4	e12fff1e	 bx          lr
  000d8		 |$L39312|
  000d8	800a0010	 DCD         0x800a0010
  000dc	00000000	 DCD         |m_BootDeviceType|
  000e0		 |$M39308|

			 ENDP  ; |ATAWriteRegister|

	EXPORT	|GetBaseStatus|

  00000			 AREA	 |.text| { |GetBaseStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$GetBaseStatus|, PDATA, SELECTION=5, ASSOC=|.text| { |GetBaseStatus| } ; comdat associative
|$T39319| DCD	|$L39318|
	DCD	0x40001602
; Function compile flags: /Ods

  00000			 AREA	 |.text| { |GetBaseStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |GetBaseStatus| PROC

; 170  : {

  00000		 |$L39318|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004	e24dd008	 sub         sp, sp, #8
  00008		 |$M39316|

; 171  : #ifdef EDB9307_12_15
; 172  :     if(m_BootDeviceType == BOOT_FROM_PCMCIA)

  00008	e59f3044	 ldr         r3, [pc, #0x44]

⌨️ 快捷键说明

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