📄 cpuspeed.txt
字号:
0002f4 00000000 DCB "\0\0\0\0"
|L1.760|
0002f8 30f000ff DCD 0x30f000ff
|L1.764|
0002fc 63614344 DCB "DCac"
000300 6c206568 DCB "he l"
000304 656b636f DCB "ocke"
000308 72612064 DCB "d ar"
00030c 203a6165 DCB "ea: "
000310 7e487825 DCB "%xH~"
000314 0a487825 DCB "%xH\n"
000318 00000000 DCB "\0\0\0\0"
|L1.796|
00031c 00000000 DCD CpuSpeedFunc2
|L1.800|
000320 00000000 DCD CpuSpeedFunc1
|L1.804|
000324 63614349 DCB "ICac"
000328 6c206568 DCB "he l"
00032c 656b636f DCB "ocke"
000330 72612064 DCB "d ar"
000334 203a6165 DCB "ea: "
000338 257e7825 DCB "%x~%"
00033c 35322878 DCB "x(25"
000340 62204236 DCB "6B b"
000344 646e756f DCB "ound"
000348 29797261 DCB "ary)"
00034c 0000000a DCB "\n\0\0\0"
|L1.848|
000350 2044434c DCB "LCD "
000354 64207369 DCB "is d"
000358 62617369 DCB "isab"
00035c 2e64656c DCB "led."
000360 0000000a DCB "\n\0\0\0"
|L1.868|
000364 454c3c3c DCB "<<LE"
000368 74732044 DCB "D st"
00036c 73757461 DCB "atus"
000370 000a3e3e DCB ">>\n\0"
|L1.884|
000374 20293128 DCB "(1) "
000378 3444454c DCB "LED4"
00037c 696c6220 DCB " bli"
000380 203a6b6e DCB "nk: "
000384 20572f52 DCB "R/W "
000388 0a2e4b4f DCB "OK.\n"
00038c 00000000 DCB "\0\0\0\0"
|L1.912|
000390 20293228 DCB "(2) "
000394 3444454c DCB "LED4"
000398 46464f20 DCB " OFF"
00039c 754d203a DCB ": Mu"
0003a0 7069746c DCB "ltip"
0003a4 6520796c DCB "ly e"
0003a8 726f7272 DCB "rror"
0003ac 572f5228 DCB "(R/W"
0003b0 294b4f20 DCB " OK)"
0003b4 00000a2e DCB ".\n\0\0"
|L1.952|
0003b8 20293328 DCB "(3) "
0003bc 3444454c DCB "LED4"
0003c0 4f20372f DCB "/7 O"
0003c4 52203a4e DCB "N: R"
0003c8 4520572f DCB "/W E"
0003cc 726f7272 DCB "rror"
0003d0 00000a2e DCB ".\n\0\0"
|L1.980|
0003d4 68636143 DCB "Cach"
0003d8 6f6c2065 DCB "e lo"
0003dc 642d6b63 DCB "ck-d"
0003e0 2e6e776f DCB "own."
0003e4 0000000a DCB "\n\0\0\0"
|L1.1000|
0003e8 e2844020 ADD r4,r4,#0x20
0003ec eaffffa7 B |L1.656|
;;;72 {
;;;73 if(((uLockPt%0x100)==0)&&(uLockPt>(U32)CpuSpeedFunc1)) base++;
|L1.1008|
0003f0 e31400ff TST r4,#0xff
0003f4 1a000003 BNE |L1.1032|
0003f8 e51f00e0 LDR r0,|L1.800|
0003fc e1540000 CMP r4,r0
000400 9a000000 BLS |L1.1032|
000404 e2855001 ADD r5,r5,#1
;;;74
;;;75 MMU_InvalidateICacheMVA(uLockPt);
|L1.1032|
000408 e1a00004 MOV r0,r4
00040c ebfffffe BL MMU_InvalidateICacheMVA
;;;76
;;;77 if(bypass==1) MMU_SetICacheLockdownBase(base<<26);
000410 e3570001 CMP r7,#1
000414 1a000001 BNE |L1.1056|
000418 e1a00d05 MOV r0,r5,LSL #26
00041c ebfffffe BL MMU_SetICacheLockdownBase
;;;78
;;;79 MMU_PrefetchICacheMVA(uLockPt);
|L1.1056|
000420 e1a00004 MOV r0,r4
000424 ebfffffe BL MMU_PrefetchICacheMVA
;;;80
;;;81 if(bypass==1) //to put the current code outside base 9
000428 e3570001 CMP r7,#1
00042c 1a000002 BNE |L1.1084|
;;;82 {
;;;83 bypass=0;
000430 e3a07000 MOV r7,#0
;;;84 base=0;
000434 e3a05000 MOV r5,#0
;;;85 uLockPt-=0x20; //restore uLockPt
000438 e2444020 SUB r4,r4,#0x20
;;;86 }
;;;87 }
|L1.1084|
00043c eaffffe9 B |L1.1000|
;;;88 base++;
|L1.1088|
000440 e2855001 ADD r5,r5,#1
;;;89 MMU_SetICacheLockdownBase(base<<26); // 256
000444 e1a00d05 MOV r0,r5,LSL #26
000448 ebfffffe BL MMU_SetICacheLockdownBase
;;;90
;;;91 if(base>10)
00044c e355000a CMP r5,#0xa
000450 da000001 BLE |L1.1116|
;;;92 Uart_Printf("ERROR:ICache lockdown base overflow\n");
000454 e28f0f59 ADR r0,|L1.1472|
000458 ebfffffe BL Uart_Printf
;;;93
;;;94 Uart_Printf("lockdown ICache line=0~%d\n",base-1);
|L1.1116|
00045c e2451001 SUB r1,r5,#1
000460 e28f0f60 ADR r0,|L1.1512|
000464 ebfffffe BL Uart_Printf
;;;95
;;;96
;;;97 //========== DCache lock-down ==========
;;;98 base=0;
000468 e3a05000 MOV r5,#0
;;;99 uLockPt=(U32)CpuSpeedFunc1&0xffffffe0;
00046c e51f0154 LDR r0,|L1.800|
000470 e3c0401f BIC r4,r0,#0x1f
;;;100
;;;101 //Function should be cached in DCache because of the literal pool(LDR Rn,=0xxxxx). ??
;;;102 for(;uLockPt<(U32)CpuSpeedFunc2;uLockPt+=0x20)
000474 e1a00000 NOP
|L1.1144|
000478 e51f0164 LDR r0,|L1.796|
00047c e1540000 CMP r4,r0
000480 2a00000e BCS |L1.1216|
000484 ea000001 B |L1.1168|
|L1.1160|
000488 e2844020 ADD r4,r4,#0x20
00048c eafffff9 B |L1.1144|
;;;103 {
;;;104 if(((uLockPt%0x100)==0)&&(uLockPt>(U32)CpuSpeedFunc1))
|L1.1168|
000490 e31400ff TST r4,#0xff
000494 1a000003 BNE |L1.1192|
000498 e51f0180 LDR r0,|L1.800|
00049c e1540000 CMP r4,r0
0004a0 9a000000 BLS |L1.1192|
;;;105 base++;
0004a4 e2855001 ADD r5,r5,#1
;;;106
;;;107 MMU_CleanInvalidateDCacheMVA(uLockPt);
|L1.1192|
0004a8 e1a00004 MOV r0,r4
0004ac ebfffffe BL MMU_CleanInvalidateDCacheMVA
;;;108
;;;109 MMU_SetDCacheLockdownBase(base<<26);
0004b0 e1a00d05 MOV r0,r5,LSL #26
0004b4 ebfffffe BL MMU_SetDCacheLockdownBase
;;;110 *((volatile U32 *)(uLockPt));
0004b8 e5940000 LDR r0,[r4,#0]
;;;111 }
0004bc eafffff1 B |L1.1160|
;;;112 base++;
|L1.1216|
0004c0 e2855001 ADD r5,r5,#1
;;;113 MMU_SetDCacheLockdownBase(base<<26);
0004c4 e1a00d05 MOV r0,r5,LSL #26
0004c8 ebfffffe BL MMU_SetDCacheLockdownBase
;;;114
;;;115
;;;116 for(i=TEST_STADDR;i<TEST_ENDADDR;i+=4)*((U32 *)i)=0x55555555;
0004cc e59f6130 LDR r6,|L1.1540|
|L1.1232|
0004d0 e51f01e0 LDR r0,|L1.760|
0004d4 e1560000 CMP r6,r0
0004d8 aa000005 BGE |L1.1268|
0004dc ea000001 B |L1.1256|
|L1.1248|
0004e0 e2866004 ADD r6,r6,#4
0004e4 eafffff9 B |L1.1232|
|L1.1256|
0004e8 e59f0118 LDR r0,|L1.1544|
0004ec e5860000 STR r0,[r6,#0]
0004f0 eafffffa B |L1.1248|
;;;117
;;;118 for(i=0;i<0x100;i+=0x20)
|L1.1268|
0004f4 e3a06000 MOV r6,#0
|L1.1272|
0004f8 e3560f40 CMP r6,#0x100
0004fc aa00000b BGE |L1.1328|
000500 ea000001 B |L1.1292|
|L1.1284|
000504 e2866020 ADD r6,r6,#0x20
000508 eafffffa B |L1.1272|
;;;119 {
;;;120 MMU_CleanInvalidateDCacheMVA(TEST_STADDR+i);
|L1.1292|
00050c e28605c0 ADD r0,r6,#0x30000000
000510 e28008f0 ADD r0,r0,#0xf00000
000514 ebfffffe BL MMU_CleanInvalidateDCacheMVA
;;;121
;;;122 MMU_SetDCacheLockdownBase(base<<26);
000518 e1a00d05 MOV r0,r5,LSL #26
00051c ebfffffe BL MMU_SetDCacheLockdownBase
;;;123 *((volatile U32 *)(TEST_STADDR+i));
000520 e28605c0 ADD r0,r6,#0x30000000
000524 e28008f0 ADD r0,r0,#0xf00000
000528 e5900000 LDR r0,[r0,#0]
;;;124 }
00052c eafffff4 B |L1.1284|
;;;125
;;;126 base++;
|L1.1328|
000530 e2855001 ADD r5,r5,#1
;;;127 MMU_SetDCacheLockdownBase(base<<26);
000534 e1a00d05 MOV r0,r5,LSL #26
000538 ebfffffe BL MMU_SetDCacheLockdownBase
;;;128
;;;129
;;;130
;;;131 Uart_Printf("lockdown DCache line=0~%d\n",base-1);
00053c e2451001 SUB r1,r5,#1
000540 e28f00c4 ADR r0,|L1.1548|
000544 ebfffffe BL Uart_Printf
;;;132
;;;133
;;;134 //========== Check the line is really cache-filled ==========
;;;135 #if 1
;;;136 for(uLockPt=(U32)CpuSpeedFunc1;uLockPt<(U32)CpuSpeedFunc2-4*8;uLockPt+=4)
000548 e51f4230 LDR r4,|L1.800|
|L1.1356|
00054c e59f00d4 LDR r0,|L1.1576|
000550 e1540000 CMP r4,r0
000554 2a000005 BCS |L1.1392|
000558 ea000001 B |L1.1380|
|L1.1372|
00055c e2844004 ADD r4,r4,#4
000560 eafffff9 B |L1.1356|
;;;137 {
;;;138 //*((U32 *)uLockPt)=0xffffffff; //*((U32 *)uLockPt);
;;;139 *((U32 *)uLockPt)=*((U32 *)uLockPt);
|L1.1380|
000564 e5940000 LDR r0,[r4,#0]
000568 e5840000 STR r0,[r4,#0]
;;;140 }
00056c eafffffa B |L1.1372|
;;;141 #endif
;;;142 // SDRAM Self refresh
;;;143
;;;144 LED_DISPLAY(0x2);
|L1.1392|
000570 e3a00456 MOV r0,#0x56000000
000574 e5900054 LDR r0,[r0,#0x54]
000578 e3c000f0 BIC r0,r0,#0xf0
00057c e38000d0 ORR r0,r0,#0xd0
000580 e3a01456 MOV r1,#0x56000000
000584 e5810054 STR r0,[r1,#0x54]
;;;145
;;;146 //Uart_Getch();
;;;147 // Set clock out pad.
;;;148 rGPHCON = (rGPHCON & ~(3<<20)) | (2<<20); // GPH10 = CLKOUT1.
000588 e3a00456 MOV r0,#0x56000000
00058c e5900070 LDR r0,[r0,#0x70]
000590 e3c009c0 BIC r0,r0,#0x300000
000594 e3800980 ORR r0,r0,#0x200000
000598 e3a01456 MOV r1,#0x56000000
00059c e5810070 STR r0,[r1,#0x70]
;;;149 rMISCCR = (rMISCCR & ~(7<<8)) | (2<<8); // CLKOUT1 = FCLK
0005a0 e3a00456 MOV r0,#0x56000000
0005a4 e5900080 LDR r0,[r0,#0x80]
0005a8 e3c00e70 BIC r0,r0,#0x700
0005ac e3800f80 ORR r0,r0,#0x200
0005b0 e3a01456 MOV r1,#0x56000000
0005b4 e5810080 STR r0,[r1,#0x80]
;;;150 CpuSpeedFunc1();
0005b8 ebfffffe BL CpuSpeedFunc1
;;;151
;;;152 }
0005bc e8bd80f8 LDMFD sp!,{r3-r7,pc}
|L1.1472|
0005c0 4f525245 DCB "ERRO"
0005c4 43493a52 DCB "R:IC"
0005c8 65686361 DCB "ache"
0005cc 636f6c20 DCB " loc"
0005d0 776f646b DCB "kdow"
0005d4 6162206e DCB "n ba"
0005d8 6f206573 DCB "se o"
0005dc 66726576 DCB "verf"
0005e0 0a776f6c DCB "low\n"
0005e4 00000000 DCB "\0\0\0\0"
|L1.1512|
0005e8 6b636f6c DCB "lock"
0005ec 6e776f64 DCB "down"
0005f0 61434920 DCB " ICa"
0005f4 20656863 DCB "che "
0005f8 656e696c DCB "line"
0005fc 257e303d DCB "=0~%"
000600 00000a64 DCB "d\n\0\0"
|L1.1540|
000604 30f00000 DCD 0x30f00000
|L1.1544|
000608 55555555 DCD 0x55555555
|L1.1548|
00060c 6b636f6c DCB "lock"
000610 6e776f64 DCB "down"
000614 61434420 DCB " DCa"
000618 20656863 DCB "che "
00061c 656e696c DCB "line"
000620 257e303d DCB "=0~%"
000624 00000a64 DCB "d\n\0\0"
|L1.1576|
000628 ffffffe0 DCD CpuSpeedFunc2 + -32
ENDP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -