📄 device.cod
字号:
|$T35741| DCD |$L35740|
DCD 0x40001501
00000 AREA |.rdata| { |??_C@_1EM@GMKJFEJB@?$AA?$FL?$AAd?$AAm?$AA9?$AA?3?$AA?5?$AAT?$AAr?$AAi?$AAe?$AAs?$AA?5?$AAt?$AAo?$AA?5?$AAm?$AAa?$AAp?$AA?5?$AAi@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EM@GMKJFEJB@?$AA?$FL?$AAd?$AAm?$AA9?$AA?3?$AA?5?$AAT?$AAr?$AAi?$AAe?$AAs?$AA?5?$AAt?$AAo?$AA?5?$AAm?$AAa?$AAp?$AA?5?$AAi@| DCB "["
DCB 0x0, "d", 0x0, "m", 0x0, "9", 0x0, ":", 0x0, " ", 0x0, "T"
DCB 0x0, "r", 0x0, "i", 0x0, "e", 0x0, "s", 0x0, " ", 0x0, "t"
DCB 0x0, "o", 0x0, " ", 0x0, "m", 0x0, "a", 0x0, "p", 0x0, " "
DCB 0x0, "i", 0x0, "o", 0x0, " ", 0x0, "s", 0x0, "p", 0x0, "a"
DCB 0x0, "c", 0x0, "e", 0x0, " ", 0x0, "w", 0x0, "i", 0x0, "t"
DCB 0x0, "h", 0x0, " ", 0x0, "%", 0x0, "X", 0x0, 0xd, 0x0, 0xa
DCB 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1EC@EHOIAMB@?$AA?$FL?$AAd?$AAm?$AA9?$AA?3?$AA?5?$AAT?$AAh?$AAe?$AA?5?$AAm?$AAa?$AAp?$AAp?$AAe?$AAd?$AA?5?$AAa?$AAd?$AAd@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1EC@EHOIAMB@?$AA?$FL?$AAd?$AAm?$AA9?$AA?3?$AA?5?$AAT?$AAh?$AAe?$AA?5?$AAm?$AAa?$AAp?$AAp?$AAe?$AAd?$AA?5?$AAa?$AAd?$AAd@| DCB "["
DCB 0x0, "d", 0x0, "m", 0x0, "9", 0x0, ":", 0x0, " ", 0x0, "T"
DCB 0x0, "h", 0x0, "e", 0x0, " ", 0x0, "m", 0x0, "a", 0x0, "p"
DCB 0x0, "p", 0x0, "e", 0x0, "d", 0x0, " ", 0x0, "a", 0x0, "d"
DCB 0x0, "d", 0x0, "r", 0x0, "e", 0x0, "s", 0x0, "s", 0x0, " "
DCB 0x0, "i", 0x0, "s", 0x0, " ", 0x0, "%", 0x0, "X", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |?EDeviceRegisterIoSpace@NIC_DEVICE_OBJECT@@UAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?EDeviceRegisterIoSpace@NIC_DEVICE_OBJECT@@UAAXXZ| PROC ; NIC_DEVICE_OBJECT::EDeviceRegisterIoSpace
; 295 : {
00000 |$L35740|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M35738|
00004 e1a05000 mov r5, r0
; 296 : if(!m_szConfigures[CID_NEED_IO_SPACE]) return;
00008 e59530b0 ldr r3, [r5, #0xB0]
0000c e3530000 cmp r3, #0
00010 0a00000b beq |$L35382|
; 297 :
; 298 : #if OLD_MAPPING_STYLE
; 299 : NDIS_STATUS status;
; 300 : if((status = NdisMRegisterIoPortRange(
; 301 : (PVOID*)&m_szCurrentSettings[SID_PORT_BASE_ADDRESS],
; 302 : m_pUpper->GetNdisHandle(),
; 303 : m_szConfigures[CID_IO_BASE_ADDRESS],
; 304 : m_szConfigures[CID_IO_RANGE])) != NDIS_STATUS_SUCCESS)
; 305 : THROW((status));
; 306 : PULONG BusBase;
; 307 : PHYSICAL_ADDRESS PhysicalIoBase;
; 308 : #endif
; 309 :
; 310 : U32 uBase;
; 311 : PHYSICAL_ADDRESS phyAddr;
; 312 :
; 313 : phyAddr.HighPart = 0;
; 314 : phyAddr.LowPart = m_szConfigures[CID_IO_BASE_ADDRESS];
; 315 :
; 316 : DEBUG_PRINT((
; 317 : TEXT("[dm9: Tries to map io space with %X\r\n"), phyAddr.LowPart
; 318 : ));
00014 e5951084 ldr r1, [r5, #0x84]
00018 e59f0030 ldr r0, [pc, #0x30]
0001c eb000000 bl NKDbgPrintfW
; 319 : #if 0
; 320 : if(!(uBase = (U32)MmMapIoSpace(phyAddr, 16, FALSE)))
; 321 : THROW((ERR_STRING("Fails to map io space")));
; 322 : #endif
; 323 : uBase = 0xba600000;
; 324 :
; 325 : DEBUG_PRINT((
; 326 : TEXT("[dm9: The mapped address is %X\r\n"), uBase
; 327 : ));
00020 e3a044ba mov r4, #0xBA, 8
00024 e59f0020 ldr r0, [pc, #0x20]
00028 e3844606 orr r4, r4, #6, 12
0002c e1a01004 mov r1, r4
00030 eb000000 bl NKDbgPrintfW
; 328 :
; 329 : RETAILMSG (1, (TEXT("[dm9: The mapped address is %X\r\n"), uBase));
00034 e59f0010 ldr r0, [pc, #0x10]
00038 e1a01004 mov r1, r4
0003c eb000000 bl NKDbgPrintfW
; 330 :
; 331 : m_szCurrentSettings[SID_PORT_BASE_ADDRESS] = uBase;
00040 e58540d8 str r4, [r5, #0xD8]
00044 |$L35382|
; 332 :
; 333 : }
00044 e8bd4030 ldmia sp!, {r4, r5, lr}
00048 e12fff1e bx lr
0004c |$L35743|
0004c 00000000 DCD |??_C@_1EC@EHOIAMB@?$AA?$FL?$AAd?$AAm?$AA9?$AA?3?$AA?5?$AAT?$AAh?$AAe?$AA?5?$AAm?$AAa?$AAp?$AAp?$AAe?$AAd?$AA?5?$AAa?$AAd?$AAd@|
00050 00000000 DCD |??_C@_1EM@GMKJFEJB@?$AA?$FL?$AAd?$AAm?$AA9?$AA?3?$AA?5?$AAT?$AAr?$AAi?$AAe?$AAs?$AA?5?$AAt?$AAo?$AA?5?$AAm?$AAa?$AAp?$AA?5?$AAi@|
00054 |$M35739|
ENDP ; |?EDeviceRegisterIoSpace@NIC_DEVICE_OBJECT@@UAAXXZ|, NIC_DEVICE_OBJECT::EDeviceRegisterIoSpace
EXPORT |?EDeviceLoadEeprom@NIC_DEVICE_OBJECT@@UAAXXZ| ; NIC_DEVICE_OBJECT::EDeviceLoadEeprom
00000 AREA |.text| { |?EDeviceLoadEeprom@NIC_DEVICE_OBJECT@@UAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?EDeviceLoadEeprom@NIC_DEVICE_OBJECT@@UAAXXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?EDeviceLoadEeprom@NIC_DEVICE_OBJECT@@UAAXXZ| } ; comdat associative
|$T35751| DCD |$L35750|
DCD 0x40001401
; Function compile flags: /Ogsy
00000 AREA |.text| { |?EDeviceLoadEeprom@NIC_DEVICE_OBJECT@@UAAXXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?EDeviceLoadEeprom@NIC_DEVICE_OBJECT@@UAAXXZ| PROC ; NIC_DEVICE_OBJECT::EDeviceLoadEeprom
; 353 : {
00000 |$L35750|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M35748|
; 354 : // int n;
; 355 : EEPROM_DATA_TYPE *pcurr=(EEPROM_DATA_TYPE*)&m_szEeprom[0];
00004 e2801b01 add r1, r0, #1, 22
; 356 :
; 357 : #if 0
; 358 : for(n=0;n<(DIM(m_szEeprom)/sizeof(EEPROM_DATA_TYPE));n++,pcurr++)
; 359 : {
; 360 : *pcurr = DeviceReadEeprom(n);
; 361 :
; 362 : } // of for offset n
; 363 : #endif
; 364 : *(pcurr + 0) = 0xc000;
00008 e3a03903 mov r3, #3, 18
0000c e1e133b8 strh r3, [r1, #0x38]!
; 365 : *(pcurr + 1) = 0x2826;
00010 e3a03b0a mov r3, #0xA, 22
; 366 : *(pcurr + 2) = 0x3096;
00014 e3a02dc2 mov r2, #0xC2, 26
00018 e3833026 orr r3, r3, #0x26
0001c e3822016 orr r2, r2, #0x16
; 367 : *(pcurr + 3) = 0x28;
00020 e3a00028 mov r0, #0x28
; 368 : *(pcurr + 4) = 0x96;
00024 e3a0e096 mov lr, #0x96
; 369 : *(pcurr + 5) = 0x30;
00028 e3a04030 mov r4, #0x30
; 370 : *(pcurr + 6) = 0x00;
0002c e3a05000 mov r5, #0
00030 e1c130b2 strh r3, [r1, #2]
00034 e1c120b4 strh r2, [r1, #4]
00038 e1c100b6 strh r0, [r1, #6]
0003c e1c1e0b8 strh lr, [r1, #8]
00040 e1c140ba strh r4, [r1, #0xA]
00044 e1c150bc strh r5, [r1, #0xC]
; 371 :
; 372 : // DeviceCalculateCRC32(&m_szEeprom[0],DIM(m_szEeprom)-2);
; 373 : }
00048 e8bd4030 ldmia sp!, {r4, r5, lr}
0004c e12fff1e bx lr
00050 |$M35749|
ENDP ; |?EDeviceLoadEeprom@NIC_DEVICE_OBJECT@@UAAXXZ|, NIC_DEVICE_OBJECT::EDeviceLoadEeprom
EXPORT |?DevicePolling@NIC_DEVICE_OBJECT@@QAAHKKKKK@Z| ; NIC_DEVICE_OBJECT::DevicePolling
IMPORT |NdisStallExecution|
00000 AREA |.text| { |?DevicePolling@NIC_DEVICE_OBJECT@@QAAHKKKKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?DevicePolling@NIC_DEVICE_OBJECT@@QAAHKKKKK@Z|, PDATA, SELECTION=5, ASSOC=|.text| { |?DevicePolling@NIC_DEVICE_OBJECT@@QAAHKKKKK@Z| } ; comdat associative
|$T35770| DCD |$L35769|
DCD 0x40001801
; Function compile flags: /Ogsy
00000 AREA |.text| { |?DevicePolling@NIC_DEVICE_OBJECT@@QAAHKKKKK@Z| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?DevicePolling@NIC_DEVICE_OBJECT@@QAAHKKKKK@Z| PROC ; NIC_DEVICE_OBJECT::DevicePolling
; 381 : {
00000 |$L35769|
00000 e92d43f0 stmdb sp!, {r4 - r9, lr}
00004 |$M35767|
00004 e1a07003 mov r7, r3
00008 e1a08002 mov r8, r2
0000c e1a09001 mov r9, r1
00010 e1a06000 mov r6, r0
; 382 : for(;uRetries;uRetries--)
00014 e59d5020 ldr r5, [sp, #0x20]
00018 e3550000 cmp r5, #0
0001c 0a00000c beq |$L35759|
00020 |$L35418|
; 383 : {
; 384 : if((DeviceReadPort(uPort) & uMask) == uExpected) break;
00020 e596e000 ldr lr, [r6]
00024 e1a01009 mov r1, r9
00028 e1a00006 mov r0, r6
0002c e59e4048 ldr r4, [lr, #0x48]
00030 e1a0e00f mov lr, pc
00034 e12fff14 bx r4
00038 e000e008 and lr, r0, r8
0003c e15e0007 cmp lr, r7
00040 0a000003 beq |$L35759|
; 385 : NdisStallExecution(uInterval);
00044 e59d001c ldr r0, [sp, #0x1C]
00048 eb000000 bl NdisStallExecution
0004c e2555001 subs r5, r5, #1
00050 1afffff2 bne |$L35418|
00054 |$L35759|
; 386 : } // of retry loop
; 387 :
; 388 : return (BOOL)uRetries;
00054 e1a00005 mov r0, r5
; 389 : }
00058 e8bd43f0 ldmia sp!, {r4 - r9, lr}
0005c e12fff1e bx lr
00060 |$M35768|
ENDP ; |?DevicePolling@NIC_DEVICE_OBJECT@@QAAHKKKKK@Z|, NIC_DEVICE_OBJECT::DevicePolling
EXPORT |?DeviceCheckForHang@NIC_DEVICE_OBJECT@@UAAHXZ| ; NIC_DEVICE_OBJECT::DeviceCheckForHang
IMPORT |memcpy|
00000 AREA |.text| { |?DeviceCheckForHang@NIC_DEVICE_OBJECT@@UAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$?DeviceCheckForHang@NIC_DEVICE_OBJECT@@UAAHXZ|, PDATA, SELECTION=5, ASSOC=|.text| { |?DeviceCheckForHang@NIC_DEVICE_OBJECT@@UAAHXZ| } ; comdat associative
|$T35794| DCD |$L35793|
DCD 0x40002e01
; Function compile flags: /Ogsy
00000 AREA |.text| { |?DeviceCheckForHang@NIC_DEVICE_OBJECT@@UAAHXZ| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |?DeviceCheckForHang@NIC_DEVICE_OBJECT@@UAAHXZ| PROC ; NIC_DEVICE_OBJECT::DeviceCheckForHang
; 392 : {
00000 |$L35793|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 |$M35791|
00004 e1a05000 mov r5, r0
; 393 :
; 394 : U32 cr;
; 395 :
; 396 : cr = DeviceGetReceiveStatus();
00008 e5953000 ldr r3, [r5]
0000c e5933098 ldr r3, [r3, #0x98]
00010 e1a0e00f mov lr, pc
00014 e12fff13 bx r3
00018 e1a06000 mov r6, r0
; 397 :
; 398 : U32 rxps,rxci;
; 399 :
; 400 : rxps = cr >> 31;
; 401 : rxci = cr & 0x7FFFFFFF;
0001c e1b01fa6 movs r1, r6, lsr #31
; 402 :
; 403 : REPORT(TID_NIC_RXPS,rxps);
00020 15953184 ldrne r3, [r5, #0x184]
00024 e3c62102 bic r2, r6, #2, 2
; 404 : REPORT(TID_NIC_RXCI,rxci);
; 405 :
; 406 : #ifndef IMPL_RESET
; 407 : return FALSE;
; 408 : #endif
; 409 :
; 410 : U32 lastread = m_szLastStatistics[TID_GEN_RCV_OK];
; 411 : U32 lastsent = m_szLastStatistics[TID_GEN_XMIT_OK];
; 412 :
; 413 : memcpy(
; 414 : (void*)&m_szLastStatistics,
; 415 : (void*)&m_szStatistics,
; 416 : sizeof(m_szStatistics));
00028 e2850f65 add r0, r5, #0x65, 30
0002c 10833001 addne r3, r3, r1
00030 15853184 strne r3, [r5, #0x184]
00034 e3520000 cmp r2, #0
00038 15953188 ldrne r3, [r5, #0x188]
0003c e2851f51 add r1, r5, #0x51, 30
00040 10833002 addne r3, r3, r2
00044 15853188 strne r3, [r5, #0x188]
00048 e5954198 ldr r4, [r5, #0x198]
0004c e3a02050 mov r2, #0x50
00050 eb000000 bl memcpy
; 417 :
; 418 : // report hang if
; 419 : // 1. receive count stalled but overflow, or
; 420 : if((m_szStatistics[TID_GEN_RCV_OK] == lastread) && cr)
00054 e5953148 ldr r3, [r5, #0x148]
00058 e1530004 cmp r3, r4
0005c 1a000001 bne |$L35436|
00060 e3560000 cmp r6, #0
; 421 : return TRUE;
00064 1a00000d bne |$L35790|
00068 |$L35436|
; 422 :
; 423 : // 2. tx idle while tqueue out of resource
; 424 : if(m_pUpper->DriverIsOutOfResource() &&
; 425 : (DeviceHardwareStatus() & NIC_HW_TX_IDLE) )
00068 e5950004 ldr r0, [r5, #4]
0006c e5903000 ldr r3, [r0]
00070 e593303c ldr r3, [r3, #0x3C]
00074 e1a0e00f mov lr, pc
00078 e12fff13 bx r3
0007c e3500000 cmp r0, #0
00080 0a000009 beq |$L35437|
00084 e5953000 ldr r3, [r5]
00088 e1a00005 mov r0, r5
0008c e593306c ldr r3, [r3, #0x6C]
00090 e1a0e00f mov lr, pc
00094 e12fff13 bx r3
00098 e3100001 tst r0, #1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -