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

📄 oemioctl.cod

📁 EP9315的BSP包(WINCE下的BSP,内有各种驱动的详细的代码)
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 413  : 
; 414  :             case ILTIMING_MSG_GET_TIMES:
; 415  :                 pITM->dwIsrTime1 = dwIsrTime1;

  00658	e59f04f8	 ldr       r0, [pc, #0x4F8]

; 416  :                 pITM->dwIsrTime2 = dwIsrTime2;
; 417  :                 pITM->wNumInterrupts = wNumInterrupts;

  0065c	e59f44f8	 ldr       r4, [pc, #0x4F8]
  00660	e5901000	 ldr       r1, [r0]
  00664	e59f0508	 ldr       r0, [pc, #0x508]
  00668	e5891004	 str       r1, [r9, #4]
  0066c	e5901000	 ldr       r1, [r0]
  00670	e5891008	 str       r1, [r9, #8]
  00674	e1d400b0	 ldrh      r0, [r4]

; 418  :                 pITM->dwSPC = dwSPC;

  00678	e59f14f0	 ldr       r1, [pc, #0x4F0]
  0067c	e1c900b2	 strh      r0, [r9, #2]
  00680	e5910000	 ldr       r0, [r1]
  00684	e589000c	 str       r0, [r9, #0xC]

; 419  :                 pITM->dwFrequency = PerfCountFreq();

  00688	eb000000	 bl        PerfCountFreq
  0068c	e5890010	 str       r0, [r9, #0x10]

; 420  :                 wNumInterrupts = 0;

  00690	e3a00000	 mov       r0, #0
  00694	e1c400b0	 strh      r0, [r4]

; 631  :     }
; 632  : 
; 633  :     return(TRUE);

  00698	e1a00007	 mov       r0, r7
  0069c	ea000116	 b         |$L14784|
  006a0		 |$L14966|

; 406  :                 fIntrTime = TRUE;
; 407  :                 break;
; 408  : 
; 409  :             case ILTIMING_MSG_DISABLE:
; 410  :                 RETAILMSG(1, (TEXT("ILTiming Disable\r\n")));

  006a0	e59f04c4	 ldr       r0, [pc, #0x4C4]
  006a4	eb000000	 bl        NKDbgPrintfW

; 411  :                 fIntrTime = FALSE;

  006a8	e59f34a4	 ldr       r3, [pc, #0x4A4]
  006ac	e3a00000	 mov       r0, #0
  006b0	e5830000	 str       r0, [r3]

; 631  :     }
; 632  : 
; 633  :     return(TRUE);

  006b4	e1a00007	 mov       r0, r7
  006b8	ea00010f	 b         |$L14784|
  006bc		 |$L14964|

; 397  :             case ILTIMING_MSG_ENABLE:
; 398  :                 dwIntrTimeCountdownRef = pITM->dwFrequency;

  006bc	e5991010	 ldr       r1, [r9, #0x10]
  006c0	e59f44a0	 ldr       r4, [pc, #0x4A0]

; 399  :                 RETAILMSG(1,
; 400  :                           (TEXT("ILTiming Enable (@ every %d ticks)\r\n"),
; 401  :                            dwIntrTimeCountdownRef));

  006c4	e59f0498	 ldr       r0, [pc, #0x498]
  006c8	e5841000	 str       r1, [r4]
  006cc	eb000000	 bl        NKDbgPrintfW

; 402  : 
; 403  :                 dwIntrTimeCountdown = dwIntrTimeCountdownRef;

  006d0	e59f0488	 ldr       r0, [pc, #0x488]
  006d4	e5943000	 ldr       r3, [r4]

; 404  :                 wNumInterrupts = 0;

  006d8	e59f147c	 ldr       r1, [pc, #0x47C]
  006dc	e5803000	 str       r3, [r0]
  006e0	e3a00000	 mov       r0, #0
  006e4	e1c100b0	 strh      r0, [r1]

; 405  :                 dwIsrTime1 = 0xFFFFFFFF;

  006e8	e3e01000	 mvn       r1, #0
  006ec	e59f0464	 ldr       r0, [pc, #0x464]
  006f0	e5801000	 str       r1, [r0]

; 631  :     }
; 632  : 
; 633  :     return(TRUE);

  006f4	e1a00007	 mov       r0, r7
  006f8	e59f1454	 ldr       r1, [pc, #0x454]
  006fc	e5817000	 str       r7, [r1]
  00700	ea0000fd	 b         |$L14784|
  00704		 |$L14957|

; 392  :                 SetLastError(ERROR_INVALID_PARAMETER);

  00704	e59f1408	 ldr       r1, [pc, #0x408]
  00708	e3a00057	 mov       r0, #0x57
  0070c	e1a0e00f	 mov       lr, pc
  00710	e12fff11	 bx        r1

; 620  :         return(FALSE);

  00714	e3a00000	 mov       r0, #0
  00718	ea0000f7	 b         |$L14784|
  0071c		 |$L14983|

; 455  :         return TRUE;
; 456  : 
; 457  :     case IOCTL_VBRIDGE_GET_RX_PACKET:
; 458  :         if (lpOutBuf) {

  0071c	e3580000	 cmp       r8, #0
  00720	0a000003	 beq       |$L14984|

; 459  :             return VBridgeUGetOneRxPacket((PUCHAR *)lpOutBuf, lpBytesReturned);

  00724	e59d1054	 ldr       r1, [sp, #0x54]
  00728	e1a00008	 mov       r0, r8
  0072c	eb000000	 bl        VBridgeUGetOneRxPacket
  00730	ea0000f1	 b         |$L14784|
  00734		 |$L14984|

; 460  :         }
; 461  : 
; 462  :         SetLastError(ERROR_INVALID_PARAMETER);

  00734	e59f13d8	 ldr       r1, [pc, #0x3D8]
  00738	e3a00057	 mov       r0, #0x57
  0073c	e1a0e00f	 mov       lr, pc
  00740	e12fff11	 bx        r1

; 620  :         return(FALSE);

  00744	e3a00000	 mov       r0, #0
  00748	ea0000eb	 b         |$L14784|
  0074c		 |$L15063|

; 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)  {

  0074c	e59f03fc	 ldr       r0, [pc, #0x3FC]
  00750	e1560000	 cmp       r6, r0
  00754	8a00005d	 bhi       |$L15065|
  00758	0a000043	 beq       |$L15001|
  0075c	e59f03e8	 ldr       r0, [pc, #0x3E8]
  00760	e1560000	 cmp       r6, r0
  00764	0a00003c	 beq       |$L14988|
  00768	e59f03d8	 ldr       r0, [pc, #0x3D8]
  0076c	e1560000	 cmp       r6, r0
  00770	0a000035	 beq       |$L14990|
  00774	e59f03c8	 ldr       r0, [pc, #0x3C8]
  00778	e1560000	 cmp       r6, r0
  0077c	0a0000bd	 beq       |$L15007|
  00780	e59f03b8	 ldr       r0, [pc, #0x3B8]
  00784	e1560000	 cmp       r6, r0
  00788	0a000027	 beq       |$L14992|
  0078c	e59f03a8	 ldr       r0, [pc, #0x3A8]
  00790	e1560000	 cmp       r6, r0
  00794	0a00001d	 beq       |$L14996|
  00798	e59f0398	 ldr       r0, [pc, #0x398]
  0079c	e1560000	 cmp       r6, r0
  007a0	1a00005c	 bne       |$L15041|

; 518  :         return FALSE;
; 519  : 
; 520  :     // Provide interrupt number based on device location
; 521  :     case IOCTL_HAL_REQUEST_IRQ:
; 522  :         if (nInBufSize >= sizeof(DEVICE_LOCATION) && nOutBufSize >= sizeof(DWORD) && lpOutBuf && lpInBuf) {

  007a4	e3550014	 cmp       r5, #0x14
  007a8	3a000012	 bcc       |$L15014|
  007ac	e59d0050	 ldr       r0, [sp, #0x50]
  007b0	e3500004	 cmp       r0, #4
  007b4	3a00000f	 bcc       |$L15014|
  007b8	e3580000	 cmp       r8, #0
  007bc	0a00000d	 beq       |$L15014|
  007c0	e3590000	 cmp       r9, #0
  007c4	0a00000b	 beq       |$L15014|

; 523  :             if(!OEMGetInterrupt((PDEVICE_LOCATION)lpInBuf, (PDWORD)lpOutBuf))

  007c8	e1a01008	 mov       r1, r8
  007cc	e1a00009	 mov       r0, r9
  007d0	eb000000	 bl        OEMGetInterrupt
  007d4	e3500000	 cmp       r0, #0

; 524  :                 return(FALSE);

  007d8	0a000052	 beq       |$L15097|

; 525  : 
; 526  :             if (lpBytesReturned) {

  007dc	e59d0054	 ldr       r0, [sp, #0x54]
  007e0	e3500000	 cmp       r0, #0
  007e4	0a000097	 beq       |$L14791|

; 527  :                 *lpBytesReturned = sizeof(DWORD);

  007e8	e3a01004	 mov       r1, #4
  007ec	e5801000	 str       r1, [r0]

; 631  :     }
; 632  : 
; 633  :     return(TRUE);

  007f0	e1a00007	 mov       r0, r7
  007f4	ea0000c0	 b         |$L14784|
  007f8		 |$L15014|

; 528  :             }
; 529  : 
; 530  :             break;
; 531  :         }
; 532  : 
; 533  :         SetLastError(ERROR_INVALID_PARAMETER);

  007f8	e59f1314	 ldr       r1, [pc, #0x314]
  007fc	e3a00057	 mov       r0, #0x57
  00800	e1a0e00f	 mov       lr, pc
  00804	e12fff11	 bx        r1

; 620  :         return(FALSE);

  00808	e3a00000	 mov       r0, #0
  0080c	ea0000ba	 b         |$L14784|
  00810		 |$L14996|

; 480  :             return TRUE;
; 481  :         }
; 482  :         return FALSE;
; 483  : 
; 484  :     case IOCTL_VBRIDGE_802_3_MULTICAST_LIST:
; 485  :         if (OEMEthMulticastList((PUCHAR)lpInBuf, nInBufSize))

  00810	e1a01005	 mov       r1, r5
  00814	e1a00009	 mov       r0, r9
  00818	eb000000	 bl        OEMEthMulticastList
  0081c	e3500000	 cmp       r0, #0
  00820	0a000040	 beq       |$L15097|

; 629  :         
; 630  :         return TRUE;

  00824	e3a00001	 mov       r0, #1
  00828	ea0000b3	 b         |$L14784|
  0082c		 |$L14992|

; 471  :         return TRUE;
; 472  : 
; 473  :     case IOCTL_VBRIDGE_CURRENT_PACKET_FILTER:
; 474  :         ////////////////////////////////////////////////////////////////////////
; 475  :         //      First, see if filter setting is implemented, then inform vbridge
; 476  :         //      on the new filtering.
; 477  :         //
; 478  :         if (OEMEthCurrentPacketFilter((PDWORD)lpInBuf)) {

  0082c	e1a00009	 mov       r0, r9
  00830	eb000000	 bl        OEMEthCurrentPacketFilter
  00834	e3500000	 cmp       r0, #0
  00838	0a00003a	 beq       |$L15097|

; 479  :             VBridgeUCurrentPacketFilter((PDWORD)lpInBuf);

  0083c	e1a00009	 mov       r0, r9
  00840	eb000000	 bl        VBridgeUCurrentPacketFilter

; 629  :         
; 630  :         return TRUE;

  00844	e3a00001	 mov       r0, #1
  00848	ea0000ab	 b         |$L14784|
  0084c		 |$L14990|

; 467  :         return TRUE;
; 468  : 
; 469  :     case IOCTL_VBRIDGE_GET_ETHERNET_MAC:
; 470  :         VBridgeUGetEDBGMac((PBYTE)lpOutBuf);

  0084c	e1a00008	 mov       r0, r8
  00850	eb000000	 bl        VBridgeUGetEDBGMac

; 629  :         
; 630  :         return TRUE;

  00854	e3a00001	 mov       r0, #1
  00858	ea0000a7	 b         |$L14784|
  0085c		 |$L14988|

; 463  :         return FALSE;
; 464  :         
; 465  :     case IOCTL_VBRIDGE_GET_RX_PACKET_COMPLETE:
; 466  :         VBridgeUGetOneRxPacketComplete((PUCHAR)lpInBuf);

  0085c	e1a00009	 mov       r0, r9
  00860	eb000000	 bl        VBridgeUGetOneRxPacketComplete

; 629  :         
; 630  :         return TRUE;

  00864	e3a00001	 mov       r0, #1
  00868	ea0000a3	 b         |$L14784|
  0086c		 |$L15001|

; 491  : 
; 492  :     case IOCTL_VBRIDGE_SHARED_ETHERNET:
; 493  :         ////////////////////////////////////////////////////////////////////////
; 494  :         //  Yes, this kernel supports shared ethernet port.
; 495  :         //
; 496  :         return TRUE;
; 497  : #endif  // IMGSHAREETH
; 498  : 
; 499  :     ////////////////////////////////////////////////////////////////////////
; 500  :     ////////////////////////////////////////////////////////////////////////
; 501  :     //      Translate interrupt into SYSINTR
; 502  :     // 
; 503  :     // Translate IRQ -> SYSINTR (or request new SYSINTR)
; 504  :     //
; 505  :     case IOCTL_HAL_TRANSLATE_IRQ:
; 506  :     case IOCTL_HAL_REQUEST_SYSINTR:
; 507  :         if (nInBufSize >= sizeof(DWORD) && nOutBufSize >= sizeof(DWORD) && lpOutBuf && lpInBuf) {

  0086c	e3550004	 cmp       r5, #4
  00870	3a000010	 bcc       |$L15004|
  00874	e59d0050	 ldr       r0, [sp, #0x50]
  00878	e3500004	 cmp       r0, #4
  0087c	3a00000d	 bcc       |$L15004|
  00880	e3580000	 cmp       r8, #0
  00884	0a00000b	 beq       |$L15004|
  00888	e3590000	 cmp       r9, #0
  0088c	0a000009	 beq       |$L15004|

; 508  :             *(PDWORD)lpOutBuf = OEMRequestSysIntr(*(PDWORD)lpInBuf);

  00890	e5990000	 ldr       r0, [r9]
  00894	eb000000	 bl        OEMRequestSysIntr
  00898	e5880000	 str       r0, [r8]

; 509  : 
; 510  :             if (lpBytesReturned) {

  0089c	e59d0054	 ldr       r0, [sp, #0x54]
  008a0	e3500000	 cmp       r0, #0
  008a4	0a000073	 beq       |$L15007|

; 511  :                 *lpBytesReturned = sizeof(DWORD);

  008a8	e3a01004	 mov       r1, #4
  008ac	e5801000	 str       r1, [r0]

; 629  :         
; 630  :         return TRUE;

  008b0	e3a00001	 mov       r0, #1
  008b4	ea000090	 b         |$L14784|
  008b8		 |$L15004|

; 512  :             }
; 513  : 
; 514  :             return TRUE;
; 515  :         }
; 516  : 
; 517  :         SetLastError(ERROR_INVALID_PARAMETER);

  008b8	e59f1254	 ldr       r1, [pc, #0x254]
  008bc	e3a00057	 mov       r0, #0x57
  008c0	e1a0e00f	 mov       lr, pc
  008c4	e12fff11	 bx        r1

; 620  :         return(FALSE);

  008c8	e3a00000	 mov       r0, #0
  008cc	ea00008a	 b         |$L14784|
  008d0		 |$L15065|

; 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)  {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -