📄 oemioctl.cod
字号:
008d0 e59f025c ldr r0, [pc, #0x25C]
008d4 e1560000 cmp r6, r0
008d8 0a000080 beq |$L14999|
008dc e59fa24c ldr r10, [pc, #0x24C]
008e0 e156000a cmp r6, r10
008e4 0a000065 beq |$L14898|
008e8 e59f023c ldr r0, [pc, #0x23C]
008ec e1560000 cmp r6, r0
008f0 0a000062 beq |$L14898|
008f4 e59f022c ldr r0, [pc, #0x22C]
008f8 e1560000 cmp r6, r0
008fc 0a000059 beq |$L15044|
00900 e59f021c ldr r0, [pc, #0x21C]
00904 e1560000 cmp r6, r0
00908 0a000025 beq |$L15022|
0090c e59f020c ldr r0, [pc, #0x20C]
00910 e1560000 cmp r6, r0
00914 0a000005 beq |$L15036|
00918 |$L15041|
; 599 : return FALSE;
; 600 :
; 601 : //
; 602 : // The EP931x board does not have a PCI device so this shouldn't get called.
; 603 : //
; 604 : // Set-up PCI registry with EDBG NIC instance information
; 605 : //
; 606 : //case IOCTL_HAL_INITREGISTRY:
; 607 : // return PCIReg(&g_KitlInfo);
; 608 : default:
; 609 : #ifdef INTERNAL_HAL_TESTING
; 610 : if (!InternalHalTesting(dwIoControlCode, lpInBuf,
; 611 : nInBufSize, lpOutBuf,
; 612 : nOutBufSize, lpBytesReturned))
; 613 : {
; 614 : return(FALSE);
; 615 : }
; 616 : break;
; 617 : #endif
; 618 :
; 619 : SetLastError(ERROR_NOT_SUPPORTED);
00918 e59f11f4 ldr r1, [pc, #0x1F4]
0091c e3a00032 mov r0, #0x32
00920 e1a0e00f mov lr, pc
00924 e12fff11 bx r1
00928 |$L15097|
; 620 : return(FALSE);
00928 e3a00000 mov r0, #0
0092c ea000072 b |$L14784|
00930 |$L15036|
; 585 : return FALSE;
; 586 :
; 587 : case IOCTL_HAL_GET_MAC_ADDRESS:
; 588 : if (nInBufSize == 0 && nOutBufSize == 6 && lpOutBuf && !lpInBuf)
00930 e3550000 cmp r5, #0
00934 1a000014 bne |$L15038|
00938 e59d0050 ldr r0, [sp, #0x50]
0093c e3500006 cmp r0, #6
00940 1a000011 bne |$L15038|
00944 e3580000 cmp r8, #0
00948 0a00000f beq |$L15038|
0094c e3590000 cmp r9, #0
00950 1a00000d bne |$L15038|
; 589 : {
; 590 : if(gBoardInformationValid)
00954 e59f01c0 ldr r0, [pc, #0x1C0]
00958 e5901000 ldr r1, [r0]
0095c e3510000 cmp r1, #0
00960 0a000009 beq |$L15038|
; 591 : {
; 592 : memcpy(lpOutBuf, &gBoardInformation.MACAddress, 6);
00964 e59f01ac ldr r0, [pc, #0x1AC]
00968 e3a02006 mov r2, #6
0096c e2801004 add r1, r0, #4
00970 e1a00008 mov r0, r8
00974 eb000000 bl memcpy
; 593 : *lpBytesReturned = 6;
00978 e59d0054 ldr r0, [sp, #0x54]
0097c e3a03006 mov r3, #6
00980 e5803000 str r3, [r0]
; 631 : }
; 632 :
; 633 : return(TRUE);
00984 e1a00007 mov r0, r7
00988 ea00005b b |$L14784|
0098c |$L15038|
; 594 : break;
; 595 : }
; 596 : // return FALSE;
; 597 : }
; 598 : SetLastError(ERROR_INVALID_PARAMETER);
0098c e59f1180 ldr r1, [pc, #0x180]
00990 e3a00057 mov r0, #0x57
00994 e1a0e00f mov lr, pc
00998 e12fff11 bx r1
; 620 : return(FALSE);
0099c e3a00000 mov r0, #0
009a0 ea000055 b |$L14784|
009a4 |$L15022|
; 534 : return FALSE;
; 535 :
; 536 : case IOCTL_HAL_WRITE_COMMON_REG:
; 537 : if (nInBufSize == sizeof(CommonRegStruct) && nOutBufSize == 0 && !lpOutBuf && lpInBuf)
009a4 e3550014 cmp r5, #0x14
009a8 1a000028 bne |$L15031|
009ac e59d0050 ldr r0, [sp, #0x50]
009b0 e3500000 cmp r0, #0
009b4 1a000025 bne |$L15031|
009b8 e3580000 cmp r8, #0
009bc 1a000023 bne |$L15031|
009c0 e3590000 cmp r9, #0
009c4 0a000021 beq |$L15031|
; 538 : {
; 539 : CommonRegStruct *psCommon = (CommonRegStruct *)lpInBuf;
; 540 : BOOL fEnable;
; 541 : ULONG ulCurValue;
; 542 : if(psCommon->ulCheckSum == (ULONG)psCommon->pulRegister + psCommon->ulMask + psCommon->ulValue +
; 543 : (ULONG)psCommon->pulLockRegister)
009c8 e5991008 ldr r1, [r9, #8]
009cc e599000c ldr r0, [r9, #0xC]
009d0 e5992004 ldr r2, [r9, #4]
009d4 e0800001 add r0, r0, r1
009d8 e5994000 ldr r4, [r9]
009dc e0801002 add r1, r0, r2
009e0 e5993010 ldr r3, [r9, #0x10]
009e4 e0812004 add r2, r1, r4
009e8 e1530002 cmp r3, r2
009ec 1a000017 bne |$L15031|
; 544 : {
; 545 : //
; 546 : // Disable interrupts so that we can perform a lock/read/modify/write.
; 547 : //
; 548 : fEnable = INTERRUPTS_ENABLE(FALSE);
009f0 e3a00000 mov r0, #0
009f4 eb000000 bl INTERRUPTS_ENABLE
; 549 :
; 550 : //
; 551 : // Read the current value of the register.
; 552 : //
; 553 : ulCurValue = *psCommon->pulRegister;
; 554 :
; 555 :
; 556 : //
; 557 : // Set the lock register if necessary.
; 558 : //
; 559 : if(psCommon->pulLockRegister)
009f8 e599100c ldr r1, [r9, #0xC]
009fc e1a05000 mov r5, r0
00a00 e5990000 ldr r0, [r9]
00a04 e3510000 cmp r1, #0
00a08 e5904000 ldr r4, [r0]
; 560 : {
; 561 : *psCommon->pulLockRegister = 0xAA;
00a0c 13a000aa movne r0, #0xAA
00a10 15810000 strne r0, [r1]
; 562 :
; 563 : }
; 564 :
; 565 : //
; 566 : // Write the value to the register.
; 567 : //
; 568 : *psCommon->pulRegister = (ulCurValue & ~psCommon->ulMask) |
; 569 : (psCommon->ulValue & psCommon->ulMask);
00a14 e5992004 ldr r2, [r9, #4]
00a18 e5990008 ldr r0, [r9, #8]
00a1c e1c41002 bic r1, r4, r2
00a20 e5993000 ldr r3, [r9]
00a24 e0000002 and r0, r0, r2
00a28 e1811000 orr r1, r1, r0
00a2c e5831000 str r1, [r3]
; 570 :
; 571 : //
; 572 : // Clear the register lock.
; 573 : //
; 574 : if(psCommon->pulLockRegister)
00a30 e599000c ldr r0, [r9, #0xC]
00a34 e3500000 cmp r0, #0
; 575 : {
; 576 : *psCommon->pulLockRegister = 0x00;
00a38 13a01000 movne r1, #0
00a3c 15801000 strne r1, [r0]
; 577 :
; 578 : }
; 579 : INTERRUPTS_ENABLE(fEnable);
00a40 e1a00005 mov r0, r5
00a44 eb000000 bl INTERRUPTS_ENABLE
00a48 |$L14791|
; 631 : }
; 632 :
; 633 : return(TRUE);
00a48 e1a00007 mov r0, r7
00a4c ea00002a b |$L14784|
00a50 |$L15031|
; 580 : break;
; 581 : }
; 582 : }
; 583 :
; 584 : SetLastError(ERROR_INVALID_PARAMETER);
00a50 e59f10bc ldr r1, [pc, #0xBC]
00a54 e3a00057 mov r0, #0x57
00a58 e1a0e00f mov lr, pc
00a5c e12fff11 bx r1
; 620 : return(FALSE);
00a60 e3a00000 mov r0, #0
00a64 ea000024 b |$L14784|
00a68 |$L15044|
; 621 :
; 622 : //
; 623 : // Post kernel-init initialization, good place to initialize critical sections
; 624 : //
; 625 : case IOCTL_HAL_POSTINIT:
; 626 : // Initialize critical sections
; 627 : InitializeCriticalSection(&csWakeIntMask);
00a68 e59f0098 ldr r0, [pc, #0x98]
00a6c eb000000 bl InitializeCriticalSection
; 628 : InitializeCriticalSection(&csPCIConfig);
00a70 e59f0098 ldr r0, [pc, #0x98]
00a74 eb000000 bl InitializeCriticalSection
00a78 |$L15007|
; 629 :
; 630 : return TRUE;
00a78 e3a00001 mov r0, #1
00a7c ea00001e b |$L14784|
00a80 |$L14898|
; 298 :
; 299 : break;
; 300 :
; 301 : case IOCTL_HAL_ENABLE_WAKE:
; 302 : case IOCTL_HAL_DISABLE_WAKE:
; 303 : if (lpInBuf && nInBufSize == sizeof(DWORD)) {
00a80 e3590000 cmp r9, #0
00a84 0affffa7 beq |$L15097|
00a88 e3550004 cmp r5, #4
00a8c 1affffa5 bne |$L15097|
; 304 : // lpInBuf points to drivers dwSysIntr
; 305 : DWORD physInt = OEMTranslateSysIntr(*(LPDWORD)lpInBuf);
00a90 e5990000 ldr r0, [r9]
00a94 eb000000 bl OEMTranslateSysIntr
00a98 e1a05000 mov r5, r0
; 306 : if (physInt != (DWORD)-1 && physInt != (DWORD)0xFF) {
00a9c e3750001 cmn r5, #1
00aa0 0affffa0 beq |$L15097|
00aa4 e35500ff cmp r5, #0xFF
00aa8 0affff9e beq |$L15097|
; 307 : PLONG pMask = &g_dwWakeIntMask;
; 308 : EnterCriticalSection(&csWakeIntMask);
00aac e59f0054 ldr r0, [pc, #0x54]
00ab0 e59f4054 ldr r4, [pc, #0x54]
00ab4 eb000000 bl EnterCriticalSection
; 309 : if (dwIoControlCode == IOCTL_HAL_ENABLE_WAKE) {
; 310 : *pMask |= (1 << physInt);
00ab8 e5940000 ldr r0, [r4]
00abc e3a07001 mov r7, #1
00ac0 e156000a cmp r6, r10
00ac4 e1801517 orr r1, r0, r7, lsl r5
; 311 : } else {
; 312 : *pMask &= ~(1 << physInt);
00ac8 11c01517 bicne r1, r0, r7, lsl r5
; 313 : }
; 314 : LeaveCriticalSection(&csWakeIntMask);
00acc e59f0034 ldr r0, [pc, #0x34]
00ad0 e5841000 str r1, [r4]
00ad4 eb000000 bl LeaveCriticalSection
; 631 : }
; 632 :
; 633 : return(TRUE);
00ad8 e1a00007 mov r0, r7
00adc ea000006 b |$L14784|
00ae0 |$L14999|
; 486 : return TRUE;
; 487 : return FALSE;
; 488 :
; 489 : case IOCTL_VBRIDGE_WILD_CARD:
; 490 : return VBridgeUWildCard(lpInBuf, nInBufSize, lpOutBuf, nOutBufSize, lpBytesReturned);
00ae0 e59d0054 ldr r0, [sp, #0x54]
00ae4 e1a02008 mov r2, r8
00ae8 e59d3050 ldr r3, [sp, #0x50]
00aec e1a01005 mov r1, r5
00af0 e58d0000 str r0, [sp]
00af4 e1a00009 mov r0, r9
00af8 eb000000 bl VBridgeUWildCard
00afc |$L14784|
; 634 : }
00afc e28dd030 add sp, sp, #0x30
00b00 e8bd47f0 ldmia sp!, {r4 - r10, lr}
00b04 e12fff1e bx lr
00b08 |$L15103|
00b08 00000000 DCD |csWakeIntMask|
00b0c 00000000 DCD |g_dwWakeIntMask|
00b10 00000000 DCD |csPCIConfig|
00b14 f000fea0 DCD 0xf000fea0
00b18 00000000 DCD |gBoardInformation|
00b1c 00000000 DCD |gBoardInformationValid|
00b20 01010110 DCD 0x1010110
00b24 0101010c DCD 0x101010c
00b28 010100b4 DCD 0x10100b4
00b2c 010100a4 DCD 0x10100a4
00b30 010100a0 DCD 0x10100a0
00b34 0101009c DCD 0x101009c
00b38 01010090 DCD 0x1010090
00b3c 01010088 DCD 0x1010088
00b40 01010084 DCD 0x1010084
00b44 01010080 DCD 0x1010080
00b48 01010078 DCD 0x1010078
00b4c 01010074 DCD 0x1010074
00b50 01010098 DCD 0x1010098
00b54 00000000 DCD |fIntrTime|
00b58 00000000 DCD |dwIsrTime1|
00b5c 00000000 DCD |wNumInterrupts|
00b60 00000000 DCD |dwIntrTimeCountdown|
00b64 00000000 DCD |??_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@|
00b68 00000000 DCD |dwIntrTimeCountdownRef|
00b6c 00000000 DCD |??_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@|
00b70 00000000 DCD |dwSPC|
00b74 00000000 DCD |dwIsrTime2|
00b78 00000000 DCD |??_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@|
00b7c 00000000 DCD |PerfCountSinceTick|
00b80 00000000 DCD |??_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@|
00b84 a0008810 DCD 0xa0008810
00b88 00000000 DCD |??_C@_06PBAG@ARMINT?$AA@|
00b8c 00000000 DCD |HALOEMStr|
00b90 00000000 DCD |??_C@_1BC@HAPB@?$AAA?$AAR?$AAM?$AA?5?$AAL?$AAt?$AAd?$AA?4?$AA?$AA@|
00b94 00000000 DCD |??_C@_1BA@DNL@?$AAA?$AAR?$AAM?$AA9?$AA2?$AA0?$AAT?$AA?$AA@|
00b98 00000000 DCD |??_C@_17MPOF@?$AAA?$AAR?$AAM?$AA?$AA@|
00b9c 0101006c DCD 0x101006c
00ba0 01010068 DCD 0x1010068
00ba4 01010064 DCD 0x1010064
00ba8 01010060 DCD 0x1010060
00bac 01010054 DCD 0x1010054
00bb0 01010050 DCD 0x1010050
00bb4 00000000 DCD |HALPlatformStr|
00bb8 a0008834 DCD 0xa0008834
00bbc a0008840 DCD 0xa0008840
00bc0 a000884c DCD 0xa000884c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -