📄 ide.cod
字号:
; 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 + -