📄 halether.cod
字号:
00258 e1a02820 mov r2, r0, lsr #16
0025c e1a00801 mov r0, r1, lsl #16
00260 e1d610b4 ldrh r1, [r6, #4]
00264 e1a03820 mov r3, r0, lsr #16
00268 e1a00801 mov r0, r1, lsl #16
0026c e1a01422 mov r1, r2, lsr #8
00270 e1a04820 mov r4, r0, lsr #16
00274 e58d1008 str r1, [sp, #8]
00278 e20200ff and r0, r2, #0xFF
0027c e1a01423 mov r1, r3, lsr #8
00280 e58d0004 str r0, [sp, #4]
00284 e58d1000 str r1, [sp]
00288 e20330ff and r3, r3, #0xFF
0028c e59f0024 ldr r0, [pc, #0x24]
00290 e1a02424 mov r2, r4, lsr #8
00294 e20410ff and r1, r4, #0xFF
00298 eb000000 bl EdbgOutputDebugString
; 336 :
; 337 : #ifdef IMGSHAREETH
; 338 : VBridgeInit();
0029c eb000000 bl VBridgeInit
; 339 : VBridgeKSetLocalMacAddress((char *)wLocalMAC);
002a0 e1a00005 mov r0, r5
002a4 eb000000 bl VBridgeKSetLocalMacAddress
; 340 : #endif
; 341 :
; 342 :
; 343 :
; 344 : // Enable filtering of broadcast packets (all except ARP packets) to reduce
; 345 : // overhead. We still have to take an interrupt, but the driver can
; 346 : // quickly determine whether a packet may be discarded without having to
; 347 : // copy all the data from the chip. Note that we cannot turn this option
; 348 : // on until DHCP is done processing, since some DHCP servers return
; 349 : // responses in broadcast frames.
; 350 :
; 351 : #ifndef IMGSHAREETH
; 352 : if (pAdapter->Addr.dwIP)
; 353 : pfnEDbgSetOptions(OPT_BROADCAST_FILTERING);
; 354 : #endif
; 355 :
; 356 : DEBUGMSG(1, (TEXT("-OEMEthInit\r\n")));
; 357 :
; 358 : return (TRUE);
002a8 e3a00001 mov r0, #1
002ac |$L14153|
; 359 : }
002ac e28dd00c add sp, sp, #0xC
002b0 e8bd40f0 ldmia sp!, {r4 - r7, lr}
002b4 e12fff1e bx lr
002b8 |$L14460|
002b8 00000000 DCD |??_C@_0EB@CCJL@Debug?5Ethernet?5card?5initialized?0@|
002bc 00000000 DCD |wLocalMAC|
002c0 00000000 DCD |??_C@_0FJ@FLNM@Invalid?5Ethernet?5address?5read?5fr@|
002c4 00000000 DCD |??_C@_0CG@LKBO@INFO?3?5EDBG?5using?5NE2000?5controll@|
002c8 00000000 DCD |NE2000MulticastList|
002cc 00000000 DCD |pfnMulticastList|
002d0 00000000 DCD |Ne2000CurrentPacketFilter|
002d4 00000000 DCD |pfnCurrentPacketFilter|
002d8 00000000 DCD |NE2000SetOptions|
002dc 00000000 DCD |pfnEDbgSetOptions|
002e0 00000000 DCD |NE2000WriteEEPROM|
002e4 00000000 DCD |pfnEDbgWriteEEPROM|
002e8 00000000 DCD |NE2000ReadEEPROM|
002ec 00000000 DCD |pfnEDbgReadEEPROM|
002f0 00000000 DCD |NE2000SendFrame|
002f4 00000000 DCD |pfnEDbgSendFrame|
002f8 00000000 DCD |NE2000GetFrame|
002fc 00000000 DCD |pfnEDbgGetFrame|
00300 00000000 DCD |NE2000GetPendingInts|
00304 00000000 DCD |pfnEDbgGetPendingInts|
00308 00000000 DCD |NE2000DisableInts|
0030c 00000000 DCD |pfnEDbgDisableInts|
00310 00000000 DCD |NE2000EnableInts|
00314 00000000 DCD |pfnEDbgEnableInts|
00318 00000000 DCD |pfnEDbgInit|
0031c 00000000 DCD |NE2000Init|
00320 00000000 DCD |??_C@_0CP@BOGC@INFO?3?5EDBG?5using?5Internal?5EP931x@|
00324 a0008818 DCD 0xa0008818
00328 a0008816 DCD 0xa0008816
0032c a0008814 DCD 0xa0008814
00330 00000000 DCD |??_C@_0DB@LMBN@ERROR?3?5Failed?5to?5Initialize?5CS89@|
00334 00000000 DCD |CS8950WriteEEPROM|
00338 00000000 DCD |CS8950ReadEEPROM|
0033c 00000000 DCD |CS8950SendFrame|
00340 00000000 DCD |CS8950GetFrame|
00344 00000000 DCD |CS8950GetPendingInterrupts|
00348 00000000 DCD |CS8950DisableInts|
0034c 00000000 DCD |CS8950EnableInts|
00350 00000000 DCD |CS8950Init|
00354 00000000 DCD |??_C@_0DF@PDDG@Unsupported?5debug?5Ethernet?5param@|
00358 a0008860 DCD 0xa0008860
0035c a000885c DCD 0xa000885c
00360 a0008858 DCD 0xa0008858
00364 a0008810 DCD 0xa0008810
00368 |$M14457|
ENDP ; |OEMEthInit|
EXPORT |OEMEthEnableInts|
00000 AREA |.text| { |OEMEthEnableInts| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMEthEnableInts|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthEnableInts| } ; comdat associative
|$T14465| DCD |OEMEthEnableInts|
DCD 0x40000901
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMEthEnableInts| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMEthEnableInts| PROC
; 368 : {
00000 e52de004 str lr, [sp, #-4]!
00004 |$M14463|
; 369 :
; 370 : if(pfnEDbgEnableInts)
00004 e59f0014 ldr r0, [pc, #0x14]
00008 e5901000 ldr r1, [r0]
0000c e3510000 cmp r1, #0
; 371 : {
; 372 : pfnEDbgEnableInts();
00010 11a0e00f movne lr, pc
00014 112fff11 bxne r1
; 373 : }
; 374 : }
00018 e8bd4000 ldmia sp!, {lr}
0001c e12fff1e bx lr
00020 |$L14467|
00020 00000000 DCD |pfnEDbgEnableInts|
00024 |$M14464|
ENDP ; |OEMEthEnableInts|
EXPORT |OEMEthDisableInts|
00000 AREA |.text| { |OEMEthDisableInts| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMEthDisableInts|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthDisableInts| } ; comdat associative
|$T14472| DCD |OEMEthDisableInts|
DCD 0x40000901
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMEthDisableInts| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMEthDisableInts| PROC
; 382 : {
00000 e52de004 str lr, [sp, #-4]!
00004 |$M14470|
; 383 : if(pfnEDbgDisableInts)
00004 e59f0014 ldr r0, [pc, #0x14]
00008 e5901000 ldr r1, [r0]
0000c e3510000 cmp r1, #0
; 384 : {
; 385 : pfnEDbgDisableInts();
00010 11a0e00f movne lr, pc
00014 112fff11 bxne r1
; 386 : }
; 387 : }
00018 e8bd4000 ldmia sp!, {lr}
0001c e12fff1e bx lr
00020 |$L14474|
00020 00000000 DCD |pfnEDbgDisableInts|
00024 |$M14471|
ENDP ; |OEMEthDisableInts|
EXPORT |ProcessVMiniSend|
IMPORT |VBridgeKGetOneTxBuffer|
IMPORT |VBridgeKGetOneTxBufferComplete|
00000 AREA |.text| { |ProcessVMiniSend| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ProcessVMiniSend|, PDATA, SELECTION=5, ASSOC=|.text| { |ProcessVMiniSend| } ; comdat associative
|$T14481| DCD |ProcessVMiniSend|
DCD 0x40003702
; Function compile flags: /Ogsy
00000 AREA |.text| { |ProcessVMiniSend| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ProcessVMiniSend| PROC
; 399 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 e24dd008 sub sp, sp, #8
00008 |$M14479|
; 400 : PBYTE pVMiniData;
; 401 : DWORD dwVMiniDataLength;
; 402 :
; 403 : ////////////////////////////////////////////////////////////////////////////
; 404 : // Handle the filter if we need to..
; 405 : //
; 406 : if (bNewFilter && pfnCurrentPacketFilter)
00008 e59f10c8 ldr r1, [pc, #0xC8]
0000c e3a04000 mov r4, #0
00010 e5910000 ldr r0, [r1]
00014 e3500000 cmp r0, #0
00018 159f00b4 ldrne r0, [pc, #0xB4]
0001c 15902000 ldrne r2, [r0]
00020 13520000 cmpne r2, #0
; 407 : {
; 408 : bNewFilter = FALSE;
; 409 : pfnCurrentPacketFilter(dwFilter);
00024 159f00a4 ldrne r0, [pc, #0xA4]
00028 15814000 strne r4, [r1]
0002c 15900000 ldrne r0, [r0]
00030 11a0e00f movne lr, pc
00034 112fff12 bxne r2
; 410 : }
; 411 :
; 412 : //
; 413 : // Handle new multicast list..
; 414 : //
; 415 :
; 416 : if (bNewMulticast && pfnMulticastList)
00038 e59f108c ldr r1, [pc, #0x8C]
0003c e5910000 ldr r0, [r1]
00040 e3500000 cmp r0, #0
00044 159f007c ldrne r0, [pc, #0x7C]
00048 15902000 ldrne r2, [r0]
0004c 13520000 cmpne r2, #0
; 417 : {
; 418 : bNewMulticast = FALSE;
; 419 : pfnMulticastList(
; 420 : (PUCHAR)ucMultiAddr,
; 421 : dwNoOfEntry);
00050 159f006c ldrne r0, [pc, #0x6C]
00054 15814000 strne r4, [r1]
00058 15901000 ldrne r1, [r0]
0005c 159f005c ldrne r0, [pc, #0x5C]
00060 11a0e00f movne lr, pc
00064 112fff12 bxne r2
; 422 : }
; 423 :
; 424 : ////////////////////////////////////////////////////////////////////////////
; 425 : // Consume all the client packets.
; 426 : //
; 427 : while (VBridgeKGetOneTxBuffer(&pVMiniData, &dwVMiniDataLength) == TRUE)
00068 e28d1004 add r1, sp, #4
0006c e28d0000 add r0, sp, #0
00070 eb000000 bl VBridgeKGetOneTxBuffer
00074 e3500001 cmp r0, #1
00078 1a00000c bne |$L14204|
0007c e59f4038 ldr r4, [pc, #0x38]
00080 |$L14203|
; 428 : {
; 429 : pfnEDbgSendFrame (pVMiniData, dwVMiniDataLength);
00080 e59d1004 ldr r1, [sp, #4]
00084 e59d0000 ldr r0, [sp]
00088 e5942000 ldr r2, [r4]
0008c e1a0e00f mov lr, pc
00090 e12fff12 bx r2
; 430 : VBridgeKGetOneTxBufferComplete(pVMiniData);
00094 e59d0000 ldr r0, [sp]
00098 eb000000 bl VBridgeKGetOneTxBufferComplete
0009c e28d1004 add r1, sp, #4
000a0 e28d0000 add r0, sp, #0
000a4 eb000000 bl VBridgeKGetOneTxBuffer
000a8 e3500001 cmp r0, #1
000ac 0afffff3 beq |$L14203|
000b0 |$L14204|
; 431 : }
; 432 :
; 433 : } // ProcessVMiniSend()
000b0 e28dd008 add sp, sp, #8
000b4 e8bd4010 ldmia sp!, {r4, lr}
000b8 e12fff1e bx lr
000bc |$L14483|
000bc 00000000 DCD |pfnEDbgSendFrame|
000c0 00000000 DCD |ucMultiAddr|
000c4 00000000 DCD |dwNoOfEntry|
000c8 00000000 DCD |pfnMulticastList|
000cc 00000000 DCD |bNewMulticast|
000d0 00000000 DCD |dwFilter|
000d4 00000000 DCD |pfnCurrentPacketFilter|
000d8 00000000 DCD |bNewFilter|
000dc |$M14480|
ENDP ; |ProcessVMiniSend|
EXPORT |OEMEthISR|
EXPORT |??_C@_01FIAI@X?$AA@| [ DATA ] ; `string'
00000 AREA |.text| { |OEMEthISR| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMEthISR|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthISR| } ; comdat associative
|$T14490| DCD |OEMEthISR|
DCD 0x40001101
00000 AREA |.rdata| { |??_C@_01FIAI@X?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_01FIAI@X?$AA@| DCB "X", 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMEthISR| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMEthISR| PROC
; 449 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M14488|
; 450 : DWORD dwReturnValue = 0;
; 451 :
; 452 : EdbgOutputDebugString("X");
00004 e59f0034 ldr r0, [pc, #0x34]
00008 e3a04000 mov r4, #0
0000c eb000000 bl EdbgOutputDebugString
; 453 :
; 454 : #ifdef IMGSHAREETH
; 455 : ProcessVMiniSend();
00010 eb000000 bl ProcessVMiniSend
; 456 : #endif
; 457 : if(pfnEDbgGetPendingInts)
00014 e59f3020 ldr r3, [pc, #0x20]
00018 e5930000 ldr r0, [r3]
0001c e3500000 cmp r0, #0
00020 0a000002 beq |$L14208|
; 458 : {
; 459 : dwReturnValue = pfnEDbgGetPendingInts();
00024 e1a0e00f mov lr, pc
00028 e12fff10 bx r0
0002c e1a04000 mov r4, r0
00030 |$L14208|
; 460 : }
; 461 :
; 462 : return dwReturnValue;
00030 e1a00004 mov r0, r4
; 463 : }
00034 e8bd4010 ldmia sp!, {r4, lr}
00038 e12fff1e bx lr
0003c |$L14492|
0003c 00000000 DCD |pfnEDbgGetPendingInts|
00040 00000000 DCD |??_C@_01FIAI@X?$AA@|
00044 |$M14489|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -