📄 deviceinfo.cod
字号:
00054 e1d331d3 ldrsb r3, [r3, #0x13]
00058 e35300ff cmp r3, #0xFF
0005c 0a000009 beq |$L38102|
00060 |$L38103|
; 108 : {
; 109 : //
; 110 : // Copy the device name from the EEPROM.
; 111 : //
; 112 : memcpy( szDeviceName, gBoardInformation.strEdbgName, EDBG_MAX_DEV_NAMELEN);
00060 e3a02010 mov r2, #0x10
00064 e59f3098 ldr r3, [pc, #0x98]
00068 e2831010 add r1, r3, #0x10
0006c e59d0018 ldr r0, [sp, #0x18]
00070 eb000000 bl memcpy
; 113 : szDeviceName[EDBG_MAX_DEV_NAMELEN - 1] = 0;
00074 e59d3018 ldr r3, [sp, #0x18]
00078 e283200f add r2, r3, #0xF
0007c e3a03000 mov r3, #0
00080 e5c23000 strb r3, [r2]
; 114 : }
; 115 : else
00084 ea00001a b |$L38104|
00088 |$L38102|
; 116 : {
; 117 : dwUpperMAC = UpperDWFromMAC(pMyAddr);
00088 e59d0014 ldr r0, [sp, #0x14]
0008c eb000000 bl UpperDWFromMAC
00090 e58d0004 str r0, [sp, #4]
00094 e59d3004 ldr r3, [sp, #4]
00098 e58d3000 str r3, [sp]
; 118 : strcpy(szDeviceName,EBOOT_PLATFORM_STRING);
0009c e59f105c ldr r1, [pc, #0x5C]
000a0 e59d0018 ldr r0, [sp, #0x18]
000a4 eb000000 bl strcpy
; 119 : szDeviceName += strlen(szDeviceName);
000a8 e59d0018 ldr r0, [sp, #0x18]
000ac eb000000 bl strlen
000b0 e58d0008 str r0, [sp, #8]
000b4 e59d2018 ldr r2, [sp, #0x18]
000b8 e59d3008 ldr r3, [sp, #8]
000bc e0823003 add r3, r2, r3
000c0 e58d3018 str r3, [sp, #0x18]
; 120 : itoa10(((pMyAddr->wMAC[2]>>8) | ((pMyAddr->wMAC[2] & 0x00ff) << 8)), szDeviceName);
000c4 e59d1018 ldr r1, [sp, #0x18]
000c8 e59d3014 ldr r3, [sp, #0x14]
000cc e2833008 add r3, r3, #8
000d0 e1d330b0 ldrh r3, [r3]
000d4 e1a02443 mov r2, r3, asr #8
000d8 e59d3014 ldr r3, [sp, #0x14]
000dc e2833008 add r3, r3, #8
000e0 e1d330b0 ldrh r3, [r3]
000e4 e20330ff and r3, r3, #0xFF
000e8 e1a03403 mov r3, r3, lsl #8
000ec e1820003 orr r0, r2, r3
000f0 eb000000 bl itoa10
000f4 |$L38104|
; 121 : }
; 122 : }
000f4 e28dd00c add sp, sp, #0xC
000f8 e89d6000 ldmia sp, {sp, lr}
000fc e12fff1e bx lr
00100 |$L38159|
00100 00000000 DCD |??_C@_0L@OPLKAENE@EDB9307?11X?$AA@|
00104 00000000 DCD |gBoardInformation|
00108 00000000 DCD |gBoardInformationValid|
0010c |$M38155|
ENDP ; |CreateDeviceName|
00000 AREA |.text| { |UpperDWFromMAC| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$UpperDWFromMAC|, PDATA, SELECTION=5, ASSOC=|.text| { |UpperDWFromMAC| } ; comdat associative
|$T38166| DCD |$L38165|
DCD 0x40001e04
; Function compile flags: /Ods
00000 AREA |.text| { |UpperDWFromMAC| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |UpperDWFromMAC| PROC
; 73 : {
00000 |$L38165|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd008 sub sp, sp, #8
00010 |$M38163|
; 74 : DWORD ret;
; 75 :
; 76 : //
; 77 : // The WORDs in wMAC field are in net order, so we need to do some
; 78 : // serious shifting around.
; 79 : // A hex ethernet address of 12 34 56 78 9a bc is stored in wMAC array as
; 80 : // wMAC[0] = 3412, wMAC[1] = 7856, wMAC[2] = bc9a.
; 81 : // The 4 byte return value should look like 0x00123456
; 82 : //
; 83 : ret = (pAddr->wMAC[0] & 0x00ff) << 16;
00010 e59d3010 ldr r3, [sp, #0x10]
00014 e2833004 add r3, r3, #4
00018 e1d330b0 ldrh r3, [r3]
0001c e20330ff and r3, r3, #0xFF
00020 e1a03803 mov r3, r3, lsl #16
00024 e58d3000 str r3, [sp]
; 84 : ret |= pAddr->wMAC[0] & 0xff00;
00028 e59d3010 ldr r3, [sp, #0x10]
0002c e2833004 add r3, r3, #4
00030 e1d330b0 ldrh r3, [r3]
00034 e2032cff and r2, r3, #0xFF, 24
00038 e59d3000 ldr r3, [sp]
0003c e1833002 orr r3, r3, r2
00040 e58d3000 str r3, [sp]
; 85 : ret |= pAddr->wMAC[1] & 0x00ff;
00044 e59d3010 ldr r3, [sp, #0x10]
00048 e2833006 add r3, r3, #6
0004c e1d330b0 ldrh r3, [r3]
00050 e20320ff and r2, r3, #0xFF
00054 e59d3000 ldr r3, [sp]
00058 e1833002 orr r3, r3, r2
0005c e58d3000 str r3, [sp]
; 86 : return ret;
00060 e59d3000 ldr r3, [sp]
00064 e58d3004 str r3, [sp, #4]
00068 e59d0004 ldr r0, [sp, #4]
; 87 : }
0006c e28dd008 add sp, sp, #8
00070 e89d6000 ldmia sp, {sp, lr}
00074 e12fff1e bx lr
00078 |$M38164|
ENDP ; |UpperDWFromMAC|
EXPORT |GetDeviceMacAddress|
00000 AREA |.text| { |GetDeviceMacAddress| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetDeviceMacAddress|, PDATA, SELECTION=5, ASSOC=|.text| { |GetDeviceMacAddress| } ; comdat associative
|$T38173| DCD |$L38172|
DCD 0x40002a03
; Function compile flags: /Ods
00000 AREA |.text| { |GetDeviceMacAddress| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetDeviceMacAddress| PROC
; 135 : {
00000 |$L38172|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c |$M38170|
; 136 : //
; 137 : // We need to do this since the board does not have a MAC address.
; 138 : // Lets use the same mac address as eboot.
; 139 : //
; 140 : if( gBoardInformationValid &&
; 141 : ( gBoardInformation.MACAddress[0] != 0xFFFF ||
; 142 : gBoardInformation.MACAddress[1] != 0xFFFF ||
; 143 : gBoardInformation.MACAddress[2] != 0xFFFF ))
0000c e59f3090 ldr r3, [pc, #0x90]
00010 e5933000 ldr r3, [r3]
00014 e3530000 cmp r3, #0
00018 0a00001a beq |$L38112|
0001c e59f307c ldr r3, [pc, #0x7C]
00020 e1d330b4 ldrh r3, [r3, #4]
00024 e1a02003 mov r2, r3
00028 e3a03cff mov r3, #0xFF, 24
0002c e38330ff orr r3, r3, #0xFF
00030 e1520003 cmp r2, r3
00034 1a00000d bne |$L38113|
00038 e59f3060 ldr r3, [pc, #0x60]
0003c e1d330b6 ldrh r3, [r3, #6]
00040 e1a02003 mov r2, r3
00044 e3a03cff mov r3, #0xFF, 24
00048 e38330ff orr r3, r3, #0xFF
0004c e1520003 cmp r2, r3
00050 1a000006 bne |$L38113|
00054 e59f3044 ldr r3, [pc, #0x44]
00058 e1d330b8 ldrh r3, [r3, #8]
0005c e1a02003 mov r2, r3
00060 e3a03cff mov r3, #0xFF, 24
00064 e38330ff orr r3, r3, #0xFF
00068 e1520003 cmp r2, r3
0006c 0a000005 beq |$L38112|
00070 |$L38113|
; 144 : {
; 145 : memcpy(pusMACAddress, gBoardInformation.MACAddress, 6);
00070 e3a02006 mov r2, #6
00074 e59f3024 ldr r3, [pc, #0x24]
00078 e2831004 add r1, r3, #4
0007c e59d0008 ldr r0, [sp, #8]
00080 eb000000 bl memcpy
; 146 : }
; 147 : else
00084 ea000003 b |$L38114|
00088 |$L38112|
; 148 : {
; 149 : memcpy(pusMACAddress, pusDefaultMACAddress, 6 );
00088 e3a02006 mov r2, #6
0008c e59d100c ldr r1, [sp, #0xC]
00090 e59d0008 ldr r0, [sp, #8]
00094 eb000000 bl memcpy
00098 |$L38114|
; 150 : }
; 151 : }
00098 e89d6000 ldmia sp, {sp, lr}
0009c e12fff1e bx lr
000a0 |$L38175|
000a0 00000000 DCD |gBoardInformation|
000a4 00000000 DCD |gBoardInformationValid|
000a8 |$M38171|
ENDP ; |GetDeviceMacAddress|
EXPORT |GetPlatformString|
00000 AREA |.text| { |GetPlatformString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetPlatformString|, PDATA, SELECTION=5, ASSOC=|.text| { |GetPlatformString| } ; comdat associative
|$T38181| DCD |$L38180|
DCD 0x40002a03
; Function compile flags: /Ods
00000 AREA |.text| { |GetPlatformString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetPlatformString| PROC
; 164 : {
00000 |$L38180|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c |$M38178|
; 165 : //
; 166 : // Create device name based on Ethernet address.
; 167 : //
; 168 : if( gBoardInformationValid &&
; 169 : ( gBoardInformation.strEdbgName[0] != 0xFF ||
; 170 : gBoardInformation.strEdbgName[1] != 0xFF ||
; 171 : gBoardInformation.strEdbgName[2] != 0xFF ||
; 172 : gBoardInformation.strEdbgName[3] != 0xFF ))
0000c e59f3090 ldr r3, [pc, #0x90]
00010 e5933000 ldr r3, [r3]
00014 e3530000 cmp r3, #0
00018 0a000019 beq |$L38119|
0001c e59f307c ldr r3, [pc, #0x7C]
00020 e1d331d0 ldrsb r3, [r3, #0x10]
00024 e35300ff cmp r3, #0xFF
00028 1a00000b bne |$L38120|
0002c e59f306c ldr r3, [pc, #0x6C]
00030 e1d331d1 ldrsb r3, [r3, #0x11]
00034 e35300ff cmp r3, #0xFF
00038 1a000007 bne |$L38120|
0003c e59f305c ldr r3, [pc, #0x5C]
00040 e1d331d2 ldrsb r3, [r3, #0x12]
00044 e35300ff cmp r3, #0xFF
00048 1a000003 bne |$L38120|
0004c e59f304c ldr r3, [pc, #0x4C]
00050 e1d331d3 ldrsb r3, [r3, #0x13]
00054 e35300ff cmp r3, #0xFF
00058 0a000009 beq |$L38119|
0005c |$L38120|
; 173 : {
; 174 : //
; 175 : // Copy the board information from the platform string.
; 176 : //
; 177 : memcpy( szPlatformString, gBoardInformation.strEdbgName, 7);
0005c e3a02007 mov r2, #7
00060 e59f3038 ldr r3, [pc, #0x38]
00064 e2831010 add r1, r3, #0x10
00068 e59d0008 ldr r0, [sp, #8]
0006c eb000000 bl memcpy
; 178 : szPlatformString[7] = 0;
00070 e59d3008 ldr r3, [sp, #8]
00074 e2832007 add r2, r3, #7
00078 e3a03000 mov r3, #0
0007c e5c23000 strb r3, [r2]
; 179 : }
; 180 : else
00080 ea000003 b |$L38121|
00084 |$L38119|
; 181 : {
; 182 : memcpy(szPlatformString, EBOOT_PLATFORM_STRING, sizeof(EBOOT_PLATFORM_STRING));
00084 e3a0200b mov r2, #0xB
00088 e59f100c ldr r1, [pc, #0xC]
0008c e59d0008 ldr r0, [sp, #8]
00090 eb000000 bl memcpy
00094 |$L38121|
; 183 : }
; 184 : }
00094 e89d6000 ldmia sp, {sp, lr}
00098 e12fff1e bx lr
0009c |$L38183|
0009c 00000000 DCD |??_C@_0L@OPLKAENE@EDB9307?11X?$AA@|
000a0 00000000 DCD |gBoardInformation|
000a4 00000000 DCD |gBoardInformationValid|
000a8 |$M38179|
ENDP ; |GetPlatformString|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -