⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dm9000.cod

📁 PXA255/270平台的 DM9000AE网卡驱动程序
💻 COD
📖 第 1 页 / 共 5 页
字号:
; File e:\wince500\platform\berrydale\src\drivers\dm9000\dm9000.cpp

  00000			 AREA	 |.text| { |?DeviceConfigureParameters@C_DM9000@@UAAPAU_CONFIG_PARAMETER@@XZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DeviceConfigureParameters@C_DM9000@@UAAPAU_CONFIG_PARAMETER@@XZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?DeviceConfigureParameters@C_DM9000@@UAAPAU_CONFIG_PARAMETER@@XZ| } ; comdat associative
|$T36593| DCD	|$L36592|
	DCD	0x40000300
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?DeviceConfigureParameters@C_DM9000@@UAAPAU_CONFIG_PARAMETER@@XZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DeviceConfigureParameters@C_DM9000@@UAAPAU_CONFIG_PARAMETER@@XZ| PROC ; C_DM9000::DeviceConfigureParameters

; 100  : {

  00000		 |$L36592|
  00000		 |$M36590|

; 101  : 	return (PCONFIG_PARAMETER)&g_szDm9ConfigParams[0];

  00000	e59f0000	 ldr         r0, [pc]

; 102  : }

  00004	e12fff1e	 bx          lr
  00008		 |$L36595|
  00008	00000000	 DCD         |?g_szDm9ConfigParams@@3PAU_CONFIG_PARAMETER@@A|
  0000c		 |$M36591|

			 ENDP  ; |?DeviceConfigureParameters@C_DM9000@@UAAPAU_CONFIG_PARAMETER@@XZ|, C_DM9000::DeviceConfigureParameters


  00000			 AREA	 |.text| { |?DeviceSetEepromFormat@C_DM9000@@UAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DeviceSetEepromFormat@C_DM9000@@UAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?DeviceSetEepromFormat@C_DM9000@@UAAXXZ| } ; comdat associative
|$T36602| DCD	|$L36601|
	DCD	0x40000700
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?DeviceSetEepromFormat@C_DM9000@@UAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DeviceSetEepromFormat@C_DM9000@@UAAXXZ| PROC ; C_DM9000::DeviceSetEepromFormat

; 105  : {

  00000		 |$L36601|
  00000		 |$M36599|

; 106  : 	m_szEepromFormat[EID_MAC_ADDRESS] = 0;

  00000	e3a03000	 mov         r3, #0

; 107  : 	m_szEepromFormat[EID_VENDOR_ID] = 8;

  00004	e3a02008	 mov         r2, #8

; 108  : 	m_szEepromFormat[EID_PRODUCT_ID] = 10;

  00008	e3a0100a	 mov         r1, #0xA
  0000c	e58030bc	 str         r3, [r0, #0xBC]
  00010	e58020c0	 str         r2, [r0, #0xC0]
  00014	e58010c4	 str         r1, [r0, #0xC4]

; 109  : }

  00018	e12fff1e	 bx          lr
  0001c		 |$M36600|

			 ENDP  ; |?DeviceSetEepromFormat@C_DM9000@@UAAXXZ|, C_DM9000::DeviceSetEepromFormat

	IMPORT	|WRITE_PORT_UCHAR|
; File e:\wince500\platform\berrydale\src\drivers\dm9000\common.h

  00000			 AREA	 |.text| { |?DeviceWritePort@C_DM9000@@UAAKKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DeviceWritePort@C_DM9000@@UAAKKK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DeviceWritePort@C_DM9000@@UAAKKK@Z| } ; comdat associative
|$T36620| DCD	|$L36619|
	DCD	0x40001601
; Function compile flags: /Ogsy
; File e:\wince500\platform\berrydale\src\drivers\dm9000\dm9000.cpp

  00000			 AREA	 |.text| { |?DeviceWritePort@C_DM9000@@UAAKKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DeviceWritePort@C_DM9000@@UAAKKK@Z| PROC ; C_DM9000::DeviceWritePort

; 185  : {

  00000		 |$L36619|
  00000	e92d40f0	 stmdb       sp!, {r4 - r7, lr}
  00004		 |$M36617|
  00004	e1a06002	 mov         r6, r2
  00008	e1a05001	 mov         r5, r1
  0000c	e1a04000	 mov         r4, r0

; 186  : 
; 187  : 	ENTER_CRITICAL_SECTION

  00010	e2847b01	 add         r7, r4, #1, 22
  00014	e28700b8	 add         r0, r7, #0xB8
  00018	eb000000	 bl          NdisAcquireSpinLock

; 188  : 
; 189  : 	VALIDATE_ADDR_PORT(uPort);

  0001c	e59434cc	 ldr         r3, [r4, #0x4CC]
  00020	e1530005	 cmp         r3, r5
  00024	159400d8	 ldrne       r0, [r4, #0xD8]
  00028	120510ff	 andne       r1, r5, #0xFF
  0002c	158454cc	 strne       r5, [r4, #0x4CC]
  00030	1b000000	 blne        WRITE_PORT_UCHAR

; 190  : 
; 191  : 	NdisRawWritePortUchar(
; 192  : 		m_szCurrentSettings[SID_PORT_BASE_ADDRESS] + DM9000_DATA_OFFSET, 
; 193  : 		(U8)uValue);

  00034	e59430d8	 ldr         r3, [r4, #0xD8]
  00038	e20610ff	 and         r1, r6, #0xFF
  0003c	e2830901	 add         r0, r3, #1, 18
  00040	eb000000	 bl          WRITE_PORT_UCHAR

; 194  : 
; 195  : 	LEAVE_CRITICAL_SECTION

  00044	e28700b8	 add         r0, r7, #0xB8
  00048	eb000000	 bl          NdisReleaseSpinLock

; 196  : 	
; 197  : 	return uValue;

  0004c	e1a00006	 mov         r0, r6

; 198  : }

  00050	e8bd40f0	 ldmia       sp!, {r4 - r7, lr}
  00054	e12fff1e	 bx          lr
  00058		 |$M36618|

			 ENDP  ; |?DeviceWritePort@C_DM9000@@UAAKKK@Z|, C_DM9000::DeviceWritePort

	IMPORT	|READ_PORT_UCHAR|
; File e:\wince500\platform\berrydale\src\drivers\dm9000\common.h

  00000			 AREA	 |.text| { |?DeviceReadPort@C_DM9000@@UAAKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DeviceReadPort@C_DM9000@@UAAKK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DeviceReadPort@C_DM9000@@UAAKK@Z| } ; comdat associative
|$T36637| DCD	|$L36636|
	DCD	0x40001501
; Function compile flags: /Ogsy
; File e:\wince500\platform\berrydale\src\drivers\dm9000\dm9000.cpp

  00000			 AREA	 |.text| { |?DeviceReadPort@C_DM9000@@UAAKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DeviceReadPort@C_DM9000@@UAAKK@Z| PROC ; C_DM9000::DeviceReadPort

; 203  : {

  00000		 |$L36636|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004		 |$M36634|
  00004	e1a05001	 mov         r5, r1
  00008	e1a04000	 mov         r4, r0

; 204  : 	U16		val;
; 205  : 
; 206  : 	ENTER_CRITICAL_SECTION

  0000c	e2846b01	 add         r6, r4, #1, 22
  00010	e28600b8	 add         r0, r6, #0xB8
  00014	eb000000	 bl          NdisAcquireSpinLock

; 207  : 
; 208  : 	VALIDATE_ADDR_PORT(uPort);

  00018	e59434cc	 ldr         r3, [r4, #0x4CC]
  0001c	e1530005	 cmp         r3, r5
  00020	159400d8	 ldrne       r0, [r4, #0xD8]
  00024	120510ff	 andne       r1, r5, #0xFF
  00028	158454cc	 strne       r5, [r4, #0x4CC]
  0002c	1b000000	 blne        WRITE_PORT_UCHAR

; 209  : 
; 210  : 	NdisRawReadPortUchar(
; 211  : 		m_szCurrentSettings[SID_PORT_BASE_ADDRESS] + DM9000_DATA_OFFSET, &val);

  00030	e59430d8	 ldr         r3, [r4, #0xD8]
  00034	e2830901	 add         r0, r3, #1, 18
  00038	eb000000	 bl          READ_PORT_UCHAR
  0003c	e1a04000	 mov         r4, r0

; 212  : 	
; 213  : 	LEAVE_CRITICAL_SECTION

  00040	e28600b8	 add         r0, r6, #0xB8
  00044	eb000000	 bl          NdisReleaseSpinLock

; 214  : 	
; 215  : 	return (U32)val;

  00048	e1a00004	 mov         r0, r4

; 216  : }

  0004c	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  00050	e12fff1e	 bx          lr
  00054		 |$M36635|

			 ENDP  ; |?DeviceReadPort@C_DM9000@@UAAKK@Z|, C_DM9000::DeviceReadPort

	IMPORT	|?DevicePolling@NIC_DEVICE_OBJECT@@QAAHKKKKK@Z| ; NIC_DEVICE_OBJECT::DevicePolling

  00000			 AREA	 |.text| { |?DeviceReadEeprom@C_DM9000@@UAAGK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DeviceReadEeprom@C_DM9000@@UAAGK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DeviceReadEeprom@C_DM9000@@UAAGK@Z| } ; comdat associative
|$T36648| DCD	|$L36647|
	DCD	0x40003702
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?DeviceReadEeprom@C_DM9000@@UAAGK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DeviceReadEeprom@C_DM9000@@UAAGK@Z| PROC ; C_DM9000::DeviceReadEeprom

; 220  : {

  00000		 |$L36647|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004	e24dd008	 sub         sp, sp, #8
  00008		 |$M36645|
  00008	e1a02001	 mov         r2, r1
  0000c	e1a05000	 mov         r5, r0

; 221  : 	U16		highbyte,lowbyte;
; 222  : 	
; 223  : 	// assign the register offset
; 224  : 	DeviceWritePort(DM9_EPADDR,uWordAddress);

  00010	e5953000	 ldr         r3, [r5]
  00014	e3a0100c	 mov         r1, #0xC
  00018	e593304c	 ldr         r3, [r3, #0x4C]
  0001c	e1a0e00f	 mov         lr, pc
  00020	e12fff13	 bx          r3

; 225  : 	
; 226  : 	// issue EEPROM read command<2>
; 227  : 	DeviceWritePort(DM9_EPCNTL,(1<<2));

  00024	e5953000	 ldr         r3, [r5]
  00028	e3a02004	 mov         r2, #4
  0002c	e3a0100b	 mov         r1, #0xB
  00030	e593304c	 ldr         r3, [r3, #0x4C]
  00034	e1a00005	 mov         r0, r5
  00038	e1a0e00f	 mov         lr, pc
  0003c	e12fff13	 bx          r3

; 228  : 	
; 229  : 	// wait until status bit<0> cleared
; 230  : 	// 80 uS, 5 times
; 231  : 	if(!DevicePolling(DM9_EPCNTL,(1<<0),0x00,80,5))

  00040	e3a03005	 mov         r3, #5
  00044	e3a02050	 mov         r2, #0x50
  00048	e58d3004	 str         r3, [sp, #4]
  0004c	e58d2000	 str         r2, [sp]
  00050	e3a03000	 mov         r3, #0
  00054	e3a02001	 mov         r2, #1
  00058	e3a0100b	 mov         r1, #0xB
  0005c	e1a00005	 mov         r0, r5
  00060	eb000000	 bl          |?DevicePolling@NIC_DEVICE_OBJECT@@QAAHKKKKK@Z|
  00064	e3500000	 cmp         r0, #0

; 232  : 		return (U16)-1;

  00068	03a00cff	 moveq       r0, #0xFF, 24
  0006c	038000ff	 orreq       r0, r0, #0xFF
  00070	0a000016	 beq         |$L35629|

; 233  : 	
; 234  : 	// stop command
; 235  : 	DeviceWritePort(DM9_EPCNTL,0);

  00074	e5953000	 ldr         r3, [r5]
  00078	e3a02000	 mov         r2, #0
  0007c	e3a0100b	 mov         r1, #0xB
  00080	e593304c	 ldr         r3, [r3, #0x4C]
  00084	e1a00005	 mov         r0, r5
  00088	e1a0e00f	 mov         lr, pc
  0008c	e12fff13	 bx          r3

; 236  : 
; 237  : 	// retrive data
; 238  : 	lowbyte  = (U16)DeviceReadPort(DM9_EPLOW);

  00090	e5953000	 ldr         r3, [r5]
  00094	e3a0100d	 mov         r1, #0xD
  00098	e1a00005	 mov         r0, r5
  0009c	e5933048	 ldr         r3, [r3, #0x48]
  000a0	e1a0e00f	 mov         lr, pc
  000a4	e12fff13	 bx          r3

; 239  : 	highbyte = (U16)DeviceReadPort(DM9_EPHIGH);

  000a8	e5953000	 ldr         r3, [r5]
  000ac	e1a04000	 mov         r4, r0
  000b0	e3a0100e	 mov         r1, #0xE
  000b4	e5933048	 ldr         r3, [r3, #0x48]
  000b8	e1a00005	 mov         r0, r5
  000bc	e1a0e00f	 mov         lr, pc
  000c0	e12fff13	 bx          r3

; 240  : 	
; 241  : 	return ((highbyte<<8) | lowbyte);

  000c4	e1843400	 orr         r3, r4, r0, lsl #8
  000c8	e1a00803	 mov         r0, r3, lsl #16
  000cc	e1a00820	 mov         r0, r0, lsr #16
  000d0		 |$L35629|

; 242  : }

  000d0	e28dd008	 add         sp, sp, #8
  000d4	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  000d8	e12fff1e	 bx          lr
  000dc		 |$M36646|

			 ENDP  ; |?DeviceReadEeprom@C_DM9000@@UAAGK@Z|, C_DM9000::DeviceReadEeprom


  00000			 AREA	 |.text| { |?DeviceWriteEeprom@C_DM9000@@UAAGKG@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DeviceWriteEeprom@C_DM9000@@UAAGKG@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DeviceWriteEeprom@C_DM9000@@UAAGKG@Z| } ; comdat associative
|$T36660| DCD	|$L36659|
	DCD	0x40003302
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?DeviceWriteEeprom@C_DM9000@@UAAGKG@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DeviceWriteEeprom@C_DM9000@@UAAGKG@Z| PROC ; C_DM9000::DeviceWriteEeprom

; 247  : {

  00000		 |$L36659|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004	e24dd008	 sub         sp, sp, #8
  00008		 |$M36657|
  00

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -