📄 driver.cod
字号:
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 + -