📄 oemioctl.cod
字号:
; 459 :
; 460 : if( nOutBufSize < REQ_SIZE )
0048c e353003c cmp r3, #0x3C
00490 2a000004 bcs |$L16785|
; 461 : {
; 462 : SetLastError(ERROR_INSUFFICIENT_BUFFER);
00494 e59f3878 ldr r3, [pc, #0x878]
00498 e3a0007a mov r0, #0x7A
0049c e1a0e00f mov lr, pc
004a0 e12fff13 bx r3
; 463 : return FALSE;
004a4 eaffff0b b |$L16908|
004a8 |$L16785|
; 464 : }
; 465 : else
; 466 : {
; 467 : // Tell them how much we actually used.
; 468 : pDeviceID->dwPresetIDOffset = ROUNDUP(sizeof(DEVICE_ID));
; 469 : pDeviceID->dwPresetIDBytes = sizeof(HALPresetID);
; 470 : memcpy ((PBYTE)lpOutBuf + pDeviceID->dwPresetIDOffset, (PBYTE)HALPresetID, sizeof(HALPresetID));
004a8 e59f38f4 ldr r3, [pc, #0x8F4]
004ac e3a0e014 mov lr, #0x14
004b0 e3a0401c mov r4, #0x1C
004b4 e2831010 add r1, r3, #0x10
004b8 e2860014 add r0, r6, #0x14
004bc e3a0201c mov r2, #0x1C
004c0 e586e004 str lr, [r6, #4]
004c4 e5864008 str r4, [r6, #8]
004c8 eb000000 bl memcpy
; 471 :
; 472 : pDeviceID->dwPlatformIDOffset = pDeviceID->dwPresetIDOffset + ROUNDUP(pDeviceID->dwPresetIDBytes);
004cc e5963008 ldr r3, [r6, #8]
004d0 e5962004 ldr r2, [r6, #4]
; 473 : pDeviceID->dwPlatformIDBytes = OAL_MAX_PLAT_ID;
004d4 e3a0e00a mov lr, #0xA
004d8 e2833003 add r3, r3, #3
004dc e3c33003 bic r3, r3, #3
004e0 e0833002 add r3, r3, r2
; 474 :
; 475 : memset( (PBYTE)lpOutBuf + pDeviceID->dwPlatformIDOffset, 0, OAL_MAX_PLAT_ID );
004e4 e0830006 add r0, r3, r6
004e8 e3a0200a mov r2, #0xA
004ec e3a01000 mov r1, #0
004f0 e586300c str r3, [r6, #0xC]
004f4 e586e010 str lr, [r6, #0x10]
004f8 eb000000 bl memset
; 476 :
; 477 : itoa10( ((pDriverGlobals->eth.EdbgAddr.wMAC[2]>>8)
; 478 : | ((pDriverGlobals->eth.EdbgAddr.wMAC[2]& 0x00ff) << 8))
; 479 : , (PBYTE)lpOutBuf + pDeviceID->dwPlatformIDOffset );
004fc e59f189c ldr r1, [pc, #0x89C]
00500 e596200c ldr r2, [r6, #0xC]
00504 e1d130b0 ldrh r3, [r1]
00508 e5d10001 ldrb r0, [r1, #1]
0050c e0821006 add r1, r2, r6
00510 e20330ff and r3, r3, #0xFF
00514 e1800403 orr r0, r0, r3, lsl #8
00518 eb000000 bl itoa10
; 480 :
; 481 : // sprintf( (PBYTE)lpOutBuf + pDeviceID->dwPlatformIDOffset, "%08x" ,pDriverGlobals->eth.EdbgAddr.wMAC[3] );
; 482 :
; 483 : //CreateDeviceName(&pDriverGlobals->eth.EdbgAddr, (PBYTE)lpOutBuf + pDeviceID->dwPlatformIDOffset, "ARMINT");
; 484 :
; 485 : SetLastError( 0 );
0051c e59f37f0 ldr r3, [pc, #0x7F0]
00520 e3a00000 mov r0, #0
00524 e1a0e00f mov lr, pc
00528 e12fff13 bx 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);
0052c e3a00001 mov r0, #1
00530 eafffee9 b |$L16625|
00534 |$L16780|
; 454 : SetLastError(ERROR_INVALID_PARAMETER);
00534 e59f37d8 ldr r3, [pc, #0x7D8]
00538 e3a00057 mov r0, #0x57
0053c e1a0e00f mov lr, pc
00540 e12fff13 bx r3
; 455 : return(FALSE);
00544 eafffee3 b |$L16908|
00548 |$L16960|
; 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) {
00548 e59f384c ldr r3, [pc, #0x84C]
0054c e1500003 cmp r0, r3
00550 8a00007d bhi |$L16962|
00554 0a000071 beq |$L16831|
00558 e59f3838 ldr r3, [pc, #0x838]
0055c e1500003 cmp r0, r3
00560 0a00005e beq |$L16762|
00564 e59f3828 ldr r3, [pc, #0x828]
00568 e1500003 cmp r0, r3
0056c 0a000015 beq |$L16659|
00570 e59f3818 ldr r3, [pc, #0x818]
00574 e1500003 cmp r0, r3
00578 0a000007 beq |$L16824|
0057c e59f3808 ldr r3, [pc, #0x808]
00580 e1500003 cmp r0, r3
00584 1a0001a6 bne |$L16926|
; 559 :
; 560 : case IOCTL_VBRIDGE_GET_TX_PACKET_COMPLETE:
; 561 : VBridgeUGetOneTxPacketComplete((PUCHAR)lpInBuf, nInBufSize);
00588 e1a0100e mov r1, lr
0058c e1a00005 mov r0, r5
00590 eb000000 bl VBridgeUGetOneTxPacketComplete
; 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);
00594 e3a00001 mov r0, #1
00598 eafffecf b |$L16625|
0059c |$L16824|
; 544 : }
; 545 : }
; 546 : break;
; 547 :
; 548 : #if IMGSHAREETH
; 549 :
; 550 : ////////////////////////////////////////////////////////////////////////
; 551 : // The support for VMini..
; 552 : //
; 553 : case IOCTL_VBRIDGE_GET_TX_PACKET:
; 554 : if (lpOutBuf)
0059c e3560000 cmp r6, #0
005a0 0a000003 beq |$L16825|
; 555 : return VBridgeUGetOneTxPacket((PUCHAR *)lpOutBuf, nInBufSize);
005a4 e1a0100e mov r1, lr
005a8 e1a00006 mov r0, r6
005ac eb000000 bl VBridgeUGetOneTxPacket
005b0 eafffec9 b |$L16625|
005b4 |$L16825|
; 556 :
; 557 : SetLastError(ERROR_INVALID_PARAMETER);
005b4 e59f3758 ldr r3, [pc, #0x758]
005b8 e3a00057 mov r0, #0x57
005bc e1a0e00f mov lr, pc
005c0 e12fff13 bx r3
; 558 : return FALSE;
005c4 eafffec3 b |$L16908|
005c8 |$L16659|
; 211 : }
; 212 :
; 213 : break;
; 214 :
; 215 : case IOCTL_PROCESSOR_INFORMATION:
; 216 : if (!lpOutBuf) {
005c8 e3560000 cmp r6, #0
005cc 1a000004 bne |$L16660|
; 217 : SetLastError(ERROR_INVALID_PARAMETER);
005d0 e59f373c ldr r3, [pc, #0x73C]
005d4 e3a00057 mov r0, #0x57
005d8 e1a0e00f mov lr, pc
005dc e12fff13 bx r3
; 218 : return FALSE;
005e0 eafffebc b |$L16908|
005e4 |$L16660|
; 219 : }
; 220 :
; 221 : if (sizeof(PROCESSOR_INFO) > nOutBufSize) {
005e4 e59d3048 ldr r3, [sp, #0x48]
005e8 e3530d09 cmp r3, #9, 26
005ec 2a000004 bcs |$L16664|
; 222 : SetLastError(ERROR_INSUFFICIENT_BUFFER);
005f0 e59f371c ldr r3, [pc, #0x71C]
005f4 e3a0007a mov r0, #0x7A
005f8 e1a0e00f mov lr, pc
005fc e12fff13 bx r3
; 223 : return FALSE;
00600 eafffeb4 b |$L16908|
00604 |$L16664|
; 224 : } else {
; 225 : const WCHAR OEMProcCore[] = L"ARM";
00604 e59f377c ldr r3, [pc, #0x77C]
; 226 : const WCHAR OEMProcName[] = L"ARM920T";
00608 e59f5774 ldr r5, [pc, #0x774]
; 227 : const WCHAR OEMProcVendor[] = L"ARM Ltd.";
0060c e59f176c ldr r1, [pc, #0x76C]
00610 e5932000 ldr r2, [r3]
00614 e5950000 ldr r0, [r5]
00618 e595e004 ldr lr, [r5, #4]
0061c e5954008 ldr r4, [r5, #8]
00620 e5933004 ldr r3, [r3, #4]
00624 e595500c ldr r5, [r5, #0xC]
00628 e58d2008 str r2, [sp, #8]
0062c e58d0010 str r0, [sp, #0x10]
00630 e28d0020 add r0, sp, #0x20
00634 e3a02012 mov r2, #0x12
00638 e58d300c str r3, [sp, #0xC]
0063c e58de014 str lr, [sp, #0x14]
00640 e58d4018 str r4, [sp, #0x18]
00644 e58d501c str r5, [sp, #0x1C]
00648 eb000000 bl memcpy
; 228 : PPROCESSOR_INFO pProcInfo = (PPROCESSOR_INFO)lpOutBuf;
; 229 :
; 230 : if (lpBytesReturned) *lpBytesReturned = sizeof(PROCESSOR_INFO);
0064c e59d304c ldr r3, [sp, #0x4C]
; 231 : memset(pProcInfo, 0, *lpBytesReturned);
00650 e3a01000 mov r1, #0
00654 e1a00006 mov r0, r6
00658 e3530000 cmp r3, #0
0065c 13a02d09 movne r2, #9, 26
00660 15832000 strne r2, [r3]
00664 e5932000 ldr r2, [r3]
00668 eb000000 bl memset
; 232 :
; 233 : pProcInfo->wVersion = 1;
0066c e3a03001 mov r3, #1
; 234 :
; 235 : memcpy(pProcInfo->szProcessCore, OEMProcCore, (strlenW(OEMProcCore) + 1) * sizeof(WCHAR));
00670 e1a04006 mov r4, r6
00674 e28d0008 add r0, sp, #8
00678 e0c430b2 strh r3, [r4], #2
0067c eb000000 bl strlenW
00680 e2802001 add r2, r0, #1
00684 e1a02082 mov r2, r2, lsl #1
00688 e28d1008 add r1, sp, #8
0068c e1a00004 mov r0, r4
00690 eb000000 bl memcpy
; 236 : memcpy(pProcInfo->szProcessorName, OEMProcName, (strlenW(OEMProcName) + 1) * sizeof(WCHAR));
00694 e28d0010 add r0, sp, #0x10
00698 eb000000 bl strlenW
0069c e2802001 add r2, r0, #1
006a0 e1a02082 mov r2, r2, lsl #1
006a4 e28d1010 add r1, sp, #0x10
006a8 e2860054 add r0, r6, #0x54
006ac eb000000 bl memcpy
; 237 : memcpy(pProcInfo->szVendor, OEMProcVendor, (strlenW(OEMProcVendor) + 1 ) * sizeof(WCHAR));
006b0 e28d0020 add r0, sp, #0x20
006b4 eb000000 bl strlenW
006b8 e2802001 add r2, r0, #1
006bc e2863c01 add r3, r6, #1, 24
006c0 e1a02082 mov r2, r2, lsl #1
006c4 e28d1020 add r1, sp, #0x20
006c8 e283006e add r0, r3, #0x6E
006cc eb000000 bl memcpy
; 238 :
; 239 : pProcInfo->dwInstructionSet = PROCESSOR_16BITINSTRUCTION;
006d0 e3a03004 mov r3, #4
006d4 e5863238 str r3, [r6, #0x238]
; 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);
006d8 e3a00001 mov r0, #1
006dc eafffe7e b |$L16625|
006e0 |$L16762|
; 420 :
; 421 : return FALSE;
; 422 : break;
; 423 :
; 424 : case IOCTL_QUERY_PHYSICALMEM:
; 425 : if (!lpOutBuf || nOutBufSize < sizeof(PHYSICAL_BASIC_INFORMATION))
006e0 e3560000 cmp r6, #0
006e4 0a000008 beq |$L16765|
006e8 e59d3048 ldr r3, [sp, #0x48]
006ec e353000c cmp r3, #0xC
; 429 : }
; 430 :
; 431 : // Return information about physical memory
; 432 : ((PPHYSICAL_BASIC_INFORMATION)lpOutBuf)->lpBaseAddress = (LPVOID)0;
; 433 : ((PPHYSICAL_BASIC_INFORMATION)lpOutBuf)->dwRegionSize = 0x00000000;
; 434 : ((PPHYSICAL_BASIC_INFORMATION)lpOutBuf)->dwType = PHYSICAL_UNKNOWN;
006f0 23a03008 movcs r3, #8
006f4 23a02000 movcs r2, #0
006f8 25863008 strcs r3, [r6, #8]
006fc 25862000 strcs r2, [r6]
00700 25862004 strcs r2, [r6, #4]
; 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -