📄 cs8950.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615
TTL d:\wince420\platform\ep931x\drivers\ethdbg\cs8950\.\cs8950.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |pCS8950Buffer| [ DATA ]
EXPORT |ulPhysicalOffset| [ DATA ]
EXPORT |bStop| [ DATA ]
00000 AREA |.data|, DATA
COMMON |Chip|, 0x18
COMMON |pChip|, 0x4
00000 AREA |.bss|, NOINIT
|Global_TxTotal| % 0x4
|Global_TxOkCnt| % 0x4
|Global_TxNotOkCnt| % 0x4
|Global_RxTotalCnt| % 0x4
|Global_RxNotOkCnt| % 0x4
|Global_TxInProcess| % 0x4
|gdwEthernetBase| % 0x4
|gusMacAddr| % 0x6
|pCS8950Buffer| % 0x4
|ulPhysicalOffset| % 0x4
00000 AREA |.rdata|, DATA, READONLY
|EdbgVendorIds| DCW 0x0
DCW 0x0
DCD 0x4033
DCB 0x1
DCB "AD", 0x0
DCW 0x1050
DCW 0x940
DCD 0x4005
DCB 0x1
DCB "LS", 0x0
DCW 0x1050
DCW 0x940
DCD 0x2078
DCB 0x1
DCB "LS", 0x0
DCW 0x10ec
DCW 0x8029
DCD 0xc0f0
DCB 0x1
DCB "KS", 0x0
DCW 0x10ec
DCW 0x8129
DCD 0x0
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0x900b
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xd0c9
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xe04c
DCB 0x4
DCB "RT", 0x0
DCW 0x1186
DCW 0x1300
DCD 0x50ba
DCB 0x4
DCB "DL", 0x0
DCW 0x100b
DCW 0x20
DCD 0xa0cc
DCB 0x5
DCB "NG", 0x0
DCW 0x10b7
DCW 0x9050
DCD 0x6008
DCB 0x6
DCB "3C", 0x0
DCW 0x10b7
DCW 0x9200
DCD 0x476
DCB 0x6
DCB "3C", 0x0
00000 AREA |.data|, DATA
|bStop| DCD 0x1
EXPORT |CS8950Disable|
; File d:\wince420\platform\ep931x\drivers\ethdbg\cs8950\cs8950.c
00000 AREA |.text| { |CS8950Disable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CS8950Disable|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950Disable| } ; comdat associative
|$T14757| DCD |CS8950Disable|
DCD 0x40000800
; Function compile flags: /Ods
00000 AREA |.text| { |CS8950Disable| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CS8950Disable| PROC
; 108 : {
00000 |$M14755|
; 109 : WriteDWord(OpReg_BMCTL, BMCTL_TxDis | BMCTL_RxDis);
00000 e59f0014 ldr r0, [pc, #0x14]
00004 e5901000 ldr r1, [r0]
00008 e3a02c02 mov r2, #2, 24
0000c e3820002 orr r0, r2, #2
00010 e3a03080 mov r3, #0x80
00014 e7810003 str r0, [r1, +r3]
; 110 : }
00018 e12fff1e bx lr
0001c |$L14759|
0001c 00000000 DCD |gdwEthernetBase|
00020 |$M14756|
ENDP ; |CS8950Disable|
EXPORT |CS8950DMAInit|
EXPORT |??_C@_0EL@FCAH@CS8950DMAInit?3?5?5dwPhysicalAddr?5?$DN@| [ DATA ] ; `string'
EXPORT |??_C@_0CM@FOFF@CS8950DMAInit?3?5CS8950?5DMA?5buffer@| [ DATA ] ; `string'
IMPORT |EdbgOutputDebugString|
00000 AREA |.text| { |CS8950DMAInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CS8950DMAInit|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950DMAInit| } ; comdat associative
|$T14765| DCD |CS8950DMAInit|
DCD 0x40002704
00000 AREA |.rdata| { |??_C@_0EL@FCAH@CS8950DMAInit?3?5?5dwPhysicalAddr?5?$DN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0EL@FCAH@CS8950DMAInit?3?5?5dwPhysicalAddr?5?$DN@| DCB "CS8950DMAI"
DCB "nit: dwPhysicalAddr = 0x%x, dwVirtualAddr= 0x%x dwSize "
DCB "= 0x%x", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CM@FOFF@CS8950DMAInit?3?5CS8950?5DMA?5buffer@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CM@FOFF@CS8950DMAInit?3?5CS8950?5DMA?5buffer@| DCB "CS8950DMAInit"
DCB ": CS8950 DMA buffer to Small", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ods
00000 AREA |.text| { |CS8950DMAInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CS8950DMAInit| PROC
; 125 : {
00000 e1a0c00d mov r12, sp
00004 e92d0007 stmdb sp!, {r0 - r2}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd008 sub sp, sp, #8
00010 |$M14763|
; 126 : BOOL bReturn = FALSE;
00010 e3a00000 mov r0, #0
00014 e58d0000 str r0, [sp]
; 127 : EdbgOutputDebugString
; 128 : (
; 129 : "CS8950DMAInit: dwPhysicalAddr = 0x%x, dwVirtualAddr= 0x%x "
; 130 : "dwSize = 0x%x\r\n",
; 131 : dwPhysicalAddr,
; 132 : dwVirtualAddr,
; 133 : dwSize
; 134 : );
00018 e59d3018 ldr r3, [sp, #0x18]
0001c e59d2014 ldr r2, [sp, #0x14]
00020 e59d1010 ldr r1, [sp, #0x10]
00024 e59f006c ldr r0, [pc, #0x6C]
00028 eb000000 bl EdbgOutputDebugString
; 135 :
; 136 : if(dwSize > sizeof(CS9850_BUFFER))
0002c e59d3018 ldr r3, [sp, #0x18]
00030 e3a00b47 mov r0, #0x47, 22
00034 e3801d0f orr r1, r0, #0xF, 26
00038 e1530001 cmp r3, r1
0003c 9a00000a bls |$L13976|
; 137 : {
; 138 : pCS8950Buffer = (CS9850_BUFFER *) dwVirtualAddr;
00040 e59d0014 ldr r0, [sp, #0x14]
00044 e59f1048 ldr r1, [pc, #0x48]
00048 e5810000 str r0, [r1]
; 139 : ulPhysicalOffset = dwPhysicalAddr - dwVirtualAddr;
0004c e59d2010 ldr r2, [sp, #0x10]
00050 e59d0014 ldr r0, [sp, #0x14]
00054 e0421000 sub r1, r2, r0
00058 e59f3030 ldr r3, [pc, #0x30]
0005c e5831000 str r1, [r3]
; 140 : bReturn = TRUE;
00060 e3a00001 mov r0, #1
00064 e58d0000 str r0, [sp]
; 141 : }
; 142 : else
00068 ea000001 b |$L13978|
0006c |$L13976|
; 143 : {
; 144 : EdbgOutputDebugString
; 145 : (
; 146 : "CS8950DMAInit: CS8950 DMA buffer to Small\r\n"
; 147 : );
0006c e59f0018 ldr r0, [pc, #0x18]
00070 eb000000 bl EdbgOutputDebugString
00074 |$L13978|
; 148 : }
; 149 :
; 150 : return bReturn;
00074 e59d0000 ldr r0, [sp]
00078 e58d0004 str r0, [sp, #4]
0007c e59d0004 ldr r0, [sp, #4]
; 151 : }
00080 e28dd008 add sp, sp, #8
00084 e89d6000 ldmia sp, {sp, lr}
00088 e12fff1e bx lr
0008c |$L14767|
0008c 00000000 DCD |??_C@_0CM@FOFF@CS8950DMAInit?3?5CS8950?5DMA?5buffer@|
00090 00000000 DCD |ulPhysicalOffset|
00094 00000000 DCD |pCS8950Buffer|
00098 00000000 DCD |??_C@_0EL@FCAH@CS8950DMAInit?3?5?5dwPhysicalAddr?5?$DN@|
0009c |$M14764|
ENDP ; |CS8950DMAInit|
EXPORT |CS8950Init|
EXPORT |??_C@_0CE@IIJN@CS8950Init?3?5?5pbBaseAddress?5?$DN?50x?$CF@| [ DATA ] ; `string'
EXPORT |??_C@_0DB@KCFA@CS8950Init?3?5?5pChip?5?$DN?50x?$CFx?0?5pChip@| [ DATA ] ; `string'
EXPORT |??_C@_0CO@DOKL@CS8950?3?5Transmit?5State?5machine?5n@| [ DATA ] ; `string'
EXPORT |??_C@_0CN@CGBO@CS8950?3?5Receive?5State?5machine?5ne@| [ DATA ] ; `string'
IMPORT |DelayInuSec|
0002a AREA |.bss|, NOINIT
|gCD| % 0x250
00000 AREA |.text| { |CS8950Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CS8950Init|, PDATA, SELECTION=5, ASSOC=|.text| { |CS8950Init| } ; comdat associative
|$T14773| DCD |CS8950Init|
DCD 0x4000e804
00000 AREA |.rdata| { |??_C@_0CE@IIJN@CS8950Init?3?5?5pbBaseAddress?5?$DN?50x?$CF@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CE@IIJN@CS8950Init?3?5?5pbBaseAddress?5?$DN?50x?$CF@| DCB "CS8950"
DCB "Init: pbBaseAddress = 0x%x", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0DB@KCFA@CS8950Init?3?5?5pChip?5?$DN?50x?$CFx?0?5pChip@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DB@KCFA@CS8950Init?3?5?5pChip?5?$DN?50x?$CFx?0?5pChip@| DCB "CS89"
DCB "50Init: pChip = 0x%x, pChip->pData = 0x%x", 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CO@DOKL@CS8950?3?5Transmit?5State?5machine?5n@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CO@DOKL@CS8950?3?5Transmit?5State?5machine?5n@| DCB "CS8950: Tran"
DCB "smit State machine never resets.", 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0CN@CGBO@CS8950?3?5Receive?5State?5machine?5ne@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CN@CGBO@CS8950?3?5Receive?5State?5machine?5ne@| DCB "CS8950: Rece"
DCB "ive State machine never resets.", 0xa, 0x0 ; `string'
; Function compile flags: /Ods
00000 AREA |.text| { |CS8950Init| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CS8950Init| PROC
; 175 : {
00000 e1a0c00d mov r12, sp
00004 e92d0007 stmdb sp!, {r0 - r2}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd018 sub sp, sp, #0x18
00010 |$M14771|
; 176 :
; 177 : WORD Result;
; 178 : MAXFL MaxFL;
; 179 : DWORD dwCount;
; 180 :
; 181 : EdbgOutputDebugString
; 182 : (
; 183 : "CS8950Init: pbBaseAddress = 0x%x\r\n",
; 184 : pbBaseAddress
; 185 : );
00010 e59d1020 ldr r1, [sp, #0x20]
00014 e59f0380 ldr r0, [pc, #0x380]
00018 eb000000 bl EdbgOutputDebugString
; 186 :
; 187 :
; 188 : pChip=&Chip;
0001c e59f3374 ldr r3, [pc, #0x374]
00020 e59f0358 ldr r0, [pc, #0x358]
00024 e5803000 str r3, [r0]
; 189 :
; 190 : pChip->pData=&gCD;
00028 e59f1350 ldr r1, [pc, #0x350]
0002c e5910000 ldr r0, [r1]
00030 e59f235c ldr r2, [pc, #0x35C]
00034 e580200c str r2, [r0, #0xC]
; 191 :
; 192 : gdwEthernetBase = (ULONG)pbBaseAddress;
00038 e59d1020 ldr r1, [sp, #0x20]
0003c e59f0338 ldr r0, [pc, #0x338]
00040 e5801000 str r1, [r0]
; 193 :
; 194 :
; 195 : EdbgOutputDebugString
; 196 : (
; 197 : "CS8950Init: pChip = 0x%x, pChip->pData = 0x%x\r\n",
; 198 : (ULONG)pChip,
; 199 : (ULONG)pChip->pData
; 200 : );
00044 e59f2334 ldr r2, [pc, #0x334]
00048 e5920000 ldr r0, [r2]
0004c e590200c ldr r2, [r0, #0xC]
00050 e59f0328 ldr r0, [pc, #0x328]
00054 e5901000 ldr r1, [r0]
00058 e59f0330 ldr r0, [pc, #0x330]
0005c eb000000 bl EdbgOutputDebugString
; 201 :
; 202 :
; 203 : //
; 204 : // Check to make sure that CS8950DmaInit has been called.
; 205 : //
; 206 : if(!pCS8950Buffer)
00060 e59f3324 ldr r3, [pc, #0x324]
00064 e5930000 ldr r0, [r3]
00068 e3500000 cmp r0, #0
0006c 1a000002 bne |$L13996|
; 207 : {
; 208 : return FALSE;
00070 e3a00000 mov r0, #0
00074 e58d000c str r0, [sp, #0xC]
00078 ea0000bb b |$L13987|
0007c |$L13996|
; 209 : }
; 210 :
; 211 : //
; 212 : // Lets get the mac address. If the MAC address has not been initialized,
; 213 : // There is not any point in continuing.
; 214 : //
; 215 : GetMACAddress(MacAddr);
0007c e59d0028 ldr r0, [sp, #0x28]
00080 eb000000 bl GetMACAddress
; 216 : if(MacAddr[0] == 0 && MacAddr[1] == 0 && MacAddr[2] == 0)
00084 e59d3028 ldr r3, [sp, #0x28]
00088 e1d300b0 ldrh r0, [r3]
0008c e1a01800 mov r1, r0, lsl #16
00090 e1b02821 movs r2, r1, lsr #16
00094 1a00000c bne |$L13997|
00098 e59d0028 ldr r0, [sp, #0x28]
0009c e1d010b2 ldrh r1, [r0, #2]
000a0 e1a02801 mov r2, r1, lsl #16
000a4 e1b00822 movs r0, r2, lsr #16
000a8 1a000007 bne |$L13997|
000ac e59d0028 ldr r0, [sp, #0x28]
000b0 e1d010b4 ldrh r1, [r0, #4]
000b4 e1a02801 mov r2, r1, lsl #16
000b8 e1b00822 movs r0, r2, lsr #16
000bc 1a000002 bne |$L13997|
; 217 : return FALSE;
000c0 e3a00000 mov r0, #0
000c4 e58d000c str r0, [sp, #0xC]
000c8 ea0000a7 b |$L13987|
000cc |$L13997|
; 218 :
; 219 :
; 220 : //
; 221 : // Stop the transmit and recieve queues.
; 222 : //
; 223 : WriteDWord( OpReg_BMCTL, BMCTL_TxDis | BMCTL_RxDis);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -