From ea7bd485caf0785484a8a0d7787ea4cdc9361dbf Mon Sep 17 00:00:00 2001 From: felsabbagh3 Date: Sat, 9 Nov 2019 00:03:15 -0500 Subject: [PATCH] Icache/Dcache finally done + configurability tested: --- rtl/VX_define.v | 2 +- rtl/cache/VX_Cache_Bank.v | 15 +- rtl/cache/VX_cache_data_per_index.v | 77 ++-- rtl/cache/VX_d_cache.v | 51 ++- runtime/mains/simple/vx_simple_main.c | 58 +-- runtime/mains/simple/vx_simple_main.dump | 535 ++++++++++++++--------- runtime/mains/simple/vx_simple_main.elf | Bin 10652 -> 10744 bytes runtime/mains/simple/vx_simple_main.hex | 128 +++--- 8 files changed, 517 insertions(+), 349 deletions(-) diff --git a/rtl/VX_define.v b/rtl/VX_define.v index 6d10bd97..16172366 100644 --- a/rtl/VX_define.v +++ b/rtl/VX_define.v @@ -136,7 +136,7 @@ `define ICACHE_WAYS 2 `endif //Bytes -`define ICACHE_BLOCK 8 +`define ICACHE_BLOCK 16 `define ICACHE_BANKS 1 `define ICACHE_LOG_NUM_BANKS `CLOG2(`ICACHE_BANKS) diff --git a/rtl/cache/VX_Cache_Bank.v b/rtl/cache/VX_Cache_Bank.v index 887bb3ae..e3251e72 100644 --- a/rtl/cache/VX_Cache_Bank.v +++ b/rtl/cache/VX_Cache_Bank.v @@ -56,8 +56,7 @@ module VX_Cache_Bank eviction_addr, // What's the eviction tag data_evicted, - evicted_way, - way_use + evicted_way ); // localparam NUMBER_BANKS = `CACHE_BANKS; @@ -69,6 +68,8 @@ module VX_Cache_Bank localparam SEND_MEM_REQ = 1; // Write back this block into memory localparam RECIV_MEM_RSP = 2; + + localparam BLOCK_NUM_BITS = `CLOG2(CACHE_BLOCK); // Inputs input wire rst; input wire clk; @@ -94,7 +95,6 @@ module VX_Cache_Bank input wire[CACHE_WAY_INDEX-1:0] evicted_way; - output wire[CACHE_WAY_INDEX-1:0] way_use; // Outputs // Normal shit @@ -122,7 +122,6 @@ module VX_Cache_Bank - wire[CACHE_WAY_INDEX-1:0] update_way; wire[CACHE_WAY_INDEX-1:0] way_to_update; assign miss = (tag_use != o_tag) && valid_use && valid_in; @@ -137,8 +136,7 @@ module VX_Cache_Bank assign write_from_mem = (state == RECIV_MEM_RSP) && valid_in; // TODO assign hit = (access && (tag_use == o_tag) && valid_use); //assign eviction_addr = {eviction_tag, actual_index, block_offset, 5'b0}; // Fix with actual data - assign eviction_addr = {eviction_tag, actual_index, 7'b0}; // Fix with actual data - assign update_way = hit ? way_use : 0; + assign eviction_addr = {eviction_tag, actual_index, {(BLOCK_NUM_BITS){1'b0}}}; // Fix with actual data @@ -215,7 +213,7 @@ module VX_Cache_Bank // assign we[g] = (normal_write || (write_from_mem)) ? 1'b1 : 1'b0; assign data_write[g] = write_from_mem ? fetched_writedata[g] : use_write_data; - assign way_to_update = write_from_mem ? evicted_way : update_way; + assign way_to_update = evicted_way; end @@ -243,8 +241,7 @@ module VX_Cache_Bank .tag_use (tag_use), .data_use (data_use), .valid_use (valid_use), - .dirty_use (dirty_use), - .way (way_use) + .dirty_use (dirty_use) ); diff --git a/rtl/cache/VX_cache_data_per_index.v b/rtl/cache/VX_cache_data_per_index.v index a364a55e..4e95a42d 100644 --- a/rtl/cache/VX_cache_data_per_index.v +++ b/rtl/cache/VX_cache_data_per_index.v @@ -32,8 +32,7 @@ module VX_cache_data_per_index output wire[TAG_SIZE_END:TAG_SIZE_START] tag_use, output wire[NUM_WORDS_PER_BLOCK-1:0][31:0] data_use, output wire valid_use, - output wire dirty_use, - output wire[CACHE_WAY_INDEX-1:0] way + output wire dirty_use ); //localparam NUMBER_BANKS = CACHE_BANKS; @@ -46,7 +45,7 @@ module VX_cache_data_per_index wire [CACHE_WAYS-1:0] valid_use_per_way; wire [CACHE_WAYS-1:0] dirty_use_per_way; wire [CACHE_WAYS-1:0] hit_per_way; - reg [CACHE_WAY_INDEX-1:0] eviction_way_index; + // reg [CACHE_WAY_INDEX-1:0] eviction_way_index; wire [CACHE_WAYS-1:0][NUM_WORDS_PER_BLOCK-1:0][3:0] we_per_way; wire [CACHE_WAYS-1:0][NUM_WORDS_PER_BLOCK-1:0][31:0] data_write_per_way; wire [CACHE_WAYS-1:0] write_from_mem_per_way; @@ -84,26 +83,44 @@ module VX_cache_data_per_index - wire hit = |hit_per_way; - wire miss = ~hit; - wire update = |we && !miss; - wire valid = &valid_use_per_way; + // wire hit = |hit_per_way; + // wire miss = ~hit; + // wire update = |we && !miss; + // wire valid = &valid_use_per_way; - assign way = hit ? way_index : (valid ? eviction_way_index : (invalid_found ? invalid_index : 0)); - assign tag_use = hit ? tag_use_per_way[way_index] : (valid ? tag_use_per_way[eviction_way_index] : (invalid_found ? tag_use_per_way[invalid_index] : 0)); - assign data_use = hit ? data_use_per_way[way_index] : (valid ? data_use_per_way[eviction_way_index] : (invalid_found ? data_use_per_way[invalid_index] : 0)); - assign valid_use = hit ? valid_use_per_way[way_index] : (valid ? valid_use_per_way[eviction_way_index] : (invalid_found ? valid_use_per_way[invalid_index] : 0)); - assign dirty_use = hit ? dirty_use_per_way[way_index] : (valid ? dirty_use_per_way[eviction_way_index] : (invalid_found ? dirty_use_per_way[invalid_index] : 0)); + wire[CACHE_WAY_INDEX-1:0] way_use_Qual; + + assign way_use_Qual = (state != CACHE_IDLE) ? way_to_update : way_index; + + assign tag_use = tag_use_per_way[way_use_Qual]; + assign data_use = data_use_per_way[way_use_Qual]; + assign valid_use = valid_use_per_way[way_use_Qual]; + assign dirty_use = dirty_use_per_way[way_use_Qual]; + + // assign tag_use = hit ? tag_use_per_way[way_index] : (valid ? tag_use_per_way[eviction_way_index] : (invalid_found ? tag_use_per_way[invalid_index] : 0)); + // assign data_use = hit ? data_use_per_way[way_index] : (valid ? data_use_per_way[eviction_way_index] : (invalid_found ? data_use_per_way[invalid_index] : 0)); + // assign valid_use = hit ? valid_use_per_way[way_index] : (valid ? valid_use_per_way[eviction_way_index] : (invalid_found ? valid_use_per_way[invalid_index] : 0)); + // assign dirty_use = hit ? dirty_use_per_way[way_index] : (valid ? dirty_use_per_way[eviction_way_index] : (invalid_found ? dirty_use_per_way[invalid_index] : 0)); genvar ways; for(ways=0; ways < CACHE_WAYS; ways = ways + 1) begin : each_way - assign hit_per_way[ways] = ((valid_use_per_way[ways] == 1'b1) && (tag_use_per_way[ways] == tag_write)) ? 1'b1 : 0; - assign we_per_way[ways] = (evict == 1'b1) || (update == 1'b1) ? ((ways == way_to_update) ? (we) : 0) : 0; - assign data_write_per_way[ways] = (evict == 1'b1) || (update == 1'b1) ? ((ways == way_to_update) ? data_write : 0) : 0; - assign write_from_mem_per_way[ways] = (evict == 1'b1) ? ((ways == way_to_update) ? 1 : 0) : 0; + + assign hit_per_way[ways] = ((valid_use_per_way[ways] == 1'b1) && (tag_use_per_way[ways] == tag_write)) ? 1'b1 : 0; + + + assign write_from_mem_per_way[ways] = evict && (ways == way_use_Qual); + assign we_per_way[ways] = (ways == way_use_Qual) ? (we) : 0; + assign data_write_per_way[ways] = data_write; + + + // assign hit_per_way[ways] = ((valid_use_per_way[ways] == 1'b1) && (tag_use_per_way[ways] == tag_write)) ? 1'b1 : 0; + + // assign we_per_way[ways] = (evict == 1'b1) || (update == 1'b1) ? ((ways == way_use_Qual) ? (we) : 0) : 0; + // assign data_write_per_way[ways] = (evict == 1'b1) || (update == 1'b1) ? ((ways == way_use_Qual) ? data_write : 0) : 0; + // assign write_from_mem_per_way[ways] = (evict == 1'b1) ? ((ways == way_use_Qual) ? 1 : 0) : 0; VX_cache_data #( .NUM_IND (NUM_IND), @@ -128,19 +145,19 @@ module VX_cache_data_per_index ); end - always @(posedge clk or posedge rst) begin - if (rst) begin - eviction_way_index <= 0; - end else begin - // if((miss && dirty_use && valid_use && !evict && valid_in)) begin // can be either evict or invalid cache entries - if((state == SEND_MEM_REQ)) begin // can be either evict or invalid cache entries - if((eviction_way_index+1) == CACHE_WAYS) begin - eviction_way_index <= 0; - end else begin - eviction_way_index <= (eviction_way_index + 1); - end - end - end - end + // always @(posedge clk or posedge rst) begin + // if (rst) begin + // eviction_way_index <= 0; + // end else begin + // // if((miss && dirty_use && valid_use && !evict && valid_in)) begin // can be either evict or invalid cache entries + // if((state == SEND_MEM_REQ)) begin // can be either evict or invalid cache entries + // if((eviction_way_index+1) == CACHE_WAYS) begin + // eviction_way_index <= 0; + // end else begin + // eviction_way_index <= (eviction_way_index + 1); + // end + // end + // end + // end endmodule diff --git a/rtl/cache/VX_d_cache.v b/rtl/cache/VX_d_cache.v index d46533a9..d07bbbd3 100644 --- a/rtl/cache/VX_d_cache.v +++ b/rtl/cache/VX_d_cache.v @@ -103,6 +103,8 @@ module VX_d_cache assign o_p_readdata = new_final_data_read_Qual; + reg[CACHE_WAY_INDEX-1:0] global_way_to_evict; + wire[CACHE_BANKS - 1 : 0][NUM_REQ-1:0] thread_track_banks; // Valid thread mask per bank wire[CACHE_BANKS - 1 : 0][LOG_NUM_REQ-1:0] index_per_bank; // Index of thread each bank will try to service @@ -116,9 +118,9 @@ module VX_d_cache reg[CACHE_BANKS-1:0] eviction_wb_old; - wire[CACHE_BANKS -1 : 0][CACHE_WAY_INDEX-1:0] evicted_way_new; - reg [CACHE_BANKS -1 : 0][CACHE_WAY_INDEX-1:0] evicted_way_old; - wire[CACHE_BANKS -1 : 0][CACHE_WAY_INDEX-1:0] way_used; + // wire[CACHE_BANKS -1 : 0][CACHE_WAY_INDEX-1:0] evicted_way_new; + // reg [CACHE_BANKS -1 : 0][CACHE_WAY_INDEX-1:0] evicted_way_old; + // wire[CACHE_BANKS -1 : 0][CACHE_WAY_INDEX-1:0] way_used; // Internal State reg [3:0] state; @@ -133,7 +135,7 @@ module VX_d_cache reg[CACHE_BANKS - 1 : 0][31:0] eviction_addr_per_bank; reg[31:0] miss_addr; - reg[31:0] evict_addr; + // reg[31:0] evict_addr; wire curr_processor_request_valid = (|i_p_valid); @@ -240,6 +242,9 @@ module VX_d_cache // Handle if there is more than one miss 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); + /////////////////////////////////////////////////////////////////////// genvar cur_t; integer init_b; @@ -251,28 +256,37 @@ module VX_d_cache stored_valid <= 0; // eviction_addr_per_bank <= 0; miss_addr <= 0; - evict_addr <= 0; + // evict_addr <= 0; // threads_serviced_Qual = 0; // for (init_b = 0; init_b < NUMBER_BANKS; init_b=init_b+1) // begin // debug_hit_per_bank_mask[init_b] <= 0; // end - evicted_way_old <= 0; - eviction_wb_old <= 0; + // evicted_way_old <= 0; + // eviction_wb_old <= 0; + global_way_to_evict <= 0; end else begin + + global_way_to_evict <= (update_global_way_to_evict) ? (global_way_to_evict+1) : global_way_to_evict; + state <= new_state; stored_valid <= new_stored_valid; - if (miss_found) begin - miss_addr <= i_p_addr[send_index_to_bank[miss_bank_index]]; - evict_addr <= eviction_addr_per_bank[miss_bank_index]; + if (state == CACHE_IDLE) begin + if (miss_found) begin + miss_addr <= i_p_addr[send_index_to_bank[miss_bank_index]]; + // evict_addr <= eviction_addr_per_bank[miss_bank_index]; + end else begin + miss_addr <= 0; + // evict_addr <= 0; + end end final_data_read <= new_final_data_read_Qual; - evicted_way_old <= evicted_way_new; - eviction_wb_old <= eviction_wb; + // evicted_way_old <= evicted_way_new; + // eviction_wb_old <= eviction_wb; end end @@ -281,13 +295,13 @@ module VX_d_cache generate for (bank_id = 0; bank_id < CACHE_BANKS; bank_id = bank_id + 1) begin - wire[31:0] bank_addr = (state == SEND_MEM_REQ) ? evict_addr : + wire[31:0] bank_addr = (state == SEND_MEM_REQ) ? miss_addr : (state == RECIV_MEM_RSP) ? miss_addr : i_p_addr[send_index_to_bank[bank_id]]; - assign evicted_way_new[bank_id] = (state == SEND_MEM_REQ) ? way_used[bank_id] : - (state == RECIV_MEM_RSP) ? evicted_way_old[bank_id] : - 0; + // assign evicted_way_new[bank_id] = (state == SEND_MEM_REQ) ? way_used[bank_id] : + // (state == RECIV_MEM_RSP) ? evicted_way_old[bank_id] : + // 0; wire[1:0] byte_select = bank_addr[1:0]; wire[OFFSET_SIZE_END:OFFSET_SIZE_START] cache_offset = bank_addr[ADDR_OFFSET_END:ADDR_OFFSET_START]; @@ -344,8 +358,7 @@ module VX_d_cache .data_evicted (o_m_writedata[bank_id]), .eviction_wb (eviction_wb[bank_id]), // Something needs to be written back .fetched_writedata(i_m_readdata[bank_id]), // Data From memory - .evicted_way (evicted_way_new[bank_id]), - .way_use (way_used[bank_id]) + .evicted_way (global_way_to_evict) ); end @@ -354,7 +367,7 @@ module VX_d_cache // Mem Rsp // Req to mem: - assign o_m_evict_addr = evict_addr & MEM_ADDR_REQ_MASK; + assign o_m_evict_addr = (eviction_addr_per_bank[0]) & MEM_ADDR_REQ_MASK; // Could be anything because tag+index are same assign o_m_read_addr = miss_addr & MEM_ADDR_REQ_MASK; assign o_m_valid = (state == SEND_MEM_REQ); assign o_m_read_or_write = (state == SEND_MEM_REQ) && (|eviction_wb); diff --git a/runtime/mains/simple/vx_simple_main.c b/runtime/mains/simple/vx_simple_main.c index 98cefffa..cbf59936 100644 --- a/runtime/mains/simple/vx_simple_main.c +++ b/runtime/mains/simple/vx_simple_main.c @@ -52,48 +52,48 @@ int main() // Main is called with all threads active of warp 0 vx_tmc(1); - // vx_print_str("Simple Main\n"); + vx_print_str("Simple Main\n"); - // // // TMC test - // test_tmc(); + // // TMC test + test_tmc(); - // // Control Divergence Test - // vx_print_str("test_divergence\n"); - // vx_tmc(4); - // test_divergence(); - // vx_tmc(1); + // Control Divergence Test + vx_print_str("test_divergence\n"); + vx_tmc(4); + test_divergence(); + vx_tmc(1); // Test wspawn - // vx_print_str("test_wspawn\n"); + vx_print_str("test_wspawn\n"); test_wsapwn(); - // vx_print_str("vx_spawnWarps mat_add_kernel\n"); + vx_print_str("vx_spawnWarps mat_add_kernel\n"); - // mat_add_args_t arguments; - // arguments.x = x; - // arguments.y = y; - // arguments.z = z; - // arguments.numColums = 4; - // arguments.numRows = 4; + mat_add_args_t arguments; + arguments.x = x; + arguments.y = y; + arguments.z = z; + arguments.numColums = 4; + arguments.numRows = 4; - // int numWarps = 4; - // int numThreads = 4; + int numWarps = 4; + int numThreads = 4; - // vx_spawnWarps(numWarps, numThreads, mat_add_kernel, &arguments); + vx_spawnWarps(numWarps, numThreads, mat_add_kernel, &arguments); - // 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"); - // } + 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"); + } return 0; } \ No newline at end of file diff --git a/runtime/mains/simple/vx_simple_main.dump b/runtime/mains/simple/vx_simple_main.dump index 353f06aa..6de47810 100644 --- a/runtime/mains/simple/vx_simple_main.dump +++ b/runtime/mains/simple/vx_simple_main.dump @@ -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: 0f878793 addi a5,a5,248 # 810000f8 +80000134: 15478793 addi a5,a5,340 # 81000154 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 80000184: 810007b7 lui a5,0x81000 -80000188: 04078513 addi a0,a5,64 # 81000040 +80000188: 04078513 addi a0,a5,64 # 81000040 8000018c: f4dff0ef jal ra,800000d8 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: 2507a783 lw a5,592(a5) # 81000250 +800001b8: 2ac7a783 lw a5,684(a5) # 810002ac 800001bc: 00078513 mv a0,a5 800001c0: ea9ff0ef jal ra,80000068 800001c4: 810007b7 lui a5,0x81000 -800001c8: 24c7a703 lw a4,588(a5) # 8100024c +800001c8: 2a87a703 lw a4,680(a5) # 810002a8 800001cc: 810007b7 lui a5,0x81000 -800001d0: 2487a783 lw a5,584(a5) # 81000248 +800001d0: 2a47a783 lw a5,676(a5) # 810002a4 800001d4: 00078513 mv a0,a5 800001d8: 000700e7 jalr a4 800001dc: eadff0ef jal ra,80000088 @@ -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: 24e7a623 sw a4,588(a5) # 8100024c +8000023c: 2ae7a423 sw a4,680(a5) # 810002a8 80000240: 810007b7 lui a5,0x81000 80000244: fe042703 lw a4,-32(s0) -80000248: 24e7a423 sw a4,584(a5) # 81000248 +80000248: 2ae7a223 sw a4,676(a5) # 810002a4 8000024c: 810007b7 lui a5,0x81000 80000250: fe842703 lw a4,-24(s0) -80000254: 24e7a823 sw a4,592(a5) # 81000250 +80000254: 2ae7a623 sw a4,684(a5) # 810002ac 80000258: 800007b7 lui a5,0x80000 -8000025c: 1a478793 addi a5,a5,420 # 800001a4 +8000025c: 1a478793 addi a5,a5,420 # 800001a4 80000260: 00078593 mv a1,a5 80000264: fec42503 lw a0,-20(s0) 80000268: df9ff0ef jal ra,80000060 @@ -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 +80000298: 08478513 addi a0,a5,132 # 81000084 8000029c: e3dff0ef jal ra,800000d8 800002a0: 00400513 li a0,4 800002a4: dc5ff0ef jal ra,80000068 @@ -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: 17878793 addi a5,a5,376 # 81000178 +800002c0: 1d478793 addi a5,a5,468 # 810001d4 800002c4: 00f687b3 add a5,a3,a5 800002c8: 00e7a023 sw a4,0(a5) 800002cc: 00100513 li a0,1 800002d0: d99ff0ef jal ra,80000068 800002d4: 810007b7 lui a5,0x81000 -800002d8: 1787a783 lw a5,376(a5) # 81000178 +800002d8: 1d47a783 lw a5,468(a5) # 810001d4 800002dc: 00078513 mv a0,a5 800002e0: e35ff0ef jal ra,80000114 800002e4: 810007b7 lui a5,0x81000 -800002e8: 09478513 addi a0,a5,148 # 81000094 +800002e8: 09478513 addi a0,a5,148 # 81000094 800002ec: dedff0ef jal ra,800000d8 800002f0: 810007b7 lui a5,0x81000 -800002f4: 17878793 addi a5,a5,376 # 81000178 +800002f4: 1d478793 addi a5,a5,468 # 810001d4 800002f8: 0047a783 lw a5,4(a5) 800002fc: 00078513 mv a0,a5 80000300: e15ff0ef jal ra,80000114 80000304: 810007b7 lui a5,0x81000 -80000308: 09478513 addi a0,a5,148 # 81000094 +80000308: 09478513 addi a0,a5,148 # 81000094 8000030c: dcdff0ef jal ra,800000d8 80000310: 810007b7 lui a5,0x81000 -80000314: 17878793 addi a5,a5,376 # 81000178 +80000314: 1d478793 addi a5,a5,468 # 810001d4 80000318: 0087a783 lw a5,8(a5) 8000031c: 00078513 mv a0,a5 80000320: df5ff0ef jal ra,80000114 80000324: 810007b7 lui a5,0x81000 -80000328: 09478513 addi a0,a5,148 # 81000094 +80000328: 09478513 addi a0,a5,148 # 81000094 8000032c: dadff0ef jal ra,800000d8 80000330: 810007b7 lui a5,0x81000 -80000334: 17878793 addi a5,a5,376 # 81000178 +80000334: 1d478793 addi a5,a5,468 # 810001d4 80000338: 00c7a783 lw a5,12(a5) 8000033c: 00078513 mv a0,a5 80000340: dd5ff0ef jal ra,80000114 80000344: 810007b7 lui a5,0x81000 -80000348: 09478513 addi a0,a5,148 # 81000094 +80000348: 09478513 addi a0,a5,148 # 81000094 8000034c: d8dff0ef jal ra,800000d8 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: 26478793 addi a5,a5,612 # 81000264 +800003c8: 2c078793 addi a5,a5,704 # 810002c0 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: 26478793 addi a5,a5,612 # 81000264 +800003e8: 2c078793 addi a5,a5,704 # 810002c0 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: 26478793 addi a5,a5,612 # 81000264 +8000042c: 2c078793 addi a5,a5,704 # 810002c0 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: 26478793 addi a5,a5,612 # 81000264 +8000044c: 2c078793 addi a5,a5,704 # 810002c0 80000450: 00f707b3 add a5,a4,a5 80000454: 00d00713 li a4,13 80000458: 00e7a023 sw a4,0(a5) 8000045c: c25ff0ef jal ra,80000080 80000460: c21ff0ef jal ra,80000080 80000464: 810007b7 lui a5,0x81000 -80000468: 2647a783 lw a5,612(a5) # 81000264 +80000468: 2c07a783 lw a5,704(a5) # 810002c0 8000046c: 00078513 mv a0,a5 80000470: ca5ff0ef jal ra,80000114 80000474: 810007b7 lui a5,0x81000 -80000478: 09478513 addi a0,a5,148 # 81000094 +80000478: 09478513 addi a0,a5,148 # 81000094 8000047c: c5dff0ef jal ra,800000d8 80000480: 810007b7 lui a5,0x81000 -80000484: 26478793 addi a5,a5,612 # 81000264 +80000484: 2c078793 addi a5,a5,704 # 810002c0 80000488: 0047a783 lw a5,4(a5) 8000048c: 00078513 mv a0,a5 80000490: c85ff0ef jal ra,80000114 80000494: 810007b7 lui a5,0x81000 -80000498: 09478513 addi a0,a5,148 # 81000094 +80000498: 09478513 addi a0,a5,148 # 81000094 8000049c: c3dff0ef jal ra,800000d8 800004a0: 810007b7 lui a5,0x81000 -800004a4: 26478793 addi a5,a5,612 # 81000264 +800004a4: 2c078793 addi a5,a5,704 # 810002c0 800004a8: 0087a783 lw a5,8(a5) 800004ac: 00078513 mv a0,a5 800004b0: c65ff0ef jal ra,80000114 800004b4: 810007b7 lui a5,0x81000 -800004b8: 09478513 addi a0,a5,148 # 81000094 +800004b8: 09478513 addi a0,a5,148 # 81000094 800004bc: c1dff0ef jal ra,800000d8 800004c0: 810007b7 lui a5,0x81000 -800004c4: 26478793 addi a5,a5,612 # 81000264 +800004c4: 2c078793 addi a5,a5,704 # 810002c0 800004c8: 00c7a783 lw a5,12(a5) 800004cc: 00078513 mv a0,a5 800004d0: c45ff0ef jal ra,80000114 800004d4: 810007b7 lui a5,0x81000 -800004d8: 09478513 addi a0,a5,148 # 81000094 +800004d8: 09478513 addi a0,a5,148 # 81000094 800004dc: bfdff0ef jal ra,800000d8 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: 25478793 addi a5,a5,596 # 81000254 +80000518: 2b078793 addi a5,a5,688 # 810002b0 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 +80000560: 4f478793 addi a5,a5,1268 # 800004f4 80000564: fef42623 sw a5,-20(s0) 80000568: fec42583 lw a1,-20(s0) 8000056c: 00400513 li a0,4 80000570: af1ff0ef jal ra,80000060 80000574: f81ff0ef jal ra,800004f4 80000578: 810007b7 lui a5,0x81000 -8000057c: 2547a783 lw a5,596(a5) # 81000254 +8000057c: 2b07a783 lw a5,688(a5) # 810002b0 80000580: 00078513 mv a0,a5 80000584: b91ff0ef jal ra,80000114 80000588: 810007b7 lui a5,0x81000 -8000058c: 09478513 addi a0,a5,148 # 81000094 +8000058c: 09478513 addi a0,a5,148 # 81000094 80000590: b49ff0ef jal ra,800000d8 80000594: 810007b7 lui a5,0x81000 -80000598: 25478793 addi a5,a5,596 # 81000254 +80000598: 2b078793 addi a5,a5,688 # 810002b0 8000059c: 0047a783 lw a5,4(a5) 800005a0: 00078513 mv a0,a5 800005a4: b71ff0ef jal ra,80000114 800005a8: 810007b7 lui a5,0x81000 -800005ac: 09478513 addi a0,a5,148 # 81000094 +800005ac: 09478513 addi a0,a5,148 # 81000094 800005b0: b29ff0ef jal ra,800000d8 800005b4: 810007b7 lui a5,0x81000 -800005b8: 25478793 addi a5,a5,596 # 81000254 +800005b8: 2b078793 addi a5,a5,688 # 810002b0 800005bc: 0087a783 lw a5,8(a5) 800005c0: 00078513 mv a0,a5 800005c4: b51ff0ef jal ra,80000114 800005c8: 810007b7 lui a5,0x81000 -800005cc: 09478513 addi a0,a5,148 # 81000094 +800005cc: 09478513 addi a0,a5,148 # 81000094 800005d0: b09ff0ef jal ra,800000d8 800005d4: 810007b7 lui a5,0x81000 -800005d8: 25478793 addi a5,a5,596 # 81000254 +800005d8: 2b078793 addi a5,a5,688 # 810002b0 800005dc: 00c7a783 lw a5,12(a5) 800005e0: 00078513 mv a0,a5 800005e4: b31ff0ef jal ra,80000114 800005e8: 810007b7 lui a5,0x81000 -800005ec: 09478513 addi a0,a5,148 # 81000094 +800005ec: 09478513 addi a0,a5,148 # 81000094 800005f0: ae9ff0ef jal ra,800000d8 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 8000061c: 810007b7 lui a5,0x81000 -80000620: 09878513 addi a0,a5,152 # 81000098 +80000620: 09878513 addi a0,a5,152 # 81000098 80000624: ab5ff0ef jal ra,800000d8 80000628: 00400513 li a0,4 8000062c: a3dff0ef jal ra,80000068 @@ -453,7 +453,7 @@ Disassembly of section .text: 80000634: 00100513 li a0,1 80000638: a31ff0ef jal ra,80000068 8000063c: 810007b7 lui a5,0x81000 -80000640: 0ac78513 addi a0,a5,172 # 810000ac +80000640: 0ac78513 addi a0,a5,172 # 810000ac 80000644: a95ff0ef jal ra,800000d8 80000648: f05ff0ef jal ra,8000054c 8000064c: 00000013 nop @@ -528,19 +528,98 @@ Disassembly of section .text: 80000758: 00008067 ret 8000075c
: -8000075c: ff010113 addi sp,sp,-16 -80000760: 00112623 sw ra,12(sp) -80000764: 00812423 sw s0,8(sp) -80000768: 01010413 addi s0,sp,16 +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 -80000774: dd9ff0ef jal ra,8000054c -80000778: 00000793 li a5,0 -8000077c: 00078513 mv a0,a5 -80000780: 00c12083 lw ra,12(sp) -80000784: 00812403 lw s0,8(sp) -80000788: 01010113 addi sp,sp,16 -8000078c: 00008067 ret +80000774: 810007b7 lui a5,0x81000 +80000778: 0f878513 addi a0,a5,248 # 810000f8 +8000077c: 95dff0ef jal ra,800000d8 +80000780: b05ff0ef jal ra,80000284 +80000784: 810007b7 lui a5,0x81000 +80000788: 10878513 addi a0,a5,264 # 81000108 +8000078c: 94dff0ef jal ra,800000d8 +80000790: 00400513 li a0,4 +80000794: 8d5ff0ef jal ra,80000068 +80000798: bcdff0ef jal ra,80000364 +8000079c: 00100513 li a0,1 +800007a0: 8c9ff0ef jal ra,80000068 +800007a4: 810007b7 lui a5,0x81000 +800007a8: 11c78513 addi a0,a5,284 # 8100011c +800007ac: 92dff0ef jal ra,800000d8 +800007b0: d9dff0ef jal ra,8000054c +800007b4: 810007b7 lui a5,0x81000 +800007b8: 12c78513 addi a0,a5,300 # 8100012c +800007bc: 91dff0ef jal ra,800000d8 +800007c0: 810007b7 lui a5,0x81000 +800007c4: 22478793 addi a5,a5,548 # 81000224 +800007c8: fcf42423 sw a5,-56(s0) +800007cc: 810007b7 lui a5,0x81000 +800007d0: 26478793 addi a5,a5,612 # 81000264 +800007d4: fcf42623 sw a5,-52(s0) +800007d8: 810007b7 lui a5,0x81000 +800007dc: 2d078793 addi a5,a5,720 # 810002d0 +800007e0: fcf42823 sw a5,-48(s0) +800007e4: 00400793 li a5,4 +800007e8: fcf42a23 sw a5,-44(s0) +800007ec: 00400793 li a5,4 +800007f0: fcf42c23 sw a5,-40(s0) +800007f4: 00400793 li a5,4 +800007f8: fef42223 sw a5,-28(s0) +800007fc: 00400793 li a5,4 +80000800: fef42023 sw a5,-32(s0) +80000804: fe442703 lw a4,-28(s0) +80000808: fe042583 lw a1,-32(s0) +8000080c: fc840793 addi a5,s0,-56 +80000810: 00078693 mv a3,a5 +80000814: 800007b7 lui a5,0x80000 +80000818: 66078613 addi a2,a5,1632 # 80000660 +8000081c: 00070513 mv a0,a4 +80000820: 9f5ff0ef jal ra,80000214 +80000824: fe042623 sw zero,-20(s0) +80000828: 0800006f j 800008a8 +8000082c: fe042423 sw zero,-24(s0) +80000830: 0540006f j 80000884 +80000834: fd442703 lw a4,-44(s0) +80000838: fec42783 lw a5,-20(s0) +8000083c: 02f70733 mul a4,a4,a5 +80000840: fe842783 lw a5,-24(s0) +80000844: 00f707b3 add a5,a4,a5 +80000848: fcf42e23 sw a5,-36(s0) +8000084c: 810007b7 lui a5,0x81000 +80000850: fdc42703 lw a4,-36(s0) +80000854: 00271713 slli a4,a4,0x2 +80000858: 2d078793 addi a5,a5,720 # 810002d0 +8000085c: 00f707b3 add a5,a4,a5 +80000860: 0007a783 lw a5,0(a5) +80000864: 00078513 mv a0,a5 +80000868: 8adff0ef jal ra,80000114 +8000086c: 810007b7 lui a5,0x81000 +80000870: 14c78513 addi a0,a5,332 # 8100014c +80000874: 865ff0ef jal ra,800000d8 +80000878: fe842783 lw a5,-24(s0) +8000087c: 00178793 addi a5,a5,1 +80000880: fef42423 sw a5,-24(s0) +80000884: fd442703 lw a4,-44(s0) +80000888: fe842783 lw a5,-24(s0) +8000088c: fae7e4e3 bltu a5,a4,80000834 +80000890: 810007b7 lui a5,0x81000 +80000894: 15078513 addi a0,a5,336 # 81000150 +80000898: 841ff0ef jal ra,800000d8 +8000089c: fec42783 lw a5,-20(s0) +800008a0: 00178793 addi a5,a5,1 +800008a4: fef42623 sw a5,-20(s0) +800008a8: fd842703 lw a4,-40(s0) +800008ac: fec42783 lw a5,-20(s0) +800008b0: f6e7eee3 bltu a5,a4,8000082c +800008b4: 00000793 li a5,0 +800008b8: 00078513 mv a0,a5 +800008bc: 03c12083 lw ra,60(sp) +800008c0: 03812403 lw s0,56(sp) +800008c4: 04010113 addi sp,sp,64 +800008c8: 00008067 ret Disassembly of section .rodata: @@ -652,206 +731,242 @@ Disassembly of section .rodata: 810000f0: 0065 c.nop 25 810000f2: 0000 unimp 810000f4: 0066 c.slli zero,0x19 +810000f6: 0000 unimp +810000f8: 706d6953 0x706d6953 +810000fc: 656c flw fa1,76(a0) +810000fe: 4d20 lw s0,88(a0) +81000100: 6961 lui s2,0x18 +81000102: 0a6e slli s4,s4,0x1b +81000104: 0000 unimp +81000106: 0000 unimp +81000108: 6574 flw fa3,76(a0) +8100010a: 645f7473 csrrci s0,0x645,30 +8100010e: 7669 lui a2,0xffffa +81000110: 7265 lui tp,0xffff9 +81000112: 636e6567 0x636e6567 +81000116: 0a65 addi s4,s4,25 +81000118: 0000 unimp +8100011a: 0000 unimp +8100011c: 6574 flw fa3,76(a0) +8100011e: 775f7473 csrrci s0,0x775,30 +81000122: 77617073 csrci 0x776,2 +81000126: 0a6e slli s4,s4,0x1b +81000128: 0000 unimp +8100012a: 0000 unimp +8100012c: 7876 flw fa6,124(sp) +8100012e: 735f 6170 6e77 0x6e776170735f +81000134: 70726157 0x70726157 +81000138: 616d2073 csrs 0x616,s10 +8100013c: 5f74 lw a3,124(a4) +8100013e: 6461 lui s0,0x18 +81000140: 5f64 lw s1,124(a4) +81000142: 6e72656b 0x6e72656b +81000146: 6c65 lui s8,0x19 +81000148: 000a c.slli zero,0x2 +8100014a: 0000 unimp +8100014c: 0020 addi s0,sp,8 +8100014e: 0000 unimp +81000150: 000a c.slli zero,0x2 Disassembly of section .data: -810000f8 : -810000f8: 0000 unimp -810000fa: 8100 0x8100 -810000fc: 0004 0x4 -810000fe: 8100 0x8100 -81000100: 0008 0x8 -81000102: 8100 0x8100 -81000104: 000c 0xc -81000106: 8100 0x8100 -81000108: 0010 0x10 -8100010a: 8100 0x8100 -8100010c: 0014 0x14 -8100010e: 8100 0x8100 -81000110: 0018 0x18 -81000112: 8100 0x8100 -81000114: 001c 0x1c -81000116: 8100 0x8100 -81000118: 0020 addi s0,sp,8 -8100011a: 8100 0x8100 -8100011c: 0024 addi s1,sp,8 -8100011e: 8100 0x8100 -81000120: 0028 addi a0,sp,8 -81000122: 8100 0x8100 -81000124: 002c addi a1,sp,8 -81000126: 8100 0x8100 -81000128: 0030 addi a2,sp,8 -8100012a: 8100 0x8100 -8100012c: 0034 addi a3,sp,8 -8100012e: 8100 0x8100 -81000130: 0038 addi a4,sp,8 -81000132: 8100 0x8100 -81000134: 003c addi a5,sp,8 -81000136: 8100 0x8100 - -81000138 : -81000138: 0044 addi s1,sp,4 -8100013a: 8100 0x8100 -8100013c: 0048 addi a0,sp,4 -8100013e: 8100 0x8100 -81000140: 004c addi a1,sp,4 -81000142: 8100 0x8100 -81000144: 0050 addi a2,sp,4 -81000146: 8100 0x8100 -81000148: 0054 addi a3,sp,4 -8100014a: 8100 0x8100 -8100014c: 0058 addi a4,sp,4 -8100014e: 8100 0x8100 -81000150: 005c addi a5,sp,4 -81000152: 8100 0x8100 -81000154: 0060 addi s0,sp,12 +81000154 : +81000154: 0000 unimp 81000156: 8100 0x8100 -81000158: 0064 addi s1,sp,12 +81000158: 0004 0x4 8100015a: 8100 0x8100 -8100015c: 0068 addi a0,sp,12 +8100015c: 0008 0x8 8100015e: 8100 0x8100 -81000160: 006c addi a1,sp,12 +81000160: 000c 0xc 81000162: 8100 0x8100 -81000164: 0070 addi a2,sp,12 +81000164: 0010 0x10 81000166: 8100 0x8100 -81000168: 0074 addi a3,sp,12 +81000168: 0014 0x14 8100016a: 8100 0x8100 -8100016c: 0078 addi a4,sp,12 +8100016c: 0018 0x18 8100016e: 8100 0x8100 -81000170: 007c addi a5,sp,12 +81000170: 001c 0x1c 81000172: 8100 0x8100 -81000174: 0080 addi s0,sp,64 +81000174: 0020 addi s0,sp,8 81000176: 8100 0x8100 - -81000178 : -81000178: 0005 c.nop 1 -8100017a: 0000 unimp -8100017c: 0005 c.nop 1 -8100017e: 0000 unimp -81000180: 0005 c.nop 1 -81000182: 0000 unimp -81000184: 0005 c.nop 1 - ... - -81000188 : -81000188: 00b8 addi a4,sp,72 +81000178: 0024 addi s1,sp,8 +8100017a: 8100 0x8100 +8100017c: 0028 addi a0,sp,8 +8100017e: 8100 0x8100 +81000180: 002c addi a1,sp,8 +81000182: 8100 0x8100 +81000184: 0030 addi a2,sp,8 +81000186: 8100 0x8100 +81000188: 0034 addi a3,sp,8 8100018a: 8100 0x8100 -8100018c: 00bc addi a5,sp,72 +8100018c: 0038 addi a4,sp,8 8100018e: 8100 0x8100 -81000190: 00c0 addi s0,sp,68 +81000190: 003c addi a5,sp,8 81000192: 8100 0x8100 -81000194: 00c4 addi s1,sp,68 -81000196: 8100 0x8100 -81000198: 00c8 addi a0,sp,68 -8100019a: 8100 0x8100 -8100019c: 00cc addi a1,sp,68 -8100019e: 8100 0x8100 -810001a0: 00d0 addi a2,sp,68 -810001a2: 8100 0x8100 -810001a4: 00d4 addi a3,sp,68 -810001a6: 8100 0x8100 -810001a8: 00d8 addi a4,sp,68 -810001aa: 8100 0x8100 -810001ac: 00dc addi a5,sp,68 -810001ae: 8100 0x8100 -810001b0: 00e0 addi s0,sp,76 -810001b2: 8100 0x8100 -810001b4: 00e4 addi s1,sp,76 -810001b6: 8100 0x8100 -810001b8: 00e8 addi a0,sp,76 -810001ba: 8100 0x8100 -810001bc: 00ec addi a1,sp,76 -810001be: 8100 0x8100 -810001c0: 00f0 addi a2,sp,76 -810001c2: 8100 0x8100 -810001c4: 00f4 addi a3,sp,76 -810001c6: 8100 0x8100 -810001c8 : -810001c8: 0005 c.nop 1 -810001ca: 0000 unimp -810001cc: 0005 c.nop 1 -810001ce: 0000 unimp -810001d0: 0005 c.nop 1 -810001d2: 0000 unimp +81000194 : +81000194: 0044 addi s1,sp,4 +81000196: 8100 0x8100 +81000198: 0048 addi a0,sp,4 +8100019a: 8100 0x8100 +8100019c: 004c addi a1,sp,4 +8100019e: 8100 0x8100 +810001a0: 0050 addi a2,sp,4 +810001a2: 8100 0x8100 +810001a4: 0054 addi a3,sp,4 +810001a6: 8100 0x8100 +810001a8: 0058 addi a4,sp,4 +810001aa: 8100 0x8100 +810001ac: 005c addi a5,sp,4 +810001ae: 8100 0x8100 +810001b0: 0060 addi s0,sp,12 +810001b2: 8100 0x8100 +810001b4: 0064 addi s1,sp,12 +810001b6: 8100 0x8100 +810001b8: 0068 addi a0,sp,12 +810001ba: 8100 0x8100 +810001bc: 006c addi a1,sp,12 +810001be: 8100 0x8100 +810001c0: 0070 addi a2,sp,12 +810001c2: 8100 0x8100 +810001c4: 0074 addi a3,sp,12 +810001c6: 8100 0x8100 +810001c8: 0078 addi a4,sp,12 +810001ca: 8100 0x8100 +810001cc: 007c addi a5,sp,12 +810001ce: 8100 0x8100 +810001d0: 0080 addi s0,sp,64 +810001d2: 8100 0x8100 + +810001d4 : 810001d4: 0005 c.nop 1 810001d6: 0000 unimp -810001d8: 0006 c.slli zero,0x1 +810001d8: 0005 c.nop 1 810001da: 0000 unimp -810001dc: 0006 c.slli zero,0x1 +810001dc: 0005 c.nop 1 810001de: 0000 unimp -810001e0: 0006 c.slli zero,0x1 -810001e2: 0000 unimp -810001e4: 0006 c.slli zero,0x1 -810001e6: 0000 unimp -810001e8: 00000007 0x7 -810001ec: 00000007 0x7 -810001f0: 00000007 0x7 -810001f4: 00000007 0x7 -810001f8: 0008 0x8 -810001fa: 0000 unimp -810001fc: 0008 0x8 -810001fe: 0000 unimp -81000200: 0008 0x8 -81000202: 0000 unimp -81000204: 0008 0x8 +810001e0: 0005 c.nop 1 ... -81000208 : -81000208: 0001 nop -8100020a: 0000 unimp -8100020c: 0001 nop -8100020e: 0000 unimp -81000210: 0001 nop -81000212: 0000 unimp -81000214: 0001 nop -81000216: 0000 unimp -81000218: 0001 nop -8100021a: 0000 unimp -8100021c: 0001 nop -8100021e: 0000 unimp -81000220: 0001 nop -81000222: 0000 unimp -81000224: 0001 nop +810001e4 : +810001e4: 00b8 addi a4,sp,72 +810001e6: 8100 0x8100 +810001e8: 00bc addi a5,sp,72 +810001ea: 8100 0x8100 +810001ec: 00c0 addi s0,sp,68 +810001ee: 8100 0x8100 +810001f0: 00c4 addi s1,sp,68 +810001f2: 8100 0x8100 +810001f4: 00c8 addi a0,sp,68 +810001f6: 8100 0x8100 +810001f8: 00cc addi a1,sp,68 +810001fa: 8100 0x8100 +810001fc: 00d0 addi a2,sp,68 +810001fe: 8100 0x8100 +81000200: 00d4 addi a3,sp,68 +81000202: 8100 0x8100 +81000204: 00d8 addi a4,sp,68 +81000206: 8100 0x8100 +81000208: 00dc addi a5,sp,68 +8100020a: 8100 0x8100 +8100020c: 00e0 addi s0,sp,76 +8100020e: 8100 0x8100 +81000210: 00e4 addi s1,sp,76 +81000212: 8100 0x8100 +81000214: 00e8 addi a0,sp,76 +81000216: 8100 0x8100 +81000218: 00ec addi a1,sp,76 +8100021a: 8100 0x8100 +8100021c: 00f0 addi a2,sp,76 +8100021e: 8100 0x8100 +81000220: 00f4 addi a3,sp,76 +81000222: 8100 0x8100 + +81000224 : +81000224: 0005 c.nop 1 81000226: 0000 unimp -81000228: 0001 nop +81000228: 0005 c.nop 1 8100022a: 0000 unimp -8100022c: 0001 nop +8100022c: 0005 c.nop 1 8100022e: 0000 unimp -81000230: 0001 nop +81000230: 0005 c.nop 1 81000232: 0000 unimp -81000234: 0001 nop +81000234: 0006 c.slli zero,0x1 81000236: 0000 unimp -81000238: 0001 nop +81000238: 0006 c.slli zero,0x1 8100023a: 0000 unimp -8100023c: 0001 nop +8100023c: 0006 c.slli zero,0x1 8100023e: 0000 unimp -81000240: 0001 nop +81000240: 0006 c.slli zero,0x1 81000242: 0000 unimp -81000244: 0001 nop +81000244: 00000007 0x7 +81000248: 00000007 0x7 +8100024c: 00000007 0x7 +81000250: 00000007 0x7 +81000254: 0008 0x8 +81000256: 0000 unimp +81000258: 0008 0x8 +8100025a: 0000 unimp +8100025c: 0008 0x8 +8100025e: 0000 unimp +81000260: 0008 0x8 + ... + +81000264 : +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 +81000282: 0000 unimp +81000284: 0001 nop +81000286: 0000 unimp +81000288: 0001 nop +8100028a: 0000 unimp +8100028c: 0001 nop +8100028e: 0000 unimp +81000290: 0001 nop +81000292: 0000 unimp +81000294: 0001 nop +81000296: 0000 unimp +81000298: 0001 nop +8100029a: 0000 unimp +8100029c: 0001 nop +8100029e: 0000 unimp +810002a0: 0001 nop ... Disassembly of section .bss: -81000248 : -81000248: 0000 unimp +810002a4 : +810002a4: 0000 unimp ... -8100024c : -8100024c: 0000 unimp +810002a8 : +810002a8: 0000 unimp ... -81000250 : -81000250: 0000 unimp +810002ac : +810002ac: 0000 unimp ... -81000254 : +810002b0 : ... -81000264 : +810002c0 : ... -81000274 : +810002d0 : ... Disassembly of section .comment: diff --git a/runtime/mains/simple/vx_simple_main.elf b/runtime/mains/simple/vx_simple_main.elf index 73922c4b7797c0e512a8c21643cae4c480b9e170..9a6a5921d2e12e97b35b9700d2a2340d8cf9f77a 100644 GIT binary patch delta 958 zcmYLIUr19?7(eIU%{wG(+ucxB=5=S=o%0V#SiY1d(I6;FjqD-D%4PnWYl`-!Ytuy( zsh>S1m@(1^ACx`RgG7R0&>nh_AP|f+1`%x!rV{hgId@n3F8BPt-*60hS|n>OJU!9l0k{6 zLcKW23007yjKVLmiNPt0%C1>#jP>N^=SoFg?Rj#NcBQHOQfNYB|w;%NL>CcF6}ll3iX+(`M9sBffW`<_vMS<^qw@2{C? zY?8j}k;Kt8GxaCf9>l$N;@HV)zKggH{b8Y+xOZ|OG$P{Buu4Pwj-tk;9fg-KDp9A7 z@>mYW1Vjssh-1P%QO~ZzH$z-Hr4JzkaWHJuQ~g0yUR6#Ddt6kGDM?`uk(zu{US2&A zi)93Hp*q=1H==U_%HQec6YV4xT6ByhLcAE!$=Lw3U`*NCPXEno1ZyT+7Gq6Rjf-hw zYSXRX>0JO&;L;j(>X7Hg;B{%)yP`}jcAMp9x+kM@Ea4^ur5+wQ-CjUq;v8ffK2xW+; z53>Z!+Gn^{3{9j4Pr(CHhPPpYu8Xil%FOf|kLak(gmmZ=M##azcXA$ofO1Czo(Df& zKf|nJ*tAaT8dV{WjP%D?fLfgshxkagpC;t$V15pyfV9G*x5|g{yU|?uu00L$p z1Obo9f0gDl{a~0pPg#%AV)9vKdB%>(Z-HdUWL_0{Az)ZGvH+C{GO#e5W@KPE!8qAY z#f~v$a;=IzqtE2MK(b`=UzK{p3Py%T0kA@51_59M1R!Zt2J&Or85&H0@$CVX~B_5-Z4Q9+Mq4)fqh|X9CHX$rFL(oXI;i)g`{DGcec!ZG!=z%fSEu DbZMBp diff --git a/runtime/mains/simple/vx_simple_main.hex b/runtime/mains/simple/vx_simple_main.hex index 4ac6cbdc..6ab91db0 100644 --- a/runtime/mains/simple/vx_simple_main.hex +++ b/runtime/mains/simple/vx_simple_main.hex @@ -18,7 +18,7 @@ :100100001301C10067800000B702010023A0B20004 :1001100067800000130101FE232E1100232C8100B3 :10012000130401022326A4FEB70700810327C4FE9F -:10013000131727009387870FB307F70083A70700DC +:100130001317270093874715B307F70083A7070016 :1001400013850700EFF05FF9130000008320C10161 :10015000032481011301010267800000130101FEE5 :10016000232E1100232C8100130401022326A4FE58 @@ -26,31 +26,31 @@ :10018000EFF05FF9B707008113850704EFF0DFF4A4 :10019000130000008320C101032481011301010227 :1001A00067800000130101FE232E1100232C810023 -:1001B00013040102B707008183A7072513850700F1 -:1001C000EFF09FEAB707008103A7C724B7070081B4 -:1001D00083A7872413850700E7000700EFF0DFEA15 +:1001B00013040102B707008183A7C72A138507002C +:1001C000EFF09FEAB707008103A7872AB7070081EE +:1001D00083A7472A13850700E7000700EFF0DFEA4F :1001E0002326A4FE8327C4FE6388070013050000AE :1001F000EFF09FE76F00C00013051000EFF0DFE69F :10020000130000008320C1010324810113010102B6 :1002100067800000130101FE232E1100232C8100B2 :10022000130401022326A4FE2324B4FE2322C4FEC9 -:100230002320D4FEB7070081032744FE23A6E7242A -:10024000B7070081032704FE23A4E724B707008132 -:10025000032784FE23A8E724B70700809387471A63 +:100230002320D4FEB7070081032744FE23A4E72A26 +:10024000B7070081032704FE23A2E72AB70700812E +:10025000032784FE23A6E72AB70700809387471A5F :10026000938507000325C4FEEFF09FDFEFF09FF3B7 :10027000130000008320C101032481011301010246 :1002800067800000130101FE232E1100232C810042 :1002900013040102B707008113854708EFF0DFE37D :1002A00013054000EFF05FDCEFF09FDE2326A4FE95 :1002B0000327C4FEB70700818326C4FE9396260059 -:1002C00093878717B387F60023A0E7001305100074 -:1002D000EFF09FD9B707008183A787171385070021 +:1002C0009387471DB387F60023A0E70013051000AE +:1002D000EFF09FD9B707008183A7471D138507005B :1002E000EFF05FE3B707008113854709EFF0DFDE2A -:1002F000B70700819387871783A7470013850700F7 +:1002F000B70700819387471D83A747001385070031 :10030000EFF05FE1B707008113854709EFF0DFDC0D -:10031000B70700819387871783A787001385070096 +:10031000B70700819387471D83A7870013850700D0 :10032000EFF05FDFB707008113854709EFF0DFDAF1 -:10033000B70700819387871783A7C7001385070036 +:10033000B70700819387471D83A7C7001385070070 :10034000EFF05FDDB707008113854709EFF0DFD8D5 :10035000130000008320C101032481011301010265 :1003600067800000130101FE232E1100232C810061 @@ -59,40 +59,40 @@ :10039000EFF09FCE8347B4FE638407068327C4FE35 :1003A00093B717002305F4FE8347A4FE13850700C7 :1003B000EFF09FCC8347A4FE63820702B70700815A -:1003C0000327C4FE1317270093874726B307F700B8 +:1003C0000327C4FE131727009387072CB307F700F2 :1003D0001307A00023A0E7006F000002B707008109 -:1003E0000327C4FE1317270093874726B307F70098 +:1003E0000327C4FE131727009387072CB307F700D2 :1003F0001307B00023A0E700EFF09FC86F0040068E :100400008327C4FE93B73700A304F4FE834794FE0A :1004100013850700EFF05FC6834794FE63820702EF -:10042000B70700810327C4FE1317270093874726C9 +:10042000B70700810327C4FE131727009387072C03 :10043000B307F7001307C00023A0E7006F00000216 -:10044000B70700810327C4FE1317270093874726A9 +:10044000B70700810327C4FE131727009387072CE3 :10045000B307F7001307D00023A0E700EFF05FC257 -:10046000EFF01FC2B707008183A747261385070057 +:10046000EFF01FC2B707008183A7072C1385070091 :10047000EFF05FCAB707008113854709EFF0DFC5CA -:10048000B70700819387472683A747001385070096 +:10048000B70700819387072C83A7470013850700D0 :10049000EFF05FC8B707008113854709EFF0DFC3AE -:1004A000B70700819387472683A787001385070036 +:1004A000B70700819387072C83A787001385070070 :1004B000EFF05FC6B707008113854709EFF0DFC192 -:1004C000B70700819387472683A7C70013850700D6 +:1004C000B70700819387072C83A7C7001385070010 :1004D000EFF05FC4B707008113854709EFF0DFBF76 :1004E000130000008320C1010324810113010102D4 :1004F00067800000130101FE232E1100232C8100D0 :1005000013040102EFF05FB82326A4FEB7070081B1 -:100510000327C4FE1317270093874725B307F70067 +:100510000327C4FE131727009387072BB307F700A1 :100520000327C4FE23A0E7008327C4FE63860700D9 :1005300013050000EFF05FB3130000008320C1013A :10054000032481011301010267800000130101FEF1 :10055000232E1100232C810013040102B707008011 :100560009387474F2326F4FE8325C4FE13054000DE -:10057000EFF01FAFEFF01FF8B707008183A7472503 +:10057000EFF01FAFEFF01FF8B707008183A7072B3D :1005800013850700EFF01FB9B707008113854709EE -:10059000EFF09FB4B70700819387472583A74700F3 +:10059000EFF09FB4B70700819387072B83A747002D :1005A00013850700EFF01FB7B707008113854709D0 -:1005B000EFF09FB2B70700819387472583A7870095 +:1005B000EFF09FB2B70700819387072B83A78700CF :1005C00013850700EFF01FB5B707008113854709B2 -:1005D000EFF09FB0B70700819387472583A7C70037 +:1005D000EFF09FB0B70700819387072B83A7C70071 :1005E00013850700EFF01FB3B70700811385470994 :1005F000EFF09FAE130000008320C10103248101AE :100600001301010267800000130101FF232611007E @@ -116,10 +116,30 @@ :10072000B307F70003A707008327C4FE03A68700CB :100730008327C4FD93972700B307F6003387E600AD :1007400023A0E700EFF0DF93130000008320C10334 -:10075000032481031301010467800000130101FFDA -:100760002326110023248100130401011305100026 -:10077000EFF09F8FEFF09FDD9307000013850700D8 -:100780008320C10003248100130101016780000060 +:10075000032481031301010467800000130101FCDD +:10076000232E1102232C810213040104130510000F +:10077000EFF09F8FB70700811385870FEFF0DF95AC +:10078000EFF05FB0B707008113858710EFF0DF94BB +:1007900013054000EFF05F8DEFF0DFBC1305100094 +:1007A000EFF09F8CB70700811385C711EFF0DF9240 +:1007B000EFF0DFD9B70700811385C712EFF0DF91A3 +:1007C000B7070081938747222324F4FCB7070081F1 +:1007D000938747262326F4FCB70700819387072DCC +:1007E0002328F4FC93074000232AF4FC93074000DD +:1007F000232CF4FC930740002322F4FE93074000CF +:100800002320F4FE032744FE832504FE930784FC83 +:1008100093860700B7070080138607661305070055 +:10082000EFF05F9F232604FE6F000008232404FEE0 +:100830006F004005032744FD8327C4FE3307F702FA +:10084000832784FEB307F700232EF4FCB70700814B +:100850000327C4FD131727009387072DB307F7005D +:1008600083A7070013850700EFF0DF8AB707008131 +:100870001385C714EFF05F86832784FE93871700E4 +:100880002324F4FE032744FD832784FEE3E4E7FAF0 +:10089000B707008113850715EFF01F848327C4FE77 +:1008A000938717002326F4FE032784FD8327C4FEC5 +:1008B000E3EEE7F693070000138507008320C103EA +:0C08C00003248103130101046780000081 :02000004810079 :10000000300000003100000032000000330000002A :10001000340000003500000036000000370000000A @@ -136,27 +156,33 @@ :1000C0003200000033000000340000003500000062 :1000D0003600000037000000380000003900000042 :1000E0006100000062000000630000006400000086 -:0600F0006500000066003F -:1000F8000000008104000081080000810C000081DC -:100108001000008114000081180000811C0000818B -:100118002000008124000081280000812C0000813B -:100128003000008134000081380000813C000081EB -:1001380044000081480000814C000081500000818B -:1001480054000081580000815C000081600000813B -:1001580064000081680000816C00008170000081EB -:1001680074000081780000817C000081800000819B -:100178000500000005000000050000000500000063 -:10018800B8000081BC000081C0000081C40000816B -:10019800C8000081CC000081D0000081D40000811B -:1001A800D8000081DC000081E0000081E4000081CB -:1001B800E8000081EC000081F0000081F40000817B -:1001C8000500000005000000050000000500000013 -:1001D80006000000060000000600000006000000FF -:1001E80007000000070000000700000007000000EB -:1001F80008000000080000000800000008000000D7 -:1002080001000000010000000100000001000000E2 -:1002180001000000010000000100000001000000D2 -:1002280001000000010000000100000001000000C2 -:1002380001000000010000000100000001000000B2 +:1000F000650000006600000053696D706C65204D5E +:1001000061696E0A00000000746573745F6469764B +:10011000657267656E63650A00000000746573743C +:100120005F77737061776E0A0000000076785F7306 +:100130007061776E5761727073206D61745F616476 +:10014000645F6B65726E656C0A0000002000000041 +:020150000A00A3 +:100154000000008104000081080000810C0000817F +:100164001000008114000081180000811C0000812F +:100174002000008124000081280000812C000081DF +:100184003000008134000081380000813C0000818F +:1001940044000081480000814C000081500000812F +:1001A40054000081580000815C00008160000081DF +:1001B40064000081680000816C000081700000818F +:1001C40074000081780000817C000081800000813F +:1001D4000500000005000000050000000500000007 +:1001E400B8000081BC000081C0000081C40000810F +:1001F400C8000081CC000081D0000081D4000081BF +:10020400D8000081DC000081E0000081E40000816E +:10021400E8000081EC000081F0000081F40000811E +:1002240005000000050000000500000005000000B6 +:1002340006000000060000000600000006000000A2 +:10024400070000000700000007000000070000008E +:10025400080000000800000008000000080000007A +:100264000100000001000000010000000100000086 +:100274000100000001000000010000000100000076 +:100284000100000001000000010000000100000066 +:100294000100000001000000010000000100000056 :040000058000000077 :00000001FF