という訳で、ISSをいろいろ修正して、無事にRISC-VのISSでCoremarkが動作するようになった。 あとは、これにいろいろデバッグ機能を足して、改良していく、という感じかな。
MIPS側のビルドもメンテナンスを行ったので、RISC-VとMIPS、どちらでも同じ機能が利用できるようになった。
ベンチマークプログラムとしては、以下のリポジトリを利用している。とにかく、いろんなベンチマークをこのリポジトリに集めてテストしよう。
less init.lua riscv = make_core ("risc-v") set_pc (riscv, 0x00100) run (riscv) ./swimmer_riscv --max 1000000 --out debug.log --binfile ~/benchmarks/coremark_v1.0/coremark.bin --script init.lua --debug_func --debug_gvar --debug less debug.log ... 330518 : [80001d5c] 00008067 : jalr r00,r01,r103 r01=>80002910 pc<=80002910 330519 : [80002910] 04e10513 : addi r10,r02,0x04e r02=>7f003f78 r10<=7f003fc6 330520 : [80002914] fc1fe0ef : jal r01,0xfc1fe r01<=80002918 pc<=800018d4 <Func: portable_fini> 330521 : [800018d4] 00050023 : sb r10,r00,0x00|r00 r10=>7f003fc6 r00=>00000000 (7f003fc6)<=00000000 330522 : [800018d8] 00008067 : jalr r00,r01,r103 r01=>80002918 pc<=80002918 330523 : [80002918] 08c12083 : lw r01,r02,0x08c r02=>7f003f78 (7f004004)=>00000190 r01<=00000190 330524 : [8000291c] 00000513 : addi r10,r00,0x000 r00=>00000000 r10<=00000000 330525 : [80002920] 08812403 : lw r08,r02,0x088 r02=>7f003f78 (7f004000)=>800022e8 r08<=800022e8 330526 : [80002924] 08412483 : lw r09,r02,0x084 r02=>7f003f78 (7f003ffc)=>00000000 r09<=00000000 330527 : [80002928] 08012903 : lw r18,r02,0x080 r02=>7f003f78 (7f003ff8)=>00000000 r18<=00000000 330528 : [8000292c] 07c12983 : lw r19,r02,0x07c r02=>7f003f78 (7f003ff4)=>00000000 r19<=00000000 330529 : [80002930] 07812a03 : lw r20,r02,0x078 r02=>7f003f78 (7f003ff0)=>00000000 r20<=00000000 330530 : [80002934] 07412a83 : lw r21,r02,0x074 r02=>7f003f78 (7f003fec)=>00000000 r21<=00000000 330531 : [80002938] 07012b03 : lw r22,r02,0x070 r02=>7f003f78 (7f003fe8)=>00000000 r22<=00000000 330532 : [8000293c] 06c12b83 : lw r23,r02,0x06c r02=>7f003f78 (7f003fe4)=>00000000 r23<=00000000 330533 : [80002940] 06812c03 : lw r24,r02,0x068 r02=>7f003f78 (7f003fe0)=>00000000 r24<=00000000 330534 : [80002944] 06412c83 : lw r25,r02,0x064 r02=>7f003f78 (7f003fdc)=>00000000 r25<=00000000 330535 : [80002948] 06012d03 : lw r26,r02,0x060 r02=>7f003f78 (7f003fd8)=>00000000 r26<=00000000 330536 : [8000294c] 05c12d83 : lw r27,r02,0x05c r02=>7f003f78 (7f003fd4)=>00000000 r27<=00000000 330537 : [80002950] 09010113 : addi r02,r02,0x090 r02=>7f003f78 r02<=7f004008 330538 : [80002954] 00008067 : jalr r00,r01,r103 r01=>00000190 pc<=00000190 330539 : [00000190] 00100093 : addi r01,r00,0x001 r00=>00000000 r01<=00000001 330540 : [00000194] 78009073 : csrrw r00,0x780,r01 mtohost=>00000000 r01=>00000001 mtohost<=00000001
関数のトレースとグローバル変数のトレースも表示されるようになった。