📄 cs8950.cod
字号:
00000 AREA |.rdata| { |??_C@_01EFFIKLCJ@n?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_01EFFIKLCJ@n?$AA@| DCB "n", 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_01DGKLNCNG@R?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_01DGKLNCNG@R?$AA@| DCB "R", 0x0 ; `string'
; Function compile flags: /Ods
00000 AREA |.text| { |CS8950GetPendingInterrupts| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CS8950GetPendingInterrupts| PROC
; 584 : {
00000 |$L16220|
00000 e52de004 str lr, [sp, #-4]!
00004 e24dd008 sub sp, sp, #8
00008 |$M16218|
; 585 : PCD pCD;
; 586 : pCD = (PCD)pChip->pData;
00008 e59f3084 ldr r3, [pc, #0x84]
0000c e5933000 ldr r3, [r3]
00010 e283300c add r3, r3, #0xC
00014 e5933000 ldr r3, [r3]
00018 e58d3000 str r3, [sp]
; 587 :
; 588 :
; 589 : if (pCD->pRxStatNext->RxStat & RxStat_RxFP)
0001c e59d3000 ldr r3, [sp]
00020 e2833014 add r3, r3, #0x14
00024 e5931000 ldr r1, [r3]
00028 e5d13003 ldrb r3, [r1, #3]
0002c e1a02403 mov r2, r3, lsl #8
00030 e5d13002 ldrb r3, [r1, #2]
00034 e1833002 orr r3, r3, r2
00038 e1a02403 mov r2, r3, lsl #8
0003c e5d13001 ldrb r3, [r1, #1]
00040 e1833002 orr r3, r3, r2
00044 e1a02403 mov r2, r3, lsl #8
00048 e5d13000 ldrb r3, [r1]
0004c e1833002 orr r3, r3, r2
00050 e3130102 tst r3, #2, 2
00054 0a000004 beq |$L15498|
; 590 : {
; 591 : EdbgOutputDebugString("R");
00058 e59f0030 ldr r0, [pc, #0x30]
0005c eb000000 bl EdbgOutputDebugString
; 592 : return INTR_TYPE_RX;
00060 e3a03001 mov r3, #1
00064 e58d3004 str r3, [sp, #4]
00068 ea000003 b |$L15495|
0006c |$L15498|
; 593 : }
; 594 : EdbgOutputDebugString("n");
0006c e59f0018 ldr r0, [pc, #0x18]
00070 eb000000 bl EdbgOutputDebugString
; 595 : return 0;
00074 e3a03000 mov r3, #0
00078 e58d3004 str r3, [sp, #4]
0007c |$L15495|
; 592 : return INTR_TYPE_RX;
0007c e59d0004 ldr r0, [sp, #4]
; 596 : }
00080 e28dd008 add sp, sp, #8
00084 e49de004 ldr lr, [sp], #4
00088 e12fff1e bx lr
0008c |$L16223|
0008c 00000000 DCD |??_C@_01EFFIKLCJ@n?$AA@|
00090 00000000 DCD |??_C@_01DGKLNCNG@R?$AA@|
00094 00000000 DCD |pChip|
00098 |$M16219|
ENDP ; |CS8950GetPendingInterrupts|
EXPORT |CS8950ReadEEPROM|
00000 AREA |.text| { |CS8950ReadEEPROM| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CS8950ReadEEPROM|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950ReadEEPROM| } ; comdat associative
|$T16230| DCD |$L16229|
DCD 0x40001404
; Function compile flags: /Ods
00000 AREA |.text| { |CS8950ReadEEPROM| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CS8950ReadEEPROM| PROC
; 609 : {
00000 |$L16229|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd004 sub sp, sp, #4
00010 |$M16227|
; 610 : *pwVal = gusMacAddr[EEPROMAddress];
00010 e1dd30bc ldrh r3, [sp, #0xC]
00014 e1a01003 mov r1, r3
00018 e3a03002 mov r3, #2
0001c e0020391 mul r2, r1, r3
00020 e59f3024 ldr r3, [pc, #0x24]
00024 e0833002 add r3, r3, r2
00028 e1d320b0 ldrh r2, [r3]
0002c e59d3010 ldr r3, [sp, #0x10]
00030 e1c320b0 strh r2, [r3]
; 611 : return TRUE;
00034 e3a03001 mov r3, #1
00038 e58d3000 str r3, [sp]
0003c e59d0000 ldr r0, [sp]
; 612 : }
00040 e28dd004 add sp, sp, #4
00044 e89d6000 ldmia sp, {sp, lr}
00048 e12fff1e bx lr
0004c |$L16232|
0004c 00000000 DCD |gusMacAddr|
00050 |$M16228|
ENDP ; |CS8950ReadEEPROM|
EXPORT |CS8950WriteEEPROM|
00000 AREA |.text| { |CS8950WriteEEPROM| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CS8950WriteEEPROM|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950WriteEEPROM| } ; comdat associative
|$T16239| DCD |$L16238|
DCD 0x40001304
; Function compile flags: /Ods
00000 AREA |.text| { |CS8950WriteEEPROM| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CS8950WriteEEPROM| PROC
; 625 : {
00000 |$L16238|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd004 sub sp, sp, #4
00010 |$M16236|
; 626 : gusMacAddr[EEPROMAddress] = Data;
00010 e1dd30bc ldrh r3, [sp, #0xC]
00014 e1a01003 mov r1, r3
00018 e3a03002 mov r3, #2
0001c e0020391 mul r2, r1, r3
00020 e59f3020 ldr r3, [pc, #0x20]
00024 e0832002 add r2, r3, r2
00028 e1dd31b0 ldrh r3, [sp, #0x10]
0002c e1c230b0 strh r3, [r2]
; 627 : return TRUE;
00030 e3a03001 mov r3, #1
00034 e58d3000 str r3, [sp]
00038 e59d0000 ldr r0, [sp]
; 628 : }
0003c e28dd004 add sp, sp, #4
00040 e89d6000 ldmia sp, {sp, lr}
00044 e12fff1e bx lr
00048 |$L16241|
00048 00000000 DCD |gusMacAddr|
0004c |$M16237|
ENDP ; |CS8950WriteEEPROM|
EXPORT |CS8950MulticastAddAll|
00000 AREA |.text| { |CS8950MulticastAddAll| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CS8950MulticastAddAll|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950MulticastAddAll| } ; comdat associative
|$T16247| DCD |$L16246|
DCD 0x40002101
; Function compile flags: /Ods
00000 AREA |.text| { |CS8950MulticastAddAll| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CS8950MulticastAddAll| PROC
; 638 : {
00000 |$L16246|
00000 e24dd004 sub sp, sp, #4
00004 |$M16244|
; 639 : DWORD RxControl;
; 640 :
; 641 :
; 642 : /* Get the current settings of the receiver control register */
; 643 : RxControl=ReadDWord( OpReg_RxCTL );
00004 e59f3074 ldr r3, [pc, #0x74]
00008 e5933000 ldr r3, [r3]
0000c e5933000 ldr r3, [r3]
00010 e58d3000 str r3, [sp]
; 644 :
; 645 : /* Turn off the receiver while changing the hash table */
; 646 : WriteDWord( OpReg_RxCTL, RxControl & ~RxCTL_SerRxON );
00014 e59d2000 ldr r2, [sp]
00018 e3e03801 mvn r3, #1, 16
0001c e0022003 and r2, r2, r3
00020 e59f3058 ldr r3, [pc, #0x58]
00024 e5933000 ldr r3, [r3]
00028 e5832000 str r2, [r3]
; 647 :
; 648 : /* Set all the bits in the hash table */
; 649 : WriteByte( OpReg_AFP, AFP_Hash );
0002c e59f304c ldr r3, [pc, #0x4C]
00030 e5933000 ldr r3, [r3]
00034 e283204c add r2, r3, #0x4C
00038 e3a03007 mov r3, #7
0003c e5c23000 strb r3, [r2]
; 650 : WriteDWord( OpReg_HashTb , 0xFFFFFFFF );
00040 e59f3038 ldr r3, [pc, #0x38]
00044 e5933000 ldr r3, [r3]
00048 e2832050 add r2, r3, #0x50
0004c e3e03000 mvn r3, #0
00050 e5823000 str r3, [r2]
; 651 : WriteDWord( OpReg_HashTb+4, 0xFFFFFFFF );
00054 e59f3024 ldr r3, [pc, #0x24]
00058 e5933000 ldr r3, [r3]
0005c e2832054 add r2, r3, #0x54
00060 e3e03000 mvn r3, #0
00064 e5823000 str r3, [r2]
; 652 :
; 653 : /* Turn the receiver back on */
; 654 : WriteDWord(OpReg_RxCTL, RxControl );
00068 e59d2000 ldr r2, [sp]
0006c e59f300c ldr r3, [pc, #0xC]
00070 e5933000 ldr r3, [r3]
00074 e5832000 str r2, [r3]
; 655 :
; 656 : }
00078 e28dd004 add sp, sp, #4
0007c e12fff1e bx lr
00080 |$L16249|
00080 00000000 DCD |gdwEthernetBase|
00084 |$M16245|
ENDP ; |CS8950MulticastAddAll|
00000 AREA |.text| { |GetMACAddress| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetMACAddress|, PDATA, SELECTION=5, ASSOC=|.text| { |GetMACAddress| } ; comdat associative
|$T16256| DCD |$L16255|
DCD 0x40002804
; Function compile flags: /Ods
00000 AREA |.text| { |GetMACAddress| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetMACAddress| PROC
; 665 : {
00000 |$L16255|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd004 sub sp, sp, #4
00010 |$M16253|
; 666 : if(gusMacAddr[0] == 0 && gusMacAddr[1] == 0 && gusMacAddr[2] == 0)
00010 e59f3084 ldr r3, [pc, #0x84]
00014 e1d330b0 ldrh r3, [r3]
00018 e3530000 cmp r3, #0
0001c 1a00000a bne |$L15523|
00020 e59f3074 ldr r3, [pc, #0x74]
00024 e1d330b2 ldrh r3, [r3, #2]
00028 e3530000 cmp r3, #0
0002c 1a000006 bne |$L15523|
00030 e59f3064 ldr r3, [pc, #0x64]
00034 e1d330b4 ldrh r3, [r3, #4]
00038 e3530000 cmp r3, #0
0003c 1a000002 bne |$L15523|
; 667 : return FALSE;
00040 e3a03000 mov r3, #0
00044 e58d3000 str r3, [sp]
00048 ea00000f b |$L15522|
0004c |$L15523|
; 668 :
; 669 : //
; 670 : // Currently copy the Mac Address from internal ram.
; 671 : //
; 672 : MacAddr[0] = gusMacAddr[0];
0004c e59f3048 ldr r3, [pc, #0x48]
00050 e1d320b0 ldrh r2, [r3]
00054 e59d300c ldr r3, [sp, #0xC]
00058 e1c320b0 strh r2, [r3]
; 673 : MacAddr[1] = gusMacAddr[1];
0005c e59d300c ldr r3, [sp, #0xC]
00060 e2832002 add r2, r3, #2
00064 e59f3030 ldr r3, [pc, #0x30]
00068 e1d330b2 ldrh r3, [r3, #2]
0006c e1c230b0 strh r3, [r2]
; 674 : MacAddr[2] = gusMacAddr[2];
00070 e59d300c ldr r3, [sp, #0xC]
00074 e2832004 add r2, r3, #4
00078 e59f301c ldr r3, [pc, #0x1C]
0007c e1d330b4 ldrh r3, [r3, #4]
00080 e1c230b0 strh r3, [r2]
; 675 :
; 676 : return TRUE;
00084 e3a03001 mov r3, #1
00088 e58d3000 str r3, [sp]
0008c |$L15522|
; 667 : return FALSE;
0008c e59d0000 ldr r0, [sp]
; 677 : }
00090 e28dd004 add sp, sp, #4
00094 e89d6000 ldmia sp, {sp, lr}
00098 e12fff1e bx lr
0009c |$L16258|
0009c 00000000 DCD |gusMacAddr|
000a0 |$M16254|
ENDP ; |GetMACAddress|
EXPORT |??_C@_0DJ@KCNHBCHM@First?5PHY?5read?5failed?0?5Address?5?$DN@| [ DATA ] ; `string'
EXPORT |??_C@_0BI@HIJCNAOF@Second?5PHY?5read?5failed?$CB?$AA@| [ DATA ] ; `string'
00000 AREA |.text| { |ReadPHY| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ReadPHY|, PDATA, SELECTION=5, ASSOC=|.text| { |ReadPHY| } ; comdat associative
|$T16265| DCD |$L16264|
DCD 0x40005604
00000 AREA |.rdata| { |??_C@_0BI@HIJCNAOF@Second?5PHY?5read?5failed?$CB?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BI@HIJCNAOF@Second?5PHY?5read?5failed?$CB?$AA@| DCB "Second PHY r"
DCB "ead failed!", 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0DJ@KCNHBCHM@First?5PHY?5read?5failed?0?5Address?5?$DN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DJ@KCNHBCHM@First?5PHY?5read?5failed?0?5Address?5?$DN@| DCB "Firs"
DCB "t PHY read failed, Address =0x%x, Register= 0x%x. ", 0xd
DCB 0xa, 0x0 ; `string'
; Function compile flags: /Ods
00000 AREA |.text| { |ReadPHY| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ReadPHY| PROC
; 790 : {
00000 |$L16264|
00000 e1a0c00d mov r12, sp
00004 e92d000f stmdb sp!, {r0 - r3}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd00c sub sp, sp, #0xC
00010 |$M16262|
; 791 : BYTE Status;
; 792 : int x;
; 793 :
; 794 : /* Ensure that the PHY is not busy */
; 795 : for ( x=0; x<MAXLOOP; x++ )
00010 e3a03000 mov r3, #0
00014 e58d3000 str r3, [sp]
00018 ea000002 b |$L15566|
0001c |$L15567|
0001c e59d3000 ldr r3, [sp]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -