📄 oemioctl.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615
TTL d:\wince420\platform\ep931x\kernel\hal\.\oemioctl.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |HALPlatformStr| [ DATA ]
EXPORT |HALOEMStr| [ DATA ]
00000 AREA |.data|, DATA
COMMON |fIntrTime|, 0x4
COMMON |wNumInterrupts|, 0x2
COMMON |dwIsrTime1|, 0x4
COMMON |dwIsrTime2|, 0x4
COMMON |dwSPC|, 0x4
COMMON |dwIntrTimeCountdown|, 0x4
COMMON |dwIntrTimeCountdownRef|, 0x4
COMMON |csWakeIntMask|, 0x14
COMMON |csPCIConfig|, 0x14
00000 AREA |.rdata|, DATA, READONLY
|EdbgVendorIds| DCW 0x0
DCW 0x0
DCD 0x4033
DCB 0x1
DCB "AD", 0x0
DCW 0x1050
DCW 0x940
DCD 0x4005
DCB 0x1
DCB "LS", 0x0
DCW 0x1050
DCW 0x940
DCD 0x2078
DCB 0x1
DCB "LS", 0x0
DCW 0x10ec
DCW 0x8029
DCD 0xc0f0
DCB 0x1
DCB "KS", 0x0
DCW 0x10ec
DCW 0x8129
DCD 0x0
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0x900b
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xd0c9
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xe04c
DCB 0x4
DCB "RT", 0x0
DCW 0x1186
DCW 0x1300
DCD 0x50ba
DCB 0x4
DCB "DL", 0x0
DCW 0x100b
DCW 0x20
DCD 0xa0cc
DCB 0x5
DCB "NG", 0x0
DCW 0x10b7
DCW 0x9050
DCD 0x6008
DCB 0x6
DCB "3C", 0x0
DCW 0x10b7
DCW 0x9200
DCD 0x476
DCB 0x6
DCB "3C", 0x0
|HALPlatformStr| DCB "E", 0x0, "P", 0x0, "9", 0x0, "3", 0x0, "1", 0x0, "x"
DCB 0x0, " ", 0x0, "E", 0x0, "v", 0x0, "a", 0x0, "l", 0x0, "u"
DCB 0x0, "a", 0x0, "t", 0x0, "i", 0x0, "o", 0x0, "n", 0x0, " "
DCB 0x0, "B", 0x0, "o", 0x0, "a", 0x0, "r", 0x0, "d", 0x0, 0x0
DCB 0x0
|HALOEMStr| DCB "C", 0x0, "i", 0x0, "r", 0x0, "r", 0x0, "u", 0x0, "s", 0x0
DCB 0x0, 0x0
EXPORT |OEMIoControl|
EXPORT |??_C@_17MPOF@?$AAA?$AAR?$AAM?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1BA@DNL@?$AAA?$AAR?$AAM?$AA9?$AA2?$AA0?$AAT?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1BC@HAPB@?$AAA?$AAR?$AAM?$AA?5?$AAL?$AAt?$AAd?$AA?4?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1DC@OEGE@?$AAP?$AAe?$AAr?$AAf?$AAo?$AAr?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAw?$AAa?$AAr?$AAm?$AA?5?$AAr?$AAe?$AAs?$AAe@| [ DATA ] ; `string'
EXPORT |??_C@_06PBAG@ARMINT?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1EK@EPBI@?$AAI?$AAL?$AAT?$AAi?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAE?$AAn?$AAa?$AAb?$AAl?$AAe?$AA?5?$AA?$CI?$AA?$EA?$AA?5?$AAe@| [ DATA ] ; `string'
EXPORT |??_C@_1CG@LCDJ@?$AAI?$AAL?$AAT?$AAi?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAD?$AAi?$AAs?$AAa?$AAb?$AAl?$AAe?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1CE@PAIH@?$AAI?$AAL?$AAT?$AAi?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAG?$AAe?$AAt?$AAP?$AAF?$AAN?$AA?$AN?$AA?6?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1EG@IKKE@?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAH?$AAA?$AAL?$AA_?$AAI?$AAL?$AAT?$AAI?$AAM?$AAI?$AAN?$AAG?$AA?3?$AA?5@| [ DATA ] ; `string'
IMPORT |NKDbgPrintfW|
IMPORT |EnterCriticalSection|
IMPORT |LeaveCriticalSection|
IMPORT |InitializeCriticalSection|
IMPORT |OEMRequestSysIntr|
IMPORT |OEMTranslateSysIntr|
IMPORT |OEMGetInterrupt|
IMPORT |VBridgeUGetOneTxPacket|
IMPORT |VBridgeUGetOneTxPacketComplete|
IMPORT |VBridgeUGetOneRxPacket|
IMPORT |VBridgeUGetOneRxPacketComplete|
IMPORT |VBridgeUGetEDBGMac|
IMPORT |VBridgeUCurrentPacketFilter|
IMPORT |VBridgeUWildCard|
IMPORT |INTERRUPTS_ENABLE|
IMPORT |SetKernelCommDev|
IMPORT |OEMSetRealTime|
IMPORT |gBoardInformation|
IMPORT |gBoardInformationValid|
IMPORT |OEMEthCurrentPacketFilter|
IMPORT |OEMEthMulticastList|
IMPORT |strlenW|
IMPORT |CreateDeviceName|
IMPORT |g_dwWakeIntMask|
IMPORT |PerfCountSinceTick|
IMPORT |PerfCountFreq|
IMPORT |memcpy|
IMPORT |memset|
; File d:\wince420\platform\ep931x\kernel\hal\oemioctl.c
00000 AREA |.text| { |OEMIoControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMIoControl|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMIoControl| } ; comdat associative
|$T15101| DCD |OEMIoControl|
DCD 0x4002fd02
00000 AREA |.rdata| { |??_C@_1DC@OEGE@?$AAP?$AAe?$AAr?$AAf?$AAo?$AAr?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAw?$AAa?$AAr?$AAm?$AA?5?$AAr?$AAe?$AAs?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1DC@OEGE@?$AAP?$AAe?$AAr?$AAf?$AAo?$AAr?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAw?$AAa?$AAr?$AAm?$AA?5?$AAr?$AAe?$AAs?$AAe@| DCB "P"
DCB 0x0, "e", 0x0, "r", 0x0, "f", 0x0, "o", 0x0, "r", 0x0, "m"
DCB 0x0, "i", 0x0, "n", 0x0, "g", 0x0, " ", 0x0, "w", 0x0, "a"
DCB 0x0, "r", 0x0, "m", 0x0, " ", 0x0, "r", 0x0, "e", 0x0, "s"
DCB 0x0, "e", 0x0, "t", 0x0, ".", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_17MPOF@?$AAA?$AAR?$AAM?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_17MPOF@?$AAA?$AAR?$AAM?$AA?$AA@| DCB "A", 0x0, "R", 0x0, "M", 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1BA@DNL@?$AAA?$AAR?$AAM?$AA9?$AA2?$AA0?$AAT?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BA@DNL@?$AAA?$AAR?$AAM?$AA9?$AA2?$AA0?$AAT?$AA?$AA@| DCB "A", 0x0
DCB "R", 0x0, "M", 0x0, "9", 0x0, "2", 0x0, "0", 0x0, "T", 0x0
DCB 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1BC@HAPB@?$AAA?$AAR?$AAM?$AA?5?$AAL?$AAt?$AAd?$AA?4?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1BC@HAPB@?$AAA?$AAR?$AAM?$AA?5?$AAL?$AAt?$AAd?$AA?4?$AA?$AA@| DCB "A"
DCB 0x0, "R", 0x0, "M", 0x0, " ", 0x0, "L", 0x0, "t", 0x0, "d"
DCB 0x0, ".", 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_06PBAG@ARMINT?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_06PBAG@ARMINT?$AA@| DCB "ARMINT", 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EG@IKKE@?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAH?$AAA?$AAL?$AA_?$AAI?$AAL?$AAT?$AAI?$AAM?$AAI?$AAN?$AAG?$AA?3?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EG@IKKE@?$AAI?$AAO?$AAC?$AAT?$AAL?$AA_?$AAH?$AAA?$AAL?$AA_?$AAI?$AAL?$AAT?$AAI?$AAM?$AAI?$AAN?$AAG?$AA?3?$AA?5@| DCB "I"
DCB 0x0, "O", 0x0, "C", 0x0, "T", 0x0, "L", 0x0, "_", 0x0, "H"
DCB 0x0, "A", 0x0, "L", 0x0, "_", 0x0, "I", 0x0, "L", 0x0, "T"
DCB 0x0, "I", 0x0, "M", 0x0, "I", 0x0, "N", 0x0, "G", 0x0, ":"
DCB 0x0, " ", 0x0, "B", 0x0, "A", 0x0, "D", 0x0, " ", 0x0, "M"
DCB 0x0, "E", 0x0, "S", 0x0, "S", 0x0, "A", 0x0, "G", 0x0, "E"
DCB 0x0, "!", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CE@PAIH@?$AAI?$AAL?$AAT?$AAi?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAG?$AAe?$AAt?$AAP?$AAF?$AAN?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CE@PAIH@?$AAI?$AAL?$AAT?$AAi?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAG?$AAe?$AAt?$AAP?$AAF?$AAN?$AA?$AN?$AA?6?$AA?$AA@| DCB "I"
DCB 0x0, "L", 0x0, "T", 0x0, "i", 0x0, "m", 0x0, "i", 0x0, "n"
DCB 0x0, "g", 0x0, " ", 0x0, "G", 0x0, "e", 0x0, "t", 0x0, "P"
DCB 0x0, "F", 0x0, "N", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1CG@LCDJ@?$AAI?$AAL?$AAT?$AAi?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAD?$AAi?$AAs?$AAa?$AAb?$AAl?$AAe?$AA?$AN?$AA?6?$AA?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1CG@LCDJ@?$AAI?$AAL?$AAT?$AAi?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAD?$AAi?$AAs?$AAa?$AAb?$AAl?$AAe?$AA?$AN?$AA?6?$AA?$AA@| DCB "I"
DCB 0x0, "L", 0x0, "T", 0x0, "i", 0x0, "m", 0x0, "i", 0x0, "n"
DCB 0x0, "g", 0x0, " ", 0x0, "D", 0x0, "i", 0x0, "s", 0x0, "a"
DCB 0x0, "b", 0x0, "l", 0x0, "e", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EK@EPBI@?$AAI?$AAL?$AAT?$AAi?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAE?$AAn?$AAa?$AAb?$AAl?$AAe?$AA?5?$AA?$CI?$AA?$EA?$AA?5?$AAe@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EK@EPBI@?$AAI?$AAL?$AAT?$AAi?$AAm?$AAi?$AAn?$AAg?$AA?5?$AAE?$AAn?$AAa?$AAb?$AAl?$AAe?$AA?5?$AA?$CI?$AA?$EA?$AA?5?$AAe@| DCB "I"
DCB 0x0, "L", 0x0, "T", 0x0, "i", 0x0, "m", 0x0, "i", 0x0, "n"
DCB 0x0, "g", 0x0, " ", 0x0, "E", 0x0, "n", 0x0, "a", 0x0, "b"
DCB 0x0, "l", 0x0, "e", 0x0, " ", 0x0, "(", 0x0, "@", 0x0, " "
DCB 0x0, "e", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "y", 0x0, " "
DCB 0x0, "%", 0x0, "d", 0x0, " ", 0x0, "t", 0x0, "i", 0x0, "c"
DCB 0x0, "k", 0x0, "s", 0x0, ")", 0x0, 0xd, 0x0, 0xa, 0x0, 0x0
DCB 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMIoControl| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMIoControl| PROC
; 117 : {
00000 e92d47f0 stmdb sp!, {r4 - r10, lr}
00004 e24dd030 sub sp, sp, #0x30
00008 |$M15099|
00008 e1a06000 mov r6, r0
0000c e1a09001 mov r9, r1
00010 e1a05002 mov r5, r2
00014 e1a08003 mov r8, r3
; 118 : DWORD len;
; 119 : PIP_INFO pIPInfo;
; 120 : EDBG_ADDR *pEdbgAddr;
; 121 : ULONG ulTemp;
; 122 :
; 123 :
; 124 : DEBUGMSG(0, (TEXT("+OEMIoControl %X\r\n"), dwIoControlCode));
; 125 :
; 126 : switch (dwIoControlCode) {
00018 e59f0bd0 ldr r0, [pc, #0xBD0]
0001c e3a07001 mov r7, #1
00020 e1560000 cmp r6, r0
00024 8a0001c8 bhi |$L15063|
00028 0a0001bb beq |$L14983|
0002c e59f0bb8 ldr r0, [pc, #0xBB8]
00030 e1560000 cmp r6, r0
00034 8a0000c1 bhi |$L15064|
00038 0a00020b beq |$L15001|
0003c e59f0ba4 ldr r0, [pc, #0xBA4]
00040 e1560000 cmp r6, r0
00044 0a000081 beq |$L14794|
00048 e59f0b94 ldr r0, [pc, #0xB94]
0004c e1560000 cmp r6, r0
00050 0a000051 beq |$L14858|
00054 e59f0b84 ldr r0, [pc, #0xB84]
00058 e1560000 cmp r6, r0
0005c 0a000030 beq |$L14827|
00060 e59f0b74 ldr r0, [pc, #0xB74]
00064 e1560000 cmp r6, r0
00068 0a000028 beq |$L14886|
0006c e59f0b64 ldr r0, [pc, #0xB64]
00070 e1560000 cmp r6, r0
00074 0a000010 beq |$L14889|
00078 e59f0b54 ldr r0, [pc, #0xB54]
0007c e1560000 cmp r6, r0
00080 1a000224 bne |$L15041|
; 315 : return(TRUE);
; 316 : }
; 317 : }
; 318 : return(FALSE);
; 319 :
; 320 : case IOCTL_HAL_REBOOT:
; 321 : //
; 322 : // Perform a warm reset of the device.
; 323 : //
; 324 : RETAILMSG(1, (TEXT("Performing warm reset.\r\n")));
00084 e59f0b44 ldr r0, [pc, #0xB44]
00088 eb000000 bl NKDbgPrintfW
; 325 : ulTemp = *CSC_DEVCFG;
0008c e59f4b38 ldr r4, [pc, #0xB38]
; 326 : *CSC_SYSLOCK = 0xAA;
00090 e59f3b30 ldr r3, [pc, #0xB30]
00094 e3a020aa mov r2, #0xAA
00098 e5941000 ldr r1, [r4]
0009c e5832000 str r2, [r3]
; 327 : *CSC_DEVCFG = ulTemp | DEVCFG_SWRST;
000a0 e3810102 orr r0, r1, #2, 2
000a4 e5840000 str r0, [r4]
; 328 : *CSC_SYSLOCK = 0xAA;
; 329 : *CSC_DEVCFG = ulTemp & ~DEVCFG_SWRST;
000a8 e3c10102 bic r0, r1, #2, 2
000ac e5832000 str r2, [r3]
000b0 e5840000 str r0, [r4]
; 620 : return(FALSE);
000b4 e3a00000 mov r0, #0
000b8 ea00028f b |$L14784|
000bc |$L14889|
; 288 :
; 289 : case IOCTL_HAL_INIT_RTC:
; 290 : if (!lpInBuf || !lpBytesReturned || (nInBufSize < sizeof(SYSTEMTIME)))
000bc e3590000 cmp r9, #0
000c0 0a00000c beq |$L14892|
000c4 e59d4054 ldr r4, [sp, #0x54]
000c8 e3540000 cmp r4, #0
000cc 0a000009 beq |$L14892|
000d0 e3550010 cmp r5, #0x10
000d4 3a000007 bcc |$L14892|
; 293 : return(FALSE);
; 294 : }
; 295 :
; 296 : if (OEMSetRealTime((LPSYSTEMTIME)lpInBuf))
000d8 e1a00009 mov r0, r9
000dc eb000000 bl OEMSetRealTime
000e0 e3500000 cmp r0, #0
000e4 0a000257 beq |$L14791|
; 297 : *lpBytesReturned = sizeof(SYSTEMTIME);
000e8 e3a00010 mov r0, #0x10
000ec e5840000 str r0, [r4]
; 631 : }
; 632 :
; 633 : return(TRUE);
000f0 e1a00007 mov r0, r7
000f4 ea000280 b |$L14784|
000f8 |$L14892|
; 291 : {
; 292 : SetLastError( ERROR_INVALID_PARAMETER );
000f8 e59f1a14 ldr r1, [pc, #0xA14]
000fc e3a00057 mov r0, #0x57
00100 e1a0e00f mov lr, pc
00104 e12fff11 bx r1
; 620 : return(FALSE);
00108 e3a00000 mov r0, #0
0010c ea00027a b |$L14784|
00110 |$L14886|
; 280 : break;
; 281 :
; 282 : case IOCTL_SET_KERNEL_COMM_DEV:
; 283 : //
; 284 : // Routine to change underlying communications device for
; 285 : // kernel services
; 286 : //
; 287 : return SetKernelCommDev((UCHAR)nInBufSize,(UCHAR)nOutBufSize);
00110 e59d0050 ldr r0, [sp, #0x50]
00114 e20010ff and r1, r0, #0xFF
00118 e20500ff and r0, r5, #0xFF
0011c eb000000 bl SetKernelCommDev
00120 ea000275 b |$L14784|
00124 |$L14827|
; 185 :
; 186 : return TRUE;
; 187 : }
; 188 :
; 189 : case IOCTL_HAL_DDK_CALL:
; 190 : if (!lpInBuf || (nInBufSize != sizeof(BUSDATA_PARMS)) || !lpBytesReturned)
00124 e3590000 cmp r9, #0
00128 0a000015 beq |$L14845|
0012c e3550020 cmp r5, #0x20
00130 1a000013 bne |$L14845|
00134 e59d0054 ldr r0, [sp, #0x54]
00138 e3500000 cmp r0, #0
0013c 0a000010 beq |$L14845|
; 193 : return(FALSE);
; 194 : }
; 195 :
; 196 : //
; 197 : // I hope by setting the return code to zero fails the PCI bus configuration
; 198 : // stuff.
; 199 : //
; 200 : if (*(DWORD *)lpInBuf == IOCTL_HAL_SETBUSDATA)
00140 e5990000 ldr r0, [r9]
00144 e3500001 cmp r0, #1
; 201 : {
; 202 : ((PBUSDATA_PARMS)lpInBuf)->ReturnCode = 0;
00148 03a01000 moveq r1, #0
0014c 05891004 streq r1, [r9, #4]
; 629 :
; 630 : return TRUE;
00150 03a00001 moveq r0, #1
00154 0a000268 beq |$L14784|
00158 e3500002 cmp r0, #2
0015c 03a00000 moveq r0, #0
00160 05890004 streq r0, [r9, #4]
00164 03a00001 moveq r0, #1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -