📄 cs8950.cod
字号:
0004c e1dd10b0 ldrh r1, [sp]
00050 e59d0020 ldr r0, [sp, #0x20]
00054 eb000000 bl Check_PHY_ID_Type
00058 e58d0010 str r0, [sp, #0x10]
0005c e59d3010 ldr r3, [sp, #0x10]
00060 e58d3004 str r3, [sp, #4]
; 997 : if (IsPHYFound == TRUE )
00064 e59d3004 ldr r3, [sp, #4]
00068 e3530001 cmp r3, #1
0006c 1a000000 bne |$L15667|
; 998 : {
; 999 : break;
00070 ea000000 b |$L15666|
00074 |$L15667|
; 1000 : }
; 1001 : } //end for PhyId 1-31
00074 eaffffec b |$L15665|
00078 |$L15666|
; 1002 :
; 1003 :
; 1004 : /* If did not find a PHY */
; 1005 : if ( IsPHYFound == FALSE )
00078 e59d3004 ldr r3, [sp, #4]
0007c e3530000 cmp r3, #0
00080 1a000005 bne |$L15668|
; 1006 : {
; 1007 : //PHY address 0 is for broadcasting. All PHYs will respond to address 0.
; 1008 : //However, some users may connect PHY to address 0. So search it.
; 1009 : IsPHYFound=Check_PHY_ID_Type(pChip, 0);
00084 e3a01000 mov r1, #0
00088 e59d0020 ldr r0, [sp, #0x20]
0008c eb000000 bl Check_PHY_ID_Type
00090 e58d0014 str r0, [sp, #0x14]
00094 e59d3014 ldr r3, [sp, #0x14]
00098 e58d3004 str r3, [sp, #4]
0009c |$L15668|
; 1010 : }
; 1011 :
; 1012 : if ( IsPHYFound == FALSE )
0009c e59d3004 ldr r3, [sp, #4]
000a0 e3530000 cmp r3, #0
000a4 1a000001 bne |$L15669|
; 1013 : {
; 1014 : DEBUGMSG(1,(TEXT("Error: EthernetMAC: A PHY is not found!\r\n") ));
; 1015 : RETAILMSG(1,( TEXT("Error: EthernetMAC: A PHY is not found!\r\n")));
000a8 e59f0018 ldr r0, [pc, #0x18]
000ac eb000000 bl NKDbgPrintfW
000b0 |$L15669|
; 1016 : }
; 1017 :
; 1018 : return IsPHYFound;
000b0 e59d3004 ldr r3, [sp, #4]
000b4 e58d300c str r3, [sp, #0xC]
000b8 e59d000c ldr r0, [sp, #0xC]
; 1019 : }
000bc e28dd018 add sp, sp, #0x18
000c0 e89d6000 ldmia sp, {sp, lr}
000c4 e12fff1e bx lr
000c8 |$L16294|
000c8 00000000 DCD |??_C@_1FE@NCFENECG@?$AAE?$AAr?$AAr?$AAo?$AAr?$AA?3?$AA?5?$AAE?$AAt?$AAh?$AAe?$AAr?$AAn?$AAe?$AAt?$AAM?$AAA?$AAC?$AA?3?$AA?5@|
000cc |$M16290|
ENDP ; |FindPHYType|
00000 AREA |.text| { |StartupQueues| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$StartupQueues|, PDATA, SELECTION=5, ASSOC=|.text| { |StartupQueues| } ; comdat associative
|$T16301| DCD |$L16300|
DCD 0x40014f04
; Function compile flags: /Ods
00000 AREA |.text| { |StartupQueues| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |StartupQueues| PROC
; 1028 : {
00000 |$L16300|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd00c sub sp, sp, #0xC
00010 |$M16298|
; 1029 : PCD pCD;
; 1030 : USHORT Index;
; 1031 :
; 1032 : pCD = (PCD)pChip->pData;
00010 e59d3014 ldr r3, [sp, #0x14]
00014 e283300c add r3, r3, #0xC
00018 e5933000 ldr r3, [r3]
0001c e58d3004 str r3, [sp, #4]
; 1033 :
; 1034 : pCD->TxQueueDepth=0;
00020 e59d3004 ldr r3, [sp, #4]
00024 e2832f93 add r2, r3, #0x93, 30
00028 e3a03000 mov r3, #0
0002c e1c230b0 strh r3, [r2]
; 1035 :
; 1036 : /* Allocate shared memory for the Receive Descriptor Queue */
; 1037 : pCD->pRxDesc = (PVOID) &pCS8950Buffer->RxDesc[0];
00030 e59f3500 ldr r3, [pc, #0x500]
00034 e5932000 ldr r2, [r3]
00038 e59d3004 ldr r3, [sp, #4]
0003c e5832000 str r2, [r3]
; 1038 : pCD->RxDescPhysAddr = CONVERT_TO_PHYSICAL(pCD->pRxDesc);
00040 e59d3004 ldr r3, [sp, #4]
00044 e5932000 ldr r2, [r3]
00048 e59f34e4 ldr r3, [pc, #0x4E4]
0004c e5933000 ldr r3, [r3]
00050 e0822003 add r2, r2, r3
00054 e59d3004 ldr r3, [sp, #4]
00058 e2833008 add r3, r3, #8
0005c e5832000 str r2, [r3]
; 1039 : ASSERT(!(pCD->RxDescPhysAddr & 0x3));
; 1040 :
; 1041 : /* Initialize Receive Descriptor Queue limit pointer */
; 1042 : pCD->pRxDescLimit = pCD->pRxDesc + RXDESCCOUNT;
00060 e59d3004 ldr r3, [sp, #4]
00064 e5933000 ldr r3, [r3]
00068 e2832c01 add r2, r3, #1, 24
0006c e59d3004 ldr r3, [sp, #4]
00070 e2833004 add r3, r3, #4
00074 e5832000 str r2, [r3]
; 1043 :
; 1044 : /* Initialize the Receive Descriptor Queue registers */
; 1045 : WriteDWord( OpReg_RxDBA, pCD->RxDescPhysAddr );
00078 e59d3004 ldr r3, [sp, #4]
0007c e2831008 add r1, r3, #8
00080 e59f34a8 ldr r3, [pc, #0x4A8]
00084 e5933000 ldr r3, [r3]
00088 e2832090 add r2, r3, #0x90
0008c e5913000 ldr r3, [r1]
00090 e5823000 str r3, [r2]
; 1046 : WriteWord( OpReg_RxDBL, sizeof(RxDesc_t)*RXDESCCOUNT );
00094 e59f3494 ldr r3, [pc, #0x494]
00098 e5933000 ldr r3, [r3]
0009c e2832094 add r2, r3, #0x94
000a0 e3a03c01 mov r3, #1, 24
000a4 e1c230b0 strh r3, [r2]
; 1047 : WriteDWord( OpReg_RxDTH, 0x00040002);
000a8 e59f3480 ldr r3, [pc, #0x480]
000ac e5933000 ldr r3, [r3]
000b0 e28320e0 add r2, r3, #0xE0
000b4 e3a03701 mov r3, #1, 14
000b8 e3833002 orr r3, r3, #2
000bc e5823000 str r3, [r2]
; 1048 :
; 1049 : /* Allocate shared memory for the Receive Status Queue */
; 1050 : pCD->pRxStat = (PVOID) &pCS8950Buffer->RxStat[0];
000c0 e59f3470 ldr r3, [pc, #0x470]
000c4 e5933000 ldr r3, [r3]
000c8 e2832c01 add r2, r3, #1, 24
000cc e59d3004 ldr r3, [sp, #4]
000d0 e283300c add r3, r3, #0xC
000d4 e5832000 str r2, [r3]
; 1051 : pCD->RxStatPhysAddr = CONVERT_TO_PHYSICAL(pCD->pRxStat);
000d8 e59d3004 ldr r3, [sp, #4]
000dc e283300c add r3, r3, #0xC
000e0 e5932000 ldr r2, [r3]
000e4 e59f3448 ldr r3, [pc, #0x448]
000e8 e5933000 ldr r3, [r3]
000ec e0822003 add r2, r2, r3
000f0 e59d3004 ldr r3, [sp, #4]
000f4 e2833018 add r3, r3, #0x18
000f8 e5832000 str r2, [r3]
; 1052 : ASSERT(!(pCD->RxStatPhysAddr & 0x3));
; 1053 :
; 1054 : /* Initialize Receive Status Queue limit pointer */
; 1055 : pCD->pRxStatLimit = pCD->pRxStat + RXSTATCOUNT;
000fc e59d3004 ldr r3, [sp, #4]
00100 e283300c add r3, r3, #0xC
00104 e5933000 ldr r3, [r3]
00108 e2832c01 add r2, r3, #1, 24
0010c e59d3004 ldr r3, [sp, #4]
00110 e2833010 add r3, r3, #0x10
00114 e5832000 str r2, [r3]
; 1056 :
; 1057 : /* Initialize the Receive Status Queue registers */
; 1058 : WriteDWord( OpReg_RxSBA, pCD->RxStatPhysAddr );
00118 e59d3004 ldr r3, [sp, #4]
0011c e2831018 add r1, r3, #0x18
00120 e59f3408 ldr r3, [pc, #0x408]
00124 e5933000 ldr r3, [r3]
00128 e28320a0 add r2, r3, #0xA0
0012c e5913000 ldr r3, [r1]
00130 e5823000 str r3, [r2]
; 1059 : WriteWord( OpReg_RxSBL, sizeof(RxStat_t)*RXSTATCOUNT);
00134 e59f33f4 ldr r3, [pc, #0x3F4]
00138 e5933000 ldr r3, [r3]
0013c e28320a4 add r2, r3, #0xA4
00140 e3a03c01 mov r3, #1, 24
00144 e1c230b0 strh r3, [r2]
; 1060 : WriteDWord(OpReg_RxSTH, 0x00040002);
00148 e59f33e0 ldr r3, [pc, #0x3E0]
0014c e5933000 ldr r3, [r3]
00150 e28320d8 add r2, r3, #0xD8
00154 e3a03701 mov r3, #1, 14
00158 e3833002 orr r3, r3, #2
0015c e5823000 str r3, [r2]
; 1061 :
; 1062 : /* Allocate shared memory for the Transmit Descriptor Queue */
; 1063 : pCD->pTxDesc = (PVOID) &pCS8950Buffer->TxDesc[0];
00160 e59f33d0 ldr r3, [pc, #0x3D0]
00164 e5933000 ldr r3, [r3]
00168 e2832c02 add r2, r3, #2, 24
0016c e59d3004 ldr r3, [sp, #4]
00170 e283301c add r3, r3, #0x1C
00174 e5832000 str r2, [r3]
; 1064 : pCD->TxDescPhysAddr = CONVERT_TO_PHYSICAL(pCD->pTxDesc);
00178 e59d3004 ldr r3, [sp, #4]
0017c e283301c add r3, r3, #0x1C
00180 e5932000 ldr r2, [r3]
00184 e59f33a8 ldr r3, [pc, #0x3A8]
00188 e5933000 ldr r3, [r3]
0018c e0822003 add r2, r2, r3
00190 e59d3004 ldr r3, [sp, #4]
00194 e2833028 add r3, r3, #0x28
00198 e5832000 str r2, [r3]
; 1065 : ASSERT(!(pCD->TxDescPhysAddr & 0x3));
; 1066 : //Result = VosAllocSharedMemory( pChip, (WORD)(sizeof(TxDesc_t)*TXDESCCOUNT),
; 1067 : // (PVOID *)(&pCD->pTxDesc), (DWORD *)(&pCD->TxDescPhysAddr) );
; 1068 : //
; 1069 : //if ( Result != TRUE )
; 1070 : // return FALSE;
; 1071 :
; 1072 : /* Initialize Transmit Descriptor Queue limit pointer */
; 1073 : pCD->pTxDescLimit = pCD->pTxDesc + TXDESCCOUNT;
0019c e59d3004 ldr r3, [sp, #4]
001a0 e283301c add r3, r3, #0x1C
001a4 e5933000 ldr r3, [r3]
001a8 e2832080 add r2, r3, #0x80
001ac e59d3004 ldr r3, [sp, #4]
001b0 e2833020 add r3, r3, #0x20
001b4 e5832000 str r2, [r3]
; 1074 :
; 1075 : /* Initialize the Transmit Descriptor Queue registers */
; 1076 : WriteDWord( OpReg_TxDBA, pCD->TxDescPhysAddr );
001b8 e59d3004 ldr r3, [sp, #4]
001bc e2831028 add r1, r3, #0x28
001c0 e59f3368 ldr r3, [pc, #0x368]
001c4 e5933000 ldr r3, [r3]
001c8 e28320b0 add r2, r3, #0xB0
001cc e5913000 ldr r3, [r1]
001d0 e5823000 str r3, [r2]
; 1077 : WriteWord( OpReg_TxDBL, sizeof(TxDesc_t)*TXDESCCOUNT );
001d4 e59f3354 ldr r3, [pc, #0x354]
001d8 e5933000 ldr r3, [r3]
001dc e28320b4 add r2, r3, #0xB4
001e0 e3a03080 mov r3, #0x80
001e4 e1c230b0 strh r3, [r2]
; 1078 : WriteDWord( OpReg_TxDTH, 0x00040002);
001e8 e59f3340 ldr r3, [pc, #0x340]
001ec e5933000 ldr r3, [r3]
001f0 e28320e4 add r2, r3, #0xE4
001f4 e3a03701 mov r3, #1, 14
001f8 e3833002 orr r3, r3, #2
001fc e5823000 str r3, [r2]
; 1079 :
; 1080 : /* Allocate shared memory for the Transmit Status Queue */
; 1081 : pCD->pTxStat = (PVOID) &pCS8950Buffer->TxStat[0];
00200 e59f3330 ldr r3, [pc, #0x330]
00204 e5933000 ldr r3, [r3]
00208 e2832d0a add r2, r3, #0xA, 26
0020c e59d3004 ldr r3, [sp, #4]
00210 e283302c add r3, r3, #0x2C
00214 e5832000 str r2, [r3]
; 1082 : pCD->TxStatPhysAddr = CONVERT_TO_PHYSICAL(pCD->pTxStat);
00218 e59d3004 ldr r3, [sp, #4]
0021c e283302c add r3, r3, #0x2C
00220 e5932000 ldr r2, [r3]
00224 e59f3308 ldr r3, [pc, #0x308]
00228 e5933000 ldr r3, [r3]
0022c e0822003 add r2, r2, r3
00230 e59d3004 ldr r3, [sp, #4]
00234 e2833038 add r3, r3, #0x38
00238 e5832000 str r2, [r3]
; 1083 : ASSERT(!(pCD->TxStatPhysAddr & 0x3));
; 1084 : //Result = VosAllocSharedMemory( pChip, (WORD)(sizeof(TxStat_t)*TXSTATCOUNT),
; 1085 : // (PVOID *)(&pCD->pTxStat), (DWORD *)(&pCD->TxStatPhysAddr) );
; 1086 : //
; 1087 : //if ( Result != TRUE )
; 1088 : // return FALSE;
; 1089 :
; 1090 : /* Initialize Transmit Status Queue limit pointer */
; 1091 : pCD->pTxStatLimit = pCD->pTxStat + TXSTATCOUNT;
0023c e59d3004 ldr r3, [sp, #4]
00240 e283302c add r3, r3, #0x2C
00244 e5933000 ldr r3, [r3]
00248 e2832040 add r2, r3, #0x40
0024c e59d3004 ldr r3, [sp, #4]
00250 e2833030 add r3, r3, #0x30
00254 e5832000 str r2, [r3]
; 1092 :
; 1093 : /* Initialize the Transmit Status Queue registers */
; 1094 : WriteDWord( OpReg_TxSBA, pCD->TxStatPhysAddr );
00258 e59d3004 ldr r3, [sp, #4]
0025c e2831038 add r1, r3, #0x38
00260 e59f32c8 ldr r3, [pc, #0x2C8]
00264 e5933000 ldr r3, [r3]
00268 e28320c0 add r2, r3, #0xC0
0026c e5913000 ldr r3, [r1]
00270 e5823000 str r3, [r2]
; 1095 : WriteWord( OpReg_TxSBL, sizeof(TxStat_t)*TXSTATCOUNT );
00274 e59f32b4 ldr r3, [pc, #0x2B4]
00278 e5933000 ldr r3, [r3]
0027c e28320c4 add r2, r3, #0xC4
00280 e3a03040 mov r3, #0x40
00284 e1c230b0 strh r3, [r2]
; 1096 : WriteDWord( OpReg_TxSTH, 0x00040002 );
00288 e59f32a0 ldr r3, [pc, #0x2A0]
0028c e5933000 ldr r3, [r3]
00290 e28320dc add r2, r3, #0xDC
00294 e3a03701 mov r3, #1, 14
00298 e3833002 orr r3, r3, #2
0029c e5823000 str r3, [r2]
; 1097 :
; 1098 : /* Allocate receive buffers and initialize the Receive Descriptor Queue */
; 1099 : for ( Index=0; Index<RXDESCCOUNT; Index++ )
002a0 e3a03000 mov r3, #0
002a4 e1cd30b0 strh r3, [sp]
002a8 ea000004 b |$L15702|
002ac |$L15703|
002ac e1dd30b0 ldrh r3, [sp]
002b0 e2833001 add r3, r3, #1
002b4 e1a03803 mov r3, r3, lsl #16
002b8 e1a03823 mov r3, r3, lsr #16
002bc e1cd30b0 strh r3, [sp]
002c0 |$L15702|
002c0 e1dd30b0 ldrh r3, [sp]
002c4 e3530020 cmp r3, #0x20
002c8 aa000055 bge |$L15704|
; 1100 : {
; 1101 : /* Allocate shared memory for a receive buffer */
; 1102 : pCD->R
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -