mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-24 05:47:35 -04:00
Started simX
This commit is contained in:
parent
ea7bd485ca
commit
fbf708e419
192 changed files with 28093 additions and 368 deletions
|
@ -83,6 +83,7 @@ namespace Harp {
|
|||
|
||||
bool interrupt(Word r0);
|
||||
bool running() const;
|
||||
|
||||
void step();
|
||||
|
||||
void printStats() const;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
echo start > results.txt
|
||||
|
||||
# echo ../kernel/vortex_test.hex
|
||||
./harptool -E -a rv32i --core ../runtime/mains/simple/vx_simple_main.hex -s -b 1> emulator.debug
|
||||
./harptool -E -a rv32i --core ../runtime/mains/dev/vx_dev_main.hex -s -b 1> emulator.debug
|
||||
|
|
|
@ -130,11 +130,7 @@
|
|||
//Cache configurations
|
||||
//Bytes
|
||||
`define ICACHE_SIZE 1024
|
||||
`ifdef SYN
|
||||
`define ICACHE_WAYS 1
|
||||
`else
|
||||
`define ICACHE_WAYS 2
|
||||
`endif
|
||||
//Bytes
|
||||
`define ICACHE_BLOCK 16
|
||||
`define ICACHE_BANKS 1
|
||||
|
@ -186,11 +182,7 @@
|
|||
//Cache configurations
|
||||
//Bytes
|
||||
`define DCACHE_SIZE 4096
|
||||
`ifdef SYN
|
||||
`define DCACHE_WAYS 1
|
||||
`else
|
||||
`define DCACHE_WAYS 2
|
||||
`endif
|
||||
|
||||
//Bytes
|
||||
`define DCACHE_BLOCK 64
|
||||
|
|
4
rtl/cache/VX_cache_bank_valid.v
vendored
4
rtl/cache/VX_cache_bank_valid.v
vendored
|
@ -19,9 +19,9 @@ module VX_cache_bank_valid
|
|||
for (t_id = 0; t_id < NUM_REQ; t_id = t_id + 1)
|
||||
begin
|
||||
if (NUMBER_BANKS != 1) begin
|
||||
thread_track_banks[i_p_addr[t_id][2+LOG_NUM_BANKS-1:2]][t_id] = i_p_valid[t_id];
|
||||
thread_track_banks[i_p_addr[t_id][2+LOG_NUM_BANKS-1:2]][t_id] = i_p_valid[t_id];
|
||||
end else begin
|
||||
thread_track_banks[t_id] = i_p_valid[t_id];
|
||||
thread_track_banks[0][t_id] = i_p_valid[t_id];
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
2
rtl/cache/VX_d_cache.v
vendored
2
rtl/cache/VX_d_cache.v
vendored
|
@ -243,7 +243,7 @@ module VX_d_cache
|
|||
assign new_stored_valid = use_valid & (~threads_serviced_Qual);
|
||||
|
||||
|
||||
wire update_global_way_to_evict = ((state == RECIV_MEM_RSP) && (new_state == CACHE_IDLE) && (CACHE_WAYS)) && (CACHE_WAYS > 1);
|
||||
wire update_global_way_to_evict = ((state == RECIV_MEM_RSP) && (new_state == CACHE_IDLE)) && (CACHE_WAYS > 1);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
genvar cur_t;
|
||||
|
|
|
@ -112,8 +112,8 @@ comp:
|
|||
|
||||
|
||||
sim: comp
|
||||
# vsim vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log
|
||||
vsim -novopt vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log
|
||||
vsim vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log
|
||||
# vsim -novopt vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ reg out_ebreak;
|
|||
|
||||
initial begin
|
||||
// $fdumpfile("vortex1.vcd");
|
||||
load_file("../../runtime/mains/simple/vx_simple_main.hex");
|
||||
load_file("../../runtime/mains/dev/vx_dev_main.hex");
|
||||
//load_file("../../kernel/vortex_test.hex");
|
||||
$dumpvars(0, vortex_tb);
|
||||
reset = 1;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
COMP = /opt/riscv/bin/riscv32-unknown-elf-gcc
|
||||
CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib
|
||||
# CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib
|
||||
CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostartfiles
|
||||
|
||||
DMP = /opt/riscv/bin/riscv32-unknown-elf-objdump
|
||||
CPY = /opt/riscv/bin/riscv32-unknown-elf-objcopy
|
||||
|
|
|
@ -4,6 +4,14 @@
|
|||
#include "../../tests/tests.h"
|
||||
#include "../../vx_api/vx_api.h"
|
||||
|
||||
|
||||
// #include <utlist.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned * x;
|
||||
|
@ -46,15 +54,32 @@ void mat_add_kernel(void * void_arguments)
|
|||
__endif
|
||||
}
|
||||
|
||||
void vx_print_mat(unsigned * matPtr, int numRows, int numCols)
|
||||
{
|
||||
vx_print_str("---------------------\n");
|
||||
for (int i = 0; i < numRows; i++)
|
||||
{
|
||||
for (int j = 0; j < numCols; j++)
|
||||
{
|
||||
unsigned index = (i * numCols) + j;
|
||||
vx_print_hex(matPtr[index]);
|
||||
vx_print_str(" ");
|
||||
}
|
||||
vx_print_str("\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
// Main is called with all threads active of warp 0
|
||||
vx_tmc(1);
|
||||
|
||||
|
||||
// void * hellp = malloc(4);
|
||||
vx_print_str("Dev Main\n");
|
||||
|
||||
vx_print_str("vx_spawnWarps\n");
|
||||
|
||||
mat_add_args_t arguments;
|
||||
arguments.x = x;
|
||||
arguments.y = y;
|
||||
|
@ -66,19 +91,26 @@ int main()
|
|||
int numWarps = 4;
|
||||
int numThreads = 4;
|
||||
|
||||
// First kernel call
|
||||
vx_spawnWarps(numWarps, numThreads, mat_add_kernel, &arguments);
|
||||
vx_print_mat(z, arguments.numRows, arguments.numColums);
|
||||
|
||||
for (int i = 0; i < arguments.numRows; i++)
|
||||
{
|
||||
for (int j = 0; j < arguments.numColums; j++)
|
||||
{
|
||||
unsigned index = (i * arguments.numColums) + j;
|
||||
vx_print_hex(z[index]);
|
||||
vx_print_str(" ");
|
||||
}
|
||||
vx_print_str("\n");
|
||||
}
|
||||
|
||||
arguments.x = z;
|
||||
arguments.y = y;
|
||||
arguments.z = z;
|
||||
arguments.numColums = 4;
|
||||
arguments.numRows = 4;
|
||||
|
||||
// Second Kernel Call
|
||||
vx_spawnWarps(numWarps, numThreads, mat_add_kernel, &arguments);
|
||||
vx_print_mat(z, arguments.numRows, arguments.numColums);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ Disassembly of section .text:
|
|||
80000008: 00400513 li a0,4
|
||||
8000000c: 00b5106b 0xb5106b
|
||||
80000010: 010000ef jal ra,80000020 <vx_set_sp>
|
||||
80000014: 748000ef jal ra,8000075c <main>
|
||||
80000014: 011000ef jal ra,80000824 <main>
|
||||
80000018: 00000513 li a0,0
|
||||
8000001c: 0005006b 0x5006b
|
||||
|
||||
|
@ -114,7 +114,7 @@ Disassembly of section .text:
|
|||
80000128: 810007b7 lui a5,0x81000
|
||||
8000012c: fec42703 lw a4,-20(s0)
|
||||
80000130: 00271713 slli a4,a4,0x2
|
||||
80000134: 10c78793 addi a5,a5,268 # 8100010c <z+0xfffffe84>
|
||||
80000134: 13478793 addi a5,a5,308 # 81000134 <z+0xfffffe84>
|
||||
80000138: 00f707b3 add a5,a4,a5
|
||||
8000013c: 0007a783 lw a5,0(a5)
|
||||
80000140: 00078513 mv a0,a5
|
||||
|
@ -137,7 +137,7 @@ Disassembly of section .text:
|
|||
8000017c: fe842503 lw a0,-24(s0)
|
||||
80000180: f95ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000184: 810007b7 lui a5,0x81000
|
||||
80000188: 04078513 addi a0,a5,64 # 81000040 <z+0xfffffdb8>
|
||||
80000188: 04078513 addi a0,a5,64 # 81000040 <z+0xfffffd90>
|
||||
8000018c: f4dff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000190: 00000013 nop
|
||||
80000194: 01c12083 lw ra,28(sp)
|
||||
|
@ -151,13 +151,13 @@ Disassembly of section .text:
|
|||
800001ac: 00812c23 sw s0,24(sp)
|
||||
800001b0: 02010413 addi s0,sp,32
|
||||
800001b4: 810007b7 lui a5,0x81000
|
||||
800001b8: 2647a783 lw a5,612(a5) # 81000264 <z+0xffffffdc>
|
||||
800001b8: 28c7a783 lw a5,652(a5) # 8100028c <z+0xffffffdc>
|
||||
800001bc: 00078513 mv a0,a5
|
||||
800001c0: ea9ff0ef jal ra,80000068 <vx_tmc>
|
||||
800001c4: 810007b7 lui a5,0x81000
|
||||
800001c8: 2607a703 lw a4,608(a5) # 81000260 <z+0xffffffd8>
|
||||
800001c8: 2887a703 lw a4,648(a5) # 81000288 <z+0xffffffd8>
|
||||
800001cc: 810007b7 lui a5,0x81000
|
||||
800001d0: 25c7a783 lw a5,604(a5) # 8100025c <z+0xffffffd4>
|
||||
800001d0: 2847a783 lw a5,644(a5) # 81000284 <z+0xffffffd4>
|
||||
800001d4: 00078513 mv a0,a5
|
||||
800001d8: 000700e7 jalr a4
|
||||
800001dc: eadff0ef jal ra,80000088 <vx_warpID>
|
||||
|
@ -186,15 +186,15 @@ Disassembly of section .text:
|
|||
80000230: fed42023 sw a3,-32(s0)
|
||||
80000234: 810007b7 lui a5,0x81000
|
||||
80000238: fe442703 lw a4,-28(s0)
|
||||
8000023c: 26e7a023 sw a4,608(a5) # 81000260 <z+0xffffffd8>
|
||||
8000023c: 28e7a423 sw a4,648(a5) # 81000288 <z+0xffffffd8>
|
||||
80000240: 810007b7 lui a5,0x81000
|
||||
80000244: fe042703 lw a4,-32(s0)
|
||||
80000248: 24e7ae23 sw a4,604(a5) # 8100025c <z+0xffffffd4>
|
||||
80000248: 28e7a223 sw a4,644(a5) # 81000284 <z+0xffffffd4>
|
||||
8000024c: 810007b7 lui a5,0x81000
|
||||
80000250: fe842703 lw a4,-24(s0)
|
||||
80000254: 26e7a223 sw a4,612(a5) # 81000264 <z+0xffffffdc>
|
||||
80000254: 28e7a623 sw a4,652(a5) # 8100028c <z+0xffffffdc>
|
||||
80000258: 800007b7 lui a5,0x80000
|
||||
8000025c: 1a478793 addi a5,a5,420 # 800001a4 <z+0xfeffff1c>
|
||||
8000025c: 1a478793 addi a5,a5,420 # 800001a4 <z+0xfefffef4>
|
||||
80000260: 00078593 mv a1,a5
|
||||
80000264: fec42503 lw a0,-20(s0)
|
||||
80000268: df9ff0ef jal ra,80000060 <vx_wspawn>
|
||||
|
@ -211,7 +211,7 @@ Disassembly of section .text:
|
|||
8000028c: 00812c23 sw s0,24(sp)
|
||||
80000290: 02010413 addi s0,sp,32
|
||||
80000294: 810007b7 lui a5,0x81000
|
||||
80000298: 08478513 addi a0,a5,132 # 81000084 <z+0xfffffdfc>
|
||||
80000298: 08478513 addi a0,a5,132 # 81000084 <z+0xfffffdd4>
|
||||
8000029c: e3dff0ef jal ra,800000d8 <vx_print_str>
|
||||
800002a0: 00400513 li a0,4
|
||||
800002a4: dc5ff0ef jal ra,80000068 <vx_tmc>
|
||||
|
@ -221,41 +221,41 @@ Disassembly of section .text:
|
|||
800002b4: 810007b7 lui a5,0x81000
|
||||
800002b8: fec42683 lw a3,-20(s0)
|
||||
800002bc: 00269693 slli a3,a3,0x2
|
||||
800002c0: 18c78793 addi a5,a5,396 # 8100018c <z+0xffffff04>
|
||||
800002c0: 1b478793 addi a5,a5,436 # 810001b4 <z+0xffffff04>
|
||||
800002c4: 00f687b3 add a5,a3,a5
|
||||
800002c8: 00e7a023 sw a4,0(a5)
|
||||
800002cc: 00100513 li a0,1
|
||||
800002d0: d99ff0ef jal ra,80000068 <vx_tmc>
|
||||
800002d4: 810007b7 lui a5,0x81000
|
||||
800002d8: 18c7a783 lw a5,396(a5) # 8100018c <z+0xffffff04>
|
||||
800002d8: 1b47a783 lw a5,436(a5) # 810001b4 <z+0xffffff04>
|
||||
800002dc: 00078513 mv a0,a5
|
||||
800002e0: e35ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800002e4: 810007b7 lui a5,0x81000
|
||||
800002e8: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
800002e8: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
800002ec: dedff0ef jal ra,800000d8 <vx_print_str>
|
||||
800002f0: 810007b7 lui a5,0x81000
|
||||
800002f4: 18c78793 addi a5,a5,396 # 8100018c <z+0xffffff04>
|
||||
800002f4: 1b478793 addi a5,a5,436 # 810001b4 <z+0xffffff04>
|
||||
800002f8: 0047a783 lw a5,4(a5)
|
||||
800002fc: 00078513 mv a0,a5
|
||||
80000300: e15ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000304: 810007b7 lui a5,0x81000
|
||||
80000308: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
80000308: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
8000030c: dcdff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000310: 810007b7 lui a5,0x81000
|
||||
80000314: 18c78793 addi a5,a5,396 # 8100018c <z+0xffffff04>
|
||||
80000314: 1b478793 addi a5,a5,436 # 810001b4 <z+0xffffff04>
|
||||
80000318: 0087a783 lw a5,8(a5)
|
||||
8000031c: 00078513 mv a0,a5
|
||||
80000320: df5ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000324: 810007b7 lui a5,0x81000
|
||||
80000328: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
80000328: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
8000032c: dadff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000330: 810007b7 lui a5,0x81000
|
||||
80000334: 18c78793 addi a5,a5,396 # 8100018c <z+0xffffff04>
|
||||
80000334: 1b478793 addi a5,a5,436 # 810001b4 <z+0xffffff04>
|
||||
80000338: 00c7a783 lw a5,12(a5)
|
||||
8000033c: 00078513 mv a0,a5
|
||||
80000340: dd5ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000344: 810007b7 lui a5,0x81000
|
||||
80000348: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
80000348: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
8000034c: d8dff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000350: 00000013 nop
|
||||
80000354: 01c12083 lw ra,28(sp)
|
||||
|
@ -289,7 +289,7 @@ Disassembly of section .text:
|
|||
800003bc: 810007b7 lui a5,0x81000
|
||||
800003c0: fec42703 lw a4,-20(s0)
|
||||
800003c4: 00271713 slli a4,a4,0x2
|
||||
800003c8: 27878793 addi a5,a5,632 # 81000278 <z+0xfffffff0>
|
||||
800003c8: 2a078793 addi a5,a5,672 # 810002a0 <z+0xfffffff0>
|
||||
800003cc: 00f707b3 add a5,a4,a5
|
||||
800003d0: 00a00713 li a4,10
|
||||
800003d4: 00e7a023 sw a4,0(a5)
|
||||
|
@ -297,7 +297,7 @@ Disassembly of section .text:
|
|||
800003dc: 810007b7 lui a5,0x81000
|
||||
800003e0: fec42703 lw a4,-20(s0)
|
||||
800003e4: 00271713 slli a4,a4,0x2
|
||||
800003e8: 27878793 addi a5,a5,632 # 81000278 <z+0xfffffff0>
|
||||
800003e8: 2a078793 addi a5,a5,672 # 810002a0 <z+0xfffffff0>
|
||||
800003ec: 00f707b3 add a5,a4,a5
|
||||
800003f0: 00b00713 li a4,11
|
||||
800003f4: 00e7a023 sw a4,0(a5)
|
||||
|
@ -314,7 +314,7 @@ Disassembly of section .text:
|
|||
80000420: 810007b7 lui a5,0x81000
|
||||
80000424: fec42703 lw a4,-20(s0)
|
||||
80000428: 00271713 slli a4,a4,0x2
|
||||
8000042c: 27878793 addi a5,a5,632 # 81000278 <z+0xfffffff0>
|
||||
8000042c: 2a078793 addi a5,a5,672 # 810002a0 <z+0xfffffff0>
|
||||
80000430: 00f707b3 add a5,a4,a5
|
||||
80000434: 00c00713 li a4,12
|
||||
80000438: 00e7a023 sw a4,0(a5)
|
||||
|
@ -322,42 +322,42 @@ Disassembly of section .text:
|
|||
80000440: 810007b7 lui a5,0x81000
|
||||
80000444: fec42703 lw a4,-20(s0)
|
||||
80000448: 00271713 slli a4,a4,0x2
|
||||
8000044c: 27878793 addi a5,a5,632 # 81000278 <z+0xfffffff0>
|
||||
8000044c: 2a078793 addi a5,a5,672 # 810002a0 <z+0xfffffff0>
|
||||
80000450: 00f707b3 add a5,a4,a5
|
||||
80000454: 00d00713 li a4,13
|
||||
80000458: 00e7a023 sw a4,0(a5)
|
||||
8000045c: c25ff0ef jal ra,80000080 <vx_join>
|
||||
80000460: c21ff0ef jal ra,80000080 <vx_join>
|
||||
80000464: 810007b7 lui a5,0x81000
|
||||
80000468: 2787a783 lw a5,632(a5) # 81000278 <z+0xfffffff0>
|
||||
80000468: 2a07a783 lw a5,672(a5) # 810002a0 <z+0xfffffff0>
|
||||
8000046c: 00078513 mv a0,a5
|
||||
80000470: ca5ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000474: 810007b7 lui a5,0x81000
|
||||
80000478: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
80000478: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
8000047c: c5dff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000480: 810007b7 lui a5,0x81000
|
||||
80000484: 27878793 addi a5,a5,632 # 81000278 <z+0xfffffff0>
|
||||
80000484: 2a078793 addi a5,a5,672 # 810002a0 <z+0xfffffff0>
|
||||
80000488: 0047a783 lw a5,4(a5)
|
||||
8000048c: 00078513 mv a0,a5
|
||||
80000490: c85ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000494: 810007b7 lui a5,0x81000
|
||||
80000498: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
80000498: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
8000049c: c3dff0ef jal ra,800000d8 <vx_print_str>
|
||||
800004a0: 810007b7 lui a5,0x81000
|
||||
800004a4: 27878793 addi a5,a5,632 # 81000278 <z+0xfffffff0>
|
||||
800004a4: 2a078793 addi a5,a5,672 # 810002a0 <z+0xfffffff0>
|
||||
800004a8: 0087a783 lw a5,8(a5)
|
||||
800004ac: 00078513 mv a0,a5
|
||||
800004b0: c65ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800004b4: 810007b7 lui a5,0x81000
|
||||
800004b8: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
800004b8: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
800004bc: c1dff0ef jal ra,800000d8 <vx_print_str>
|
||||
800004c0: 810007b7 lui a5,0x81000
|
||||
800004c4: 27878793 addi a5,a5,632 # 81000278 <z+0xfffffff0>
|
||||
800004c4: 2a078793 addi a5,a5,672 # 810002a0 <z+0xfffffff0>
|
||||
800004c8: 00c7a783 lw a5,12(a5)
|
||||
800004cc: 00078513 mv a0,a5
|
||||
800004d0: c45ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800004d4: 810007b7 lui a5,0x81000
|
||||
800004d8: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
800004d8: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
800004dc: bfdff0ef jal ra,800000d8 <vx_print_str>
|
||||
800004e0: 00000013 nop
|
||||
800004e4: 01c12083 lw ra,28(sp)
|
||||
|
@ -375,7 +375,7 @@ Disassembly of section .text:
|
|||
8000050c: 810007b7 lui a5,0x81000
|
||||
80000510: fec42703 lw a4,-20(s0)
|
||||
80000514: 00271713 slli a4,a4,0x2
|
||||
80000518: 26878793 addi a5,a5,616 # 81000268 <z+0xffffffe0>
|
||||
80000518: 29078793 addi a5,a5,656 # 81000290 <z+0xffffffe0>
|
||||
8000051c: 00f707b3 add a5,a4,a5
|
||||
80000520: fec42703 lw a4,-20(s0)
|
||||
80000524: 00e7a023 sw a4,0(a5)
|
||||
|
@ -395,42 +395,42 @@ Disassembly of section .text:
|
|||
80000554: 00812c23 sw s0,24(sp)
|
||||
80000558: 02010413 addi s0,sp,32
|
||||
8000055c: 800007b7 lui a5,0x80000
|
||||
80000560: 4f478793 addi a5,a5,1268 # 800004f4 <z+0xff00026c>
|
||||
80000560: 4f478793 addi a5,a5,1268 # 800004f4 <z+0xff000244>
|
||||
80000564: fef42623 sw a5,-20(s0)
|
||||
80000568: fec42583 lw a1,-20(s0)
|
||||
8000056c: 00400513 li a0,4
|
||||
80000570: af1ff0ef jal ra,80000060 <vx_wspawn>
|
||||
80000574: f81ff0ef jal ra,800004f4 <simple_kernel>
|
||||
80000578: 810007b7 lui a5,0x81000
|
||||
8000057c: 2687a783 lw a5,616(a5) # 81000268 <z+0xffffffe0>
|
||||
8000057c: 2907a783 lw a5,656(a5) # 81000290 <z+0xffffffe0>
|
||||
80000580: 00078513 mv a0,a5
|
||||
80000584: b91ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000588: 810007b7 lui a5,0x81000
|
||||
8000058c: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
8000058c: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
80000590: b49ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000594: 810007b7 lui a5,0x81000
|
||||
80000598: 26878793 addi a5,a5,616 # 81000268 <z+0xffffffe0>
|
||||
80000598: 29078793 addi a5,a5,656 # 81000290 <z+0xffffffe0>
|
||||
8000059c: 0047a783 lw a5,4(a5)
|
||||
800005a0: 00078513 mv a0,a5
|
||||
800005a4: b71ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800005a8: 810007b7 lui a5,0x81000
|
||||
800005ac: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
800005ac: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
800005b0: b29ff0ef jal ra,800000d8 <vx_print_str>
|
||||
800005b4: 810007b7 lui a5,0x81000
|
||||
800005b8: 26878793 addi a5,a5,616 # 81000268 <z+0xffffffe0>
|
||||
800005b8: 29078793 addi a5,a5,656 # 81000290 <z+0xffffffe0>
|
||||
800005bc: 0087a783 lw a5,8(a5)
|
||||
800005c0: 00078513 mv a0,a5
|
||||
800005c4: b51ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800005c8: 810007b7 lui a5,0x81000
|
||||
800005cc: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
800005cc: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
800005d0: b09ff0ef jal ra,800000d8 <vx_print_str>
|
||||
800005d4: 810007b7 lui a5,0x81000
|
||||
800005d8: 26878793 addi a5,a5,616 # 81000268 <z+0xffffffe0>
|
||||
800005d8: 29078793 addi a5,a5,656 # 81000290 <z+0xffffffe0>
|
||||
800005dc: 00c7a783 lw a5,12(a5)
|
||||
800005e0: 00078513 mv a0,a5
|
||||
800005e4: b31ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800005e8: 810007b7 lui a5,0x81000
|
||||
800005ec: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe0c>
|
||||
800005ec: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffde4>
|
||||
800005f0: ae9ff0ef jal ra,800000d8 <vx_print_str>
|
||||
800005f4: 00000013 nop
|
||||
800005f8: 01c12083 lw ra,28(sp)
|
||||
|
@ -445,7 +445,7 @@ Disassembly of section .text:
|
|||
80000614: 01010413 addi s0,sp,16
|
||||
80000618: c6dff0ef jal ra,80000284 <test_tmc>
|
||||
8000061c: 810007b7 lui a5,0x81000
|
||||
80000620: 09878513 addi a0,a5,152 # 81000098 <z+0xfffffe10>
|
||||
80000620: 09878513 addi a0,a5,152 # 81000098 <z+0xfffffde8>
|
||||
80000624: ab5ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000628: 00400513 li a0,4
|
||||
8000062c: a3dff0ef jal ra,80000068 <vx_tmc>
|
||||
|
@ -453,7 +453,7 @@ Disassembly of section .text:
|
|||
80000634: 00100513 li a0,1
|
||||
80000638: a31ff0ef jal ra,80000068 <vx_tmc>
|
||||
8000063c: 810007b7 lui a5,0x81000
|
||||
80000640: 0ac78513 addi a0,a5,172 # 810000ac <z+0xfffffe24>
|
||||
80000640: 0ac78513 addi a0,a5,172 # 810000ac <z+0xfffffdfc>
|
||||
80000644: a95ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000648: f05ff0ef jal ra,8000054c <test_wsapwn>
|
||||
8000064c: 00000013 nop
|
||||
|
@ -527,83 +527,139 @@ Disassembly of section .text:
|
|||
80000754: 04010113 addi sp,sp,64
|
||||
80000758: 00008067 ret
|
||||
|
||||
8000075c <main>:
|
||||
8000075c: fc010113 addi sp,sp,-64
|
||||
80000760: 02112e23 sw ra,60(sp)
|
||||
80000764: 02812c23 sw s0,56(sp)
|
||||
80000768: 04010413 addi s0,sp,64
|
||||
8000076c: 00100513 li a0,1
|
||||
80000770: 8f9ff0ef jal ra,80000068 <vx_tmc>
|
||||
80000774: 810007b7 lui a5,0x81000
|
||||
80000778: 0f878513 addi a0,a5,248 # 810000f8 <z+0xfffffe70>
|
||||
8000077c: 95dff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000780: 810007b7 lui a5,0x81000
|
||||
80000784: 1dc78793 addi a5,a5,476 # 810001dc <z+0xffffff54>
|
||||
80000788: fcf42423 sw a5,-56(s0)
|
||||
8000078c: 810007b7 lui a5,0x81000
|
||||
80000790: 21c78793 addi a5,a5,540 # 8100021c <z+0xffffff94>
|
||||
80000794: fcf42623 sw a5,-52(s0)
|
||||
80000798: 810007b7 lui a5,0x81000
|
||||
8000079c: 28878793 addi a5,a5,648 # 81000288 <z+0x0>
|
||||
800007a0: fcf42823 sw a5,-48(s0)
|
||||
800007a4: 00400793 li a5,4
|
||||
800007a8: fcf42a23 sw a5,-44(s0)
|
||||
800007ac: 00400793 li a5,4
|
||||
800007b0: fcf42c23 sw a5,-40(s0)
|
||||
800007b4: 00400793 li a5,4
|
||||
800007b8: fef42223 sw a5,-28(s0)
|
||||
800007bc: 00400793 li a5,4
|
||||
800007c0: fef42023 sw a5,-32(s0)
|
||||
800007c4: fe442703 lw a4,-28(s0)
|
||||
800007c8: fe042583 lw a1,-32(s0)
|
||||
800007cc: fc840793 addi a5,s0,-56
|
||||
800007d0: 00078693 mv a3,a5
|
||||
800007d4: 800007b7 lui a5,0x80000
|
||||
800007d8: 66078613 addi a2,a5,1632 # 80000660 <z+0xff0003d8>
|
||||
800007dc: 00070513 mv a0,a4
|
||||
800007e0: a35ff0ef jal ra,80000214 <vx_spawnWarps>
|
||||
800007e4: fe042623 sw zero,-20(s0)
|
||||
800007e8: 0800006f j 80000868 <main+0x10c>
|
||||
800007ec: fe042423 sw zero,-24(s0)
|
||||
800007f0: 0540006f j 80000844 <main+0xe8>
|
||||
800007f4: fd442703 lw a4,-44(s0)
|
||||
8000075c <vx_print_mat>:
|
||||
8000075c: fd010113 addi sp,sp,-48
|
||||
80000760: 02112623 sw ra,44(sp)
|
||||
80000764: 02812423 sw s0,40(sp)
|
||||
80000768: 03010413 addi s0,sp,48
|
||||
8000076c: fca42e23 sw a0,-36(s0)
|
||||
80000770: fcb42c23 sw a1,-40(s0)
|
||||
80000774: fcc42a23 sw a2,-44(s0)
|
||||
80000778: 810007b7 lui a5,0x81000
|
||||
8000077c: 0f878513 addi a0,a5,248 # 810000f8 <z+0xfffffe48>
|
||||
80000780: 959ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000784: fe042623 sw zero,-20(s0)
|
||||
80000788: 07c0006f j 80000804 <vx_print_mat+0xa8>
|
||||
8000078c: fe042423 sw zero,-24(s0)
|
||||
80000790: 0500006f j 800007e0 <vx_print_mat+0x84>
|
||||
80000794: fec42703 lw a4,-20(s0)
|
||||
80000798: fd442783 lw a5,-44(s0)
|
||||
8000079c: 02f70733 mul a4,a4,a5
|
||||
800007a0: fe842783 lw a5,-24(s0)
|
||||
800007a4: 00f707b3 add a5,a4,a5
|
||||
800007a8: fef42223 sw a5,-28(s0)
|
||||
800007ac: fe442783 lw a5,-28(s0)
|
||||
800007b0: 00279793 slli a5,a5,0x2
|
||||
800007b4: fdc42703 lw a4,-36(s0)
|
||||
800007b8: 00f707b3 add a5,a4,a5
|
||||
800007bc: 0007a783 lw a5,0(a5)
|
||||
800007c0: 00078513 mv a0,a5
|
||||
800007c4: 951ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800007c8: 810007b7 lui a5,0x81000
|
||||
800007cc: 11078513 addi a0,a5,272 # 81000110 <z+0xfffffe60>
|
||||
800007d0: 909ff0ef jal ra,800000d8 <vx_print_str>
|
||||
800007d4: fe842783 lw a5,-24(s0)
|
||||
800007d8: 00178793 addi a5,a5,1
|
||||
800007dc: fef42423 sw a5,-24(s0)
|
||||
800007e0: fe842703 lw a4,-24(s0)
|
||||
800007e4: fd442783 lw a5,-44(s0)
|
||||
800007e8: faf746e3 blt a4,a5,80000794 <vx_print_mat+0x38>
|
||||
800007ec: 810007b7 lui a5,0x81000
|
||||
800007f0: 11478513 addi a0,a5,276 # 81000114 <z+0xfffffe64>
|
||||
800007f4: 8e5ff0ef jal ra,800000d8 <vx_print_str>
|
||||
800007f8: fec42783 lw a5,-20(s0)
|
||||
800007fc: 02f70733 mul a4,a4,a5
|
||||
80000800: fe842783 lw a5,-24(s0)
|
||||
80000804: 00f707b3 add a5,a4,a5
|
||||
80000808: fcf42e23 sw a5,-36(s0)
|
||||
8000080c: 810007b7 lui a5,0x81000
|
||||
80000810: fdc42703 lw a4,-36(s0)
|
||||
80000814: 00271713 slli a4,a4,0x2
|
||||
80000818: 28878793 addi a5,a5,648 # 81000288 <z+0x0>
|
||||
8000081c: 00f707b3 add a5,a4,a5
|
||||
80000820: 0007a783 lw a5,0(a5)
|
||||
80000824: 00078513 mv a0,a5
|
||||
80000828: 8edff0ef jal ra,80000114 <vx_print_hex>
|
||||
8000082c: 810007b7 lui a5,0x81000
|
||||
80000830: 10478513 addi a0,a5,260 # 81000104 <z+0xfffffe7c>
|
||||
80000834: 8a5ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000838: fe842783 lw a5,-24(s0)
|
||||
8000083c: 00178793 addi a5,a5,1
|
||||
80000840: fef42423 sw a5,-24(s0)
|
||||
80000844: fd442703 lw a4,-44(s0)
|
||||
80000848: fe842783 lw a5,-24(s0)
|
||||
8000084c: fae7e4e3 bltu a5,a4,800007f4 <main+0x98>
|
||||
80000850: 810007b7 lui a5,0x81000
|
||||
80000854: 10878513 addi a0,a5,264 # 81000108 <z+0xfffffe80>
|
||||
80000858: 881ff0ef jal ra,800000d8 <vx_print_str>
|
||||
8000085c: fec42783 lw a5,-20(s0)
|
||||
80000860: 00178793 addi a5,a5,1
|
||||
80000864: fef42623 sw a5,-20(s0)
|
||||
80000868: fd842703 lw a4,-40(s0)
|
||||
8000086c: fec42783 lw a5,-20(s0)
|
||||
80000870: f6e7eee3 bltu a5,a4,800007ec <main+0x90>
|
||||
80000874: 00000793 li a5,0
|
||||
80000878: 00078513 mv a0,a5
|
||||
8000087c: 03c12083 lw ra,60(sp)
|
||||
80000880: 03812403 lw s0,56(sp)
|
||||
80000884: 04010113 addi sp,sp,64
|
||||
80000888: 00008067 ret
|
||||
800007fc: 00178793 addi a5,a5,1
|
||||
80000800: fef42623 sw a5,-20(s0)
|
||||
80000804: fec42703 lw a4,-20(s0)
|
||||
80000808: fd842783 lw a5,-40(s0)
|
||||
8000080c: f8f740e3 blt a4,a5,8000078c <vx_print_mat+0x30>
|
||||
80000810: 00000013 nop
|
||||
80000814: 02c12083 lw ra,44(sp)
|
||||
80000818: 02812403 lw s0,40(sp)
|
||||
8000081c: 03010113 addi sp,sp,48
|
||||
80000820: 00008067 ret
|
||||
|
||||
80000824 <main>:
|
||||
80000824: fd010113 addi sp,sp,-48
|
||||
80000828: 02112623 sw ra,44(sp)
|
||||
8000082c: 02812423 sw s0,40(sp)
|
||||
80000830: 03010413 addi s0,sp,48
|
||||
80000834: 00100513 li a0,1
|
||||
80000838: 831ff0ef jal ra,80000068 <vx_tmc>
|
||||
8000083c: 810007b7 lui a5,0x81000
|
||||
80000840: 11878513 addi a0,a5,280 # 81000118 <z+0xfffffe68>
|
||||
80000844: 895ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000848: 810007b7 lui a5,0x81000
|
||||
8000084c: 12478513 addi a0,a5,292 # 81000124 <z+0xfffffe74>
|
||||
80000850: 889ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000854: 810007b7 lui a5,0x81000
|
||||
80000858: 20478793 addi a5,a5,516 # 81000204 <z+0xffffff54>
|
||||
8000085c: fcf42a23 sw a5,-44(s0)
|
||||
80000860: 810007b7 lui a5,0x81000
|
||||
80000864: 24478793 addi a5,a5,580 # 81000244 <z+0xffffff94>
|
||||
80000868: fcf42c23 sw a5,-40(s0)
|
||||
8000086c: 810007b7 lui a5,0x81000
|
||||
80000870: 2b078793 addi a5,a5,688 # 810002b0 <z+0x0>
|
||||
80000874: fcf42e23 sw a5,-36(s0)
|
||||
80000878: 00400793 li a5,4
|
||||
8000087c: fef42023 sw a5,-32(s0)
|
||||
80000880: 00400793 li a5,4
|
||||
80000884: fef42223 sw a5,-28(s0)
|
||||
80000888: 00400793 li a5,4
|
||||
8000088c: fef42623 sw a5,-20(s0)
|
||||
80000890: 00400793 li a5,4
|
||||
80000894: fef42423 sw a5,-24(s0)
|
||||
80000898: fec42703 lw a4,-20(s0)
|
||||
8000089c: fe842583 lw a1,-24(s0)
|
||||
800008a0: fd440793 addi a5,s0,-44
|
||||
800008a4: 00078693 mv a3,a5
|
||||
800008a8: 800007b7 lui a5,0x80000
|
||||
800008ac: 66078613 addi a2,a5,1632 # 80000660 <z+0xff0003b0>
|
||||
800008b0: 00070513 mv a0,a4
|
||||
800008b4: 961ff0ef jal ra,80000214 <vx_spawnWarps>
|
||||
800008b8: fe442783 lw a5,-28(s0)
|
||||
800008bc: 00078713 mv a4,a5
|
||||
800008c0: fe042783 lw a5,-32(s0)
|
||||
800008c4: 00078613 mv a2,a5
|
||||
800008c8: 00070593 mv a1,a4
|
||||
800008cc: 810007b7 lui a5,0x81000
|
||||
800008d0: 2b078513 addi a0,a5,688 # 810002b0 <z+0x0>
|
||||
800008d4: e89ff0ef jal ra,8000075c <vx_print_mat>
|
||||
800008d8: 810007b7 lui a5,0x81000
|
||||
800008dc: 2b078793 addi a5,a5,688 # 810002b0 <z+0x0>
|
||||
800008e0: fcf42a23 sw a5,-44(s0)
|
||||
800008e4: 810007b7 lui a5,0x81000
|
||||
800008e8: 24478793 addi a5,a5,580 # 81000244 <z+0xffffff94>
|
||||
800008ec: fcf42c23 sw a5,-40(s0)
|
||||
800008f0: 810007b7 lui a5,0x81000
|
||||
800008f4: 2b078793 addi a5,a5,688 # 810002b0 <z+0x0>
|
||||
800008f8: fcf42e23 sw a5,-36(s0)
|
||||
800008fc: 00400793 li a5,4
|
||||
80000900: fef42023 sw a5,-32(s0)
|
||||
80000904: 00400793 li a5,4
|
||||
80000908: fef42223 sw a5,-28(s0)
|
||||
8000090c: fec42703 lw a4,-20(s0)
|
||||
80000910: fe842583 lw a1,-24(s0)
|
||||
80000914: fd440793 addi a5,s0,-44
|
||||
80000918: 00078693 mv a3,a5
|
||||
8000091c: 800007b7 lui a5,0x80000
|
||||
80000920: 66078613 addi a2,a5,1632 # 80000660 <z+0xff0003b0>
|
||||
80000924: 00070513 mv a0,a4
|
||||
80000928: 8edff0ef jal ra,80000214 <vx_spawnWarps>
|
||||
8000092c: fe442783 lw a5,-28(s0)
|
||||
80000930: 00078713 mv a4,a5
|
||||
80000934: fe042783 lw a5,-32(s0)
|
||||
80000938: 00078613 mv a2,a5
|
||||
8000093c: 00070593 mv a1,a4
|
||||
80000940: 810007b7 lui a5,0x81000
|
||||
80000944: 2b078513 addi a0,a5,688 # 810002b0 <z+0x0>
|
||||
80000948: e15ff0ef jal ra,8000075c <vx_print_mat>
|
||||
8000094c: 00000793 li a5,0
|
||||
80000950: 00078513 mv a0,a5
|
||||
80000954: 02c12083 lw ra,44(sp)
|
||||
80000958: 02812403 lw s0,40(sp)
|
||||
8000095c: 03010113 addi sp,sp,48
|
||||
80000960: 00008067 ret
|
||||
|
||||
Disassembly of section .rodata:
|
||||
|
||||
|
@ -630,7 +686,7 @@ Disassembly of section .rodata:
|
|||
8100002a: 0000 unimp
|
||||
8100002c: 0062 c.slli zero,0x18
|
||||
8100002e: 0000 unimp
|
||||
81000030: 00000063 beqz zero,81000030 <main+0xfff8d4>
|
||||
81000030: 00000063 beqz zero,81000030 <main+0xfff80c>
|
||||
81000034: 0064 addi s1,sp,12
|
||||
81000036: 0000 unimp
|
||||
81000038: 0065 c.nop 25
|
||||
|
@ -661,7 +717,7 @@ Disassembly of section .rodata:
|
|||
8100006e: 0000 unimp
|
||||
81000070: 0062 c.slli zero,0x18
|
||||
81000072: 0000 unimp
|
||||
81000074: 00000063 beqz zero,81000074 <main+0xfff918>
|
||||
81000074: 00000063 beqz zero,81000074 <main+0xfff850>
|
||||
81000078: 0064 addi s1,sp,12
|
||||
8100007a: 0000 unimp
|
||||
8100007c: 0065 c.nop 25
|
||||
|
@ -671,7 +727,7 @@ Disassembly of section .rodata:
|
|||
81000084: 6574 flw fa3,76(a0)
|
||||
81000086: 6e697473 csrrci s0,0x6e6,18
|
||||
8100008a: 6d745f67 0x6d745f67
|
||||
8100008e: 00000a63 beqz zero,810000a2 <main+0xfff946>
|
||||
8100008e: 00000a63 beqz zero,810000a2 <main+0xfff87e>
|
||||
81000092: 0000 unimp
|
||||
81000094: 000a c.slli zero,0x2
|
||||
81000096: 0000 unimp
|
||||
|
@ -709,188 +765,185 @@ Disassembly of section .rodata:
|
|||
810000e2: 0000 unimp
|
||||
810000e4: 0062 c.slli zero,0x18
|
||||
810000e6: 0000 unimp
|
||||
810000e8: 00000063 beqz zero,810000e8 <main+0xfff98c>
|
||||
810000e8: 00000063 beqz zero,810000e8 <main+0xfff8c4>
|
||||
810000ec: 0064 addi s1,sp,12
|
||||
810000ee: 0000 unimp
|
||||
810000f0: 0065 c.nop 25
|
||||
810000f2: 0000 unimp
|
||||
810000f4: 0066 c.slli zero,0x19
|
||||
810000f6: 0000 unimp
|
||||
810000f8: 6544 flw fs1,12(a0)
|
||||
810000fa: 2076 fld ft0,344(sp)
|
||||
810000fc: 614d addi sp,sp,176
|
||||
810000fe: 6e69 lui t3,0x1a
|
||||
81000100: 000a c.slli zero,0x2
|
||||
81000102: 0000 unimp
|
||||
81000104: 0020 addi s0,sp,8
|
||||
81000106: 0000 unimp
|
||||
81000108: 000a c.slli zero,0x2
|
||||
810000f8: 2d2d jal 81000732 <z+0x482>
|
||||
810000fa: 2d2d jal 81000734 <z+0x484>
|
||||
810000fc: 2d2d jal 81000736 <z+0x486>
|
||||
810000fe: 2d2d jal 81000738 <z+0x488>
|
||||
81000100: 2d2d jal 8100073a <z+0x48a>
|
||||
81000102: 2d2d jal 8100073c <z+0x48c>
|
||||
81000104: 2d2d jal 8100073e <z+0x48e>
|
||||
81000106: 2d2d jal 81000740 <z+0x490>
|
||||
81000108: 2d2d jal 81000742 <z+0x492>
|
||||
8100010a: 2d2d jal 81000744 <z+0x494>
|
||||
8100010c: 0a2d addi s4,s4,11
|
||||
8100010e: 0000 unimp
|
||||
81000110: 0020 addi s0,sp,8
|
||||
81000112: 0000 unimp
|
||||
81000114: 000a c.slli zero,0x2
|
||||
81000116: 0000 unimp
|
||||
81000118: 6544 flw fs1,12(a0)
|
||||
8100011a: 2076 fld ft0,344(sp)
|
||||
8100011c: 614d addi sp,sp,176
|
||||
8100011e: 6e69 lui t3,0x1a
|
||||
81000120: 000a c.slli zero,0x2
|
||||
81000122: 0000 unimp
|
||||
81000124: 7876 flw fa6,124(sp)
|
||||
81000126: 735f 6170 6e77 0x6e776170735f
|
||||
8100012c: 70726157 0x70726157
|
||||
81000130: 0xa73
|
||||
|
||||
Disassembly of section .data:
|
||||
|
||||
8100010c <hextoa>:
|
||||
8100010c: 0000 unimp
|
||||
8100010e: 8100 0x8100
|
||||
81000110: 0004 0x4
|
||||
81000112: 8100 0x8100
|
||||
81000114: 0008 0x8
|
||||
81000116: 8100 0x8100
|
||||
81000118: 000c 0xc
|
||||
8100011a: 8100 0x8100
|
||||
8100011c: 0010 0x10
|
||||
8100011e: 8100 0x8100
|
||||
81000120: 0014 0x14
|
||||
81000122: 8100 0x8100
|
||||
81000124: 0018 0x18
|
||||
81000126: 8100 0x8100
|
||||
81000128: 001c 0x1c
|
||||
8100012a: 8100 0x8100
|
||||
8100012c: 0020 addi s0,sp,8
|
||||
8100012e: 8100 0x8100
|
||||
81000130: 0024 addi s1,sp,8
|
||||
81000132: 8100 0x8100
|
||||
81000134: 0028 addi a0,sp,8
|
||||
81000134 <hextoa>:
|
||||
81000134: 0000 unimp
|
||||
81000136: 8100 0x8100
|
||||
81000138: 002c addi a1,sp,8
|
||||
81000138: 0004 0x4
|
||||
8100013a: 8100 0x8100
|
||||
8100013c: 0030 addi a2,sp,8
|
||||
8100013c: 0008 0x8
|
||||
8100013e: 8100 0x8100
|
||||
81000140: 0034 addi a3,sp,8
|
||||
81000140: 000c 0xc
|
||||
81000142: 8100 0x8100
|
||||
81000144: 0038 addi a4,sp,8
|
||||
81000144: 0010 0x10
|
||||
81000146: 8100 0x8100
|
||||
81000148: 003c addi a5,sp,8
|
||||
81000148: 0014 0x14
|
||||
8100014a: 8100 0x8100
|
||||
|
||||
8100014c <hextoa>:
|
||||
8100014c: 0044 addi s1,sp,4
|
||||
8100014c: 0018 0x18
|
||||
8100014e: 8100 0x8100
|
||||
81000150: 0048 addi a0,sp,4
|
||||
81000150: 001c 0x1c
|
||||
81000152: 8100 0x8100
|
||||
81000154: 004c addi a1,sp,4
|
||||
81000154: 0020 addi s0,sp,8
|
||||
81000156: 8100 0x8100
|
||||
81000158: 0050 addi a2,sp,4
|
||||
81000158: 0024 addi s1,sp,8
|
||||
8100015a: 8100 0x8100
|
||||
8100015c: 0054 addi a3,sp,4
|
||||
8100015c: 0028 addi a0,sp,8
|
||||
8100015e: 8100 0x8100
|
||||
81000160: 0058 addi a4,sp,4
|
||||
81000160: 002c addi a1,sp,8
|
||||
81000162: 8100 0x8100
|
||||
81000164: 005c addi a5,sp,4
|
||||
81000164: 0030 addi a2,sp,8
|
||||
81000166: 8100 0x8100
|
||||
81000168: 0060 addi s0,sp,12
|
||||
81000168: 0034 addi a3,sp,8
|
||||
8100016a: 8100 0x8100
|
||||
8100016c: 0064 addi s1,sp,12
|
||||
8100016c: 0038 addi a4,sp,8
|
||||
8100016e: 8100 0x8100
|
||||
81000170: 0068 addi a0,sp,12
|
||||
81000170: 003c addi a5,sp,8
|
||||
81000172: 8100 0x8100
|
||||
81000174: 006c addi a1,sp,12
|
||||
|
||||
81000174 <hextoa>:
|
||||
81000174: 0044 addi s1,sp,4
|
||||
81000176: 8100 0x8100
|
||||
81000178: 0070 addi a2,sp,12
|
||||
81000178: 0048 addi a0,sp,4
|
||||
8100017a: 8100 0x8100
|
||||
8100017c: 0074 addi a3,sp,12
|
||||
8100017c: 004c addi a1,sp,4
|
||||
8100017e: 8100 0x8100
|
||||
81000180: 0078 addi a4,sp,12
|
||||
81000180: 0050 addi a2,sp,4
|
||||
81000182: 8100 0x8100
|
||||
81000184: 007c addi a5,sp,12
|
||||
81000184: 0054 addi a3,sp,4
|
||||
81000186: 8100 0x8100
|
||||
81000188: 0080 addi s0,sp,64
|
||||
81000188: 0058 addi a4,sp,4
|
||||
8100018a: 8100 0x8100
|
||||
|
||||
8100018c <tmc_array>:
|
||||
8100018c: 0005 c.nop 1
|
||||
8100018e: 0000 unimp
|
||||
81000190: 0005 c.nop 1
|
||||
81000192: 0000 unimp
|
||||
81000194: 0005 c.nop 1
|
||||
81000196: 0000 unimp
|
||||
81000198: 0005 c.nop 1
|
||||
...
|
||||
|
||||
8100019c <hextoa>:
|
||||
8100019c: 00b8 addi a4,sp,72
|
||||
8100018c: 005c addi a5,sp,4
|
||||
8100018e: 8100 0x8100
|
||||
81000190: 0060 addi s0,sp,12
|
||||
81000192: 8100 0x8100
|
||||
81000194: 0064 addi s1,sp,12
|
||||
81000196: 8100 0x8100
|
||||
81000198: 0068 addi a0,sp,12
|
||||
8100019a: 8100 0x8100
|
||||
8100019c: 006c addi a1,sp,12
|
||||
8100019e: 8100 0x8100
|
||||
810001a0: 00bc addi a5,sp,72
|
||||
810001a0: 0070 addi a2,sp,12
|
||||
810001a2: 8100 0x8100
|
||||
810001a4: 00c0 addi s0,sp,68
|
||||
810001a4: 0074 addi a3,sp,12
|
||||
810001a6: 8100 0x8100
|
||||
810001a8: 00c4 addi s1,sp,68
|
||||
810001a8: 0078 addi a4,sp,12
|
||||
810001aa: 8100 0x8100
|
||||
810001ac: 00c8 addi a0,sp,68
|
||||
810001ac: 007c addi a5,sp,12
|
||||
810001ae: 8100 0x8100
|
||||
810001b0: 00cc addi a1,sp,68
|
||||
810001b0: 0080 addi s0,sp,64
|
||||
810001b2: 8100 0x8100
|
||||
810001b4: 00d0 addi a2,sp,68
|
||||
810001b6: 8100 0x8100
|
||||
810001b8: 00d4 addi a3,sp,68
|
||||
810001ba: 8100 0x8100
|
||||
810001bc: 00d8 addi a4,sp,68
|
||||
810001be: 8100 0x8100
|
||||
810001c0: 00dc addi a5,sp,68
|
||||
810001c2: 8100 0x8100
|
||||
810001c4: 00e0 addi s0,sp,76
|
||||
810001c6: 8100 0x8100
|
||||
810001c8: 00e4 addi s1,sp,76
|
||||
810001ca: 8100 0x8100
|
||||
810001cc: 00e8 addi a0,sp,76
|
||||
810001ce: 8100 0x8100
|
||||
810001d0: 00ec addi a1,sp,76
|
||||
810001d2: 8100 0x8100
|
||||
810001d4: 00f0 addi a2,sp,76
|
||||
810001d6: 8100 0x8100
|
||||
810001d8: 00f4 addi a3,sp,76
|
||||
810001da: 8100 0x8100
|
||||
|
||||
810001dc <x>:
|
||||
810001dc: 0005 c.nop 1
|
||||
810001de: 0000 unimp
|
||||
810001e0: 0005 c.nop 1
|
||||
810001e2: 0000 unimp
|
||||
810001e4: 0005 c.nop 1
|
||||
810001e6: 0000 unimp
|
||||
810001e8: 0005 c.nop 1
|
||||
810001ea: 0000 unimp
|
||||
810001ec: 0006 c.slli zero,0x1
|
||||
810001ee: 0000 unimp
|
||||
810001f0: 0006 c.slli zero,0x1
|
||||
810001f2: 0000 unimp
|
||||
810001f4: 0006 c.slli zero,0x1
|
||||
810001f6: 0000 unimp
|
||||
810001f8: 0006 c.slli zero,0x1
|
||||
810001fa: 0000 unimp
|
||||
810001fc: 00000007 0x7
|
||||
81000200: 00000007 0x7
|
||||
81000204: 00000007 0x7
|
||||
81000208: 00000007 0x7
|
||||
8100020c: 0008 0x8
|
||||
8100020e: 0000 unimp
|
||||
81000210: 0008 0x8
|
||||
81000212: 0000 unimp
|
||||
81000214: 0008 0x8
|
||||
81000216: 0000 unimp
|
||||
81000218: 0008 0x8
|
||||
810001b4 <tmc_array>:
|
||||
810001b4: 0005 c.nop 1
|
||||
810001b6: 0000 unimp
|
||||
810001b8: 0005 c.nop 1
|
||||
810001ba: 0000 unimp
|
||||
810001bc: 0005 c.nop 1
|
||||
810001be: 0000 unimp
|
||||
810001c0: 0005 c.nop 1
|
||||
...
|
||||
|
||||
8100021c <y>:
|
||||
8100021c: 0001 nop
|
||||
810001c4 <hextoa>:
|
||||
810001c4: 00b8 addi a4,sp,72
|
||||
810001c6: 8100 0x8100
|
||||
810001c8: 00bc addi a5,sp,72
|
||||
810001ca: 8100 0x8100
|
||||
810001cc: 00c0 addi s0,sp,68
|
||||
810001ce: 8100 0x8100
|
||||
810001d0: 00c4 addi s1,sp,68
|
||||
810001d2: 8100 0x8100
|
||||
810001d4: 00c8 addi a0,sp,68
|
||||
810001d6: 8100 0x8100
|
||||
810001d8: 00cc addi a1,sp,68
|
||||
810001da: 8100 0x8100
|
||||
810001dc: 00d0 addi a2,sp,68
|
||||
810001de: 8100 0x8100
|
||||
810001e0: 00d4 addi a3,sp,68
|
||||
810001e2: 8100 0x8100
|
||||
810001e4: 00d8 addi a4,sp,68
|
||||
810001e6: 8100 0x8100
|
||||
810001e8: 00dc addi a5,sp,68
|
||||
810001ea: 8100 0x8100
|
||||
810001ec: 00e0 addi s0,sp,76
|
||||
810001ee: 8100 0x8100
|
||||
810001f0: 00e4 addi s1,sp,76
|
||||
810001f2: 8100 0x8100
|
||||
810001f4: 00e8 addi a0,sp,76
|
||||
810001f6: 8100 0x8100
|
||||
810001f8: 00ec addi a1,sp,76
|
||||
810001fa: 8100 0x8100
|
||||
810001fc: 00f0 addi a2,sp,76
|
||||
810001fe: 8100 0x8100
|
||||
81000200: 00f4 addi a3,sp,76
|
||||
81000202: 8100 0x8100
|
||||
|
||||
81000204 <x>:
|
||||
81000204: 0005 c.nop 1
|
||||
81000206: 0000 unimp
|
||||
81000208: 0005 c.nop 1
|
||||
8100020a: 0000 unimp
|
||||
8100020c: 0005 c.nop 1
|
||||
8100020e: 0000 unimp
|
||||
81000210: 0005 c.nop 1
|
||||
81000212: 0000 unimp
|
||||
81000214: 0006 c.slli zero,0x1
|
||||
81000216: 0000 unimp
|
||||
81000218: 0006 c.slli zero,0x1
|
||||
8100021a: 0000 unimp
|
||||
8100021c: 0006 c.slli zero,0x1
|
||||
8100021e: 0000 unimp
|
||||
81000220: 0001 nop
|
||||
81000220: 0006 c.slli zero,0x1
|
||||
81000222: 0000 unimp
|
||||
81000224: 0001 nop
|
||||
81000226: 0000 unimp
|
||||
81000228: 0001 nop
|
||||
8100022a: 0000 unimp
|
||||
8100022c: 0001 nop
|
||||
8100022e: 0000 unimp
|
||||
81000230: 0001 nop
|
||||
81000232: 0000 unimp
|
||||
81000234: 0001 nop
|
||||
81000224: 00000007 0x7
|
||||
81000228: 00000007 0x7
|
||||
8100022c: 00000007 0x7
|
||||
81000230: 00000007 0x7
|
||||
81000234: 0008 0x8
|
||||
81000236: 0000 unimp
|
||||
81000238: 0001 nop
|
||||
81000238: 0008 0x8
|
||||
8100023a: 0000 unimp
|
||||
8100023c: 0001 nop
|
||||
8100023c: 0008 0x8
|
||||
8100023e: 0000 unimp
|
||||
81000240: 0001 nop
|
||||
81000242: 0000 unimp
|
||||
81000240: 0008 0x8
|
||||
...
|
||||
|
||||
81000244 <y>:
|
||||
81000244: 0001 nop
|
||||
81000246: 0000 unimp
|
||||
81000248: 0001 nop
|
||||
|
@ -902,29 +955,49 @@ Disassembly of section .data:
|
|||
81000254: 0001 nop
|
||||
81000256: 0000 unimp
|
||||
81000258: 0001 nop
|
||||
8100025a: 0000 unimp
|
||||
8100025c: 0001 nop
|
||||
8100025e: 0000 unimp
|
||||
81000260: 0001 nop
|
||||
81000262: 0000 unimp
|
||||
81000264: 0001 nop
|
||||
81000266: 0000 unimp
|
||||
81000268: 0001 nop
|
||||
8100026a: 0000 unimp
|
||||
8100026c: 0001 nop
|
||||
8100026e: 0000 unimp
|
||||
81000270: 0001 nop
|
||||
81000272: 0000 unimp
|
||||
81000274: 0001 nop
|
||||
81000276: 0000 unimp
|
||||
81000278: 0001 nop
|
||||
8100027a: 0000 unimp
|
||||
8100027c: 0001 nop
|
||||
8100027e: 0000 unimp
|
||||
81000280: 0001 nop
|
||||
...
|
||||
|
||||
Disassembly of section .bss:
|
||||
|
||||
8100025c <global_argument_struct>:
|
||||
8100025c: 0000 unimp
|
||||
81000284 <global_argument_struct>:
|
||||
81000284: 0000 unimp
|
||||
...
|
||||
|
||||
81000260 <global_function_pointer>:
|
||||
81000260: 0000 unimp
|
||||
81000288 <global_function_pointer>:
|
||||
81000288: 0000 unimp
|
||||
...
|
||||
|
||||
81000264 <global_num_threads>:
|
||||
81000264: 0000 unimp
|
||||
8100028c <global_num_threads>:
|
||||
8100028c: 0000 unimp
|
||||
...
|
||||
|
||||
81000268 <wsapwn_arr>:
|
||||
81000290 <wsapwn_arr>:
|
||||
...
|
||||
|
||||
81000278 <div_arr>:
|
||||
810002a0 <div_arr>:
|
||||
...
|
||||
|
||||
81000288 <z>:
|
||||
810002b0 <z>:
|
||||
...
|
||||
|
||||
Disassembly of section .comment:
|
||||
|
|
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
:0200000480007A
|
||||
:100000009705000093850502130540006B10B500AD
|
||||
:10001000EF000001EF008074130500006B00050085
|
||||
:10001000EF000001EF001001130500006B00050068
|
||||
:10002000130540006B000500F32610029396A6010D
|
||||
:10003000732600029315A6001316260037F1FF6FF2
|
||||
:100040003301B1403301D1403301C100F326100226
|
||||
|
@ -18,7 +18,7 @@
|
|||
:100100001301C10067800000B702010023A0B20004
|
||||
:1001100067800000130101FE232E1100232C8100B3
|
||||
:10012000130401022326A4FEB70700810327C4FE9F
|
||||
:10013000131727009387C710B307F70083A707009B
|
||||
:100130001317270093874713B307F70083A7070018
|
||||
:1001400013850700EFF05FF9130000008320C10161
|
||||
:10015000032481011301010267800000130101FEE5
|
||||
:10016000232E1100232C8100130401022326A4FE58
|
||||
|
@ -26,31 +26,31 @@
|
|||
:10018000EFF05FF9B707008113850704EFF0DFF4A4
|
||||
:10019000130000008320C101032481011301010227
|
||||
:1001A00067800000130101FE232E1100232C810023
|
||||
:1001B00013040102B707008183A7472613850700B0
|
||||
:1001C000EFF09FEAB707008103A70726B707008172
|
||||
:1001D00083A7C72513850700E7000700EFF0DFEAD4
|
||||
:1001B00013040102B707008183A7C728138507002E
|
||||
:1001C000EFF09FEAB707008103A78728B7070081F0
|
||||
:1001D00083A7472813850700E7000700EFF0DFEA51
|
||||
:1001E0002326A4FE8327C4FE6388070013050000AE
|
||||
:1001F000EFF09FE76F00C00013051000EFF0DFE69F
|
||||
:10020000130000008320C1010324810113010102B6
|
||||
:1002100067800000130101FE232E1100232C8100B2
|
||||
:10022000130401022326A4FE2324B4FE2322C4FEC9
|
||||
:100230002320D4FEB7070081032744FE23A0E7262E
|
||||
:10024000B7070081032704FE23AEE724B707008128
|
||||
:10025000032784FE23A2E726B70700809387471A67
|
||||
:100230002320D4FEB7070081032744FE23A4E72828
|
||||
:10024000B7070081032704FE23A2E728B707008130
|
||||
:10025000032784FE23A6E728B70700809387471A61
|
||||
:10026000938507000325C4FEEFF09FDFEFF09FF3B7
|
||||
:10027000130000008320C101032481011301010246
|
||||
:1002800067800000130101FE232E1100232C810042
|
||||
:1002900013040102B707008113854708EFF0DFE37D
|
||||
:1002A00013054000EFF05FDCEFF09FDE2326A4FE95
|
||||
:1002B0000327C4FEB70700818326C4FE9396260059
|
||||
:1002C0009387C718B387F60023A0E7001305100033
|
||||
:1002D000EFF09FD9B707008183A7C71813850700E0
|
||||
:1002C0009387471BB387F60023A0E70013051000B0
|
||||
:1002D000EFF09FD9B707008183A7471B138507005D
|
||||
:1002E000EFF05FE3B707008113854709EFF0DFDE2A
|
||||
:1002F000B70700819387C71883A7470013850700B6
|
||||
:1002F000B70700819387471B83A747001385070033
|
||||
:10030000EFF05FE1B707008113854709EFF0DFDC0D
|
||||
:10031000B70700819387C71883A787001385070055
|
||||
:10031000B70700819387471B83A7870013850700D2
|
||||
:10032000EFF05FDFB707008113854709EFF0DFDAF1
|
||||
:10033000B70700819387C71883A7C70013850700F5
|
||||
:10033000B70700819387471B83A7C7001385070072
|
||||
:10034000EFF05FDDB707008113854709EFF0DFD8D5
|
||||
:10035000130000008320C101032481011301010265
|
||||
:1003600067800000130101FE232E1100232C810061
|
||||
|
@ -59,40 +59,40 @@
|
|||
:10039000EFF09FCE8347B4FE638407068327C4FE35
|
||||
:1003A00093B717002305F4FE8347A4FE13850700C7
|
||||
:1003B000EFF09FCC8347A4FE63820702B70700815A
|
||||
:1003C0000327C4FE1317270093878727B307F70077
|
||||
:1003C0000327C4FE131727009387072AB307F700F4
|
||||
:1003D0001307A00023A0E7006F000002B707008109
|
||||
:1003E0000327C4FE1317270093878727B307F70057
|
||||
:1003E0000327C4FE131727009387072AB307F700D4
|
||||
:1003F0001307B00023A0E700EFF09FC86F0040068E
|
||||
:100400008327C4FE93B73700A304F4FE834794FE0A
|
||||
:1004100013850700EFF05FC6834794FE63820702EF
|
||||
:10042000B70700810327C4FE131727009387872788
|
||||
:10042000B70700810327C4FE131727009387072A05
|
||||
:10043000B307F7001307C00023A0E7006F00000216
|
||||
:10044000B70700810327C4FE131727009387872768
|
||||
:10044000B70700810327C4FE131727009387072AE5
|
||||
:10045000B307F7001307D00023A0E700EFF05FC257
|
||||
:10046000EFF01FC2B707008183A787271385070016
|
||||
:10046000EFF01FC2B707008183A7072A1385070093
|
||||
:10047000EFF05FCAB707008113854709EFF0DFC5CA
|
||||
:10048000B70700819387872783A747001385070055
|
||||
:10048000B70700819387072A83A7470013850700D2
|
||||
:10049000EFF05FC8B707008113854709EFF0DFC3AE
|
||||
:1004A000B70700819387872783A7870013850700F5
|
||||
:1004A000B70700819387072A83A787001385070072
|
||||
:1004B000EFF05FC6B707008113854709EFF0DFC192
|
||||
:1004C000B70700819387872783A7C7001385070095
|
||||
:1004C000B70700819387072A83A7C7001385070012
|
||||
:1004D000EFF05FC4B707008113854709EFF0DFBF76
|
||||
:1004E000130000008320C1010324810113010102D4
|
||||
:1004F00067800000130101FE232E1100232C8100D0
|
||||
:1005000013040102EFF05FB82326A4FEB7070081B1
|
||||
:100510000327C4FE1317270093878726B307F70026
|
||||
:100510000327C4FE1317270093870729B307F700A3
|
||||
:100520000327C4FE23A0E7008327C4FE63860700D9
|
||||
:1005300013050000EFF05FB3130000008320C1013A
|
||||
:10054000032481011301010267800000130101FEF1
|
||||
:10055000232E1100232C810013040102B707008011
|
||||
:100560009387474F2326F4FE8325C4FE13054000DE
|
||||
:10057000EFF01FAFEFF01FF8B707008183A78726C2
|
||||
:10057000EFF01FAFEFF01FF8B707008183A707293F
|
||||
:1005800013850700EFF01FB9B707008113854709EE
|
||||
:10059000EFF09FB4B70700819387872683A74700B2
|
||||
:10059000EFF09FB4B70700819387072983A747002F
|
||||
:1005A00013850700EFF01FB7B707008113854709D0
|
||||
:1005B000EFF09FB2B70700819387872683A7870054
|
||||
:1005B000EFF09FB2B70700819387072983A78700D1
|
||||
:1005C00013850700EFF01FB5B707008113854709B2
|
||||
:1005D000EFF09FB0B70700819387872683A7C700F6
|
||||
:1005D000EFF09FB0B70700819387072983A7C70073
|
||||
:1005E00013850700EFF01FB3B70700811385470994
|
||||
:1005F000EFF09FAE130000008320C10103248101AE
|
||||
:100600001301010267800000130101FF232611007E
|
||||
|
@ -116,26 +116,40 @@
|
|||
:10072000B307F70003A707008327C4FE03A68700CB
|
||||
:100730008327C4FD93972700B307F6003387E600AD
|
||||
:1007400023A0E700EFF0DF93130000008320C10334
|
||||
:10075000032481031301010467800000130101FCDD
|
||||
:10076000232E1102232C810213040104130510000F
|
||||
:10077000EFF09F8FB70700811385870FEFF0DF95AC
|
||||
:10078000B70700819387C71D2324F4FCB7070081B6
|
||||
:100790009387C7212326F4FCB70700819387872816
|
||||
:1007A0002328F4FC93074000232AF4FC930740001D
|
||||
:1007B000232CF4FC930740002322F4FE930740000F
|
||||
:1007C0002320F4FE032744FE832504FE930784FCC4
|
||||
:1007D00093860700B7070080138607661305070096
|
||||
:1007E000EFF05FA3232604FE6F000008232404FE1D
|
||||
:1007F0006F004005032744FD8327C4FE3307F7023B
|
||||
:10080000832784FEB307F700232EF4FCB70700818B
|
||||
:100810000327C4FD1317270093878728B307F70022
|
||||
:1008200083A7070013850700EFF0DF8EB70700816D
|
||||
:1008300013854710EFF05F8A832784FE93871700A4
|
||||
:100840002324F4FE032744FD832784FEE3E4E7FA30
|
||||
:10085000B707008113858710EFF01F888327C4FE38
|
||||
:10086000938717002326F4FE032784FD8327C4FE05
|
||||
:10087000E3EEE7F693070000138507008320C1032A
|
||||
:0C088000032481031301010467800000C1
|
||||
:10075000032481031301010467800000130101FDDC
|
||||
:10076000232611022324810213040103232EA4FC57
|
||||
:10077000232CB4FC232AC4FCB70700811385870F00
|
||||
:10078000EFF09F95232604FE6F00C007232404FE8C
|
||||
:100790006F0000050327C4FE832744FD3307F702DB
|
||||
:1007A000832784FEB307F7002322F4FE832744FE49
|
||||
:1007B000939727000327C4FDB307F70083A707001B
|
||||
:1007C00013850700EFF01F95B70700811385071108
|
||||
:1007D000EFF09F90832784FE938717002324F4FE75
|
||||
:1007E000032784FE832744FDE346F7FAB707008119
|
||||
:1007F00013854711EFF05F8E8327C4FE93871700A0
|
||||
:100800002326F4FE0327C4FE832784FDE340F7F884
|
||||
:10081000130000008320C10203248102130101039D
|
||||
:1008200067800000130101FD2326110223248102A9
|
||||
:100830001304010313051000EFF01F83B7070081B5
|
||||
:1008400013858711EFF05F89B70700811385471281
|
||||
:10085000EFF09F88B707008193874720232AF4FC95
|
||||
:10086000B707008193874724232CF4FCB707008146
|
||||
:100870009387072B232EF4FC930740002320F4FEDC
|
||||
:10088000930740002322F4FE930740002326F4FE42
|
||||
:10089000930740002324F4FE0327C4FE832584FE2F
|
||||
:1008A000930744FD93860700B70700801386076609
|
||||
:1008B00013050700EFF01F96832744FE13870700F8
|
||||
:1008C000832704FE1386070093050700B7070081FE
|
||||
:1008D0001385072BEFF09FE8B70700819387072B5D
|
||||
:1008E000232AF4FCB707008193874724232CF4FCC8
|
||||
:1008F000B70700819387072B232EF4FC9307400052
|
||||
:100900002320F4FE930740002322F4FE0327C4FEB5
|
||||
:10091000832584FE930744FD93860700B707008074
|
||||
:100920001386076613050700EFF0DF8E832744FE6A
|
||||
:1009300013870700832704FE13860700930507002B
|
||||
:10094000B70700811385072BEFF05FE193070000E5
|
||||
:10095000138507008320C1020324810213010103D0
|
||||
:0409600067800000AC
|
||||
:02000004810079
|
||||
:10000000300000003100000032000000330000002A
|
||||
:10001000340000003500000036000000370000000A
|
||||
|
@ -152,28 +166,31 @@
|
|||
:1000C0003200000033000000340000003500000062
|
||||
:1000D0003600000037000000380000003900000042
|
||||
:1000E0006100000062000000630000006400000086
|
||||
:1000F0006500000066000000446576204D61696E71
|
||||
:0A0100000A000000200000000A00C1
|
||||
:10010C000000008104000081080000810C000081C7
|
||||
:10011C001000008114000081180000811C00008177
|
||||
:10012C002000008124000081280000812C00008127
|
||||
:10013C003000008134000081380000813C000081D7
|
||||
:10014C0044000081480000814C0000815000008177
|
||||
:10015C0054000081580000815C0000816000008127
|
||||
:10016C0064000081680000816C00008170000081D7
|
||||
:10017C0074000081780000817C0000818000008187
|
||||
:10018C00050000000500000005000000050000004F
|
||||
:10019C00B8000081BC000081C0000081C400008157
|
||||
:1001AC00C8000081CC000081D0000081D400008107
|
||||
:1001BC00D8000081DC000081E0000081E4000081B7
|
||||
:1001CC00E8000081EC000081F0000081F400008167
|
||||
:1001DC0005000000050000000500000005000000FF
|
||||
:1001EC0006000000060000000600000006000000EB
|
||||
:1001FC0007000000070000000700000007000000D7
|
||||
:10020C0008000000080000000800000008000000C2
|
||||
:10021C0001000000010000000100000001000000CE
|
||||
:10022C0001000000010000000100000001000000BE
|
||||
:10023C0001000000010000000100000001000000AE
|
||||
:10024C00010000000100000001000000010000009E
|
||||
:1000F00065000000660000002D2D2D2D2D2D2D2DCD
|
||||
:100100002D2D2D2D2D2D2D2D2D2D2D2D2D0A00009C
|
||||
:10011000200000000A000000446576204D61696EF1
|
||||
:100120000A00000076785F737061776E57617270B5
|
||||
:03013000730A004F
|
||||
:100134000000008104000081080000810C0000819F
|
||||
:100144001000008114000081180000811C0000814F
|
||||
:100154002000008124000081280000812C000081FF
|
||||
:100164003000008134000081380000813C000081AF
|
||||
:1001740044000081480000814C000081500000814F
|
||||
:1001840054000081580000815C00008160000081FF
|
||||
:1001940064000081680000816C00008170000081AF
|
||||
:1001A40074000081780000817C000081800000815F
|
||||
:1001B4000500000005000000050000000500000027
|
||||
:1001C400B8000081BC000081C0000081C40000812F
|
||||
:1001D400C8000081CC000081D0000081D4000081DF
|
||||
:1001E400D8000081DC000081E0000081E40000818F
|
||||
:1001F400E8000081EC000081F0000081F40000813F
|
||||
:1002040005000000050000000500000005000000D6
|
||||
:1002140006000000060000000600000006000000C2
|
||||
:1002240007000000070000000700000007000000AE
|
||||
:10023400080000000800000008000000080000009A
|
||||
:1002440001000000010000000100000001000000A6
|
||||
:100254000100000001000000010000000100000096
|
||||
:100264000100000001000000010000000100000086
|
||||
:100274000100000001000000010000000100000076
|
||||
:040000058000000077
|
||||
:00000001FF
|
||||
|
|
|
@ -35,3 +35,15 @@ void vx_spawnWarps(unsigned numWarps, unsigned numThreads, func_t func_ptr, void
|
|||
setup_call();
|
||||
|
||||
}
|
||||
|
||||
|
||||
// void vx_cl_spawnWarps(char * args, char * pocl_context, long group_x, long group_y, long group_z)
|
||||
// {
|
||||
// if (group_z != 1)
|
||||
// {
|
||||
// vx_printf("ERROR: group_z should be set equal to 1");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// vx_spawnWarps(group_y, group_x, )
|
||||
// }
|
||||
|
|
|
@ -9,8 +9,11 @@ typedef void (*func_t)(void *);
|
|||
void vx_spawnWarps(unsigned numWarps, unsigned numThreads, func_t func_ptr , void * args);
|
||||
|
||||
|
||||
|
||||
|
||||
void vx_cl_spawnWarps (char * /* args */,
|
||||
char * /* pocl_context */,
|
||||
long /* group_x */,
|
||||
long /* group_y */,
|
||||
long /* group_z */);
|
||||
|
||||
|
||||
|
||||
|
|
0
simX/BUGS
Normal file
0
simX/BUGS
Normal file
12
simX/LICENSE
Normal file
12
simX/LICENSE
Normal file
|
@ -0,0 +1,12 @@
|
|||
Copyright (c) 2011, Georgia Institute of Technology
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
simX/Makefile
Normal file
29
simX/Makefile
Normal file
|
@ -0,0 +1,29 @@
|
|||
################################################################################
|
||||
# HARPtools by Chad D. Kersey, Summer 2011 #
|
||||
################################################################################
|
||||
CXXFLAGS ?= -std=c++11 -fPIC -O3 # -g -DUSE_DEBUG=3 -DPRINT_ACTIVE_THREADS
|
||||
|
||||
LIB_OBJS=simX.cpp args.cpp mem.cpp core.cpp instruction.cpp enc.cpp util.cpp
|
||||
|
||||
|
||||
INCLUDE=-I. -I../rtl/shared_memory -I../rtl/cache -I../rtl/interfaces -Isimulate -I../rtl
|
||||
FILE=cache_simX.v
|
||||
COMP=--compiler gcc
|
||||
LIB=
|
||||
CF=-CFLAGS '-std=c++11 -fPIC -O3'
|
||||
|
||||
LIGHTW=-Wno-UNOPTFLAT -Wno-BLKLOOPINIT
|
||||
|
||||
EXE=--exe $(LIB_OBJS)
|
||||
all: simX
|
||||
|
||||
# simX:
|
||||
# g++ $(LDFLAGS) $(LIB_OBJS) -o simX.run
|
||||
|
||||
|
||||
simX:
|
||||
verilator $(COMP) -cc $(FILE) $(INCLUDE) $(EXE) $(LIB) $(CF) $(LIGHTW)
|
||||
(cd obj_dir && make -j -f Vcache_simX.mk OPT='-DVL_DEBUG' VL_DEBUG=1 DVL_DEBUG=1)
|
||||
|
||||
clean:
|
||||
rm -rf *~ \#* *.o *.a *.so include/*~ include/\#* simX.run obj_dir
|
14
simX/WISHLIST
Normal file
14
simX/WISHLIST
Normal file
|
@ -0,0 +1,14 @@
|
|||
- Anonymous chunks whose names are not saved by the object writer.
|
||||
- 32-bit instruction encoding for larger-pointered architecture versions.
|
||||
- HOFDump mode for HARPTool/HOFTool
|
||||
- Make operation information tables into member functions of Instruction, if
|
||||
possible.
|
||||
- Anonymous assigned values in the assembler.
|
||||
- References (pointers) as .word directive contents in the assembler.
|
||||
- Instruction validation before encoding.
|
||||
- Make readError in obj.cpp throw something instead of printing a message and
|
||||
exiting.
|
||||
- Limit checking for byte/word encoders (e.g. 255 pRegs, 256 regs for byte)
|
||||
- Eliminate the tmp_buf nonsense from the chunk encoder.
|
||||
- Loosen arch restrictions imposed for interoperability (the number of lanes is
|
||||
typically unimportant)
|
52
simX/args.cpp
Normal file
52
simX/args.cpp
Normal file
|
@ -0,0 +1,52 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#include "include/args.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
using namespace HarpTools;
|
||||
using std::string;
|
||||
|
||||
std::string CommandLineArg::helpString;
|
||||
std::map<string, CommandLineArg *> CommandLineArg::longArgs;
|
||||
std::map<string, CommandLineArg *> CommandLineArg::shortArgs;
|
||||
|
||||
CommandLineArg::CommandLineArg(string s, string l, const char *helpText)
|
||||
{
|
||||
helpString += helpText;
|
||||
longArgs[l] = this;
|
||||
shortArgs[s] = this;
|
||||
}
|
||||
|
||||
CommandLineArg::CommandLineArg(string l, const char *helpText) {
|
||||
helpString += helpText;
|
||||
longArgs[l] = this;
|
||||
}
|
||||
|
||||
void CommandLineArg::readArgs(int argc, char **argv) {
|
||||
for (int i = 0; i < argc; i++) {
|
||||
std::map<string, CommandLineArg *>::iterator
|
||||
s = shortArgs.find(std::string(argv[i])),
|
||||
l = longArgs.find(std::string(argv[i]));
|
||||
|
||||
if (s != shortArgs.end()) {
|
||||
i += s->second->read(argc - i, &argv[i]);
|
||||
} else if (l != longArgs.end()) {
|
||||
i += l->second->read(argc - i, &argv[i]);
|
||||
} else {
|
||||
throw BadArg(string(argv[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CommandLineArg::clearArgs() {
|
||||
shortArgs.clear();
|
||||
longArgs.clear();
|
||||
helpString = "";
|
||||
}
|
||||
|
||||
void CommandLineArg::showHelp(std::ostream &os) {
|
||||
os << helpString;
|
||||
}
|
126
simX/cache_simX.v
Normal file
126
simX/cache_simX.v
Normal file
|
@ -0,0 +1,126 @@
|
|||
|
||||
`include "../rtl/VX_define.v"
|
||||
|
||||
module cache_simX (
|
||||
input wire clk, // Clock
|
||||
input wire reset,
|
||||
|
||||
// Icache
|
||||
input wire[31:0] in_icache_pc_addr,
|
||||
input wire in_icache_valid_pc_addr,
|
||||
output wire out_icache_stall,
|
||||
|
||||
|
||||
// Dcache
|
||||
input wire[2:0] in_dcache_mem_read,
|
||||
input wire[2:0] in_dcache_mem_write,
|
||||
input wire in_dcache_in_valid[`NT_M1:0],
|
||||
input wire[31:0] in_dcache_in_address[`NT_M1:0],
|
||||
output wire out_dcache_stall
|
||||
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//////////////////// ICACHE ///////////////////
|
||||
VX_icache_request_inter VX_icache_req;
|
||||
assign VX_icache_req.pc_address = in_icache_pc_addr;
|
||||
assign VX_icache_req.out_cache_driver_in_mem_read = (in_icache_valid_pc_addr) ? `LW_MEM_READ : `NO_MEM_READ;
|
||||
assign VX_icache_req.out_cache_driver_in_mem_write = `NO_MEM_WRITE;
|
||||
assign VX_icache_req.out_cache_driver_in_valid = in_icache_valid_pc_addr;
|
||||
assign VX_icache_req.out_cache_driver_in_data = 0;
|
||||
|
||||
|
||||
VX_icache_response_inter VX_icache_rsp;
|
||||
assign out_icache_stall = VX_icache_rsp.delay;
|
||||
|
||||
|
||||
VX_dram_req_rsp_inter #(
|
||||
|
||||
.NUMBER_BANKS(`ICACHE_BANKS),
|
||||
.NUM_WORDS_PER_BLOCK(`ICACHE_NUM_WORDS_PER_BLOCK)
|
||||
|
||||
) VX_dram_req_rsp_icache();
|
||||
|
||||
reg icache_i_m_ready;
|
||||
|
||||
assign VX_dram_req_rsp_icache.i_m_ready = icache_i_m_ready;
|
||||
|
||||
|
||||
|
||||
//////////////////// DCACHE ///////////////////
|
||||
|
||||
VX_dcache_request_inter VX_dcache_req;
|
||||
assign VX_dcache_req.out_cache_driver_in_mem_read = in_dcache_mem_read;
|
||||
assign VX_dcache_req.out_cache_driver_in_mem_write = in_dcache_mem_write;
|
||||
assign VX_dcache_req.out_cache_driver_in_data = 0;
|
||||
|
||||
genvar curr_t;
|
||||
for (curr_t = 0; curr_t < `NT; curr_t=curr_t+1)
|
||||
begin
|
||||
assign VX_dcache_req.out_cache_driver_in_address[curr_t] = in_dcache_in_address[curr_t];
|
||||
assign VX_dcache_req.out_cache_driver_in_valid[curr_t] = in_dcache_in_valid[curr_t];
|
||||
end
|
||||
|
||||
VX_dcache_response_inter VX_dcache_rsp;
|
||||
assign out_dcache_stall = VX_dcache_rsp.delay;
|
||||
|
||||
|
||||
VX_dram_req_rsp_inter #(
|
||||
|
||||
.NUMBER_BANKS(`DCACHE_BANKS),
|
||||
.NUM_WORDS_PER_BLOCK(`DCACHE_NUM_WORDS_PER_BLOCK)
|
||||
|
||||
) VX_dram_req_rsp();
|
||||
|
||||
reg dcache_i_m_ready;
|
||||
assign VX_dram_req_rsp.i_m_ready = dcache_i_m_ready;
|
||||
|
||||
|
||||
VX_dmem_controller dmem_controller (
|
||||
.clk (clk),
|
||||
.reset (reset),
|
||||
.VX_dram_req_rsp (VX_dram_req_rsp),
|
||||
.VX_dram_req_rsp_icache(VX_dram_req_rsp_icache),
|
||||
.VX_icache_req (VX_icache_req),
|
||||
.VX_icache_rsp (VX_icache_rsp),
|
||||
.VX_dcache_req (VX_dcache_req),
|
||||
.VX_dcache_rsp (VX_dcache_rsp)
|
||||
);
|
||||
|
||||
always @(posedge clk, posedge reset) begin
|
||||
if (reset)
|
||||
begin
|
||||
icache_i_m_ready <= 0;
|
||||
dcache_i_m_ready <= 0;
|
||||
end else begin
|
||||
|
||||
if (VX_dram_req_rsp_icache.o_m_valid) begin
|
||||
icache_i_m_ready <= 1;
|
||||
end else if (icache_i_m_ready) begin
|
||||
icache_i_m_ready <= 0;
|
||||
end else begin
|
||||
icache_i_m_ready <= 0;
|
||||
end
|
||||
|
||||
|
||||
if (VX_dram_req_rsp.o_m_valid) begin
|
||||
dcache_i_m_ready <= 1;
|
||||
end else if (dcache_i_m_ready) begin
|
||||
dcache_i_m_ready <= 0;
|
||||
end else begin
|
||||
dcache_i_m_ready <= 0;
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
endmodule
|
||||
|
||||
|
||||
|
||||
|
||||
|
286
simX/core.cpp
Normal file
286
simX/core.cpp
Normal file
|
@ -0,0 +1,286 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
|
||||
// #define USE_DEBUG 7
|
||||
// #define PRINT_ACTIVE_THREADS
|
||||
|
||||
#include "include/types.h"
|
||||
#include "include/util.h"
|
||||
#include "include/archdef.h"
|
||||
#include "include/mem.h"
|
||||
#include "include/enc.h"
|
||||
#include "include/core.h"
|
||||
#include "include/debug.h"
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
#include "include/qsim-harp.h"
|
||||
#endif
|
||||
|
||||
using namespace Harp;
|
||||
using namespace std;
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
void Harp::reg_doRead(Word cpuId, Word regNum) {
|
||||
Harp::OSDomain::osDomain->do_reg(cpuId, regNum, 8, true);
|
||||
}
|
||||
|
||||
void Harp::reg_doWrite(Word cpuId, Word regNum) {
|
||||
Harp::OSDomain::osDomain->do_reg(cpuId, regNum, 8, false);
|
||||
}
|
||||
#endif
|
||||
|
||||
Core::Core(const ArchDef &a, Decoder &d, MemoryUnit &mem, Word id):
|
||||
a(a), iDec(d), mem(mem), steps(0)
|
||||
{
|
||||
|
||||
cache_simulator = new Vcache_simX;
|
||||
for (unsigned i = 0; i < a.getNWarps(); ++i)
|
||||
w.push_back(Warp(this, i));
|
||||
|
||||
w[0].activeThreads = 1;
|
||||
w[0].spawned = true;
|
||||
}
|
||||
|
||||
bool Core::interrupt(Word r0) {
|
||||
w[0].interrupt(r0);
|
||||
}
|
||||
|
||||
void Core::step()
|
||||
{
|
||||
this->fetch();
|
||||
}
|
||||
|
||||
void Core::fetch()
|
||||
{
|
||||
++steps;
|
||||
|
||||
#ifdef PRINT_ACTIVE_THREADS
|
||||
cout << endl << "Threads:";
|
||||
#endif
|
||||
|
||||
|
||||
for (unsigned i = 0; i < w.size(); ++i) {
|
||||
if (w[i].activeThreads) {
|
||||
|
||||
trace_inst_t trace_inst;
|
||||
trace_inst.valid_inst = false;
|
||||
trace_inst.pc = 0;
|
||||
trace_inst.wid = i;
|
||||
trace_inst.rs1 = -1;
|
||||
trace_inst.rs2 = -1;
|
||||
trace_inst.rd = -1;
|
||||
trace_inst.is_lw = false;
|
||||
trace_inst.is_sw = false;
|
||||
trace_inst.mem_addresses = new unsigned[a.getNThds()];
|
||||
trace_inst.mem_stall_cycles = 0;
|
||||
trace_inst.fetch_stall_cycles = 0;
|
||||
trace_inst.stall_warp = false;
|
||||
|
||||
|
||||
D(3, "Core step stepping warp " << i << '[' << w[i].activeThreads << ']');
|
||||
w[i].step(&trace_inst);
|
||||
D(3, "Now " << w[i].activeThreads << " active threads in " << i);
|
||||
|
||||
D(-1, "********************************");
|
||||
D(-1, "*** valid: " << trace_inst.valid_inst << " pc: " << hex << trace_inst.pc << dec << " rs1..rs2..rd " << trace_inst.rs1 << ".." << trace_inst.rs2 << ".." << trace_inst.rd << "\n");
|
||||
D(-1, "********************************");
|
||||
|
||||
}
|
||||
|
||||
#ifdef PRINT_ACTIVE_THREADS
|
||||
for (unsigned j = 0; j < w[i].tmask.size(); ++j) {
|
||||
if (w[i].activeThreads > j && w[i].tmask[j]) cout << " 1";
|
||||
else cout << " 0";
|
||||
if (j != w[i].tmask.size()-1 || i != w.size()-1) cout << ',';
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#ifdef PRINT_ACTIVE_THREADS
|
||||
cout << endl;
|
||||
#endif
|
||||
}
|
||||
|
||||
void Core::decode()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Core::scheduler()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Core::gpr_read()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Core::execute_unit()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Core::load_store()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool Core::running() const {
|
||||
for (unsigned i = 0; i < w.size(); ++i)
|
||||
if (w[i].running()) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void Core::printStats() const {
|
||||
unsigned long insts = 0;
|
||||
for (unsigned i = 0; i < w.size(); ++i)
|
||||
insts += w[i].insts;
|
||||
|
||||
cout << "Total steps: " << steps << endl;
|
||||
cout << "Total insts: " << insts << endl;
|
||||
for (unsigned i = 0; i < w.size(); ++i) {
|
||||
cout << "=== Warp " << i << " ===" << endl;
|
||||
w[i].printStats();
|
||||
}
|
||||
}
|
||||
|
||||
Warp::Warp(Core *c, Word id) :
|
||||
core(c), pc(0x80000000), interruptEnable(true),
|
||||
supervisorMode(true), activeThreads(0), reg(0), pred(0),
|
||||
shadowReg(core->a.getNRegs()), shadowPReg(core->a.getNPRegs()), id(id),
|
||||
spawned(false), steps(0), insts(0), loads(0), stores(0)
|
||||
{
|
||||
D(3, "Creating a new thread with PC: " << hex << this->pc << '\n');
|
||||
/* Build the register file. */
|
||||
Word regNum(0);
|
||||
for (Word j = 0; j < core->a.getNThds(); ++j) {
|
||||
reg.push_back(vector<Reg<Word> >(0));
|
||||
for (Word i = 0; i < core->a.getNRegs(); ++i) {
|
||||
reg[j].push_back(Reg<Word>(id, regNum++));
|
||||
}
|
||||
|
||||
pred.push_back(vector<Reg<bool> >(0));
|
||||
for (Word i = 0; i < core->a.getNPRegs(); ++i) {
|
||||
pred[j].push_back(Reg<bool>(id, regNum++));
|
||||
}
|
||||
|
||||
bool act = false;
|
||||
if (j == 0) act = true;
|
||||
tmask.push_back(act);
|
||||
shadowTmask.push_back(act);
|
||||
}
|
||||
|
||||
Word csrNum(0);
|
||||
for (Word i = 0; i < (1<<12); i++)
|
||||
{
|
||||
csr.push_back(Reg<uint16_t>(id, regNum++));
|
||||
}
|
||||
|
||||
/* Set initial register contents. */
|
||||
reg[0][0] = (core->a.getNThds()<<(core->a.getWordSize()*8 / 2)) | id;
|
||||
}
|
||||
|
||||
void Warp::step(trace_inst_t * trace_inst) {
|
||||
Size fetchPos(0), decPos, wordSize(core->a.getWordSize());
|
||||
vector<Byte> fetchBuffer(wordSize);
|
||||
|
||||
if (activeThreads == 0) return;
|
||||
|
||||
++steps;
|
||||
|
||||
D(3, "in step pc=0x" << hex << pc);
|
||||
|
||||
// std::cout << "pc: " << hex << pc << "\n";
|
||||
|
||||
trace_inst->pc = pc;
|
||||
|
||||
/* Fetch and decode. */
|
||||
if (wordSize < sizeof(pc)) pc &= ((1ll<<(wordSize*8))-1);
|
||||
Instruction *inst;
|
||||
bool fetchMore;
|
||||
|
||||
fetchMore = false;
|
||||
unsigned fetchSize(wordSize - (pc+fetchPos)%wordSize);
|
||||
fetchBuffer.resize(fetchPos + fetchSize);
|
||||
Word fetched = core->mem.fetch(pc + fetchPos, supervisorMode);
|
||||
writeWord(fetchBuffer, fetchPos, fetchSize, fetched);
|
||||
decPos = 0;
|
||||
inst = core->iDec.decode(fetchBuffer, decPos, trace_inst);
|
||||
|
||||
D(3, "Fetched at 0x" << hex << pc);
|
||||
D(3, "0x" << hex << pc << ": " << *inst);
|
||||
|
||||
// Update pc
|
||||
pc += decPos;
|
||||
|
||||
// Execute
|
||||
|
||||
inst->executeOn(*this);
|
||||
|
||||
|
||||
// At Debug Level 3, print debug info after each instruction.
|
||||
#ifdef USE_DEBUG
|
||||
if (USE_DEBUG >= 3) {
|
||||
D(3, "Register state:");
|
||||
for (unsigned i = 0; i < reg[0].size(); ++i) {
|
||||
D_RAW(" %r" << setfill(' ') << setw(2) << dec << i << ':');
|
||||
for (unsigned j = 0; j < reg.size(); ++j)
|
||||
D_RAW(' ' << setfill('0') << setw(8) << hex << reg[j][i] << setfill(' ') << ' ');
|
||||
D_RAW('(' << shadowReg[i] << ')' << endl);
|
||||
}
|
||||
|
||||
|
||||
D(3, "Thread mask:");
|
||||
D_RAW(" ");
|
||||
for (unsigned i = 0; i < tmask.size(); ++i) D_RAW(tmask[i] << ' ');
|
||||
D_RAW(endl);
|
||||
D_RAW(endl);
|
||||
D_RAW(endl);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Clean up.
|
||||
delete inst;
|
||||
}
|
||||
|
||||
bool Warp::interrupt(Word r0) {
|
||||
if (!interruptEnable) return false;
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
Harp::OSDomain::osDomain->do_int(0, r0);
|
||||
#endif
|
||||
|
||||
shadowActiveThreads = activeThreads;
|
||||
shadowTmask = tmask;
|
||||
shadowInterruptEnable = interruptEnable; /* For traps. */
|
||||
shadowSupervisorMode = supervisorMode;
|
||||
|
||||
for (Word i = 0; i < reg[0].size(); ++i) shadowReg[i] = reg[0][i];
|
||||
for (Word i = 0; i < pred[0].size(); ++i) shadowPReg[i] = pred[0][i];
|
||||
for (Word i = 0; i < reg.size(); ++i) tmask[i] = 1;
|
||||
|
||||
shadowPc = pc;
|
||||
activeThreads = 1;
|
||||
interruptEnable = false;
|
||||
supervisorMode = true;
|
||||
reg[0][0] = r0;
|
||||
pc = core->interruptEntry;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Warp::printStats() const {
|
||||
cerr << "Steps : " << steps << endl
|
||||
<< "Insts : " << insts << endl
|
||||
<< "Loads : " << loads << endl
|
||||
<< "Stores: " << stores << endl;
|
||||
|
||||
unsigned const grade = reg[0][28];
|
||||
|
||||
if (grade == 1) cerr << "GRADE: PASSED\n";
|
||||
else cerr << "GRADE: FAILED " << (grade >> 1) << "\n";
|
||||
}
|
234
simX/enc.cpp
Normal file
234
simX/enc.cpp
Normal file
|
@ -0,0 +1,234 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <iomanip>
|
||||
#include <vector>
|
||||
|
||||
#include "include/debug.h"
|
||||
#include "include/types.h"
|
||||
#include "include/util.h"
|
||||
#include "include/enc.h"
|
||||
#include "include/archdef.h"
|
||||
#include "include/instruction.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace Harp;
|
||||
|
||||
// ByteDecoder::ByteDecoder(const ArchDef &ad) {
|
||||
// wordSize = ad.getWordSize();
|
||||
// }
|
||||
|
||||
static void decodeError(string msg) {
|
||||
cout << "Instruction decoder error: " << msg << '\n';
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static unsigned ceilLog2(RegNum x) {
|
||||
unsigned z = 0;
|
||||
bool nonZeroInnerValues(false);
|
||||
|
||||
if (x == 0) return 0;
|
||||
|
||||
while (x != 1) {
|
||||
z++;
|
||||
if (x&1) nonZeroInnerValues = true;
|
||||
x >>= 1;
|
||||
}
|
||||
|
||||
if (nonZeroInnerValues) z++;
|
||||
|
||||
return z;
|
||||
}
|
||||
|
||||
|
||||
WordDecoder::WordDecoder(const ArchDef &arch) {
|
||||
|
||||
inst_s = arch.getWordSize() * 8;
|
||||
opcode_s = 7;
|
||||
reg_s = 5;
|
||||
func3_s = 3;
|
||||
|
||||
shift_opcode = 0;
|
||||
shift_rd = opcode_s;
|
||||
shift_func3 = opcode_s + reg_s;
|
||||
shift_rs1 = opcode_s + reg_s + func3_s;
|
||||
shift_rs2 = opcode_s + reg_s + func3_s + reg_s;
|
||||
shift_func7 = opcode_s + reg_s + func3_s + reg_s + reg_s;
|
||||
shift_j_u_immed = opcode_s + reg_s;
|
||||
shift_s_b_immed = opcode_s + reg_s + func3_s + reg_s + reg_s;
|
||||
shift_i_immed = opcode_s + reg_s + func3_s + reg_s;
|
||||
|
||||
reg_mask = 0x1f;
|
||||
func3_mask = 0x7;
|
||||
func7_mask = 0x7f;
|
||||
opcode_mask = 0x7f;
|
||||
i_immed_mask = 0xfff;
|
||||
s_immed_mask = 0xfff;
|
||||
b_immed_mask = 0x1fff;
|
||||
u_immed_mask = 0xfffff;
|
||||
j_immed_mask = 0xfffff;
|
||||
|
||||
}
|
||||
|
||||
static Word signExt(Word w, Size bit, Word mask) {
|
||||
if (w>>(bit-1)) w |= ~mask;
|
||||
return w;
|
||||
}
|
||||
|
||||
Instruction *WordDecoder::decode(const std::vector<Byte> &v, Size &idx, trace_inst_t * trace_inst) {
|
||||
Word code(readWord(v, idx, inst_s/8));
|
||||
|
||||
// std::cout << "code: " << (int) code << " v: " << v << " indx: " << idx << "\n";
|
||||
|
||||
|
||||
Instruction &inst = * new Instruction();
|
||||
|
||||
// bool predicated = (code>>(n-1));
|
||||
bool predicated = false;
|
||||
if (predicated) { inst.setPred((code>>(inst_s-p-1))&pMask); }
|
||||
|
||||
Opcode op = (Opcode)((code>>shift_opcode)&opcode_mask);
|
||||
// std::cout << "opcode: " << op << "\n";
|
||||
inst.setOpcode(op);
|
||||
|
||||
bool usedImm(false);
|
||||
Word imeed, dest_bits, imm_bits, bit_11, bits_4_1, bit_10_5,
|
||||
bit_12, bits_19_12, bits_10_1, bit_20, unordered, func3;
|
||||
|
||||
// std::cout << "op: " << std::hex << op << " what " << instTable[op].iType << "\n";
|
||||
switch(instTable[op].iType)
|
||||
{
|
||||
case InstType::N_TYPE:
|
||||
break;
|
||||
case InstType::R_TYPE:
|
||||
inst.setPred((code>>shift_rs1) & reg_mask);
|
||||
inst.setDestReg((code>>shift_rd) & reg_mask);
|
||||
inst.setSrcReg((code>>shift_rs1) & reg_mask);
|
||||
inst.setSrcReg((code>>shift_rs2) & reg_mask);
|
||||
inst.setFunc3 ((code>>shift_func3) & func3_mask);
|
||||
inst.setFunc7 ((code>>shift_func7) & func7_mask);
|
||||
|
||||
trace_inst->valid_inst = true;
|
||||
trace_inst->rs1 = ((code>>shift_rs1) & reg_mask);
|
||||
trace_inst->rs2 = ((code>>shift_rs2) & reg_mask);
|
||||
trace_inst->rd = ((code>>shift_rd) & reg_mask);
|
||||
|
||||
break;
|
||||
case InstType::I_TYPE:
|
||||
inst.setDestReg((code>>shift_rd) & reg_mask);
|
||||
inst.setSrcReg((code>>shift_rs1) & reg_mask);
|
||||
inst.setFunc7 ((code>>shift_func7) & func7_mask);
|
||||
func3 = (code>>shift_func3) & func3_mask;
|
||||
inst.setFunc3 (func3);
|
||||
|
||||
if ((func3 == 5) && (op != L_INST))
|
||||
{
|
||||
// std::cout << "func7: " << func7 << "\n";
|
||||
inst.setSrcImm(signExt(((code>>shift_rs2)®_mask), 5, reg_mask));
|
||||
}
|
||||
else
|
||||
{
|
||||
inst.setSrcImm(signExt(code>>shift_i_immed, 12, i_immed_mask));
|
||||
}
|
||||
usedImm = true;
|
||||
|
||||
trace_inst->valid_inst = true;
|
||||
trace_inst->rs1 = ((code>>shift_rs1) & reg_mask);
|
||||
trace_inst->rd = ((code>>shift_rd) & reg_mask);
|
||||
|
||||
break;
|
||||
case InstType::S_TYPE:
|
||||
// std::cout << "************STORE\n";
|
||||
inst.setSrcReg((code>>shift_rs1) & reg_mask);
|
||||
inst.setSrcReg((code>>shift_rs2) & reg_mask);
|
||||
inst.setFunc3 ((code>>shift_func3) & func3_mask);
|
||||
|
||||
dest_bits = (code>>shift_rd) & reg_mask;
|
||||
imm_bits = (code>>shift_s_b_immed & func7_mask);
|
||||
imeed = (imm_bits << reg_s) | dest_bits;
|
||||
// std::cout << "ENC: store imeed: " << imeed << "\n";
|
||||
inst.setSrcImm(signExt(imeed, 12, s_immed_mask));
|
||||
usedImm = true;
|
||||
|
||||
trace_inst->valid_inst = true;
|
||||
trace_inst->rs1 = ((code>>shift_rs1) & reg_mask);
|
||||
trace_inst->rs2 = ((code>>shift_rs2) & reg_mask);
|
||||
|
||||
break;
|
||||
case InstType::B_TYPE:
|
||||
|
||||
inst.setSrcReg((code>>shift_rs1) & reg_mask);
|
||||
inst.setSrcReg((code>>shift_rs2) & reg_mask);
|
||||
inst.setFunc3 ((code>>shift_func3) & func3_mask);
|
||||
|
||||
dest_bits = (code>>shift_rd) & reg_mask;
|
||||
imm_bits = (code>>shift_s_b_immed & func7_mask);
|
||||
|
||||
bit_11 = dest_bits & 0x1;
|
||||
bits_4_1 = dest_bits >> 1;
|
||||
bit_10_5 = imm_bits & 0x3f;
|
||||
bit_12 = imm_bits >> 6;
|
||||
|
||||
imeed = 0 | (bits_4_1 << 1) | (bit_10_5 << 5) | (bit_11 << 11) | (bit_12 << 12);
|
||||
|
||||
inst.setSrcImm(signExt(imeed, 13, b_immed_mask));
|
||||
usedImm = true;
|
||||
|
||||
trace_inst->valid_inst = true;
|
||||
trace_inst->rs1 = ((code>>shift_rs1) & reg_mask);
|
||||
trace_inst->rs2 = ((code>>shift_rs2) & reg_mask);
|
||||
|
||||
break;
|
||||
case InstType::U_TYPE:
|
||||
inst.setDestReg((code>>shift_rd) & reg_mask);
|
||||
inst.setSrcImm(signExt(code>>shift_j_u_immed, 20, u_immed_mask));
|
||||
usedImm = true;
|
||||
trace_inst->valid_inst = true;
|
||||
trace_inst->rd = ((code>>shift_rd) & reg_mask);
|
||||
break;
|
||||
case InstType::J_TYPE:
|
||||
inst.setDestReg((code>>shift_rd) & reg_mask);
|
||||
|
||||
// [20 | 10:1 | 11 | 19:12]
|
||||
|
||||
unordered = code>>shift_j_u_immed;
|
||||
|
||||
bits_19_12 = unordered & 0xff;
|
||||
bit_11 = (unordered>>8) & 0x1;
|
||||
bits_10_1 = (unordered >> 9) & 0x3ff;
|
||||
bit_20 = (unordered>>19) & 0x1;
|
||||
|
||||
imeed = 0 | (bits_10_1 << 1) | (bit_11 << 11) | (bits_19_12 << 12) | (bit_20 << 20);
|
||||
|
||||
inst.setSrcImm(signExt(imeed, 20, j_immed_mask));
|
||||
usedImm = true;
|
||||
|
||||
trace_inst->valid_inst = true;
|
||||
trace_inst->rd = ((code>>shift_rd) & reg_mask);
|
||||
|
||||
break;
|
||||
defualt:
|
||||
cout << "Unrecognized argument class in word decoder.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (haveRefs && usedImm && refMap.find(idx-n/8) != refMap.end()) {
|
||||
Ref *srcRef = refMap[idx-n/8];
|
||||
|
||||
/* Create a new ref tied to this instruction. */
|
||||
Ref *r = new SimpleRef(srcRef->name, *(Addr*)inst.setSrcImm(),
|
||||
inst.hasRelImm());
|
||||
inst.setImmRef(*r);
|
||||
}
|
||||
|
||||
D(2, "Decoded 0x" << hex << code << " into: " << inst << '\n');
|
||||
|
||||
return &inst;
|
||||
}
|
||||
|
116
simX/include/archdef.h
Normal file
116
simX/include/archdef.h
Normal file
|
@ -0,0 +1,116 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __ARCHDEF_H
|
||||
#define __ARCHDEF_H
|
||||
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
#include <cstdlib>
|
||||
#include <stdio.h>
|
||||
#include "types.h"
|
||||
|
||||
namespace Harp {
|
||||
class ArchDef {
|
||||
public:
|
||||
struct Undefined {};
|
||||
|
||||
ArchDef(const std::string &s) {
|
||||
std::istringstream iss(s.c_str());
|
||||
|
||||
wordSize = 4;
|
||||
encChar = 'w';
|
||||
nRegs = 32;
|
||||
nPRegs = 0;
|
||||
nThds = 8;
|
||||
nWarps = 8;
|
||||
|
||||
extent = EXT_WARPS;
|
||||
|
||||
// if (!iss) { extent = EXT_NULL; return; }
|
||||
// iss >> encChar;
|
||||
// if (!iss) { extent = EXT_WORDSIZE; return; }
|
||||
// iss >> nRegs;
|
||||
// if (!iss) { extent = EXT_ENC; return; }
|
||||
// char sep;
|
||||
// iss >> sep >> nPRegs;
|
||||
// if (!iss || sep != '/') { extent = EXT_REGS; return; }
|
||||
// iss >> sep >> nThds;
|
||||
// if (!iss || sep != '/') { extent = EXT_PREGS; return; }
|
||||
// iss >> sep >> nWarps;
|
||||
// if (!iss || sep != '/') { extent = EXT_THDS; return; }
|
||||
// extent = EXT_WARPS;
|
||||
}
|
||||
|
||||
operator std::string () const {
|
||||
if (extent == EXT_NULL) return "";
|
||||
|
||||
std::ostringstream oss;
|
||||
if (extent >= EXT_WORDSIZE) oss << wordSize;
|
||||
if (extent >= EXT_ENC ) oss << encChar;
|
||||
if (extent >= EXT_REGS ) oss << nRegs;
|
||||
if (extent >= EXT_PREGS ) oss << '/' << nPRegs;
|
||||
if (extent >= EXT_THDS ) oss << '/' << nThds;
|
||||
if (extent >= EXT_WARPS ) oss << '/' << nWarps;
|
||||
|
||||
return oss.str();
|
||||
}
|
||||
|
||||
bool operator==(const ArchDef &r) const {
|
||||
Extent minExtent(r.extent > extent ? extent : r.extent);
|
||||
|
||||
// Can't be equal if we can't specify a binary encoding at all.
|
||||
if (minExtent < EXT_PREGS) return false;
|
||||
|
||||
if (minExtent >= EXT_WORDSIZE) { if (wordSize!=r.wordSize) return false; }
|
||||
if (minExtent >= EXT_ENC ) { if (encChar != r.encChar) return false; }
|
||||
if (minExtent >= EXT_REGS ) { if (nRegs != r.nRegs) return false; }
|
||||
if (minExtent >= EXT_PREGS ) { if (nPRegs != r.nPRegs) return false; }
|
||||
if (minExtent >= EXT_THDS ) { if (nThds != r.nThds) return false; }
|
||||
if (minExtent >= EXT_WARPS ) { if (nWarps != r.nWarps) return false; }
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool operator!=(const ArchDef &r) const { return !(*this == r); }
|
||||
|
||||
Size getWordSize() const {
|
||||
if (extent < EXT_WORDSIZE) throw Undefined(); else return wordSize;
|
||||
}
|
||||
|
||||
char getEncChar() const {
|
||||
if (extent<EXT_ENC||encChar=='x') throw Undefined(); else return encChar;
|
||||
}
|
||||
|
||||
RegNum getNRegs() const {
|
||||
if (extent < EXT_REGS) throw Undefined(); else return nRegs;
|
||||
}
|
||||
|
||||
RegNum getNPRegs() const {
|
||||
if (extent < EXT_PREGS) throw Undefined(); else return nPRegs;
|
||||
}
|
||||
|
||||
ThdNum getNThds() const {
|
||||
if (extent < EXT_THDS) throw Undefined(); else return nThds;
|
||||
}
|
||||
|
||||
ThdNum getNWarps() const {
|
||||
if (extent < EXT_WARPS) throw Undefined(); else return nWarps;
|
||||
}
|
||||
|
||||
private:
|
||||
enum Extent {
|
||||
EXT_NULL, EXT_WORDSIZE, EXT_ENC, EXT_REGS, EXT_PREGS, EXT_THDS, EXT_WARPS
|
||||
};
|
||||
|
||||
Extent extent;
|
||||
|
||||
Size wordSize;
|
||||
ThdNum nThds, nWarps;
|
||||
RegNum nRegs, nPRegs;
|
||||
char encChar;
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
61
simX/include/args.h
Normal file
61
simX/include/args.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __ARGS_H
|
||||
#define __ARGS_H
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <map>
|
||||
|
||||
namespace HarpTools {
|
||||
struct BadArg { BadArg(std::string s) : arg(s) {} std::string arg; };
|
||||
|
||||
class CommandLineArg {
|
||||
public:
|
||||
CommandLineArg(std::string s, std::string l, const char *helpText);
|
||||
CommandLineArg(std::string l, const char *helpText);
|
||||
virtual int read(int argc, char** argv) = 0;
|
||||
|
||||
static void readArgs(int argc, char **argv);
|
||||
static void clearArgs();
|
||||
static void showHelp(std::ostream &os);
|
||||
|
||||
private:
|
||||
static std::string helpString;
|
||||
static std::map<std::string, CommandLineArg *> longArgs;
|
||||
static std::map<std::string, CommandLineArg *> shortArgs;
|
||||
};
|
||||
|
||||
template <typename T> class CommandLineArgSetter : public CommandLineArg {
|
||||
public:
|
||||
CommandLineArgSetter(std::string s, std::string l, const char *ht, T &x) :
|
||||
CommandLineArg(s, l, ht), x(x) {}
|
||||
CommandLineArgSetter(std::string l, const char *ht, T &x) :
|
||||
CommandLineArg(l, ht), x(x) {}
|
||||
|
||||
int read(int argc, char **argv) {
|
||||
std::istringstream iss(argv[1]);
|
||||
iss >> x;
|
||||
return 1;
|
||||
}
|
||||
private:
|
||||
T &x;
|
||||
};
|
||||
|
||||
class CommandLineArgFlag : public CommandLineArg {
|
||||
public:
|
||||
CommandLineArgFlag(std::string s, std::string l, const char *ht, bool &x) :
|
||||
CommandLineArg(s, l, ht), x(x) { x = false; }
|
||||
CommandLineArgFlag(std::string l, const char *ht, bool &x) :
|
||||
CommandLineArg(l, ht), x(x) { x = false; }
|
||||
|
||||
int read(int argc, char **argv) { x = true; return 0; }
|
||||
private:
|
||||
bool &x;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
16
simX/include/asm-tokens.h
Normal file
16
simX/include/asm-tokens.h
Normal file
|
@ -0,0 +1,16 @@
|
|||
#ifndef HARPTOOL_ASM_TOKENS
|
||||
#define HARPTOOL_ASM_TOKENS
|
||||
|
||||
namespace HarpTools {
|
||||
enum AsmTokens {
|
||||
ASM_T_DIR_DEF = 1, ASM_T_DIR_PERM, ASM_T_DIR_BYTE, ASM_T_DIR_WORD,
|
||||
ASM_T_DIR_SPACE, ASM_T_DIR_STRING, ASM_T_DIR_ALIGN, ASM_T_DIR_ENTRY,
|
||||
ASM_T_DIR_GLOBAL, ASM_T_DIR_ARG_NUM, ASM_T_DIR_ARG_STRING,
|
||||
ASM_T_DIR_ARG_SYM, ASM_T_DIR_ARG_R, ASM_T_DIR_ARG_W, ASM_T_DIR_ARG_X,
|
||||
ASM_T_DIR_END, ASM_T_LABEL, ASM_T_PRED, ASM_T_INST,
|
||||
ASM_T_PREG, ASM_T_REG, ASM_T_REG_RA, ASM_T_REG_SP,
|
||||
ASM_T_REG_FP, ASM_T_LIT, ASM_T_SYM, ASM_T_PEXP
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
166
simX/include/core.h
Normal file
166
simX/include/core.h
Normal file
|
@ -0,0 +1,166 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __CORE_H
|
||||
#define __CORE_H
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <stack>
|
||||
#include <map>
|
||||
#include <set>
|
||||
|
||||
#include "types.h"
|
||||
#include "archdef.h"
|
||||
#include "enc.h"
|
||||
#include "mem.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "Vcache_simX.h"
|
||||
#include "verilated.h"
|
||||
|
||||
#ifdef VCD_OUTPUT
|
||||
#include <verilated_vcd_c.h>
|
||||
#endif
|
||||
|
||||
|
||||
#include "trace.h"
|
||||
|
||||
namespace Harp {
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
void reg_doWrite(Word cpuId, Word regNum);
|
||||
void reg_doRead(Word cpuId, Word regNum);
|
||||
#endif
|
||||
|
||||
template <typename T> class Reg {
|
||||
public:
|
||||
Reg(): cpuId(0), regNum(0), val(0) {}
|
||||
Reg(Word c, Word n): cpuId(c), regNum(n), val(0) {}
|
||||
|
||||
Reg &operator=(T r) { if (regNum) {val = r; doWrite();} return *this; }
|
||||
|
||||
operator T() const { doRead(); return val; }
|
||||
|
||||
void trunc(Size s) {
|
||||
Word mask((~0ull >> (sizeof(Word)-s)*8));
|
||||
val &= mask;
|
||||
}
|
||||
|
||||
private:
|
||||
Word cpuId, regNum;
|
||||
T val;
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
/* Access size here is 8, representing the register size of 64-bit cores. */
|
||||
void doWrite() const { reg_doWrite(cpuId, regNum); }
|
||||
void doRead() const { reg_doRead(cpuId, regNum); }
|
||||
#else
|
||||
void doWrite() const {}
|
||||
void doRead() const {}
|
||||
#endif
|
||||
};
|
||||
|
||||
// Entry in the IPDOM Stack
|
||||
struct DomStackEntry {
|
||||
DomStackEntry(
|
||||
unsigned p, const std::vector<std::vector<Reg<Word> > >& m,
|
||||
std::vector<bool> &tm, Word pc
|
||||
): pc(pc), fallThrough(false), uni(false)
|
||||
{
|
||||
std::cout << "DomStackEntry TMASK: ";
|
||||
for (unsigned i = 0; i < m.size(); ++i)
|
||||
{
|
||||
std::cout << " " << (!bool(m[i][p]) && tm[i]);
|
||||
tmask.push_back(!bool(m[i][p]) && tm[i]);
|
||||
}
|
||||
std::cout << "\n";
|
||||
}
|
||||
|
||||
DomStackEntry(const std::vector<bool> &tmask):
|
||||
tmask(tmask), fallThrough(true), uni(false) {}
|
||||
|
||||
bool fallThrough;
|
||||
bool uni;
|
||||
std::vector<bool> tmask;
|
||||
Word pc;
|
||||
};
|
||||
|
||||
class Warp;
|
||||
|
||||
class Core {
|
||||
public:
|
||||
Core(const ArchDef &a, Decoder &d, MemoryUnit &mem, Word id=0);
|
||||
|
||||
Vcache_simX * cache_simulator;
|
||||
|
||||
bool interrupt(Word r0);
|
||||
bool running() const;
|
||||
|
||||
void fetch();
|
||||
void decode();
|
||||
void scheduler();
|
||||
void gpr_read();
|
||||
void execute_unit();
|
||||
void load_store();
|
||||
|
||||
void step();
|
||||
|
||||
void printStats() const;
|
||||
|
||||
const ArchDef &a;
|
||||
Decoder &iDec;
|
||||
MemoryUnit &mem;
|
||||
|
||||
Word interruptEntry;
|
||||
|
||||
unsigned long steps;
|
||||
std::vector<Warp> w;
|
||||
std::map<Word, std::set<Warp *> > b; // Barriers
|
||||
};
|
||||
|
||||
class Warp {
|
||||
public:
|
||||
Warp(Core *c, Word id=0);
|
||||
|
||||
void step(trace_inst_t *);
|
||||
bool interrupt(Word r0);
|
||||
bool running() const { return activeThreads; }
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
bool getSupervisorMode() const { return supervisorMode; }
|
||||
#endif
|
||||
|
||||
void printStats() const;
|
||||
|
||||
struct MemAccess {
|
||||
MemAccess(bool w, Word a): wr(w), addr(a) {}
|
||||
bool wr;
|
||||
Word addr;
|
||||
};
|
||||
std::vector<MemAccess> memAccesses;
|
||||
|
||||
// private:
|
||||
Core *core;
|
||||
|
||||
Word pc, shadowPc, id;
|
||||
Size activeThreads, shadowActiveThreads;
|
||||
std::vector<std::vector<Reg<Word> > > reg;
|
||||
std::vector<std::vector<Reg<bool> > > pred;
|
||||
std::vector<Reg<uint16_t> > csr;
|
||||
|
||||
std::vector<bool> tmask, shadowTmask;
|
||||
std::stack<DomStackEntry> domStack;
|
||||
|
||||
std::vector<Word> shadowReg;
|
||||
std::vector<bool> shadowPReg;
|
||||
|
||||
bool interruptEnable, shadowInterruptEnable, supervisorMode,
|
||||
shadowSupervisorMode, spawned;
|
||||
|
||||
unsigned long steps, insts, loads, stores;
|
||||
|
||||
friend class Instruction;
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
30
simX/include/debug.h
Normal file
30
simX/include/debug.h
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Spring 2013
|
||||
*******************************************************************************/
|
||||
#ifndef __DEBUG_H
|
||||
#define __DEBUG_H
|
||||
|
||||
// #define USE_DEBUG 9
|
||||
#define USE_DEBUG -1
|
||||
|
||||
#ifdef USE_DEBUG
|
||||
#include <iostream>
|
||||
|
||||
#define D(lvl, x) do { \
|
||||
using namespace std; \
|
||||
if ((lvl) <= USE_DEBUG) { \
|
||||
cout << "DEBUG " << __FILE__ << ':' << dec << __LINE__ << ": " \
|
||||
<< x << endl; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define D_RAW(x) do { \
|
||||
std::cout << x; \
|
||||
} while (0)
|
||||
#else
|
||||
|
||||
#define D(lvl, x) do {} while(0)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
73
simX/include/enc.h
Normal file
73
simX/include/enc.h
Normal file
|
@ -0,0 +1,73 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __ENC_H
|
||||
#define __ENC_H
|
||||
|
||||
#include <map>
|
||||
|
||||
#include "types.h"
|
||||
#include "instruction.h"
|
||||
#include "obj.h"
|
||||
#include "trace.h"
|
||||
// } trace_inst_t;
|
||||
|
||||
namespace Harp {
|
||||
class DataChunk;
|
||||
class TextChunk;
|
||||
class Ref;
|
||||
|
||||
class Encoder {
|
||||
public:
|
||||
Encoder() {}
|
||||
virtual ~Encoder() {}
|
||||
|
||||
virtual Size encode(Ref *&ref, std::vector<Byte> &v, Size n,
|
||||
Instruction &i) = 0;
|
||||
void encodeChunk(DataChunk &dest, const TextChunk &src);
|
||||
};
|
||||
|
||||
class Decoder {
|
||||
public:
|
||||
Decoder() : haveRefs(false) {}
|
||||
Decoder(const std::vector<Ref*> &refVec) : haveRefs(true) {
|
||||
setRefs(refVec);
|
||||
}
|
||||
|
||||
virtual ~Decoder() {}
|
||||
|
||||
void setRefs(const std::vector<Ref*> &);
|
||||
void clearRefs() { refMap.clear(); }
|
||||
virtual Instruction *decode(const std::vector<Byte> &v, Size &n, trace_inst_t * trace_inst) = 0;
|
||||
virtual Instruction *decode(const std::vector<Byte> &v, Size &n) = 0;
|
||||
void decodeChunk(TextChunk &dest, const DataChunk &src);
|
||||
protected:
|
||||
bool haveRefs;
|
||||
std::map <Size, Ref*> refMap;
|
||||
};
|
||||
|
||||
class WordDecoder : public Decoder {
|
||||
public:
|
||||
WordDecoder(const ArchDef &);
|
||||
virtual Instruction *decode(const std::vector<Byte> &v, Size &n, trace_inst_t * trace_inst);
|
||||
virtual Instruction *decode(const std::vector<Byte> &v, Size &n) {printf("Not implemented\n");}
|
||||
|
||||
private:
|
||||
Size n, o, r, p, i1, i2, i3;
|
||||
Word oMask, rMask, pMask, i1Mask, i2Mask, i3Mask;
|
||||
|
||||
// FARES
|
||||
Size inst_s, opcode_s, reg_s, func3_s;
|
||||
Size shift_opcode, shift_rd, shift_rs1, shift_rs2, shift_func3, shift_func7;
|
||||
Size shift_j_u_immed, shift_s_b_immed, shift_i_immed;
|
||||
|
||||
|
||||
|
||||
Word reg_mask, func3_mask, func7_mask, opcode_mask, i_immed_mask,
|
||||
s_immed_mask, b_immed_mask, u_immed_mask, j_immed_mask;
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
123
simX/include/harpfloat.h
Normal file
123
simX/include/harpfloat.h
Normal file
|
@ -0,0 +1,123 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <iostream>
|
||||
|
||||
#define DEBUGMSG(x) do { \
|
||||
std::cout << __FILE__ << ':' <<__LINE__ << ": " << x << '\n'; \
|
||||
} while(0)
|
||||
#else
|
||||
#define DEBUGMSG(x) do { } while(0)
|
||||
#endif
|
||||
|
||||
namespace Harp {
|
||||
// This class serves to handle the strange-precision floating point that can
|
||||
// crop up in HARP.
|
||||
class Float {
|
||||
public:
|
||||
Float(Word_u bin, Size n): sz(n) {
|
||||
DEBUGMSG("Float(0x" << std::hex << bin << ", " << std::dec << n << ')');
|
||||
|
||||
bool sign(bin >> (n*8 - 1));
|
||||
|
||||
Size expSz;
|
||||
if (n < 4) {
|
||||
expSz = 5;
|
||||
} else if (n < 8) {
|
||||
expSz = 8;
|
||||
} else {
|
||||
expSz = 11;
|
||||
}
|
||||
|
||||
Size sigSz = n*8 - expSz - 1;
|
||||
|
||||
DEBUGMSG(" exp: " << std::dec << expSz <<
|
||||
" bits, sig: " << std::dec << sigSz << " bits.");
|
||||
|
||||
int exp = (bin >> sigSz) & ((1<<expSz) - 1);
|
||||
Word_u sig = bin & ((1llu<<sigSz) - 1);
|
||||
DEBUGMSG(" sig=" << std::dec << sig << " exp=" << exp);
|
||||
|
||||
if (exp == 0) {
|
||||
// Subnormal
|
||||
d = sig / pow(2, ((1<<(expSz-1))-2)) / pow(2, sigSz);
|
||||
DEBUGMSG(" Denorm.");
|
||||
} else if (exp == ((1<<expSz) - 1)) {
|
||||
// Infinity
|
||||
d = HUGE_VAL;
|
||||
DEBUGMSG(" Inf.");
|
||||
} else {
|
||||
// Normalized, implied 1.
|
||||
exp -= (1<<(expSz - 1)) - 1;
|
||||
d = pow(2.0, exp - int(sigSz)) * double((1ll << sigSz) + sig);
|
||||
DEBUGMSG(" Norm, exp=" << exp);
|
||||
}
|
||||
|
||||
if (sign) d = -d;
|
||||
|
||||
DEBUGMSG("Set to " << d);
|
||||
}
|
||||
|
||||
Float(double d, Size n): sz(n), d(d) { DEBUGMSG("Float(double, size)"); }
|
||||
|
||||
operator Word_u() {
|
||||
DEBUGMSG("Float -> Word_u: " << d);
|
||||
Size expSz;
|
||||
if (sz < 4) {
|
||||
expSz = 5;
|
||||
} else if (sz < 8) {
|
||||
expSz = 8;
|
||||
} else {
|
||||
expSz = 11;
|
||||
}
|
||||
|
||||
Size sigSz = 8*sz - expSz - 1;
|
||||
|
||||
bool sign(d < 0);
|
||||
|
||||
bool inf(isinf(d)), zero(d == 0.0);
|
||||
int exp;
|
||||
|
||||
if (!inf && !zero) exp = floor(log2(fabs(d)));
|
||||
|
||||
Word_u rval;
|
||||
if (inf) {
|
||||
// Infinity
|
||||
DEBUGMSG(" Inf.");
|
||||
rval = ((1llu<<expSz)-1llu)<<sigSz;
|
||||
} else if (!zero && abs(exp) < (1<<(expSz-1)) - 1) {
|
||||
// Normalized with implied 1.
|
||||
Word_u sig = (fabs(d) * pow(2.0, -exp) - 1.0) * pow(2.0, sigSz);
|
||||
DEBUGMSG(" Norm, exp=" << exp << ", sig=" << sig);
|
||||
rval = ((((exp + ((1llu<<(expSz-1)) - 1llu))
|
||||
&((1llu<<expSz)-1llu)))<<sigSz) | sig;
|
||||
} else if (!zero && exp > -(1<<(expSz-1)) - sigSz) {
|
||||
// Subnormal number.
|
||||
Word_u sig = round(fabs(d)*pow(2.0,((1<<(expSz-1))-2))*pow(2.0, sigSz));
|
||||
DEBUGMSG(" Denorm, exp=" << exp << ", sig=" << sig);
|
||||
rval = sig;
|
||||
} else {
|
||||
// Zero.
|
||||
rval = 0;
|
||||
}
|
||||
|
||||
if (sign) rval |= 1llu<<(sz*8 - 1);
|
||||
|
||||
DEBUGMSG(" Returning 0x" << std::hex << rval);
|
||||
|
||||
return rval;
|
||||
}
|
||||
|
||||
operator double() { DEBUGMSG("Float->double " << d); return d; }
|
||||
|
||||
private:
|
||||
double d;
|
||||
Size sz;
|
||||
};
|
||||
};
|
37
simX/include/help.h
Normal file
37
simX/include/help.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __HELP_H
|
||||
#define __HELP_H
|
||||
|
||||
/* Help messages. */
|
||||
namespace HarpTools {
|
||||
namespace Help {
|
||||
const char *mainHelp =
|
||||
"--help, -h, no arguments\n"
|
||||
" Print this message.\n"
|
||||
"-E, --emu; -A, --asm; -L, --ld; -D, --disasm\n"
|
||||
" Invoke the emulator, assembler, linker, and disassembler, "
|
||||
"respectively.\n"
|
||||
"<mode> --help\n"
|
||||
" Display contextual help.\n",
|
||||
*emuHelp = "HARP Emulator command line arguments:\n"
|
||||
" -c, --core <filename> RAM image\n"
|
||||
" -a, --arch <arch string> Architecture string\n"
|
||||
" -s, --stats Print stats on exit.\n"
|
||||
" -b, --basic Disable virtual memory.\n"
|
||||
" -i, --batch Disable console input.\n",
|
||||
*asmHelp = "HARP Assembler command line arguments:\n"
|
||||
" -a, --arch <arch string>\n"
|
||||
" -o, --output <filename>\n",
|
||||
*ldHelp = "HARP Linker command line arguments:\n"
|
||||
" -o, --output <filename>\n"
|
||||
" -a, --arch <filename>\n"
|
||||
" -f, --format <foramt string>\n"
|
||||
" --offset <bytes>\n",
|
||||
*disasmHelp = "HARP Disassembler command line arguments:\n"
|
||||
" -a, --arch <arch string> Architecture string.\n"
|
||||
" -o, --output <filename> Output filename.\n";
|
||||
};
|
||||
};
|
||||
#endif
|
144
simX/include/instruction.h
Normal file
144
simX/include/instruction.h
Normal file
|
@ -0,0 +1,144 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __INSTRUCTION_H
|
||||
#define __INSTRUCTION_H
|
||||
|
||||
#include <map>
|
||||
#include <iostream>
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace Harp {
|
||||
class Warp;
|
||||
class Ref;
|
||||
|
||||
enum Opcode
|
||||
{
|
||||
NOP = 0,
|
||||
R_INST = 51,
|
||||
L_INST = 3,
|
||||
I_INST = 19,
|
||||
S_INST = 35,
|
||||
B_INST = 99,
|
||||
LUI_INST = 55,
|
||||
AUIPC_INST = 23,
|
||||
JAL_INST = 111,
|
||||
JALR_INST = 103,
|
||||
SYS_INST = 115,
|
||||
TRAP = 0x7f,
|
||||
FENCE = 0x0f,
|
||||
PJ_INST = 0x7b,
|
||||
GPGPU = 0x6b
|
||||
};
|
||||
|
||||
enum InstType { N_TYPE, R_TYPE, I_TYPE, S_TYPE, B_TYPE, U_TYPE, J_TYPE};
|
||||
|
||||
// We build a table of instruction information out of this.
|
||||
struct InstTableEntry_t {
|
||||
const char *opString;
|
||||
bool controlFlow, relAddress, allSrcArgs, privileged;
|
||||
InstType iType;
|
||||
|
||||
};
|
||||
|
||||
static std::map<int, struct InstTableEntry_t> instTable =
|
||||
{
|
||||
{Opcode::NOP, {"nop" , false, false, false, false, InstType::N_TYPE }},
|
||||
{Opcode::R_INST, {"r_type", false, false, false, false, InstType::R_TYPE }},
|
||||
{Opcode::L_INST, {"load" , false, false, false, false, InstType::I_TYPE }},
|
||||
{Opcode::I_INST, {"i_type", false, false, false, false, InstType::I_TYPE }},
|
||||
{Opcode::S_INST, {"store" , false, false, false, false, InstType::S_TYPE }},
|
||||
{Opcode::B_INST, {"branch", true , false, false, false, InstType::B_TYPE }},
|
||||
{Opcode::LUI_INST, {"lui" , false, false, false, false, InstType::U_TYPE }},
|
||||
{Opcode::AUIPC_INST, {"auipc" , false, false, false, false, InstType::U_TYPE }},
|
||||
{Opcode::JAL_INST, {"jal" , true , false, false, false, InstType::J_TYPE }},
|
||||
{Opcode::JALR_INST, {"jalr" , true , false, false, false, InstType::I_TYPE }},
|
||||
{Opcode::SYS_INST, {"SYS" , true , false, false, false, InstType::I_TYPE }},
|
||||
{Opcode::TRAP, {"TRAP" , true , false, false, false, InstType::I_TYPE }},
|
||||
{Opcode::FENCE, {"fence" , true , false, false, false, InstType::I_TYPE }},
|
||||
{Opcode::PJ_INST, {"pred j", true , false, false, false, InstType::R_TYPE }},
|
||||
{Opcode::GPGPU, {"gpgpu" , false, false, false, false, InstType::R_TYPE }}
|
||||
};
|
||||
|
||||
static const Size MAX_REG_SOURCES(3);
|
||||
static const Size MAX_PRED_SOURCES(2);
|
||||
|
||||
class Instruction;
|
||||
|
||||
struct DivergentBranchException {};
|
||||
struct DomainException {};
|
||||
|
||||
std::ostream &operator<<(std::ostream &, Instruction &);
|
||||
|
||||
class Instruction {
|
||||
public:
|
||||
Instruction() :
|
||||
predicated(false), nRsrc(0), nPsrc(0), immsrcPresent(false),
|
||||
rdestPresent(false), pdestPresent(false), refLiteral(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
void executeOn(Warp &warp);
|
||||
friend std::ostream &operator<<(std::ostream &, Instruction &);
|
||||
|
||||
/* Setters used to "craft" the instruction. */
|
||||
void setOpcode (Opcode opc) { op = opc; }
|
||||
void setPred (RegNum pReg) { predicated = true; pred = pReg; }
|
||||
void setDestReg (RegNum destReg) { rdestPresent = true; rdest = destReg; }
|
||||
void setSrcReg (RegNum srcReg) { rsrc[nRsrc++] = srcReg; }
|
||||
void setFunc3 (Word func3) { this->func3 = func3; }
|
||||
void setFunc7 (Word func7) { this->func7 = func7; }
|
||||
void setDestPReg(RegNum dPReg) { pdestPresent = true; pdest = dPReg; }
|
||||
void setSrcPReg (RegNum srcPReg) { psrc[nPsrc++] = srcPReg; }
|
||||
Word *setSrcImm () { immsrcPresent = true; immsrc = 0xa5; return &immsrc;}
|
||||
void setSrcImm (Word srcImm) { immsrcPresent = true; immsrc = srcImm; }
|
||||
void setImmRef (Ref &r) { refLiteral = &r; }
|
||||
|
||||
/* Getters used by encoders. */
|
||||
Opcode getOpcode() const { return op; }
|
||||
bool hasPred() const { return predicated; }
|
||||
RegNum getPred() const { return pred; }
|
||||
RegNum getNRSrc() const { return nRsrc; }
|
||||
RegNum getRSrc(RegNum i) const { return rsrc[i]; }
|
||||
RegNum getNPSrc() const { return nPsrc; }
|
||||
RegNum getPSrc(RegNum i) const { return psrc[i]; }
|
||||
bool hasRDest() const { return rdestPresent; }
|
||||
RegNum getRDest() const { return rdest; }
|
||||
bool hasPDest() const { return pdestPresent; }
|
||||
RegNum getPDest() const { return pdest; }
|
||||
bool hasImm() const { return immsrcPresent; }
|
||||
Word getImm() const { return immsrc; }
|
||||
bool hasRefLiteral() const { return refLiteral != NULL; }
|
||||
Ref *getRefLiteral() const { return refLiteral; }
|
||||
|
||||
/* Getters used as table lookup. */
|
||||
bool hasRelImm() const { return (*(instTable.find(op))).second.relAddress; }
|
||||
|
||||
private:
|
||||
bool predicated;
|
||||
RegNum pred;
|
||||
Opcode op;
|
||||
int nRsrc, nPsrc;
|
||||
RegNum rsrc[MAX_REG_SOURCES], psrc[MAX_PRED_SOURCES];
|
||||
bool immsrcPresent;
|
||||
Word immsrc;
|
||||
Word func3;
|
||||
Word func7;
|
||||
bool rdestPresent, pdestPresent;
|
||||
RegNum rdest, pdest;
|
||||
Ref *refLiteral;
|
||||
|
||||
public:
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
// static struct InstTableEntry {
|
||||
// const char *opString;
|
||||
// bool controlFlow, relAddress, allSrcArgs, privileged;
|
||||
// InstType iType;
|
||||
// };
|
432
simX/include/mem.h
Normal file
432
simX/include/mem.h
Normal file
|
@ -0,0 +1,432 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __MEM_H
|
||||
#define __MEM_H
|
||||
|
||||
#include <ostream>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include <map>
|
||||
#include <pthread.h>
|
||||
|
||||
#include "types.h"
|
||||
|
||||
namespace Harp {
|
||||
void *consoleInputThread(void *);
|
||||
struct BadAddress {};
|
||||
|
||||
class MemDevice {
|
||||
public:
|
||||
virtual ~MemDevice() {}
|
||||
virtual Size size() const = 0;
|
||||
virtual Word read(Addr) = 0;
|
||||
virtual void write(Addr, Word) = 0;
|
||||
virtual Byte *base() { return NULL; } /* Null if unavailable. */
|
||||
};
|
||||
|
||||
class RamMemDevice : public MemDevice {
|
||||
public:
|
||||
RamMemDevice(Size size, Size wordSize);
|
||||
RamMemDevice(const char* filename, Size wordSize);
|
||||
~RamMemDevice() {}
|
||||
|
||||
virtual Size size() const { return contents.size(); };
|
||||
virtual Word read(Addr);
|
||||
virtual void write(Addr, Word);
|
||||
virtual Byte *base() { return &contents[0]; }
|
||||
|
||||
protected:
|
||||
Size wordSize;
|
||||
std::vector<Byte> contents;
|
||||
};
|
||||
|
||||
class RomMemDevice : public RamMemDevice {
|
||||
public:
|
||||
RomMemDevice(const char* filename, Size wordSize) :
|
||||
RamMemDevice(filename, wordSize) {}
|
||||
RomMemDevice(Size size, Size wordSize) :
|
||||
RamMemDevice(size, wordSize) {}
|
||||
~RomMemDevice();
|
||||
|
||||
virtual void write(Addr, Word);
|
||||
};
|
||||
|
||||
class Core;
|
||||
class ConsoleMemDevice : public MemDevice {
|
||||
public:
|
||||
ConsoleMemDevice(Size wS, std::ostream &o, Core &core, bool batch = false);
|
||||
~ConsoleMemDevice() {}
|
||||
|
||||
//virtual Size wordSize() const { return wordSize; }
|
||||
virtual Size size() const { return wordSize; }
|
||||
virtual Word read(Addr) { pthread_mutex_lock(&cBufLock);
|
||||
char c = cBuf.front();
|
||||
cBuf.pop();
|
||||
pthread_mutex_unlock(&cBufLock);
|
||||
return Word(c); }
|
||||
virtual void write(Addr a, Word w) { output << char(w); }
|
||||
|
||||
void poll();
|
||||
|
||||
friend void *Harp::consoleInputThread(void *);
|
||||
|
||||
private:
|
||||
std::ostream &output;
|
||||
Size wordSize;
|
||||
Core &core;
|
||||
|
||||
std::queue<char> cBuf;
|
||||
pthread_mutex_t cBufLock;
|
||||
};
|
||||
|
||||
class DiskControllerMemDevice : public MemDevice {
|
||||
public:
|
||||
DiskControllerMemDevice(Size wordSize, Size blockSize, Core &c) :
|
||||
wordSize(wordSize), blockSize(blockSize), core(c), disks() {}
|
||||
|
||||
void addDisk(Byte *file, Size n) { disks.push_back(Disk(file, n)); }
|
||||
|
||||
virtual Size size() const { return wordSize * 6; }
|
||||
virtual Word read(Addr);
|
||||
virtual void write(Addr, Word);
|
||||
|
||||
private:
|
||||
Word curDisk, curBlock, nBlocks, physAddr, command, status;
|
||||
enum Status { OK = 0, INVALID_DISK, INVALID_BLOCK };
|
||||
struct Disk {
|
||||
Disk(Byte *f, Size n): file(f), blocks(n) {}
|
||||
Byte *file;
|
||||
Size blocks;
|
||||
};
|
||||
std::vector <Disk> disks;
|
||||
Core &core;
|
||||
Size wordSize, blockSize;;
|
||||
};
|
||||
|
||||
class MemoryUnit {
|
||||
public:
|
||||
MemoryUnit(Size pageSize, Size addrBytes, bool disableVm = false) :
|
||||
pageSize(pageSize), addrBytes(addrBytes), ad(), disableVm(disableVm)
|
||||
{
|
||||
if (!disableVm)
|
||||
tlb[0] = TLBEntry(0, 077);
|
||||
}
|
||||
void attach(MemDevice &m, Addr base);
|
||||
|
||||
//Size wordSize();
|
||||
struct PageFault {
|
||||
PageFault(Addr a, bool nf) : faultAddr(a), notFound(nf) {}
|
||||
Addr faultAddr;
|
||||
bool notFound;
|
||||
}; /* Thrown on page fault. */
|
||||
|
||||
Word read(Addr, bool sup); /* For data accesses. */
|
||||
Word fetch(Addr, bool sup); /* For instruction accesses. */
|
||||
Byte *getPtr(Addr, Size);
|
||||
void write(Addr, Word, bool sup, Size);
|
||||
void tlbAdd(Addr virt, Addr phys, Word flags);
|
||||
void tlbRm(Addr va);
|
||||
void tlbFlush() { tlb.clear(); }
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
Addr virtToPhys(Addr va);
|
||||
#endif
|
||||
|
||||
private:
|
||||
class ADecoder {
|
||||
public:
|
||||
ADecoder() : zeroChild(NULL), oneChild(NULL), range(0) {}
|
||||
ADecoder(MemDevice &md, Size range) :
|
||||
zeroChild(NULL), oneChild(NULL), range(range), md(&md) {}
|
||||
Byte *getPtr(Addr a, Size sz, Size wordSize);
|
||||
Word read(Addr a, bool sup, Size wordSize);
|
||||
void write(Addr a, Word w, bool sup, Size wordSize);
|
||||
void map(Addr a, MemDevice &md, Size range, Size bit);
|
||||
private:
|
||||
MemDevice &doLookup(Addr a, Size &bit);
|
||||
ADecoder *zeroChild, *oneChild;
|
||||
MemDevice *md;
|
||||
Size range;
|
||||
};
|
||||
|
||||
ADecoder ad;
|
||||
|
||||
struct TLBEntry {
|
||||
TLBEntry() {}
|
||||
TLBEntry(Word pfn, Word flags): pfn(pfn), flags(flags) {}
|
||||
Word flags;
|
||||
Word pfn;
|
||||
};
|
||||
|
||||
std::map<Addr, TLBEntry> tlb;
|
||||
TLBEntry tlbLookup(Addr vAddr, Word flagMask);
|
||||
|
||||
Size pageSize, addrBytes;
|
||||
|
||||
bool disableVm;
|
||||
};
|
||||
|
||||
|
||||
class RAM : public MemDevice {
|
||||
public:
|
||||
uint8_t* mem[1 << 12];
|
||||
|
||||
RAM(){
|
||||
for(uint32_t i = 0;i < (1 << 12);i++) mem[i] = NULL;
|
||||
}
|
||||
~RAM(){
|
||||
for(uint32_t i = 0;i < (1 << 12);i++) if(mem[i]) delete [] mem[i];
|
||||
}
|
||||
|
||||
void clear(){
|
||||
for(uint32_t i = 0;i < (1 << 12);i++)
|
||||
{
|
||||
if(mem[i])
|
||||
{
|
||||
delete mem[i];
|
||||
mem[i] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t* get(uint32_t address){
|
||||
|
||||
if(mem[address >> 20] == NULL) {
|
||||
uint8_t* ptr = new uint8_t[1024*1024];
|
||||
for(uint32_t i = 0;i < 1024*1024;i+=4) {
|
||||
ptr[i + 0] = 0xaa;
|
||||
ptr[i + 1] = 0xbb;
|
||||
ptr[i + 2] = 0xcc;
|
||||
ptr[i + 3] = 0xdd;
|
||||
}
|
||||
mem[address >> 20] = ptr;
|
||||
}
|
||||
return &mem[address >> 20][address & 0xFFFFF];
|
||||
}
|
||||
|
||||
void read(uint32_t address,uint32_t length, uint8_t *data){
|
||||
for(unsigned i = 0;i < length;i++){
|
||||
data[i] = (*this)[address + i];
|
||||
}
|
||||
}
|
||||
|
||||
void write(uint32_t address,uint32_t length, uint8_t *data){
|
||||
for(unsigned i = 0;i < length;i++){
|
||||
(*this)[address + i] = data[i];
|
||||
}
|
||||
}
|
||||
|
||||
virtual Size size() const { return (1<<31); };
|
||||
|
||||
void getBlock(uint32_t address, uint8_t *data)
|
||||
{
|
||||
uint32_t block_number = address & 0xffffff00; // To zero out block offset
|
||||
uint32_t bytes_num = 256;
|
||||
|
||||
this->read(block_number, bytes_num, data);
|
||||
}
|
||||
|
||||
void getWord(uint32_t address, uint32_t * data)
|
||||
{
|
||||
data[0] = 0;
|
||||
|
||||
uint8_t first = *get(address + 0);
|
||||
uint8_t second = *get(address + 1);
|
||||
uint8_t third = *get(address + 2);
|
||||
uint8_t fourth = *get(address + 3);
|
||||
|
||||
|
||||
// std::cout << std::hex;
|
||||
// std::cout << "RAM: READING ADDRESS " << address + 0 << " DATA: " << (uint32_t) first << "\n";
|
||||
// std::cout << "RAM: READING ADDRESS " << address + 1 << " DATA: " << (uint32_t) second << "\n";
|
||||
// std::cout << "RAM: READING ADDRESS " << address + 2 << " DATA: " << (uint32_t) third << "\n";
|
||||
// std::cout << "RAM: READING ADDRESS " << address + 3 << " DATA: " << (uint32_t) fourth << "\n";
|
||||
|
||||
data[0] = (data[0] << 0) | fourth;
|
||||
data[0] = (data[0] << 8) | third;
|
||||
data[0] = (data[0] << 8) | second;
|
||||
data[0] = (data[0] << 8) | first;
|
||||
// data[0] = (data[0] << 0) | first;
|
||||
// data[0] = (data[0] << 8) | second;
|
||||
// data[0] = (data[0] << 8) | third;
|
||||
// data[0] = (data[0] << 8) | fourth;
|
||||
|
||||
// std::cout << "FINAL DATA: " << data[0] << "\n";
|
||||
|
||||
}
|
||||
|
||||
void writeWord(uint32_t address, uint32_t * data)
|
||||
{
|
||||
uint32_t data_to_write = *data;
|
||||
|
||||
uint32_t byte_mask = 0xFF;
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
// std::cout << "RAM: DATA TO WRITE " << data_to_write << "\n";
|
||||
// std::cout << "RAM: DATA TO MASK " << byte_mask << "\n";
|
||||
// std::cout << "RAM: WRITING ADDRESS " << address + i << " DATA: " << (data_to_write & byte_mask) << "\n";
|
||||
(*this)[address + i] = data_to_write & byte_mask;
|
||||
data_to_write = data_to_write >> 8;
|
||||
}
|
||||
}
|
||||
|
||||
void writeHalf(uint32_t address, uint32_t * data)
|
||||
{
|
||||
uint32_t data_to_write = *data;
|
||||
|
||||
uint32_t byte_mask = 0xFF;
|
||||
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
// std::cout << "RAM: DATA TO WRITE " << data_to_write << "\n";
|
||||
// std::cout << "RAM: DATA TO MASK " << byte_mask << "\n";
|
||||
// std::cout << "RAM: WRITING ADDRESS " << address + i << " DATA: " << (data_to_write & byte_mask) << "\n";
|
||||
(*this)[address + i] = data_to_write & byte_mask;
|
||||
data_to_write = data_to_write >> 8;
|
||||
}
|
||||
}
|
||||
|
||||
void writeByte(uint32_t address, uint32_t * data)
|
||||
{
|
||||
uint32_t data_to_write = *data;
|
||||
|
||||
uint32_t byte_mask = 0xFF;
|
||||
|
||||
(*this)[address] = data_to_write & byte_mask;
|
||||
data_to_write = data_to_write >> 8;
|
||||
|
||||
}
|
||||
|
||||
uint8_t& operator [](uint32_t address) {
|
||||
return *get(address);
|
||||
}
|
||||
|
||||
virtual void write(Addr addr, Word w)
|
||||
{
|
||||
uint32_t word = (uint32_t) w;
|
||||
writeWord(addr, &word);
|
||||
}
|
||||
|
||||
virtual Word read(Addr addr)
|
||||
{
|
||||
uint32_t w;
|
||||
getWord(addr, &w);
|
||||
// std::cout << "RAM: read -> " << w << " at addr: " << addr << "\n";
|
||||
return (Word) w;
|
||||
}
|
||||
|
||||
virtual Byte *base()
|
||||
{
|
||||
return (Byte *) this->get(0);
|
||||
}
|
||||
|
||||
// MEMORY UTILS
|
||||
|
||||
uint32_t hti_old(char c) {
|
||||
if (c >= 'A' && c <= 'F')
|
||||
return c - 'A' + 10;
|
||||
if (c >= 'a' && c <= 'f')
|
||||
return c - 'a' + 10;
|
||||
return c - '0';
|
||||
}
|
||||
|
||||
uint32_t hToI_old(char *c, uint32_t size) {
|
||||
uint32_t value = 0;
|
||||
for (uint32_t i = 0; i < size; i++) {
|
||||
value += hti_old(c[i]) << ((size - i - 1) * 4);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void loadHexImpl(std::string path) {
|
||||
this->clear();
|
||||
FILE *fp = fopen(&path[0], "r");
|
||||
if(fp == 0){
|
||||
std::cout << path << " not found" << std::endl;
|
||||
}
|
||||
//Preload 0x0 <-> 0x80000000 jumps
|
||||
((uint32_t*)this->get(0))[0] = 0xf1401073;
|
||||
((uint32_t*)this->get(0))[1] = 0xf1401073;
|
||||
|
||||
// ((uint32_t*)this->get(0))[1] = 0xf1401073;
|
||||
((uint32_t*)this->get(0))[2] = 0x30101073;
|
||||
|
||||
((uint32_t*)this->get(0))[3] = 0x800000b7;
|
||||
((uint32_t*)this->get(0))[4] = 0x000080e7;
|
||||
|
||||
((uint32_t*)this->get(0x80000000))[0] = 0x00000097;
|
||||
|
||||
((uint32_t*)this->get(0xb0000000))[0] = 0x01C02023;
|
||||
// F00FFF10
|
||||
((uint32_t*)this->get(0xf00fff10))[0] = 0x12345678;
|
||||
|
||||
|
||||
|
||||
|
||||
fseek(fp, 0, SEEK_END);
|
||||
uint32_t size = ftell(fp);
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
char* content = new char[size];
|
||||
int x = fread(content, 1, size, fp);
|
||||
|
||||
if (!x) { std::cout << "COULD NOT READ FILE\n"; exit(1);}
|
||||
|
||||
int offset = 0;
|
||||
char* line = content;
|
||||
// std::cout << "WHTA\n";
|
||||
while (1) {
|
||||
if (line[0] == ':') {
|
||||
uint32_t byteCount = hToI_old(line + 1, 2);
|
||||
uint32_t nextAddr = hToI_old(line + 3, 4) + offset;
|
||||
uint32_t key = hToI_old(line + 7, 2);
|
||||
switch (key) {
|
||||
case 0:
|
||||
for (uint32_t i = 0; i < byteCount; i++) {
|
||||
|
||||
unsigned add = nextAddr + i;
|
||||
|
||||
*(this->get(add)) = hToI_old(line + 9 + i * 2, 2);
|
||||
// std::cout << "lhi: Address: " << std::hex <<(add) << "\tValue: " << std::hex << hToI_old(line + 9 + i * 2, 2) << std::endl;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
// cout << offset << endl;
|
||||
offset = hToI_old(line + 9, 4) << 4;
|
||||
break;
|
||||
case 4:
|
||||
// cout << offset << endl;
|
||||
offset = hToI_old(line + 9, 4) << 16;
|
||||
break;
|
||||
default:
|
||||
// cout << "??? " << key << endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
while (*line != '\n' && size != 0) {
|
||||
line++;
|
||||
size--;
|
||||
}
|
||||
if (size <= 1)
|
||||
break;
|
||||
line++;
|
||||
size--;
|
||||
}
|
||||
|
||||
|
||||
if (content) delete[] content;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
210
simX/include/obj.h
Normal file
210
simX/include/obj.h
Normal file
|
@ -0,0 +1,210 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __OBJ_H
|
||||
#define __OBJ_H
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "types.h"
|
||||
#include "archdef.h"
|
||||
#include "instruction.h"
|
||||
#include "enc.h"
|
||||
#include "asm-tokens.h"
|
||||
|
||||
namespace Harp {
|
||||
class Decoder;
|
||||
class Encoder;
|
||||
|
||||
class Ref {
|
||||
public:
|
||||
std::string name;
|
||||
Ref(const std::string &n, bool r, Size ib = 0):
|
||||
name(n), bound(false), relative(r), ibase(ib) { }
|
||||
virtual ~Ref() { }
|
||||
virtual void bind(Addr addr, Addr base = 0) = 0;
|
||||
virtual Addr getAddr() const = 0;
|
||||
|
||||
bool bound, relative;
|
||||
Size ibase;
|
||||
};
|
||||
|
||||
/* Used in not-yet-encoded code objects, plain old data. */
|
||||
class SimpleRef : public Ref {
|
||||
public:
|
||||
SimpleRef(const std::string &name, Addr &addr, bool rel = false) :
|
||||
Ref(name, rel), addr(addr) { }
|
||||
virtual void bind(Addr addr, Addr base = 0) {
|
||||
std::cout << "Attempted to bind a SimpleRef.\n";
|
||||
exit(1);
|
||||
}
|
||||
virtual Addr getAddr() const { return this->addr; }
|
||||
Byte *getAddrPtr() { return (Byte*)&addr; }
|
||||
|
||||
private:
|
||||
Addr &addr;
|
||||
};
|
||||
|
||||
// /* Used in already-encoded code objects. */
|
||||
// class OffsetRef : public Ref {
|
||||
// public:
|
||||
// OffsetRef(
|
||||
// const std::string &name, std::vector<Byte> &v, Size offset, Size bits,
|
||||
// Size ws, bool rel = false, Size ibase = 0
|
||||
// ) : Ref(name, rel, ibase), data(v), offset(offset), bits(bits), wordSize(ws)
|
||||
// {}
|
||||
|
||||
// virtual void bind(Addr addr, Addr base = 0) {
|
||||
// Size bytes(bits/8), remainder(bits%8);
|
||||
|
||||
// if (relative) {
|
||||
// addr = addr - base;
|
||||
// Word_s addr_s(addr);
|
||||
// if ((addr_s >> bits) != ~0ull && (addr_s >> bits) != 0) goto noFit;
|
||||
// } else {
|
||||
// Addr mask = (1ull<<bits)-1;
|
||||
// if (addr > mask) goto noFit;
|
||||
// }
|
||||
|
||||
// { Byte mask((1ull<<remainder) - 1);
|
||||
// Size i;
|
||||
// for (i = 0; i < bytes; i++) {
|
||||
// data[offset+i] = addr & 0xff;
|
||||
// addr >>= 8;
|
||||
// }
|
||||
// data[offset+i] &= ~mask;
|
||||
// data[offset+i] |= (addr&mask);
|
||||
// bound = true;
|
||||
// }
|
||||
|
||||
// return;
|
||||
// noFit:
|
||||
// std::cout << "Attempt to bind a " << bits << "-bit "
|
||||
// << (relative?"":"non-") << "relative symbol to an address"
|
||||
// " it cannot reach.\n";
|
||||
// exit(1);
|
||||
// }
|
||||
|
||||
// virtual Addr getAddr() const {
|
||||
// Size bytes = bits/8, remainder = bits%8;
|
||||
// Byte mask((1<<remainder)-1);
|
||||
// Addr a(data[offset]&mask);
|
||||
|
||||
// for (Size i = 0; i < bytes-1; i++) {
|
||||
// a |= data[offset + bytes - i - 1];
|
||||
// a <<= 8;
|
||||
// }
|
||||
// return a;
|
||||
// }
|
||||
|
||||
// Size getOffset() const { return offset; }
|
||||
// Size getBits() const { return bits; }
|
||||
|
||||
// private:
|
||||
// std::vector<Byte> &data;
|
||||
// Size offset, bits, wordSize;
|
||||
// };
|
||||
|
||||
// class Chunk {
|
||||
// public:
|
||||
// Chunk(std::string n, Size a = 0, Word f = 0) :
|
||||
// name(n), alignment(a), bound(false), flags(f), global(false) {}
|
||||
// virtual ~Chunk() { for (Size i = 0; i < refs.size(); i++) delete refs[i]; }
|
||||
// void bind(Addr a) { address = a; bound = true; }
|
||||
// void setGlobal() { global = true; }
|
||||
// bool isGlobal() const { return global; }
|
||||
// std::string name;
|
||||
// Size alignment;
|
||||
// bool bound, global;
|
||||
// Addr address;
|
||||
// Word flags;
|
||||
// std::vector<Ref*> refs;
|
||||
// };
|
||||
|
||||
// class TextChunk : public Chunk {
|
||||
// public:
|
||||
// TextChunk(std::string n, Size a = 0, Word f = 0)
|
||||
// : Chunk(n, a, f), instructions() {}
|
||||
|
||||
// ~TextChunk() {
|
||||
// for (Size i = 0; i < instructions.size(); i++) delete instructions[i];
|
||||
// }
|
||||
|
||||
// std::vector<Instruction*> instructions;
|
||||
// };
|
||||
|
||||
// class DataChunk : public Chunk {
|
||||
// public:
|
||||
// DataChunk(std::string n, Size a = 0, Word f = 0)
|
||||
// : Chunk(n, a, f), size(0), contents() {}
|
||||
// Size size;
|
||||
// std::vector<Byte> contents; /* 0 to size bytes in length. */
|
||||
// };
|
||||
|
||||
// class Obj {
|
||||
// public:
|
||||
// ~Obj() { for (Size i = 0; i < chunks.size(); i++) delete chunks[i]; }
|
||||
// std::vector<Chunk*> chunks;
|
||||
// Size entry;
|
||||
// };
|
||||
|
||||
// class DynObj : public Obj {
|
||||
// public:
|
||||
// std::vector<std::string> deps;
|
||||
// };
|
||||
|
||||
// class ObjReader {
|
||||
// public:
|
||||
// virtual Obj *read(std::istream &input) = 0;
|
||||
// private:
|
||||
// };
|
||||
|
||||
// class ObjWriter {
|
||||
// public:
|
||||
// virtual void write(std::ostream &output, const Obj &o) = 0;
|
||||
// private:
|
||||
// };
|
||||
|
||||
// class AsmReader : public ObjReader {
|
||||
// public:
|
||||
// AsmReader(ArchDef arch) :
|
||||
// wordSize(arch.getWordSize()), nRegs(arch.getNRegs()) {}
|
||||
// virtual Obj *read(std::istream &input);
|
||||
// private:
|
||||
// Size wordSize, nRegs;
|
||||
|
||||
// // Operand type sequences indexed by argument class
|
||||
// enum ArgType {AT_END, AT_REG, AT_PREG, AT_LIT};
|
||||
// static ArgType operandtype_table[][4]; // ArgClass -> ArgType[arg_idx]
|
||||
// };
|
||||
|
||||
// class HOFReader : public ObjReader {
|
||||
// public:
|
||||
// HOFReader(ArchDef &arch) : arch(arch) {}
|
||||
// Obj *read(std::istream &input);
|
||||
// private:
|
||||
// const ArchDef &arch;
|
||||
// };
|
||||
|
||||
// class AsmWriter : public ObjWriter {
|
||||
// public:
|
||||
// AsmWriter(ArchDef arch): wordSize(arch.getWordSize()) {}
|
||||
// virtual void write(std::ostream &output, const Obj &obj);
|
||||
// private:
|
||||
// Size wordSize;
|
||||
// };
|
||||
|
||||
// class HOFWriter : public ObjWriter {
|
||||
// public:
|
||||
// HOFWriter(ArchDef &arch) : arch(arch) {}
|
||||
// virtual void write(std::ostream &output, const Obj &obj);
|
||||
// private:
|
||||
// const ArchDef &arch;
|
||||
// };
|
||||
};
|
||||
|
||||
#endif
|
169
simX/include/qsim-harp.h
Normal file
169
simX/include/qsim-harp.h
Normal file
|
@ -0,0 +1,169 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef EMU_INSTRUMENTATION
|
||||
#define EMU_INSTRUMENTATION
|
||||
#endif
|
||||
|
||||
#ifndef __QSIM_HARP_H
|
||||
#define __QSIM_HARP_H
|
||||
|
||||
#include "types.h"
|
||||
#include "core.h"
|
||||
#include "enc.h"
|
||||
#include "instruction.h"
|
||||
#include "mem.h"
|
||||
#include "obj.h"
|
||||
#include "archdef.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include <qsim.h>
|
||||
|
||||
namespace Harp {
|
||||
class OSDomain {
|
||||
public:
|
||||
OSDomain(Harp::ArchDef &arch, std::string imgFile);
|
||||
|
||||
bool idle(unsigned i) const { return cpus[i].idle(); }
|
||||
int get_tid(unsigned i) const { return cpus[i].get_tid(); }
|
||||
bool get_prot(unsigned i) const { return cpus[i].get_prot(); }
|
||||
|
||||
int get_n() const { return cpus.size(); }
|
||||
|
||||
uint64_t run(unsigned i, uint64_t n) { return cpus[i].run(n); }
|
||||
void connect_console(std::ostream &s);
|
||||
void timer_interrupt() { /* TODO: timer convention */ }
|
||||
void interrupt(unsigned i, int vec) { cpus[i].interrupt(vec); }
|
||||
bool booted(unsigned i) const { return cpus[i].booted(); }
|
||||
void save_state(const char* state_file);
|
||||
|
||||
template <typename T>
|
||||
void set_atomic_cb
|
||||
(T *p, typename Qsim::OSDomain::atomic_cb_obj<T>::atomic_cb_t f)
|
||||
{
|
||||
atomic_cbs.push_back(new Qsim::OSDomain::atomic_cb_obj<T>(p, f));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void set_inst_cb
|
||||
(T* p, typename Qsim::OSDomain::inst_cb_obj<T>::inst_cb_t f)
|
||||
{
|
||||
inst_cbs.push_back(new Qsim::OSDomain::inst_cb_obj<T>(p, f));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void set_int_cb
|
||||
(T *p, typename Qsim::OSDomain::int_cb_obj<T>::int_cb_t f)
|
||||
{
|
||||
int_cbs.push_back(new Qsim::OSDomain::int_cb_obj<T>(p, f));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void set_mem_cb
|
||||
(T *p, typename Qsim::OSDomain::mem_cb_obj<T>::mem_cb_t f)
|
||||
{
|
||||
mem_cbs.push_back(new Qsim::OSDomain::mem_cb_obj<T>(p, f));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void set_magic_cb
|
||||
(T *p, typename Qsim::OSDomain::magic_cb_obj<T>::magic_cb_t f)
|
||||
{
|
||||
magic_cbs.push_back(new Qsim::OSDomain::magic_cb_obj<T>(p, f));
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void set_io_cb
|
||||
(T *p, typename Qsim::OSDomain::io_cb_obj<T>::io_cb_t f)
|
||||
{ /* Do nothing. We have no separate IO address space. */ }
|
||||
|
||||
template <typename T>
|
||||
void set_reg_cb
|
||||
(T *p, typename Qsim::OSDomain::reg_cb_obj<T>::reg_cb_t f)
|
||||
{
|
||||
reg_cbs.push_back(new Qsim::OSDomain::reg_cb_obj<T>(p, f));
|
||||
}
|
||||
|
||||
template <typename T> void mem_rd(T& d, uint64_t paddr);
|
||||
template <typename T> void mem_rd_virt(unsigned i, T& d, uint64_t vaddr);
|
||||
template <typename T> void mem_wr(T& d, uint64_t paddr);
|
||||
template <typename T> void mem_wr_virt(unsigned i, T& d, uint64_t vaddr);
|
||||
|
||||
static OSDomain *osDomain;
|
||||
|
||||
bool do_atomic(unsigned c) {
|
||||
bool rval(false);
|
||||
for (unsigned i = 0; i < atomic_cbs.size(); ++i)
|
||||
if ((*atomic_cbs[i])(c)) rval = true;
|
||||
return rval;
|
||||
}
|
||||
|
||||
void do_inst(unsigned c, uint64_t va, uint64_t pa, uint8_t l,
|
||||
const uint8_t *b, enum inst_type t)
|
||||
{
|
||||
for (unsigned i = 0; i < inst_cbs.size(); ++i)
|
||||
(*inst_cbs[i])(c, va, pa, l, b, t);
|
||||
}
|
||||
|
||||
void do_int(unsigned c, int v) {
|
||||
for (unsigned i = 0; i < int_cbs.size(); ++i)
|
||||
(*int_cbs[i])(c, v);
|
||||
}
|
||||
|
||||
void do_mem(unsigned c, uint64_t va, uint64_t pa, uint8_t s, bool w) {
|
||||
for (unsigned i = 0; i < mem_cbs.size(); ++i)
|
||||
(*mem_cbs[i])(c, va, pa, s, w);
|
||||
}
|
||||
|
||||
bool do_magic(unsigned c, uint64_t r0) {
|
||||
bool rval(false);
|
||||
for (unsigned i = 0; i < magic_cbs.size(); ++i)
|
||||
if ((*magic_cbs[i])(c, r0)) rval = true;
|
||||
return rval;
|
||||
}
|
||||
|
||||
void do_reg(unsigned c, int r, uint8_t s, bool w) {
|
||||
for (unsigned i = 0; i < reg_cbs.size(); ++i)
|
||||
(*reg_cbs[i])(c, r, s, w);
|
||||
}
|
||||
|
||||
private:
|
||||
class Cpu {
|
||||
public:
|
||||
Cpu(Harp::OSDomain &osd);
|
||||
Cpu(): dec(NULL), core(NULL) {}
|
||||
~Cpu() { if (dec) delete dec; if (core) delete core; }
|
||||
|
||||
bool idle() const { return false; }
|
||||
int get_tid() const { return 0; }
|
||||
bool get_prot() const { return core->getSupervisorMode(); }
|
||||
uint64_t run(uint64_t n);
|
||||
void interrupt(int vec) { core->interrupt(vec); }
|
||||
bool booted() const { return core->running(); }
|
||||
|
||||
Harp::OSDomain *osd;
|
||||
Harp::Decoder *dec;
|
||||
Harp::Core *core;
|
||||
};
|
||||
|
||||
Harp::ArchDef arch;
|
||||
|
||||
Harp::MemoryUnit mu;
|
||||
Harp::RamMemDevice ram;
|
||||
Harp::ConsoleMemDevice *console;
|
||||
|
||||
std::vector <Harp::OSDomain::Cpu> cpus;
|
||||
|
||||
std::vector <Qsim::OSDomain::atomic_cb_obj_base*> atomic_cbs;
|
||||
std::vector <Qsim::OSDomain::inst_cb_obj_base*> inst_cbs;
|
||||
std::vector <Qsim::OSDomain::int_cb_obj_base*> int_cbs;
|
||||
std::vector <Qsim::OSDomain::mem_cb_obj_base*> mem_cbs;
|
||||
std::vector <Qsim::OSDomain::magic_cb_obj_base*> magic_cbs;
|
||||
std::vector <Qsim::OSDomain::reg_cb_obj_base*> reg_cbs;
|
||||
};
|
||||
};
|
||||
#endif
|
33
simX/include/trace.h
Normal file
33
simX/include/trace.h
Normal file
|
@ -0,0 +1,33 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
namespace Harp {
|
||||
|
||||
typedef struct
|
||||
{
|
||||
// Warp step
|
||||
bool valid_inst;
|
||||
unsigned pc;
|
||||
|
||||
// Core scheduler
|
||||
int wid;
|
||||
|
||||
// Encoder
|
||||
int rs1;
|
||||
int rs2;
|
||||
int rd;
|
||||
|
||||
// Instruction execute
|
||||
bool is_lw;
|
||||
bool is_sw;
|
||||
unsigned * mem_addresses;
|
||||
|
||||
// dmem interface
|
||||
int mem_stall_cycles;
|
||||
int fetch_stall_cycles;
|
||||
|
||||
// Instruction execute
|
||||
bool stall_warp;
|
||||
} trace_inst_t;
|
||||
|
||||
}
|
25
simX/include/types.h
Normal file
25
simX/include/types.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __TYPES_H
|
||||
#define __TYPES_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
namespace Harp {
|
||||
typedef uint8_t Byte;
|
||||
typedef uint32_t Word;
|
||||
typedef uint32_t Word_u;
|
||||
typedef int32_t Word_s;
|
||||
|
||||
typedef Word_u Addr;
|
||||
typedef Word_u Size;
|
||||
|
||||
typedef unsigned RegNum;
|
||||
typedef unsigned ThdNum;
|
||||
|
||||
enum MemFlags {RD_USR = 1, WR_USR = 2, EX_USR = 4,
|
||||
RD_SUP = 8, WR_SUP = 16, EX_SUP = 32};
|
||||
};
|
||||
|
||||
#endif
|
24
simX/include/util.h
Normal file
24
simX/include/util.h
Normal file
|
@ -0,0 +1,24 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#ifndef __UTIL_H
|
||||
#define __UTIL_H
|
||||
|
||||
#include <vector>
|
||||
#include "types.h"
|
||||
|
||||
namespace Harp {
|
||||
Word_u bytesToWord(const Byte *b, Size wordSize);
|
||||
void wordToBytes(Byte *b, Word_u w, Size wordSize);
|
||||
Word_u flagsToWord(bool r, bool w, bool x);
|
||||
void wordToFlags(bool &r, bool &w, bool &x, Word_u f);
|
||||
|
||||
class OutOfBytes {};
|
||||
|
||||
Byte readByte(const std::vector<Byte> &b, Size &n);
|
||||
Word_u readWord(const std::vector<Byte> &b, Size &n, Size wordSize);
|
||||
void writeByte(std::vector<Byte> &p, Size &n, Byte b);
|
||||
void writeWord(std::vector<Byte> &p, Size &n, Size wordSize, Word w);
|
||||
};
|
||||
|
||||
#endif
|
887
simX/instruction.cpp
Normal file
887
simX/instruction.cpp
Normal file
|
@ -0,0 +1,887 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#include <iostream>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "include/instruction.h"
|
||||
#include "include/obj.h"
|
||||
#include "include/core.h"
|
||||
#include "include/harpfloat.h"
|
||||
#include "include/debug.h"
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
#include "include/qsim-harp.h"
|
||||
#endif
|
||||
|
||||
using namespace Harp;
|
||||
using namespace std;
|
||||
|
||||
/* It is important that this stays consistent with the Harp::Instruction::Opcode
|
||||
enum. */
|
||||
|
||||
ostream &Harp::operator<<(ostream& os, Instruction &inst) {
|
||||
os << dec;
|
||||
|
||||
// if (inst.predicated) {
|
||||
// os << "@p" << dec << inst.pred << " ? ";
|
||||
// }
|
||||
|
||||
// os << inst.instTable[inst.op].opString << ' ';
|
||||
// if (inst.rdestPresent) os << "%r" << dec << inst.rdest << ' ';
|
||||
// if (inst.pdestPresent) os << "@p" << inst.pdest << ' ';
|
||||
// for (int i = 0; i < inst.nRsrc; i++) {
|
||||
// os << "%r" << dec << inst.rsrc[i] << ' ';
|
||||
// }
|
||||
// for (int i = 0; i < inst.nPsrc; i++) {
|
||||
// os << "@p" << dec << inst.psrc[i] << ' ';
|
||||
// }
|
||||
// if (inst.immsrcPresent) {
|
||||
// if (inst.refLiteral) os << inst.refLiteral->name;
|
||||
// else os << "#0x" << hex << inst.immsrc;
|
||||
// }
|
||||
|
||||
os << instTable[inst.op].opString;
|
||||
|
||||
os << ';';
|
||||
return os;
|
||||
}
|
||||
|
||||
bool checkUnanimous(unsigned p, const std::vector<std::vector<Reg<Word> > >& m,
|
||||
const std::vector<bool> &tm) {
|
||||
bool same;
|
||||
unsigned i;
|
||||
for (i = 0; i < m.size(); ++i) {
|
||||
if (tm[i]) {
|
||||
same = m[i][p];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == m.size()) throw DivergentBranchException();
|
||||
|
||||
//std::cout << "same: " << same << " with -> ";
|
||||
for (; i < m.size(); ++i) {
|
||||
if (tm[i]) {
|
||||
//std::cout << " " << (bool(m[i][p]));
|
||||
if (same != (bool(m[i][p]))) {
|
||||
//std::cout << " FALSE\n";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
//std::cout << " TRUE\n";
|
||||
return true;
|
||||
}
|
||||
|
||||
Word signExt(Word w, Size bit, Word mask) {
|
||||
if (w>>(bit-1)) w |= ~mask;
|
||||
return w;
|
||||
}
|
||||
|
||||
void Instruction::executeOn(Warp &c) {
|
||||
D(3, "Begin instruction execute.");
|
||||
|
||||
/* If I try to execute a privileged instruction in user mode, throw an
|
||||
exception 3. */
|
||||
if (instTable[op].privileged && !c.supervisorMode) {
|
||||
std::cout << "INTERRUPT SUPERVISOR\n";
|
||||
c.interrupt(3);
|
||||
return;
|
||||
}
|
||||
|
||||
// /* Also throw exceptions on non-masked divergent branches. */
|
||||
// if (instTable[op].controlFlow) {
|
||||
// Size t, count, active;
|
||||
// for (t = 0, count = 0, active = 0; t < c.activeThreads; ++t) {
|
||||
// if ((!predicated || c.pred[t][pred]) && c.tmask[t]) ++count;
|
||||
// if (c.tmask[t]) ++active;
|
||||
// }
|
||||
|
||||
// if (count != 0 && count != active)
|
||||
// throw DivergentBranchException();
|
||||
// }
|
||||
|
||||
Size nextActiveThreads = c.activeThreads;
|
||||
Size wordSz = c.core->a.getWordSize();
|
||||
Word nextPc = c.pc;
|
||||
|
||||
c.memAccesses.clear();
|
||||
|
||||
// If we have a load, overwriting a register's contents, we have to make sure
|
||||
// ahead of time it will not fault. Otherwise we may perform an indirect load
|
||||
// by mistake.
|
||||
// if (op == L_INST && rdest == rsrc[0]) {
|
||||
// for (Size t = 0; t < c.activeThreads; t++) {
|
||||
// if ((!predicated || c.pred[t][pred]) && c.tmask[t]) {
|
||||
// Word memAddr = c.reg[t][rsrc[0]] + immsrc;
|
||||
// c.core->mem.read(memAddr, c.supervisorMode);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
bool sjOnce(true), // Has not yet split or joined once.
|
||||
pcSet(false); // PC has already been set
|
||||
for (Size t = 0; t < c.activeThreads; t++) {
|
||||
vector<Reg<Word> > ®(c.reg[t]);
|
||||
vector<Reg<bool> > &pReg(c.pred[t]);
|
||||
stack<DomStackEntry> &domStack(c.domStack);
|
||||
|
||||
//std::cout << std::hex << "opcode: " << op << " func3: " << func3 << "\n";
|
||||
//if (op == GPGPU) //std::cout << "OPCODE MATCHED GPGPU\n";
|
||||
|
||||
// If this thread is masked out, don't execute the instruction, unless it's
|
||||
// a split or join.
|
||||
// if (((predicated && !pReg[pred]) || !c.tmask[t]) &&
|
||||
// op != SPLIT && op != JOIN) continue;
|
||||
|
||||
bool split = (op == GPGPU) && (func3 == 2);
|
||||
bool join = (op == GPGPU) && (func3 == 3);
|
||||
|
||||
|
||||
// predicated = (op == GPGPU) && ((func3 == 7) || (func3 == 2));
|
||||
|
||||
|
||||
// bool is_branch = (op == B_INST);
|
||||
// bool is_jump = (op == JAL_INST) || (op == JALR_INST);
|
||||
|
||||
bool is_gpgpu = (op == GPGPU);
|
||||
|
||||
bool is_tmc = is_gpgpu && (func3 == 0);
|
||||
bool is_wspawn = is_gpgpu && (func3 == 1);
|
||||
bool is_barrier = is_gpgpu && (func3 == 4);
|
||||
bool is_split = is_gpgpu && (func3 == 2);
|
||||
bool is_join = is_gpgpu && (func3 == 3);
|
||||
|
||||
bool gpgpu_zero = (is_tmc || is_barrier || is_wspawn) && (t != 0);
|
||||
|
||||
bool not_active = !c.tmask[t];
|
||||
|
||||
if (not_active || gpgpu_zero)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// printf("Predicated: %d, split: %d, join: %d\n",predicated, split, join );
|
||||
// printf("%d && ((%d) || (%d))\n",(op == GPGPU), (func3 == 7), (func3 == 2) );
|
||||
|
||||
// cout << "before " << op << " = " << GPGPU << "\n";
|
||||
// if (((predicated && !reg[pred]) || !c.tmask[t]) && !split && !join)
|
||||
// {
|
||||
// // cout << "about to continue\n";
|
||||
// continue;
|
||||
// }
|
||||
// cout << "after\n";
|
||||
|
||||
++c.insts;
|
||||
|
||||
Word memAddr;
|
||||
Word shift_by;
|
||||
Word shamt;
|
||||
Word temp;
|
||||
Word data_read;
|
||||
int op1, op2;
|
||||
bool m_exten;
|
||||
// std::cout << "op = " << op << "\n";
|
||||
// std::cout << "R_INST: " << R_INST << "\n";
|
||||
int num_to_wspawn;
|
||||
switch (op) {
|
||||
|
||||
case NOP:
|
||||
//std::cout << "NOP_INST\n";
|
||||
break;
|
||||
case R_INST:
|
||||
// std::cout << "R_INST\n";
|
||||
m_exten = func7 & 0x1;
|
||||
|
||||
if (m_exten)
|
||||
{
|
||||
// std::cout << "FOUND A MUL/DIV\n";
|
||||
|
||||
switch (func3)
|
||||
{
|
||||
case 0:
|
||||
// MUL
|
||||
// cout << "MUL\n";
|
||||
reg[rdest] = ((int) reg[rsrc[0]]) * ((int) reg[rsrc[1]]);
|
||||
break;
|
||||
case 1:
|
||||
// MULH
|
||||
{
|
||||
int64_t first = (int64_t) reg[rsrc[0]];
|
||||
if (reg[rsrc[0]] & 0x80000000)
|
||||
{
|
||||
first = first | 0xFFFFFFFF00000000;
|
||||
}
|
||||
int64_t second = (int64_t) reg[rsrc[1]];
|
||||
if (reg[rsrc[1]] & 0x80000000)
|
||||
{
|
||||
second = second | 0xFFFFFFFF00000000;
|
||||
}
|
||||
// cout << "mulh: " << std::dec << first << " * " << second;
|
||||
uint64_t result = first * second;
|
||||
reg[rdest] = ( result >> 32) & 0xFFFFFFFF;
|
||||
// cout << " = " << result << " or " << reg[rdest] << "\n";
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
// MULHSU
|
||||
{
|
||||
int64_t first = (int64_t) reg[rsrc[0]];
|
||||
if (reg[rsrc[0]] & 0x80000000)
|
||||
{
|
||||
first = first | 0xFFFFFFFF00000000;
|
||||
}
|
||||
int64_t second = (int64_t) reg[rsrc[1]];
|
||||
reg[rdest] = (( first * second ) >> 32) & 0xFFFFFFFF;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
// MULHU
|
||||
{
|
||||
uint64_t first = (uint64_t) reg[rsrc[0]];
|
||||
uint64_t second = (uint64_t) reg[rsrc[1]];
|
||||
// cout << "MULHU\n";
|
||||
reg[rdest] = (( first * second) >> 32) & 0xFFFFFFFF;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
// DIV
|
||||
if (reg[rsrc[1]] == 0)
|
||||
{
|
||||
reg[rdest] = -1;
|
||||
break;
|
||||
}
|
||||
// cout << "dividing: " << dec << ((int) reg[rsrc[0]]) << " / " << ((int) reg[rsrc[1]]);
|
||||
reg[rdest] = ( (int) reg[rsrc[0]]) / ( (int) reg[rsrc[1]]);
|
||||
// cout << " = " << ((int) reg[rdest]) << "\n";
|
||||
break;
|
||||
case 5:
|
||||
// DIVU
|
||||
if (reg[rsrc[1]] == 0)
|
||||
{
|
||||
reg[rdest] = -1;
|
||||
break;
|
||||
}
|
||||
reg[rdest] = ((uint32_t) reg[rsrc[0]]) / ((uint32_t) reg[rsrc[1]]);
|
||||
break;
|
||||
case 6:
|
||||
// REM
|
||||
if (reg[rsrc[1]] == 0)
|
||||
{
|
||||
reg[rdest] = reg[rsrc[0]];
|
||||
break;
|
||||
}
|
||||
reg[rdest] = ((int) reg[rsrc[0]]) % ((int) reg[rsrc[1]]);
|
||||
break;
|
||||
case 7:
|
||||
// REMU
|
||||
if (reg[rsrc[1]] == 0)
|
||||
{
|
||||
reg[rdest] = reg[rsrc[0]];
|
||||
break;
|
||||
}
|
||||
reg[rdest] = ((uint32_t) reg[rsrc[0]]) % ((uint32_t) reg[rsrc[1]]);
|
||||
break;
|
||||
default:
|
||||
cout << "unsupported MUL/DIV instr\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// std::cout << "NORMAL R-TYPE\n";
|
||||
switch (func3)
|
||||
{
|
||||
case 0:
|
||||
if (func7)
|
||||
{
|
||||
reg[rdest] = reg[rsrc[0]] - reg[rsrc[1]];
|
||||
reg[rdest].trunc(wordSz);
|
||||
}
|
||||
else
|
||||
{
|
||||
reg[rdest] = reg[rsrc[0]] + reg[rsrc[1]];
|
||||
reg[rdest].trunc(wordSz);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
reg[rdest] = reg[rsrc[0]] << reg[rsrc[1]];
|
||||
reg[rdest].trunc(wordSz);
|
||||
break;
|
||||
case 2:
|
||||
if ( int(reg[rsrc[0]]) < int(reg[rsrc[1]]))
|
||||
{
|
||||
reg[rdest] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
reg[rdest] = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if ( Word_u(reg[rsrc[0]]) < Word_u(reg[rsrc[1]]))
|
||||
{
|
||||
reg[rdest] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
reg[rdest] = 0;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
reg[rdest] = reg[rsrc[0]] ^ reg[rsrc[1]];
|
||||
break;
|
||||
case 5:
|
||||
if (func7)
|
||||
{
|
||||
reg[rdest] = int(reg[rsrc[0]]) >> int(reg[rsrc[1]]);
|
||||
reg[rdest].trunc(wordSz);
|
||||
}
|
||||
else
|
||||
{
|
||||
reg[rdest] = Word_u(reg[rsrc[0]]) >> Word_u(reg[rsrc[1]]);
|
||||
reg[rdest].trunc(wordSz);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
reg[rdest] = reg[rsrc[0]] | reg[rsrc[1]];
|
||||
break;
|
||||
case 7:
|
||||
reg[rdest] = reg[rsrc[0]] & reg[rsrc[1]];
|
||||
break;
|
||||
default:
|
||||
cout << "ERROR: UNSUPPORTED R INST\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case L_INST:
|
||||
//std::cout << "L_INST\n";
|
||||
memAddr = ((reg[rsrc[0]] + immsrc) & 0xFFFFFFFC);
|
||||
shift_by = ((reg[rsrc[0]] + immsrc) & 0x00000003) * 8;
|
||||
data_read = c.core->mem.read(memAddr, c.supervisorMode);
|
||||
// //std::cout <<std::hex<< "EXECUTE: " << reg[rsrc[0]] << " + " << immsrc << " = " << memAddr << " -> data_read: " << data_read << "\n";
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
Harp::OSDomain::osDomain->
|
||||
do_mem(0, memAddr, c.core->mem.virtToPhys(memAddr), 8, true);
|
||||
#endif
|
||||
switch (func3)
|
||||
{
|
||||
|
||||
case 0:
|
||||
// LB
|
||||
reg[rdest] = signExt((data_read >> shift_by) & 0xFF, 8, 0xFF);
|
||||
break;
|
||||
case 1:
|
||||
// LH
|
||||
// //std::cout << "shifting by: " << shift_by << " final data: " << ((data_read >> shift_by) & 0xFFFF, 16, 0xFFFF) << "\n";
|
||||
reg[rdest] = signExt((data_read >> shift_by) & 0xFFFF, 16, 0xFFFF);
|
||||
break;
|
||||
case 2:
|
||||
reg[rdest] = int(data_read & 0xFFFFFFFF);
|
||||
break;
|
||||
case 4:
|
||||
// LBU
|
||||
reg[rdest] = unsigned((data_read >> shift_by) & 0xFF);
|
||||
break;
|
||||
case 5:
|
||||
reg[rdest] = unsigned((data_read >> shift_by) & 0xFFFF);
|
||||
break;
|
||||
default:
|
||||
cout << "ERROR: UNSUPPORTED L INST\n";
|
||||
exit(1);
|
||||
c.memAccesses.push_back(Warp::MemAccess(false, memAddr));
|
||||
}
|
||||
break;
|
||||
case I_INST:
|
||||
//std::cout << "I_INST\n";
|
||||
switch (func3)
|
||||
{
|
||||
|
||||
case 0:
|
||||
// ADDI
|
||||
reg[rdest] = reg[rsrc[0]] + immsrc;
|
||||
reg[rdest].trunc(wordSz);
|
||||
break;
|
||||
case 2:
|
||||
// SLTI
|
||||
if ( int(reg[rsrc[0]]) < int(immsrc))
|
||||
{
|
||||
reg[rdest] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
reg[rdest] = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
// SLTIU
|
||||
op1 = (unsigned) reg[rsrc[0]];
|
||||
if ( unsigned(reg[rsrc[0]]) < unsigned(immsrc))
|
||||
{
|
||||
reg[rdest] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
reg[rdest] = 0;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
// XORI
|
||||
reg[rdest] = reg[rsrc[0]] ^ immsrc;
|
||||
break;
|
||||
case 6:
|
||||
// ORI;
|
||||
reg[rdest] = reg[rsrc[0]] | immsrc;
|
||||
break;
|
||||
case 7:
|
||||
// ANDI
|
||||
reg[rdest] = reg[rsrc[0]] & immsrc;
|
||||
break;
|
||||
case 1:
|
||||
// SLLI
|
||||
reg[rdest] = reg[rsrc[0]] << immsrc;
|
||||
reg[rdest].trunc(wordSz);
|
||||
break;
|
||||
case 5:
|
||||
if ((func7 == 0))
|
||||
{
|
||||
// SRLI
|
||||
// //std::cout << "WTF\n";
|
||||
bool isNeg = ((0x80000000 & reg[rsrc[0]])) > 0;
|
||||
Word result = Word_u(reg[rsrc[0]]) >> Word_u(immsrc);
|
||||
// if (isNeg)
|
||||
// {
|
||||
// Word mask = 0x80000000;
|
||||
// for (int i = 32; i < Word_u(immsrc); i++)
|
||||
// {
|
||||
// result |= mask;
|
||||
// mask = mask >> 1;
|
||||
// }
|
||||
// }
|
||||
|
||||
reg[rdest] = result;
|
||||
|
||||
reg[rdest].trunc(wordSz);
|
||||
}
|
||||
else
|
||||
{
|
||||
// SRAI
|
||||
// //std::cout << "WOHOOOOO\n";
|
||||
op1 = reg[rsrc[0]];
|
||||
op2 = immsrc;
|
||||
reg[rdest] = op1 >> op2;
|
||||
reg[rdest].trunc(wordSz);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
cout << "ERROR: UNSUPPORTED L INST\n";
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
case S_INST:
|
||||
//std::cout << "S_INST\n";
|
||||
++c.stores;
|
||||
memAddr = reg[rsrc[0]] + immsrc;
|
||||
std::cout << "STORE MEM ADDRESS: " << std::hex << reg[rsrc[0]] << " + " << immsrc << "\n";
|
||||
// //std::cout << "FUNC3: " << func3 << "\n";
|
||||
if ((memAddr == 0x00010000) && (t == 0))
|
||||
{
|
||||
unsigned num = reg[rsrc[1]];
|
||||
fprintf(stderr, "%c", (char) reg[rsrc[1]]);
|
||||
break;
|
||||
}
|
||||
switch (func3)
|
||||
{
|
||||
case 0:
|
||||
// //std::cout << "SB\n";
|
||||
c.core->mem.write(memAddr, reg[rsrc[1]] & 0x000000FF, c.supervisorMode, 1);
|
||||
break;
|
||||
case 1:
|
||||
// //std::cout << "SH\n";
|
||||
c.core->mem.write(memAddr, reg[rsrc[1]], c.supervisorMode, 2);
|
||||
break;
|
||||
case 2:
|
||||
// //std::cout << std::hex << "SW: about to write: " << reg[rsrc[1]] << " to " << memAddr << "\n";
|
||||
c.core->mem.write(memAddr, reg[rsrc[1]], c.supervisorMode, 4);
|
||||
break;
|
||||
default:
|
||||
cout << "ERROR: UNSUPPORTED S INST\n";
|
||||
exit(1);
|
||||
}
|
||||
c.memAccesses.push_back(Warp::MemAccess(true, memAddr));
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
Harp::OSDomain::osDomain->
|
||||
do_mem(0, memAddr, c.core->mem.virtToPhys(memAddr), 8, true);
|
||||
#endif
|
||||
break;
|
||||
case B_INST:
|
||||
//std::cout << "B_INST\n";
|
||||
switch (func3)
|
||||
{
|
||||
case 0:
|
||||
// BEQ
|
||||
if (int(reg[rsrc[0]]) == int(reg[rsrc[1]]))
|
||||
{
|
||||
if (!pcSet) nextPc = (c.pc - 4) + immsrc;
|
||||
pcSet = true;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
// BNE
|
||||
if (int(reg[rsrc[0]]) != int(reg[rsrc[1]]))
|
||||
{
|
||||
if (!pcSet) nextPc = (c.pc - 4) + immsrc;
|
||||
pcSet = true;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
// BLT
|
||||
if (int(reg[rsrc[0]]) < int(reg[rsrc[1]]))
|
||||
{
|
||||
if (!pcSet) nextPc = (c.pc - 4) + immsrc;
|
||||
pcSet = true;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
// BGE
|
||||
if (int(reg[rsrc[0]]) >= int(reg[rsrc[1]]))
|
||||
{
|
||||
if (!pcSet) nextPc = (c.pc - 4) + immsrc;
|
||||
pcSet = true;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
// BLTU
|
||||
if (Word_u(reg[rsrc[0]]) < Word_u(reg[rsrc[1]]))
|
||||
{
|
||||
if (!pcSet) nextPc = (c.pc - 4) + immsrc;
|
||||
pcSet = true;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
// BGEU
|
||||
if (Word_u(reg[rsrc[0]]) >= Word_u(reg[rsrc[1]]))
|
||||
{
|
||||
if (!pcSet) nextPc = (c.pc - 4) + immsrc;
|
||||
pcSet = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case LUI_INST:
|
||||
//std::cout << "LUI_INST\n";
|
||||
reg[rdest] = (immsrc << 12) & 0xfffff000;
|
||||
break;
|
||||
case AUIPC_INST:
|
||||
//std::cout << "AUIPC_INST\n";
|
||||
reg[rdest] = ((immsrc << 12) & 0xfffff000) + (c.pc - 4);
|
||||
break;
|
||||
case JAL_INST:
|
||||
//std::cout << "JAL_INST\n";
|
||||
if (!pcSet) nextPc = (c.pc - 4) + immsrc;
|
||||
if (!pcSet) {/*std::cout << "JAL... SETTING PC: " << nextPc << "\n"; */}
|
||||
if (rdest != 0)
|
||||
{
|
||||
reg[rdest] = c.pc;
|
||||
}
|
||||
pcSet = true;
|
||||
break;
|
||||
case JALR_INST:
|
||||
std::cout << "JALR_INST\n";
|
||||
if (!pcSet) nextPc = reg[rsrc[0]] + immsrc;
|
||||
if (!pcSet) {/*std::cout << "JALR... SETTING PC: " << nextPc << "\n";*/ }
|
||||
if (rdest != 0)
|
||||
{
|
||||
reg[rdest] = c.pc;
|
||||
}
|
||||
pcSet = true;
|
||||
break;
|
||||
case SYS_INST:
|
||||
//std::cout << "SYS_INST\n";
|
||||
temp = reg[rsrc[0]];
|
||||
if (immsrc == 0x20) // ThreadID
|
||||
{
|
||||
reg[rdest] = t;
|
||||
D(2, "CSR Reading tid " << hex << immsrc << dec << " and returning " << reg[rdest]);
|
||||
} else if (immsrc == 0x21) // WarpID
|
||||
{
|
||||
reg[rdest] = c.id;
|
||||
D(2, "CSR Reading wid " << hex << immsrc << dec << " and returning " << reg[rdest]);
|
||||
}
|
||||
// switch (func3)
|
||||
// {
|
||||
// case 1:
|
||||
// // printf("Case 1\n");
|
||||
// if (rdest != 0)
|
||||
// {
|
||||
// reg[rdest] = c.csr[immsrc & 0x00000FFF];
|
||||
// }
|
||||
// c.csr[immsrc & 0x00000FFF] = temp;
|
||||
|
||||
// break;
|
||||
// case 2:
|
||||
// // printf("Case 2\n");
|
||||
// if (rdest != 0)
|
||||
// {
|
||||
// // printf("Reading from CSR: %d = %d\n", (immsrc & 0x00000FFF), c.csr[immsrc & 0x00000FFF]);
|
||||
// reg[rdest] = c.csr[immsrc & 0x00000FFF];
|
||||
// }
|
||||
// // printf("Writing to CSR --> %d = %d\n", immsrc, (temp | c.csr[immsrc & 0x00000FFF]));
|
||||
// c.csr[immsrc & 0x00000FFF] = temp | c.csr[immsrc & 0x00000FFF];
|
||||
|
||||
// break;
|
||||
// case 3:
|
||||
// // printf("Case 3\n");
|
||||
// if (rdest != 0)
|
||||
// {
|
||||
// reg[rdest] = c.csr[immsrc & 0x00000FFF];
|
||||
// }
|
||||
// c.csr[immsrc & 0x00000FFF] = temp & (~c.csr[immsrc & 0x00000FFF]);
|
||||
|
||||
// break;
|
||||
// case 5:
|
||||
// // printf("Case 5\n");
|
||||
// if (rdest != 0)
|
||||
// {
|
||||
// reg[rdest] = c.csr[immsrc & 0x00000FFF];
|
||||
// }
|
||||
// c.csr[immsrc & 0x00000FFF] = rsrc[0];
|
||||
|
||||
// break;
|
||||
// case 6:
|
||||
// // printf("Case 6\n");
|
||||
// if (rdest != 0)
|
||||
// {
|
||||
// reg[rdest] = c.csr[immsrc & 0x00000FFF];
|
||||
// }
|
||||
// c.csr[immsrc & 0x00000FFF] = rsrc[0] | c.csr[immsrc & 0x00000FFF];
|
||||
|
||||
// break;
|
||||
// case 7:
|
||||
// // printf("Case 7\n");
|
||||
// if (rdest != 0)
|
||||
// {
|
||||
// reg[rdest] = c.csr[immsrc & 0x00000FFF];
|
||||
// }
|
||||
// c.csr[immsrc & 0x00000FFF] = rsrc[0] & (~c.csr[immsrc & 0x00000FFF]);
|
||||
|
||||
// break;
|
||||
// case 0:
|
||||
// if (immsrc < 2)
|
||||
// {
|
||||
// //std::cout << "INTERRUPT ECALL/EBREAK\n";
|
||||
// nextActiveThreads = 0;
|
||||
// c.spawned = false;
|
||||
// // c.interrupt(0);
|
||||
// }
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
break;
|
||||
case TRAP:
|
||||
//std::cout << "INTERRUPT TRAP\n";
|
||||
nextActiveThreads = 0;
|
||||
c.interrupt(0);
|
||||
break;
|
||||
case FENCE:
|
||||
//std::cout << "FENCE_INST\n";
|
||||
break;
|
||||
case PJ_INST:
|
||||
// pred jump reg
|
||||
//std::cout << "pred jump... src: " << rsrc[0] << std::hex << " val: " << reg[rsrc[0]] << " dest: " << reg[rsrc[1]] << "\n";
|
||||
if (reg[rsrc[0]])
|
||||
{
|
||||
if (!pcSet) nextPc = reg[rsrc[1]];
|
||||
pcSet = true;
|
||||
}
|
||||
break;
|
||||
case GPGPU:
|
||||
//std::cout << "GPGPU\n";
|
||||
switch(func3)
|
||||
{
|
||||
case 1:
|
||||
// WSPAWN
|
||||
std::cout << "WSPAWN\n";
|
||||
if (sjOnce)
|
||||
{
|
||||
sjOnce = false;
|
||||
// //std::cout << "SIZE: " << c.core->w.size() << "\n";
|
||||
num_to_wspawn = reg[rsrc[0]];
|
||||
|
||||
D(0, "Spawning " << num_to_wspawn << " new warps at PC: " << hex << reg[rsrc[1]]);
|
||||
for (unsigned i = 1; i < num_to_wspawn; ++i)
|
||||
{
|
||||
// std::cout << "SPAWNING WARP\n";
|
||||
Warp &newWarp(c.core->w[i]);
|
||||
// //std::cout << "STARTING\n";
|
||||
// if (newWarp.spawned == false)
|
||||
{
|
||||
// //std::cout << "ABOUT TO START\n";
|
||||
newWarp.pc = reg[rsrc[1]];
|
||||
// newWarp.reg[0] = reg;
|
||||
// newWarp.csr = c.csr;
|
||||
for (int kk = 0; kk < newWarp.tmask.size(); kk++)
|
||||
{
|
||||
if (kk == 0)
|
||||
{
|
||||
newWarp.tmask[kk] = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
newWarp.tmask[kk] = false;
|
||||
}
|
||||
}
|
||||
newWarp.activeThreads = 1;
|
||||
newWarp.supervisorMode = false;
|
||||
newWarp.spawned = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
// SPLIT
|
||||
//std::cout << "SPLIT\n";
|
||||
if (sjOnce)
|
||||
{
|
||||
sjOnce = false;
|
||||
if (checkUnanimous(pred, c.reg, c.tmask)) {
|
||||
std::cout << "Unanimous pred: " << pred << " val: " << reg[pred] << "\n";
|
||||
DomStackEntry e(c.tmask);
|
||||
e.uni = true;
|
||||
c.domStack.push(e);
|
||||
break;
|
||||
}
|
||||
cout << "Split: Original TM: ";
|
||||
for (auto y : c.tmask) cout << y << " ";
|
||||
cout << "\n";
|
||||
|
||||
DomStackEntry e(pred, c.reg, c.tmask, c.pc);
|
||||
c.domStack.push(c.tmask);
|
||||
c.domStack.push(e);
|
||||
for (unsigned i = 0; i < e.tmask.size(); ++i)
|
||||
{
|
||||
c.tmask[i] = !e.tmask[i] && c.tmask[i];
|
||||
}
|
||||
|
||||
|
||||
cout << "Split: New TM\n";
|
||||
for (auto y : c.tmask) cout << y << " ";
|
||||
cout << "\n";
|
||||
cout << "Split: Pushed TM PC: " << hex << e.pc << dec << "\n";
|
||||
for (auto y : e.tmask) cout << y << " ";
|
||||
cout << "\n";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
// JOIN
|
||||
//std::cout << "JOIN\n";
|
||||
D(3, "JOIN INSTRUCTION");
|
||||
if (sjOnce)
|
||||
{
|
||||
sjOnce = false;
|
||||
if (!c.domStack.empty() && c.domStack.top().uni) {
|
||||
D(2, "Uni branch at join");
|
||||
printf("NEW DOMESTACK: \n");
|
||||
c.tmask = c.domStack.top().tmask;
|
||||
c.domStack.pop();
|
||||
break;
|
||||
}
|
||||
if (!c.domStack.top().fallThrough) {
|
||||
if (!pcSet) {
|
||||
nextPc = c.domStack.top().pc;
|
||||
cout << "join: NOT FALLTHROUGH PC: " << hex << nextPc << dec << '\n';
|
||||
}
|
||||
pcSet = true;
|
||||
}
|
||||
|
||||
cout << "Join: Old TM: ";
|
||||
for (auto y : c.tmask) cout << y << " ";
|
||||
cout << "\n";
|
||||
c.tmask = c.domStack.top().tmask;
|
||||
|
||||
cout << "Join: New TM: " << '\n';
|
||||
for (auto y : c.tmask) cout << y << " ";
|
||||
cout << "\n";
|
||||
|
||||
c.domStack.pop();
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
// is_barrier
|
||||
break;
|
||||
case 0:
|
||||
// TMC
|
||||
//std::cout << "JALRS\n";
|
||||
|
||||
nextActiveThreads = reg[rsrc[0]];
|
||||
{
|
||||
for (int ff = 0; ff < c.tmask.size(); ff++)
|
||||
{
|
||||
if (ff < nextActiveThreads)
|
||||
{
|
||||
c.tmask[ff] = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
c.tmask[ff] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (nextActiveThreads == 0)
|
||||
{
|
||||
c.spawned = false;
|
||||
}
|
||||
// reg[rdest] = c.pc;
|
||||
// if (!pcSet) nextPc = reg[rsrc[0]];
|
||||
// pcSet = true;
|
||||
// //std::cout << "ACTIVE_THREDS: " << rsrc[1] << " val: " << reg[rsrc[1]] << "\n";
|
||||
// //std::cout << "nextPC: " << rsrc[0] << " val: " << std::hex << reg[rsrc[0]] << "\n";
|
||||
break;
|
||||
default:
|
||||
cout << "ERROR: UNSUPPORTED GPGPU INSTRUCTION " << *this << "\n";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
cout << "pc: " << hex << (c.pc) << "\n";
|
||||
cout << "aERROR: Unsupported instruction: " << *this << "\n" << flush;
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
D(3, "End instruction execute.");
|
||||
|
||||
c.activeThreads = nextActiveThreads;
|
||||
|
||||
// if (nextActiveThreads != 0)
|
||||
// {
|
||||
// for (int i = 7; i >= c.activeThreads; i--)
|
||||
// {
|
||||
// c.tmask[i] = c.tmask[i] && false;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// //std::cout << "new thread mask: ";
|
||||
// for (int i = 0; i < c.tmask.size(); ++i) //std::cout << " " << c.tmask[i];
|
||||
// //std::cout << "\n";
|
||||
|
||||
// This way, if pc was set by a side effect (such as interrupt), it will
|
||||
// retain its new value.
|
||||
if (pcSet)
|
||||
{
|
||||
c.pc = nextPc;
|
||||
cout << "Next PC: " << hex << nextPc << dec << "\n";
|
||||
}
|
||||
|
||||
if (nextActiveThreads > c.reg.size()) {
|
||||
cerr << "Error: attempt to spawn " << nextActiveThreads << " threads. "
|
||||
<< c.reg.size() << " available.\n";
|
||||
abort();
|
||||
}
|
||||
}
|
284
simX/mem.cpp
Normal file
284
simX/mem.cpp
Normal file
|
@ -0,0 +1,284 @@
|
|||
/*******************************************************************************
|
||||
HARPtools by Chad D. Kersey, Summer 2011
|
||||
*******************************************************************************/
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <stdlib.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include "include/debug.h"
|
||||
#include "include/types.h"
|
||||
#include "include/util.h"
|
||||
#include "include/mem.h"
|
||||
#include "include/core.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace Harp;
|
||||
|
||||
RamMemDevice::RamMemDevice(const char *filename, Size wordSize) :
|
||||
wordSize(wordSize), contents()
|
||||
{
|
||||
ifstream input(filename);
|
||||
|
||||
if (!input) {
|
||||
cout << "Error reading file \"" << filename << "\" into RamMemDevice.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
do { contents.push_back(input.get()); } while (input);
|
||||
|
||||
while (contents.size() % wordSize) contents.push_back(0x00);
|
||||
}
|
||||
|
||||
RamMemDevice::RamMemDevice(Size size, Size wordSize) :
|
||||
contents(size), wordSize(wordSize) {}
|
||||
|
||||
void RomMemDevice::write(Addr, Word) {
|
||||
cout << "Attempt to write to ROM.\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
Word RamMemDevice::read(Addr addr) {
|
||||
D(2, "RAM read, addr=0x" << hex << addr);
|
||||
Word w = readWord(contents, addr, wordSize - addr%wordSize);
|
||||
return w;
|
||||
}
|
||||
|
||||
void RamMemDevice::write(Addr addr, Word w) {
|
||||
D(2, "RAM write, addr=0x" << hex << addr);
|
||||
writeWord(contents, addr, wordSize - addr%wordSize, w);
|
||||
}
|
||||
|
||||
MemDevice &MemoryUnit::ADecoder::doLookup(Addr a, Size &bit) {
|
||||
if (range == 0 || (a&((1ll<<bit)-1)) >= range) {
|
||||
ADecoder *p(((a>>bit)&1)?oneChild:zeroChild);
|
||||
if (p) { bit--; return p->doLookup(a, bit); }
|
||||
else {cout << "lookup of 0x" << hex << a << " failed.\n";
|
||||
throw BadAddress();}
|
||||
} else {
|
||||
return *md;
|
||||
}
|
||||
}
|
||||
|
||||
void MemoryUnit::ADecoder::map(Addr a, MemDevice &m, Size r, Size bit)
|
||||
{
|
||||
if ((1llu << bit) <= r) {
|
||||
md = &m;
|
||||
range = m.size();
|
||||
} else {
|
||||
ADecoder *&child(((a>>bit)&1)?oneChild:zeroChild);
|
||||
if (!child) child = new ADecoder();
|
||||
child->map(a, m, r, bit-1);
|
||||
}
|
||||
}
|
||||
|
||||
Byte *MemoryUnit::ADecoder::getPtr(Addr a, Size sz, Size wordSize) {
|
||||
Size bit = wordSize - 1;
|
||||
MemDevice &m(doLookup(a, bit));
|
||||
a &= (2<<bit)-1;
|
||||
if (a + sz <= m.size()) return m.base() + a;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Word MemoryUnit::ADecoder::read(Addr a, bool sup, Size wordSize) {
|
||||
Size bit = wordSize - 1;
|
||||
MemDevice &m(doLookup(a, bit));
|
||||
a &= (2<<bit)-1;
|
||||
// std::cout << std::hex << "ADecoder::read(Addr " << a << ", sup " << sup << ", wordSize " << wordSize << " -> ";
|
||||
// std::cout << "Data: " << m.read(a) << "\n";
|
||||
return m.read(a);
|
||||
}
|
||||
|
||||
void MemoryUnit::ADecoder::write(Addr a, Word w, bool sup, Size wordSize) {
|
||||
Size bit = wordSize - 1;
|
||||
MemDevice &m(doLookup(a, bit));
|
||||
|
||||
RAM & r = (RAM &) m;
|
||||
// a &= (2<<bit)-1;
|
||||
// std::cout << std::hex << "ADecoder::write(Addr " << a << ", w " << w << ", sup " << sup << ", wordSize " << wordSize << "\n";
|
||||
Word before = m.read(a);
|
||||
Word new_word = w;
|
||||
|
||||
// if (a == 0x00010000)
|
||||
// {
|
||||
// fprintf(stderr, "%c", w);
|
||||
// }
|
||||
|
||||
if (wordSize == 8)
|
||||
{
|
||||
r.writeByte(a, &w);
|
||||
}
|
||||
else if (wordSize == 16)
|
||||
{
|
||||
r.writeHalf(a, &w);
|
||||
}
|
||||
else
|
||||
{
|
||||
r.writeWord(a, &w);
|
||||
}
|
||||
// m.write(a, new_word);
|
||||
}
|
||||
|
||||
Byte *MemoryUnit::getPtr(Addr a, Size s) {
|
||||
return ad.getPtr(a, s, addrBytes*8);
|
||||
}
|
||||
|
||||
void MemoryUnit::attach(MemDevice &m, Addr base) {
|
||||
ad.map(base, m, m.size(), addrBytes*8 - 1);
|
||||
}
|
||||
|
||||
MemoryUnit::TLBEntry MemoryUnit::tlbLookup(Addr vAddr, Word flagMask) {
|
||||
map<Addr, MemoryUnit::TLBEntry>::iterator i;
|
||||
if ((i = tlb.find(vAddr/pageSize)) != tlb.end()) {
|
||||
TLBEntry &t = i->second;
|
||||
if (t.flags & flagMask) return t;
|
||||
else {
|
||||
D(2, "Page fault on addr 0x" << hex << vAddr << "(bad flags)");
|
||||
throw PageFault(vAddr, false);
|
||||
}
|
||||
} else {
|
||||
D(2, "Page fault on addr 0x" << hex << vAddr << "(not in TLB)");
|
||||
throw PageFault(vAddr, true);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef EMU_INSTRUMENTATION
|
||||
Addr MemoryUnit::virtToPhys(Addr vAddr) {
|
||||
TLBEntry t = tlbLookup(vAddr, 077);
|
||||
return t.pfn*pageSize + vAddr%pageSize;
|
||||
}
|
||||
#endif
|
||||
|
||||
Word MemoryUnit::read(Addr vAddr, bool sup) {
|
||||
Addr pAddr;
|
||||
if (disableVm) {
|
||||
pAddr = vAddr;
|
||||
} else {
|
||||
Word flagMask = sup?8:1;
|
||||
TLBEntry t = tlbLookup(vAddr, flagMask);
|
||||
pAddr = t.pfn*pageSize + vAddr%pageSize;
|
||||
}
|
||||
// std::cout << "MU::write: About to read: " << std::hex << pAddr << " = " << (ad.read(pAddr, sup, 8*addrBytes)) << " with " << std::dec << (8*addrBytes) << "\n";
|
||||
return ad.read(pAddr, sup, 8*addrBytes);
|
||||
}
|
||||
|
||||
Word MemoryUnit::fetch(Addr vAddr, bool sup) {
|
||||
Addr pAddr;
|
||||
|
||||
if (disableVm) {
|
||||
pAddr = vAddr;
|
||||
} else {
|
||||
Word flagMask = sup?32:4;
|
||||
TLBEntry t = tlbLookup(vAddr, flagMask);
|
||||
pAddr = t.pfn*pageSize + vAddr%pageSize;
|
||||
}
|
||||
|
||||
Word instruction = ad.read(pAddr, sup, 8*addrBytes);
|
||||
|
||||
return instruction;
|
||||
}
|
||||
|
||||
void MemoryUnit::write(Addr vAddr, Word w, bool sup, Size bytes) {
|
||||
Addr pAddr;
|
||||
|
||||
if (disableVm) {
|
||||
pAddr = vAddr;
|
||||
} else {
|
||||
Word flagMask = sup?16:2;
|
||||
TLBEntry t = tlbLookup(vAddr, flagMask);
|
||||
pAddr = t.pfn*pageSize + vAddr%pageSize;
|
||||
}
|
||||
// std::cout << "MU::write: About to write: " << std::hex << pAddr << " = " << w << " with " << std::dec << 8*bytes << "\n";
|
||||
ad.write(pAddr, w, sup, 8*bytes);
|
||||
// std::cout << std::hex << "reading same address: " << (this->read(vAddr, sup)) << "\n";
|
||||
}
|
||||
|
||||
void MemoryUnit::tlbAdd(Addr virt, Addr phys, Word flags) {
|
||||
D(1, "tlbAdd(0x" << hex << virt << ", 0x" << phys << ", 0x" << flags << ')');
|
||||
tlb[virt/pageSize] = TLBEntry(phys/pageSize, flags);
|
||||
}
|
||||
|
||||
void MemoryUnit::tlbRm(Addr va) {
|
||||
if (tlb.find(va/pageSize) != tlb.end()) tlb.erase(tlb.find(va/pageSize));
|
||||
}
|
||||
|
||||
void *Harp::consoleInputThread(void* arg_vp) {
|
||||
ConsoleMemDevice *arg = (ConsoleMemDevice *)arg_vp;
|
||||
char c;
|
||||
while (cin) {
|
||||
c = cin.get();
|
||||
pthread_mutex_lock(&arg->cBufLock);
|
||||
arg->cBuf.push(c);
|
||||
pthread_mutex_unlock(&arg->cBufLock);
|
||||
}
|
||||
cout << "Console input ended. Exiting.\n";
|
||||
exit(4);
|
||||
}
|
||||
|
||||
ConsoleMemDevice::ConsoleMemDevice(Size wS, std::ostream &o, Core &core,
|
||||
bool batch) :
|
||||
wordSize(wS), output(o), core(core), cBuf()
|
||||
{
|
||||
// Create a console input thread if we are running in interactive mode.
|
||||
if (!batch) {
|
||||
pthread_t *thread = new pthread_t;
|
||||
pthread_create(thread, NULL, consoleInputThread, (void*)this);
|
||||
}
|
||||
pthread_mutex_init(&cBufLock, NULL);
|
||||
}
|
||||
|
||||
void ConsoleMemDevice::poll() {
|
||||
pthread_mutex_lock(&cBufLock);
|
||||
if (!cBuf.empty()) core.interrupt(8);
|
||||
pthread_mutex_unlock(&cBufLock);
|
||||
}
|
||||
|
||||
Word DiskControllerMemDevice::read(Addr a) {
|
||||
switch (a/8) {
|
||||
case 0: return curDisk;
|
||||
case 1: return curBlock;
|
||||
case 2: return disks[curDisk].blocks * blockSize;
|
||||
case 3: return physAddr;
|
||||
case 4: return command;
|
||||
case 5: return status;
|
||||
default:
|
||||
cout << "Attempt to read invalid disk controller register.\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
void DiskControllerMemDevice::write(Addr a, Word w) {
|
||||
switch (a/8) {
|
||||
case 0: if (w <= disks.size()) {
|
||||
curDisk = w;
|
||||
status = OK;
|
||||
} else {
|
||||
status = INVALID_DISK;
|
||||
}
|
||||
break;
|
||||
case 1: if (w < disks[curDisk].blocks) {
|
||||
curBlock = w;
|
||||
} else {
|
||||
status = INVALID_BLOCK;
|
||||
}
|
||||
break;
|
||||
case 2: nBlocks = w >= disks[curDisk].blocks?disks[curDisk].blocks - 1 : w;
|
||||
status = OK;
|
||||
break;
|
||||
case 3: physAddr = w;
|
||||
status = OK;
|
||||
break;
|
||||
case 4: if (w == 0) {
|
||||
} else {
|
||||
}
|
||||
cout << "TODO: Implement disk read and write!\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
1
simX/results.txt
Normal file
1
simX/results.txt
Normal file
|
@ -0,0 +1 @@
|
|||
start
|
50
simX/riscv_tests/C.ADD.elf.hex
Normal file
50
simX/riscv_tests/C.ADD.elf.hex
Normal file
|
@ -0,0 +1,50 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F10142814192910EC081441F
|
||||
:100100000544269422C201469305F0FFB2952EC401
|
||||
:100110000147B78600009386F6FFBA9636C60148B7
|
||||
:10012000A167C2973EC8171100001301E1EE05490F
|
||||
:100130008148CA9846C0054A8549D2994EC2054BA6
|
||||
:10014000930AF0FFDA9A56C4054CB78B0000938BE4
|
||||
:10015000FBFFE29B5EC6054DA16CEA9C66C81711C9
|
||||
:1001600000001301A1EC130EF0FF814DF29D6EC053
|
||||
:10017000130FF0FF854EFA9E76C29301F0FF930FA6
|
||||
:10018000F0FF8E9F7EC41304F0FF3782000013023D
|
||||
:10019000F2FF229212C69305F0FFA164AE9426C826
|
||||
:1001A000171100001301C1E9B78600009386F6FF1E
|
||||
:1001B0000146369632C0B78700009387F7FF0547A0
|
||||
:1001C0003E973AC2B78800009388F8FF1308F0FF03
|
||||
:1001D000469842C4B78900009389F9FF3789000027
|
||||
:1001E0001309F9FF4E994AC6B78A0000938AFAFFAD
|
||||
:1001F000216A569A52C8171100001301A1E5A16B9C
|
||||
:10020000014B5E9B5AC0A16C054C669C62C2A16DFD
|
||||
:10021000130DF0FF6E9D6AC4A16E378E0000130EA1
|
||||
:10022000FEFF769E72C6A16F216F7E9F7AC817155A
|
||||
:100230000000130525DD971500009385A5E337061B
|
||||
:1002400010F01306C6F2630CB500544514C21445F1
|
||||
:1002500014C2544114C2144114C24105EDB737050C
|
||||
:1002600010F0130505F22320050000000000000037
|
||||
:0202700000008C
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
45
simX/riscv_tests/C.ADDI.elf.hex
Normal file
45
simX/riscv_tests/C.ADDI.elf.hex
Normal file
|
@ -0,0 +1,45 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1814185010EC00142090276
|
||||
:1001000012C201443D0422C48144C10426C6814573
|
||||
:10011000FD052EC817110000130101F00546050664
|
||||
:1001200032C08546890636C205473D073AC4854731
|
||||
:10013000C1073EC605487D0842C8171100001301DB
|
||||
:10014000E1EE9308F0FF850846C01309F0FF0909A6
|
||||
:100150004AC29309F0FFBD094EC4130AF0FF410AD9
|
||||
:1001600052C6930AF0FFFD0A56C81711000013018A
|
||||
:1001700021ED370B0800130BFBFF050B5AC0B70B23
|
||||
:100180000800938BFBFF890B5EC2370C0800130C31
|
||||
:10019000FCFF3D0C62C4B70C0800938CFCFFC10C43
|
||||
:1001A00066C6370D0800130DFDFF7D0D6AC81711D7
|
||||
:1001B0000000130121EAB70D0800850D6EC0370E4F
|
||||
:1001C0000800090E72C2B70E0800BD0E76C4370FC4
|
||||
:1001D0000800410F7AC6B70F0800FD0F7EC817153B
|
||||
:1001E0000000130525E2971500009385A5E8370662
|
||||
:1001F00010F01306C6F2630CB500544514C2144542
|
||||
:1002000014C2544114C2144114C24105EDB737055C
|
||||
:1002100010F0130505F22320050000000000000087
|
||||
:020220000000DC
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
29
simX/riscv_tests/C.ADDI16SP.elf.hex
Normal file
29
simX/riscv_tests/C.ADDI16SP.elf.hex
Normal file
|
@ -0,0 +1,29 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E0000100010001000100010001000100971062
|
||||
:1000F0000000938020F1410123A020009710000010
|
||||
:10010000938080F0056123A0200097100000938069
|
||||
:10011000E0EF216123A0200097100000938040EFC2
|
||||
:100120007D6123A02000971000009380A0EE017154
|
||||
:1001300023A02000171500001305C5EC971500003B
|
||||
:10014000938545EE370610F01306C6F2630CB50032
|
||||
:10015000544514C2144514C2544114C2144114C26B
|
||||
:100160004105EDB7370510F0130505F22320050012
|
||||
:0201700000008D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000000000000000000D4
|
||||
:040000058000000077
|
||||
:00000001FF
|
29
simX/riscv_tests/C.ADDI4SPN.elf.hex
Normal file
29
simX/riscv_tests/C.ADDI4SPN.elf.hex
Normal file
|
@ -0,0 +1,29 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E0000100010001000100010001000100971062
|
||||
:1000F0000000938020F1500023A0C0009710000062
|
||||
:10010000938080F0340023A0D000971000009380EB
|
||||
:10011000E0EF780023A0E00097100000938040EF0C
|
||||
:100120001C0823A0F000971000009380A0EEE01FB1
|
||||
:1001300023A08000171500001305C5EC97150000DB
|
||||
:10014000938545EE370610F01306C6F2630CB50032
|
||||
:10015000544514C2144514C2544114C2144114C26B
|
||||
:100160004105EDB7370510F0130505F22320050012
|
||||
:0201700000008D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000000000000000000D4
|
||||
:040000058000000077
|
||||
:00000001FF
|
50
simX/riscv_tests/C.AND.elf.hex
Normal file
50
simX/riscv_tests/C.AND.elf.hex
Normal file
|
@ -0,0 +1,50 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F181458144ED8C26C0814629
|
||||
:100100000546758E32C281471307F0FF7D8F3AC4D2
|
||||
:100110008144378400001304F4FF658C22C6014635
|
||||
:10012000A165F18D2EC8171100001301E1EE0547FE
|
||||
:100130008146F98E36C005448547E18F3EC285452C
|
||||
:100140009304F0FFED8C26C4854637860000130625
|
||||
:10015000F6FF758E32C6854721677D8F3AC8171125
|
||||
:1001600000001301A1EC9304F0FF0144658C22C050
|
||||
:100170001306F0FF8545F18D2EC21307F0FF93069D
|
||||
:10018000F0FFF98E36C41304F0FFB78700009387A1
|
||||
:10019000F7FFE18F3EC69305F0FFA164ED8C26C802
|
||||
:1001A000171100001301C1E9B78600009386F6FF1E
|
||||
:1001B0000146758E32C0B78700009387F7FF054769
|
||||
:1001C0007D8F3AC2B78400009384F4FF1304F0FFDC
|
||||
:1001D000658C22C4378600001306F6FFB785000041
|
||||
:1001E0009385F5FFF18D2EC6378700001307F7FFC3
|
||||
:1001F000A166F98E36C8171100001301A1E521642C
|
||||
:100200008147E18F3EC0A1658544ED8C26C2A16681
|
||||
:100210001306F0FF758E32C4A167378700001307FD
|
||||
:10022000F7FF7D8F3AC6A1642164658C22C817153B
|
||||
:100230000000130525DD971500009385A5E337061B
|
||||
:1002400010F01306C6F2630CB500544514C21445F1
|
||||
:1002500014C2544114C2144114C24105EDB737050C
|
||||
:1002600010F0130505F22320050000000000000037
|
||||
:0202700000008C
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
45
simX/riscv_tests/C.ANDI.elf.hex
Normal file
45
simX/riscv_tests/C.ANDI.elf.hex
Normal file
|
@ -0,0 +1,45 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1814581892EC00146058A46
|
||||
:1001000032C28146C18A36C401477D8B3AC68147D7
|
||||
:10011000859B3EC817110000130101F005440188BA
|
||||
:1001200022C08544858826C28545C1892EC40546DE
|
||||
:100130007D8A32C68546859A36C81711000013019C
|
||||
:10014000E1EE1307F0FF018B3AC09307F0FF858BB8
|
||||
:100150003EC21304F0FF418822C49304F0FFFD88DF
|
||||
:1001600026C69305F0FF85992EC8171100001301CC
|
||||
:1001700021ED370608001306F6FF018A32C0B706E4
|
||||
:1001800008009386F6FF858A36C2370708001307F2
|
||||
:10019000F7FF418B3AC4B70708009387F7FFFD8B41
|
||||
:1001A0003EC6370408001304F4FF059822C817114F
|
||||
:1001B0000000130121EAB7040800818826C0B705B2
|
||||
:1001C000080085892EC237060800418A32C4B70666
|
||||
:1001D0000800FD8A36C637070800059B3AC8171580
|
||||
:1001E0000000130525E2971500009385A5E8370662
|
||||
:1001F00010F01306C6F2630CB500544514C2144542
|
||||
:1002000014C2544114C2144114C24105EDB737055C
|
||||
:1002100010F0130505F22320050000000000000087
|
||||
:020220000000DC
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
33
simX/riscv_tests/C.BEQZ.elf.hex
Normal file
33
simX/riscv_tests/C.BEQZ.elf.hex
Normal file
|
@ -0,0 +1,33 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F181479D8F89C7B7270100B7
|
||||
:100100009387B73A3EC0171100001301E1EF054491
|
||||
:10011000018C09C4372401001304B43A22C017111A
|
||||
:1001200000001301A1EEFD54858C89C4B7240100A1
|
||||
:100130009384B43A26C017110000130161EDB7850E
|
||||
:1001400000009385F5FF8D8D89C5B7250100938546
|
||||
:10015000B53A2EC0171100001301C1EB2166118EB4
|
||||
:1001600009C6372601001306B63A32C0171500003B
|
||||
:10017000130545E9971500009385C5EA370610F089
|
||||
:100180001306C6F2630CB500544514C2144514C2DC
|
||||
:10019000544114C2144114C24105EDB7370510F0A3
|
||||
:1001A000130505F2232005000000000000000000F8
|
||||
:0201B00000004D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000000000000000000D4
|
||||
:040000058000000077
|
||||
:00000001FF
|
30
simX/riscv_tests/C.BNEZ.elf.hex
Normal file
30
simX/riscv_tests/C.BNEZ.elf.hex
Normal file
|
@ -0,0 +1,30 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1814691E2814636C01711BB
|
||||
:100100000000130161F0054711E301473AC01711E0
|
||||
:1001100000001301A1EFFD5791E381473EC0171185
|
||||
:1001200000001301E1EE378400001304F4FF11E036
|
||||
:10013000014422C0171100001301C1EDA16491E038
|
||||
:10014000814426C0171500001305C5EB9715000064
|
||||
:10015000938545ED370610F01306C6F2630CB50023
|
||||
:10016000544514C2144514C2544114C2144114C25B
|
||||
:100170004105EDB7370510F0130505F22320050002
|
||||
:0201800000007D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000000000000000000D4
|
||||
:040000058000000077
|
||||
:00000001FF
|
32
simX/riscv_tests/C.J.elf.hex
Normal file
32
simX/riscv_tests/C.J.elf.hex
Normal file
|
@ -0,0 +1,32 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1814529A0B7250100938556
|
||||
:10010000B53A2EC017110000130101F0054629A0D1
|
||||
:10011000372601001306B63A32C01711000013014A
|
||||
:10012000E1EEFD5629A0B72601009386B63A36C007
|
||||
:10013000171100001301C1ED378700001307F7FF07
|
||||
:1001400029A0372701001307B73A3AC0171100005A
|
||||
:10015000130141ECA16729A0B72701009387B73AA3
|
||||
:100160003EC0171500001305E5E9971500009385BB
|
||||
:1001700065EB370610F01306C6F2630CB500544564
|
||||
:1001800014C2144514C2544114C2144114C241058E
|
||||
:10019000EDB7370510F0130505F223200500000028
|
||||
:0201A00000005D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000000000000000000D4
|
||||
:040000058000000077
|
||||
:00000001FF
|
32
simX/riscv_tests/C.JAL.elf.hex
Normal file
32
simX/riscv_tests/C.JAL.elf.hex
Normal file
|
@ -0,0 +1,32 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F101442920372401001304D9
|
||||
:10010000B43A22C017110000130101F085442920E0
|
||||
:10011000B72401009384B43A26C0171100001301DC
|
||||
:10012000E1EEFD552920B72501009385B53A2EC093
|
||||
:10013000171100001301C1ED378600001306F6FF0A
|
||||
:100140002920372601001306B63A32C017110000E5
|
||||
:10015000130141ECA1662920B72601009386B63A27
|
||||
:1001600036C0171500001305E5E9971500009385C3
|
||||
:1001700065EB370610F01306C6F2630CB500544564
|
||||
:1001800014C2144514C2544114C2144114C241058E
|
||||
:10019000EDB7370510F0130505F223200500000028
|
||||
:0201A00000005D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000000000000000000D4
|
||||
:040000058000000077
|
||||
:00000001FF
|
35
simX/riscv_tests/C.JALR.elf.hex
Normal file
35
simX/riscv_tests/C.JALR.elf.hex
Normal file
|
@ -0,0 +1,35 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F10145170600001306260137
|
||||
:100100000296372501001305B53A32C017110000D9
|
||||
:10011000130181EF0545970600009386260182961C
|
||||
:10012000372501001305B53A36C017110000130139
|
||||
:10013000E1ED7D55170700001307270102973725CA
|
||||
:1001400001001305B53A3AC017110000130141EC44
|
||||
:10015000378500001305F5FF9707000093872701F7
|
||||
:100160008297372501001305B53A3EC017110000EC
|
||||
:10017000130141EA216517080000130828010298BD
|
||||
:10018000372501001305B53A42C0171500001305C5
|
||||
:1001900065E7971500009385E5E8370610F013062C
|
||||
:1001A000C6F2630CB500544514C2144514C2544140
|
||||
:1001B00014C2144114C24105EDB7370510F0130500
|
||||
:1001C00005F22320050000000000000000000000F0
|
||||
:0201D00000002D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000000000000000000D4
|
||||
:040000058000000077
|
||||
:00000001FF
|
35
simX/riscv_tests/C.JR.elf.hex
Normal file
35
simX/riscv_tests/C.JR.elf.hex
Normal file
|
@ -0,0 +1,35 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F101459701000093812101C6
|
||||
:100100008281372501001305B53A0EC01711000092
|
||||
:10011000130181EF0545170200001302220102823C
|
||||
:10012000372501001305B53A12C01711000013015D
|
||||
:10013000E1ED7D55170400001304240102843725E6
|
||||
:1001400001001305B53A22C017110000130141EC5C
|
||||
:10015000378500001305F5FF970400009384240100
|
||||
:100160008284372501001305B53A26C01711000017
|
||||
:10017000130141EA216597050000938525018285D9
|
||||
:10018000372501001305B53A2EC0171500001305D9
|
||||
:1001900065E7971500009385E5E8370610F013062C
|
||||
:1001A000C6F2630CB500544514C2144514C2544140
|
||||
:1001B00014C2144114C24105EDB7370510F0130500
|
||||
:1001C00005F22320050000000000000000000000F0
|
||||
:0201D00000002D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000000000000000000D4
|
||||
:040000058000000077
|
||||
:00000001FF
|
45
simX/riscv_tests/C.LI.elf.hex
Normal file
45
simX/riscv_tests/C.LI.elf.hex
Normal file
|
@ -0,0 +1,45 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1814181410EC001420542FE
|
||||
:1001000012C20144414422C48144FD4426C68145B3
|
||||
:1001100085552EC817110000130101F00546014650
|
||||
:1001200032C08546854636C2054741473AC48547B1
|
||||
:10013000FD473EC60548055842C817110000130187
|
||||
:10014000E1EE9308F0FF814846C01309F0FF05492E
|
||||
:100150004AC29309F0FFC1494EC4130AF0FF7D4A19
|
||||
:1001600052C6930AF0FF855A56C8171100001301B2
|
||||
:1001700021ED370B0800130BFBFF014B5AC0B70BE7
|
||||
:100180000800938BFBFF854B5EC2370C0800130CF5
|
||||
:10019000FCFF414C62C4B70C0800938CFCFFFD4C83
|
||||
:1001A00066C6370D0800130DFDFF055D6AC81711FF
|
||||
:1001B0000000130121EAB70D0800814D6EC0370E13
|
||||
:1001C0000800054E72C2B70E0800C14E76C4370F44
|
||||
:1001D00008007D4F7AC6B70F0800855F7EC81715E7
|
||||
:1001E0000000130525E2971500009385A5E8370662
|
||||
:1001F00010F01306C6F2630CB500544514C2144542
|
||||
:1002000014C2544114C2144114C24105EDB737055C
|
||||
:1002100010F0130505F22320050000000000000087
|
||||
:020220000000DC
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
45
simX/riscv_tests/C.LUI.elf.hex
Normal file
45
simX/riscv_tests/C.LUI.elf.hex
Normal file
|
@ -0,0 +1,45 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1814185610EC001420962B6
|
||||
:1001000012C201443D6422C48144FD6426C6814577
|
||||
:10011000FD752EC817110000130101F00546056694
|
||||
:1001200032C08546896636C205473D673AC4854771
|
||||
:10013000FD673EC605487D7842C8171100001301CF
|
||||
:10014000E1EE9308F0FF856846C01309F0FF0969E6
|
||||
:100150004AC29309F0FFBD694EC4130AF0FF7D6ADD
|
||||
:1001600052C6930AF0FFFD7A56C81711000013011A
|
||||
:1001700021ED370B0800130BFBFF056B5AC0B70BC3
|
||||
:100180000800938BFBFF896B5EC2370C0800130CD1
|
||||
:10019000FCFF3D6C62C4B70C0800938CFCFFFD6C47
|
||||
:1001A00066C6370D0800130DFDFF7D7D6AC8171167
|
||||
:1001B0000000130121EAB70D0800856D6EC0370EEF
|
||||
:1001C0000800096E72C2B70E0800BD6E76C4370F04
|
||||
:1001D00008007D6F7AC6B70F0800FD7F7EC817152F
|
||||
:1001E0000000130525E2971500009385A5E8370662
|
||||
:1001F00010F01306C6F2630CB500544514C2144542
|
||||
:1002000014C2544114C2144114C24105EDB737055C
|
||||
:1002100010F0130505F22320050000000000000087
|
||||
:020220000000DC
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
39
simX/riscv_tests/C.LW.elf.hex
Normal file
39
simX/riscv_tests/C.LW.elf.hex
Normal file
|
@ -0,0 +1,39 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1171700001307E7F118435F
|
||||
:100100003AC017110000130121F0971700009387E0
|
||||
:10011000A7F0DC433EC017110000130121EF1714B4
|
||||
:100120000000130464EF004422C017110000130103
|
||||
:1001300021EE97140000938424EEE45026C017119A
|
||||
:100140000000130121ED971600009386E6ECF45EA3
|
||||
:1001500036C0171500001305E5EA971500009385D2
|
||||
:1001600065F4370610F01306C6F2630CB50054456B
|
||||
:1001700014C2144514C2544114C2144114C241059E
|
||||
:10018000EDB7370510F0130505F223200500000038
|
||||
:0201900000006D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000100000002000000D1
|
||||
:1010200003000000040000000500000006000000AE
|
||||
:101030000700000008000000090000000A0000008E
|
||||
:101040000B0000000C0000000D0000000E0000006E
|
||||
:101050000F0000001000000011000000120000004E
|
||||
:10106000130000001400000015000000160000002E
|
||||
:101070001700000018000000190000001A0000000E
|
||||
:101080001B0000001C0000001D0000001E000000EE
|
||||
:101090001F00000000000000000000000000000031
|
||||
:040000058000000077
|
||||
:00000001FF
|
40
simX/riscv_tests/C.LWSP.elf.hex
Normal file
40
simX/riscv_tests/C.LWSP.elf.hex
Normal file
|
@ -0,0 +1,40 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E0000100010001000100010001000100971062
|
||||
:1000F0000000938020F1171100001301E1F102428A
|
||||
:1001000023A0400097100000938000F0171100001A
|
||||
:10011000130181F0124423A0800097100000938007
|
||||
:10012000E0EE17110000130121EF224823A0000187
|
||||
:10013000971000009380C0ED171100001301C1ED6E
|
||||
:10014000F65F23A0F001971000009380A0EC171138
|
||||
:100150000000130161ECFE5A23A0500117150000A6
|
||||
:10016000130545EA971500009385C5F3370610F08F
|
||||
:100170001306C6F2630CB500544514C2144514C2EC
|
||||
:10018000544114C2144114C24105EDB7370510F0B3
|
||||
:10019000130505F223200500000000000000000008
|
||||
:0201A00000005D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFF000000000100000002000000D1
|
||||
:1010200003000000040000000500000006000000AE
|
||||
:101030000700000008000000090000000A0000008E
|
||||
:101040000B0000000C0000000D0000000E0000006E
|
||||
:101050000F0000001000000011000000120000004E
|
||||
:10106000130000001400000015000000160000002E
|
||||
:101070001700000018000000190000001A0000000E
|
||||
:101080001B0000001C0000001D0000001E000000EE
|
||||
:101090001F00000000000000000000000000000031
|
||||
:040000058000000077
|
||||
:00000001FF
|
50
simX/riscv_tests/C.MV.elf.hex
Normal file
50
simX/riscv_tests/C.MV.elf.hex
Normal file
|
@ -0,0 +1,50 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F101468145B2852EC0014760
|
||||
:100100008546BA8636C201449307F0FFA2873EC4F3
|
||||
:100110008145B78400009384F4FFAE8426C68146EF
|
||||
:100120002166368632C8171100001301E1EE8547BB
|
||||
:1001300001473E873AC085440544268422C20546CD
|
||||
:100140009305F0FFB2852EC40547B786000093865D
|
||||
:10015000F6FFBA8636C60544A167A2873EC81711C6
|
||||
:1001600000001301A1EC9305F0FF8144AE8426C08A
|
||||
:100170009306F0FF0546368632C29307F0FF130759
|
||||
:10018000F0FF3E873AC49304F0FF37840000130465
|
||||
:10019000F4FF268422C61306F0FFA165B2852EC89F
|
||||
:1001A000171100001301C1E9378700001307F7FF9B
|
||||
:1001B0008146BA8636C0378400001304F4FF8547B1
|
||||
:1001C000A2873EC2B78500009385F5FF9304F0FF38
|
||||
:1001D000AE8426C4B78600009386F6FF37860000FB
|
||||
:1001E0001306F6FF368632C6B78700009387F7FFFF
|
||||
:1001F00021673E873AC8171100001301A1E5A164E9
|
||||
:100200000144268422C021668545B2852EC221671D
|
||||
:100210009306F0FFBA8636C42164B787000093873F
|
||||
:10022000F7FFA2873EC6A165A164AE8426C8171554
|
||||
:100230000000130525DD971500009385A5E337061B
|
||||
:1002400010F01306C6F2630CB500544514C21445F1
|
||||
:1002500014C2544114C2144114C24105EDB737050C
|
||||
:1002600010F0130505F22320050000000000000037
|
||||
:0202700000008C
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
50
simX/riscv_tests/C.OR.elf.hex
Normal file
50
simX/riscv_tests/C.OR.elf.hex
Normal file
|
@ -0,0 +1,50 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F101448147C18F3EC08145B9
|
||||
:100100008544CD8C26C281461306F0FF558E32C43D
|
||||
:100110008147378700001307F7FF5D8F3AC6814498
|
||||
:100120002164458C22C8171100001301E1EE054639
|
||||
:100130008145D18D2EC005478546D98E36C20544EE
|
||||
:100140009307F0FFC18F3EC48545B78400009384B8
|
||||
:10015000F4FFCD8C26C685462166558E32C8171110
|
||||
:1001600000001301A1EC9307F0FF01475D8F3AC037
|
||||
:100170009304F0FF0544458C22C21306F0FF93055B
|
||||
:10018000F0FFD18D2EC41307F0FFB78600009386D1
|
||||
:10019000F6FFD98E36C61304F0FFA167C18F3EC8A3
|
||||
:1001A000171100001301C1E9B78500009385F5FF21
|
||||
:1001B0008144CD8C26C0B78600009386F6FF0546A5
|
||||
:1001C000558E32C2B78700009387F7FF1307F0FF01
|
||||
:1001D0005D8F3AC4B78400009384F4FF3784000035
|
||||
:1001E0001304F4FF458C22C6378600001306F6FF81
|
||||
:1001F000A165D18D2EC8171100001301A1E521675B
|
||||
:100200008146D98E36C021648547C18F3EC2A16523
|
||||
:100210009304F0FFCD8C26C4A16637860000130638
|
||||
:10022000F6FF558E32C6A16721675D8F3AC8171554
|
||||
:100230000000130525DD971500009385A5E337061B
|
||||
:1002400010F01306C6F2630CB500544514C21445F1
|
||||
:1002500014C2544114C2144114C24105EDB737050C
|
||||
:1002600010F0130505F22320050000000000000037
|
||||
:0202700000008C
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
45
simX/riscv_tests/C.SLLI.elf.hex
Normal file
45
simX/riscv_tests/C.SLLI.elf.hex
Normal file
|
@ -0,0 +1,45 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1814186010EC001420A0274
|
||||
:1001000012C201443E0422C48144C20426C6814571
|
||||
:10011000FE052EC817110000130101F00546060662
|
||||
:1001200032C085468A0636C205473E073AC485472F
|
||||
:10013000C2073EC605487E0842C8171100001301D9
|
||||
:10014000E1EE9308F0FF860846C01309F0FF0A09A4
|
||||
:100150004AC29309F0FFBE094EC4130AF0FF420AD7
|
||||
:1001600052C6930AF0FFFE0A56C817110000130189
|
||||
:1001700021ED370B0800130BFBFF060B5AC0B70B22
|
||||
:100180000800938BFBFF8A0B5EC2370C0800130C30
|
||||
:10019000FCFF3E0C62C4B70C0800938CFCFFC20C41
|
||||
:1001A00066C6370D0800130DFDFF7E0D6AC81711D6
|
||||
:1001B0000000130121EAB70D0800860D6EC0370E4E
|
||||
:1001C00008000A0E72C2B70E0800BE0E76C4370FC2
|
||||
:1001D0000800420F7AC6B70F0800FE0F7EC8171539
|
||||
:1001E0000000130525E2971500009385A5E8370662
|
||||
:1001F00010F01306C6F2630CB500544514C2144542
|
||||
:1002000014C2544114C2144114C24105EDB737055C
|
||||
:1002100010F0130505F22320050000000000000087
|
||||
:020220000000DC
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
45
simX/riscv_tests/C.SRAI.elf.hex
Normal file
45
simX/riscv_tests/C.SRAI.elf.hex
Normal file
|
@ -0,0 +1,45 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F18144858426C08145898552
|
||||
:100100002EC201463D8632C48146C18636C60147AD
|
||||
:100110007D873AC817110000130101F085478587D4
|
||||
:100120003EC00544098422C28544BD8426C4854559
|
||||
:10013000C1852EC605467D8632C817110000130101
|
||||
:10014000E1EE9306F0FF858636C01307F0FF0987BE
|
||||
:100150003AC29307F0FFBD873EC41304F0FF418409
|
||||
:1001600022C69304F0FFFD8426C817110000130176
|
||||
:1001700021EDB70508009385F5FF85852EC037066C
|
||||
:1001800008001306F6FF098632C2B70608009386F8
|
||||
:10019000F6FFBD8636C4370708001307F7FF41870F
|
||||
:1001A0003AC6B70708009387F7FFFD873EC81711C7
|
||||
:1001B0000000130121EA37040800058422C0B704B7
|
||||
:1001C0000800898426C2B7050800BD852EC43706FD
|
||||
:1001D0000800418632C6B7060800FD8636C81715E6
|
||||
:1001E0000000130525E2971500009385A5E8370662
|
||||
:1001F00010F01306C6F2630CB500544514C2144542
|
||||
:1002000014C2544114C2144114C24105EDB737055C
|
||||
:1002100010F0130505F22320050000000000000087
|
||||
:020220000000DC
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
45
simX/riscv_tests/C.SRLI.elf.hex
Normal file
45
simX/riscv_tests/C.SRLI.elf.hex
Normal file
|
@ -0,0 +1,45 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1014705833AC0814789833C
|
||||
:100100003EC201443D8022C48144C18026C681454F
|
||||
:10011000FD812EC817110000130101F0054605826C
|
||||
:1001200032C08546898236C205473D833AC4854739
|
||||
:10013000C1833EC605447D8022C81711000013010B
|
||||
:10014000E1EE9304F0FF858026C09305F0FF8981DE
|
||||
:100150002EC21306F0FF3D8232C49306F0FFC18227
|
||||
:1001600036C61307F0FF7D833AC81711000013014C
|
||||
:1001700021EDB70708009387F7FF85833EC037045A
|
||||
:1001800008001304F4FF098022C2B7040800938416
|
||||
:10019000F4FFBD8026C4B70508009385F5FFC18133
|
||||
:1001A0002EC6370608001306F6FF7D8232C81711E7
|
||||
:1001B0000000130121EAB7060800858236C0370720
|
||||
:1001C000080009833AC2B7070800BD833EC437045C
|
||||
:1001D0000800418022C6B7040800FD8026C8171514
|
||||
:1001E0000000130525E2971500009385A5E8370662
|
||||
:1001F00010F01306C6F2630CB500544514C2144542
|
||||
:1002000014C2544114C2144114C24105EDB737055C
|
||||
:1002100010F0130505F22320050000000000000087
|
||||
:020220000000DC
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
50
simX/riscv_tests/C.SUB.elf.hex
Normal file
50
simX/riscv_tests/C.SUB.elf.hex
Normal file
|
@ -0,0 +1,50 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F1814581448D8C26C0814689
|
||||
:100100000546158E32C281471307F0FF1D8F3AC492
|
||||
:100110008144378400001304F4FF058C22C6014695
|
||||
:10012000A165918D2EC8171100001301E1EE05475E
|
||||
:100130008146998E36C005448547818F3EC28545EC
|
||||
:100140009304F0FF8D8C26C4854637860000130685
|
||||
:10015000F6FF158E32C6854721671D8F3AC81711E5
|
||||
:1001600000001301A1EC9304F0FF0144058C22C0B0
|
||||
:100170001306F0FF8545918D2EC21307F0FF9306FD
|
||||
:10018000F0FF998E36C41304F0FFB7870000938701
|
||||
:10019000F7FF818F3EC69305F0FFA1648D8C26C8C2
|
||||
:1001A000171100001301C1E9B78600009386F6FF1E
|
||||
:1001B0000146158E32C0B78700009387F7FF0547C9
|
||||
:1001C0001D8F3AC2B78400009384F4FF1304F0FF3C
|
||||
:1001D000058C22C4378600001306F6FFB7850000A1
|
||||
:1001E0009385F5FF918D2EC6378700001307F7FF23
|
||||
:1001F000A166998E36C8171100001301A1E521648C
|
||||
:100200008147818F3EC0A16585448D8C26C2A16641
|
||||
:100210001306F0FF158E32C4A1673787000013075D
|
||||
:10022000F7FF1D8F3AC6A1642164058C22C81715FB
|
||||
:100230000000130525DD971500009385A5E337061B
|
||||
:1002400010F01306C6F2630CB500544514C21445F1
|
||||
:1002500014C2544114C2144114C24105EDB737050C
|
||||
:1002600010F0130505F22320050000000000000037
|
||||
:0202700000008C
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
41
simX/riscv_tests/C.SW.elf.hex
Normal file
41
simX/riscv_tests/C.SW.elf.hex
Normal file
|
@ -0,0 +1,41 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F10144171600001306C6F198
|
||||
:1001000000C2004222C0171100001301E1EF854434
|
||||
:1001100097170000938747F0C4C3C44326C0171144
|
||||
:1001200000001301A1EE7D55971400009384C4EEE6
|
||||
:1001300088C488442AC017110000130161EDB786F6
|
||||
:1001400000009386F6FF171700001307E7EC14CBA7
|
||||
:10015000144B36C0171100001301C1EBA16717162D
|
||||
:100160000000130666EB7CDE7C5E3EC017150000C7
|
||||
:10017000130545E9971500009385C5F2370610F081
|
||||
:100180001306C6F2630CB500544514C2144514C2DC
|
||||
:10019000544114C2144114C24105EDB7370510F0A3
|
||||
:1001A000130505F2232005000000000000000000F8
|
||||
:0201B00000004D
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFF00000000000000000000000054
|
||||
:040000058000000077
|
||||
:00000001FF
|
41
simX/riscv_tests/C.SWSP.elf.hex
Normal file
41
simX/riscv_tests/C.SWSP.elf.hex
Normal file
|
@ -0,0 +1,41 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E0000100010001000100010001000100971062
|
||||
:1000F0000000938020F1171100001301E1F181410C
|
||||
:100100000EC0824123A03000971000009380C0EF02
|
||||
:1001100017110000130141F0054212C2124223A040
|
||||
:10012000400097100000938060EE1711000013014B
|
||||
:10013000A1EE7D58C2C0064823A000019710000020
|
||||
:10014000938000ED17110000130101ED378C0000C2
|
||||
:10015000130CFCFFE2DC665C23A08001971000001A
|
||||
:10016000938040EB17110000130101EBA16FFEDF3C
|
||||
:10017000FE5F23A0F001171500001305A5E89715F1
|
||||
:100180000000938525F2370610F01306C6F2630CC3
|
||||
:10019000B500544514C2144514C2544114C214414C
|
||||
:1001A00014C24105EDB7370510F0130505F2232001
|
||||
:0201B000050048
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFF00000000000000000000000054
|
||||
:040000058000000077
|
||||
:00000001FF
|
50
simX/riscv_tests/C.XOR.elf.hex
Normal file
50
simX/riscv_tests/C.XOR.elf.hex
Normal file
|
@ -0,0 +1,50 @@
|
|||
:0200000480007A
|
||||
:1000000001000100010001000100010001000100E8
|
||||
:1000100001000100010001000100010001000100D8
|
||||
:1000200001000100010001000100010001000100C8
|
||||
:1000300001000100010001000100010001000100B8
|
||||
:1000400001000100010001000100010001000100A8
|
||||
:100050000100010001000100010001000100010098
|
||||
:100060000100010001000100010001000100010088
|
||||
:100070000100010001000100010001000100010078
|
||||
:100080000100010001000100010001000100010068
|
||||
:100090000100010001000100010001000100010058
|
||||
:1000A0000100010001000100010001000100010048
|
||||
:1000B0000100010001000100010001000100010038
|
||||
:1000C0000100010001000100010001000100010028
|
||||
:1000D0000100010001000100010001000100010018
|
||||
:1000E00001000100010001000100010001001711E1
|
||||
:1000F0000000130121F181440144258C22C00146F6
|
||||
:100100008545B18D2EC201479306F0FFB98E36C4E6
|
||||
:100110000144B78700009387F7FFA18F3EC6814552
|
||||
:10012000A164AD8C26C8171100001301E1EE8546CD
|
||||
:100130000146358E32C0854705473D8F3AC285441A
|
||||
:100140001304F0FF258C22C40546B7850000938573
|
||||
:10015000F5FFB18D2EC60547A166B98E36C81711B9
|
||||
:1001600000001301A1EC1304F0FF8147A18F3EC0F2
|
||||
:100170009305F0FF8544AD8C26C29306F0FF13066D
|
||||
:10018000F0FF358E32C49307F0FF37870000130766
|
||||
:10019000F7FF3D8F3AC69304F0FF2164258C22C8F7
|
||||
:1001A000171100001301C1E9378600001306F6FF9E
|
||||
:1001B0008145B18D2EC0378700001307F7FF8546B4
|
||||
:1001C000B98E36C2378400001304F4FF9307F0FFA2
|
||||
:1001D000A18F3EC4B78500009385F5FFB78400006A
|
||||
:1001E0009384F4FFAD8C26C6B78600009386F6FF95
|
||||
:1001F0002166358E32C8171100001301A1E5A167F1
|
||||
:1002000001473D8F3AC0A1640544258C22C2216676
|
||||
:100210009305F0FFB18D2EC42167B7860000938649
|
||||
:10022000F6FFB98E36C62164A167A18F3EC81715A7
|
||||
:100230000000130525DD971500009385A5E337061B
|
||||
:1002400010F01306C6F2630CB500544514C21445F1
|
||||
:1002500014C2544114C2144114C24105EDB737050C
|
||||
:1002600010F0130505F22320050000000000000037
|
||||
:0202700000008C
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFF00000000000000000000000084
|
||||
:040000058000000077
|
||||
:00000001FF
|
52
simX/riscv_tests/DIV.elf.hex
Normal file
52
simX/riscv_tests/DIV.elf.hex
Normal file
|
@ -0,0 +1,52 @@
|
|||
:0200000480007A
|
||||
:1000000017110000130101001309000093080000FC
|
||||
:10001000B348190323201101130A000093091000AB
|
||||
:10002000B3493A0323223101130B0000930AF0FF76
|
||||
:10003000B34A5B0323245101130C0000B70B00806B
|
||||
:10004000938BFBFFB34B7C0323267101130D000040
|
||||
:10005000B70C0080B34C9D032328910117110000B9
|
||||
:10006000130181FB130E1000930D0000B34DBE036E
|
||||
:100070002320B101130F1000930E1000B34EDF03C5
|
||||
:100080002322D10193011000930FF0FFB3CFF103AE
|
||||
:100090002324F10113041000370200801302F2FF41
|
||||
:1000A000334244022326410093051000B704008028
|
||||
:1000B000B3C495022328910017110000130101F722
|
||||
:1000C0009306F0FF1306000033C6C6022320C100CA
|
||||
:1000D0009307F0FF1307100033C7E7022322E10064
|
||||
:1000E0009308F0FF1308F0FF33C80803232401012D
|
||||
:1000F0009309F0FF370900801309F9FF33C9290379
|
||||
:1001000023262101930AF0FF370A008033CA4A03ED
|
||||
:100110002328410117110000130181F2B70B008061
|
||||
:10012000938BFBFF130B000033CB6B032320610188
|
||||
:10013000B70C0080938CFCFF130C100033CC8C03A5
|
||||
:1001400023228101B70D0080938DFDFF130DF0FF79
|
||||
:1001500033CDAD032324A101B70E0080938EFEFFA3
|
||||
:10016000370E0080130EFEFF33CECE032326C101CF
|
||||
:10017000B70F0080938FFFFF370F008033CFEF035F
|
||||
:100180002328E101171100001301C1EC37020080A0
|
||||
:1001900093010000B341320223203100B7040080F4
|
||||
:1001A0001304100033C48402232281003706008028
|
||||
:1001B0009305F0FFB345B6022324B1003707008052
|
||||
:1001C000B70600809386F6FFB346D7022326D100F8
|
||||
:1001D00037080080B7070080B347F8022328F100F2
|
||||
:1001E00017150000130505E297150000938585EEAD
|
||||
:1001F000370610F01306C6F26306B5028326C50063
|
||||
:100200002320D600832685002320D60083264500A0
|
||||
:100210002320D600832605002320D60013050501E0
|
||||
:100220006FF09FFD370510F0130505F22320050040
|
||||
:0402300000000000CA
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:1010C000FFFFFFFFFFFFFFFF000000000000000028
|
||||
:040000058000000077
|
||||
:00000001FF
|
52
simX/riscv_tests/DIVU.elf.hex
Normal file
52
simX/riscv_tests/DIVU.elf.hex
Normal file
|
@ -0,0 +1,52 @@
|
|||
:0200000480007A
|
||||
:1000000017110000130101001309000093080000FC
|
||||
:10001000B358190323201101130A0000930910009B
|
||||
:10002000B3593A0323223101130B0000930AF0FF66
|
||||
:10003000B35A5B0323245101130C0000B70B00805B
|
||||
:10004000938BFBFFB35B7C0323267101130D000030
|
||||
:10005000B70C0080B35C9D032328910117110000A9
|
||||
:10006000130181FB130E1000930D0000B35DBE035E
|
||||
:100070002320B101130F1000930E1000B35EDF03B5
|
||||
:100080002322D10193011000930FF0FFB3DFF1039E
|
||||
:100090002324F10113041000370200801302F2FF41
|
||||
:1000A000335244022326410093051000B704008018
|
||||
:1000B000B3D495022328910017110000130101F712
|
||||
:1000C0009306F0FF1306000033D6C6022320C100BA
|
||||
:1000D0009307F0FF1307100033D7E7022322E10054
|
||||
:1000E0009308F0FF1308F0FF33D80803232401011D
|
||||
:1000F0009309F0FF370900801309F9FF33D9290369
|
||||
:1001000023262101930AF0FF370A008033DA4A03DD
|
||||
:100110002328410117110000130181F2B70B008061
|
||||
:10012000938BFBFF130B000033DB6B032320610178
|
||||
:10013000B70C0080938CFCFF130C100033DC8C0395
|
||||
:1001400023228101B70D0080938DFDFF130DF0FF79
|
||||
:1001500033DDAD032324A101B70E0080938EFEFF93
|
||||
:10016000370E0080130EFEFF33DECE032326C101BF
|
||||
:10017000B70F0080938FFFFF370F008033DFEF034F
|
||||
:100180002328E101171100001301C1EC37020080A0
|
||||
:1001900093010000B351320223203100B7040080E4
|
||||
:1001A0001304100033D48402232281003706008018
|
||||
:1001B0009305F0FFB355B6022324B1003707008042
|
||||
:1001C000B70600809386F6FFB356D7022326D100E8
|
||||
:1001D00037080080B7070080B357F8022328F100E2
|
||||
:1001E00017150000130505E297150000938585EEAD
|
||||
:1001F000370610F01306C6F26306B5028326C50063
|
||||
:100200002320D600832685002320D60083264500A0
|
||||
:100210002320D600832605002320D60013050501E0
|
||||
:100220006FF09FFD370510F0130505F22320050040
|
||||
:0402300000000000CA
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:1010C000FFFFFFFFFFFFFFFF000000000000000028
|
||||
:040000058000000077
|
||||
:00000001FF
|
65
simX/riscv_tests/I-ADD-01.elf.hex
Normal file
65
simX/riscv_tests/I-ADD-01.elf.hex
Normal file
|
@ -0,0 +1,65 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810277
|
||||
:1000100083A1000013020000930210001303F0FFFD
|
||||
:10002000B70300809383F3FF3704008033824100DD
|
||||
:10003000B382510033836100B38371003384810044
|
||||
:100040002320310023224100232451002326610074
|
||||
:1000500023287100232A8100971000009380C0FAA2
|
||||
:1000600017110000130181FE03A400009304000097
|
||||
:10007000130510009305F0FF370600801306F6FF06
|
||||
:10008000B7060080B30494003305A400B305B400A0
|
||||
:100090003306C400B306D40023208100232291003C
|
||||
:1000A0002324A1002326B1002328C100232AD10044
|
||||
:1000B00097100000938080F517110000130181FA5A
|
||||
:1000C00083A6000013070000930710001308F0FF39
|
||||
:1000D000B70800809388F8FF370900803387E6006F
|
||||
:1000E000B387F60033880601B388160133892601E9
|
||||
:1000F0002320D1002322E1002324F1002326010143
|
||||
:1001000023281101232A210197100000938040F039
|
||||
:1001100017110000130181F603A9000093090000E4
|
||||
:10012000130A1000930AF0FF370B0080130BFBFF3C
|
||||
:10013000B70B0080B3093901330A4901B30A5901E9
|
||||
:10014000330B6901B30B79012320210123223101F3
|
||||
:10015000232441012326510123286101232A71010F
|
||||
:1001600097100000938000EB17110000130181F23B
|
||||
:1001700083AB0000130C0000930C1000130DF0FF74
|
||||
:10018000B70D0080938DFDFF370E0080338C8B01FF
|
||||
:10019000B38C9B01338DAB01B38DBB01338ECB018F
|
||||
:1001A0002320710123228101232491012326A1010F
|
||||
:1001B0002328B101232AC101971C0000938CCCE5B0
|
||||
:1001C000171D0000130D8DEE03AE0C00930D1000F3
|
||||
:1001D000B30EBE01338FBE01B30FBF01B380BF01A9
|
||||
:1001E0003381B001B301B1012320BD012322CD0130
|
||||
:1001F0002324DD012326ED012328FD01232A1D00F0
|
||||
:10020000232C2D00232E3D0097100000938000E149
|
||||
:1002100017110000130181EB03AE0000B79DFFF73B
|
||||
:10022000938D8D813300BE012320010097100000C3
|
||||
:10023000938000DF17110000130181E903AE000075
|
||||
:10024000B79DFFF7938D8D813300BE01B30200008F
|
||||
:10025000232001002322510097100000938080DCAE
|
||||
:1002600017110000130141E783A100003382010050
|
||||
:10027000B30202003303500033070300B307070043
|
||||
:1002800033880700B30C0001330D9001B30D0D004E
|
||||
:10029000232041002322A1012324B10117150000CE
|
||||
:1002A000130545D9971500009385C5E3370610F06F
|
||||
:1002B0001306C6F26306B5028326C5002320D600C6
|
||||
:1002C000832685002320D600832645002320D600E0
|
||||
:1002D000832605002320D600130505016FF09FFD3E
|
||||
:1002E000370510F0130505F223200500000000007B
|
||||
:0402F000000000000A
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:1010100000000080CDAB00007856341298BADCFE98
|
||||
:10102000145892360000000000000000000000008C
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
|
||||
:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
|
||||
:040000058000000077
|
||||
:00000001FF
|
56
simX/riscv_tests/I-ADDI-01.elf.hex
Normal file
56
simX/riscv_tests/I-ADDI-01.elf.hex
Normal file
|
@ -0,0 +1,56 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810277
|
||||
:1000100083A10000138211009382F17F1383F1FF0B
|
||||
:1000200093830100138401802320310023224100A7
|
||||
:10003000232451002326610023287100232A8100F4
|
||||
:1000400097100000938040FC17110000130101007D
|
||||
:1000500003A40000930414001305F47F9305F4FF38
|
||||
:1000600013060400930604802320810023229100BC
|
||||
:100070002324A1002326B1002328C100232AD10074
|
||||
:1000800097100000938080F817110000130181FD84
|
||||
:1000900083A60000138716009387F67F1388F6FF68
|
||||
:1000A00093880600138906802320D1002322E100D3
|
||||
:1000B0002324F1002326010123281101232A2101F1
|
||||
:1000C000971000009380C0F417110000130101FB8A
|
||||
:1000D00003A9000093091900130AF97F930AF9FF95
|
||||
:1000E000130B0900930B09802320210123223101E6
|
||||
:1000F000232441012326510123286101232A710170
|
||||
:1001000097100000938000F117110000130181F88F
|
||||
:1001100083AB0000138C1B00938CFB7F138DFBFFC4
|
||||
:10012000938D0B00138E0B802320710123228101FC
|
||||
:10013000232491012326A1012328B101232AC101EF
|
||||
:10014000171D0000130D4DED971D0000938D0DF64A
|
||||
:10015000032E0D00930E1E00138F1E00930F1F0021
|
||||
:1001600093801F00138110009301110023A0CD0183
|
||||
:1001700023A2DD0123A4ED0123A6FD0123A81D0078
|
||||
:1001800023AA2D0023AC3D0097100000938000E9C6
|
||||
:1001900017110000130141F383A200001380120025
|
||||
:1001A0002320010097100000938080E717110000C2
|
||||
:1001B0001301C1F183A2000013801200930210000A
|
||||
:1001C000232001002322510097100000938080E536
|
||||
:1001D00017110000130101F083A100001382010038
|
||||
:1001E0009302020013830200130703009307070022
|
||||
:1001F00013880700930C0800138D0C00930D0D005D
|
||||
:1002000023203100232241002324A1012326B10110
|
||||
:1002100017150000130505E297150000938585EC7E
|
||||
:10022000370610F01306C6F26306B5028326C50032
|
||||
:100230002320D600832685002320D6008326450070
|
||||
:100240002320D600832605002320D60013050501B0
|
||||
:100250006FF09FFD370510F0130505F22320050010
|
||||
:04026000000000009A
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:1010100000000080CDAB00007856341298BADCFE98
|
||||
:10102000145892360000000000000000000000008C
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
|
||||
:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
|
||||
:040000058000000077
|
||||
:00000001FF
|
66
simX/riscv_tests/I-AND-01.elf.hex
Normal file
66
simX/riscv_tests/I-AND-01.elf.hex
Normal file
|
@ -0,0 +1,66 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810277
|
||||
:1000100083A1000013020000930210001303F0FFFD
|
||||
:10002000B70300809383F3FF3704008033F241006D
|
||||
:10003000B3F2510033F36100B3F3710033F4810084
|
||||
:100040002320310023224100232451002326610074
|
||||
:1000500023287100232A8100971000009380C0FAA2
|
||||
:1000600017110000130181FE03A400009304000097
|
||||
:10007000130510009305F0FF370600801306F6FF06
|
||||
:10008000B7060080B37494003375A400B375B40050
|
||||
:100090003376C400B376D40023208100232291005C
|
||||
:1000A0002324A1002326B1002328C100232AD10044
|
||||
:1000B00097100000938080F517110000130181FA5A
|
||||
:1000C00083A6000013070000930710001308F0FF39
|
||||
:1000D000B70800809388F8FF3709008033F7E600FF
|
||||
:1000E000B3F7F60033F80601B3F8160133F9260129
|
||||
:1000F0002320D1002322E1002324F1002326010143
|
||||
:1001000023281101232A210197100000938040F039
|
||||
:1001100017110000130181F603A9000093090000E4
|
||||
:10012000130A1000930AF0FF370B0080130BFBFF3C
|
||||
:10013000B70B0080B3793901337A4901B37A590199
|
||||
:10014000337B6901B37B7901232021012322310113
|
||||
:10015000232441012326510123286101232A71010F
|
||||
:1001600097100000938000EB17110000130181F23B
|
||||
:1001700083AB0000130C0000930C1000130DF0FF74
|
||||
:10018000B70D0080938DFDFF370E008033FC8B018F
|
||||
:10019000B3FC9B0133FDAB01B3FDBB0133FECB01CF
|
||||
:1001A0002320710123228101232491012326A1010F
|
||||
:1001B0002328B101232AC101971C0000938CCCE5B0
|
||||
:1001C000171D0000130D8DEE03AE0C001302F00797
|
||||
:1001D0009302F0031303F0019303F0001304700083
|
||||
:1001E00093043000B37E4E0033FF5E00B37F6F0098
|
||||
:1001F000B3F07F0033F18000B371910023204D00F4
|
||||
:100200002322CD012324DD012326ED012328FD0136
|
||||
:10021000232A1D00232C2D00232E3D0097100000C3
|
||||
:100220009380C0DF17110000130141EA03AE000004
|
||||
:10023000B79DFFF7938D8D813370BE0123200100A0
|
||||
:10024000971000009380C0DD17110000130141E8F2
|
||||
:1002500003AE0000B79DFFF7938D8D813370BE0113
|
||||
:10026000B3720000232001002322510097100000E8
|
||||
:10027000938040DB17110000130101E683A1000009
|
||||
:100280009303F0FF33F27100B372720033F3530043
|
||||
:1002900033777300B377770033F87700B3FC03014B
|
||||
:1002A00033FD9301B37D7D00232041002322A10172
|
||||
:1002B0002324B101171500001305C5D797150000B9
|
||||
:1002C000938545E2370610F01306C6F26306B502C1
|
||||
:1002D0008326C5002320D600832685002320D60050
|
||||
:1002E000832645002320D600832605002320D60040
|
||||
:1002F000130505016FF09FFD370510F0130505F29A
|
||||
:0403000023200500B1
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:1010100000000080FFFFCDAB7856341298BADCFE9A
|
||||
:10102000145892360000000000000000000000008C
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
|
||||
:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
|
||||
:040000058000000077
|
||||
:00000001FF
|
56
simX/riscv_tests/I-ANDI-01.elf.hex
Normal file
56
simX/riscv_tests/I-ANDI-01.elf.hex
Normal file
|
@ -0,0 +1,56 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810277
|
||||
:1000100083A1000013F2110093F2F17F13F3F1FFBB
|
||||
:1000200093F3010013F401802320310023224100C7
|
||||
:10003000232451002326610023287100232A8100F4
|
||||
:1000400097100000938040FC17110000130101007D
|
||||
:1000500003A40000937414001375F47F9375F4FFE8
|
||||
:1000600013760400937604802320810023229100DC
|
||||
:100070002324A1002326B1002328C100232AD10074
|
||||
:1000800097100000938080F817110000130181FD84
|
||||
:1000900083A6000013F7160093F7F67F13F8F6FF18
|
||||
:1000A00093F8060013F906802320D1002322E100F3
|
||||
:1000B0002324F1002326010123281101232A2101F1
|
||||
:1000C000971000009380C0F417110000130101FB8A
|
||||
:1000D00003A9000093791900137AF97F937AF9FF45
|
||||
:1000E000137B0900937B0980232021012322310106
|
||||
:1000F000232441012326510123286101232A710170
|
||||
:1001000097100000938000F117110000130181F88F
|
||||
:1001100083AB000013FC1B0093FCFB7F13FDFBFF74
|
||||
:1001200093FD0B0013FE0B8023207101232281011C
|
||||
:10013000232491012326A1012328B101232AC101EF
|
||||
:10014000171D0000130D4DED971D0000938D0DF64A
|
||||
:10015000032E0D00937EFE0713FFFE03937FFF0126
|
||||
:1001600093F0FF0013F170009371310023A0CD01D3
|
||||
:1001700023A2DD0123A4ED0123A6FD0123A81D0078
|
||||
:1001800023AA2D0023AC3D0097100000938000E9C6
|
||||
:1001900017110000130141F383A2000013F01200B5
|
||||
:1001A0002320010097100000938080E717110000C2
|
||||
:1001B0001301C1F183A2000013F01200937210002A
|
||||
:1001C000232001002322510097100000938080E536
|
||||
:1001D00017110000130101F083A1000013F2F1FFD9
|
||||
:1001E0009372F2FF13F3F2FF1377F3FF9377F7FFA6
|
||||
:1001F00013F8F7FF937CF8FF13FDFCFF937DFDFFE1
|
||||
:1002000023203100232241002324A1012326B10110
|
||||
:1002100017150000130505E297150000938585EC7E
|
||||
:10022000370610F01306C6F26306B5028326C50032
|
||||
:100230002320D600832685002320D6008326450070
|
||||
:100240002320D600832605002320D60013050501B0
|
||||
:100250006FF09FFD370510F0130505F22320050010
|
||||
:04026000000000009A
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:1010100000000080FFFFCDAB7856341298BADCFE9A
|
||||
:10102000145892360000000000000000000000008C
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
|
||||
:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
|
||||
:040000058000000077
|
||||
:00000001FF
|
42
simX/riscv_tests/I-AUIPC-01.elf.hex
Normal file
42
simX/riscv_tests/I-AUIPC-01.elf.hex
Normal file
|
@ -0,0 +1,42 @@
|
|||
:0200000480007A
|
||||
:100000001717000013070700971700009387870151
|
||||
:10001000832007003711000013014100B7F1FFFFF3
|
||||
:100020009381810037F2FF7F1302C200B702008084
|
||||
:100030009382020133812000B3813000338240007B
|
||||
:10004000B3825000170300009713000017F8FFFF5A
|
||||
:1000500097FEFF7F970F008033431300B3C3230045
|
||||
:1000600033483800B3CE4E00B3CF5F0023A0670003
|
||||
:1000700023A2770023A4070123A6D70123A8F70111
|
||||
:1000800097180000938848F8171800001308C8FA5A
|
||||
:10009000B710111193801011372122221301212250
|
||||
:1000A000B737333393873733374E4444130E4E44B8
|
||||
:1000B000375F5555130F5F5583A108003702008045
|
||||
:1000C000B7F2FF7F9382420013038000B713000052
|
||||
:1000D0009383C30037F4FFFF13040401338241000C
|
||||
:1000E000B382510033836100B38371003384810094
|
||||
:1000F0009700008017F1FF7F97070000171E000090
|
||||
:1001000017FFFFFFB3C0400033415100B3C7670082
|
||||
:10011000334E7E00334F8F00232018002322280007
|
||||
:100120002324F8002326C8012328E801171900001A
|
||||
:100130001309C9ED97180000938848F1832009003E
|
||||
:10014000032149008321890017020000130242FFA6
|
||||
:100150009707000093878701170F0000130F0F0404
|
||||
:10016000970200009382C2FD1708000013080800E0
|
||||
:10017000970F0000938F8F0233421200B3C72700FE
|
||||
:10018000334F3F00B382124033482800B3CF3F00C3
|
||||
:1001900023A0480023A2F80023A4E80123A65800C6
|
||||
:1001A00023A8080123AAF80117150000130585E705
|
||||
:1001B00097150000938505EB370610F01306C6F27D
|
||||
:1001C0006306B5028326C5002320D600832685005A
|
||||
:1001D0002320D600832645002320D6008326050051
|
||||
:1001E0002320D600130505016FF09FFD370510F0A1
|
||||
:1001F000130505F2232005000000000000000000A8
|
||||
:0402000000000000FA
|
||||
:1010000044000080F00000803C0100806801008006
|
||||
:1010100098010080000000000000000000000000B7
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:040000058000000077
|
||||
:00000001FF
|
72
simX/riscv_tests/I-BEQ-01.elf.hex
Normal file
72
simX/riscv_tests/I-BEQ-01.elf.hex
Normal file
|
@ -0,0 +1,72 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810178
|
||||
:1000100083A1000013020000930210001303F0FFFD
|
||||
:10002000B70300809383F3FF37040080930F000031
|
||||
:100030006384410093EF1F006384510093EF2F000E
|
||||
:100040006384610093EF4F006384710093EF8F002E
|
||||
:100050006384810093EF0F012320310023224100AC
|
||||
:10006000232451002326610023287100232A8100C4
|
||||
:10007000232CF10197100000938000F91711000064
|
||||
:10008000130101FC03A300009303000013041000FC
|
||||
:100090009304F0FF370500801305F5FFB7050080D6
|
||||
:1000A000930F00006304730093EF1F006304830049
|
||||
:1000B00093EF2F006304930093EF4F006304A300BA
|
||||
:1000C00093EF8F006304B30093EF0F0123206100CF
|
||||
:1000D0002322710023248100232691002328A100DC
|
||||
:1000E000232AB100232CF10197100000938000F225
|
||||
:1000F00017110000130181F603A60000930600000B
|
||||
:10010000130710009307F0FF370800801308F8FF6B
|
||||
:10011000B7080080930F00006304D60093EF1F0020
|
||||
:100120006304E60093EF2F006304F60093EF4F00A3
|
||||
:100130006304060193EF8F006304160193EF0F0130
|
||||
:100140002320C1002322D1002324E1002326F10033
|
||||
:1001500023280101232A1101232CF101971000000B
|
||||
:10016000938000EB17110000130101F103A90000B7
|
||||
:1001700093090000130A1000930AF0FF370B008068
|
||||
:10018000130BFBFFB70B0080930F000063043901D2
|
||||
:1001900093EF1F006304490193EF2F00630459019B
|
||||
:1001A00093EF4F006304690193EF8F0063047901BB
|
||||
:1001B00093EF0F0123202101232231012324410148
|
||||
:1001C0002326510123286101232A7101232CF101E7
|
||||
:1001D00097100000938000E417110000130181EBD9
|
||||
:1001E00003AC0000930C0000130D1000930DF0FF02
|
||||
:1001F000370E0080130EFEFFB70E0080930F000035
|
||||
:1002000063049C0193EF1F006304AC0193EF2F0084
|
||||
:100210006304BC0193EF4F006304CC0193EF8F00A4
|
||||
:100220006304DC0193EF0F0123208101232291015C
|
||||
:100230002324A1012326B1012328C101232AD101AE
|
||||
:10024000232CF101971D0000938D8DE69300000093
|
||||
:10025000130110009301F0FF370200801302F2FF38
|
||||
:10026000B7020080930F00006384000093EF1F002B
|
||||
:100270006304010093EF2F006384010093EF4F00AC
|
||||
:100280006304020093EF8F006384020093EF0F0179
|
||||
:100290006304100093EF0F026304200093EF0F0438
|
||||
:1002A0006304300093EF0F086304400093EF0F10D6
|
||||
:1002B0006304500093EF0F2023A0FD01971A000064
|
||||
:1002C000938A8AD5171B0000130BCBDE83AF0A007D
|
||||
:1002D0001301F0FF9301F0FF37D2ED0F130292BA32
|
||||
:1002E00063840F0213010000930100001302000059
|
||||
:1002F000B74165879381113263840F0213010000B7
|
||||
:10030000930100001302000037E1BC9A130101EFD2
|
||||
:10031000E3800FFE130100009301000013020000B0
|
||||
:1003200023200B0023222B0023243B0023264B00F9
|
||||
:1003300017150000130505CF97150000938585D884
|
||||
:10034000370610F01306C6F26306B5028326C50011
|
||||
:100350002320D600832685002320D600832645004F
|
||||
:100360002320D600832605002320D600130505018F
|
||||
:100370006FF09FFD370510F0130505F223200500EF
|
||||
:040380000000000079
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:101010000000008000000000000000000000000050
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:040000058000000077
|
||||
:00000001FF
|
72
simX/riscv_tests/I-BGE-01.elf.hex
Normal file
72
simX/riscv_tests/I-BGE-01.elf.hex
Normal file
|
@ -0,0 +1,72 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810178
|
||||
:1000100083A1000013020000930210001303F0FFFD
|
||||
:10002000B70300809383F3FF37040080930F000031
|
||||
:1000300063D4410093EF1F0063D4510093EF2F006E
|
||||
:1000400063D4610093EF4F0063D4710093EF8F008E
|
||||
:1000500063D4810093EF0F0123203100232241005C
|
||||
:10006000232451002326610023287100232A8100C4
|
||||
:10007000232CF10197100000938000F91711000064
|
||||
:10008000130101FC03A300009303000013041000FC
|
||||
:100090009304F0FF370500801305F5FFB7050080D6
|
||||
:1000A000930F00006354730093EF1F0063548300A9
|
||||
:1000B00093EF2F006354930093EF4F006354A3001A
|
||||
:1000C00093EF8F006354B30093EF0F01232061007F
|
||||
:1000D0002322710023248100232691002328A100DC
|
||||
:1000E000232AB100232CF10197100000938000F225
|
||||
:1000F00017110000130181F603A60000930600000B
|
||||
:10010000130710009307F0FF370800801308F8FF6B
|
||||
:10011000B7080080930F00006354D60093EF1F00D0
|
||||
:100120006354E60093EF2F006354F60093EF4F0003
|
||||
:100130006354060193EF8F006354160193EF0F0190
|
||||
:100140002320C1002322D1002324E1002326F10033
|
||||
:1001500023280101232A1101232CF101971000000B
|
||||
:10016000938000EB17110000130101F103A90000B7
|
||||
:1001700093090000130A1000930AF0FF370B008068
|
||||
:10018000130BFBFFB70B0080930F00006354390182
|
||||
:1001900093EF1F006354490193EF2F0063545901FB
|
||||
:1001A00093EF4F006354690193EF8F00635479011B
|
||||
:1001B00093EF0F0123202101232231012324410148
|
||||
:1001C0002326510123286101232A7101232CF101E7
|
||||
:1001D00097100000938000E417110000130181EBD9
|
||||
:1001E00003AC0000930C0000130D1000930DF0FF02
|
||||
:1001F000370E0080130EFEFFB70E0080930F000035
|
||||
:1002000063549C0193EF1F006354AC0193EF2F00E4
|
||||
:100210006354BC0193EF4F006354CC0193EF8F0004
|
||||
:100220006354DC0193EF0F0123208101232291010C
|
||||
:100230002324A1012326B1012328C101232AD101AE
|
||||
:10024000232CF101971D0000938D8DE69300000093
|
||||
:10025000130110009301F0FF370200801302F2FF38
|
||||
:10026000B7020080930F000063D4000093EF1F00DB
|
||||
:100270006354010093EF2F0063D4010093EF4F000C
|
||||
:100280006354020093EF8F0063D4020093EF0F01D9
|
||||
:100290006354100093EF0F026354200093EF0F0498
|
||||
:1002A0006354300093EF0F086354400093EF0F1036
|
||||
:1002B0006354500093EF0F2023A0FD01971A000014
|
||||
:1002C000938A8AD5171B0000130BCBDE83AF0A007D
|
||||
:1002D0001301F0FF9301F0FF37D2ED0F130292BA32
|
||||
:1002E00063D40F0213010000930100001302000009
|
||||
:1002F000B74165879381113263D40F021301000067
|
||||
:10030000930100001302000037E1BC9A130101EFD2
|
||||
:10031000E3D00FFE13010000930100001302000060
|
||||
:1003200023200B0023222B0023243B0023264B00F9
|
||||
:1003300017150000130505CF97150000938585D884
|
||||
:10034000370610F01306C6F26306B5028326C50011
|
||||
:100350002320D600832685002320D600832645004F
|
||||
:100360002320D600832605002320D600130505018F
|
||||
:100370006FF09FFD370510F0130505F223200500EF
|
||||
:040380000000000079
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:10101000000000800100000000000000000000004F
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:040000058000000077
|
||||
:00000001FF
|
72
simX/riscv_tests/I-BGEU-01.elf.hex
Normal file
72
simX/riscv_tests/I-BGEU-01.elf.hex
Normal file
|
@ -0,0 +1,72 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810178
|
||||
:1000100083A1000013020000930210001303F0FFFD
|
||||
:10002000B70300809383F3FF37040080930F000031
|
||||
:1000300063F4410093EF1F0063F4510093EF2F002E
|
||||
:1000400063F4610093EF4F0063F4710093EF8F004E
|
||||
:1000500063F4810093EF0F0123203100232241003C
|
||||
:10006000232451002326610023287100232A8100C4
|
||||
:10007000232CF10197100000938000F91711000064
|
||||
:10008000130101FC03A300009303000013041000FC
|
||||
:100090009304F0FF370500801305F5FFB7050080D6
|
||||
:1000A000930F00006374730093EF1F006374830069
|
||||
:1000B00093EF2F006374930093EF4F006374A300DA
|
||||
:1000C00093EF8F006374B30093EF0F01232061005F
|
||||
:1000D0002322710023248100232691002328A100DC
|
||||
:1000E000232AB100232CF10197100000938000F225
|
||||
:1000F00017110000130181F603A60000930600000B
|
||||
:10010000130710009307F0FF370800801308F8FF6B
|
||||
:10011000B7080080930F00006374D60093EF1F00B0
|
||||
:100120006374E60093EF2F006374F60093EF4F00C3
|
||||
:100130006374060193EF8F006374160193EF0F0150
|
||||
:100140002320C1002322D1002324E1002326F10033
|
||||
:1001500023280101232A1101232CF101971000000B
|
||||
:10016000938000EB17110000130101F103A90000B7
|
||||
:1001700093090000130A1000930AF0FF370B008068
|
||||
:10018000130BFBFFB70B0080930F00006374390162
|
||||
:1001900093EF1F006374490193EF2F0063745901BB
|
||||
:1001A00093EF4F006374690193EF8F0063747901DB
|
||||
:1001B00093EF0F0123202101232231012324410148
|
||||
:1001C0002326510123286101232A7101232CF101E7
|
||||
:1001D00097100000938000E417110000130181EBD9
|
||||
:1001E00003AC0000930C0000130D1000930DF0FF02
|
||||
:1001F000370E0080130EFEFFB70E0080930F000035
|
||||
:1002000063749C0193EF1F006374AC0193EF2F00A4
|
||||
:100210006374BC0193EF4F006374CC0193EF8F00C4
|
||||
:100220006374DC0193EF0F012320810123229101EC
|
||||
:100230002324A1012326B1012328C101232AD101AE
|
||||
:10024000232CF101971D0000938D8DE69300000093
|
||||
:10025000130110009301F0FF370200801302F2FF38
|
||||
:10026000B7020080930F000063F4000093EF1F00BB
|
||||
:100270006374010093EF2F0063F4010093EF4F00CC
|
||||
:100280006374020093EF8F0063F4020093EF0F0199
|
||||
:100290006374100093EF0F026374200093EF0F0458
|
||||
:1002A0006374300093EF0F086374400093EF0F10F6
|
||||
:1002B0006374500093EF0F2023A0FD01971A0000F4
|
||||
:1002C000938A8AD5171B0000130BCBDE83AF0A007D
|
||||
:1002D0001301F0FF9301F0FF37D2ED0F130292BA32
|
||||
:1002E00063F40F02130100009301000013020000E9
|
||||
:1002F000B74165879381113263F40F021301000047
|
||||
:10030000930100001302000037E1BC9A130101EFD2
|
||||
:10031000E3F00FFE13010000930100001302000040
|
||||
:1003200023200B0023222B0023243B0023264B00F9
|
||||
:1003300017150000130505CF97150000938585D884
|
||||
:10034000370610F01306C6F26306B5028326C50011
|
||||
:100350002320D600832685002320D600832645004F
|
||||
:100360002320D600832605002320D600130505018F
|
||||
:100370006FF09FFD370510F0130505F223200500EF
|
||||
:040380000000000079
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:10101000000000800100000000000000000000004F
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:040000058000000077
|
||||
:00000001FF
|
72
simX/riscv_tests/I-BLT-01.elf.hex
Normal file
72
simX/riscv_tests/I-BLT-01.elf.hex
Normal file
|
@ -0,0 +1,72 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810178
|
||||
:1000100083A1000013020000930210001303F0FFFD
|
||||
:10002000B70300809383F3FF37040080930F000031
|
||||
:1000300063C4410093EF1F0063C4510093EF2F008E
|
||||
:1000400063C4610093EF4F0063C4710093EF8F00AE
|
||||
:1000500063C4810093EF0F0123203100232241006C
|
||||
:10006000232451002326610023287100232A8100C4
|
||||
:10007000232CF10197100000938000F91711000064
|
||||
:10008000130101FC03A300009303000013041000FC
|
||||
:100090009304F0FF370500801305F5FFB7050080D6
|
||||
:1000A000930F00006344730093EF1F0063448300C9
|
||||
:1000B00093EF2F006344930093EF4F006344A3003A
|
||||
:1000C00093EF8F006344B30093EF0F01232061008F
|
||||
:1000D0002322710023248100232691002328A100DC
|
||||
:1000E000232AB100232CF10197100000938000F225
|
||||
:1000F00017110000130181F603A60000930600000B
|
||||
:10010000130710009307F0FF370800801308F8FF6B
|
||||
:10011000B7080080930F00006344D60093EF1F00E0
|
||||
:100120006344E60093EF2F006344F60093EF4F0023
|
||||
:100130006344060193EF8F006344160193EF0F01B0
|
||||
:100140002320C1002322D1002324E1002326F10033
|
||||
:1001500023280101232A1101232CF101971000000B
|
||||
:10016000938000EB17110000130101F103A90000B7
|
||||
:1001700093090000130A1000930AF0FF370B008068
|
||||
:10018000130BFBFFB70B0080930F00006344390192
|
||||
:1001900093EF1F006344490193EF2F00634459011B
|
||||
:1001A00093EF4F006344690193EF8F00634479013B
|
||||
:1001B00093EF0F0123202101232231012324410148
|
||||
:1001C0002326510123286101232A7101232CF101E7
|
||||
:1001D00097100000938000E417110000130181EBD9
|
||||
:1001E00003AC0000930C0000130D1000930DF0FF02
|
||||
:1001F000370E0080130EFEFFB70E0080930F000035
|
||||
:1002000063449C0193EF1F006344AC0193EF2F0004
|
||||
:100210006344BC0193EF4F006344CC0193EF8F0024
|
||||
:100220006344DC0193EF0F0123208101232291011C
|
||||
:100230002324A1012326B1012328C101232AD101AE
|
||||
:10024000232CF101971D0000938D8DE69300000093
|
||||
:10025000130110009301F0FF370200801302F2FF38
|
||||
:10026000B7020080930F000063C4000093EF1F00EB
|
||||
:100270006344010093EF2F0063C4010093EF4F002C
|
||||
:100280006344020093EF8F0063C4020093EF0F01F9
|
||||
:100290006344100093EF0F026344200093EF0F04B8
|
||||
:1002A0006344300093EF0F086344400093EF0F1056
|
||||
:1002B0006344500093EF0F2023A0FD01971A000024
|
||||
:1002C000938A8AD5171B0000130BCBDE83AF0A007D
|
||||
:1002D0001301F0FF9301F0FF37D2ED0F130292BA32
|
||||
:1002E00063C40F0213010000930100001302000019
|
||||
:1002F000B74165879381113263C40F021301000077
|
||||
:10030000930100001302000037E1BC9A130101EFD2
|
||||
:10031000E3C00FFE13010000930100001302000070
|
||||
:1003200023200B0023222B0023243B0023264B00F9
|
||||
:1003300017150000130505CF97150000938585D884
|
||||
:10034000370610F01306C6F26306B5028326C50011
|
||||
:100350002320D600832685002320D600832645004F
|
||||
:100360002320D600832605002320D600130505018F
|
||||
:100370006FF09FFD370510F0130505F223200500EF
|
||||
:040380000000000079
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:1010100000000080FFFFFFFF000000000000000054
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:040000058000000077
|
||||
:00000001FF
|
72
simX/riscv_tests/I-BLTU-01.elf.hex
Normal file
72
simX/riscv_tests/I-BLTU-01.elf.hex
Normal file
|
@ -0,0 +1,72 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810178
|
||||
:1000100083A1000013020000930210001303F0FFFD
|
||||
:10002000B70300809383F3FF37040080930F000031
|
||||
:1000300063E4410093EF1F0063E4510093EF2F004E
|
||||
:1000400063E4610093EF4F0063E4710093EF8F006E
|
||||
:1000500063E4810093EF0F0123203100232241004C
|
||||
:10006000232451002326610023287100232A8100C4
|
||||
:10007000232CF10197100000938000F91711000064
|
||||
:10008000130101FC03A300009303000013041000FC
|
||||
:100090009304F0FF370500801305F5FFB7050080D6
|
||||
:1000A000930F00006364730093EF1F006364830089
|
||||
:1000B00093EF2F006364930093EF4F006364A300FA
|
||||
:1000C00093EF8F006364B30093EF0F01232061006F
|
||||
:1000D0002322710023248100232691002328A100DC
|
||||
:1000E000232AB100232CF10197100000938000F225
|
||||
:1000F00017110000130181F603A60000930600000B
|
||||
:10010000130710009307F0FF370800801308F8FF6B
|
||||
:10011000B7080080930F00006364D60093EF1F00C0
|
||||
:100120006364E60093EF2F006364F60093EF4F00E3
|
||||
:100130006364060193EF8F006364160193EF0F0170
|
||||
:100140002320C1002322D1002324E1002326F10033
|
||||
:1001500023280101232A1101232CF101971000000B
|
||||
:10016000938000EB17110000130101F103A90000B7
|
||||
:1001700093090000130A1000930AF0FF370B008068
|
||||
:10018000130BFBFFB70B0080930F00006364390172
|
||||
:1001900093EF1F006364490193EF2F0063645901DB
|
||||
:1001A00093EF4F006364690193EF8F0063647901FB
|
||||
:1001B00093EF0F0123202101232231012324410148
|
||||
:1001C0002326510123286101232A7101232CF101E7
|
||||
:1001D00097100000938000E417110000130181EBD9
|
||||
:1001E00003AC0000930C0000130D1000930DF0FF02
|
||||
:1001F000370E0080130EFEFFB70E0080930F000035
|
||||
:1002000063649C0193EF1F006364AC0193EF2F00C4
|
||||
:100210006364BC0193EF4F006364CC0193EF8F00E4
|
||||
:100220006364DC0193EF0F012320810123229101FC
|
||||
:100230002324A1012326B1012328C101232AD101AE
|
||||
:10024000232CF101971D0000938D8DE69300000093
|
||||
:10025000130110009301F0FF370200801302F2FF38
|
||||
:10026000B7020080930F000063E4000093EF1F00CB
|
||||
:100270006364010093EF2F0063E4010093EF4F00EC
|
||||
:100280006364020093EF8F0063E4020093EF0F01B9
|
||||
:100290006364100093EF0F026364200093EF0F0478
|
||||
:1002A0006364300093EF0F086364400093EF0F1016
|
||||
:1002B0006364500093EF0F2023A0FD01971A000004
|
||||
:1002C000938A8AD5171B0000130BCBDE83AF0A007D
|
||||
:1002D0001301F0FF9301F0FF37D2ED0F130292BA32
|
||||
:1002E0006364F00313010000930100001302000097
|
||||
:1002F000B7416587938111326364F00313010000F5
|
||||
:10030000930100001302000037E1BC9A130101EFD2
|
||||
:10031000E360F0FF130100009301000013020000EE
|
||||
:1003200023200B0023222B0023243B0023264B00F9
|
||||
:1003300017150000130505CF97150000938585D884
|
||||
:10034000370610F01306C6F26306B5028326C50011
|
||||
:100350002320D600832685002320D600832645004F
|
||||
:100360002320D600832605002320D600130505018F
|
||||
:100370006FF09FFD370510F0130505F223200500EF
|
||||
:040380000000000079
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:10101000000000800100000000000000000000004F
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:040000058000000077
|
||||
:00000001FF
|
72
simX/riscv_tests/I-BNE-01.elf.hex
Normal file
72
simX/riscv_tests/I-BNE-01.elf.hex
Normal file
|
@ -0,0 +1,72 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810178
|
||||
:1000100083A1000013020000930210001303F0FFFD
|
||||
:10002000B70300809383F3FF37040080930F000031
|
||||
:100030006394410093EF1F006394510093EF2F00EE
|
||||
:100040006394610093EF4F006394710093EF8F000E
|
||||
:100050006394810093EF0F0123203100232241009C
|
||||
:10006000232451002326610023287100232A8100C4
|
||||
:10007000232CF10197100000938000F91711000064
|
||||
:10008000130101FC03A300009303000013041000FC
|
||||
:100090009304F0FF370500801305F5FFB7050080D6
|
||||
:1000A000930F00006314730093EF1F006314830029
|
||||
:1000B00093EF2F006314930093EF4F006314A3009A
|
||||
:1000C00093EF8F006314B30093EF0F0123206100BF
|
||||
:1000D0002322710023248100232691002328A100DC
|
||||
:1000E000232AB100232CF10197100000938000F225
|
||||
:1000F00017110000130181F603A60000930600000B
|
||||
:10010000130710009307F0FF370800801308F8FF6B
|
||||
:10011000B7080080930F00006314D60093EF1F0010
|
||||
:100120006314E60093EF2F006314F60093EF4F0083
|
||||
:100130006314060193EF8F006314160193EF0F0110
|
||||
:100140002320C1002322D1002324E1002326F10033
|
||||
:1001500023280101232A1101232CF101971000000B
|
||||
:10016000938000EB17110000130101F103A90000B7
|
||||
:1001700093090000130A1000930AF0FF370B008068
|
||||
:10018000130BFBFFB70B0080930F000063143901C2
|
||||
:1001900093EF1F006314490193EF2F00631459017B
|
||||
:1001A00093EF4F006314690193EF8F00631479019B
|
||||
:1001B00093EF0F0123202101232231012324410148
|
||||
:1001C0002326510123286101232A7101232CF101E7
|
||||
:1001D00097100000938000E417110000130181EBD9
|
||||
:1001E00003AC0000930C0000130D1000930DF0FF02
|
||||
:1001F000370E0080130EFEFFB70E0080930F000035
|
||||
:1002000063149C0193EF1F006314AC0193EF2F0064
|
||||
:100210006314BC0193EF4F006314CC0193EF8F0084
|
||||
:100220006314DC0193EF0F0123208101232291014C
|
||||
:100230002324A1012326B1012328C101232AD101AE
|
||||
:10024000232CF101971D0000938D8DE69300000093
|
||||
:10025000130110009301F0FF370200801302F2FF38
|
||||
:10026000B7020080930F00006394000093EF1F001B
|
||||
:100270006314010093EF2F006394010093EF4F008C
|
||||
:100280006314020093EF8F006394020093EF0F0159
|
||||
:100290006314100093EF0F026314200093EF0F0418
|
||||
:1002A0006314300093EF0F086314400093EF0F10B6
|
||||
:1002B0006314500093EF0F2023A0FD01971A000054
|
||||
:1002C000938A8AD5171B0000130BCBDE83AF0A007D
|
||||
:1002D0001301F0FF9301F0FF37D2ED0F130292BA32
|
||||
:1002E00063940F0213010000930100001302000049
|
||||
:1002F000B74165879381113263940F0213010000A7
|
||||
:10030000930100001302000037E1BC9A130101EFD2
|
||||
:10031000E3900FFE130100009301000013020000A0
|
||||
:1003200023200B0023222B0023243B0023264B00F9
|
||||
:1003300017150000130505CF97150000938585D884
|
||||
:10034000370610F01306C6F26306B5028326C50011
|
||||
:100350002320D600832685002320D600832645004F
|
||||
:100360002320D600832605002320D600130505018F
|
||||
:100370006FF09FFD370510F0130505F223200500EF
|
||||
:040380000000000079
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:1010100000000080FFFFFFFF000000000000000054
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:040000058000000077
|
||||
:00000001FF
|
39
simX/riscv_tests/I-CSRRC-01.elf.hex
Normal file
39
simX/riscv_tests/I-CSRRC-01.elf.hex
Normal file
|
@ -0,0 +1,39 @@
|
|||
:0200000480007A
|
||||
:10000000971700009387070093001000130100006A
|
||||
:10001000B701F17F9381F1FF370200809302F0FF77
|
||||
:1000200073900234F3B00034F3900234733101342E
|
||||
:1000300073910234F3B10134F39102347332023418
|
||||
:1000400073920234F3B20234F312003423A0070097
|
||||
:1000500023A2170023A4270023A6370023A84700C4
|
||||
:1000600023AA570097120000938242FB93051000C9
|
||||
:1000700013060000B706F17F9386F6FF370700806E
|
||||
:100080009307F0FF73900734F3B5053473360634E5
|
||||
:10009000F3B6063473370734F3B7073473380034D4
|
||||
:1000A00023A0B20023A2C20023A4D20023A6E20010
|
||||
:1000B00023A8F20023AA0201171D0000130D8DF7DB
|
||||
:1000C000B75A3412938A8A67130AF0FF73100A34FE
|
||||
:1000D00073BB0A34F33A0B34F31B0A3473BC0B348E
|
||||
:1000E000F33C003423205D0123226D0123247D0194
|
||||
:1000F00023268D0123289D01971000009380C0F4D2
|
||||
:10010000377F7242130FFFE673100F3473300F34D2
|
||||
:1001100023A0000023A2E00117110000130141F306
|
||||
:10012000B79FFFF7938F8F8173900F347330003434
|
||||
:1001300073300034F33F0034232001002322F10107
|
||||
:1001400017110000130141F11302F0FFB752389666
|
||||
:1001500093824227B7531632938383497310023434
|
||||
:10016000F3B20234F3B30334733404342320510064
|
||||
:10017000232271002324810017150000130585E850
|
||||
:1001800097150000938505EE370610F01306C6F2AA
|
||||
:100190006306B5028326C5002320D600832685008A
|
||||
:1001A0002320D600832645002320D6008326050081
|
||||
:1001B0002320D600130505016FF09FFD370510F0D1
|
||||
:1001C000130505F2232005000000000000000000D8
|
||||
:0401D000000000002B
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:040000058000000077
|
||||
:00000001FF
|
25
simX/riscv_tests/I-CSRRCI-01.elf.hex
Normal file
25
simX/riscv_tests/I-CSRRCI-01.elf.hex
Normal file
|
@ -0,0 +1,25 @@
|
|||
:0200000480007A
|
||||
:1000000097170000938707001304F0FF7310043460
|
||||
:10001000F3F00034F31004347371003473110434BA
|
||||
:10002000F3F10F34F311043473720834731204348F
|
||||
:10003000F3F20734F312043423A0070023A21700BD
|
||||
:1000400023A4270023A6370023A8470023AA57008C
|
||||
:1000500023AC870097120000938282FC1304F0FF08
|
||||
:1000600073100434F3F5003473760034F3F60F3470
|
||||
:1000700073770834F3F707347378003423A0B200A1
|
||||
:1000800023A2C20023A4D20023A6E20023A8F200E8
|
||||
:1000900023AA020123AC820097100000938000FA8B
|
||||
:1000A000375A1632130A8A4973100A3473F0073428
|
||||
:1000B000731A0A3423A0000023A240011715000080
|
||||
:1000C000130545F4971500009385C5F7370610F022
|
||||
:1000D0001306C6F26306B5028326C5002320D600A8
|
||||
:1000E000832685002320D600832645002320D600C2
|
||||
:1000F000832605002320D600130505016FF09FFD20
|
||||
:10010000370510F0130505F223200500000000005C
|
||||
:0401100000000000EB
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:040000058000000077
|
||||
:00000001FF
|
38
simX/riscv_tests/I-CSRRS-01.elf.hex
Normal file
38
simX/riscv_tests/I-CSRRS-01.elf.hex
Normal file
|
@ -0,0 +1,38 @@
|
|||
:0200000480007A
|
||||
:10000000971700009387070093001000130100006A
|
||||
:10001000B701F17F9381F1FF370200809302F0FF77
|
||||
:1000200073100034F3A00034F31000347321013452
|
||||
:1000300073110034F3A10134F3110034732202343C
|
||||
:1000400073120034F3A20234F312003423A0070029
|
||||
:1000500023A2170023A4270023A6370023A84700C4
|
||||
:1000600023AA570097120000938242FB93051000C9
|
||||
:1000700013060000B706F17F9386F6FF370700806E
|
||||
:100080009307F0FF73100034F3A50534732606348C
|
||||
:10009000F3A6063473270734F3A707347328003414
|
||||
:1000A00023A0B20023A2C20023A4D20023A6E20010
|
||||
:1000B00023A8F20023AA0201171D0000130D8DF7DB
|
||||
:1000C000B75A3412938A8A677310003473AB0A34B8
|
||||
:1000D000F32B0B34F31B003473AC0B34F32C0034D0
|
||||
:1000E00023205D0123226D0123247D0123268D0120
|
||||
:1000F00023289D0197100000938000F5377F7242FE
|
||||
:10010000130FFFE673100F3473200F3423A0000089
|
||||
:1001100023A2E00117110000130181F3B79FFFF73D
|
||||
:10012000938F8F8173900F347320003473200034C9
|
||||
:10013000F32F0034232001002322F10117110000C6
|
||||
:10014000130181F1B753163293838349B75238961E
|
||||
:100150009382422773100034F3A20234F3A30334D2
|
||||
:1001600073240434232051002322710023248100AE
|
||||
:1001700017150000130505E997150000938585EE16
|
||||
:10018000370610F01306C6F26306B5028326C500D3
|
||||
:100190002320D600832685002320D6008326450011
|
||||
:1001A0002320D600832605002320D6001305050151
|
||||
:1001B0006FF09FFD370510F0130505F223200500B1
|
||||
:0401C000000000003B
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:040000058000000077
|
||||
:00000001FF
|
24
simX/riscv_tests/I-CSRRSI-01.elf.hex
Normal file
24
simX/riscv_tests/I-CSRRSI-01.elf.hex
Normal file
|
@ -0,0 +1,24 @@
|
|||
:0200000480007A
|
||||
:10000000971700009387070073100034F3E0003463
|
||||
:10001000F31000347361003473110034F3E10F34D2
|
||||
:10002000F31100347362083473120034F3E20734BE
|
||||
:10003000F312003423A0070023A2170023A42700F3
|
||||
:1000400023A6370023A8470023AA570097120000D1
|
||||
:100050009382C2FC73100034F3E5003473660034FD
|
||||
:10006000F3E60F3473670834F3E70734736800343A
|
||||
:1000700023A0020023A2B20023A4C20023A6D20020
|
||||
:1000800023A8E20023AAF20023AC0201971000008B
|
||||
:10009000938080FA375A1632130A8A4973100A3449
|
||||
:1000A00073E00734F31A0A3423A0000023A250019E
|
||||
:1000B00023A44001171500001305C5F4971500008F
|
||||
:1000C000938545F8370610F01306C6F26306B502AD
|
||||
:1000D0008326C5002320D600832685002320D60052
|
||||
:1000E000832645002320D600832605002320D60042
|
||||
:1000F000130505016FF09FFD370510F0130505F29C
|
||||
:0401000023200500B3
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:040000058000000077
|
||||
:00000001FF
|
30
simX/riscv_tests/I-CSRRW-01.elf.hex
Normal file
30
simX/riscv_tests/I-CSRRW-01.elf.hex
Normal file
|
@ -0,0 +1,30 @@
|
|||
:0200000480007A
|
||||
:1000000097170000938707009300100093010000EA
|
||||
:100010009302F0FFB70D0080938DFDFFB70E0080B7
|
||||
:10002000731000347391003473920134739302346B
|
||||
:10003000739E0D34739F0E34F31F003423A02700EA
|
||||
:1000400023A2470023A4670023A6C70123A8E70132
|
||||
:1000500023AAF701171D0000130D4DFCB7503412F1
|
||||
:100060009380806737E1BC9A130101EF73900034ED
|
||||
:10007000F311013473920134F31202347313003418
|
||||
:1000800023203D0023224D0023245D0023266D0004
|
||||
:1000900097100000938080F9377172421301F1E6E6
|
||||
:1000A000731001347310003423A0000017110000F6
|
||||
:1000B000130101F8B79DFFF7938D8D8173900D3477
|
||||
:1000C0007310003473100034F31200342320010045
|
||||
:1000D0002322510017110000130101F6B753163205
|
||||
:1000E000938383493763721413036383B75238963B
|
||||
:1000F0009382422773100334F3920234F393033450
|
||||
:100100007314003423205100232271002324810022
|
||||
:1001100017150000130505EF97150000938585F26C
|
||||
:10012000370610F01306C6F26306B5028326C50033
|
||||
:100130002320D600832685002320D6008326450071
|
||||
:100140002320D600832605002320D60013050501B1
|
||||
:100150006FF09FFD370510F0130505F22320050011
|
||||
:04016000000000009B
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:040000058000000077
|
||||
:00000001FF
|
16
simX/riscv_tests/I-CSRRWI-01.elf.hex
Normal file
16
simX/riscv_tests/I-CSRRWI-01.elf.hex
Normal file
|
@ -0,0 +1,16 @@
|
|||
:0200000480007A
|
||||
:1000000097170000938707007310003473D10034F2
|
||||
:100010007352003473D30F3473DE0734735F0834C4
|
||||
:10002000F35F003423A0070023A2270023A4470086
|
||||
:1000300023A6670023A8C70123AAE70123ACF70181
|
||||
:10004000971000009380C0FD73D0073473500034C4
|
||||
:1000500023A00000171500001305C5FA971500002E
|
||||
:10006000938545FC370610F01306C6F26306B50209
|
||||
:100070008326C5002320D600832685002320D600B2
|
||||
:10008000832645002320D600832605002320D600A2
|
||||
:10009000130505016FF09FFD370510F0130505F2FC
|
||||
:0400A0002320050014
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:040000058000000077
|
||||
:00000001FF
|
29
simX/riscv_tests/I-DELAY_SLOTS-01.elf.hex
Normal file
29
simX/riscv_tests/I-DELAY_SLOTS-01.elf.hex
Normal file
|
@ -0,0 +1,29 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000371111111301111196
|
||||
:100010006F0080001301000023A020009710000053
|
||||
:10002000938080FE37212222130121221702000033
|
||||
:1000300013020201670002001301000023A0200048
|
||||
:1000400097100000938080FC93025000130360001F
|
||||
:10005000373133331301313363845200130100000D
|
||||
:1000600023A0200097100000938080FA9302500094
|
||||
:100070001303600037414444130141446394620018
|
||||
:100080001301000023A0200097100000938080F847
|
||||
:100090009302500013036000375155551301515519
|
||||
:1000A00063C462001301000023A020009710000029
|
||||
:1000B000938080F6930250001303600037616666F8
|
||||
:1000C0001301616663E462001301000023A02000B5
|
||||
:1000D00097100000938080F4930250001303600097
|
||||
:1000E0003771777713017177635453001301000060
|
||||
:1000F00023A0200097100000938080F2930250000C
|
||||
:10010000130360003791888813018188637453005A
|
||||
:100110001301000023A0200017150000130585EE31
|
||||
:1001200097150000938505F0370610F01306C6F208
|
||||
:100130006306B5028326C5002320D60083268500EA
|
||||
:100140002320D600832645002320D60083260500E1
|
||||
:100150002320D600130505016FF09FFD370510F031
|
||||
:10016000130505F223200500000000000000000038
|
||||
:04017000000000008B
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:040000058000000077
|
||||
:00000001FF
|
15
simX/riscv_tests/I-EBREAK-01.elf.hex
Normal file
15
simX/riscv_tests/I-EBREAK-01.elf.hex
Normal file
|
@ -0,0 +1,15 @@
|
|||
:0200000480007A
|
||||
:10000000970000009380C002F39F503097100000CB
|
||||
:10001000938040FF3711111113011111730010006B
|
||||
:1000200023A0000073905F306F008002732F1034A4
|
||||
:10003000130F4F0073101F34732F203423A0E001DF
|
||||
:1000400023A2200023A400009380C000730020306E
|
||||
:1000500017150000130505FB97150000938585FB18
|
||||
:10006000370610F01306C6F26306B5028326C500F4
|
||||
:100070002320D600832685002320D6008326450032
|
||||
:100080002320D600832605002320D6001305050172
|
||||
:100090006FF09FFD370510F0130505F223200500D2
|
||||
:0400A000000000005C
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:040000058000000077
|
||||
:00000001FF
|
15
simX/riscv_tests/I-ECALL-01.elf.hex
Normal file
15
simX/riscv_tests/I-ECALL-01.elf.hex
Normal file
|
@ -0,0 +1,15 @@
|
|||
:0200000480007A
|
||||
:10000000970000009380C002F39F503097100000CB
|
||||
:10001000938040FF3711111113011111730000007B
|
||||
:1000200023A0000073905F306F008002732F1034A4
|
||||
:10003000130F4F0073101F34732F203423A0E001DF
|
||||
:1000400023A2200023A400009380C000730020306E
|
||||
:1000500017150000130505FB97150000938585FB18
|
||||
:10006000370610F01306C6F26306B5028326C500F4
|
||||
:100070002320D600832685002320D6008326450032
|
||||
:100080002320D600832605002320D6001305050172
|
||||
:100090006FF09FFD370510F0130505F223200500D2
|
||||
:0400A000000000005C
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:040000058000000077
|
||||
:00000001FF
|
17
simX/riscv_tests/I-ENDIANESS-01.elf.hex
Normal file
17
simX/riscv_tests/I-ENDIANESS-01.elf.hex
Normal file
|
@ -0,0 +1,17 @@
|
|||
:0200000480007A
|
||||
:10000000171800001308480097180000938888000C
|
||||
:100010008320080003510800835128000342F8FFA1
|
||||
:100020008342080003431800834328000344380038
|
||||
:1000300023A0180023A2280023A4380023A64800E8
|
||||
:1000400023A8580023AA680023AC780023AE8800B8
|
||||
:1000500017150000130505FC97150000938585FD15
|
||||
:10006000370610F01306C6F26306B5028326C500F4
|
||||
:100070002320D600832685002320D6008326450032
|
||||
:100080002320D600832605002320D6001305050172
|
||||
:100090006FF09FFD370510F0130505F223200500D2
|
||||
:0400A000000000005C
|
||||
:10100000EFCDAB8967452301000000000000000020
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:040000058000000077
|
||||
:00000001FF
|
16
simX/riscv_tests/I-FENCE.I-01.elf.hex
Normal file
16
simX/riscv_tests/I-FENCE.I-01.elf.hex
Normal file
|
@ -0,0 +1,16 @@
|
|||
:0200000480007A
|
||||
:10000000171800001308480097180000938888000C
|
||||
:10001000930100008320080003214800171A000004
|
||||
:10002000130A4AFE970A0000938A4A0183270A00AE
|
||||
:1000300023A0FA000F1000003701000023A01800D1
|
||||
:1000400023A2280023A4380023A6F80017150000D7
|
||||
:10005000130545FC971500009385C5FC370610F085
|
||||
:100060001306C6F26306B5028326C5002320D60018
|
||||
:10007000832685002320D600832645002320D60032
|
||||
:10008000832605002320D600130505016FF09FFD90
|
||||
:10009000370510F0130505F22320050000000000CD
|
||||
:0400A000000000005C
|
||||
:10100000B3011100300000001200000000000000D9
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:040000058000000077
|
||||
:00000001FF
|
65
simX/riscv_tests/I-IO.elf.hex
Normal file
65
simX/riscv_tests/I-IO.elf.hex
Normal file
|
@ -0,0 +1,65 @@
|
|||
:0200000480007A
|
||||
:100000009710000093800000171100001301810277
|
||||
:1000100083A1000013020000930210001303F0FFFD
|
||||
:10002000B70300809383F3FF3704008033824100DD
|
||||
:10003000B382510033836100B38371003384810044
|
||||
:100040002320310023224100232451002326610074
|
||||
:1000500023287100232A8100971000009380C0FAA2
|
||||
:1000600017110000130181FE03A400009304000097
|
||||
:10007000130510009305F0FF370600801306F6FF06
|
||||
:10008000B7060080B30494003305A400B305B400A0
|
||||
:100090003306C400B306D40023208100232291003C
|
||||
:1000A0002324A1002326B1002328C100232AD10044
|
||||
:1000B00097100000938080F517110000130181FA5A
|
||||
:1000C00083A6000013070000930710001308F0FF39
|
||||
:1000D000B70800809388F8FF370900803387E6006F
|
||||
:1000E000B387F60033880601B388160133892601E9
|
||||
:1000F0002320D1002322E1002324F1002326010143
|
||||
:1001000023281101232A210197100000938040F039
|
||||
:1001100017110000130181F603A9000093090000E4
|
||||
:10012000130A1000930AF0FF370B0080130BFBFF3C
|
||||
:10013000B70B0080B3093901330A4901B30A5901E9
|
||||
:10014000330B6901B30B79012320210123223101F3
|
||||
:10015000232441012326510123286101232A71010F
|
||||
:1001600097100000938000EB17110000130181F23B
|
||||
:1001700083AB0000130C0000930C1000130DF0FF74
|
||||
:10018000B70D0080938DFDFF370E0080338C8B01FF
|
||||
:10019000B38C9B01338DAB01B38DBB01338ECB018F
|
||||
:1001A0002320710123228101232491012326A1010F
|
||||
:1001B0002328B101232AC101971C0000938CCCE5B0
|
||||
:1001C000171D0000130D8DEE03AE0C00930D1000F3
|
||||
:1001D000B30EBE01338FBE01B30FBF01B380BF01A9
|
||||
:1001E0003381B001B301B1012320BD012322CD0130
|
||||
:1001F0002324DD012326ED012328FD01232A1D00F0
|
||||
:10020000232C2D00232E3D0097100000938000E149
|
||||
:1002100017110000130181EB03AE0000B79DFFF73B
|
||||
:10022000938D8D813300BE012320010097100000C3
|
||||
:10023000938000DF17110000130181E903AE000075
|
||||
:10024000B79DFFF7938D8D813300BE01B30200008F
|
||||
:10025000232001002322510097100000938080DCAE
|
||||
:1002600017110000130141E783A100003382010050
|
||||
:10027000B30202003303500033070300B307070043
|
||||
:1002800033880700B30C0001330D9001B30D0D004E
|
||||
:10029000232041002322A1012324B10117150000CE
|
||||
:1002A000130545D9971500009385C5E3370610F06F
|
||||
:1002B0001306C6F26306B5028326C5002320D600C6
|
||||
:1002C000832685002320D600832645002320D600E0
|
||||
:1002D000832605002320D600130505016FF09FFD3E
|
||||
:1002E000370510F0130505F223200500000000007B
|
||||
:0402F000000000000A
|
||||
:101000000000000001000000FFFFFFFFFFFFFF7F67
|
||||
:1010100000000080CDAB00007856341298BADCFE98
|
||||
:10102000145892360000000000000000000000008C
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
|
||||
:1010D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
|
||||
:040000058000000077
|
||||
:00000001FF
|
46
simX/riscv_tests/I-JAL-01.elf.hex
Normal file
46
simX/riscv_tests/I-JAL-01.elf.hex
Normal file
|
@ -0,0 +1,46 @@
|
|||
:0200000480007A
|
||||
:10000000971000009380000137513412130181676B
|
||||
:100010006F0080001301000023A0000023A2200035
|
||||
:1000200097100000938080FF1301F0FF9301F0FF11
|
||||
:1000300037D2ED0F130292BA6F0080021301000055
|
||||
:100040009301000013020000B741658793811132CC
|
||||
:100050006F008002130100009301000013020000F2
|
||||
:1000600037E1BC9A130101EF6FF01FFE130100008E
|
||||
:10007000930100001302000023A0000023A220002F
|
||||
:1000800023A4300023A6400097140000938484F733
|
||||
:1000900017150000130585F91301F0FF9301F0FF18
|
||||
:1000A0001302F0FF9302F0FF3753555513035355D6
|
||||
:1000B00083AC040003AC4400EF00C001B72122224E
|
||||
:1000C00093812122EF0F0003B742444493824244BC
|
||||
:1000D0006F004004371111111301111167800000E6
|
||||
:1000E00013010000930100001302000093020000BE
|
||||
:1000F00013030000373233331302323367800F00AB
|
||||
:10010000130100009301000013020000930200009D
|
||||
:1001100013030000B3C3900133C48F0123202500D3
|
||||
:10012000232235002324450023265500232865007B
|
||||
:10013000232A7500232C850097140000938404ED76
|
||||
:1001400017150000130545F01301F0FF9301F0FFB0
|
||||
:100150001302F0FF9302F0FF1303F0FF03AC04005F
|
||||
:1001600083AC44006F004002B77177779381717759
|
||||
:1001700067800F00130100009301000013020000CC
|
||||
:100180009302000013030000376166661301616685
|
||||
:10019000EFFF9FFD3792888813028288EF000001ED
|
||||
:1001A00037B3AAAA1303A3AA6F004002B7A2999972
|
||||
:1001B0009382929967800000130100009301000070
|
||||
:1001C000130200009302000013030000B3C38F0169
|
||||
:1001D00033C4900123202500232235002324450029
|
||||
:1001E0002326550023286500232A7500232C85002B
|
||||
:1001F00017150000130505E297150000938585E6A5
|
||||
:10020000370610F01306C6F26306B5028326C50052
|
||||
:100210002320D600832685002320D6008326450090
|
||||
:100220002320D600832605002320D60013050501D0
|
||||
:100230006FF09FFD370510F0130505F22320050030
|
||||
:0402400000000000BA
|
||||
:10100000BC000080C800008094010080A001008026
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:040000058000000077
|
||||
:00000001FF
|
60
simX/riscv_tests/I-JALR-01.elf.hex
Normal file
60
simX/riscv_tests/I-JALR-01.elf.hex
Normal file
|
@ -0,0 +1,60 @@
|
|||
:0200000480007A
|
||||
:10000000971000009380000137513412130181676B
|
||||
:100010009701000093810101678001001301000036
|
||||
:1000200023A0000023A2200097100000938000FF6F
|
||||
:100030001301F0FF9301F0FF37D2ED0F130292BAD4
|
||||
:10004000970F0000938F8F0367800F00130100004C
|
||||
:100050009301000013020000B741658793811132BC
|
||||
:100060009702000093828203678002001301000060
|
||||
:10007000930100001302000037E1BC9A130101EF65
|
||||
:1000800097070000938787FD678007001301000032
|
||||
:10009000930100001302000023A0000023A220000F
|
||||
:1000A00023A4300023A6400097140000938484F515
|
||||
:1000B00017150000130585F71301F0FF9301F0FFFA
|
||||
:1000C0001302F0FF9302F0FF3753555513035355B6
|
||||
:1000D00083AC040003AC4400970300009383430304
|
||||
:1000E000E7800300B7212222938121221704000018
|
||||
:1000F00013040404E70F0400B742444493824244CB
|
||||
:10010000170F0000130FCF0467000F0037111111F4
|
||||
:10011000130111116780000013010000930100001A
|
||||
:100120001302000093020000130300003732333340
|
||||
:100130001302323367800F001301000093010000A7
|
||||
:10014000130200009302000013030000B3C39001E8
|
||||
:1001500033C48F01232025002322350023244500AA
|
||||
:100160002326550023286500232A7500232C8500AB
|
||||
:1001700097140000938484E9171500001305C5EC5B
|
||||
:100180001301F0FF9301F0FF1302F0FF9302F0FF61
|
||||
:100190001303F0FF03AC040083AC44009707000096
|
||||
:1001A0009387C70267800700B7717777938171776C
|
||||
:1001B00067801F001301000093010000130200007C
|
||||
:1001C0009302000013030000376166661301616645
|
||||
:1001D000970F0000938F9FFDE78F0F00379288885D
|
||||
:1001E000130282889700000093801002E7800000CD
|
||||
:1001F00037B3AAAA1303A3AA170F0000130FCF0245
|
||||
:1002000067000F00B7A299999382929967801000B6
|
||||
:10021000130100009301000013020000930200008C
|
||||
:1002200013030000B3C38F0133C4900123202500C2
|
||||
:10023000232235002324450023265500232865006A
|
||||
:10024000232A7500232C850097100000938080E1FD
|
||||
:100250003712111113021211970100009381F1005E
|
||||
:100260006780110013020000B7222222938222220B
|
||||
:1002700097010000938111016780F1FF9302000054
|
||||
:1002800037333333130333339701000093811181E4
|
||||
:100290006780F17F13030000B743444493834344D2
|
||||
:1002A0009711000093810181678001809303000012
|
||||
:1002B00023A0400023A2500023A4600023A67000C6
|
||||
:1002C00017150000130505D597150000938585DAED
|
||||
:1002D000370610F01306C6F26306B5028326C50082
|
||||
:1002E0002320D600832685002320D60083264500C0
|
||||
:1002F0002320D600832605002320D6001305050100
|
||||
:100300006FF09FFD370510F0130505F2232005005F
|
||||
:0403100000000000E9
|
||||
:10100000E4000080F8000080DC010080F001008036
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:040000058000000077
|
||||
:00000001FF
|
51
simX/riscv_tests/I-LB-01.elf.hex
Normal file
51
simX/riscv_tests/I-LB-01.elf.hex
Normal file
|
@ -0,0 +1,51 @@
|
|||
:0200000480007A
|
||||
:10000000971F0000938F0F00171100001301810349
|
||||
:1000100083810F0003821F0083822F0003833F0030
|
||||
:100020002320310023224100232451002326610094
|
||||
:10003000171C0000130C5CFD9712000093828201D4
|
||||
:10004000830CFCFF030D0C00830D1C00030E2C0021
|
||||
:1000500023A0920123A2A20123A4B20123A6C201DC
|
||||
:1000600097130000938373FA17140000130484FF9E
|
||||
:10007000038F1300838F23008380330003814300A9
|
||||
:100080002320E4012322F401232414002326240046
|
||||
:10009000171500001305C57797150000938585FD9A
|
||||
:1000A00003060580830615800307258083073580B6
|
||||
:1000B00023A0C50023A2D50023A4E50023A6F500B4
|
||||
:1000C000970600009386467517170000130787FBF5
|
||||
:1000D0008387C67F0388D67F8388E67F0389F67F80
|
||||
:1000E0002320F700232207012324170123262701B9
|
||||
:1000F00017180000130888F297180000938888F9F1
|
||||
:100100000309C8FF8309D8FF030AE8FF830AF8FF41
|
||||
:10011000030B0800830B1800030C2800830C380025
|
||||
:10012000030D4800830D5800030E6800830E78000D
|
||||
:1001300023A0280123A2380123A4480123A65801A3
|
||||
:1001400023A8680123AA780123AC880123AE980173
|
||||
:1001500023A0A80323A2B80323A4C80323A6D8037B
|
||||
:10016000971A0000938A0AEC171B0000130B8BF5FB
|
||||
:1001700003800A0023200B00971A0000938ACAEA22
|
||||
:10018000171B0000130B4BF483AB0A00038C0B000E
|
||||
:10019000930C0C0023209B01971C0000938C4CE9CE
|
||||
:1001A000171D0000130D8DF2838C0C0023209D0180
|
||||
:1001B000971D0000938D1DE8171E0000130E4EF1D1
|
||||
:1001C000838DFDFF2320BE0117150000130585E771
|
||||
:1001D00097150000938505F0370610F01306C6F258
|
||||
:1001E0006306B5028326C5002320D600832685003A
|
||||
:1001F0002320D600832645002320D6008326050031
|
||||
:100200002320D600130505016FF09FFD370510F080
|
||||
:10021000130505F223200500000000000000000087
|
||||
:0402200000000000DA
|
||||
:1010000022F2F111F44433F366F6F555F88877F7D8
|
||||
:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8
|
||||
:101020007856341228100080F0DEBC9A10325476C4
|
||||
:1010300098BADCFE00000000000000000000000084
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
|
||||
:040000058000000077
|
||||
:00000001FF
|
51
simX/riscv_tests/I-LBU-01.elf.hex
Normal file
51
simX/riscv_tests/I-LBU-01.elf.hex
Normal file
|
@ -0,0 +1,51 @@
|
|||
:0200000480007A
|
||||
:10000000971F0000938F0F00171100001301810349
|
||||
:1000100083C10F0003C21F0083C22F0003C33F0030
|
||||
:100020002320310023224100232451002326610094
|
||||
:10003000171C0000130C5CFD9712000093828201D4
|
||||
:10004000834CFCFF034D0C00834D1C00034E2C0021
|
||||
:1000500023A0920123A2A20123A4B20123A6C201DC
|
||||
:1000600097130000938373FA17140000130484FF9E
|
||||
:1000700003CF130083CF230083C0330003C14300A9
|
||||
:100080002320E4012322F401232414002326240046
|
||||
:10009000171500001305C57797150000938585FD9A
|
||||
:1000A00003460580834615800347258083473580B6
|
||||
:1000B00023A0C50023A2D50023A4E50023A6F500B4
|
||||
:1000C000970600009386467517170000130787FBF5
|
||||
:1000D00083C7C67F03C8D67F83C8E67F03C9F67F80
|
||||
:1000E0002320F700232207012324170123262701B9
|
||||
:1000F00017180000130888F297180000938888F9F1
|
||||
:100100000349C8FF8349D8FF034AE8FF834AF8FF41
|
||||
:10011000034B0800834B1800034C2800834C380025
|
||||
:10012000034D4800834D5800034E6800834E78000D
|
||||
:1001300023A0280123A2380123A4480123A65801A3
|
||||
:1001400023A8680123AA780123AC880123AE980173
|
||||
:1001500023A0A80323A2B80323A4C80323A6D8037B
|
||||
:10016000971A0000938A0AEC171B0000130B8BF5FB
|
||||
:1001700003C00A0023200B00971A0000938ACAEAE2
|
||||
:10018000171B0000130B4BF483AB0A0003CC0B00CE
|
||||
:10019000930C0C0023209B01971C0000938C4CE9CE
|
||||
:1001A000171D0000130D8DF283CC0C0023209D0140
|
||||
:1001B000971D0000938D1DE8171E0000130E4EF1D1
|
||||
:1001C00083CDFDFF2320BE0117150000130585E731
|
||||
:1001D00097150000938505F0370610F01306C6F258
|
||||
:1001E0006306B5028326C5002320D600832685003A
|
||||
:1001F0002320D600832645002320D6008326050031
|
||||
:100200002320D600130505016FF09FFD370510F080
|
||||
:10021000130505F223200500000000000000000087
|
||||
:0402200000000000DA
|
||||
:1010000022F2F111F44433F366F6F555F88877F7D8
|
||||
:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8
|
||||
:101020007856341228100080F0DEBC9A10325476C4
|
||||
:1010300098BADCFE00000000000000000000000084
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:1010C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
|
||||
:040000058000000077
|
||||
:00000001FF
|
39
simX/riscv_tests/I-LH-01.elf.hex
Normal file
39
simX/riscv_tests/I-LH-01.elf.hex
Normal file
|
@ -0,0 +1,39 @@
|
|||
:0200000480007A
|
||||
:10000000971F0000938F0F00171100001301810349
|
||||
:1000100083910F0003922F002320310023224100FF
|
||||
:10002000171C0000130C5CFE971200009382020262
|
||||
:10003000831CFCFF031D1C0023A0920123A2A2012C
|
||||
:1000400097130000938373FC1714000013048400BB
|
||||
:10005000039F1300839F33002320E4012322F40134
|
||||
:10006000171500001305C57A97150000938505FF45
|
||||
:10007000031605808316258023A0C50023A2D50082
|
||||
:10008000970600009386367917170000130787FD3F
|
||||
:100090008397D67F0398F67F2320F700232207015A
|
||||
:1000A00017180000130888F797180000938808FCB9
|
||||
:1000B0000319C8FF8319E8FF031A0800831A2800F0
|
||||
:1000C000031B4800831B680023A0280123A23801DA
|
||||
:1000D00023A4480123A6580123A8680123AA780174
|
||||
:1000E000971A0000938A0AF4171B0000130B8BF970
|
||||
:1000F00003900A0023200B00971A0000938ACAF28B
|
||||
:10010000171B0000130B4BF883AB0A00039C0B007A
|
||||
:10011000930C0C0023209B01971C0000938C4CF146
|
||||
:10012000171D0000130D8DF6839C0C0023209D01EC
|
||||
:10013000971D0000938D1DF0171E0000130E4EF545
|
||||
:10014000839DFDFF2320BE0117150000130585EFD9
|
||||
:1001500097150000938505F4370610F01306C6F2D4
|
||||
:100160006306B5028326C5002320D60083268500BA
|
||||
:100170002320D600832645002320D60083260500B1
|
||||
:100180002320D600130505016FF09FFD370510F001
|
||||
:10019000130505F223200500000000000000000008
|
||||
:0401A000000000005B
|
||||
:1010000022F2F111F44433F366F6F555F88877F7D8
|
||||
:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8
|
||||
:101020007856341228100080F0DEBC9A10325476C4
|
||||
:1010300098BADCFE00000000000000000000000084
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:040000058000000077
|
||||
:00000001FF
|
39
simX/riscv_tests/I-LHU-01.elf.hex
Normal file
39
simX/riscv_tests/I-LHU-01.elf.hex
Normal file
|
@ -0,0 +1,39 @@
|
|||
:0200000480007A
|
||||
:10000000971F0000938F0F00171100001301810349
|
||||
:1000100083D10F0003D22F0023203100232241007F
|
||||
:10002000171C0000130C5CFE971200009382020262
|
||||
:10003000835CFCFF035D1C0023A0920123A2A201AC
|
||||
:1000400097130000938373FC1714000013048400BB
|
||||
:1000500003DF130083DF33002320E4012322F401B4
|
||||
:10006000171500001305C57A97150000938505FF45
|
||||
:10007000035605808356258023A0C50023A2D50002
|
||||
:10008000970600009386367917170000130787FD3F
|
||||
:1000900083D7D67F03D8F67F2320F70023220701DA
|
||||
:1000A00017180000130888F797180000938808FCB9
|
||||
:1000B0000359C8FF8359E8FF035A0800835A2800F0
|
||||
:1000C000035B4800835B680023A0280123A238015A
|
||||
:1000D00023A4480123A6580123A8680123AA780174
|
||||
:1000E000971A0000938A0AF4171B0000130B8BF970
|
||||
:1000F00003D00A0023200B00971A0000938ACAF24B
|
||||
:10010000171B0000130B4BF883AB0A0003DC0B003A
|
||||
:10011000930C0C0023209B01971C0000938C4CF146
|
||||
:10012000171D0000130D8DF683DC0C0023209D01AC
|
||||
:10013000971D0000938D1DF0171E0000130E4EF545
|
||||
:1001400083DDFDFF2320BE0117150000130585EF99
|
||||
:1001500097150000938505F4370610F01306C6F2D4
|
||||
:100160006306B5028326C5002320D60083268500BA
|
||||
:100170002320D600832645002320D60083260500B1
|
||||
:100180002320D600130505016FF09FFD370510F001
|
||||
:10019000130505F223200500000000000000000008
|
||||
:0401A000000000005B
|
||||
:1010000022F2F111F44433F366F6F555F88877F7D8
|
||||
:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8
|
||||
:101020007856341228100080F0DEBC9A10325476C4
|
||||
:1010300098BADCFE00000000000000000000000084
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:040000058000000077
|
||||
:00000001FF
|
27
simX/riscv_tests/I-LUI-01.elf.hex
Normal file
27
simX/riscv_tests/I-LUI-01.elf.hex
Normal file
|
@ -0,0 +1,27 @@
|
|||
:0200000480007A
|
||||
:100000009717000093870701B7000000B7110000A1
|
||||
:10001000B7F2FFFFB7FEFF7FB70F008023A01700E6
|
||||
:1000200023A2370023A4570023A6D70123A8F70152
|
||||
:1000300097170000938707FD171800001308C8FEE4
|
||||
:1000400003A1070003A2070003A3070003AE0700F4
|
||||
:1000500003AF07003701008037F2FF7F370300004E
|
||||
:10006000371E000037FFFFFF23202800232248000F
|
||||
:10007000232468002326C8012328E80197180000DC
|
||||
:100080009388C8FBB77072429380F0E6B75734127A
|
||||
:100090009387876737EFBC9A130F0FEF3771724260
|
||||
:1000A0001301F1E63758341213088867B7EFBC9A8A
|
||||
:1000B000938F0FEF23A0180023A2F80023A4E801D8
|
||||
:1000C00023A6280023A8080123AAF8011715000079
|
||||
:1000D000130545F4971500009385C5F7370610F012
|
||||
:1000E0001306C6F26306B5028326C5002320D60098
|
||||
:1000F000832685002320D600832645002320D600B2
|
||||
:10010000832605002320D600130505016FF09FFD0F
|
||||
:10011000370510F0130505F223200500000000004C
|
||||
:0401200000000000DB
|
||||
:10100000111111110000000000000000000000009C
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:040000058000000077
|
||||
:00000001FF
|
33
simX/riscv_tests/I-LW-01.elf.hex
Normal file
33
simX/riscv_tests/I-LW-01.elf.hex
Normal file
|
@ -0,0 +1,33 @@
|
|||
:0200000480007A
|
||||
:10000000971F0000938F0F00171100001301810349
|
||||
:1000100083A10F0023203100171C0000130CDCFE0D
|
||||
:100020009712000093824202832CFCFF23A09201CE
|
||||
:1000300097130000938373FD171400001304040149
|
||||
:1000400083AF13002320F401171500001305457C2E
|
||||
:10005000971500009385C5FF0326058023A0C500E2
|
||||
:10006000970600009386167B17170000130787FE7C
|
||||
:1000700083A7F67F2320F70017180000130808FA5B
|
||||
:1000800097180000938848FD0329C8FF83290800BA
|
||||
:10009000032A480023A0280123A2380123A44801F1
|
||||
:1000A000971A0000938A0AF8171B0000130B8BFBAA
|
||||
:1000B00003A00A0023200B00971A0000938ACAF6B7
|
||||
:1000C000171B0000130B4BFA83AB0A0003AC0B00A9
|
||||
:1000D000930C0C0023209B01971C0000938C4CF583
|
||||
:1000E000171D0000130D8DF883AC0C0023209D011B
|
||||
:1000F000971D0000938D1DF4171E0000130E4EF780
|
||||
:1001000083ADFDFF2320BE0117150000130585F305
|
||||
:1001100097150000938505F6370610F01306C6F212
|
||||
:100120006306B5028326C5002320D60083268500FA
|
||||
:100130002320D600832645002320D60083260500F1
|
||||
:100140002320D600130505016FF09FFD370510F041
|
||||
:10015000130505F223200500000000000000000048
|
||||
:04016000000000009B
|
||||
:1010000022F2F111F44433F366F6F555F88877F7D8
|
||||
:10101000AA0A09990CCCBB0BEE0E0DDDF000FF0FF8
|
||||
:101020007856341228100080F0DEBC9A10325476C4
|
||||
:1010300098BADCFE00000000000000000000000084
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:040000058000000077
|
||||
:00000001FF
|
53
simX/riscv_tests/I-MISALIGN_JMP-01.elf.hex
Normal file
53
simX/riscv_tests/I-MISALIGN_JMP-01.elf.hex
Normal file
|
@ -0,0 +1,53 @@
|
|||
:0200000480007A
|
||||
:100000009700000093808020F39F5030737012306F
|
||||
:1000100097100000938000FF371111111301111187
|
||||
:100020006F00A0001301000097100000938040FEB5
|
||||
:10003000372122221301212217020000130212018C
|
||||
:10004000670002001301000023A0200093804000FD
|
||||
:100050003731333313013133170200001302020129
|
||||
:10006000670012001301000023A0200093804000CD
|
||||
:100070003741444413014144170200001302420176
|
||||
:100080006700D2FF1301000023A0200093804000EE
|
||||
:1000900097100000938080F8375155551301515542
|
||||
:1000A0001702000013022201670002001301000082
|
||||
:1000B00037616666130161661702000013023201A0
|
||||
:1000C0006700020013010000377177771301717721
|
||||
:1000D0001702000013020201670022001301000052
|
||||
:1000E00037918888130181881702000013020201EA
|
||||
:1000F000670032001301000097100000938000F5A4
|
||||
:1001000093025000130360006387620037A199993E
|
||||
:100110001301919913000000130000006385520041
|
||||
:100120001301000097100000938000F39302500029
|
||||
:10013000130360006397520037B1AAAA1301A1AA62
|
||||
:10014000130000001300000063956200130100001B
|
||||
:1001500097100000938000F1930250001303600099
|
||||
:100160006347530037C1BBBB1301B1BB1300000091
|
||||
:100170001300000063C56200130100009710000027
|
||||
:10018000938000EF930250001303600063675300F5
|
||||
:1001900037D1CCCC1301C1CC1300000013000000F8
|
||||
:1001A00063E562001301000097100000938000EDEA
|
||||
:1001B000930250001303600063D7620037E1DDDD76
|
||||
:1001C0001301D1DD1300000013000000635553003C
|
||||
:1001D0001301000097100000938000EB9302500081
|
||||
:1001E0001303600063F7620037F1EEEE1301E1EEF6
|
||||
:1001F000130000001300000063755300130100009A
|
||||
:1002000073905F306F000003732F3034130FEFFFD4
|
||||
:1002100073101F34732F3034137F3F0023A0E0018D
|
||||
:10022000732F203423A2E00123A420009380C00078
|
||||
:1002300073002030171500001305C5DC971500006A
|
||||
:10024000938545E5370610F01306C6F26306B5023E
|
||||
:100250008326C5002320D600832685002320D600D0
|
||||
:10026000832645002320D600832605002320D600C0
|
||||
:10027000130505016FF09FFD370510F0130505F21A
|
||||
:040280002320050032
|
||||
:10100000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:040000058000000077
|
||||
:00000001FF
|
44
simX/riscv_tests/I-MISALIGN_LDST-01.elf.hex
Normal file
44
simX/riscv_tests/I-MISALIGN_LDST-01.elf.hex
Normal file
|
@ -0,0 +1,44 @@
|
|||
:0200000480007A
|
||||
:100000009700000093804014F39F50309711000038
|
||||
:10001000938141FF171100001301C1FF97100000E9
|
||||
:1000200093804000930250001303600003A201007C
|
||||
:100030002320410003A211002322410003A221003A
|
||||
:100040002324410003A23100232641009711000020
|
||||
:10005000938181FB17110000130141FE97100000EE
|
||||
:100060009380C0FF930250001303600003920100CD
|
||||
:10007000232041000392110023224100039221001A
|
||||
:1000800023244100039231002326410003D20100C2
|
||||
:100090002328410003D21100232A410003D221006A
|
||||
:1000A000232C410003D23100232E41001711000000
|
||||
:1000B0001301C1FC97100000938040FD1303000062
|
||||
:1000C000B7A299999382929923205100232251003B
|
||||
:1000D00023245100232651002320610013014100F5
|
||||
:1000E000A32061001301410023216100130141009D
|
||||
:1000F000A3216100171100001301C1FA971000003D
|
||||
:10010000938040FB13030000B7A2999993829299C0
|
||||
:100110002320510023225100232451002326510083
|
||||
:100120002310610013014100A3106100130141007D
|
||||
:100130002311610013014100A311610073905F302E
|
||||
:100140006F00C002732F1034130F4F0073101F3451
|
||||
:10015000732F3034137F3F0023A0E001732F20342E
|
||||
:1001600023A2E00193808000730020301715000067
|
||||
:10017000130545EA971500009385C5F4370610F07E
|
||||
:100180001306C6F26306B5028326C5002320D600F7
|
||||
:10019000832685002320D600832645002320D60011
|
||||
:1001A000832605002320D600130505016FF09FFD6F
|
||||
:1001B000370510F0130505F22320050000000000AC
|
||||
:0401C000000000003B
|
||||
:10100000C1B1A19102F2E2D2000000000000000094
|
||||
:10101000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
||||
:10102000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
||||
:10103000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
||||
:10104000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
||||
:10105000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
||||
:10106000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
||||
:10107000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
||||
:10108000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
||||
:10109000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
||||
:1010A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
||||
:1010B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
||||
:040000058000000077
|
||||
:00000001FF
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue