# GNU C 2.7.2.1 # -O2 -fdefer-pop -fomit-frame-pointer -fcse-follow-jumps -fcse-skip-blocks # -fexpensive-optimizations -fthread-jumps -fstrength-reduce -fpeephole # -fforce-mem -ffunction-cse -finline -fcaller-saves -fpcc-struct-return # -frerun-cse-after-loop -fschedule-insns -fschedule-insns2 -fcommon # -fgnu-linker -mpowerpc -mnew-mnemonics .file "BusTestPPC.c" gcc2_compiled.: .globl loopticks .section ".data" .align 3 .type loopticks,@object .size loopticks,8 loopticks: .long 0 .long 0 .globl LoopCount .align 2 .type LoopCount,@object .size LoopCount,4 LoopCount: .long 100 .globl ArgumentString .section .rodata .align 2 .LC0: .string "Size/N,Loop/N,Address/N,ASize/N,Full/S,Chip/S,Rom/S,MMU/S,CACHE/S" .section ".data" .align 2 .type ArgumentString,@object .size ArgumentString,4 ArgumentString: .long .LC0 .section .rodata .align 2 .LC1: .string "dos.library" .align 2 .LC2: .string "Commandline Error\n" .align 2 .LC3: .string "Error: Can`t alloc Dest Fastram:\n" .align 2 .LC4: .string "Error: Can`t alloc Source Fastram:\n" .align 2 .LC5: .string "CopyBack " .align 2 .LC6: .string "WriteThrough " .align 2 .LC7: .string "NoCache " .align 2 .LC8: .string "NoCacheSync " .align 2 .LC9: .string "Chipram:\n" .align 2 .LC10: .string "Rom:\n" .align 2 .LC11: .string "Ram Size 0x%lx Loop Count %ld\n" .align 2 .LC12: .string "0x%08lx - 0x%08lx: assumes cacheoff at the address\n" .align 2 .LC13: .string "Can`t open dos.library\n" .section ".text" .align 2 .globl main .type main,@function .long 0x7c04c main: stwu 1,-48(1) mflr 0 stw 28,32(1) stw 29,36(1) stw 30,40(1) stw 31,44(1) stw 0,52(1) mr 31,1 addis 11,0,SysBase@ha li 9,4 lwz 10,0(9) addis 9,0,.LC1@ha addi 9,9,.LC1@l li 29,0 li 30,1 lwz 0,0(1) stw 10,SysBase@l(11) stwu 0,-144(1) addi 3,1,47 rlwinm 3,3,0,0,26 stw 9,64(3) stw 29,28(3) stw 10,84(3) stw 30,4(3) stw 30,16(3) li 0,-552 stw 0,0(3) bl PPCCallOS mr 11,3 cmpwi 1,11,0 addis 9,0,DOSBase@ha stw 11,DOSBase@l(9) bc 12,6,.L4 addis 9,0,ArgumentString@ha lwz 0,0(1) addis 28,0,MyArgs@ha stwu 0,-144(1) addi 3,1,47 rlwinm 3,3,0,0,26 stw 29,40(3) stw 11,84(3) stw 30,4(3) lwz 0,ArgumentString@l(9) stw 30,16(3) stw 0,32(3) addi 0,28,MyArgs@l stw 0,36(3) li 0,-798 stw 0,0(3) bl PPCCallOS cmpwi 1,3,0 bc 4,6,.L7 addis 3,0,.LC2@ha addi 3,3,.LC2@l b .L64 .L7: addis 9,0,MyArgs+4@ha lwz 9,MyArgs+4@l(9) cmpwi 1,9,0 bc 12,6,.L9 lwz 0,0(9) addis 9,0,LoopCount@ha stw 0,LoopCount@l(9) .L9: lis 0,0x8002 ori 0,0,16385 stw 0,8(31) stw 30,12(31) stw 29,16(31) addi 3,31,8 bl PPCCreateTimerObject cmpwi 1,3,0 addis 9,0,MyTimerObject@ha stw 3,MyTimerObject@l(9) bc 12,6,.L8 addis 9,0,CacheBorder@ha lis 11,0x1 stw 11,CacheBorder@l(9) lwz 9,MyArgs@l(28) li 3,0 cmpwi 1,9,0 ori 3,3,32768 addis 29,0,CacheSize@ha stw 3,CacheSize@l(29) bc 12,6,.L11 lwz 0,0(9) addis 9,0,MemSize@ha addic 0,0,4095 rlwinm 0,0,0,0,19 stw 0,MemSize@l(9) .L11: addis 8,0,MemSize@ha addis 9,0,MyArgs+32@ha lwz 10,MemSize@l(8) lwz 9,MyArgs+32@l(9) subfc 11,10,11 subfe 11,11,11 nand 11,11,11 rlwinm 0,11,0,15,15 cmpwi 1,9,0 andc 9,10,11 or 0,0,9 stw 0,MemSize@l(8) bc 4,6,.L14 addis 9,0,MyArgs+16@ha lwz 0,MyArgs+16@l(9) cmpwi 1,0,0 bc 12,6,.L13 .L14: li 4,4 bl PPCAllocVec mr. 30,3 bc 12,2,.L16 lwz 3,CacheSize@l(29) li 4,4 bl PPCAllocVec mr. 29,3 bc 12,2,.L17 mr 3,30 mr 4,29 bl CacheTest mr 3,29 bl PPCFreeVec b .L18 .L17: addis 3,0,.LC3@ha addi 3,3,.LC3@l crxor 6,6,6 bl PPCprintf .L18: mr 3,30 bl PPCFreeVec b .L13 .L16: addis 3,0,.LC4@ha addi 3,3,.LC4@l crxor 6,6,6 bl PPCprintf .L13: addis 9,0,MyArgs+8@ha lwz 0,MyArgs+8@l(9) cmpwi 1,0,0 bc 12,6,.L21 addis 9,0,MyArgs+16@ha lwz 0,MyArgs+16@l(9) cmpwi 1,0,0 bc 12,6,.L20 .L21: addis 28,0,CacheBorder@ha addis 29,0,MemSize@ha lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) li 4,4 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 30,3 bc 12,2,.L22 lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) li 4,4 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 29,3 bc 12,2,.L24 addis 3,0,.LC5@ha addi 3,3,.LC5@l crxor 6,6,6 bl PPCprintf mr 3,30 mr 4,29 li 5,32 bl MemoryBurstTest mr 3,29 bl PPCFreeVec b .L26 .L24: addis 3,0,.LC3@ha addi 3,3,.LC3@l crxor 6,6,6 bl PPCprintf .L26: mr 3,30 bl PPCFreeVec b .L27 .L22: addis 3,0,.LC4@ha addi 3,3,.LC4@l crxor 6,6,6 bl PPCprintf .L27: addis 9,0,MyArgs+28@ha lwz 0,MyArgs+28@l(9) cmpwi 1,0,0 bc 4,6,.L29 addis 9,0,MyArgs+16@ha lwz 0,MyArgs+16@l(9) cmpwi 1,0,0 bc 12,6,.L20 .L29: lis 4,0x40 addis 28,0,CacheBorder@ha addis 29,0,MemSize@ha lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) ori 4,4,4 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 30,3 bc 12,2,.L30 lis 4,0x40 lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) ori 4,4,4 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 29,3 bc 12,2,.L32 addis 3,0,.LC6@ha addi 3,3,.LC6@l crxor 6,6,6 bl PPCprintf mr 3,30 mr 4,29 li 5,0 bl MemoryBurstTest mr 3,29 bl PPCFreeVec b .L34 .L32: addis 3,0,.LC3@ha addi 3,3,.LC3@l crxor 6,6,6 bl PPCprintf .L34: mr 3,30 bl PPCFreeVec b .L35 .L30: addis 3,0,.LC4@ha addi 3,3,.LC4@l crxor 6,6,6 bl PPCprintf .L35: lis 4,0x100 addis 28,0,CacheBorder@ha addis 29,0,MemSize@ha lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) ori 4,4,4 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 30,3 bc 12,2,.L36 lis 4,0x100 lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) ori 4,4,4 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 29,3 bc 12,2,.L38 addis 3,0,.LC7@ha addi 3,3,.LC7@l crxor 6,6,6 bl PPCprintf mr 3,30 mr 4,29 bl MemorySingleTest mr 3,29 bl PPCFreeVec b .L40 .L38: addis 3,0,.LC3@ha addi 3,3,.LC3@l crxor 6,6,6 bl PPCprintf .L40: mr 3,30 bl PPCFreeVec b .L41 .L36: addis 3,0,.LC4@ha addi 3,3,.LC4@l crxor 6,6,6 bl PPCprintf .L41: lis 4,0x2000 addis 28,0,CacheBorder@ha addis 29,0,MemSize@ha lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) ori 4,4,4 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 30,3 bc 12,2,.L42 lis 4,0x2000 lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) ori 4,4,4 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 29,3 bc 12,2,.L44 addis 3,0,.LC8@ha addi 3,3,.LC8@l crxor 6,6,6 bl PPCprintf mr 3,30 mr 4,29 bl MemorySingleTest mr 3,29 bl PPCFreeVec b .L46 .L44: addis 3,0,.LC3@ha addi 3,3,.LC3@l crxor 6,6,6 bl PPCprintf .L46: mr 3,30 bl PPCFreeVec b .L20 .L42: addis 3,0,.LC4@ha addi 3,3,.LC4@l crxor 6,6,6 bl PPCprintf .L20: addis 9,0,MyArgs+20@ha lwz 0,MyArgs+20@l(9) cmpwi 1,0,0 bc 4,6,.L49 addis 9,0,MyArgs+16@ha lwz 0,MyArgs+16@l(9) cmpwi 1,0,0 bc 12,6,.L48 .L49: addis 28,0,CacheBorder@ha addis 29,0,MemSize@ha lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) li 4,2 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 30,3 bc 12,2,.L50 lwz 3,MemSize@l(29) lwz 9,CacheBorder@l(28) li 4,2 subfc 0,9,3 subfe 0,0,0 nand 0,0,0 and 3,3,0 andc 0,9,0 or 3,3,0 addi 3,3,4096 bl PPCAllocVec mr. 29,3 bc 12,2,.L52 addis 3,0,.LC9@ha addi 3,3,.LC9@l crxor 6,6,6 bl PPCprintf mr 3,30 mr 4,29 bl MemorySingleTest mr 3,29 bl PPCFreeVec b .L54 .L52: addis 3,0,.LC4@ha addi 3,3,.LC4@l crxor 6,6,6 bl PPCprintf .L54: mr 3,30 bl PPCFreeVec b .L48 .L50: addis 3,0,.LC4@ha addi 3,3,.LC4@l crxor 6,6,6 bl PPCprintf .L48: addis 9,0,MyArgs+24@ha lwz 0,MyArgs+24@l(9) cmpwi 1,0,0 bc 4,6,.L57 addis 9,0,MyArgs+16@ha lwz 0,MyArgs+16@l(9) cmpwi 1,0,0 bc 12,6,.L56 .L57: addis 3,0,.LC10@ha addi 3,3,.LC10@l crxor 6,6,6 bl PPCprintf lis 3,0xf8 li 4,0 li 5,32 bl MemoryBurstTest .L56: addis 30,0,MyArgs+8@ha lwz 0,MyArgs+8@l(30) cmpwi 1,0,0 bc 12,6,.L58 addis 9,0,MyArgs+12@ha lwz 9,MyArgs+12@l(9) cmpwi 1,9,0 bc 12,6,.L59 lwz 0,0(9) addis 9,0,MemSize@ha addic 0,0,4095 rlwinm 0,0,0,0,19 stw 0,MemSize@l(9) .L59: addis 29,0,MemSize@ha addis 9,0,LoopCount@ha addis 3,0,.LC11@ha lwz 4,MemSize@l(29) lwz 5,LoopCount@l(9) addi 3,3,.LC11@l crxor 6,6,6 bl PPCprintf addis 3,0,.LC12@ha lwz 9,MyArgs+8@l(30) lwz 5,MemSize@l(29) lwz 4,0(9) addi 3,3,.LC12@l add 5,4,5 crxor 6,6,6 bl PPCprintf lwz 9,MyArgs+8@l(30) lwz 3,0(9) li 4,0 bl MemorySingleTest .L58: addis 9,0,MyTimerObject@ha lwz 3,MyTimerObject@l(9) bl PPCDeleteTimerObject .L8: addis 9,0,DOSBase@ha lwz 0,0(1) addis 11,0,SysBase@ha stwu 0,-144(1) addi 3,1,47 rlwinm 3,3,0,0,26 lwz 0,DOSBase@l(9) lwz 9,SysBase@l(11) stw 0,64(3) stw 9,84(3) li 0,1 stw 0,4(3) stw 0,16(3) li 0,-414 stw 0,0(3) bl PPCCallOS li 3,0 b .L63 .L4: addis 3,0,.LC13@ha addi 3,3,.LC13@l .L64: crxor 6,6,6 bl PPCprintf li 3,20 .L63: lwz 11,0(1) lwz 0,4(11) mtlr 0 lwz 28,-16(11) lwz 29,-12(11) lwz 30,-8(11) lwz 31,-4(11) mr 1,11 blr .Lfe1: .size main,.Lfe1-main .align 2 .globl CalcTimer .type CalcTimer,@function .long 0x404c CalcTimer: stwu 1,-32(1) mflr 0 stw 28,16(1) stw 29,20(1) stw 30,24(1) stw 31,28(1) stw 0,36(1) lis 4,0x8002 ori 4,4,16403 addis 28,0,MyTimerObject@ha addis 29,0,Result@ha lwz 3,MyTimerObject@l(28) addi 5,29,Result@l bl PPCGetTimerObject lis 4,0x8002 ori 4,4,16405 addi 29,29,Result@l mr 5,29 addis 9,0,ticks@ha lwz 0,4(29) lwz 3,MyTimerObject@l(28) stw 0,ticks@l(9) bl PPCGetTimerObject lfd 0,0(29) addis 9,0,allticks@ha addi 9,9,allticks@l stfd 0,0(9) lwz 0,36(1) mtlr 0 lwz 28,16(1) lwz 29,20(1) lwz 30,24(1) lwz 31,28(1) addi 1,1,32 blr .Lfe2: .size CalcTimer,.Lfe2-CalcTimer .section .rodata .align 2 .LC14: .string "CPU Cache isn`t working yet..measurements are wrong\n" .section ".text" .align 2 .globl CacheTest .type CacheTest,@function .long 0x400c CacheTest: stwu 1,-16(1) mflr 0 stw 0,20(1) addis 3,0,.LC14@ha addi 3,3,.LC14@l crxor 6,6,6 bl PPCprintf lwz 0,20(1) mtlr 0 addi 1,1,16 blr .Lfe3: .size CacheTest,.Lfe3-CacheTest .section .rodata .align 2 .LC15: .string "Bus Burst Performance Statistics\n" .align 2 .LC16: .string "%16Ld Line Read\t%4g MB/s Mem Bandwidth\n" .globl __divdi3 .globl __floatdidf .align 2 .LC17: .string "%16Ld Line Write\t%4g MB/s Mem Bandwidth\n" .align 3 .LC18: .double 0d1.04857600000000000000e6 .section ".text" .align 2 .globl MemoryBurstTest .type MemoryBurstTest,@function .long 0x40bc MemoryBurstTest: stwu 1,-80(1) mflr 0 stw 21,36(1) stw 22,40(1) stw 23,44(1) stw 24,48(1) stw 25,52(1) stw 26,56(1) stw 27,60(1) stw 28,64(1) stw 29,68(1) stw 30,72(1) stw 31,76(1) stw 0,84(1) mr 26,3 mr 22,5 addis 3,0,.LC15@ha addi 3,3,.LC15@l crxor 6,6,6 bl PPCprintf addis 9,0,CacheBorder@ha addis 27,0,MyTimerObject@ha addis 25,0,LoopCount@ha lwz 0,CacheBorder@l(9) addis 9,0,loopticks@ha addi 23,9,loopticks@l addis 9,0,allticks@ha addi 24,9,allticks@l mr 31,0 li 30,0 b .L68 .L71: bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 li 5,0 lwz 3,MyTimerObject@l(27) bl PPCSetTimerObject slwi 9,30,27 srwi 0,31,5 or 29,9,0 srawi 28,30,5 mr 3,26 lwz 5,LoopCount@l(25) mr 4,29 bl memreadlinetime lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(27) li 5,0 bl PPCSetTimerObject bl CalcTimer lfd 0,0(24) stfd 0,0(23) bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(27) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(25) mr 4,29 bl memreadline lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(27) li 5,0 bl PPCSetTimerObject bl CalcTimer lwz 9,LoopCount@l(25) mr 10,9 li 9,0 mulhw 7,31,10 mullw 8,31,10 srwi 4,10,31 add 4,4,9 mullw 4,4,31 srwi 5,31,31 add 5,5,30 addis 6,0,ticks@ha lwz 0,ticks@l(6) mullw 5,5,10 mr 12,0 li 11,0 add 7,7,4 add 7,7,5 mulhw 3,8,12 mullw 4,8,12 srwi 29,12,31 add 29,29,11 mullw 29,29,8 srwi 0,8,31 add 0,0,7 mullw 0,0,12 lwz 9,0(23) lwz 10,4(23) lwz 11,0(24) lwz 12,4(24) subfc 6,10,12 subfe 5,9,11 add 3,3,29 add 3,3,0 crxor 6,6,6 bl __divdi3 crxor 6,6,6 bl __floatdidf addis 21,0,.LC18@ha addi 21,21,.LC18@l lfd 0,0(21) fdiv 1,1,0 addis 3,0,.LC16@ha addi 3,3,.LC16@l mr 4,30 mr 5,31 creqv 6,6,6 bl PPCprintf li 3,0 li 4,4096 bl PPCSetSignal andi. 0,3,4096 bc 4,2,.L67 srwi 11,31,31 slwi 0,30,1 or 9,11,0 slwi 10,31,1 mr 30,9 mr 31,10 .L68: addis 9,0,MemSize@ha lwz 0,MemSize@l(9) mr 10,0 li 9,0 cmpw 1,30,9 bc 12,5,.L69 bc 4,6,.L71 cmplw 1,31,10 bc 4,5,.L71 .L69: lis 0,0xf8 cmpw 1,26,0 bc 12,6,.L67 cmpwi 1,22,0 bc 4,6,.L76 addis 9,0,CacheBorder@ha addis 27,0,MyTimerObject@ha addis 25,0,LoopCount@ha lwz 0,CacheBorder@l(9) addis 9,0,loopticks@ha addi 23,9,loopticks@l addis 9,0,allticks@ha addi 24,9,allticks@l mr 31,0 li 30,0 b .L77 .L80: bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 li 5,0 lwz 3,MyTimerObject@l(27) bl PPCSetTimerObject slwi 9,30,27 srwi 0,31,5 or 29,9,0 srawi 28,30,5 mr 3,26 lwz 5,LoopCount@l(25) mr 4,29 bl memwritelinetime2 lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(27) li 5,0 bl PPCSetTimerObject bl CalcTimer lfd 0,0(24) stfd 0,0(23) bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(27) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(25) mr 4,29 bl memwriteline2 lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(27) li 5,0 bl PPCSetTimerObject bl CalcTimer lwz 9,LoopCount@l(25) mr 10,9 li 9,0 mulhw 7,31,10 mullw 8,31,10 srwi 4,10,31 add 4,4,9 mullw 4,4,31 srwi 5,31,31 add 5,5,30 addis 6,0,ticks@ha lwz 0,ticks@l(6) mullw 5,5,10 mr 12,0 li 11,0 add 7,7,4 add 7,7,5 mulhw 3,8,12 mullw 4,8,12 srwi 29,12,31 add 29,29,11 mullw 29,29,8 srwi 0,8,31 add 0,0,7 mullw 0,0,12 lwz 9,0(23) lwz 10,4(23) lwz 11,0(24) lwz 12,4(24) subfc 6,10,12 subfe 5,9,11 add 3,3,29 add 3,3,0 crxor 6,6,6 bl __divdi3 crxor 6,6,6 bl __floatdidf addis 21,0,.LC18@ha addi 21,21,.LC18@l lfd 0,0(21) fdiv 1,1,0 addis 3,0,.LC17@ha addi 3,3,.LC17@l mr 4,30 mr 5,31 creqv 6,6,6 bl PPCprintf li 3,0 li 4,4096 bl PPCSetSignal andi. 0,3,4096 bc 4,2,.L67 srwi 11,31,31 slwi 0,30,1 or 9,11,0 slwi 10,31,1 mr 30,9 mr 31,10 .L77: addis 9,0,MemSize@ha lwz 0,MemSize@l(9) mr 10,0 li 9,0 cmpw 1,30,9 bc 12,5,.L67 bc 4,6,.L80 cmplw 1,31,10 bc 12,5,.L67 b .L80 .L76: addis 9,0,CacheBorder@ha addis 27,0,MyTimerObject@ha addis 25,0,LoopCount@ha lwz 0,CacheBorder@l(9) addis 9,0,loopticks@ha addi 23,9,loopticks@l addis 9,0,allticks@ha addi 24,9,allticks@l mr 31,0 li 30,0 b .L85 .L88: bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 li 5,0 lwz 3,MyTimerObject@l(27) bl PPCSetTimerObject slwi 9,30,27 srwi 0,31,5 or 29,9,0 srawi 28,30,5 mr 3,26 lwz 5,LoopCount@l(25) mr 4,29 bl memwritelinetime lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(27) li 5,0 bl PPCSetTimerObject bl CalcTimer lfd 0,0(24) stfd 0,0(23) bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(27) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(25) mr 4,29 bl memwriteline lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(27) li 5,0 bl PPCSetTimerObject bl CalcTimer lwz 9,LoopCount@l(25) mr 10,9 li 9,0 mulhw 7,31,10 mullw 8,31,10 srwi 4,10,31 add 4,4,9 mullw 4,4,31 srwi 5,31,31 add 5,5,30 addis 6,0,ticks@ha lwz 0,ticks@l(6) mullw 5,5,10 mr 12,0 li 11,0 add 7,7,4 add 7,7,5 mulhw 3,8,12 mullw 4,8,12 srwi 29,12,31 add 29,29,11 mullw 29,29,8 srwi 0,8,31 add 0,0,7 mullw 0,0,12 lwz 9,0(23) lwz 10,4(23) lwz 11,0(24) lwz 12,4(24) subfc 6,10,12 subfe 5,9,11 add 3,3,29 add 3,3,0 crxor 6,6,6 bl __divdi3 crxor 6,6,6 bl __floatdidf addis 21,0,.LC18@ha addi 21,21,.LC18@l lfd 0,0(21) fdiv 1,1,0 addis 3,0,.LC17@ha addi 3,3,.LC17@l mr 4,30 mr 5,31 creqv 6,6,6 bl PPCprintf li 3,0 li 4,4096 bl PPCSetSignal andi. 0,3,4096 bc 4,2,.L67 srwi 11,31,31 slwi 0,30,1 or 9,11,0 slwi 10,31,1 mr 30,9 mr 31,10 .L85: addis 9,0,MemSize@ha lwz 0,MemSize@l(9) mr 10,0 li 9,0 cmpw 1,30,9 bc 12,5,.L67 bc 4,6,.L88 cmplw 1,31,10 bc 4,5,.L88 .L67: lwz 0,84(1) mtlr 0 lwz 21,36(1) lwz 22,40(1) lwz 23,44(1) lwz 24,48(1) lwz 25,52(1) lwz 26,56(1) lwz 27,60(1) lwz 28,64(1) lwz 29,68(1) lwz 30,72(1) lwz 31,76(1) addi 1,1,80 blr .Lfe4: .size MemoryBurstTest,.Lfe4-MemoryBurstTest .section .rodata .align 2 .LC19: .string "- Bus CacheMode Performance Statistics\n" .align 2 .LC20: .string "%16Ld Long Read\t%4g MB/s Mem Bandwidth\n" .align 2 .LC21: .string "%16Ld Word Read\t%4g MB/s Mem Bandwidth\n" .align 2 .LC22: .string "%16Ld Byte Read\t%4g MB/s Mem Bandwidth\n" .align 2 .LC23: .string "%16Ld Long Write\t%4g MB/s Mem Bandwidth\n" .align 2 .LC24: .string "%16Ld Word Write\t%4g MB/s Mem Bandwidth\n" .align 2 .LC25: .string "%16Ld Byte Write\t%4g MB/s Mem Bandwidth\n" .align 3 .LC26: .double 0d1.04857600000000000000e6 .section ".text" .align 2 .globl MemorySingleTest .type MemorySingleTest,@function .long 0x42cc MemorySingleTest: stwu 1,-80(1) mflr 0 stfd 31,72(1) stw 20,24(1) stw 21,28(1) stw 22,32(1) stw 23,36(1) stw 24,40(1) stw 25,44(1) stw 26,48(1) stw 27,52(1) stw 28,56(1) stw 29,60(1) stw 30,64(1) stw 31,68(1) stw 0,84(1) mr 26,3 addis 3,0,.LC19@ha addi 3,3,.LC19@l crxor 6,6,6 bl PPCprintf li 31,4096 li 30,0 addis 25,0,MyTimerObject@ha addis 24,0,LoopCount@ha addis 9,0,loopticks@ha addi 22,9,loopticks@l addis 9,0,allticks@ha addis 20,0,.LC26@ha addi 20,20,.LC26@l lfd 31,0(20) addi 23,9,allticks@l addis 21,0,ticks@ha b .L93 .L96: bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 li 5,0 lwz 3,MyTimerObject@l(25) bl PPCSetTimerObject slwi 9,30,27 srwi 0,31,5 or 28,9,0 srawi 27,30,5 mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memreadlongtime lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lfd 0,0(23) stfd 0,0(22) bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 crxor 6,6,6 bl memreadlong lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lwz 9,LoopCount@l(24) mr 10,9 li 9,0 mulhw 7,31,10 mullw 8,31,10 srwi 5,10,31 add 5,5,9 mullw 5,5,31 srwi 0,31,31 add 0,0,30 lwz 6,ticks@l(21) mullw 0,0,10 mr 12,6 li 11,0 add 7,7,5 add 7,7,0 mulhw 3,8,12 mullw 4,8,12 srwi 29,12,31 add 29,29,11 mullw 29,29,8 srwi 0,8,31 add 0,0,7 mullw 0,0,12 lwz 9,0(22) lwz 10,4(22) lwz 11,0(23) lwz 12,4(23) subfc 6,10,12 subfe 5,9,11 add 3,3,29 add 3,3,0 crxor 6,6,6 bl __divdi3 crxor 6,6,6 bl __floatdidf fdiv 1,1,31 addis 3,0,.LC20@ha addi 3,3,.LC20@l mr 4,30 mr 5,31 creqv 6,6,6 bl PPCprintf bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memreadwordtime lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lfd 0,0(23) stfd 0,0(22) bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memreadword lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lwz 9,LoopCount@l(24) mr 10,9 li 9,0 mulhw 7,31,10 mullw 8,31,10 srwi 5,10,31 add 5,5,9 mullw 5,5,31 srwi 0,31,31 add 0,0,30 lwz 6,ticks@l(21) mullw 0,0,10 mr 12,6 li 11,0 add 7,7,5 add 7,7,0 mulhw 3,8,12 mullw 4,8,12 srwi 29,12,31 add 29,29,11 mullw 29,29,8 srwi 0,8,31 add 0,0,7 mullw 0,0,12 lwz 9,0(22) lwz 10,4(22) lwz 11,0(23) lwz 12,4(23) subfc 6,10,12 subfe 5,9,11 add 3,3,29 add 3,3,0 crxor 6,6,6 bl __divdi3 crxor 6,6,6 bl __floatdidf fdiv 1,1,31 addis 3,0,.LC21@ha addi 3,3,.LC21@l mr 4,30 mr 5,31 creqv 6,6,6 bl PPCprintf bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memreadbytetime lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lfd 0,0(23) stfd 0,0(22) bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memreadbyte lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lwz 9,LoopCount@l(24) mr 10,9 li 9,0 mulhw 7,31,10 mullw 8,31,10 srwi 5,10,31 add 5,5,9 mullw 5,5,31 srwi 0,31,31 add 0,0,30 lwz 6,ticks@l(21) mullw 0,0,10 mr 12,6 li 11,0 add 7,7,5 add 7,7,0 mulhw 3,8,12 mullw 4,8,12 srwi 29,12,31 add 29,29,11 mullw 29,29,8 srwi 0,8,31 add 0,0,7 mullw 0,0,12 lwz 9,0(22) lwz 10,4(22) lwz 11,0(23) lwz 12,4(23) subfc 6,10,12 subfe 5,9,11 add 3,3,29 add 3,3,0 crxor 6,6,6 bl __divdi3 crxor 6,6,6 bl __floatdidf fdiv 1,1,31 addis 3,0,.LC22@ha addi 3,3,.LC22@l mr 4,30 mr 5,31 creqv 6,6,6 bl PPCprintf li 3,0 li 4,4096 bl PPCSetSignal andi. 0,3,4096 bc 4,2,.L92 srwi 11,31,31 slwi 0,30,1 or 9,11,0 slwi 10,31,1 mr 30,9 mr 31,10 .L93: addis 9,0,MemSize@ha lwz 0,MemSize@l(9) mr 10,0 li 9,0 cmpw 1,30,9 bc 12,5,.L94 bc 4,6,.L96 cmplw 1,31,10 bc 4,5,.L96 .L94: lis 0,0xf8 cmpw 1,26,0 bc 12,6,.L92 li 31,4096 li 30,0 addis 25,0,MyTimerObject@ha addis 24,0,LoopCount@ha addis 9,0,loopticks@ha addi 22,9,loopticks@l addis 9,0,allticks@ha addis 20,0,.LC26@ha addi 20,20,.LC26@l lfd 31,0(20) addi 23,9,allticks@l addis 21,0,ticks@ha b .L101 .L104: bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 li 5,0 lwz 3,MyTimerObject@l(25) bl PPCSetTimerObject slwi 9,30,27 srwi 0,31,5 or 28,9,0 srawi 27,30,5 mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memreadlongtime lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lfd 0,0(23) stfd 0,0(22) bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memwritelong lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lwz 9,LoopCount@l(24) mr 10,9 li 9,0 mulhw 7,31,10 mullw 8,31,10 srwi 5,10,31 add 5,5,9 mullw 5,5,31 srwi 0,31,31 add 0,0,30 lwz 6,ticks@l(21) mullw 0,0,10 mr 12,6 li 11,0 add 7,7,5 add 7,7,0 mulhw 3,8,12 mullw 4,8,12 srwi 29,12,31 add 29,29,11 mullw 29,29,8 srwi 0,8,31 add 0,0,7 mullw 0,0,12 lwz 9,0(22) lwz 10,4(22) lwz 11,0(23) lwz 12,4(23) subfc 6,10,12 subfe 5,9,11 add 3,3,29 add 3,3,0 crxor 6,6,6 bl __divdi3 crxor 6,6,6 bl __floatdidf fdiv 1,1,31 addis 3,0,.LC23@ha addi 3,3,.LC23@l mr 4,30 mr 5,31 creqv 6,6,6 bl PPCprintf bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memreadwordtime lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lfd 0,0(23) stfd 0,0(22) bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memwriteword lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lwz 9,LoopCount@l(24) mr 10,9 li 9,0 mulhw 7,31,10 mullw 8,31,10 srwi 5,10,31 add 5,5,9 mullw 5,5,31 srwi 0,31,31 add 0,0,30 lwz 6,ticks@l(21) mullw 0,0,10 mr 12,6 li 11,0 add 7,7,5 add 7,7,0 mulhw 3,8,12 mullw 4,8,12 srwi 29,12,31 add 29,29,11 mullw 29,29,8 srwi 0,8,31 add 0,0,7 mullw 0,0,12 lwz 9,0(22) lwz 10,4(22) lwz 11,0(23) lwz 12,4(23) subfc 6,10,12 subfe 5,9,11 add 3,3,29 add 3,3,0 crxor 6,6,6 bl __divdi3 crxor 6,6,6 bl __floatdidf fdiv 1,1,31 addis 3,0,.LC24@ha addi 3,3,.LC24@l mr 4,30 mr 5,31 creqv 6,6,6 bl PPCprintf bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memreadbytetime lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lfd 0,0(23) stfd 0,0(22) bl PPCCacheFlushAll lis 4,0x8002 ori 4,4,16401 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject mr 3,26 lwz 5,LoopCount@l(24) mr 4,28 bl memwritebyte lis 4,0x8002 ori 4,4,16402 lwz 3,MyTimerObject@l(25) li 5,0 bl PPCSetTimerObject bl CalcTimer lwz 9,LoopCount@l(24) mr 10,9 li 9,0 mulhw 7,31,10 mullw 8,31,10 srwi 5,10,31 add 5,5,9 mullw 5,5,31 srwi 0,31,31 add 0,0,30 lwz 6,ticks@l(21) mullw 0,0,10 mr 12,6 li 11,0 add 7,7,5 add 7,7,0 mulhw 3,8,12 mullw 4,8,12 srwi 29,12,31 add 29,29,11 mullw 29,29,8 srwi 0,8,31 add 0,0,7 mullw 0,0,12 lwz 9,0(22) lwz 10,4(22) lwz 11,0(23) lwz 12,4(23) subfc 6,10,12 subfe 5,9,11 add 3,3,29 add 3,3,0 crxor 6,6,6 bl __divdi3 crxor 6,6,6 bl __floatdidf fdiv 1,1,31 addis 3,0,.LC25@ha addi 3,3,.LC25@l mr 4,30 mr 5,31 creqv 6,6,6 bl PPCprintf li 3,0 li 4,4096 bl PPCSetSignal andi. 0,3,4096 bc 4,2,.L92 srwi 11,31,31 slwi 0,30,1 or 9,11,0 slwi 10,31,1 mr 30,9 mr 31,10 .L101: addis 9,0,MemSize@ha lwz 0,MemSize@l(9) mr 10,0 li 9,0 cmpw 1,30,9 bc 12,5,.L92 bc 4,6,.L104 cmplw 1,31,10 bc 4,5,.L104 .L92: lwz 0,84(1) mtlr 0 lwz 20,24(1) lwz 21,28(1) lwz 22,32(1) lwz 23,36(1) lwz 24,40(1) lwz 25,44(1) lwz 26,48(1) lwz 27,52(1) lwz 28,56(1) lwz 29,60(1) lwz 30,64(1) lwz 31,68(1) lfd 31,72(1) addi 1,1,80 blr .Lfe5: .size MemorySingleTest,.Lfe5-MemorySingleTest .comm MyArgs,36,4 .comm SysBase,4,4 .comm DOSBase,4,4 .comm Result,8,8 .comm MyTimerObject,4,4 .comm ticks,4,4 .comm allticks,8,8 .comm MemSize,4,4 .comm Intenar,2,2 .comm CacheBorder,4,4 .comm CacheSize,4,4 .ident "GCC: (GNU) 2.7.2.1"