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

📄 oemioctl.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 813  : 		break;
; 814  : 
; 815  : 	case IOCTL_HAL_GET_UUID:
; 816  : 		{
; 817  : 			// Check buffer size
; 818  : 			if ( lpBytesReturned ) *lpBytesReturned = sizeof(GUID);

  0029c	e59d304c	 ldr         r3, [sp, #0x4C]
  002a0	e3530000	 cmp         r3, #0
  002a4	13a02010	 movne       r2, #0x10
  002a8	15832000	 strne       r2, [r3]

; 819  : 
; 820  : 			if ( (!lpOutBuf) || nOutBufSize < sizeof(GUID)) {

  002ac	e3560000	 cmp         r6, #0
  002b0	0a000008	 beq         |$L16936|
  002b4	e59d3048	 ldr         r3, [sp, #0x48]
  002b8	e3530010	 cmp         r3, #0x10
  002bc	3a000005	 bcc         |$L16936|

; 824  : 			}
; 825  : 			else
; 826  : 			{
; 827  : 				memcpy(lpOutBuf, pDriverGlobals->eth.EdbgAddr.wMAC, sizeof(GUID));

  002c0	e59f1b24	 ldr         r1, [pc, #0xB24]
  002c4	e3a02010	 mov         r2, #0x10
  002c8	e1a00006	 mov         r0, r6
  002cc	eb000000	 bl          memcpy

; 828  : 			}
; 829  : 		}
; 830  : 
; 831  : 		break;
; 832  : 
; 833  : 
; 834  : #ifdef EP93XX_SIMULAT_PS2_KBD
; 835  : 
; 836  : 	case IOCTL_HAL_PS2_SEND:
; 837  : 		return SendDataToPS2( lpInBuf ,nInBufSize );
; 838  : 		break;
; 839  : 	case IOCTL_HAL_PS2_GET:
; 840  : 		return ReadPS2Data(lpOutBuf, nOutBufSize, lpBytesReturned );
; 841  : 		break;
; 842  : #endif
; 843  : 
; 844  : #ifdef EDB9315A_CIR
; 845  : 	case IOCTL_HAL_PIO_CIR:
; 846  : 		return GetKeyName( lpOutBuf, nOutBufSize, lpBytesReturned );
; 847  : 		break;
; 848  : #endif
; 849  : 
; 850  :     }
; 851  : 
; 852  :     return(TRUE);

  002d0	e3a00001	 mov         r0, #1
  002d4	eaffff80	 b           |$L16625|
  002d8		 |$L16936|

; 821  : 
; 822  : 				SetLastError(ERROR_INSUFFICIENT_BUFFER);

  002d8	e59f3a34	 ldr         r3, [pc, #0xA34]
  002dc	e3a0007a	 mov         r0, #0x7A
  002e0	e1a0e00f	 mov         lr, pc
  002e4	e12fff13	 bx          r3

; 823  : 				return FALSE;

  002e8	eaffff7a	 b           |$L16908|
  002ec		 |$L16961|

; 174  :     DWORD len;
; 175  :     PIP_INFO pIPInfo;
; 176  :     EDBG_ADDR *pEdbgAddr;
; 177  : 
; 178  : 
; 179  :     DEBUGMSG(0, (TEXT("+OEMIoControl %X\r\n"), dwIoControlCode));
; 180  : 
; 181  :     switch (dwIoControlCode)  {

  002ec	e59f3af4	 ldr         r3, [pc, #0xAF4]
  002f0	e1500003	 cmp         r0, r3
  002f4	0a00004e	 beq         |$L16755|
  002f8	e59f3ae4	 ldr         r3, [pc, #0xAE4]
  002fc	e1500003	 cmp         r0, r3
  00300	0a000148	 beq         |$L16849|
  00304	e59f3ad4	 ldr         r3, [pc, #0xAD4]
  00308	e1500003	 cmp         r0, r3
  0030c	1a000244	 bne         |$L16926|

; 486  : 				return TRUE;
; 487  :             }
; 488  :         }
; 489  :         break;
; 490  :         
; 491  :     case IOCTL_HAL_ILTIMING:
; 492  :         {
; 493  :             PILTIMING_MESSAGE pITM = (PILTIMING_MESSAGE) lpInBuf;
; 494  : 
; 495  :             extern DWORD PerfCountSinceTick();
; 496  :             extern DWORD PerfCountFreq();
; 497  : 
; 498  :             if ((nInBufSize != sizeof(ILTIMING_MESSAGE)) || !lpInBuf) {

  00310	e35e0018	 cmp         lr, #0x18
  00314	1a000041	 bne         |$L16805|
  00318	e3550000	 cmp         r5, #0
  0031c	0a00003f	 beq         |$L16805|

; 501  :             }
; 502  : 
; 503  :             switch (pITM->wMsg) {

  00320	e1d530b0	 ldrh        r3, [r5]
  00324	e3530001	 cmp         r3, #1
  00328	0a000028	 beq         |$L16812|
  0032c	e3530002	 cmp         r3, #2
  00330	0a000022	 beq         |$L16814|
  00334	e3530003	 cmp         r3, #3
  00338	0a00000e	 beq         |$L16816|
  0033c	e3530004	 cmp         r3, #4
  00340	0a000006	 beq         |$L16817|

; 538  :                 break;
; 539  : 
; 540  :             default:
; 541  :                 RETAILMSG(1, (TEXT("IOCTL_HAL_ILTIMING: BAD MESSAGE!\r\n")));

  00344	e59f0a90	 ldr         r0, [pc, #0xA90]
  00348	eb000000	 bl          NKDbgPrintfW

; 542  :                 SetLastError(ERROR_INVALID_PARAMETER);

  0034c	e59f39c0	 ldr         r3, [pc, #0x9C0]
  00350	e3a00057	 mov         r0, #0x57
  00354	e1a0e00f	 mov         lr, pc
  00358	e12fff13	 bx          r3

; 543  :                 return FALSE;

  0035c	eaffff5d	 b           |$L16908|
  00360		 |$L16817|

; 528  : #if 0
; 529  :                 RETAILMSG(1, (TEXT("ILTiming GetTime @ 0x%08X:%08X\r\n"),
; 530  :                               pITM->dwParam1, pITM->dwParam2));
; 531  : #endif /* 0/1 */
; 532  : 
; 533  :                 break;
; 534  : 
; 535  :             case ILTIMING_MSG_GET_PFN:
; 536  :                 pITM->pfnPerfCountSinceTick = (PVOID)PerfCountSinceTick;

  00360	e59f3a70	 ldr         r3, [pc, #0xA70]

; 537  :                 RETAILMSG (1, (TEXT("ILTiming GetPFN\r\n")));

  00364	e59f0a68	 ldr         r0, [pc, #0xA68]
  00368	e5853014	 str         r3, [r5, #0x14]
  0036c	eb000000	 bl          NKDbgPrintfW

; 828  : 			}
; 829  : 		}
; 830  : 
; 831  : 		break;
; 832  : 
; 833  : 
; 834  : #ifdef EP93XX_SIMULAT_PS2_KBD
; 835  : 
; 836  : 	case IOCTL_HAL_PS2_SEND:
; 837  : 		return SendDataToPS2( lpInBuf ,nInBufSize );
; 838  : 		break;
; 839  : 	case IOCTL_HAL_PS2_GET:
; 840  : 		return ReadPS2Data(lpOutBuf, nOutBufSize, lpBytesReturned );
; 841  : 		break;
; 842  : #endif
; 843  : 
; 844  : #ifdef EDB9315A_CIR
; 845  : 	case IOCTL_HAL_PIO_CIR:
; 846  : 		return GetKeyName( lpOutBuf, nOutBufSize, lpBytesReturned );
; 847  : 		break;
; 848  : #endif
; 849  : 
; 850  :     }
; 851  : 
; 852  :     return(TRUE);

  00370	e3a00001	 mov         r0, #1
  00374	eaffff58	 b           |$L16625|
  00378		 |$L16816|

; 520  : 
; 521  :             case ILTIMING_MSG_GET_TIMES:
; 522  :                 pITM->dwIsrTime1 = dwIsrTime1;

  00378	e59f3a30	 ldr         r3, [pc, #0xA30]

; 523  :                 pITM->dwIsrTime2 = dwIsrTime2;

  0037c	e59f2a4c	 ldr         r2, [pc, #0xA4C]

; 524  :                 pITM->wNumInterrupts = wNumInterrupts;

  00380	e59f4a2c	 ldr         r4, [pc, #0xA2C]
  00384	e5933000	 ldr         r3, [r3]

; 525  :                 pITM->dwSPC = dwSPC;

  00388	e59f1a3c	 ldr         r1, [pc, #0xA3C]
  0038c	e5853004	 str         r3, [r5, #4]
  00390	e5923000	 ldr         r3, [r2]
  00394	e5853008	 str         r3, [r5, #8]
  00398	e1d430b0	 ldrh        r3, [r4]
  0039c	e1c530b2	 strh        r3, [r5, #2]
  003a0	e5913000	 ldr         r3, [r1]
  003a4	e585300c	 str         r3, [r5, #0xC]

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

  003a8	eb000000	 bl          PerfCountFreq

; 527  :                 wNumInterrupts = 0;

  003ac	e3a03000	 mov         r3, #0
  003b0	e5850010	 str         r0, [r5, #0x10]
  003b4	e1c430b0	 strh        r3, [r4]

; 828  : 			}
; 829  : 		}
; 830  : 
; 831  : 		break;
; 832  : 
; 833  : 
; 834  : #ifdef EP93XX_SIMULAT_PS2_KBD
; 835  : 
; 836  : 	case IOCTL_HAL_PS2_SEND:
; 837  : 		return SendDataToPS2( lpInBuf ,nInBufSize );
; 838  : 		break;
; 839  : 	case IOCTL_HAL_PS2_GET:
; 840  : 		return ReadPS2Data(lpOutBuf, nOutBufSize, lpBytesReturned );
; 841  : 		break;
; 842  : #endif
; 843  : 
; 844  : #ifdef EDB9315A_CIR
; 845  : 	case IOCTL_HAL_PIO_CIR:
; 846  : 		return GetKeyName( lpOutBuf, nOutBufSize, lpBytesReturned );
; 847  : 		break;
; 848  : #endif
; 849  : 
; 850  :     }
; 851  : 
; 852  :     return(TRUE);

  003b8	e3a00001	 mov         r0, #1
  003bc	eaffff46	 b           |$L16625|
  003c0		 |$L16814|

; 514  :                 break;
; 515  : 
; 516  :             case ILTIMING_MSG_DISABLE:
; 517  :                 RETAILMSG(1, (TEXT("ILTiming Disable\r\n")));

  003c0	e59f0a00	 ldr         r0, [pc, #0xA00]
  003c4	eb000000	 bl          NKDbgPrintfW

; 518  :                 fIntrTime = FALSE;

  003c8	e59f39ec	 ldr         r3, [pc, #0x9EC]

; 519  :                 break;

  003cc	ea000249	 b           |$L16996|
  003d0		 |$L16812|

; 504  :             case ILTIMING_MSG_ENABLE:
; 505  :                 dwIntrTimeCountdownRef = pITM->dwFrequency;

  003d0	e5953010	 ldr         r3, [r5, #0x10]
  003d4	e59f49e8	 ldr         r4, [pc, #0x9E8]

; 506  :                 RETAILMSG(1,
; 507  :                           (TEXT("ILTiming Enable (@ every %d ticks)\r\n"),
; 508  :                            dwIntrTimeCountdownRef));

  003d8	e59f09e0	 ldr         r0, [pc, #0x9E0]
  003dc	e1a01003	 mov         r1, r3
  003e0	e5843000	 str         r3, [r4]
  003e4	eb000000	 bl          NKDbgPrintfW

; 509  : 
; 510  :                 dwIntrTimeCountdown = dwIntrTimeCountdownRef;
; 511  :                 wNumInterrupts = 0;
; 512  :                 dwIsrTime1 = 0xFFFFFFFF;
; 513  :                 fIntrTime = TRUE;

  003e8	e59f09cc	 ldr         r0, [pc, #0x9CC]
  003ec	e594e000	 ldr         lr, [r4]
  003f0	e59f39c0	 ldr         r3, [pc, #0x9C0]
  003f4	e59f29b8	 ldr         r2, [pc, #0x9B8]
  003f8	e59f19b0	 ldr         r1, [pc, #0x9B0]
  003fc	e3a06001	 mov         r6, #1
  00400	e3a04000	 mov         r4, #0
  00404	e3e05000	 mvn         r5, #0
  00408	e5806000	 str         r6, [r0]
  0040c	e583e000	 str         lr, [r3]

; 828  : 			}
; 829  : 		}
; 830  : 
; 831  : 		break;
; 832  : 
; 833  : 
; 834  : #ifdef EP93XX_SIMULAT_PS2_KBD
; 835  : 
; 836  : 	case IOCTL_HAL_PS2_SEND:
; 837  : 		return SendDataToPS2( lpInBuf ,nInBufSize );
; 838  : 		break;
; 839  : 	case IOCTL_HAL_PS2_GET:
; 840  : 		return ReadPS2Data(lpOutBuf, nOutBufSize, lpBytesReturned );
; 841  : 		break;
; 842  : #endif
; 843  : 
; 844  : #ifdef EDB9315A_CIR
; 845  : 	case IOCTL_HAL_PIO_CIR:
; 846  : 		return GetKeyName( lpOutBuf, nOutBufSize, lpBytesReturned );
; 847  : 		break;
; 848  : #endif
; 849  : 
; 850  :     }
; 851  : 
; 852  :     return(TRUE);

  00410	e3a00001	 mov         r0, #1
  00414	e1c240b0	 strh        r4, [r2]
  00418	e5815000	 str         r5, [r1]
  0041c	eaffff2e	 b           |$L16625|
  00420		 |$L16805|

; 499  :                 SetLastError(ERROR_INVALID_PARAMETER);

  00420	e59f38ec	 ldr         r3, [pc, #0x8EC]
  00424	e3a00057	 mov         r0, #0x57
  00428	e1a0e00f	 mov         lr, pc
  0042c	e12fff13	 bx          r3

; 500  :                 return(FALSE);

  00430	eaffff28	 b           |$L16908|
  00434		 |$L16755|

; 404  :         return TRUE;
; 405  : 
; 406  :     case IOCTL_HAL_REBOOT:
; 407  :         //
; 408  :         // Perform a warm reset of the device.
; 409  :         //
; 410  :         RETAILMSG(1, (TEXT("Performing warm reset.\r\n")));

  00434	e59f0970	 ldr         r0, [pc, #0x970]
  00438	eb000000	 bl          NKDbgPrintfW

; 411  :         //
; 412  :         // Trun on the red LED
; 413  :         //
; 414  :     	*GPIO_PEDR  |= 0x02;

  0043c	e59f0964	 ldr         r0, [pc, #0x964]

; 415  :     	//
; 416  :     	// Trun on the watchdog.
; 417  :     	//
; 418  :         *WATCHDOG_WDCONTROL = 0xAAAA;

  00440	e3a0120b	 mov         r1, #0xB, 4
  00444	e3a02caa	 mov         r2, #0xAA, 24
  00448	e5903000	 ldr         r3, [r0]
  0044c	e3811725	 orr         r1, r1, #0x25, 14
  00450	e38220aa	 orr         r2, r2, #0xAA
  00454	e3833002	 orr         r3, r3, #2
  00458	e5803000	 str         r3, [r0]
  0045c	e5812000	 str         r2, [r1]
  00460		 |$L16760|

; 419  :         while(1){};

  00460	eafffffe	 b           |$L16760|
  00464		 |$L16773|

; 435  : 
; 436  :         break;
; 437  : 
; 438  :     case IOCTL_HAL_GET_DEVICEID :
; 439  :         {
; 440  :             PDEVICE_ID  pDeviceID = (PDEVICE_ID)lpOutBuf;
; 441  : 
; 442  : 			#define OAL_MAX_PLAT_ID		10
; 443  : 
; 444  : 			#define ROUNDUP(len)        ((len+3)&0xFFFFFFFC)
; 445  : 			#define REQ_SIZE            (ROUNDUP(sizeof(DEVICE_ID)) + ROUNDUP(sizeof(HALPresetID)) + ROUNDUP(OAL_MAX_PLAT_ID))
; 446  : 
; 447  : 
; 448  :             if (lpBytesReturned) {

  00464	e59d304c	 ldr         r3, [sp, #0x4C]
  00468	e3a0203c	 mov         r2, #0x3C
  0046c	e3530000	 cmp         r3, #0

; 449  : 
; 450  :                 *lpBytesReturned = REQ_SIZE;

  00470	15832000	 strne       r2, [r3]

; 451  :             }
; 452  : 
; 453  : 			if (!lpOutBuf || nOutBufSize < sizeof( DEVICE_ID ) ) {

  00474	e3560000	 cmp         r6, #0
  00478	0a00002d	 beq         |$L16780|
  0047c	e59d3048	 ldr         r3, [sp, #0x48]
  00480	e3530014	 cmp         r3, #0x14
  00484	3a00002a	 bcc         |$L16780|

; 456  : 			}
; 457  : 
; 458  :             pDeviceID->dwSize = REQ_SIZE;

  00488	e5862000	 str         r2, [r6]

⌨️ 快捷键说明

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