📄 halether.cod
字号:
; 624 : }
; 625 : dwLastTime = dwRet;
0002c e5854000 str r4, [r5]
; 626 : return (dwRet);
00030 e1a00004 mov r0, r4
; 627 : }
00034 e8bd4030 ldmia sp!, {r4, r5, lr}
00038 e12fff1e bx lr
0003c |$L15897|
0003c 00000000 DCD |??_C@_0DG@BEEKIGEB@?$CB?5Time?5went?5backwards?5?$CIor?5wrappe@|
00040 00000000 DCD |dwLastTime|
00044 10624dd3 DCD 0x10624dd3
00048 |$M15893|
ENDP ; |OEMEthGetSecs|
EXPORT |OEMEthCurrentPacketFilter|
EXPORT |??_C@_0CK@JNNEFBDF@OEMEthCurrentPacketFilter?5set?5to@| [ DATA ] ; `string'
00000 AREA |.text| { |OEMEthCurrentPacketFilter| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMEthCurrentPacketFilter|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthCurrentPacketFilter| } ; comdat associative
|$T15907| DCD |$L15906|
DCD 0x40001c01
00000 AREA |.rdata| { |??_C@_0CK@JNNEFBDF@OEMEthCurrentPacketFilter?5set?5to@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CK@JNNEFBDF@OEMEthCurrentPacketFilter?5set?5to@| DCB "OEMEthCurre"
DCB "ntPacketFilter set to [0x%x]", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMEthCurrentPacketFilter| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMEthCurrentPacketFilter| PROC
; 671 : {
00000 |$L15906|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M15904|
00004 e1a04000 mov r4, r0
; 672 :
; 673 : if (pfnCurrentPacketFilter)
00008 e59f305c ldr r3, [pc, #0x5C]
0000c e5933000 ldr r3, [r3]
00010 e3530000 cmp r3, #0
00014 0a00000b beq |$L15703|
; 674 : {
; 675 : EdbgOutputDebugString(
; 676 : "OEMEthCurrentPacketFilter set to [0x%x]\r\n",
; 677 : *pdwRequestedFilter);
00018 e5941000 ldr r1, [r4]
0001c e59f0044 ldr r0, [pc, #0x44]
00020 eb000000 bl EdbgOutputDebugString
; 678 :
; 679 : //
; 680 : // Note that we can't do it immediately here, since we are called
; 681 : // by user mode code.
; 682 : // So what we do is to set the flag here for the kernel mode code
; 683 : // to pick up.
; 684 : //
; 685 :
; 686 : dwFilter = *pdwRequestedFilter;
00024 e59f1038 ldr r1, [pc, #0x38]
00028 e5943000 ldr r3, [r4]
; 687 : bNewFilter = TRUE;
0002c e59f202c ldr r2, [pc, #0x2C]
00030 e3a00001 mov r0, #1
00034 e5813000 str r3, [r1]
00038 e5820000 str r0, [r2]
0003c |$L15903|
; 688 : return TRUE;
0003c e3a00001 mov r0, #1
; 708 : }
; 709 :
; 710 : } // OEMEthCurrentPacketFilter()
00040 e8bd4010 ldmia sp!, {r4, lr}
00044 e12fff1e bx lr
00048 |$L15703|
; 689 : }
; 690 : else
; 691 : {
; 692 : //
; 693 : // Oh well, eth driver does not yet support filter setting
; 694 : // So if it is PACKET_TYPE_DIRECTED, PACKET_TYPE_MULTICAST,
; 695 : // PACKET_TYPE_BROADCAST, we just lie that we are ok with it.
; 696 : // Since EDBG will run in this mode anyway..
; 697 : //
; 698 :
; 699 : DWORD dwInherentlySupported =
; 700 : PACKET_TYPE_MULTICAST |
; 701 : PACKET_TYPE_DIRECTED |
; 702 : PACKET_TYPE_BROADCAST;
; 703 :
; 704 : if (*pdwRequestedFilter == dwInherentlySupported)
00048 e5943000 ldr r3, [r4]
0004c e353000b cmp r3, #0xB
; 705 : return TRUE;
00050 0afffff9 beq |$L15903|
; 706 : else
; 707 : return FALSE;
00054 e3a00000 mov r0, #0
; 708 : }
; 709 :
; 710 : } // OEMEthCurrentPacketFilter()
00058 e8bd4010 ldmia sp!, {r4, lr}
0005c e12fff1e bx lr
00060 |$L15909|
00060 00000000 DCD |bNewFilter|
00064 00000000 DCD |dwFilter|
00068 00000000 DCD |??_C@_0CK@JNNEFBDF@OEMEthCurrentPacketFilter?5set?5to@|
0006c 00000000 DCD |pfnCurrentPacketFilter|
00070 |$M15905|
ENDP ; |OEMEthCurrentPacketFilter|
EXPORT |OEMEthMulticastList|
EXPORT |??_C@_0CN@GINGNDC@OEMEthMulticastList?$CI?$CJ?3?3?5No?5of?5En@| [ DATA ] ; `string'
EXPORT |??_C@_0CI@OMAMJJIC@Multicast?5list?5requeste?5?$FL?$CFd?$FN?5?$DM?$DN?5@| [ DATA ] ; `string'
EXPORT |??_C@_0CI@LBFIFDNC@Multicast?5list?5requeste?5?$FL?$CFd?$FN?5?$DO?53@| [ DATA ] ; `string'
EXPORT |??_C@_0CF@FKEOHFMO@?$FL?$CFd?$FN?5?3?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5@| [ DATA ] ; `string'
IMPORT |CS8950MulticastAddAll|
IMPORT |memset|
IMPORT |memcpy|
00000 AREA |.text| { |OEMEthMulticastList| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMEthMulticastList|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthMulticastList| } ; comdat associative
|$T15925| DCD |$L15924|
DCD 0x40003d02
00000 AREA |.rdata| { |??_C@_0CF@FKEOHFMO@?$FL?$CFd?$FN?5?3?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CF@FKEOHFMO@?$FL?$CFd?$FN?5?3?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5@| DCB "["
DCB "%d] : %x - %x - %x - %x - %x - %x", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CI@LBFIFDNC@Multicast?5list?5requeste?5?$FL?$CFd?$FN?5?$DO?53@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CI@LBFIFDNC@Multicast?5list?5requeste?5?$FL?$CFd?$FN?5?$DO?53@| DCB "M"
DCB "ulticast list requeste [%d] > 32 !!!", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CI@OMAMJJIC@Multicast?5list?5requeste?5?$FL?$CFd?$FN?5?$DM?$DN?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CI@OMAMJJIC@Multicast?5list?5requeste?5?$FL?$CFd?$FN?5?$DM?$DN?5@| DCB "M"
DCB "ulticast list requeste [%d] <= 0 !!!", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CN@GINGNDC@OEMEthMulticastList?$CI?$CJ?3?3?5No?5of?5En@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CN@GINGNDC@OEMEthMulticastList?$CI?$CJ?3?3?5No?5of?5En@| DCB "OEM"
DCB "EthMulticastList():: No of Entries [%d]", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMEthMulticastList| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMEthMulticastList| PROC
; 736 : {
00000 |$L15924|
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 e24dd010 sub sp, sp, #0x10
00008 |$M15922|
00008 e1a07001 mov r7, r1
0000c e1a08000 mov r8, r0
; 737 : //
; 738 : // This platform does not support multicast yet..
; 739 : //
; 740 :
; 741 : DWORD i;
; 742 :
; 743 : EdbgOutputDebugString(
; 744 : "OEMEthMulticastList():: No of Entries [%d]\r\n",
; 745 : dwNoOfAddresses);
00010 e59f00d8 ldr r0, [pc, #0xD8]
00014 eb000000 bl EdbgOutputDebugString
; 746 :
; 747 : if (dwNoOfAddresses <= 0)
00018 e3570000 cmp r7, #0
; 748 : {
; 749 : //
; 750 : // VMINI passed an empty multicast list.
; 751 : // Should be never happened.
; 752 : // Return FALSE in case it happened.
; 753 :
; 754 : EdbgOutputDebugString(
; 755 : "Multicast list requeste [%d] <= 0 !!!\r\n",
; 756 : dwNoOfAddresses);
0001c 059f00c8 ldreq r0, [pc, #0xC8]
00020 0a000002 beq |$L15921|
; 757 :
; 758 : return FALSE;
; 759 :
; 760 : }
; 761 :
; 762 : //
; 763 : // We can check how many entries an adapter that are attached to
; 764 : // can support.
; 765 : // To make things simple, we just assume we can support minimum that
; 766 : // vmini thinks we support (i.e. 32).
; 767 : //
; 768 :
; 769 : if (dwNoOfAddresses > 32)
00024 e3570020 cmp r7, #0x20
00028 9a000004 bls |$L15719|
; 770 : {
; 771 : //
; 772 : // This should never happen, since VMINI is known to support
; 773 : // 32 entries only...
; 774 : //
; 775 :
; 776 : EdbgOutputDebugString(
; 777 : "Multicast list requeste [%d] > 32 !!!\r\n",
; 778 : dwNoOfAddresses);
0002c e59f00b4 ldr r0, [pc, #0xB4]
00030 |$L15921|
00030 e1a01007 mov r1, r7
00034 eb000000 bl EdbgOutputDebugString
; 779 :
; 780 : return FALSE;
00038 e3a00000 mov r0, #0
0003c ea000022 b |$L15714|
00040 |$L15719|
; 781 : }
; 782 :
; 783 :
; 784 : //
; 785 : // 32 entries, 6 bytes each..
; 786 : //
; 787 :
; 788 : memset(
; 789 : ucMultiAddr,
; 790 : 0x00,
; 791 : 32 * 6);
00040 e59f009c ldr r0, [pc, #0x9C]
00044 e3a020c0 mov r2, #0xC0
00048 e3a01000 mov r1, #0
0004c eb000000 bl memset
; 792 :
; 793 : //
; 794 : // 6 bytes per entry..
; 795 : //
; 796 :
; 797 : memcpy(
; 798 : ucMultiAddr,
; 799 : pucMulticastAddressList,
; 800 : dwNoOfAddresses * 6);
00050 e59f008c ldr r0, [pc, #0x8C]
00054 e0872087 add r2, r7, r7, lsl #1
00058 e1a02082 mov r2, r2, lsl #1
0005c e1a01008 mov r1, r8
00060 eb000000 bl memcpy
; 801 :
; 802 :
; 803 : for (i = 0 ; i < dwNoOfAddresses ; i++)
00064 e3a09000 mov r9, #0
00068 e3570000 cmp r7, #0
0006c 0a00000f beq |$L15723|
00070 |$L15721|
; 804 : {
; 805 : EdbgOutputDebugString(
; 806 : "[%d] : %x - %x - %x - %x - %x - %x\r\n",
; 807 : i,
; 808 : pucMulticastAddressList[6*i+0],
; 809 : pucMulticastAddressList[6*i+1],
; 810 : pucMulticastAddressList[6*i+2],
; 811 : pucMulticastAddressList[6*i+3],
; 812 : pucMulticastAddressList[6*i+4],
; 813 : pucMulticastAddressList[6*i+5]);
00070 e5d8e005 ldrb lr, [r8, #5]
00074 e5d84004 ldrb r4, [r8, #4]
00078 e5d85003 ldrb r5, [r8, #3]
0007c e5d86002 ldrb r6, [r8, #2]
00080 e5d83001 ldrb r3, [r8, #1]
00084 e4d82006 ldrb r2, [r8], #6
00088 e59f0050 ldr r0, [pc, #0x50]
0008c e1a01009 mov r1, r9
00090 e58de00c str lr, [sp, #0xC]
00094 e58d4008 str r4, [sp, #8]
00098 e58d5004 str r5, [sp, #4]
0009c e58d6000 str r6, [sp]
000a0 eb000000 bl EdbgOutputDebugString
000a4 e2899001 add r9, r9, #1
000a8 e1590007 cmp r9, r7
000ac 3affffef bcc |$L15721|
000b0 |$L15723|
; 814 : }
; 815 :
; 816 :
; 817 : dwNoOfEntry = dwNoOfAddresses;
000b0 e59f3024 ldr r3, [pc, #0x24]
; 818 : bNewMulticast = TRUE;
000b4 e59f201c ldr r2, [pc, #0x1C]
000b8 e3a01001 mov r1, #1
000bc e5837000 str r7, [r3]
000c0 e5821000 str r1, [r2]
; 819 :
; 820 : //Enable all of multicast addresses on the chip.
; 821 : //then Ethernet will receive all of the multicast packets.
; 822 : CS8950MulticastAddAll();
000c4 eb000000 bl CS8950MulticastAddAll
; 823 :
; 824 :
; 825 : return TRUE;
000c8 e3a00001 mov r0, #1
000cc |$L15714|
; 826 :
; 827 :
; 828 : } // OEMEthMulticastList()
000cc e28dd010 add sp, sp, #0x10
000d0 e8bd43f0 ldmia sp!, {r4 - r9, lr}
000d4 e12fff1e bx lr
000d8 |$L15927|
000d8 00000000 DCD |bNewMulticast|
000dc 00000000 DCD |dwNoOfEntry|
000e0 00000000 DCD |??_C@_0CF@FKEOHFMO@?$FL?$CFd?$FN?5?3?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5?$CFx?5?9?5@|
000e4 00000000 DCD |ucMultiAddr|
000e8 00000000 DCD |??_C@_0CI@LBFIFDNC@Multicast?5list?5requeste?5?$FL?$CFd?$FN?5?$DO?53@|
000ec 00000000 DCD |??_C@_0CI@OMAMJJIC@Multicast?5list?5requeste?5?$FL?$CFd?$FN?5?$DM?$DN?5@|
000f0 00000000 DCD |??_C@_0CN@GINGNDC@OEMEthMulticastList?$CI?$CJ?3?3?5No?5of?5En@|
000f4 |$M15923|
ENDP ; |OEMEthMulticastList|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -