📄 halether.cod
字号:
ENDP ; |OEMEthISR|
EXPORT |OEMEthGetFrame|
IMPORT |VBridgeKIndicateOneRxBuffer|
00000 AREA |.text| { |OEMEthGetFrame| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMEthGetFrame|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthGetFrame| } ; comdat associative
|$T14506| DCD |OEMEthGetFrame|
DCD 0x40002c02
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMEthGetFrame| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMEthGetFrame| PROC
; 480 : {
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M14504|
00008 e1a08000 mov r8, r0
0000c e1a07001 mov r7, r1
; 481 :
; 482 : #ifdef IMGSHAREETH
; 483 : BOOL bStatus;
; 484 : BOOL bTaken;
; 485 : UINT16 wOriginalLength;
; 486 :
; 487 :
; 488 : ProcessVMiniSend();
00010 eb000000 bl ProcessVMiniSend
; 489 :
; 490 : //
; 491 : // ne2000 ether library has a minor problem of returning incorrect
; 492 : // Ethernet packet size if we give it buffer > max Ether MTU.
; 493 : // So, pass in only ether MTU if the incoming buffer is greater
; 494 : // than ether MTU.
; 495 : //
; 496 :
; 497 : if (*pwLength >= 1514)
00014 e1d730b0 ldrh r3, [r7]
00018 e3a05e5e mov r5, #0x5E, 28
; 498 : wOriginalLength = 1514;
; 499 : else
; 500 : wOriginalLength = *pwLength;
; 501 :
; 502 : while (1)
; 503 : {
; 504 : *pwLength = wOriginalLength;
; 505 :
; 506 : bStatus = pfnEDbgGetFrame(pData, pwLength);
0001c e59f4088 ldr r4, [pc, #0x88]
00020 e1a00803 mov r0, r3, lsl #16
00024 e385500a orr r5, r5, #0xA
00028 e1550820 cmp r5, r0, lsr #16
0002c 81a05003 movhi r5, r3
00030 e1c750b0 strh r5, [r7]
00034 e1a01007 mov r1, r7
00038 e5942000 ldr r2, [r4]
0003c e1a00008 mov r0, r8
00040 e1a0e00f mov lr, pc
00044 e12fff12 bx r2
00048 ea00000f b |$L14503|
0004c |$L14220|
; 507 :
; 508 : if (bStatus)
; 509 : {
; 510 : VBridgeKIndicateOneRxBuffer(pData, *pwLength, FALSE, &bTaken);
0004c e1d700b0 ldrh r0, [r7]
00050 e28d3000 add r3, sp, #0
00054 e3a02000 mov r2, #0
00058 e1a01800 mov r1, r0, lsl #16
0005c e1a01821 mov r1, r1, lsr #16
00060 e1a00008 mov r0, r8
00064 eb000000 bl VBridgeKIndicateOneRxBuffer
; 511 : if (!bTaken)
00068 e59d3000 ldr r3, [sp]
0006c e3530000 cmp r3, #0
00070 0a000009 beq |$L14213|
00074 e1c750b0 strh r5, [r7]
00078 e1a01007 mov r1, r7
0007c e5942000 ldr r2, [r4]
00080 e1a00008 mov r0, r8
00084 e1a0e00f mov lr, pc
00088 e12fff12 bx r2
0008c |$L14503|
0008c e1a01800 mov r1, r0, lsl #16
00090 e1b06821 movs r6, r1, lsr #16
00094 1affffec bne |$L14220|
; 513 : }
; 514 : else
; 515 : break;
; 516 : }
; 517 :
; 518 : return (FALSE);
00098 e3a06000 mov r6, #0
0009c |$L14213|
; 512 : return bStatus;
0009c e1a00006 mov r0, r6
; 519 : #else
; 520 :
; 521 : return (pfnEDbgGetFrame(pData, pwLength));
; 522 :
; 523 : #endif
; 524 :
; 525 : }
000a0 e28dd004 add sp, sp, #4
000a4 e8bd41f0 ldmia sp!, {r4 - r8, lr}
000a8 e12fff1e bx lr
000ac |$L14508|
000ac 00000000 DCD |pfnEDbgGetFrame|
000b0 |$M14505|
ENDP ; |OEMEthGetFrame|
EXPORT |??_C@_0CE@LGOH@?$CBOEMEthSendFrame?5failure?0?5retry?5@| [ DATA ] ; `string'
EXPORT |OEMEthSendFrame|
00000 AREA |.text| { |OEMEthSendFrame| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMEthSendFrame|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthSendFrame| } ; comdat associative
|$T14520| DCD |OEMEthSendFrame|
DCD 0x40001c01
00000 AREA |.rdata| { |??_C@_0CE@LGOH@?$CBOEMEthSendFrame?5failure?0?5retry?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CE@LGOH@?$CBOEMEthSendFrame?5failure?0?5retry?5@| DCB "!OEMEthSen"
DCB "dFrame failure, retry %u", 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMEthSendFrame| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMEthSendFrame| PROC
; 538 : {
00000 e92d41f0 stmdb sp!, {r4 - r8, lr}
00004 |$M14518|
00004 e1a06000 mov r6, r0
00008 e1a05001 mov r5, r1
; 539 : int retries = 0;
0000c e59f4058 ldr r4, [pc, #0x58]
00010 e3a08000 mov r8, #0
00014 e1a07008 mov r7, r8
00018 |$L14232|
; 540 : while ( retries++ < 4 ) {
; 541 : if ( !pfnEDbgSendFrame(pData, dwLength) )
00018 e5942000 ldr r2, [r4]
0001c e1a01005 mov r1, r5
00020 e1a00006 mov r0, r6
00024 e2877001 add r7, r7, #1
00028 e1a0e00f mov lr, pc
0002c e12fff12 bx r2
00030 e1a01800 mov r1, r0, lsl #16
00034 e1b02821 movs r2, r1, lsr #16
00038 0a000005 beq |$L14512|
; 548 : }
; 549 : else
; 550 : EdbgOutputDebugString("!OEMEthSendFrame failure, retry %u\n",retries);
0003c e59f0024 ldr r0, [pc, #0x24]
00040 e1a01007 mov r1, r7
00044 eb000000 bl EdbgOutputDebugString
00048 e3570004 cmp r7, #4
0004c bafffff1 blt |$L14232|
; 540 : while ( retries++ < 4 ) {
; 541 : if ( !pfnEDbgSendFrame(pData, dwLength) )
00050 ea000001 b |$L14229|
00054 |$L14512|
; 542 : {
; 543 :
; 544 : #ifdef IMGSHAREETH
; 545 : ProcessVMiniSend();
00054 eb000000 bl ProcessVMiniSend
; 546 : #endif
; 547 : return (TRUE);
00058 e3a08001 mov r8, #1
0005c |$L14229|
0005c e1a00008 mov r0, r8
; 551 : }
; 552 : return (FALSE);
; 553 : }
00060 e8bd41f0 ldmia sp!, {r4 - r8, lr}
00064 e12fff1e bx lr
00068 |$L14522|
00068 00000000 DCD |??_C@_0CE@LGOH@?$CBOEMEthSendFrame?5failure?0?5retry?5@|
0006c 00000000 DCD |pfnEDbgSendFrame|
00070 |$M14519|
ENDP ; |OEMEthSendFrame|
EXPORT |??_C@_0BI@FCKF@OEMEthQueryClientInfo?$AN?6?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0BC@MIFL@EDBG_SVC_DBGMSG?$AN?6?$AA@| [ DATA ] ; `string'
EXPORT |OEMEthQueryClientInfo|
EXPORT |??_C@_0BI@DJOE@pPeerAddr?5IP?3?5?5?5?5?5?5?$CFs?$AN?6?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0BI@EBGG@pPeerAddr?5wMAC?$FL0?$FN?3?5?$CFx?$AN?6?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0BI@JEI@pPeerAddr?5wMAC?$FL1?$FN?3?5?$CFx?$AN?6?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0BI@NBDL@pPeerAddr?5wMAC?$FL2?$FN?3?5?$CFx?$AN?6?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0BI@LMON@pPeerAddr?5wPort?3?5?5?5?$CFx?$AN?6?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0BI@POAJ@ppBufferPool?3?5?5?5?5?5?5?$CFx?$AN?6?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0BA@ICIM@EDBG_SVC_PPSH?$AN?6?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0BA@BHAI@EDBG_SVC_KDBG?$AN?6?$AA@| [ DATA ] ; `string'
IMPORT |inet_ntoa|
00000 AREA |.text| { |OEMEthQueryClientInfo| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMEthQueryClientInfo|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthQueryClientInfo| } ; comdat associative
|$T14534| DCD |OEMEthQueryClientInfo|
DCD 0x40009c01
00000 AREA |.rdata| { |??_C@_0BI@FCKF@OEMEthQueryClientInfo?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@FCKF@OEMEthQueryClientInfo?$AN?6?$AA@| DCB "OEMEthQueryClientI"
DCB "nfo", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BA@BHAI@EDBG_SVC_KDBG?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BA@BHAI@EDBG_SVC_KDBG?$AN?6?$AA@| DCB "EDBG_SVC_KDBG", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BI@DJOE@pPeerAddr?5IP?3?5?5?5?5?5?5?$CFs?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@DJOE@pPeerAddr?5IP?3?5?5?5?5?5?5?$CFs?$AN?6?$AA@| DCB "pPeerAd"
DCB "dr IP: %s", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BI@EBGG@pPeerAddr?5wMAC?$FL0?$FN?3?5?$CFx?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@EBGG@pPeerAddr?5wMAC?$FL0?$FN?3?5?$CFx?$AN?6?$AA@| DCB "pPeerA"
DCB "ddr wMAC[0]: %x", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BI@JEI@pPeerAddr?5wMAC?$FL1?$FN?3?5?$CFx?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@JEI@pPeerAddr?5wMAC?$FL1?$FN?3?5?$CFx?$AN?6?$AA@| DCB "pPeerAd"
DCB "dr wMAC[1]: %x", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BI@NBDL@pPeerAddr?5wMAC?$FL2?$FN?3?5?$CFx?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@NBDL@pPeerAddr?5wMAC?$FL2?$FN?3?5?$CFx?$AN?6?$AA@| DCB "pPeerA"
DCB "ddr wMAC[2]: %x", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BI@LMON@pPeerAddr?5wPort?3?5?5?5?$CFx?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@LMON@pPeerAddr?5wPort?3?5?5?5?$CFx?$AN?6?$AA@| DCB "pPeerAddr "
DCB "wPort: %x", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BA@ICIM@EDBG_SVC_PPSH?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BA@ICIM@EDBG_SVC_PPSH?$AN?6?$AA@| DCB "EDBG_SVC_PPSH", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BC@MIFL@EDBG_SVC_DBGMSG?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BC@MIFL@EDBG_SVC_DBGMSG?$AN?6?$AA@| DCB "EDBG_SVC_DBGMSG", 0xd, 0xa
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0BI@POAJ@ppBufferPool?3?5?5?5?5?5?5?$CFx?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@POAJ@ppBufferPool?3?5?5?5?5?5?5?$CFx?$AN?6?$AA@| DCB "ppBuffer"
DCB "Pool: %x", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMEthQueryClientInfo| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMEthQueryClientInfo| PROC
; 582 : {
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M14532|
00004 e1a05000 mov r5, r0
00008 e1a06001 mov r6, r1
0000c e1a04002 mov r4, r2
00010 e1a07003 mov r7, r3
; 583 : EdbgOutputDebugString("OEMEthQueryClientInfo\r\n");
00014 e59f0250 ldr r0, [pc, #0x250]
00018 eb000000 bl EdbgOutputDebugString
; 584 :
; 585 : // We use the default window size (8) for all services
; 586 : *pWindowSize = EDBG_WINDOW_SIZE;
0001c e3a03008 mov r3, #8
; 587 :
; 588 : switch (Service)
; 589 : {
00020 e20500ff and r0, r5, #0xFF
00024 e5c43000 strb r3, [r4]
00028 e3500000 cmp r0, #0
0002c 0a000052 beq |$L14251|
00030 e3500001 cmp r0, #1
00034 0a00002a beq |$L14270|
00038 e3500002 cmp r0, #2
0003c 0a000002 beq |$L14283|
00040 |$L14531|
; 633 : default:
; 634 : return FALSE;
00040 e3a00000 mov r0, #0
; 637 : }
00044 e8bd40f0 ldmia sp!, {r4 - r7, lr}
00048 e12fff1e bx lr
0004c |$L14283|
; 619 : case EDBG_SVC_KDBG:
; 620 : EdbgOutputDebugString("EDBG_SVC_KDBG\r\n");
0004c e59f0214 ldr r0, [pc, #0x214]
00050 eb000000 bl EdbgOutputDebugString
; 621 : if (! (pDriverGlobals->eth.etherFlags & EDBG_FL_KDBG)) {
00054 e59f31f0 ldr r3, [pc, #0x1F0]
00058 e5d30000 ldrb r0, [r3]
0005c e3100004 tst r0, #4
; 622 : return FALSE;
00060 0afffff6 beq |$L14531|
; 623 : }
; 624 : memcpy(pPeerAddr, (void *)&pDriverGlobals->eth.KdbgHostAddr,sizeof(EDBG_ADDR));
00064 e59f11f8 ldr r1, [pc, #0x1F8]
00068 e3a0200c mov r2, #0xC
0006c e1a00006 mov r0, r6
00070 eb000000 bl memcpy
; 625 : EdbgOutputDebugString("pPeerAddr IP: %s\r\n", inet_ntoa(pPeerAddr->dwIP));
00074 e5960000 ldr r0, [r6]
00078 eb000000 bl inet_ntoa
0007c e1a01000 mov r1, r0
00080 e59f01bc ldr r0, [pc, #0x1BC]
00084 eb000000 bl EdbgOutputDebugString
; 626 : EdbgOutputDebugString("pPeerAddr wMAC[0]: %x\r\n", (unsigned long)(pPeerAddr->wMAC[0]));
00088 e1d630b4 ldrh r3, [r6, #4]
0008c e1a00803 mov r0, r3, lsl #16
00090 e1a01820 mov r1, r0, lsr #16
00094 e59f01a4 ldr r0, [pc, #0x1A4]
00098 eb000000 bl EdbgOutputDebugString
; 627 : EdbgOutputDebugString("pPeerAddr wMAC[1]: %x\r\n", (unsigned long)(pPeerAddr->wMAC[1]));
0009c e1d630b6 ldrh r3, [r6, #6]
000a0 e1a00803 mov r0, r3, lsl #16
000a4 e1a01820 mov r1, r0, lsr #16
000a8 e59f018c ldr r0, [pc, #0x18C]
000ac eb000000 bl EdbgOutputDebugString
; 628 : EdbgOutputDebugString("pPeerAddr wMAC[2]: %x\r\n", (unsigned long)(pPeerAddr->wMAC[2]));
000b0 e1d630b8 ldrh r3, [r6, #8]
000b4 e1a00803 mov r0, r3, lsl #16
000b8 e1a01820 mov r1, r0, lsr #16
000bc e59f0174 ldr r0, [pc, #0x174]
000c0 eb000000 bl EdbgOutputDebugString
; 629 : EdbgOutputDebugString("pPeerAddr wPort: %x\r\n", (unsigned long)(pPeerAddr->wPort));
000c4 e1d630ba ldrh r3, [r6, #0xA]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -