📄 ether.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4091
TTL D:\WINCE500\PLATFORM\BERRYDALE\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
IMPORT |OALPAtoVA|
; File d:\wince500\platform\berrydale\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
|$T40866| DCD |$L40865|
DCD 0x40001201
; Function compile flags: /Ogsy
00000 AREA |.text| { |Wait| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |Wait| PROC
; 77 : {
00000 |$L40865|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M40863|
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 |$L40669|
00024 |$L40666|
; 84 : { // test for wrap.
; 85 : while (Time < *TimerOSCRAddress);
00024 e5903000 ldr r3, [r0]
00028 e1520003 cmp r2, r3
0002c 3afffffc bcc |$L40666|
00030 |$L40669|
; 86 : }
; 87 : while (*TimerOSCRAddress <= Value);
00030 e5903000 ldr r3, [r0]
00034 e1530001 cmp r3, r1
00038 9afffffc bls |$L40669|
; 88 :
; 89 : }
0003c e8bd4010 ldmia sp!, {r4, lr}
00040 e12fff1e bx lr
00044 |$L40868|
00044 40a00010 DCD 0x40a00010
00048 |$M40864|
ENDP ; |Wait|
00000 AREA |.text| { |msWait| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$msWait|, PDATA, SELECTION=5, ASSOC=|.text| { |msWait| } ; comdat associative
|$T40894| DCD |$L40893|
DCD 0x40001301
; Function compile flags: /Ogsy
00000 AREA |.text| { |msWait| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |msWait| PROC
; 93 : {
00000 |$L40893|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M40891|
00004 e1a04000 mov r4, r0
; 94 : Wait(msVal*1000);
00008 e59f0038 ldr r0, [pc, #0x38]
0000c e3a01000 mov r1, #0
00010 eb000000 bl OALPAtoVA
00014 e5902000 ldr r2, [r0]
00018 e3a03efa mov r3, #0xFA, 28
0001c e0212394 mla r1, r4, r3, r2
00020 e1510002 cmp r1, r2
00024 2a000002 bcs |$L40879|
00028 |$L40877|
00028 e5903000 ldr r3, [r0]
0002c e1520003 cmp r2, r3
00030 3afffffc bcc |$L40877|
00034 |$L40879|
00034 e5903000 ldr r3, [r0]
00038 e1530001 cmp r3, r1
0003c 9afffffc bls |$L40879|
; 95 : }
00040 e8bd4010 ldmia sp!, {r4, lr}
00044 e12fff1e bx lr
00048 |$L40896|
00048 40a00010 DCD 0x40a00010
0004c |$M40892|
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
|$T40922| DCD |$L40921|
DCD 0x40001201
; Function compile flags: /Ogsy
00000 AREA |.text| { |OALStall| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OALStall| PROC
; 99 : {
00000 |$L40921|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M40919|
00004 e1a04000 mov r4, r0
; 100 : Wait(microSeconds);
00008 e59f0034 ldr r0, [pc, #0x34]
0000c e3a01000 mov r1, #0
00010 eb000000 bl OALPAtoVA
00014 e5902000 ldr r2, [r0]
00018 e0821104 add r1, r2, r4, lsl #2
0001c e1510002 cmp r1, r2
00020 2a000002 bcs |$L40907|
00024 |$L40905|
00024 e5903000 ldr r3, [r0]
00028 e1520003 cmp r2, r3
0002c 3afffffc bcc |$L40905|
00030 |$L40907|
00030 e5903000 ldr r3, [r0]
00034 e1530001 cmp r3, r1
00038 9afffffc bls |$L40907|
; 101 : }
0003c e8bd4010 ldmia sp!, {r4, lr}
00040 e12fff1e bx lr
00044 |$L40924|
00044 40a00010 DCD 0x40a00010
00048 |$M40920|
ENDP ; |OALStall|
EXPORT |LocatePCMCIACard|
00000 AREA |.text| { |LocatePCMCIACard| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$LocatePCMCIACard|, PDATA, SELECTION=5, ASSOC=|.text| { |LocatePCMCIACard| } ; comdat associative
|$T40932| DCD |$L40931|
DCD 0x40000701
; Function compile flags: /Ogsy
00000 AREA |.text| { |LocatePCMCIACard| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |LocatePCMCIACard| PROC
; 105 : {
00000 |$L40931|
00000 e52de004 str lr, [sp, #-4]!
00004 |$M40929|
; 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);
; 109 : volatile BULVERDE_MEMCTRL_REG *pMEMCTRLRegs = (volatile BULVERDE_MEMCTRL_REG *) OALPAtoVA(BULVERDE_BASE_REG_PA_MEMC, FALSE);
00004 e3a01000 mov r1, #0
00008 e3a00312 mov r0, #0x12, 6
0000c eb000000 bl OALPAtoVA
; 110 :
; 111 : switch (EthDevice)
; 112 : {
; 113 : case ETH_DEVICE_PCMCIA0:
; 114 : // pSRCR = (volatile UINT32 *)&(pBLRegs->pcmcia0_srcr);
; 115 : break;
; 116 : case ETH_DEVICE_PCMCIA1:
; 117 : // pSRCR = (volatile UINT32 *)&(pBLRegs->pcmcia1_srcr);
; 118 : break;
; 119 : default:
; 120 : break;
; 121 : }
; 122 :
; 123 : if (!pSRCR)
; 124 : {
; 125 : return(FALSE);
00010 e3a00000 mov r0, #0
; 126 : }
; 127 :
; 128 : // Initialize the PCMCIA interface if a card is detected.
; 129 : //
; 130 : if (!((*pSRCR & CARD_DETECT) == CARD_DETECT))
; 131 : {
; 132 : EdbgOutputDebugString("INFO: Performing PCMCIA NIC initialization. Please wait...\r\n");
; 133 :
; 134 : // Configure the MAX1602EE power supply based on the voltage requirement of the card.
; 135 : //
; 136 : if (((*pSRCR & VS1) == VS1) && ((*pSRCR & VS2) == VS2))
; 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);
; 151 :
; 152 : *pSRCR |= SlotVoltage;
; 153 : msWait(50);
; 154 :
; 155 : *pSRCR |= PCMCIA_RESET;
; 156 : msWait(50);
; 157 :
; 158 : *pSRCR &= ~PCMCIA_RESET;
; 159 : msWait(50);
; 160 :
; 161 : pMEMCTRLRegs->mecr = 0x2;
; 162 : msWait(50);
; 163 :
; 164 : return (TRUE);
; 165 : }
; 166 :
; 167 : return (FALSE);
; 168 : }
00014 e49de004 ldr lr, [sp], #4
00018 e12fff1e bx lr
0001c |$M40930|
ENDP ; |LocatePCMCIACard|
EXPORT |InitSpecifiedEthDevice|
EXPORT |??_C@_0DM@GJDOGNCA@INFO?3?5Trying?5to?5locate?1initializ@| [ DATA ] ; `string'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -