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

📄 oemioctl.cod

📁 EP9315的BSP包(WINCE下的BSP,内有各种驱动的详细的代码)
💻 COD
📖 第 1 页 / 共 5 页
字号:

  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 + -