📄 ether.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL E:\WM604\PLATFORM\SEUICBSP\SRC\BOOTLOADER\EBOOT\.\ether.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
00000 AREA |.data|, DATA
COMMON |pfnEDbgInit|, 0x4
COMMON |pfnEDbgGetFrame|, 0x4
COMMON |pfnEDbgSendFrame|, 0x4
COMMON |pfnEDbgEnableInts|, 0x4
COMMON |pfnEDbgDisableInts|, 0x4
00000 AREA |.rdata|, DATA, READONLY
|EdbgVendorIds| DCW 0x0
DCW 0x0
DCD 0x4033
DCB 0x1
DCB "AD", 0x0
DCW 0x1050
DCW 0x940
DCD 0x4005
DCB 0x1
DCB "LS", 0x0
DCW 0x1050
DCW 0x940
DCD 0x2078
DCB 0x1
DCB "LS", 0x0
DCW 0x10ec
DCW 0x8029
DCD 0xc0f0
DCB 0x1
DCB "KS", 0x0
DCW 0x10ec
DCW 0x8129
DCD 0x0
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0x900b
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xd0c9
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xe04c
DCB 0x4
DCB "RT", 0x0
DCW 0x1186
DCW 0x1300
DCD 0x50ba
DCB 0x4
DCB "DL", 0x0
DCW 0x100b
DCW 0x20
DCD 0xa0cc
DCB 0x5
DCB "NG", 0x0
DCW 0x10b7
DCW 0x9050
DCD 0x6008
DCB 0x6
DCB "3C", 0x0
DCW 0x10b7
DCW 0x9200
DCD 0x476
DCB 0x6
DCB "3C", 0x0
EXPORT |Wait|
IMPORT |OALPAtoVA|
; File e:\wm604\platform\seuicbsp\src\bootloader\eboot\ether.c
00000 AREA |.text| { |Wait| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$Wait|, PDATA, SELECTION=5, ASSOC=|.text| { |Wait| } ; comdat associative
|$T42031| DCD |$L42030|
DCD 0x40001201
; Function compile flags: /Ogsy
00000 AREA |.text| { |Wait| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |Wait| PROC
; 77 : {
00000 |$L42030|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M42028|
00004 e1a04000 mov r4, r0
; 78 : volatile UINT32 *TimerOSCRAddress= (volatile UINT32 *) OALPAtoVA((BULVERDE_BASE_REG_PA_OST + OSCR_OFFSET), FALSE);
00008 e59f0034 ldr r0, [pc, #0x34]
0000c e3a01000 mov r1, #0
00010 eb000000 bl OALPAtoVA
; 79 : UINT32 Value, Time;
; 80 :
; 81 : Time = *TimerOSCRAddress;
00014 e5902000 ldr r2, [r0]
; 82 : Value = Time + (microSeconds * 4);
00018 e0821104 add r1, r2, r4, lsl #2
; 83 : if (Value < Time)
0001c e1510002 cmp r1, r2
00020 2a000002 bcs |$L41835|
00024 |$L41832|
; 84 : { // test for wrap.
; 85 : while (Time < *TimerOSCRAddress);
00024 e5903000 ldr r3, [r0]
00028 e1520003 cmp r2, r3
0002c 3afffffc bcc |$L41832|
00030 |$L41835|
; 86 : }
; 87 : while (*TimerOSCRAddress <= Value);
00030 e5903000 ldr r3, [r0]
00034 e1530001 cmp r3, r1
00038 9afffffc bls |$L41835|
; 88 :
; 89 : }
0003c e8bd4010 ldmia sp!, {r4, lr}
00040 e12fff1e bx lr
00044 |$L42033|
00044 40a00010 DCD 0x40a00010
00048 |$M42029|
ENDP ; |Wait|
EXPORT |msWait|
00000 AREA |.text| { |msWait| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$msWait|, PDATA, SELECTION=5, ASSOC=|.text| { |msWait| } ; comdat associative
|$T42040| DCD |$L42039|
DCD 0x40000601
; Function compile flags: /Ogsy
00000 AREA |.text| { |msWait| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |msWait| PROC
; 93 : {
00000 |$L42039|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M42037|
; 94 : Wait(msVal*1000);
00004 e3a02ffa mov r2, #0xFA, 30
00008 e0000092 mul r0, r2, r0
0000c eb000000 bl Wait
; 95 : }
00010 e49de004 ldr lr, [sp], #4
00014 e12fff1e bx lr
00018 |$M42038|
ENDP ; |msWait|
EXPORT |OALStall|
00000 AREA |.text| { |OALStall| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OALStall|, PDATA, SELECTION=5, ASSOC=|.text| { |OALStall| } ; comdat associative
|$T42048| DCD |$L42047|
DCD 0x40000401
; Function compile flags: /Ogsy
00000 AREA |.text| { |OALStall| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OALStall| PROC
; 99 : {
00000 |$L42047|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M42045|
; 100 : Wait(microSeconds);
00004 eb000000 bl Wait
; 101 : }
00008 e49de004 ldr lr, [sp], #4
0000c e12fff1e bx lr
00010 |$M42046|
ENDP ; |OALStall|
EXPORT |LocatePCMCIACard|
EXPORT |??_C@_0DO@BCOPPBDF@INFO?3?5Performing?5PCMCIA?5NIC?5init@| [ DATA ] ; `string'
IMPORT |EdbgOutputDebugString|
00000 AREA |.text| { |LocatePCMCIACard| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$LocatePCMCIACard|, PDATA, SELECTION=5, ASSOC=|.text| { |LocatePCMCIACard| } ; comdat associative
|$T42078| DCD |$L42077|
DCD 0x40004501
00000 AREA |.rdata| { |??_C@_0DO@BCOPPBDF@INFO?3?5Performing?5PCMCIA?5NIC?5init@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DO@BCOPPBDF@INFO?3?5Performing?5PCMCIA?5NIC?5init@| DCB "INFO: Pe"
DCB "rforming PCMCIA NIC initialization. Please wait...", 0xd
DCB 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |LocatePCMCIACard| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |LocatePCMCIACard| PROC
; 105 : {
00000 |$L42077|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 |$M42075|
00004 e1a05000 mov r5, r0
; 106 : UINT32 SlotVoltage = PCMCIA_VCC3V_VPP0V;
; 107 : volatile UINT32 *pSRCR = NULL;
; 108 : volatile MAINSTONEII_BLR_REGS *pBLRegs = (volatile MAINSTONEII_BLR_REGS *) OALPAtoVA(MAINSTONEII_BASE_REG_PA_FPGA, FALSE);
00008 e3a01000 mov r1, #0
0000c e3a00302 mov r0, #2, 6
00010 eb000000 bl OALPAtoVA
00014 e1a04000 mov r4, r0
; 109 : volatile BULVERDE_MEMCTRL_REG *pMEMCTRLRegs = (volatile BULVERDE_MEMCTRL_REG *) OALPAtoVA(BULVERDE_BASE_REG_PA_MEMC, FALSE);
00018 e3a00312 mov r0, #0x12, 6
0001c e3a01000 mov r1, #0
00020 eb000000 bl OALPAtoVA
00024 e1a06000 mov r6, r0
; 110 :
; 111 : switch (EthDevice)
00028 e3550000 cmp r5, #0
0002c 0a000003 beq |$L41862|
00030 e3550001 cmp r5, #1
00034 1a000032 bne |$L41868|
; 115 : break;
; 116 : case ETH_DEVICE_PCMCIA1:
; 117 : pSRCR = (volatile UINT32 *)&(pBLRegs->pcmcia1_srcr);
00038 e28440e4 add r4, r4, #0xE4
; 118 : break;
0003c ea000000 b |$L41859|
00040 |$L41862|
; 112 : {
; 113 : case ETH_DEVICE_PCMCIA0:
; 114 : pSRCR = (volatile UINT32 *)&(pBLRegs->pcmcia0_srcr);
00040 e28440e0 add r4, r4, #0xE0
00044 |$L41859|
; 119 : default:
; 120 : break;
; 121 : }
; 122 :
; 123 : if (!pSRCR)
00044 e3540000 cmp r4, #0
; 124 : {
; 125 : return(FALSE);
00048 0a00002d beq |$L41868|
; 126 : }
; 127 :
; 128 : // Initialize the PCMCIA interface if a card is detected.
; 129 : //
; 130 : if (!((*pSRCR & CARD_DETECT) == CARD_DETECT))
0004c e5943000 ldr r3, [r4]
00050 e2033020 and r3, r3, #0x20
00054 e3530020 cmp r3, #0x20
00058 0a000029 beq |$L41868|
; 131 : {
; 132 : EdbgOutputDebugString("INFO: Performing PCMCIA NIC initialization. Please wait...\r\n");
0005c e59f00ac ldr r0, [pc, #0xAC]
00060 eb000000 bl EdbgOutputDebugString
; 133 :
; 134 : // Configure the MAX1602EE power supply based on the voltage requirement of the card.
; 135 : //
; 136 : if (((*pSRCR & VS1) == VS1) && ((*pSRCR & VS2) == VS2))
00064 e5943000 ldr r3, [r4]
; 137 : {
; 138 : // 5 volt card detected.
; 139 : //
; 140 : SlotVoltage = PCMCIA_VCC5V_VPP0V;
; 141 : }
; 142 : else
; 143 : {
; 144 : // 3.3 volt card detected.
; 145 : //
; 146 : SlotVoltage = PCMCIA_VCC3V_VPP0V;
; 147 : }
; 148 :
; 149 : *pSRCR &= ~(PCMCIA_POWER | PCMCIA_RESET);
; 150 : msWait(50);
00068 e3a00cc3 mov r0, #0xC3, 24
0006c e3800050 orr r0, r0, #0x50
00070 e2033040 and r3, r3, #0x40
00074 e3530040 cmp r3, #0x40
00078 05943000 ldreq r3, [r4]
0007c 02033080 andeq r3, r3, #0x80
00080 03530080 cmpeq r3, #0x80
00084 e5943000 ldr r3, [r4]
00088 03a05004 moveq r5, #4
0008c 13a05008 movne r5, #8
00090 e3c3301f bic r3, r3, #0x1F
00094 e5843000 str r3, [r4]
00098 eb000000 bl Wait
; 151 :
; 152 : *pSRCR |= SlotVoltage;
0009c e5943000 ldr r3, [r4]
; 153 : msWait(50);
000a0 e3a00cc3 mov r0, #0xC3, 24
000a4 e3800050 orr r0, r0, #0x50
000a8 e1833005 orr r3, r3, r5
000ac e5843000 str r3, [r4]
000b0 eb000000 bl Wait
; 154 :
; 155 : *pSRCR |= PCMCIA_RESET;
000b4 e5943000 ldr r3, [r4]
; 156 : msWait(50);
000b8 e3a00cc3 mov r0, #0xC3, 24
000bc e3800050 orr r0, r0, #0x50
000c0 e3833010 orr r3, r3, #0x10
000c4 e5843000 str r3, [r4]
000c8 eb000000 bl Wait
; 157 :
; 158 : *pSRCR &= ~PCMCIA_RESET;
000cc e5943000 ldr r3, [r4]
; 159 : msWait(50);
000d0 e3a00cc3 mov r0, #0xC3, 24
000d4 e3800050 orr r0, r0, #0x50
000d8 e3c33010 bic r3, r3, #0x10
000dc e5843000 str r3, [r4]
000e0 eb000000 bl Wait
; 160 :
; 161 : pMEMCTRLRegs->mecr = 0x3;
; 162 : msWait(50);
000e4 e3a00cc3 mov r0, #0xC3, 24
000e8 e3a03003 mov r3, #3
000ec e3800050 orr r0, r0, #0x50
000f0 e5863014 str r3, [r6, #0x14]
000f4 eb000000 bl Wait
; 163 :
; 164 : return (TRUE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -