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

📄 driver.cod

📁 PXA255/270平台的 DM9000AE网卡驱动程序
💻 COD
📖 第 1 页 / 共 5 页
字号:
  00004	e1b05001	 movs        r5, r1
  00008	e1a04000	 mov         r4, r0

; 329  : 		HALT(!pObject);

  0000c	059f0034	 ldreq       r0, [pc, #0x34]
  00010	0b000000	 bleq        NKDbgPrintfW

; 330  : 
; 331  : 		m_spinLock.Lock();

  00014	e1a00004	 mov         r0, r4
  00018	eb000000	 bl          NdisAcquireSpinLock

; 332  : 		pObject->pNext = NULL;

  0001c	e3a03000	 mov         r3, #0
  00020	e5853000	 str         r3, [r5]

; 333  : 		if(m_pTail == NULL)

  00024	e5943018	 ldr         r3, [r4, #0x18]

; 334  : 		{
; 335  : 			m_pHead = m_pTail = pObject;
; 336  : 		}
; 337  : 		else	
; 338  : 		{
; 339  : 			m_pTail->pNext = pObject;
; 340  : 			m_pTail = pObject;
; 341  : 		}
; 342  : 		m_spinLock.Release();

  00028	e1a00004	 mov         r0, r4
  0002c	e3530000	 cmp         r3, #0
  00030	05845014	 streq       r5, [r4, #0x14]
  00034	15835000	 strne       r5, [r3]
  00038	e5845018	 str         r5, [r4, #0x18]
  0003c	eb000000	 bl          NdisReleaseSpinLock

; 343  : 	};

  00040	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00044	e12fff1e	 bx          lr
  00048		 |$L36191|
  00048	00000000	 DCD         |??_C@_1BK@KENPOFKP@?$AAF?$AAA?$AAT?$AAA?$AAL?$AA?5?$AAE?$AAR?$AAR?$AAO?$AAR?$AA?6?$AA?$AA@|
  0004c		 |$M36187|

			 ENDP  ; |?Enqueue@CQueue@@QAAXPAU_CQUEUE_GEN_HEADER@@@Z|, CQueue::Enqueue

	EXPORT	|?Dequeue@CQueue@@QAAPAU_CQUEUE_GEN_HEADER@@XZ| ; CQueue::Dequeue

  00000			 AREA	 |.text| { |?Dequeue@CQueue@@QAAPAU_CQUEUE_GEN_HEADER@@XZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$?Dequeue@CQueue@@QAAPAU_CQUEUE_GEN_HEADER@@XZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?Dequeue@CQueue@@QAAPAU_CQUEUE_GEN_HEADER@@XZ| } ; comdat associative
|$T36208| DCD	|$L36207|
	DCD	0x40001201
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?Dequeue@CQueue@@QAAPAU_CQUEUE_GEN_HEADER@@XZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |?Dequeue@CQueue@@QAAPAU_CQUEUE_GEN_HEADER@@XZ| PROC ; CQueue::Dequeue

; 346  : 	{

  00000		 |$L36207|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M36205|
  00004	e1a04000	 mov         r4, r0

; 347  : 		PCQUEUE_GEN_HEADER	pcurr = m_pHead;
; 348  : 		m_spinLock.Lock();

  00008	e5945014	 ldr         r5, [r4, #0x14]
  0000c	eb000000	 bl          NdisAcquireSpinLock

; 349  : 		if(m_pHead != NULL) 

  00010	e5943014	 ldr         r3, [r4, #0x14]
  00014	e1b02003	 movs        r2, r3
  00018	0a000005	 beq         |$L34890|

; 350  : 		{
; 351  : 			if(m_pHead == m_pTail)

  0001c	e5943018	 ldr         r3, [r4, #0x18]
  00020	e1520003	 cmp         r2, r3

; 352  : 				m_pHead = m_pTail = NULL;

  00024	03a03000	 moveq       r3, #0
  00028	05843018	 streq       r3, [r4, #0x18]

; 353  : 			else
; 354  : 				m_pHead = m_pHead->pNext;

  0002c	15923000	 ldrne       r3, [r2]
  00030	e5843014	 str         r3, [r4, #0x14]
  00034		 |$L34890|

; 355  : 		}
; 356  : 		m_spinLock.Release();

  00034	e1a00004	 mov         r0, r4
  00038	eb000000	 bl          NdisReleaseSpinLock

; 357  : 		return pcurr;

  0003c	e1a00005	 mov         r0, r5

; 358  : 	};

  00040	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00044	e12fff1e	 bx          lr
  00048		 |$M36206|

			 ENDP  ; |?Dequeue@CQueue@@QAAPAU_CQUEUE_GEN_HEADER@@XZ|, CQueue::Dequeue

	EXPORT	|??1CQueue@@QAA@XZ|			; CQueue::~CQueue

  00000			 AREA	 |.text| { |??1CQueue@@QAA@XZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$??1CQueue@@QAA@XZ|, PDATA, SELECTION=5, ASSOC=|.text| { |??1CQueue@@QAA@XZ| } ; comdat associative
|$T36219| DCD	|$L36218|
	DCD	0x40000401
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |??1CQueue@@QAA@XZ| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |??1CQueue@@QAA@XZ| PROC		; CQueue::~CQueue
  00000		 |$L36218|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M36216|
  00004	eb000000	 bl          NdisFreeSpinLock
  00008	e49de004	 ldr         lr, [sp], #4
  0000c	e12fff1e	 bx          lr
  00010		 |$M36217|

			 ENDP  ; |??1CQueue@@QAA@XZ|, CQueue::~CQueue

	EXPORT	|?DriverStart@NIC_DRIVER_OBJECT@@UAAXXZ| ; NIC_DRIVER_OBJECT::DriverStart
; File e:\wince500\platform\berrydale\src\drivers\dm9000\driver.cpp

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

  00000			 AREA	 |.pdata$$?DriverStart@NIC_DRIVER_OBJECT@@UAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?DriverStart@NIC_DRIVER_OBJECT@@UAAXXZ| } ; comdat associative
|$T36227| DCD	|$L36226|
	DCD	0x40000801
; Function compile flags: /Ogsy

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

  00000		 |?DriverStart@NIC_DRIVER_OBJECT@@UAAXXZ| PROC ; NIC_DRIVER_OBJECT::DriverStart

; 232  : {

  00000		 |$L36226|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M36224|

; 233  : #if	defined(PERF_TEST)
; 234  : 	RETAILMSG(TRUE,(
; 235  : 		TEXT("DriverStart, <tx=%d(%d)>\n")
; 236  : 		,
; 237  : 		m_pLower->m_szConfigures[CID_TXBUFFER_NUMBER],
; 238  : 		m_TQueue.Size()
; 239  : 		));
; 240  : #endif
; 241  : 
; 242  : 	m_pLower->DeviceStart();

  00004	e590000c	 ldr         r0, [r0, #0xC]
  00008	e5903000	 ldr         r3, [r0]
  0000c	e593303c	 ldr         r3, [r3, #0x3C]
  00010	e1a0e00f	 mov         lr, pc
  00014	e12fff13	 bx          r3

; 243  : 
; 244  : #if	!defined(PERF_TEST)
; 245  : 	return;
; 246  : #else	// of PERF_TEST
; 247  : #error no perf mode
; 248  : 	PCQUEUE_GEN_HEADER	pobj;
; 249  : 	
; 250  : 	PU8		pcurr;
; 251  : 	PU16	pshort;
; 252  : 
; 253  : #if	defined(PERF_TX_MODE)
; 254  : 
; 255  : 	int		loop;
; 256  : 	for(loop=0;(pobj = m_TQueue.Dequeue());loop++)
; 257  : 	{
; 258  : 		pcurr = (PU8)CQueueGetUserPointer(pobj);
; 259  : 		memset((void*)pcurr,0xff,pobj->nLength=ETH_MAX_FRAME_SIZE);
; 260  : 		
; 261  : 		pshort=(PU16)pcurr;
; 262  : 		*(pshort+0) = MAKE_WORD(0x91,0x02);
; 263  : 		*(pshort+1) = MAKE_WORD(0xCE,0xCE);
; 264  : 		*(pshort+2) = MAKE_WORD(0xCE,0xCE);
; 265  : 		*(long*)(pshort+6) = loop;
; 266  : 
; 267  : 		m_pLower->DeviceSend(pobj);
; 268  : 	} // of sending loop
; 269  : 	
; 270  : 	RETAILMSG(TRUE,(TEXT("TX_MODE:end of submission")));
; 271  : 	
; 272  : #endif	// of PERF_TX_MODE
; 273  : 
; 274  : 	SpawnPerfThread((PVOID)this);
; 275  : 
; 276  : #endif	// of PERF_TEST
; 277  : 
; 278  : }

  00018	e49de004	 ldr         lr, [sp], #4
  0001c	e12fff1e	 bx          lr
  00020		 |$M36225|

			 ENDP  ; |?DriverStart@NIC_DRIVER_OBJECT@@UAAXXZ|, NIC_DRIVER_OBJECT::DriverStart

	EXPORT	|??_GC_Exception@@QAAPAXI@Z|		; C_Exception::`scalar deleting destructor'
	IMPORT	|??3@YAXPAX@Z|				; operator delete
; File e:\wince500\platform\berrydale\src\drivers\dm9000\common.h

  00000			 AREA	 |.text| { |??_GC_Exception@@QAAPAXI@Z| }, CODE, ARM, SELECTION=2 ; comdat any

  00000			 AREA	 |.pdata$$??_GC_Exception@@QAAPAXI@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |??_GC_Exception@@QAAPAXI@Z| } ; comdat associative
|$T36241| DCD	|$L36240|
	DCD	0x40000d01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |??_GC_Exception@@QAAPAXI@Z| }, CODE, ARM, SELECTION=2 ; comdat any

  00000		 |??_GC_Exception@@QAAPAXI@Z| PROC	; C_Exception::`scalar deleting destructor'
  00000		 |$L36240|
  00000	e92d4030	 stmdb       sp!, {r4, r5, lr}
  00004		 |$M36238|
  00004	e1a04001	 mov         r4, r1
  00008	e1a05000	 mov         r5, r0
  0000c	e1d510b6	 ldrh        r1, [r5, #6]
  00010	e5950008	 ldr         r0, [r5, #8]
  00014	e3a02000	 mov         r2, #0
  00018	eb000000	 bl          NdisFreeMemory
  0001c	e3140001	 tst         r4, #1
  00020	11a00005	 movne       r0, r5
  00024	1b000000	 blne        |??3@YAXPAX@Z|
  00028	e1a00005	 mov         r0, r5
  0002c	e8bd4030	 ldmia       sp!, {r4, r5, lr}
  00030	e12fff1e	 bx          lr
  00034		 |$M36239|

			 ENDP  ; |??_GC_Exception@@QAAPAXI@Z|, C_Exception::`scalar deleting destructor'

	EXPORT	|?DriverBindAddress@NIC_DRIVER_OBJECT@@QAAPAXKK@Z| ; NIC_DRIVER_OBJECT::DriverBindAddress
	IMPORT	|VirtualAlloc|
	IMPORT	|VirtualCopy|
; File e:\wince500\platform\berrydale\src\drivers\dm9000\driver.cpp

  00000			 AREA	 |.text| { |?DriverBindAddress@NIC_DRIVER_OBJECT@@QAAPAXKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DriverBindAddress@NIC_DRIVER_OBJECT@@QAAPAXKK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DriverBindAddress@NIC_DRIVER_OBJECT@@QAAPAXKK@Z| } ; comdat associative
|$T36253| DCD	|$L36252|
	DCD	0x40001201
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?DriverBindAddress@NIC_DRIVER_OBJECT@@QAAPAXKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DriverBindAddress@NIC_DRIVER_OBJECT@@QAAPAXKK@Z| PROC ; NIC_DRIVER_OBJECT::DriverBindAddress

; 376  : {

  00000		 |$L36252|
  00000	e92d4070	 stmdb       sp!, {r4 - r6, lr}
  00004		 |$M36250|
  00004	e1a05002	 mov         r5, r2
  00008	e1a06001	 mov         r6, r1

; 377  : 	void	*pvoid;
; 378  : 	// allocate memory for the work space
; 379  : 	
; 380  :     if(!(pvoid = VirtualAlloc(
; 381  : 		NULL, 
; 382  : 		uLength,
; 383  : 		MEM_RESERVE, 
; 384  : 		PAGE_NOACCESS))) return NULL;

  0000c	e3a03001	 mov         r3, #1
  00010	e3a02a02	 mov         r2, #2, 20
  00014	e1a01005	 mov         r1, r5
  00018	e3a00000	 mov         r0, #0
  0001c	eb000000	 bl          VirtualAlloc
  00020	e1b04000	 movs        r4, r0
  00024	03a04000	 moveq       r4, #0

; 385  : 
; 386  : 	/* binding this virtual addr to physical location */
; 387  : 	VirtualCopy(
; 388  : 		pvoid,
; 389  : 		(PVOID)uPhysicalAddress,
; 390  : 		uLength,
; 391  : 		PAGE_READWRITE | PAGE_NOCACHE);

  00028	11a00004	 movne       r0, r4
  0002c	13a03f81	 movne       r3, #0x81, 30
  00030	11a02005	 movne       r2, r5
  00034	11a01006	 movne       r1, r6
  00038	1b000000	 blne        VirtualCopy
  0003c	e1a00004	 mov         r0, r4

; 392  : 
; 393  : 	return pvoid;
; 394  : }

  00040	e8bd4070	 ldmia       sp!, {r4 - r6, lr}
  00044	e12fff1e	 bx          lr
  00048		 |$M36251|

			 ENDP  ; |?DriverBindAddress@NIC_DRIVER_OBJECT@@QAAPAXKK@Z|, NIC_DRIVER_OBJECT::DriverBindAddress

	EXPORT	|?DriverIndication@NIC_DRIVER_OBJECT@@UAAXK@Z| ; NIC_DRIVER_OBJECT::DriverIndication

  00000			 AREA	 |.text| { |?DriverIndication@NIC_DRIVER_OBJECT@@UAAXK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$?DriverIndication@NIC_DRIVER_OBJECT@@UAAXK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DriverIndication@NIC_DRIVER_OBJECT@@UAAXK@Z| } ; comdat associative
|$T36262| DCD	|$L36261|
	DCD	0x40001a01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |?DriverIndication@NIC_DRIVER_OBJECT@@UAAXK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |?DriverIndication@NIC_DRIVER_OBJECT@@UAAXK@Z| PROC ; NIC_DRIVER_OBJECT::DriverIndication

; 399  : {

  00000		 |$L36261|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M36259|
  00004	e3510000	 cmp         r1, #0
  00008	e1a02000	 mov         r2, r0

; 400  : 	switch (uIndication)

  0000c	0a00000b	 beq         |$L35400|
  00010	e3a03c7f	 mov         r3, #0x7F, 24
  00014	e38330ff	 orr         r3, r3, #0xFF
  00018	e1510003	 cmp         r1, r3
  0001c	9a00000f	 bls         |$L35401|
  00020	e3a03902	 mov         r3, #2, 18
  00024	e3833001	 orr         r3, r3, #1
  00028	e1510003	 cmp         r1, r3
  0002c	8a00000b	 bhi         |$L35401|

; 407  : 			}
; 408  : 			break;
; 409  : 			
; 410  : 		case AID_ERROR:
; 411  : 		case AID_LARGE_INCOME_PACKET:
; 412  : 			m_bSystemHang = 1;

  00030	e3a03001	 mov         r3, #1
  00034	e5823004	 str         r3, [r2, #4]

; 413  : 		default:
; 414  : 			break;
; 415  : 	} // of switch
; 416  : 	
; 417  : }

  00038	e49de004	 ldr         lr, [sp], #4
  0003c	e12fff1e	 bx          lr
  00040		 |$L35400|

; 401  : 	{
; 402  : 		case NIC_IND_TX_IDLE:
; 403  : 			if(m_bOutofResources)

  00040	e5923008	 ldr         r3, [r2, #8]
  00044	e3530000	 cmp         r3, #0

; 404  : 			{
; 405  : 				m_bOutofResources = 0;
; 406  : 				NdisMSendResourcesAvailable(m_NdisHandle);

  00048	15920014	 ldrne       r0, [r2, #0x14]

⌨️ 快捷键说明

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