📄 ether.cod
字号:
000c4 e5832008 str r2, [r3, #8]
000c8 e28d1028 add r1, sp, #0x28
000cc e3a02010 mov r2, #0x10
000d0 eb000000 bl memcpy
; 278 :
; 279 : //
; 280 : //pDriverGlobals->eth.etherFlags = LDRFL_USE_EDBG | LDRFL_ADDR_VALID | LDRFL_JUMPIMG;
; 281 : //
; 282 : if (pDHCPLeaseTime)
; 283 : pDriverGlobals->eth.DHCPLeaseTime = *pDHCPLeaseTime; // DHCP
000d4 e59d001c ldr r0, [sp, #0x1C]
000d8 e3a03b22 mov r3, #0x22, 22
000dc e3833058 orr r3, r3, #0x58
000e0 e5830000 str r0, [r3]
; 284 : else
; 285 : pDriverGlobals->eth.DHCPLeaseTime = 0; // Static IP
; 286 :
; 287 : return(fGotJumpImg? BL_JUMP : BL_DOWNLOAD);
000e4 e59d1020 ldr r1, [sp, #0x20]
000e8 e3510000 cmp r1, #0
000ec 01a05006 moveq r5, r6
000f0 |$L37566|
; 269 : {
; 270 : return(BL_ERROR);
000f0 e1a00005 mov r0, r5
; 288 : }
000f4 e28dd038 add sp, sp, #0x38
000f8 e8bd4070 ldmia sp!, {r4 - r6, lr}
000fc e12fff1e bx lr
00100 |$L37714|
00100 00000000 DCD |??_C@_0BP@OBGL@INFO?3?5Using?5device?5name?3?5?8?$CFs?8?6?$AA@|
00104 00000000 DCD |MyAddr|
00108 00424f52 DCD 0x424f52
0010c |$M37711|
ENDP ; |OEMEthPreDownload|
EXPORT |OEMEthGetSecs|
IMPORT |GetSystemTimeInUSec|
00000 AREA |.text| { |OEMEthGetSecs| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMEthGetSecs|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthGetSecs| } ; comdat associative
|$T37720| DCD |OEMEthGetSecs|
DCD 0x40000701
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMEthGetSecs| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMEthGetSecs| PROC
; 298 : {
00000 e52de004 str lr, [sp, #-4]!
00004 |$M37718|
; 299 : DWORD dwReturnValue;
; 300 :
; 301 :
; 302 : //
; 303 : // Debug timer.
; 304 : //
; 305 : dwReturnValue = (DWORD)(GetSystemTimeInUSec()>>(ULONGLONG)20);
00004 eb000000 bl GetSystemTimeInUSec
00008 e1a03000 mov r3, r0
0000c e1a00601 mov r0, r1, lsl #12
00010 e1800a23 orr r0, r0, r3, lsr #20
; 306 : return(dwReturnValue);
; 307 : }
00014 e8bd4000 ldmia sp!, {lr}
00018 e12fff1e bx lr
0001c |$M37719|
ENDP ; |OEMEthGetSecs|
EXPORT |SC_WriteDebugLED|
00000 AREA |.text| { |SC_WriteDebugLED| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$SC_WriteDebugLED|, PDATA, SELECTION=5, ASSOC=|.text| { |SC_WriteDebugLED| } ; comdat associative
|$T37726| DCD |SC_WriteDebugLED|
DCD 0x40000100
; Function compile flags: /Ogsy
00000 AREA |.text| { |SC_WriteDebugLED| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |SC_WriteDebugLED| PROC
; 312 : {
00000 |$M37724|
; 313 : return;
; 314 : }
00000 e12fff1e bx lr
00004 |$M37725|
ENDP ; |SC_WriteDebugLED|
IMPORT |strcpy|
IMPORT |strlen|
00000 AREA |.text| { |CreateDeviceName| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$CreateDeviceName|, PDATA, SELECTION=5, ASSOC=|.text| { |CreateDeviceName| } ; comdat associative
|$T37737| DCD |CreateDeviceName|
DCD 0x40001501
; Function compile flags: /Ogsy
00000 AREA |.text| { |CreateDeviceName| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |CreateDeviceName| PROC
; 375 : {
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 |$M37735|
00004 e1a05000 mov r5, r0
00008 e1a06001 mov r6, r1
0000c e1a04002 mov r4, r2
; 376 : DWORD dwUpperMAC = UpperDWFromMAC(pMyAddr);
00010 eb000000 bl UpperDWFromMAC
; 377 :
; 378 : strcpy(szBuf, szPlatformString);
00014 e1a01004 mov r1, r4
00018 e1a00006 mov r0, r6
0001c eb000000 bl strcpy
; 379 : szBuf += strlen(szBuf);
00020 e1a00006 mov r0, r6
00024 eb000000 bl strlen
00028 e1a03000 mov r3, r0
; 380 : itoa10(((pMyAddr->wMAC[2]>>8) | ((pMyAddr->wMAC[2] & 0x00ff) << 8)), szBuf);
0002c e1d500b8 ldrh r0, [r5, #8]
00030 e0831006 add r1, r3, r6
00034 e1a04800 mov r4, r0, lsl #16
00038 e1a02824 mov r2, r4, lsr #16
0003c e20200ff and r0, r2, #0xFF
00040 e1a02400 mov r2, r0, lsl #8
00044 e1820c24 orr r0, r2, r4, lsr #24
00048 eb000000 bl itoa10
; 381 : }
0004c e8bd4070 ldmia sp!, {r4 - r6, lr}
00050 e12fff1e bx lr
00054 |$M37736|
ENDP ; |CreateDeviceName|
00000 AREA |.text| { |itoa10| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$itoa10|, PDATA, SELECTION=5, ASSOC=|.text| { |itoa10| } ; comdat associative
|$T37761| DCD |itoa10|
DCD 0x40002901
; Function compile flags: /Ogsy
00000 AREA |.text| { |itoa10| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |itoa10| PROC
; 321 : {
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M37759|
00004 e1a04000 mov r4, r0
00008 e1a06001 mov r6, r1
; 322 : int i = 0;
0000c e3a07000 mov r7, #0
; 323 :
; 324 : // Get absolute value of number
; 325 : unsigned int val = (unsigned int)((n < 0) ? -n : n);
00010 e3540000 cmp r4, #0
00014 e2642000 rsb r2, r4, #0
00018 e1a05007 mov r5, r7
0001c 51a02004 movpl r2, r4
00020 |$L37603|
; 326 :
; 327 : // Extract digits in reverse order
; 328 : do {
; 329 : s[i++] = (val % 10) + '0';
00020 e59f0078 ldr r0, [pc, #0x78]
00024 e0810092 umull r0, r1, r2, r0
00028 e1a031a1 mov r3, r1, lsr #3
0002c e0830103 add r0, r3, r3, lsl #2
00030 e0421080 sub r1, r2, r0, lsl #1
00034 e2812030 add r2, r1, #0x30
00038 e1a00c02 mov r0, r2, lsl #24
0003c e1a01c40 mov r1, r0, asr #24
00040 e7c51006 strb r1, [r5, +r6]
; 330 : } while (val /= 10);
00044 e1b02003 movs r2, r3
00048 e2855001 add r5, r5, #1
0004c 1afffff3 bne |$L37603|
; 331 :
; 332 : // Add sign if number negative
; 333 : if (n < 0) s[i++] = '-';
00050 e3540000 cmp r4, #0
00054 43a0002d movmi r0, #0x2D
00058 47c50006 strmib r0, [r5, +r6]
0005c 42855001 addmi r5, r5, #1
; 334 :
; 335 : s[i--] = '\0';
00060 e2454001 sub r4, r5, #1
00064 e7c57006 strb r7, [r5, +r6]
; 336 :
; 337 : // Reverse string
; 338 : for (n = 0; n < i; n++, i--) {
00068 e3540000 cmp r4, #0
0006c da000009 ble |$L37609|
00070 |$L37607|
00070 e1a02007 mov r2, r7
00074 e1a01004 mov r1, r4
; 339 : char swap = s[n];
00078 e1b230d6 ldrsb r3, [r2, +r6]!
; 340 : s[n] = s[i];
0007c e1b100d6 ldrsb r0, [r1, +r6]!
00080 e2877001 add r7, r7, #1
00084 e2444001 sub r4, r4, #1
00088 e1570004 cmp r7, r4
0008c e5c20000 strb r0, [r2]
; 341 : s[i] = swap;
00090 e5c13000 strb r3, [r1]
00094 bafffff5 blt |$L37607|
00098 |$L37609|
; 342 : }
; 343 : }
00098 e8bd40f0 ldmia sp!, {r4 - r7, lr}
0009c e12fff1e bx lr
000a0 |$L37763|
000a0 cccccccd DCD 0xcccccccd
000a4 |$M37760|
ENDP ; |itoa10|
00000 AREA |.text| { |UpperDWFromMAC| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$UpperDWFromMAC|, PDATA, SELECTION=5, ASSOC=|.text| { |UpperDWFromMAC| } ; comdat associative
|$T37770| DCD |UpperDWFromMAC|
DCD 0x40000f01
; Function compile flags: /Ogsy
00000 AREA |.text| { |UpperDWFromMAC| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |UpperDWFromMAC| PROC
; 346 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M37768|
00004 e1a02000 mov r2, r0
; 347 : DWORD ret;
; 348 :
; 349 : //
; 350 : // The WORDs in wMAC field are in net order, so we need to do some
; 351 : // serious shifting around.
; 352 : // A hex ethernet address of 12 34 56 78 9a bc is stored in wMAC array as
; 353 : // wMAC[0] = 3412, wMAC[1] = 7856, wMAC[2] = bc9a.
; 354 : // The 4 byte return value should look like 0x00123456
; 355 : //
; 356 : ret = (pAddr->wMAC[0] & 0x00ff) << 16;
; 357 : ret |= pAddr->wMAC[0] & 0xff00;
; 358 : ret |= pAddr->wMAC[1] & 0x00ff;
; 359 : return ret;
00008 e1d200b4 ldrh r0, [r2, #4]
0000c e1a01800 mov r1, r0, lsl #16
00010 e1d200b6 ldrh r0, [r2, #6]
00014 e1a04821 mov r4, r1, lsr #16
00018 e1a01800 mov r1, r0, lsl #16
0001c e1a02821 mov r2, r1, lsr #16
00020 e20200ff and r0, r2, #0xFF
00024 e20430ff and r3, r4, #0xFF
00028 e1803803 orr r3, r0, r3, lsl #16
0002c e2041cff and r1, r4, #0xFF, 24
00030 e1830001 orr r0, r3, r1
; 360 : }
00034 e8bd4010 ldmia sp!, {r4, lr}
00038 e12fff1e bx lr
0003c |$M37769|
ENDP ; |UpperDWFromMAC|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -