📄 mdppfs.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4237
TTL C:\WINCE500\PLATFORM\Ep93xx\Src\Bootloader\Common\.\mdppfs.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |NoPPFS| [ DATA ]
EXPORT |UART1Started| [ DATA ]
EXPORT |UART3Started| [ DATA ]
00000 AREA |.bss|, NOINIT
|NoPPFS| % 0x4
|UART1Started| % 0x4
|UART3Started| % 0x4
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 |OEMInitParallelPort|
; File c:\wince500\platform\ep93xx\src\kernel\hal\common\mdppfs.c
00000 AREA |.text| { |OEMInitParallelPort| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMInitParallelPort|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMInitParallelPort| } ; comdat associative
|$T38191| DCD |$L38190|
DCD 0x40000f01
; Function compile flags: /Ods
00000 AREA |.text| { |OEMInitParallelPort| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMInitParallelPort| PROC
; 99 : {
00000 |$L38190|
00000 e24dd004 sub sp, sp, #4
00004 |$M38188|
; 100 : *IDE_CTRL = PAR_NREAD | PAR_NWRITE | IDE_CTRL_CS1;
00004 e3a03102 mov r3, #2, 2
00008 e383280a orr r2, r3, #0xA, 16
0000c e3a03062 mov r3, #0x62
00010 e5823000 str r3, [r2]
; 101 : *IDE_CFG = IDE_CFG_IDEEN | IDE_CFG_PIOEN | IDE_CFG_PIO4 | (3<<IDE_CFG_WST_SHIFT);
00014 e59f201c ldr r2, [pc, #0x1C]
00018 e3a03d0d mov r3, #0xD, 26
0001c e3833003 orr r3, r3, #3
00020 e5823000 str r3, [r2]
; 102 : return 0;
00024 e3a03000 mov r3, #0
00028 e58d3000 str r3, [sp]
0002c e59d0000 ldr r0, [sp]
; 103 : }
00030 e28dd004 add sp, sp, #4
00034 e12fff1e bx lr
00038 |$L38193|
00038 800a0004 DCD 0x800a0004
0003c |$M38189|
ENDP ; |OEMInitParallelPort|
EXPORT |OEMParallelPortGetByte|
EXPORT |??_C@_0CM@FEFJD@OEMParallelPortGetByte?3?5status?5t@| [ DATA ] ; `string'
EXPORT |??_C@_0CM@EHKFDPED@OEMParallelPortGetByte?3?5status?5t@| [ DATA ] ; `string'
IMPORT |EdbgOutputDebugString|
00000 AREA |.text| { |OEMParallelPortGetByte| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMParallelPortGetByte|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMParallelPortGetByte| } ; comdat associative
|$T38206| DCD |$L38205|
DCD 0x40008d02
00000 AREA |.rdata| { |??_C@_0CM@EHKFDPED@OEMParallelPortGetByte?3?5status?5t@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CM@EHKFDPED@OEMParallelPortGetByte?3?5status?5t@| DCB "OEMParalle"
DCB "lPortGetByte: status timeout 2.", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CM@FEFJD@OEMParallelPortGetByte?3?5status?5t@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CM@FEFJD@OEMParallelPortGetByte?3?5status?5t@| DCB "OEMParallelPo"
DCB "rtGetByte: status timeout 1.", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ods
00000 AREA |.text| { |OEMParallelPortGetByte| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMParallelPortGetByte| PROC
; 113 : {
00000 |$L38205|
00000 e52de004 str lr, [sp, #-4]!
00004 e24dd00c sub sp, sp, #0xC
00008 |$M38203|
; 114 : //DWORD dwStatus; // parallel port status
; 115 : unsigned int iWatchdog; // timeout counter
; 116 : int iByteReturned;
; 117 :
; 118 : //
; 119 : // if ppfs disconnected do nothing
; 120 : //
; 121 : if (NoPPFS)
00008 e59f3218 ldr r3, [pc, #0x218]
0000c e5933000 ldr r3, [r3]
00010 e3530000 cmp r3, #0
00014 0a000002 beq |$L38064|
; 122 : return -1;
00018 e3e03000 mvn r3, #0
0001c e58d3008 str r3, [sp, #8]
00020 ea00007b b |$L38061|
00024 |$L38064|
; 123 :
; 124 : //
; 125 : // Clear busy.
; 126 : //
; 127 : *IDE_CTRL = PAR_NREAD| PAR_NWRITE ;
00024 e3a03102 mov r3, #2, 2
00028 e383280a orr r2, r3, #0xA, 16
0002c e3a03060 mov r3, #0x60
00030 e5823000 str r3, [r2]
00034 |$L38198|
00034 |$L38197|
00034 |$L38196|
00034 |$L38067|
; 128 :
; 129 : //
; 130 : // Wait for the strobe to go low.
; 131 : //
; 132 : while(1)
; 133 : {
; 134 : for(iWatchdog = 0 ; ; iWatchdog++)
00034 e3a03000 mov r3, #0
00038 e58d3000 str r3, [sp]
0003c ea000002 b |$L38069|
00040 |$L38070|
00040 e59d3000 ldr r3, [sp]
00044 e2833001 add r3, r3, #1
00048 e58d3000 str r3, [sp]
0004c |$L38069|
; 135 : {
; 136 : if(!( *IDE_CTRL & PAR_STROBE))
0004c e3a03102 mov r3, #2, 2
00050 e383380a orr r3, r3, #0xA, 16
00054 e5933000 ldr r3, [r3]
00058 e3130c02 tst r3, #2, 24
0005c 1a000000 bne |$L38073|
; 137 : {
; 138 : break;
00060 ea00000f b |$L38071|
00064 |$L38073|
; 139 : }
; 140 :
; 141 : //
; 142 : // Check to see if the watchdog has timed out
; 143 : if (iWatchdog==PARALLEL_WAIT)
00064 e59d3000 ldr r3, [sp]
00068 e3530401 cmp r3, #1, 8
0006c 1a00000b bne |$L38074|
; 144 : {
; 145 : //
; 146 : // Display error message
; 147 : //
; 148 : EdbgOutputDebugString("OEMParallelPortGetByte: status timeout 1.\r\n");
00070 e59f01b8 ldr r0, [pc, #0x1B8]
00074 eb000000 bl EdbgOutputDebugString
; 149 :
; 150 : //
; 151 : // set parallel port to disconnected and return failure
; 152 : //
; 153 : NoPPFS=TRUE;
00078 e59f21a8 ldr r2, [pc, #0x1A8]
0007c e3a03001 mov r3, #1
00080 e5823000 str r3, [r2]
; 154 :
; 155 : *IDE_CTRL = PAR_NWRITE| PAR_NREAD;
00084 e3a03102 mov r3, #2, 2
00088 e383280a orr r2, r3, #0xA, 16
0008c e3a03060 mov r3, #0x60
00090 e5823000 str r3, [r2]
; 156 : return -1;
00094 e3e03000 mvn r3, #0
00098 e58d3008 str r3, [sp, #8]
0009c ea00005c b |$L38061|
000a0 |$L38074|
; 157 : }
; 158 : }
000a0 eaffffe6 b |$L38070|
000a4 |$L38071|
; 159 :
; 160 : //
; 161 : // Read strobe a four more times to make sure that it is low.
; 162 : //
; 163 : if(( *IDE_CTRL & PAR_STROBE))
000a4 e3a03102 mov r3, #2, 2
000a8 e383380a orr r3, r3, #0xA, 16
000ac e5933000 ldr r3, [r3]
000b0 e3130c02 tst r3, #2, 24
000b4 0a000000 beq |$L38078|
; 164 : {
; 165 : continue;
000b8 eaffffdd b |$L38067|
000bc |$L38078|
; 166 : }
; 167 : if(( *IDE_CTRL & PAR_STROBE))
000bc e3a03102 mov r3, #2, 2
000c0 e383380a orr r3, r3, #0xA, 16
000c4 e5933000 ldr r3, [r3]
000c8 e3130c02 tst r3, #2, 24
000cc 0a000000 beq |$L38080|
; 168 : {
; 169 : continue;
000d0 eaffffd7 b |$L38196|
000d4 |$L38080|
; 170 : }
; 171 : if(( *IDE_CTRL & PAR_STROBE))
000d4 e3a03102 mov r3, #2, 2
000d8 e383380a orr r3, r3, #0xA, 16
000dc e5933000 ldr r3, [r3]
000e0 e3130c02 tst r3, #2, 24
000e4 0a000000 beq |$L38082|
; 172 : {
; 173 : continue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -