Add verilog/dv/{dhrystone,jtag}
diff --git a/verilog/dv/dhrystone/Makefile b/verilog/dv/dhrystone/Makefile
new file mode 100644
index 0000000..0a7e211
--- /dev/null
+++ b/verilog/dv/dhrystone/Makefile
@@ -0,0 +1,55 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# RTL/GL/GL_SDF
+export SIM ?= RTL
+
+# Questa only
+SIMULATOR = Questa
+
+export TARGET_PATH = $(MARMOT_ROOT)
+export DESIGNS = $(TARGET_PATH)
+export CARAVEL_ROOT = $(TARGET_PATH)/caravel
+export MCW_ROOT = $(TARGET_PATH)/mgmt_core_wrapper
+export CORE_VERILOG_PATH = $(MCW_ROOT)/verilog
+#export PDK_ROOT = $(PDK_ROOT)
+#export PDK = $(PDK)
+export TOOLS = $(RISCV)
+export GCC_PREFIX = riscv64-unknown-linux-gnu
+
+TESTCASE_DIR = $(HOME)/Development/RISC-V/chipyard/vlsi/sim/testcase
+
+PWDD := $(shell pwd)
+BLOCKS := $(shell basename $(PWDD))
+
+# ---- Include Partitioned Makefiles ----
+
+CONFIG = caravel_user_project
+
+include $(MCW_ROOT)/verilog/dv/make/env.makefile
+include $(MCW_ROOT)/verilog/dv/make/var.makefile
+include $(MCW_ROOT)/verilog/dv/make/cpu.makefile
+include ../make/sim.makefile
+
+setup:
+ echo "// $(TESTCASE_DIR)/dhrystone-2.1/gcc_dry2reg_flash.mem" > spi_flash.mem
+ cat $(TESTCASE_DIR)/dhrystone-2.1/gcc_dry2reg_flash.mem >> spi_flash.mem
+ cp $(TESTCASE_DIR)/dhrystone-2.1/gcc_dry2reg_flash.lis spi_flash.lis
+ cp $(TESTCASE_DIR)/dhrystone-2.1/Proc_6_pc_flash.v .
+
+wave:
+ vsim -gui vsim.wlf -do wave.do &
+
diff --git a/verilog/dv/dhrystone/Proc_6_pc_flash.v b/verilog/dv/dhrystone/Proc_6_pc_flash.v
new file mode 100644
index 0000000..7db9caa
--- /dev/null
+++ b/verilog/dv/dhrystone/Proc_6_pc_flash.v
@@ -0,0 +1 @@
+`define Proc_6 32'h2000023a
diff --git a/verilog/dv/dhrystone/dhrystone.c b/verilog/dv/dhrystone/dhrystone.c
new file mode 100644
index 0000000..0ca3628
--- /dev/null
+++ b/verilog/dv/dhrystone/dhrystone.c
@@ -0,0 +1,162 @@
+/*
+ * SPDX-FileCopyrightText: 2020 Efabless Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+// This include is relative to $CARAVEL_PATH (see Makefile)
+#include <defs.h>
+#include <stub.c>
+
+#define MARMOT_ICACHE_TAG_RAM_CLK_DELAY 2
+#define MARMOT_ICACHE_DATA_RAM0_CLK_DELAY 5
+#define MARMOT_ICACHE_DATA_RAM1_CLK_DELAY 4
+#define MARMOT_ICACHE_DATA_RAM2_CLK_DELAY 1
+#define MARMOT_ICACHE_DATA_RAM3_CLK_DELAY 3
+
+void main()
+{
+ /*
+ IO Control Registers
+ | DM | VTRIP | SLOW | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+ | 3-bits | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit |
+ Output: 0000_0110_0000_1110 (0x1808) = GPIO_MODE_USER_STD_OUTPUT
+ | DM | VTRIP | SLOW | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+ | 110 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
+
+
+ Input: 0000_0001_0000_1111 (0x0402) = GPIO_MODE_USER_STD_INPUT_NOPULL
+ | DM | VTRIP | SLOW | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+ | 001 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
+ */
+
+ /* Set up the housekeeping SPI to be connected internally so */
+ /* that external pin changes don't affect it. */
+
+ reg_spi_enable = 1;
+ reg_wb_enable = 1;
+ //reg_spimaster_config = 0xa002; // Enable, prescaler = 2,
+ // connect to housekeeping SPI
+
+ // Connect the housekeeping SPI to the SPI master
+ // so that the CSB line is not left floating. This allows
+ // all of the GPIO pins to be used for user functions.
+
+ // All GPIO pins are configured to be bi-directional for Marmot use
+ reg_mprj_io_37 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_36 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_35 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_34 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_33 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_32 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+
+#if 0
+ // For actual use
+ reg_mprj_io_31 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_30 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_29 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_28 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+#else
+ // For simulation
+ reg_mprj_io_31 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_30 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_29 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_28 = GPIO_MODE_MGMT_STD_OUTPUT;
+#endif
+
+ reg_mprj_io_27 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_26 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_25 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_24 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_23 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_22 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_21 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_20 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_19 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_18 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_17 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_16 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_15 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_14 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_13 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_12 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_11 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_10 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_9 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_8 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_7 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_6 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_5 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ //reg_mprj_io_4 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ //reg_mprj_io_3 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ //reg_mprj_io_2 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ //reg_mprj_io_1 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ //reg_mprj_io_0 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+
+ /* Apply configuration */
+ reg_mprj_xfer = 1;
+ while (reg_mprj_xfer == 1);
+
+ // Initialize LA probes [127:0]
+ // Input:
+ // [31: 0] <- Marmot.gpio_out[31:0]
+ // Output:
+ // [31: 0] -> Marmot.gpio_in[31:0]
+ // [63:32] -> Marmot.ram_clk_delay_sel[31:0]
+ // [ 4: 0] -> u_clk_skew_adjust_0.sel[4:0] (I-$ Tag RAM)
+ // [ 9: 5] -> u_clk_skew_adjust_1.sel[4:0] (I-$ Data RAM0)
+ // [14:10] -> u_clk_skew_adjust_1.sel[4:0] (I-$ Data RAM1)
+ // [19:15] -> u_clk_skew_adjust_1.sel[4:0] (I-$ Data RAM2)
+ // [24:20] -> u_clk_skew_adjust_1.sel[4:0] (I-$ Data RAM3)
+
+ reg_la0_oenb = reg_la0_iena = 0xffffffff; // [31:0]
+ reg_la1_oenb = reg_la1_iena = 0xffffffff; // [63:32]
+ reg_la2_oenb = reg_la2_iena = 0xffffffff; // [95:64]
+ reg_la3_oenb = reg_la3_iena = 0xffffffff; // [127:96]
+ reg_la0_data = 0xffffffff;
+ reg_la1_data = 0xffffffff;
+ reg_la2_data = 0xffffffff;
+ reg_la3_data = 0xffffffff;
+ reg_la0_data = 0x00000000;
+ reg_la1_data = 0x00000000;
+ reg_la2_data = 0x00000000;
+ reg_la3_data = 0x00000000;
+
+ // Configure LA probes [31:0] as inputs to mgmt_soc
+ reg_la0_iena = 0x00000000; // [31:0] <- Marmot.gpio_out[31:0]
+
+ // Set clock delay for Marmot RAMs
+ reg_la1_data = (MARMOT_ICACHE_TAG_RAM_CLK_DELAY)
+ | (MARMOT_ICACHE_DATA_RAM0_CLK_DELAY << 5)
+ | (MARMOT_ICACHE_DATA_RAM1_CLK_DELAY << 10)
+ | (MARMOT_ICACHE_DATA_RAM2_CLK_DELAY << 15)
+ | (MARMOT_ICACHE_DATA_RAM3_CLK_DELAY << 20);
+
+ // Start Marmot
+ reg_mprj_slave = 0x00000001;
+
+ // Wait for Marmot to finish and check result
+ while (1) {
+ reg_la0_data ^= 0xffffffff;
+
+ if ((reg_la0_data_in & 0xc0000000) != 0x0) {
+ if ((reg_la0_data_in & 0xc0000000) == 0x80000000) {
+ reg_mprj_datal = 0x12340000; // Pass
+ } else {
+ reg_mprj_datal = 0xdead0000; // Fail
+ }
+ break;
+ }
+ }
+}
diff --git a/verilog/dv/dhrystone/dhrystone_tb.v b/verilog/dv/dhrystone/dhrystone_tb.v
new file mode 100644
index 0000000..17f486c
--- /dev/null
+++ b/verilog/dv/dhrystone/dhrystone_tb.v
@@ -0,0 +1,386 @@
+// SPDX-FileCopyrightText: 2020 Efabless Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+
+`default_nettype none
+
+`timescale 1 ns / 100 ps
+
+`define TB testbench
+`define CARAVEL `TB.uut
+`define USER_PROJECT_WRAPPER `CARAVEL.mprj
+`define MARMOT `USER_PROJECT_WRAPPER.Marmot
+`define CHIP `MARMOT.MarmotCaravelChip
+`define PLATFORM `CHIP.dut
+`define SYS `PLATFORM.sys
+`define TILE `SYS.tile_prci_domain.tile_reset_domain.tile
+`define CORE `TILE.core
+`define UART0 `SYS.uartClockDomainWrapper.uart_0
+`define UART1 `SYS.uartClockDomainWrapper_1.uart_1
+`define UART2 `SYS.uartClockDomainWrapper_2.uart_2
+`define UART3 `SYS.uartClockDomainWrapper_3.uart_3
+`define UART4 `SYS.uartClockDomainWrapper_4.uart_4
+`define TLSPIRAM `SYS.qspiClockDomainWrapper_1.qspi_ram_0
+
+module testbench;
+ `include "io_mapping.v"
+
+ localparam CLOCK_PERIOD = 40; // ns
+ localparam TCK_PERIOD = 100;
+ localparam MAX_CYCLE = 200000;
+ localparam MAX_EXCEPTION_PC_COUNT = 100;
+
+ reg clock;
+ wire clock_wire = clock;
+ reg RSTB;
+ reg tck;
+ reg CSB;
+
+ reg power1, power2;
+
+ wire gpio;
+ wire [37:0] mprj_io;
+
+ wire reset = `MARMOT.wb_rst_i;
+
+`ifdef SIM
+ wire [31:0] PC = `CORE.coreMonitorBundle_pc;
+`else
+ wire [31:0] PC = {
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[31] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[30] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[29] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[28] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[27] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[26] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[25] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[24] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[23] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[22] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[21] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[20] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[19] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[18] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[17] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[16] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[15] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[14] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[13] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[12] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[11] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[10] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[9] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[8] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[7] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[6] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[5] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[4] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[3] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[2] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[1] ,
+ 1'b0};
+`endif
+
+//-------------------------------------------------------------------------------
+// Timeformat
+ initial begin
+ $timeformat(-9, 0, " ns", 12);
+ end
+
+//-------------------------------------------------------------------------------
+// Pull-up
+`ifdef PULLUP_IO
+ genvar gen_i;
+ generate
+ for (gen_i = 0; gen_i < 38; gen_i = gen_i + 1) begin
+ pullup(mprj_io[gen_i]);
+ end
+ endgenerate
+`endif
+
+//-------------------------------------------------------------------------------
+// Clock
+ initial begin
+ clock = 0;
+ tck = 0;
+ end
+
+ always #(CLOCK_PERIOD/2) clock <= (clock === 1'b0);
+ always #(TCK_PERIOD/2) tck <= (tck === 1'b0);
+
+//-------------------------------------------------------------------------------
+// Waveform
+ initial begin
+ if ($test$plusargs("waveform")) begin
+ $dumpfile("wave.vcd");
+ $dumpvars(0, `TB);
+ end
+ end
+
+//-------------------------------------------------------------------------------
+// Initialize FFs for gate level sim.
+`ifdef GL
+ `include "init_ff.v"
+`endif
+
+//-------------------------------------------------------------------------------
+// SDF annotate
+`ifdef ENABLE_SDF
+ initial begin
+ $sdf_annotate("../../../mgmt_core_wrapper/sdf/DFFRAM.sdf", `CARAVEL.soc.DFFRAM_0 );
+ $sdf_annotate("../../../mgmt_core_wrapper/sdf/mgmt_core.sdf", `CARAVEL.soc.core);
+ $sdf_annotate("../../../mgmt_core_wrapper/sdf/mgmt_core_wrapper.sdf", `CARAVEL.soc);
+ $sdf_annotate("../../../sdf/user_project_wrapper.sdf.gz", `USER_PROJECT_WRAPPER);
+ $sdf_annotate("../../../sdf/Marmot.sdf.gz", `MARMOT);
+ end
+`endif
+
+//-------------------------------------------------------------------------------
+// Count cycle
+ reg [31:0] cycle;
+ initial begin
+ cycle = 0;
+ end
+
+ always @(posedge clock) begin
+ cycle = cycle + 1;
+ end
+
+//-------------------------------------------------------------------------------
+// Monitor PC
+ integer exception_pc_count;
+
+ always @ (posedge clock) begin
+ if ($test$plusargs("pc_monitor")) begin
+ if (cycle % 1000 == 0) begin
+ $fwrite(32'h80000002, "[%t] %10d pc=%08x\n", $time, cycle, PC);
+ end
+ end
+
+ // Finish on PC=x
+ //if (^PC === 1'bx) begin
+ // $display("[%t] PC=xxxxxxxx", $time);
+ // repeat (50) @(posedge clock);
+ // $finish;
+ //end
+
+ // Finish on exception
+ if (PC == 32'h00000000 || PC == 32'h00000002) begin
+ exception_pc_count <= exception_pc_count + 1;
+ if (exception_pc_count > MAX_EXCEPTION_PC_COUNT) begin
+ $display("[%t] Exception occurred.", $time);
+ $finish;
+ end
+ end
+ else begin
+ exception_pc_count <= 0;
+ end
+ end
+
+//-------------------------------------------------------------------------------
+// Timeout
+ reg [31:0] max_cycle;
+ initial begin
+ if (! $value$plusargs("max_cycle=%d", max_cycle)) begin
+ max_cycle = MAX_CYCLE;
+ end
+
+ wait (reset === 1'b0);
+ wait (cycle < 10);
+ wait (cycle >= max_cycle);
+ $display("\n*** Timeout ***");
+ $finish;
+ end
+
+//-------------------------------------------------------------------------------
+// Pass
+ initial begin
+ wait (mprj_io[31:28] == 4'h1);
+ $display("\n*** Test Pass ***");
+ $finish;
+ end
+
+//-------------------------------------------------------------------------------
+// Fail
+ initial begin
+ wait (mprj_io[31:28] == 4'hd);
+ $display("\n*** Test Fail ***");
+ $finish;
+ end
+
+//-------------------------------------------------------------------------------
+// Reset
+ initial begin
+ RSTB <= 1'b0;
+ #1000;
+ RSTB <= 1'b1; // Release reset
+ #2000;
+ end
+
+//-------------------------------------------------------------------------------
+// Power-up sequence
+ initial begin
+ power1 <= 1'b0;
+ power2 <= 1'b0;
+ #200;
+ power1 <= 1'b1;
+ #200;
+ power2 <= 1'b1;
+ end
+
+ wire flash_csb;
+ wire flash_clk;
+ wire flash_io0;
+ wire flash_io1;
+
+ wire VDD1V8;
+ wire VDD3V3;
+ wire VSS;
+
+ assign VDD3V3 = power1;
+ assign VDD1V8 = power2;
+ assign VSS = 1'b0;
+
+ assign mprj_io[3] = 1; // Force CSB high.
+ assign mprj_io[0] = 0; // Disable debug mode
+
+//-------------------------------------------------------------------------------
+// JTAG
+ assign mprj_io[io_TCK] = tck;
+ //assign mprj_io[io_TMS] = 1; // same pin as CSB
+ assign mprj_io[io_TDI] = 0;
+
+//-------------------------------------------------------------------------------
+// Caravel
+ caravel uut (
+ .vddio (VDD3V3),
+ .vddio_2 (VDD3V3),
+ .vssio (VSS),
+ .vssio_2 (VSS),
+ .vdda (VDD3V3),
+ .vssa (VSS),
+ .vccd (VDD1V8),
+ .vssd (VSS),
+ .vdda1 (VDD3V3),
+ .vdda1_2 (VDD3V3),
+ .vdda2 (VDD3V3),
+ .vssa1 (VSS),
+ .vssa1_2 (VSS),
+ .vssa2 (VSS),
+ .vccd1 (VDD1V8),
+ .vccd2 (VDD1V8),
+ .vssd1 (VSS),
+ .vssd2 (VSS),
+ .clock (clock_wire),
+ .gpio (gpio),
+ .mprj_io (mprj_io),
+ .flash_csb(flash_csb),
+ .flash_clk(flash_clk),
+ .flash_io0(flash_io0),
+ .flash_io1(flash_io1),
+ .resetb (RSTB)
+ );
+
+//-------------------------------------------------------------------------------
+// SPI Flash for Mgmt. SoC
+ spiflash #(
+ .FILENAME(`MGMT_SOC_PROG)
+ ) spiflash (
+ .csb(flash_csb),
+ .clk(flash_clk),
+ .io0(flash_io0),
+ .io1(flash_io1),
+ .io2(),
+ .io3()
+ );
+
+//-------------------------------------------------------------------------------
+// SPI Flash model for Marmot
+MX25U3235F #(.Init_File("spi_flash.mem")) spi_flash
+(
+ .SCLK (mprj_io[io_spi0_flash_sck]),
+ .CS (mprj_io[io_spi0_flash_csb]),
+ .SI (mprj_io[io_spi0_flash_io_0]),
+ .SO (mprj_io[io_spi0_flash_io_1]),
+ .WP (mprj_io[io_spi0_flash_io_2]),
+ .SIO3 (mprj_io[io_spi0_flash_io_3])
+);
+
+//-------------------------------------------------------------------------------
+// SPI RAM model (APM APS6404L-3SQN_SQPI_PSRAM)
+`ifdef SIMULATOR_QUESTA
+sqpi_model #(.VeriOutStr(1), .STOP_ON_ERROR(0)) spi_ram
+(
+ .SCK_i (mprj_io[io_spi2_sck]),
+ .nCE_i (mprj_io[io_spi2_csb]),
+ .SI_io (mprj_io[io_spi2_io_0]),
+ .SO_io (mprj_io[io_spi2_io_1]),
+ .nWP_io (mprj_io[io_spi2_io_2]),
+ .NC_io (mprj_io[io_spi2_io_3])
+);
+`else
+// SPI Flash model
+MX25U3235F spi_ram
+(
+ .SCLK (mprj_io[io_spi2_sck]),
+ .CS (mprj_io[io_spi2_csb]),
+ .SI (mprj_io[io_spi2_io_0]),
+ .SO (mprj_io[io_spi2_io_1]),
+ .WP (mprj_io[io_spi2_io_2]),
+ .SIO3 (mprj_io[io_spi2_io_3])
+);
+`endif
+
+//-------------------------------------------------------------------------------
+// UART model for Marmot
+`ifdef UART_HIGH_SPEED
+ `define CLKS_PER_BIT 16 // F_CLK / 16 baud
+`else
+ `define CLKS_PER_BIT ((1000/CLOCK_PERIOD)*1000000 / 115200) // 115200 baud
+ //`define CLKS_PER_BIT 104 // 12MHz / 115200 baud
+`endif
+
+uart_tb #(.CLKS_PER_BIT(`CLKS_PER_BIT)) uart0_tb
+(
+ .clk (clock_wire),
+ .rst (~RSTB),
+ .rxd (mprj_io[io_uart0_tx]),
+ .txd (mprj_io[io_uart0_rx])
+);
+
+//-------------------------------------------------------------------------------
+// Count cycles of each loop
+`include "Proc_6_pc_flash.v"
+
+reg [31:0] pc_prev;
+reg [31:0] loop_cycle;
+
+initial begin
+ pc_prev = 0;
+ loop_cycle = 0;
+end
+
+always @(posedge clock) begin
+ if (RSTB) begin
+ if ((PC != pc_prev) && (PC === `Proc_6)) begin
+ $fwrite(32'h80000002, "[%t] %10d pc=Proc_6(%08x), %d cycles\n", $time, cycle, PC, loop_cycle);
+ loop_cycle = 0;
+ end
+ pc_prev = PC;
+ loop_cycle = loop_cycle + 1;
+ end
+end
+
+endmodule
+`default_nettype wire
diff --git a/verilog/dv/dhrystone/io_mapping.v b/verilog/dv/dhrystone/io_mapping.v
new file mode 100644
index 0000000..fcd74b5
--- /dev/null
+++ b/verilog/dv/dhrystone/io_mapping.v
@@ -0,0 +1,52 @@
+localparam io_TDO = 1;
+localparam io_TDI = 2;
+localparam io_TMS = 3;
+localparam io_TCK = 4;
+localparam io_uart0_rx = 5;
+localparam io_uart0_tx = 6;
+localparam io_spi1_csb_1 = 7;
+localparam io_spi0_flash_csb = 8;
+localparam io_spi0_flash_sck = 9;
+localparam io_spi0_flash_io_0 = 10;
+localparam io_spi0_flash_io_1 = 11;
+localparam io_spi0_flash_io_2 = 12;
+localparam io_spi0_flash_io_3 = 13;
+localparam io_spi1_csb_0 = 14;
+localparam io_spi1_sck = 15;
+localparam io_spi1_io_0 = 16;
+localparam io_spi1_io_1 = 17;
+localparam io_spi1_io_2 = 18;
+localparam io_spi1_io_3 = 19;
+localparam io_spi2_csb = 20;
+localparam io_spi2_sck = 21;
+localparam io_spi2_io_0 = 22;
+localparam io_spi2_io_1 = 23;
+localparam io_spi2_io_2 = 24;
+localparam io_spi2_io_3 = 25;
+localparam io_i2c0_sda = 26;
+localparam io_i2c0_scl = 27;
+localparam io_i2c1_sda = 28;
+localparam io_i2c1_scl = 29;
+localparam io_uart1_rx = 30;
+localparam io_uart1_tx = 31;
+localparam io_uart2_rx = 32;
+localparam io_uart2_tx = 33;
+localparam io_uart3_rx = 34;
+localparam io_uart3_tx = 35;
+localparam io_uart4_rx = 36;
+localparam io_uart4_tx = 37;
+
+// IOF1
+localparam io_pwm0_0 = 26;
+localparam io_pwm0_1 = 27;
+localparam io_pwm0_2 = 28;
+localparam io_pwm0_3 = 29;
+localparam io_pwm1_0 = 30;
+localparam io_pwm1_1 = 31;
+localparam io_pwm1_2 = 32;
+localparam io_pwm1_3 = 33;
+localparam io_pwm2_0 = 34;
+localparam io_pwm2_1 = 35;
+localparam io_pwm2_2 = 36;
+localparam io_pwm2_3 = 37;
+
diff --git a/verilog/dv/dhrystone/run_sim.csh b/verilog/dv/dhrystone/run_sim.csh
new file mode 100755
index 0000000..0361397
--- /dev/null
+++ b/verilog/dv/dhrystone/run_sim.csh
@@ -0,0 +1,27 @@
+#!/bin/csh -f
+
+# RTL/GL
+set sim = RTL
+#set sim = GL
+
+# Simulator (Questa is needed for AP Memory's encrypted QSPI-PSRAM model)
+set simulator = Questa
+
+# Compile option
+set mgmt_soc_prog = \\\"dhrystone.hex\\\"
+set compopt = "+define+MGMT_SOC_PROG=$mgmt_soc_prog"
+set compopt = "$compopt +define+PRINTF_COND=0" # 0 = stop instruction trace
+
+# Simulation option
+set simopt =
+#set simopt = "$simopt +waveform"
+set simopt = "$simopt +pc_monitor"
+#set simopt = "$simopt +max_cycle=200000"
+
+# Do
+set doopt = ""
+#set doopt = "log -r /testbench/* ;" # waveform
+
+make SIMULATOR=$simulator SIM=$sim USER_COMPOPT="$compopt" USER_SIMOPT="$simopt" DOOPT="$doopt" \
+ |& spike-dasm | egrep -v '\[0\] pc=' | tee sim_${sim}.log
+
diff --git a/verilog/dv/dhrystone/spi_flash.lis b/verilog/dv/dhrystone/spi_flash.lis
new file mode 100644
index 0000000..57adb4c
--- /dev/null
+++ b/verilog/dv/dhrystone/spi_flash.lis
@@ -0,0 +1,3040 @@
+
+gcc_dry2reg_flash.elf: file format elf32-littleriscv
+
+
+Disassembly of section .text:
+
+20000000 <_start>:
+20000000: 00000093 li ra,0
+20000004: 00000113 li sp,0
+20000008: 00000193 li gp,0
+2000000c: 00000213 li tp,0
+20000010: 00000293 li t0,0
+20000014: 00000313 li t1,0
+20000018: 00000393 li t2,0
+2000001c: 00000413 li s0,0
+20000020: 00000493 li s1,0
+20000024: 00000513 li a0,0
+20000028: 00000593 li a1,0
+2000002c: 00000613 li a2,0
+20000030: 00000693 li a3,0
+20000034: 00000713 li a4,0
+20000038: 00000793 li a5,0
+2000003c: 00000813 li a6,0
+20000040: 00000893 li a7,0
+20000044: 00000913 li s2,0
+20000048: 00000993 li s3,0
+2000004c: 00000a13 li s4,0
+20000050: 00000a93 li s5,0
+20000054: 00000b13 li s6,0
+20000058: 00000b93 li s7,0
+2000005c: 00000c13 li s8,0
+20000060: 00000c93 li s9,0
+20000064: 00000d13 li s10,0
+20000068: 00000d93 li s11,0
+2000006c: 00000e13 li t3,0
+20000070: 00000e93 li t4,0
+20000074: 00000f13 li t5,0
+20000078: 00000f93 li t6,0
+2000007c: 08002137 lui sp,0x8002
+20000080: ff010113 addi sp,sp,-16 # 8001ff0 <_stack>
+20000084: 2475 jal 20000330 <init>
+ ...
+
+200000c6 <Proc_2>:
+200000c6: 20003717 auipc a4,0x20003
+200000ca: f7b74703 lbu a4,-133(a4) # 40003041 <Ch_1_Glob>
+200000ce: 04100793 li a5,65
+200000d2: 00f70363 beq a4,a5,200000d8 <Proc_2+0x12>
+200000d6: 8082 ret
+200000d8: 411c lw a5,0(a0)
+200000da: 20003717 auipc a4,0x20003
+200000de: f6e72703 lw a4,-146(a4) # 40003048 <Int_Glob>
+200000e2: 07a5 addi a5,a5,9
+200000e4: 8f99 sub a5,a5,a4
+200000e6: c11c sw a5,0(a0)
+200000e8: 8082 ret
+
+200000ea <Proc_3>:
+200000ea: 20003797 auipc a5,0x20003
+200000ee: f6678793 addi a5,a5,-154 # 40003050 <Ptr_Glob>
+200000f2: 4390 lw a2,0(a5)
+200000f4: c601 beqz a2,200000fc <Proc_3+0x12>
+200000f6: 4218 lw a4,0(a2)
+200000f8: c118 sw a4,0(a0)
+200000fa: 4390 lw a2,0(a5)
+200000fc: 0631 addi a2,a2,12
+200000fe: 20003597 auipc a1,0x20003
+20000102: f4a5a583 lw a1,-182(a1) # 40003048 <Int_Glob>
+20000106: 4529 li a0,10
+20000108: a2bd j 20000276 <Proc_7>
+
+2000010a <Proc_1>:
+2000010a: 1141 addi sp,sp,-16
+2000010c: c04a sw s2,0(sp)
+2000010e: 20003917 auipc s2,0x20003
+20000112: f4290913 addi s2,s2,-190 # 40003050 <Ptr_Glob>
+20000116: 00092783 lw a5,0(s2)
+2000011a: c422 sw s0,8(sp)
+2000011c: 4100 lw s0,0(a0)
+2000011e: 4398 lw a4,0(a5)
+20000120: 0047ae83 lw t4,4(a5)
+20000124: 0087ae03 lw t3,8(a5)
+20000128: 0107a303 lw t1,16(a5)
+2000012c: 0147a883 lw a7,20(a5)
+20000130: 0187a803 lw a6,24(a5)
+20000134: 538c lw a1,32(a5)
+20000136: 53d0 lw a2,36(a5)
+20000138: 5794 lw a3,40(a5)
+2000013a: c226 sw s1,4(sp)
+2000013c: c606 sw ra,12(sp)
+2000013e: 84aa mv s1,a0
+20000140: 4fc8 lw a0,28(a5)
+20000142: 57dc lw a5,44(a5)
+20000144: c018 sw a4,0(s0)
+20000146: 4098 lw a4,0(s1)
+20000148: cc48 sw a0,28(s0)
+2000014a: d45c sw a5,44(s0)
+2000014c: 01d42223 sw t4,4(s0)
+20000150: 4795 li a5,5
+20000152: 01c42423 sw t3,8(s0)
+20000156: 00642823 sw t1,16(s0)
+2000015a: 01142a23 sw a7,20(s0)
+2000015e: 01042c23 sw a6,24(s0)
+20000162: d00c sw a1,32(s0)
+20000164: d050 sw a2,36(s0)
+20000166: d414 sw a3,40(s0)
+20000168: c4dc sw a5,12(s1)
+2000016a: c45c sw a5,12(s0)
+2000016c: c018 sw a4,0(s0)
+2000016e: 8522 mv a0,s0
+20000170: 3fad jal 200000ea <Proc_3>
+20000172: 405c lw a5,4(s0)
+20000174: cfb1 beqz a5,200001d0 <Proc_1+0xc6>
+20000176: 409c lw a5,0(s1)
+20000178: 40b2 lw ra,12(sp)
+2000017a: 4422 lw s0,8(sp)
+2000017c: 0007af83 lw t6,0(a5)
+20000180: 0047af03 lw t5,4(a5)
+20000184: 0087ae83 lw t4,8(a5)
+20000188: 00c7ae03 lw t3,12(a5)
+2000018c: 0107a303 lw t1,16(a5)
+20000190: 0147a883 lw a7,20(a5)
+20000194: 0187a803 lw a6,24(a5)
+20000198: 4fcc lw a1,28(a5)
+2000019a: 5390 lw a2,32(a5)
+2000019c: 53d4 lw a3,36(a5)
+2000019e: 5798 lw a4,40(a5)
+200001a0: 57dc lw a5,44(a5)
+200001a2: 01f4a023 sw t6,0(s1)
+200001a6: 01e4a223 sw t5,4(s1)
+200001aa: 01d4a423 sw t4,8(s1)
+200001ae: 01c4a623 sw t3,12(s1)
+200001b2: 0064a823 sw t1,16(s1)
+200001b6: 0114aa23 sw a7,20(s1)
+200001ba: 0104ac23 sw a6,24(s1)
+200001be: cccc sw a1,28(s1)
+200001c0: d090 sw a2,32(s1)
+200001c2: d0d4 sw a3,36(s1)
+200001c4: d498 sw a4,40(s1)
+200001c6: d4dc sw a5,44(s1)
+200001c8: 4902 lw s2,0(sp)
+200001ca: 4492 lw s1,4(sp)
+200001cc: 0141 addi sp,sp,16
+200001ce: 8082 ret
+200001d0: 4488 lw a0,8(s1)
+200001d2: 4799 li a5,6
+200001d4: 00840593 addi a1,s0,8
+200001d8: c45c sw a5,12(s0)
+200001da: 2085 jal 2000023a <Proc_6>
+200001dc: 00092783 lw a5,0(s2)
+200001e0: 4448 lw a0,12(s0)
+200001e2: 00c40613 addi a2,s0,12
+200001e6: 439c lw a5,0(a5)
+200001e8: 40b2 lw ra,12(sp)
+200001ea: 4492 lw s1,4(sp)
+200001ec: c01c sw a5,0(s0)
+200001ee: 4422 lw s0,8(sp)
+200001f0: 4902 lw s2,0(sp)
+200001f2: 45a9 li a1,10
+200001f4: 0141 addi sp,sp,16
+200001f6: a041 j 20000276 <Proc_7>
+
+200001f8 <Proc_4>:
+200001f8: 20003717 auipc a4,0x20003
+200001fc: e4c70713 addi a4,a4,-436 # 40003044 <Bool_Glob>
+20000200: 4314 lw a3,0(a4)
+20000202: 20003797 auipc a5,0x20003
+20000206: e3f7c783 lbu a5,-449(a5) # 40003041 <Ch_1_Glob>
+2000020a: fbf78793 addi a5,a5,-65
+2000020e: 0017b793 seqz a5,a5
+20000212: 8fd5 or a5,a5,a3
+20000214: c31c sw a5,0(a4)
+20000216: 04200793 li a5,66
+2000021a: 20003717 auipc a4,0x20003
+2000021e: e2f70323 sb a5,-474(a4) # 40003040 <Ch_2_Glob>
+20000222: 8082 ret
+
+20000224 <Proc_5>:
+20000224: 04100793 li a5,65
+20000228: 20003717 auipc a4,0x20003
+2000022c: e0f70ca3 sb a5,-487(a4) # 40003041 <Ch_1_Glob>
+20000230: 20003797 auipc a5,0x20003
+20000234: e007aa23 sw zero,-492(a5) # 40003044 <Bool_Glob>
+20000238: 8082 ret
+
+2000023a <Proc_6>:
+2000023a: 4709 li a4,2
+2000023c: 02e50a63 beq a0,a4,20000270 <Proc_6+0x36>
+20000240: 478d li a5,3
+20000242: c19c sw a5,0(a1)
+20000244: 4785 li a5,1
+20000246: 00f50963 beq a0,a5,20000258 <Proc_6+0x1e>
+2000024a: 00a7ff63 bgeu a5,a0,20000268 <Proc_6+0x2e>
+2000024e: 4791 li a5,4
+20000250: 00f51f63 bne a0,a5,2000026e <Proc_6+0x34>
+20000254: c198 sw a4,0(a1)
+20000256: 8082 ret
+20000258: 20003717 auipc a4,0x20003
+2000025c: df072703 lw a4,-528(a4) # 40003048 <Int_Glob>
+20000260: 06400793 li a5,100
+20000264: fee7d9e3 bge a5,a4,20000256 <Proc_6+0x1c>
+20000268: 0005a023 sw zero,0(a1)
+2000026c: 8082 ret
+2000026e: 8082 ret
+20000270: 4785 li a5,1
+20000272: c19c sw a5,0(a1)
+20000274: 8082 ret
+
+20000276 <Proc_7>:
+20000276: 0509 addi a0,a0,2
+20000278: 95aa add a1,a1,a0
+2000027a: c20c sw a1,0(a2)
+2000027c: 8082 ret
+
+2000027e <Proc_8>:
+2000027e: 00560713 addi a4,a2,5
+20000282: 0c800813 li a6,200
+20000286: 03070833 mul a6,a4,a6
+2000028a: 060a slli a2,a2,0x2
+2000028c: 00271793 slli a5,a4,0x2
+20000290: 953e add a0,a0,a5
+20000292: c114 sw a3,0(a0)
+20000294: dd38 sw a4,120(a0)
+20000296: c154 sw a3,4(a0)
+20000298: 00c807b3 add a5,a6,a2
+2000029c: 97ae add a5,a5,a1
+2000029e: 4b94 lw a3,16(a5)
+200002a0: cbd8 sw a4,20(a5)
+200002a2: cf98 sw a4,24(a5)
+200002a4: 00168713 addi a4,a3,1
+200002a8: cb98 sw a4,16(a5)
+200002aa: 4118 lw a4,0(a0)
+200002ac: 95c2 add a1,a1,a6
+200002ae: 95b2 add a1,a1,a2
+200002b0: 6785 lui a5,0x1
+200002b2: 95be add a1,a1,a5
+200002b4: 4795 li a5,5
+200002b6: fae5aa23 sw a4,-76(a1)
+200002ba: 20003717 auipc a4,0x20003
+200002be: d8f72723 sw a5,-626(a4) # 40003048 <Int_Glob>
+200002c2: 8082 ret
+
+200002c4 <Func_1>:
+200002c4: 0ff57513 andi a0,a0,255
+200002c8: 0ff5f593 andi a1,a1,255
+200002cc: 00b50463 beq a0,a1,200002d4 <Func_1+0x10>
+200002d0: 4501 li a0,0
+200002d2: 8082 ret
+200002d4: 20003797 auipc a5,0x20003
+200002d8: d6a786a3 sb a0,-659(a5) # 40003041 <Ch_1_Glob>
+200002dc: 4505 li a0,1
+200002de: 8082 ret
+
+200002e0 <Func_2>:
+200002e0: 1141 addi sp,sp,-16
+200002e2: c606 sw ra,12(sp)
+200002e4: 20003817 auipc a6,0x20003
+200002e8: d5d80813 addi a6,a6,-675 # 40003041 <Ch_1_Glob>
+200002ec: 00254783 lbu a5,2(a0)
+200002f0: 0035c703 lbu a4,3(a1)
+200002f4: 00084603 lbu a2,0(a6)
+200002f8: 4681 li a3,0
+200002fa: 02e78463 beq a5,a4,20000322 <Func_2+0x42>
+200002fe: c299 beqz a3,20000304 <Func_2+0x24>
+20000300: 00c80023 sb a2,0(a6)
+20000304: 2fd000ef jal ra,20000e00 <strcmp>
+20000308: 4781 li a5,0
+2000030a: 00a05863 blez a0,2000031a <Func_2+0x3a>
+2000030e: 47a9 li a5,10
+20000310: 20003717 auipc a4,0x20003
+20000314: d2f72c23 sw a5,-712(a4) # 40003048 <Int_Glob>
+20000318: 4785 li a5,1
+2000031a: 40b2 lw ra,12(sp)
+2000031c: 853e mv a0,a5
+2000031e: 0141 addi sp,sp,16
+20000320: 8082 ret
+20000322: 4685 li a3,1
+20000324: 863e mv a2,a5
+20000326: bfd1 j 200002fa <Func_2+0x1a>
+
+20000328 <Func_3>:
+20000328: 1579 addi a0,a0,-2
+2000032a: 00153513 seqz a0,a0
+2000032e: 8082 ret
+
+20000330 <init>:
+20000330: e8000517 auipc a0,0xe8000
+20000334: cd050513 addi a0,a0,-816 # 8000000 <spi_quad_mode>
+20000338: e8000617 auipc a2,0xe8000
+2000033c: d3c60613 addi a2,a2,-708 # 8000074 <itim_end>
+20000340: 1141 addi sp,sp,-16
+20000342: 8e09 sub a2,a2,a0
+20000344: 00001597 auipc a1,0x1
+20000348: 34258593 addi a1,a1,834 # 20001686 <itim_load_start>
+2000034c: c606 sw ra,12(sp)
+2000034e: 22d000ef jal ra,20000d7a <memcpy>
+20000352: 10014537 lui a0,0x10014
+20000356: e8000097 auipc ra,0xe8000
+2000035a: caa080e7 jalr -854(ra) # 8000000 <spi_quad_mode>
+2000035e: 10034537 lui a0,0x10034
+20000362: e8000097 auipc ra,0xe8000
+20000366: c9e080e7 jalr -866(ra) # 8000000 <spi_quad_mode>
+2000036a: 000977b7 lui a5,0x97
+2000036e: 10034737 lui a4,0x10034
+20000372: a0278793 addi a5,a5,-1534 # 96a02 <spi_quad_mode-0x7f695fe>
+20000376: 20000517 auipc a0,0x20000
+2000037a: c8a50513 addi a0,a0,-886 # 40000000 <rodata_start>
+2000037e: 20000617 auipc a2,0x20000
+20000382: 4c260613 addi a2,a2,1218 # 40000840 <rodata_end>
+20000386: d73c sw a5,104(a4)
+20000388: 8e09 sub a2,a2,a0
+2000038a: 00001597 auipc a1,0x1
+2000038e: 37058593 addi a1,a1,880 # 200016fa <rodata_load_start>
+20000392: 1e9000ef jal ra,20000d7a <memcpy>
+20000396: 20000517 auipc a0,0x20000
+2000039a: 4aa50513 addi a0,a0,1194 # 40000840 <rodata_end>
+2000039e: 20000617 auipc a2,0x20000
+200003a2: 4a660613 addi a2,a2,1190 # 40000844 <data_end>
+200003a6: 8e09 sub a2,a2,a0
+200003a8: 00002597 auipc a1,0x2
+200003ac: b9258593 addi a1,a1,-1134 # 20001f3a <data_load_start>
+200003b0: 1cb000ef jal ra,20000d7a <memcpy>
+200003b4: 20000517 auipc a0,0x20000
+200003b8: 49050513 addi a0,a0,1168 # 40000844 <data_end>
+200003bc: 20003617 auipc a2,0x20003
+200003c0: ca860613 addi a2,a2,-856 # 40003064 <_end>
+200003c4: 8e09 sub a2,a2,a0
+200003c6: 4581 li a1,0
+200003c8: 199000ef jal ra,20000d60 <memset>
+200003cc: 4585 li a1,1
+200003ce: 4501 li a0,0
+200003d0: 0f1000ef jal ra,20000cc0 <serial_init>
+200003d4: 4e7000ef jal ra,200010ba <main>
+200003d8: 100127b7 lui a5,0x10012
+200003dc: 5f98 lw a4,56(a5)
+200003de: c00006b7 lui a3,0xc0000
+200003e2: 070a slli a4,a4,0x2
+200003e4: 8309 srli a4,a4,0x2
+200003e6: df98 sw a4,56(a5)
+200003e8: 4798 lw a4,8(a5)
+200003ea: 8f55 or a4,a4,a3
+200003ec: c798 sw a4,8(a5)
+200003ee: 80000737 lui a4,0x80000
+200003f2: c7d8 sw a4,12(a5)
+200003f4: a001 j 200003f4 <init+0xc4>
+
+200003f6 <number>:
+200003f6: 711d addi sp,sp,-96
+200003f8: cea2 sw s0,92(sp)
+200003fa: cca6 sw s1,88(sp)
+200003fc: 0407f813 andi a6,a5,64
+20000400: 20000e17 auipc t3,0x20000
+20000404: 3fce0e13 addi t3,t3,1020 # 400007fc <uart_ctrl_addr+0x5f8>
+20000408: 00081663 bnez a6,20000414 <number+0x1e>
+2000040c: 20000e17 auipc t3,0x20000
+20000410: 3c8e0e13 addi t3,t3,968 # 400007d4 <uart_ctrl_addr+0x5d0>
+20000414: 0107f413 andi s0,a5,16
+20000418: 14040263 beqz s0,2000055c <number+0x166>
+2000041c: 9bf9 andi a5,a5,-2
+2000041e: 84a2 mv s1,s0
+20000420: 0027f813 andi a6,a5,2
+20000424: 02000f93 li t6,32
+20000428: 0207f393 andi t2,a5,32
+2000042c: 14080663 beqz a6,20000578 <number+0x182>
+20000430: 1405c663 bltz a1,2000057c <number+0x186>
+20000434: 0047f813 andi a6,a5,4
+20000438: 16081c63 bnez a6,200005b0 <number+0x1ba>
+2000043c: 8ba1 andi a5,a5,8
+2000043e: 4281 li t0,0
+20000440: c781 beqz a5,20000448 <number+0x52>
+20000442: 16fd addi a3,a3,-1
+20000444: 02000293 li t0,32
+20000448: 00038a63 beqz t2,2000045c <number+0x66>
+2000044c: 47c1 li a5,16
+2000044e: 16f60f63 beq a2,a5,200005cc <number+0x1d6>
+20000452: ff860793 addi a5,a2,-8
+20000456: 0017b793 seqz a5,a5
+2000045a: 8e9d sub a3,a3,a5
+2000045c: 12059763 bnez a1,2000058a <number+0x194>
+20000460: 03000793 li a5,48
+20000464: 00f10623 sb a5,12(sp)
+20000468: 4301 li t1,0
+2000046a: 03000813 li a6,48
+2000046e: 4885 li a7,1
+20000470: 007c addi a5,sp,12
+20000472: 8ec6 mv t4,a7
+20000474: 00e8d363 bge a7,a4,2000047a <number+0x84>
+20000478: 8eba mv t4,a4
+2000047a: 41d68e33 sub t3,a3,t4
+2000047e: fffe0593 addi a1,t3,-1
+20000482: ec91 bnez s1,2000049e <number+0xa8>
+20000484: 01c506b3 add a3,a0,t3
+20000488: 02000713 li a4,32
+2000048c: 15c05a63 blez t3,200005e0 <number+0x1ea>
+20000490: 0505 addi a0,a0,1
+20000492: fee50fa3 sb a4,-1(a0)
+20000496: fed51de3 bne a0,a3,20000490 <number+0x9a>
+2000049a: 55f9 li a1,-2
+2000049c: 5e7d li t3,-1
+2000049e: 00028563 beqz t0,200004a8 <number+0xb2>
+200004a2: 00550023 sb t0,0(a0)
+200004a6: 0505 addi a0,a0,1
+200004a8: 00038863 beqz t2,200004b8 <number+0xc2>
+200004ac: 4721 li a4,8
+200004ae: 12e60163 beq a2,a4,200005d0 <number+0x1da>
+200004b2: 4741 li a4,16
+200004b4: 10e60263 beq a2,a4,200005b8 <number+0x1c2>
+200004b8: e80d bnez s0,200004ea <number+0xf4>
+200004ba: 862a mv a2,a0
+200004bc: 4705 li a4,1
+200004be: 13c05663 blez t3,200005ea <number+0x1f4>
+200004c2: 0605 addi a2,a2,1
+200004c4: 40c706b3 sub a3,a4,a2
+200004c8: 96ae add a3,a3,a1
+200004ca: 96aa add a3,a3,a0
+200004cc: fff60fa3 sb t6,-1(a2)
+200004d0: fed049e3 bgtz a3,200004c2 <number+0xcc>
+200004d4: fff5c713 not a4,a1
+200004d8: 877d srai a4,a4,0x1f
+200004da: 8f6d and a4,a4,a1
+200004dc: 15fd addi a1,a1,-1
+200004de: 40e58e33 sub t3,a1,a4
+200004e2: 0705 addi a4,a4,1
+200004e4: 953a add a0,a0,a4
+200004e6: fffe0593 addi a1,t3,-1
+200004ea: 411e8733 sub a4,t4,a7
+200004ee: 972a add a4,a4,a0
+200004f0: 03000693 li a3,48
+200004f4: 0fd8d463 bge a7,t4,200005dc <number+0x1e6>
+200004f8: 0505 addi a0,a0,1
+200004fa: fed50fa3 sb a3,-1(a0)
+200004fe: fea71de3 bne a4,a0,200004f8 <number+0x102>
+20000502: 00678633 add a2,a5,t1
+20000506: 86ba mv a3,a4
+20000508: 4505 li a0,1
+2000050a: a019 j 20000510 <number+0x11a>
+2000050c: 00064803 lbu a6,0(a2)
+20000510: 0685 addi a3,a3,1
+20000512: 40d507b3 sub a5,a0,a3
+20000516: 979a add a5,a5,t1
+20000518: 97ba add a5,a5,a4
+2000051a: ff068fa3 sb a6,-1(a3) # bfffffff <_end+0x7fffcf9b>
+2000051e: 167d addi a2,a2,-1
+20000520: fef046e3 bgtz a5,2000050c <number+0x116>
+20000524: 00130513 addi a0,t1,1
+20000528: 953a add a0,a0,a4
+2000052a: 03c05563 blez t3,20000554 <number+0x15e>
+2000052e: 872a mv a4,a0
+20000530: 02000613 li a2,32
+20000534: 4685 li a3,1
+20000536: 0705 addi a4,a4,1
+20000538: 40e687b3 sub a5,a3,a4
+2000053c: 97ae add a5,a5,a1
+2000053e: 97aa add a5,a5,a0
+20000540: fec70fa3 sb a2,-1(a4) # 7fffffff <_end+0x3fffcf9b>
+20000544: fef049e3 bgtz a5,20000536 <number+0x140>
+20000548: fff5c793 not a5,a1
+2000054c: 87fd srai a5,a5,0x1f
+2000054e: 8dfd and a1,a1,a5
+20000550: 0585 addi a1,a1,1
+20000552: 952e add a0,a0,a1
+20000554: 4476 lw s0,92(sp)
+20000556: 44e6 lw s1,88(sp)
+20000558: 6125 addi sp,sp,96
+2000055a: 8082 ret
+2000055c: 0017f813 andi a6,a5,1
+20000560: 0117f493 andi s1,a5,17
+20000564: 03000f93 li t6,48
+20000568: ea080ce3 beqz a6,20000420 <number+0x2a>
+2000056c: 0027f813 andi a6,a5,2
+20000570: 0207f393 andi t2,a5,32
+20000574: ea081ee3 bnez a6,20000430 <number+0x3a>
+20000578: 4281 li t0,0
+2000057a: b5f9 j 20000448 <number+0x52>
+2000057c: 40b005b3 neg a1,a1
+20000580: 16fd addi a3,a3,-1
+20000582: 02d00293 li t0,45
+20000586: ec0393e3 bnez t2,2000044c <number+0x56>
+2000058a: 4881 li a7,0
+2000058c: 007c addi a5,sp,12
+2000058e: 02c5f833 remu a6,a1,a2
+20000592: 8346 mv t1,a7
+20000594: 0885 addi a7,a7,1
+20000596: 01178f33 add t5,a5,a7
+2000059a: 8eae mv t4,a1
+2000059c: 9872 add a6,a6,t3
+2000059e: 00084803 lbu a6,0(a6)
+200005a2: 02c5d5b3 divu a1,a1,a2
+200005a6: ff0f0fa3 sb a6,-1(t5)
+200005aa: fecef2e3 bgeu t4,a2,2000058e <number+0x198>
+200005ae: b5d1 j 20000472 <number+0x7c>
+200005b0: 16fd addi a3,a3,-1
+200005b2: 02b00293 li t0,43
+200005b6: bd49 j 20000448 <number+0x52>
+200005b8: 03000713 li a4,48
+200005bc: 00e50023 sb a4,0(a0)
+200005c0: 07800713 li a4,120
+200005c4: 00e500a3 sb a4,1(a0)
+200005c8: 0509 addi a0,a0,2
+200005ca: b5fd j 200004b8 <number+0xc2>
+200005cc: 16f9 addi a3,a3,-2
+200005ce: b579 j 2000045c <number+0x66>
+200005d0: 03000713 li a4,48
+200005d4: 00e50023 sb a4,0(a0)
+200005d8: 0505 addi a0,a0,1
+200005da: bdf9 j 200004b8 <number+0xc2>
+200005dc: 872a mv a4,a0
+200005de: b715 j 20000502 <number+0x10c>
+200005e0: ffee0713 addi a4,t3,-2
+200005e4: 8e2e mv t3,a1
+200005e6: 85ba mv a1,a4
+200005e8: bd5d j 2000049e <number+0xa8>
+200005ea: 8e2e mv t3,a1
+200005ec: 15fd addi a1,a1,-1
+200005ee: bdf5 j 200004ea <number+0xf4>
+
+200005f0 <uart_send_char>:
+200005f0: 85aa mv a1,a0
+200005f2: 4501 li a0,0
+200005f4: af19 j 20000d0a <serial_send_byte>
+
+200005f6 <ee_printf>:
+200005f6: 7149 addi sp,sp,-368
+200005f8: 13612823 sw s6,304(sp)
+200005fc: 14112623 sw ra,332(sp)
+20000600: 14812423 sw s0,328(sp)
+20000604: 14912223 sw s1,324(sp)
+20000608: 15212023 sw s2,320(sp)
+2000060c: 13312e23 sw s3,316(sp)
+20000610: 13412c23 sw s4,312(sp)
+20000614: 13512a23 sw s5,308(sp)
+20000618: 13712623 sw s7,300(sp)
+2000061c: 13812423 sw s8,296(sp)
+20000620: 13912223 sw s9,292(sp)
+20000624: 13a12023 sw s10,288(sp)
+20000628: 14b12a23 sw a1,340(sp)
+2000062c: 14c12c23 sw a2,344(sp)
+20000630: 14d12e23 sw a3,348(sp)
+20000634: 16e12023 sw a4,352(sp)
+20000638: 16f12223 sw a5,356(sp)
+2000063c: 17012423 sw a6,360(sp)
+20000640: 17112623 sw a7,364(sp)
+20000644: 00054783 lbu a5,0(a0)
+20000648: 15410b13 addi s6,sp,340
+2000064c: c25a sw s6,4(sp)
+2000064e: 5c078963 beqz a5,20000c20 <ee_printf+0x62a>
+20000652: 02010993 addi s3,sp,32
+20000656: 832a mv t1,a0
+20000658: 20000a97 auipc s5,0x20000
+2000065c: 9a8a8a93 addi s5,s5,-1624 # 40000000 <rodata_start>
+20000660: 854e mv a0,s3
+20000662: 02e00b93 li s7,46
+20000666: 20000a17 auipc s4,0x20000
+2000066a: 9dea0a13 addi s4,s4,-1570 # 40000044 <rodata_start+0x44>
+2000066e: 20000497 auipc s1,0x20000
+20000672: 16648493 addi s1,s1,358 # 400007d4 <uart_ctrl_addr+0x5d0>
+20000676: 20000417 auipc s0,0x20000
+2000067a: aae40413 addi s0,s0,-1362 # 40000124 <rodata_start+0x124>
+2000067e: 02500713 li a4,37
+20000682: 06e78463 beq a5,a4,200006ea <ee_printf+0xf4>
+20000686: 00f50023 sb a5,0(a0)
+2000068a: 00134783 lbu a5,1(t1)
+2000068e: 0505 addi a0,a0,1
+20000690: 0305 addi t1,t1,1
+20000692: f7f5 bnez a5,2000067e <ee_printf+0x88>
+20000694: 00050023 sb zero,0(a0)
+20000698: 02014583 lbu a1,32(sp)
+2000069c: 12058463 beqz a1,200007c4 <ee_printf+0x1ce>
+200006a0: 4405 li s0,1
+200006a2: 41340433 sub s0,s0,s3
+200006a6: 4501 li a0,0
+200006a8: 258d jal 20000d0a <serial_send_byte>
+200006aa: 0019c583 lbu a1,1(s3)
+200006ae: 00898533 add a0,s3,s0
+200006b2: 0985 addi s3,s3,1
+200006b4: f9ed bnez a1,200006a6 <ee_printf+0xb0>
+200006b6: 14c12083 lw ra,332(sp)
+200006ba: 14812403 lw s0,328(sp)
+200006be: 14412483 lw s1,324(sp)
+200006c2: 14012903 lw s2,320(sp)
+200006c6: 13c12983 lw s3,316(sp)
+200006ca: 13812a03 lw s4,312(sp)
+200006ce: 13412a83 lw s5,308(sp)
+200006d2: 13012b03 lw s6,304(sp)
+200006d6: 12c12b83 lw s7,300(sp)
+200006da: 12812c03 lw s8,296(sp)
+200006de: 12412c83 lw s9,292(sp)
+200006e2: 12012d03 lw s10,288(sp)
+200006e6: 6175 addi sp,sp,368
+200006e8: 8082 ret
+200006ea: 4781 li a5,0
+200006ec: 46c1 li a3,16
+200006ee: 00134583 lbu a1,1(t1)
+200006f2: 00130913 addi s2,t1,1
+200006f6: fe058713 addi a4,a1,-32
+200006fa: 0ff77713 andi a4,a4,255
+200006fe: 00e6e763 bltu a3,a4,2000070c <ee_printf+0x116>
+20000702: 070a slli a4,a4,0x2
+20000704: 9756 add a4,a4,s5
+20000706: 4318 lw a4,0(a4)
+20000708: 9756 add a4,a4,s5
+2000070a: 8702 jr a4
+2000070c: fd058713 addi a4,a1,-48
+20000710: 0ff77713 andi a4,a4,255
+20000714: 46a5 li a3,9
+20000716: 0ce6fb63 bgeu a3,a4,200007ec <ee_printf+0x1f6>
+2000071a: 02a00713 li a4,42
+2000071e: 56fd li a3,-1
+20000720: 0ee58963 beq a1,a4,20000812 <ee_printf+0x21c>
+20000724: 577d li a4,-1
+20000726: 0b758163 beq a1,s7,200007c8 <ee_printf+0x1d2>
+2000072a: 0df5f613 andi a2,a1,223
+2000072e: 04c00813 li a6,76
+20000732: 05060363 beq a2,a6,20000778 <ee_printf+0x182>
+20000736: fbf58613 addi a2,a1,-65
+2000073a: 0ff67613 andi a2,a2,255
+2000073e: 03700813 li a6,55
+20000742: 04c86e63 bltu a6,a2,2000079e <ee_printf+0x1a8>
+20000746: 060a slli a2,a2,0x2
+20000748: 9652 add a2,a2,s4
+2000074a: 4210 lw a2,0(a2)
+2000074c: 9652 add a2,a2,s4
+2000074e: 8602 jr a2
+20000750: 0017e793 ori a5,a5,1
+20000754: 834a mv t1,s2
+20000756: bf61 j 200006ee <ee_printf+0xf8>
+20000758: 0107e793 ori a5,a5,16
+2000075c: 834a mv t1,s2
+2000075e: bf41 j 200006ee <ee_printf+0xf8>
+20000760: 0047e793 ori a5,a5,4
+20000764: 834a mv t1,s2
+20000766: b761 j 200006ee <ee_printf+0xf8>
+20000768: 0207e793 ori a5,a5,32
+2000076c: 834a mv t1,s2
+2000076e: b741 j 200006ee <ee_printf+0xf8>
+20000770: 0087e793 ori a5,a5,8
+20000774: 834a mv t1,s2
+20000776: bfa5 j 200006ee <ee_printf+0xf8>
+20000778: 00194803 lbu a6,1(s2)
+2000077c: 03700313 li t1,55
+20000780: 00190893 addi a7,s2,1
+20000784: fbf80613 addi a2,a6,-65
+20000788: 0ff67613 andi a2,a2,255
+2000078c: 00c36763 bltu t1,a2,2000079a <ee_printf+0x1a4>
+20000790: 060a slli a2,a2,0x2
+20000792: 9622 add a2,a2,s0
+20000794: 4210 lw a2,0(a2)
+20000796: 9622 add a2,a2,s0
+20000798: 8602 jr a2
+2000079a: 85c2 mv a1,a6
+2000079c: 8946 mv s2,a7
+2000079e: 02500713 li a4,37
+200007a2: 00150793 addi a5,a0,1
+200007a6: 42e58963 beq a1,a4,20000bd8 <ee_printf+0x5e2>
+200007aa: 00e50023 sb a4,0(a0)
+200007ae: 00094703 lbu a4,0(s2)
+200007b2: 4c071a63 bnez a4,20000c86 <ee_printf+0x690>
+200007b6: 853e mv a0,a5
+200007b8: 00050023 sb zero,0(a0)
+200007bc: 02014583 lbu a1,32(sp)
+200007c0: ee0590e3 bnez a1,200006a0 <ee_printf+0xaa>
+200007c4: 4501 li a0,0
+200007c6: bdc5 j 200006b6 <ee_printf+0xc0>
+200007c8: 00194583 lbu a1,1(s2)
+200007cc: 4625 li a2,9
+200007ce: 00190813 addi a6,s2,1
+200007d2: fd058713 addi a4,a1,-48
+200007d6: 0ff77713 andi a4,a4,255
+200007da: 3ae67763 bgeu a2,a4,20000b88 <ee_printf+0x592>
+200007de: 02a00713 li a4,42
+200007e2: 3ce58b63 beq a1,a4,20000bb8 <ee_printf+0x5c2>
+200007e6: 8942 mv s2,a6
+200007e8: 4701 li a4,0
+200007ea: b781 j 2000072a <ee_printf+0x134>
+200007ec: 4681 li a3,0
+200007ee: 4625 li a2,9
+200007f0: 00269713 slli a4,a3,0x2
+200007f4: 96ba add a3,a3,a4
+200007f6: 0905 addi s2,s2,1
+200007f8: 0686 slli a3,a3,0x1
+200007fa: 96ae add a3,a3,a1
+200007fc: 00094583 lbu a1,0(s2)
+20000800: fd068693 addi a3,a3,-48
+20000804: fd058713 addi a4,a1,-48
+20000808: 0ff77713 andi a4,a4,255
+2000080c: fee672e3 bgeu a2,a4,200007f0 <ee_printf+0x1fa>
+20000810: bf11 j 20000724 <ee_printf+0x12e>
+20000812: 000b2683 lw a3,0(s6)
+20000816: 00234583 lbu a1,2(t1)
+2000081a: 00230913 addi s2,t1,2
+2000081e: 0b11 addi s6,s6,4
+20000820: f006d2e3 bgez a3,20000724 <ee_printf+0x12e>
+20000824: 40d006b3 neg a3,a3
+20000828: 0107e793 ori a5,a5,16
+2000082c: bde5 j 20000724 <ee_printf+0x12e>
+2000082e: 004b0813 addi a6,s6,4
+20000832: 4641 li a2,16
+20000834: 000b2583 lw a1,0(s6)
+20000838: 8b42 mv s6,a6
+2000083a: 3e75 jal 200003f6 <number>
+2000083c: 00194783 lbu a5,1(s2)
+20000840: 00190313 addi t1,s2,1
+20000844: e2079de3 bnez a5,2000067e <ee_printf+0x88>
+20000848: b5b1 j 20000694 <ee_printf+0x9e>
+2000084a: 004b0813 addi a6,s6,4
+2000084e: 4629 li a2,10
+20000850: b7d5 j 20000834 <ee_printf+0x23e>
+20000852: 8946 mv s2,a7
+20000854: 000b2603 lw a2,0(s6)
+20000858: 0b11 addi s6,s6,4
+2000085a: 3a060163 beqz a2,20000bfc <ee_printf+0x606>
+2000085e: 00064583 lbu a1,0(a2)
+20000862: 3e058b63 beqz a1,20000c58 <ee_printf+0x662>
+20000866: 3e070963 beqz a4,20000c58 <ee_printf+0x662>
+2000086a: 85b2 mv a1,a2
+2000086c: a029 j 20000876 <ee_printf+0x280>
+2000086e: 40e58833 sub a6,a1,a4
+20000872: 00c80763 beq a6,a2,20000880 <ee_printf+0x28a>
+20000876: 0015c803 lbu a6,1(a1)
+2000087a: 0585 addi a1,a1,1
+2000087c: fe0819e3 bnez a6,2000086e <ee_printf+0x278>
+20000880: 8bc1 andi a5,a5,16
+20000882: 8d91 sub a1,a1,a2
+20000884: 3a078263 beqz a5,20000c28 <ee_printf+0x632>
+20000888: 40b05b63 blez a1,20000c9e <ee_printf+0x6a8>
+2000088c: 00b60833 add a6,a2,a1
+20000890: 87aa mv a5,a0
+20000892: 00064703 lbu a4,0(a2)
+20000896: 0605 addi a2,a2,1
+20000898: 0785 addi a5,a5,1
+2000089a: fee78fa3 sb a4,-1(a5) # 10011fff <_stack+0x801000f>
+2000089e: ff061ae3 bne a2,a6,20000892 <ee_printf+0x29c>
+200008a2: 00b50733 add a4,a0,a1
+200008a6: 40b68533 sub a0,a3,a1
+200008aa: 00190313 addi t1,s2,1
+200008ae: 953a add a0,a0,a4
+200008b0: 02000793 li a5,32
+200008b4: 3cd5d163 bge a1,a3,20000c76 <ee_printf+0x680>
+200008b8: 0705 addi a4,a4,1
+200008ba: fef70fa3 sb a5,-1(a4)
+200008be: fea71de3 bne a4,a0,200008b8 <ee_printf+0x2c2>
+200008c2: 00194783 lbu a5,1(s2)
+200008c6: da079ce3 bnez a5,2000067e <ee_printf+0x88>
+200008ca: b3e9 j 20000694 <ee_printf+0x9e>
+200008cc: 8946 mv s2,a7
+200008ce: 567d li a2,-1
+200008d0: 32c68263 beq a3,a2,20000bf4 <ee_printf+0x5fe>
+200008d4: 000b2583 lw a1,0(s6)
+200008d8: 4641 li a2,16
+200008da: 0b11 addi s6,s6,4
+200008dc: 3e29 jal 200003f6 <number>
+200008de: 00194783 lbu a5,1(s2)
+200008e2: 00190313 addi t1,s2,1
+200008e6: d8079ce3 bnez a5,2000067e <ee_printf+0x88>
+200008ea: b36d j 20000694 <ee_printf+0x9e>
+200008ec: 004b0813 addi a6,s6,4
+200008f0: 4621 li a2,8
+200008f2: b789 j 20000834 <ee_printf+0x23e>
+200008f4: 0027e793 ori a5,a5,2
+200008f8: 004b0813 addi a6,s6,4
+200008fc: 4629 li a2,10
+200008fe: bf1d j 20000834 <ee_printf+0x23e>
+20000900: 8946 mv s2,a7
+20000902: 8bc1 andi a5,a5,16
+20000904: 16fd addi a3,a3,-1
+20000906: 30078063 beqz a5,20000c06 <ee_printf+0x610>
+2000090a: 000b2603 lw a2,0(s6)
+2000090e: 00150713 addi a4,a0,1
+20000912: 00168793 addi a5,a3,1
+20000916: 00c50023 sb a2,0(a0)
+2000091a: 0b11 addi s6,s6,4
+2000091c: 953e add a0,a0,a5
+2000091e: 00190313 addi t1,s2,1
+20000922: 87ba mv a5,a4
+20000924: 02000613 li a2,32
+20000928: 34d05763 blez a3,20000c76 <ee_printf+0x680>
+2000092c: 0785 addi a5,a5,1
+2000092e: fec78fa3 sb a2,-1(a5)
+20000932: fea79de3 bne a5,a0,2000092c <ee_printf+0x336>
+20000936: 00194783 lbu a5,1(s2)
+2000093a: 00d70533 add a0,a4,a3
+2000093e: d40790e3 bnez a5,2000067e <ee_printf+0x88>
+20000942: bb89 j 20000694 <ee_printf+0x9e>
+20000944: 0407e793 ori a5,a5,64
+20000948: 004b0813 addi a6,s6,4
+2000094c: 4641 li a2,16
+2000094e: b5dd j 20000834 <ee_printf+0x23e>
+20000950: 000b2703 lw a4,0(s6)
+20000954: 0407e793 ori a5,a5,64
+20000958: 0b11 addi s6,s6,4
+2000095a: 00074583 lbu a1,0(a4)
+2000095e: 4801 li a6,0
+20000960: 00470893 addi a7,a4,4
+20000964: 06300e93 li t4,99
+20000968: 4fa5 li t6,9
+2000096a: 4329 li t1,10
+2000096c: 06400f13 li t5,100
+20000970: 03000e13 li t3,48
+20000974: 00180613 addi a2,a6,1
+20000978: e19d bnez a1,2000099e <ee_printf+0x3a8>
+2000097a: 120c addi a1,sp,288
+2000097c: 982e add a6,a6,a1
+2000097e: efc80423 sb t3,-280(a6)
+20000982: 0705 addi a4,a4,1
+20000984: 07170663 beq a4,a7,200009f0 <ee_printf+0x3fa>
+20000988: 120c addi a1,sp,288
+2000098a: 95b2 add a1,a1,a2
+2000098c: ef758423 sb s7,-280(a1)
+20000990: 00074583 lbu a1,0(a4)
+20000994: 00160813 addi a6,a2,1
+20000998: 00180613 addi a2,a6,1
+2000099c: ddf9 beqz a1,2000097a <ee_printf+0x384>
+2000099e: 1cbed063 bge t4,a1,20000b5e <ee_printf+0x568>
+200009a2: 03e5ec33 rem s8,a1,t5
+200009a6: 12010293 addi t0,sp,288
+200009aa: 01028d33 add s10,t0,a6
+200009ae: 00c28cb3 add s9,t0,a2
+200009b2: 00280393 addi t2,a6,2
+200009b6: 00380613 addi a2,a6,3
+200009ba: 03e5c5b3 div a1,a1,t5
+200009be: 026c4833 div a6,s8,t1
+200009c2: 00b482b3 add t0,s1,a1
+200009c6: 0002c583 lbu a1,0(t0)
+200009ca: eebd0423 sb a1,-280(s10)
+200009ce: 026c65b3 rem a1,s8,t1
+200009d2: 9826 add a6,a6,s1
+200009d4: 00084803 lbu a6,0(a6)
+200009d8: ef0c8423 sb a6,-280(s9)
+200009dc: 95a6 add a1,a1,s1
+200009de: 0005c803 lbu a6,0(a1)
+200009e2: 120c addi a1,sp,288
+200009e4: 959e add a1,a1,t2
+200009e6: ef058423 sb a6,-280(a1)
+200009ea: 0705 addi a4,a4,1
+200009ec: f9171ee3 bne a4,a7,20000988 <ee_printf+0x392>
+200009f0: 8bc1 andi a5,a5,16
+200009f2: fff68813 addi a6,a3,-1
+200009f6: e395 bnez a5,20000a1a <ee_printf+0x424>
+200009f8: 40c687b3 sub a5,a3,a2
+200009fc: 97aa add a5,a5,a0
+200009fe: 02000713 li a4,32
+20000a02: 28d65463 bge a2,a3,20000c8a <ee_printf+0x694>
+20000a06: 0505 addi a0,a0,1
+20000a08: fee50fa3 sb a4,-1(a0)
+20000a0c: fea79de3 bne a5,a0,20000a06 <ee_printf+0x410>
+20000a10: 40d606b3 sub a3,a2,a3
+20000a14: 96c2 add a3,a3,a6
+20000a16: fff68813 addi a6,a3,-1
+20000a1a: 003c addi a5,sp,8
+20000a1c: 00c505b3 add a1,a0,a2
+20000a20: 0007c703 lbu a4,0(a5)
+20000a24: 0505 addi a0,a0,1
+20000a26: 0785 addi a5,a5,1
+20000a28: fee50fa3 sb a4,-1(a0)
+20000a2c: feb51ae3 bne a0,a1,20000a20 <ee_printf+0x42a>
+20000a30: e0d656e3 bge a2,a3,2000083c <ee_printf+0x246>
+20000a34: 872e mv a4,a1
+20000a36: 02000513 li a0,32
+20000a3a: 4685 li a3,1
+20000a3c: 0705 addi a4,a4,1
+20000a3e: 40e687b3 sub a5,a3,a4
+20000a42: 97c2 add a5,a5,a6
+20000a44: 97ae add a5,a5,a1
+20000a46: fea70fa3 sb a0,-1(a4)
+20000a4a: fef649e3 blt a2,a5,20000a3c <ee_printf+0x446>
+20000a4e: 4505 li a0,1
+20000a50: 16c85f63 bge a6,a2,20000bce <ee_printf+0x5d8>
+20000a54: 952e add a0,a0,a1
+20000a56: b3dd j 2000083c <ee_printf+0x246>
+20000a58: 0027e793 ori a5,a5,2
+20000a5c: 4629 li a2,10
+20000a5e: 06c00313 li t1,108
+20000a62: 004b0813 addi a6,s6,4
+20000a66: 20659e63 bne a1,t1,20000c82 <ee_printf+0x68c>
+20000a6a: 000b2583 lw a1,0(s6)
+20000a6e: 8946 mv s2,a7
+20000a70: 8b42 mv s6,a6
+20000a72: b3e1 j 2000083a <ee_printf+0x244>
+20000a74: 4621 li a2,8
+20000a76: b7e5 j 20000a5e <ee_printf+0x468>
+20000a78: 0407e793 ori a5,a5,64
+20000a7c: 4641 li a2,16
+20000a7e: b7c5 j 20000a5e <ee_printf+0x468>
+20000a80: 0407e793 ori a5,a5,64
+20000a84: 06c00613 li a2,108
+20000a88: 000b2703 lw a4,0(s6)
+20000a8c: 0b11 addi s6,s6,4
+20000a8e: 1ac59f63 bne a1,a2,20000c4c <ee_printf+0x656>
+20000a92: 0407f613 andi a2,a5,64
+20000a96: 88a6 mv a7,s1
+20000a98: c609 beqz a2,20000aa2 <ee_printf+0x4ac>
+20000a9a: 20000897 auipc a7,0x20000
+20000a9e: d6288893 addi a7,a7,-670 # 400007fc <uart_ctrl_addr+0x5f8>
+20000aa2: 00810313 addi t1,sp,8
+20000aa6: 01a10e13 addi t3,sp,26
+20000aaa: 859a mv a1,t1
+20000aac: 03a00e93 li t4,58
+20000ab0: a019 j 20000ab6 <ee_printf+0x4c0>
+20000ab2: ffd58fa3 sb t4,-1(a1)
+20000ab6: 00074603 lbu a2,0(a4)
+20000aba: 058d addi a1,a1,3
+20000abc: 0705 addi a4,a4,1
+20000abe: 00465813 srli a6,a2,0x4
+20000ac2: 8a3d andi a2,a2,15
+20000ac4: 9846 add a6,a6,a7
+20000ac6: 9646 add a2,a2,a7
+20000ac8: 00084803 lbu a6,0(a6)
+20000acc: 00064603 lbu a2,0(a2)
+20000ad0: ff058ea3 sb a6,-3(a1)
+20000ad4: fec58f23 sb a2,-2(a1)
+20000ad8: fdc59de3 bne a1,t3,20000ab2 <ee_printf+0x4bc>
+20000adc: 8bc1 andi a5,a5,16
+20000ade: fff68613 addi a2,a3,-1
+20000ae2: e39d bnez a5,20000b08 <ee_printf+0x512>
+20000ae4: fef68593 addi a1,a3,-17
+20000ae8: 4845 li a6,17
+20000aea: 00b50733 add a4,a0,a1
+20000aee: 02000793 li a5,32
+20000af2: 1ad85163 bge a6,a3,20000c94 <ee_printf+0x69e>
+20000af6: 0505 addi a0,a0,1
+20000af8: fef50fa3 sb a5,-1(a0)
+20000afc: fee51de3 bne a0,a4,20000af6 <ee_printf+0x500>
+20000b00: 40b606b3 sub a3,a2,a1
+20000b04: fff68613 addi a2,a3,-1
+20000b08: 87aa mv a5,a0
+20000b0a: 01130593 addi a1,t1,17
+20000b0e: 00034703 lbu a4,0(t1)
+20000b12: 0305 addi t1,t1,1
+20000b14: 0785 addi a5,a5,1
+20000b16: fee78fa3 sb a4,-1(a5)
+20000b1a: feb31ae3 bne t1,a1,20000b0e <ee_printf+0x518>
+20000b1e: 47c5 li a5,17
+20000b20: 0545 addi a0,a0,17
+20000b22: 02d7d763 bge a5,a3,20000b50 <ee_printf+0x55a>
+20000b26: 872a mv a4,a0
+20000b28: 02000813 li a6,32
+20000b2c: 4585 li a1,1
+20000b2e: 46c5 li a3,17
+20000b30: 0705 addi a4,a4,1
+20000b32: 40e587b3 sub a5,a1,a4
+20000b36: 97b2 add a5,a5,a2
+20000b38: 97aa add a5,a5,a0
+20000b3a: ff070fa3 sb a6,-1(a4)
+20000b3e: fef6c9e3 blt a3,a5,20000b30 <ee_printf+0x53a>
+20000b42: 4741 li a4,16
+20000b44: 4785 li a5,1
+20000b46: 00c75463 bge a4,a2,20000b4e <ee_printf+0x558>
+20000b4a: ff060793 addi a5,a2,-16
+20000b4e: 953e add a0,a0,a5
+20000b50: 00294783 lbu a5,2(s2)
+20000b54: 00290313 addi t1,s2,2
+20000b58: b20793e3 bnez a5,2000067e <ee_printf+0x88>
+20000b5c: be25 j 20000694 <ee_printf+0x9e>
+20000b5e: 83c2 mv t2,a6
+20000b60: e6bfdee3 bge t6,a1,200009dc <ee_printf+0x3e6>
+20000b64: 0265c2b3 div t0,a1,t1
+20000b68: 12010393 addi t2,sp,288
+20000b6c: 01038c33 add s8,t2,a6
+20000b70: 83b2 mv t2,a2
+20000b72: 00280613 addi a2,a6,2
+20000b76: 00548833 add a6,s1,t0
+20000b7a: 00084803 lbu a6,0(a6)
+20000b7e: 0265e5b3 rem a1,a1,t1
+20000b82: ef0c0423 sb a6,-280(s8)
+20000b86: bd99 j 200009dc <ee_printf+0x3e6>
+20000b88: 4701 li a4,0
+20000b8a: 48a5 li a7,9
+20000b8c: 00271613 slli a2,a4,0x2
+20000b90: 9732 add a4,a4,a2
+20000b92: 0805 addi a6,a6,1
+20000b94: 0706 slli a4,a4,0x1
+20000b96: 972e add a4,a4,a1
+20000b98: 00084583 lbu a1,0(a6)
+20000b9c: fd070713 addi a4,a4,-48
+20000ba0: fd058613 addi a2,a1,-48
+20000ba4: 0ff67613 andi a2,a2,255
+20000ba8: fec8f2e3 bgeu a7,a2,20000b8c <ee_printf+0x596>
+20000bac: 8942 mv s2,a6
+20000bae: beb5 j 2000072a <ee_printf+0x134>
+20000bb0: 000b2703 lw a4,0(s6)
+20000bb4: 0b11 addi s6,s6,4
+20000bb6: b355 j 2000095a <ee_printf+0x364>
+20000bb8: 000b2703 lw a4,0(s6)
+20000bbc: 00294583 lbu a1,2(s2)
+20000bc0: 0b11 addi s6,s6,4
+20000bc2: fff74613 not a2,a4
+20000bc6: 867d srai a2,a2,0x1f
+20000bc8: 8f71 and a4,a4,a2
+20000bca: 0909 addi s2,s2,2
+20000bcc: beb9 j 2000072a <ee_printf+0x134>
+20000bce: 8e91 sub a3,a3,a2
+20000bd0: 01068533 add a0,a3,a6
+20000bd4: 952e add a0,a0,a1
+20000bd6: b19d j 2000083c <ee_printf+0x246>
+20000bd8: 00094703 lbu a4,0(s2)
+20000bdc: 86be mv a3,a5
+20000bde: 87aa mv a5,a0
+20000be0: 8536 mv a0,a3
+20000be2: 00e78023 sb a4,0(a5)
+20000be6: 00194783 lbu a5,1(s2)
+20000bea: 00190313 addi t1,s2,1
+20000bee: a80798e3 bnez a5,2000067e <ee_printf+0x88>
+20000bf2: b44d j 20000694 <ee_printf+0x9e>
+20000bf4: 0017e793 ori a5,a5,1
+20000bf8: 46a1 li a3,8
+20000bfa: b9e9 j 200008d4 <ee_printf+0x2de>
+20000bfc: 20000617 auipc a2,0x20000
+20000c00: c2860613 addi a2,a2,-984 # 40000824 <uart_ctrl_addr+0x620>
+20000c04: b18d j 20000866 <ee_printf+0x270>
+20000c06: 00d50733 add a4,a0,a3
+20000c0a: 02000793 li a5,32
+20000c0e: 04d05b63 blez a3,20000c64 <ee_printf+0x66e>
+20000c12: 0505 addi a0,a0,1
+20000c14: fef50fa3 sb a5,-1(a0)
+20000c18: fee51de3 bne a0,a4,20000c12 <ee_printf+0x61c>
+20000c1c: 56fd li a3,-1
+20000c1e: b1f5 j 2000090a <ee_printf+0x314>
+20000c20: 02010993 addi s3,sp,32
+20000c24: 854e mv a0,s3
+20000c26: b4bd j 20000694 <ee_printf+0x9e>
+20000c28: fff68813 addi a6,a3,-1
+20000c2c: 08d5d263 bge a1,a3,20000cb0 <ee_printf+0x6ba>
+20000c30: 40b687b3 sub a5,a3,a1
+20000c34: 97aa add a5,a5,a0
+20000c36: 02000713 li a4,32
+20000c3a: 0505 addi a0,a0,1
+20000c3c: fee50fa3 sb a4,-1(a0)
+20000c40: fef51de3 bne a0,a5,20000c3a <ee_printf+0x644>
+20000c44: 40d586b3 sub a3,a1,a3
+20000c48: 96c2 add a3,a3,a6
+20000c4a: b93d j 20000888 <ee_printf+0x292>
+20000c4c: 8946 mv s2,a7
+20000c4e: b331 j 2000095a <ee_printf+0x364>
+20000c50: 4641 li a2,16
+20000c52: b531 j 20000a5e <ee_printf+0x468>
+20000c54: 4629 li a2,10
+20000c56: b521 j 20000a5e <ee_printf+0x468>
+20000c58: 0107f593 andi a1,a5,16
+20000c5c: c1b9 beqz a1,20000ca2 <ee_printf+0x6ac>
+20000c5e: 872a mv a4,a0
+20000c60: 4581 li a1,0
+20000c62: b191 j 200008a6 <ee_printf+0x2b0>
+20000c64: 000b2783 lw a5,0(s6)
+20000c68: 00150713 addi a4,a0,1
+20000c6c: 0b11 addi s6,s6,4
+20000c6e: 00f50023 sb a5,0(a0)
+20000c72: 00190313 addi t1,s2,1
+20000c76: 00194783 lbu a5,1(s2)
+20000c7a: 853a mv a0,a4
+20000c7c: a00791e3 bnez a5,2000067e <ee_printf+0x88>
+20000c80: bc11 j 20000694 <ee_printf+0x9e>
+20000c82: 8946 mv s2,a7
+20000c84: be45 j 20000834 <ee_printf+0x23e>
+20000c86: 0509 addi a0,a0,2
+20000c88: bfa9 j 20000be2 <ee_printf+0x5ec>
+20000c8a: ffe68793 addi a5,a3,-2
+20000c8e: 86c2 mv a3,a6
+20000c90: 883e mv a6,a5
+20000c92: b361 j 20000a1a <ee_printf+0x424>
+20000c94: ffe68793 addi a5,a3,-2
+20000c98: 86b2 mv a3,a2
+20000c9a: 863e mv a2,a5
+20000c9c: b5b5 j 20000b08 <ee_printf+0x512>
+20000c9e: 872a mv a4,a0
+20000ca0: b119 j 200008a6 <ee_printf+0x2b0>
+20000ca2: fff68813 addi a6,a3,-1
+20000ca6: f8d045e3 bgtz a3,20000c30 <ee_printf+0x63a>
+20000caa: 86c2 mv a3,a6
+20000cac: 872a mv a4,a0
+20000cae: bee5 j 200008a6 <ee_printf+0x2b0>
+20000cb0: 86c2 mv a3,a6
+20000cb2: bed9 j 20000888 <ee_printf+0x292>
+
+20000cb4 <mytimes>:
+20000cb4: 87aa mv a5,a0
+20000cb6: b0002773 csrr a4,mcycle
+20000cba: 4501 li a0,0
+20000cbc: c398 sw a4,0(a5)
+20000cbe: 8082 ret
+
+20000cc0 <serial_init>:
+20000cc0: 00251793 slli a5,a0,0x2
+20000cc4: 1ffff517 auipc a0,0x1ffff
+20000cc8: 54050513 addi a0,a0,1344 # 40000204 <uart_ctrl_addr>
+20000ccc: 953e add a0,a0,a5
+20000cce: 4118 lw a4,0(a0)
+20000cd0: 4785 li a5,1
+20000cd2: c71c sw a5,8(a4)
+20000cd4: c75c sw a5,12(a4)
+20000cd6: 00f58a63 beq a1,a5,20000cea <serial_init+0x2a>
+20000cda: 36300793 li a5,867
+20000cde: cf1c sw a5,24(a4)
+20000ce0: 435c lw a5,4(a4)
+20000ce2: fe07dfe3 bgez a5,20000ce0 <serial_init+0x20>
+20000ce6: 4501 li a0,0
+20000ce8: 8082 ret
+20000cea: 47bd li a5,15
+20000cec: cf1c sw a5,24(a4)
+20000cee: bfcd j 20000ce0 <serial_init+0x20>
+
+20000cf0 <serial_is_send_enable>:
+20000cf0: 00251793 slli a5,a0,0x2
+20000cf4: 1ffff517 auipc a0,0x1ffff
+20000cf8: 51050513 addi a0,a0,1296 # 40000204 <uart_ctrl_addr>
+20000cfc: 953e add a0,a0,a5
+20000cfe: 411c lw a5,0(a0)
+20000d00: 4388 lw a0,0(a5)
+20000d02: fff54513 not a0,a0
+20000d06: 817d srli a0,a0,0x1f
+20000d08: 8082 ret
+
+20000d0a <serial_send_byte>:
+20000d0a: 00251793 slli a5,a0,0x2
+20000d0e: 1ffff517 auipc a0,0x1ffff
+20000d12: 4f650513 addi a0,a0,1270 # 40000204 <uart_ctrl_addr>
+20000d16: 953e add a0,a0,a5
+20000d18: 4118 lw a4,0(a0)
+20000d1a: 431c lw a5,0(a4)
+20000d1c: fe07cfe3 bltz a5,20000d1a <serial_send_byte+0x10>
+20000d20: c30c sw a1,0(a4)
+20000d22: 4501 li a0,0
+20000d24: 8082 ret
+
+20000d26 <serial_is_recv_enable>:
+20000d26: 00251793 slli a5,a0,0x2
+20000d2a: 1ffff517 auipc a0,0x1ffff
+20000d2e: 4da50513 addi a0,a0,1242 # 40000204 <uart_ctrl_addr>
+20000d32: 953e add a0,a0,a5
+20000d34: 411c lw a5,0(a0)
+20000d36: 43dc lw a5,4(a5)
+20000d38: fff7c513 not a0,a5
+20000d3c: 00f58023 sb a5,0(a1)
+20000d40: 817d srli a0,a0,0x1f
+20000d42: 8082 ret
+
+20000d44 <serial_recv_byte>:
+20000d44: 00251793 slli a5,a0,0x2
+20000d48: 1ffff517 auipc a0,0x1ffff
+20000d4c: 4bc50513 addi a0,a0,1212 # 40000204 <uart_ctrl_addr>
+20000d50: 953e add a0,a0,a5
+20000d52: 411c lw a5,0(a0)
+20000d54: 43c8 lw a0,4(a5)
+20000d56: fe054fe3 bltz a0,20000d54 <serial_recv_byte+0x10>
+20000d5a: 0ff57513 andi a0,a0,255
+20000d5e: 8082 ret
+
+20000d60 <memset>:
+20000d60: 0ff5f593 andi a1,a1,255
+20000d64: 00c50733 add a4,a0,a2
+20000d68: 87aa mv a5,a0
+20000d6a: 00c05763 blez a2,20000d78 <memset+0x18>
+20000d6e: 0785 addi a5,a5,1
+20000d70: feb78fa3 sb a1,-1(a5)
+20000d74: fef71de3 bne a4,a5,20000d6e <memset+0xe>
+20000d78: 8082 ret
+
+20000d7a <memcpy>:
+20000d7a: 00c05c63 blez a2,20000d92 <memcpy+0x18>
+20000d7e: 962a add a2,a2,a0
+20000d80: 87aa mv a5,a0
+20000d82: 0005c703 lbu a4,0(a1)
+20000d86: 0785 addi a5,a5,1
+20000d88: 0585 addi a1,a1,1
+20000d8a: fee78fa3 sb a4,-1(a5)
+20000d8e: fef61ae3 bne a2,a5,20000d82 <memcpy+0x8>
+20000d92: 8082 ret
+
+20000d94 <memcmp>:
+20000d94: 02c05563 blez a2,20000dbe <memcmp+0x2a>
+20000d98: 962e add a2,a2,a1
+20000d9a: a019 j 20000da0 <memcmp+0xc>
+20000d9c: 02b60163 beq a2,a1,20000dbe <memcmp+0x2a>
+20000da0: 00054783 lbu a5,0(a0)
+20000da4: 0005c703 lbu a4,0(a1)
+20000da8: 0505 addi a0,a0,1
+20000daa: 0585 addi a1,a1,1
+20000dac: fee788e3 beq a5,a4,20000d9c <memcmp+0x8>
+20000db0: 00f73533 sltu a0,a4,a5
+20000db4: 40a00533 neg a0,a0
+20000db8: 8909 andi a0,a0,2
+20000dba: 157d addi a0,a0,-1
+20000dbc: 8082 ret
+20000dbe: 4501 li a0,0
+20000dc0: 8082 ret
+
+20000dc2 <strlen>:
+20000dc2: 00054783 lbu a5,0(a0)
+20000dc6: 872a mv a4,a0
+20000dc8: 4501 li a0,0
+20000dca: cb81 beqz a5,20000dda <strlen+0x18>
+20000dcc: 0505 addi a0,a0,1
+20000dce: 00a707b3 add a5,a4,a0
+20000dd2: 0007c783 lbu a5,0(a5)
+20000dd6: fbfd bnez a5,20000dcc <strlen+0xa>
+20000dd8: 8082 ret
+20000dda: 8082 ret
+
+20000ddc <strcpy>:
+20000ddc: 0005c783 lbu a5,0(a1)
+20000de0: 00f50023 sb a5,0(a0)
+20000de4: 0005c783 lbu a5,0(a1)
+20000de8: cb99 beqz a5,20000dfe <strcpy+0x22>
+20000dea: 87aa mv a5,a0
+20000dec: 0015c703 lbu a4,1(a1)
+20000df0: 0585 addi a1,a1,1
+20000df2: 0785 addi a5,a5,1
+20000df4: 00e78023 sb a4,0(a5)
+20000df8: 0005c703 lbu a4,0(a1)
+20000dfc: fb65 bnez a4,20000dec <strcpy+0x10>
+20000dfe: 8082 ret
+
+20000e00 <strcmp>:
+20000e00: a019 j 20000e06 <strcmp+0x6>
+20000e02: 00e79d63 bne a5,a4,20000e1c <strcmp+0x1c>
+20000e06: 00054783 lbu a5,0(a0)
+20000e0a: 0005c703 lbu a4,0(a1)
+20000e0e: 0505 addi a0,a0,1
+20000e10: 0585 addi a1,a1,1
+20000e12: 00e7e6b3 or a3,a5,a4
+20000e16: f6f5 bnez a3,20000e02 <strcmp+0x2>
+20000e18: 4501 li a0,0
+20000e1a: 8082 ret
+20000e1c: 00f73533 sltu a0,a4,a5
+20000e20: 40a00533 neg a0,a0
+20000e24: 8909 andi a0,a0,2
+20000e26: 157d addi a0,a0,-1
+20000e28: 8082 ret
+
+20000e2a <strncmp>:
+20000e2a: 87aa mv a5,a0
+20000e2c: 00c50833 add a6,a0,a2
+20000e30: 0007c703 lbu a4,0(a5)
+20000e34: 40f806b3 sub a3,a6,a5
+20000e38: eb19 bnez a4,20000e4e <strncmp+0x24>
+20000e3a: 0005c703 lbu a4,0(a1)
+20000e3e: c70d beqz a4,20000e68 <strncmp+0x3e>
+20000e40: 9532 add a0,a0,a2
+20000e42: 8d1d sub a0,a0,a5
+20000e44: 00a02533 sgtz a0,a0
+20000e48: 40a00533 neg a0,a0
+20000e4c: 8082 ret
+20000e4e: 00d05d63 blez a3,20000e68 <strncmp+0x3e>
+20000e52: 0005c683 lbu a3,0(a1)
+20000e56: 0785 addi a5,a5,1
+20000e58: 0585 addi a1,a1,1
+20000e5a: fce68be3 beq a3,a4,20000e30 <strncmp+0x6>
+20000e5e: 4505 li a0,1
+20000e60: fee6e6e3 bltu a3,a4,20000e4c <strncmp+0x22>
+20000e64: 557d li a0,-1
+20000e66: 8082 ret
+20000e68: 4501 li a0,0
+20000e6a: 8082 ret
+
+20000e6c <putc>:
+20000e6c: 1141 addi sp,sp,-16
+20000e6e: c422 sw s0,8(sp)
+20000e70: c606 sw ra,12(sp)
+20000e72: 47a9 li a5,10
+20000e74: 842a mv s0,a0
+20000e76: 00f50863 beq a0,a5,20000e86 <putc+0x1a>
+20000e7a: 85a2 mv a1,s0
+20000e7c: 4422 lw s0,8(sp)
+20000e7e: 40b2 lw ra,12(sp)
+20000e80: 4501 li a0,0
+20000e82: 0141 addi sp,sp,16
+20000e84: b559 j 20000d0a <serial_send_byte>
+20000e86: 45b5 li a1,13
+20000e88: 4501 li a0,0
+20000e8a: 3541 jal 20000d0a <serial_send_byte>
+20000e8c: 85a2 mv a1,s0
+20000e8e: 4422 lw s0,8(sp)
+20000e90: 40b2 lw ra,12(sp)
+20000e92: 4501 li a0,0
+20000e94: 0141 addi sp,sp,16
+20000e96: bd95 j 20000d0a <serial_send_byte>
+
+20000e98 <getc>:
+20000e98: 1141 addi sp,sp,-16
+20000e9a: 4501 li a0,0
+20000e9c: c422 sw s0,8(sp)
+20000e9e: c606 sw ra,12(sp)
+20000ea0: 3555 jal 20000d44 <serial_recv_byte>
+20000ea2: 47b5 li a5,13
+20000ea4: 4429 li s0,10
+20000ea6: 00f50363 beq a0,a5,20000eac <getc+0x14>
+20000eaa: 842a mv s0,a0
+20000eac: 8522 mv a0,s0
+20000eae: 3f7d jal 20000e6c <putc>
+20000eb0: 40b2 lw ra,12(sp)
+20000eb2: 8522 mv a0,s0
+20000eb4: 4422 lw s0,8(sp)
+20000eb6: 0141 addi sp,sp,16
+20000eb8: 8082 ret
+
+20000eba <puts>:
+20000eba: 1141 addi sp,sp,-16
+20000ebc: c422 sw s0,8(sp)
+20000ebe: c606 sw ra,12(sp)
+20000ec0: 842a mv s0,a0
+20000ec2: 00054503 lbu a0,0(a0)
+20000ec6: c511 beqz a0,20000ed2 <puts+0x18>
+20000ec8: 0405 addi s0,s0,1
+20000eca: 374d jal 20000e6c <putc>
+20000ecc: 00044503 lbu a0,0(s0)
+20000ed0: fd65 bnez a0,20000ec8 <puts+0xe>
+20000ed2: 40b2 lw ra,12(sp)
+20000ed4: 4422 lw s0,8(sp)
+20000ed6: 4501 li a0,0
+20000ed8: 0141 addi sp,sp,16
+20000eda: 8082 ret
+
+20000edc <gets>:
+20000edc: 1141 addi sp,sp,-16
+20000ede: c422 sw s0,8(sp)
+20000ee0: c226 sw s1,4(sp)
+20000ee2: c04a sw s2,0(sp)
+20000ee4: c606 sw ra,12(sp)
+20000ee6: 4929 li s2,10
+20000ee8: 842a mv s0,a0
+20000eea: 4481 li s1,0
+20000eec: 3775 jal 20000e98 <getc>
+20000eee: 01250c63 beq a0,s2,20000f06 <gets+0x2a>
+20000ef2: 00a40023 sb a0,0(s0)
+20000ef6: 00148793 addi a5,s1,1
+20000efa: 0405 addi s0,s0,1
+20000efc: c519 beqz a0,20000f0a <gets+0x2e>
+20000efe: 84be mv s1,a5
+20000f00: 3f61 jal 20000e98 <getc>
+20000f02: ff2518e3 bne a0,s2,20000ef2 <gets+0x16>
+20000f06: 00040023 sb zero,0(s0)
+20000f0a: 40b2 lw ra,12(sp)
+20000f0c: 4422 lw s0,8(sp)
+20000f0e: 4902 lw s2,0(sp)
+20000f10: 8526 mv a0,s1
+20000f12: 4492 lw s1,4(sp)
+20000f14: 0141 addi sp,sp,16
+20000f16: 8082 ret
+
+20000f18 <putxval>:
+20000f18: 1101 addi sp,sp,-32
+20000f1a: ce06 sw ra,28(sp)
+20000f1c: cc22 sw s0,24(sp)
+20000f1e: 00010623 sb zero,12(sp)
+20000f22: ed05 bnez a0,20000f5a <putxval+0x42>
+20000f24: e191 bnez a1,20000f28 <putxval+0x10>
+20000f26: 4585 li a1,1
+20000f28: 00b10793 addi a5,sp,11
+20000f2c: 03000713 li a4,48
+20000f30: c591 beqz a1,20000f3c <putxval+0x24>
+20000f32: 00e78023 sb a4,0(a5)
+20000f36: 15fd addi a1,a1,-1
+20000f38: 17fd addi a5,a5,-1
+20000f3a: fde5 bnez a1,20000f32 <putxval+0x1a>
+20000f3c: 0017c503 lbu a0,1(a5)
+20000f40: 00178413 addi s0,a5,1
+20000f44: c511 beqz a0,20000f50 <putxval+0x38>
+20000f46: 0405 addi s0,s0,1
+20000f48: 3715 jal 20000e6c <putc>
+20000f4a: 00044503 lbu a0,0(s0)
+20000f4e: fd65 bnez a0,20000f46 <putxval+0x2e>
+20000f50: 40f2 lw ra,28(sp)
+20000f52: 4462 lw s0,24(sp)
+20000f54: 4501 li a0,0
+20000f56: 6105 addi sp,sp,32
+20000f58: 8082 ret
+20000f5a: 872a mv a4,a0
+20000f5c: 00f77793 andi a5,a4,15
+20000f60: 20000817 auipc a6,0x20000
+20000f64: 8cc80813 addi a6,a6,-1844 # 4000082c <uart_ctrl_addr+0x628>
+20000f68: 97c2 add a5,a5,a6
+20000f6a: 0007c503 lbu a0,0(a5)
+20000f6e: 00b10413 addi s0,sp,11
+20000f72: fff40793 addi a5,s0,-1
+20000f76: 00a780a3 sb a0,1(a5)
+20000f7a: 8311 srli a4,a4,0x4
+20000f7c: cd99 beqz a1,20000f9a <putxval+0x82>
+20000f7e: 15fd addi a1,a1,-1
+20000f80: d755 beqz a4,20000f2c <putxval+0x14>
+20000f82: 843e mv s0,a5
+20000f84: 00f77793 andi a5,a4,15
+20000f88: 97c2 add a5,a5,a6
+20000f8a: 0007c503 lbu a0,0(a5)
+20000f8e: 8311 srli a4,a4,0x4
+20000f90: fff40793 addi a5,s0,-1
+20000f94: 00a780a3 sb a0,1(a5)
+20000f98: f1fd bnez a1,20000f7e <putxval+0x66>
+20000f9a: 00f77693 andi a3,a4,15
+20000f9e: 96c2 add a3,a3,a6
+20000fa0: fff78613 addi a2,a5,-1
+20000fa4: d345 beqz a4,20000f44 <putxval+0x2c>
+20000fa6: 0006c503 lbu a0,0(a3)
+20000faa: 8311 srli a4,a4,0x4
+20000fac: 843e mv s0,a5
+20000fae: 00a78023 sb a0,0(a5)
+20000fb2: 00f77693 andi a3,a4,15
+20000fb6: 87b2 mv a5,a2
+20000fb8: 96c2 add a3,a3,a6
+20000fba: fff78613 addi a2,a5,-1
+20000fbe: d359 beqz a4,20000f44 <putxval+0x2c>
+20000fc0: b7dd j 20000fa6 <putxval+0x8e>
+
+20000fc2 <malloc_init>:
+20000fc2: 1141 addi sp,sp,-16
+20000fc4: 4501 li a0,0
+20000fc6: c606 sw ra,12(sp)
+20000fc8: 20f9 jal 20001096 <sbrk>
+20000fca: 40b2 lw ra,12(sp)
+20000fcc: 20002797 auipc a5,0x20002
+20000fd0: 08a7a423 sw a0,136(a5) # 40003054 <last_valid_address>
+20000fd4: 20002797 auipc a5,0x20002
+20000fd8: 08a7a223 sw a0,132(a5) # 40003058 <managed_memory_start>
+20000fdc: 4785 li a5,1
+20000fde: 20002717 auipc a4,0x20002
+20000fe2: 06f72f23 sw a5,126(a4) # 4000305c <has_initialized>
+20000fe6: 0141 addi sp,sp,16
+20000fe8: 8082 ret
+
+20000fea <free>:
+20000fea: 4785 li a5,1
+20000fec: fef52c23 sw a5,-8(a0)
+20000ff0: 8082 ret
+
+20000ff2 <malloc>:
+20000ff2: 1141 addi sp,sp,-16
+20000ff4: c04a sw s2,0(sp)
+20000ff6: 20002917 auipc s2,0x20002
+20000ffa: 06690913 addi s2,s2,102 # 4000305c <has_initialized>
+20000ffe: 00092783 lw a5,0(s2)
+20001002: c422 sw s0,8(sp)
+20001004: c606 sw ra,12(sp)
+20001006: c226 sw s1,4(sp)
+20001008: 00850413 addi s0,a0,8
+2000100c: c7a1 beqz a5,20001054 <malloc+0x62>
+2000100e: 20002497 auipc s1,0x20002
+20001012: 04648493 addi s1,s1,70 # 40003054 <last_valid_address>
+20001016: 4094 lw a3,0(s1)
+20001018: 20002517 auipc a0,0x20002
+2000101c: 04052503 lw a0,64(a0) # 40003058 <managed_memory_start>
+20001020: 04d50863 beq a0,a3,20001070 <malloc+0x7e>
+20001024: 4118 lw a4,0(a0)
+20001026: 415c lw a5,4(a0)
+20001028: c319 beqz a4,2000102e <malloc+0x3c>
+2000102a: 0487dd63 bge a5,s0,20001084 <malloc+0x92>
+2000102e: 953e add a0,a0,a5
+20001030: fed51ae3 bne a0,a3,20001024 <malloc+0x32>
+20001034: 8522 mv a0,s0
+20001036: 2085 jal 20001096 <sbrk>
+20001038: 4088 lw a0,0(s1)
+2000103a: 008507b3 add a5,a0,s0
+2000103e: c09c sw a5,0(s1)
+20001040: 00052023 sw zero,0(a0)
+20001044: c140 sw s0,4(a0)
+20001046: 40b2 lw ra,12(sp)
+20001048: 4422 lw s0,8(sp)
+2000104a: 4492 lw s1,4(sp)
+2000104c: 4902 lw s2,0(sp)
+2000104e: 0521 addi a0,a0,8
+20001050: 0141 addi sp,sp,16
+20001052: 8082 ret
+20001054: 4501 li a0,0
+20001056: 2081 jal 20001096 <sbrk>
+20001058: 20002797 auipc a5,0x20002
+2000105c: 00a7a023 sw a0,0(a5) # 40003058 <managed_memory_start>
+20001060: 20002497 auipc s1,0x20002
+20001064: ff448493 addi s1,s1,-12 # 40003054 <last_valid_address>
+20001068: 4785 li a5,1
+2000106a: c088 sw a0,0(s1)
+2000106c: 00f92023 sw a5,0(s2)
+20001070: 8522 mv a0,s0
+20001072: 2015 jal 20001096 <sbrk>
+20001074: 4088 lw a0,0(s1)
+20001076: 008507b3 add a5,a0,s0
+2000107a: c09c sw a5,0(s1)
+2000107c: 00052023 sw zero,0(a0)
+20001080: c140 sw s0,4(a0)
+20001082: b7d1 j 20001046 <malloc+0x54>
+20001084: 40b2 lw ra,12(sp)
+20001086: 4422 lw s0,8(sp)
+20001088: 00052023 sw zero,0(a0)
+2000108c: 4492 lw s1,4(sp)
+2000108e: 4902 lw s2,0(sp)
+20001090: 0521 addi a0,a0,8
+20001092: 0141 addi sp,sp,16
+20001094: 8082 ret
+
+20001096 <sbrk>:
+20001096: 20002717 auipc a4,0x20002
+2000109a: fca70713 addi a4,a4,-54 # 40003060 <heap_ptr>
+2000109e: 431c lw a5,0(a4)
+200010a0: c789 beqz a5,200010aa <sbrk+0x14>
+200010a2: 953e add a0,a0,a5
+200010a4: c308 sw a0,0(a4)
+200010a6: 853e mv a0,a5
+200010a8: 8082 ret
+200010aa: 20002797 auipc a5,0x20002
+200010ae: fba78793 addi a5,a5,-70 # 40003064 <_end>
+200010b2: 953e add a0,a0,a5
+200010b4: c308 sw a0,0(a4)
+200010b6: 853e mv a0,a5
+200010b8: 8082 ret
+
+Disassembly of section .text.startup:
+
+200010ba <main>:
+200010ba: 7135 addi sp,sp,-160
+200010bc: 03000513 li a0,48
+200010c0: cf06 sw ra,156(sp)
+200010c2: cd22 sw s0,152(sp)
+200010c4: dae6 sw s9,116(sp)
+200010c6: cb26 sw s1,148(sp)
+200010c8: c94a sw s2,144(sp)
+200010ca: c74e sw s3,140(sp)
+200010cc: c552 sw s4,136(sp)
+200010ce: c356 sw s5,132(sp)
+200010d0: c15a sw s6,128(sp)
+200010d2: dede sw s7,124(sp)
+200010d4: dce2 sw s8,120(sp)
+200010d6: d8ea sw s10,112(sp)
+200010d8: d6ee sw s11,108(sp)
+200010da: 3f21 jal 20000ff2 <malloc>
+200010dc: 87aa mv a5,a0
+200010de: 20002417 auipc s0,0x20002
+200010e2: f6e40413 addi s0,s0,-146 # 4000304c <Next_Ptr_Glob>
+200010e6: 03000513 li a0,48
+200010ea: c01c sw a5,0(s0)
+200010ec: 3719 jal 20000ff2 <malloc>
+200010ee: 401c lw a5,0(s0)
+200010f0: 20002c97 auipc s9,0x20002
+200010f4: f60c8c93 addi s9,s9,-160 # 40003050 <Ptr_Glob>
+200010f8: 00aca023 sw a0,0(s9)
+200010fc: c11c sw a5,0(a0)
+200010fe: 4789 li a5,2
+20001100: c51c sw a5,8(a0)
+20001102: 02800793 li a5,40
+20001106: c55c sw a5,12(a0)
+20001108: 1ffff597 auipc a1,0x1ffff
+2000110c: 11458593 addi a1,a1,276 # 4000021c <uart_ctrl_addr+0x18>
+20001110: 00052223 sw zero,4(a0)
+20001114: 0541 addi a0,a0,16
+20001116: 31d9 jal 20000ddc <strcpy>
+20001118: 1ffff597 auipc a1,0x1ffff
+2000111c: 12458593 addi a1,a1,292 # 4000023c <uart_ctrl_addr+0x38>
+20001120: 1008 addi a0,sp,32
+20001122: 396d jal 20000ddc <strcpy>
+20001124: 47a9 li a5,10
+20001126: 1ffff717 auipc a4,0x1ffff
+2000112a: 7f670713 addi a4,a4,2038 # 4000091c <Arr_2_Glob>
+2000112e: 1ffff517 auipc a0,0x1ffff
+20001132: 3b250513 addi a0,a0,946 # 400004e0 <uart_ctrl_addr+0x2dc>
+20001136: 64f72e23 sw a5,1628(a4)
+2000113a: cbcff0ef jal ra,200005f6 <ee_printf>
+2000113e: 1ffff517 auipc a0,0x1ffff
+20001142: 11e50513 addi a0,a0,286 # 4000025c <uart_ctrl_addr+0x58>
+20001146: cb0ff0ef jal ra,200005f6 <ee_printf>
+2000114a: 1ffff517 auipc a0,0x1ffff
+2000114e: 39650513 addi a0,a0,918 # 400004e0 <uart_ctrl_addr+0x2dc>
+20001152: ca4ff0ef jal ra,200005f6 <ee_printf>
+20001156: 1ffff797 auipc a5,0x1ffff
+2000115a: 6ea7a783 lw a5,1770(a5) # 40000840 <rodata_end>
+2000115e: 50078763 beqz a5,2000166c <main+0x5b2>
+20001162: 1ffff517 auipc a0,0x1ffff
+20001166: 12a50513 addi a0,a0,298 # 4000028c <uart_ctrl_addr+0x88>
+2000116a: c8cff0ef jal ra,200005f6 <ee_printf>
+2000116e: 1ffff517 auipc a0,0x1ffff
+20001172: 37250513 addi a0,a0,882 # 400004e0 <uart_ctrl_addr+0x2dc>
+20001176: c80ff0ef jal ra,200005f6 <ee_printf>
+2000117a: 1ffff517 auipc a0,0x1ffff
+2000117e: 16e50513 addi a0,a0,366 # 400002e8 <uart_ctrl_addr+0xe4>
+20001182: c74ff0ef jal ra,200005f6 <ee_printf>
+20001186: 1ffff517 auipc a0,0x1ffff
+2000118a: 35a50513 addi a0,a0,858 # 400004e0 <uart_ctrl_addr+0x2dc>
+2000118e: c68ff0ef jal ra,200005f6 <ee_printf>
+20001192: 45a9 li a1,10
+20001194: 1ffff517 auipc a0,0x1ffff
+20001198: 18c50513 addi a0,a0,396 # 40000320 <uart_ctrl_addr+0x11c>
+2000119c: c5aff0ef jal ra,200005f6 <ee_printf>
+200011a0: 1ffff517 auipc a0,0x1ffff
+200011a4: 6a450513 addi a0,a0,1700 # 40000844 <data_end>
+200011a8: 3631 jal 20000cb4 <mytimes>
+200011aa: 1ffff797 auipc a5,0x1ffff
+200011ae: 69a78793 addi a5,a5,1690 # 40000844 <data_end>
+200011b2: 439c lw a5,0(a5)
+200011b4: 20002717 auipc a4,0x20002
+200011b8: e8870713 addi a4,a4,-376 # 4000303c <Begin_Time>
+200011bc: 4485 li s1,1
+200011be: c31c sw a5,0(a4)
+200011c0: 20002997 auipc s3,0x20002
+200011c4: e8198993 addi s3,s3,-383 # 40003041 <Ch_1_Glob>
+200011c8: 20002a17 auipc s4,0x20002
+200011cc: e7ca0a13 addi s4,s4,-388 # 40003044 <Bool_Glob>
+200011d0: 20002417 auipc s0,0x20002
+200011d4: e7040413 addi s0,s0,-400 # 40003040 <Ch_2_Glob>
+200011d8: 20002a97 auipc s5,0x20002
+200011dc: e70a8a93 addi s5,s5,-400 # 40003048 <Int_Glob>
+200011e0: 04100b93 li s7,65
+200011e4: 4b05 li s6,1
+200011e6: 1ffffd17 auipc s10,0x1ffff
+200011ea: 16ad0d13 addi s10,s10,362 # 40000350 <uart_ctrl_addr+0x14c>
+200011ee: 1ffffc17 auipc s8,0x1ffff
+200011f2: 182c0c13 addi s8,s8,386 # 40000370 <uart_ctrl_addr+0x16c>
+200011f6: 04200793 li a5,66
+200011fa: 85ea mv a1,s10
+200011fc: 0088 addi a0,sp,64
+200011fe: 00f40023 sb a5,0(s0)
+20001202: 01798023 sb s7,0(s3)
+20001206: 016a2023 sw s6,0(s4)
+2000120a: 3ec9 jal 20000ddc <strcpy>
+2000120c: 008c addi a1,sp,64
+2000120e: 1008 addi a0,sp,32
+20001210: ce5a sw s6,28(sp)
+20001212: 8ceff0ef jal ra,200002e0 <Func_2>
+20001216: 00153793 seqz a5,a0
+2000121a: 0830 addi a2,sp,24
+2000121c: 458d li a1,3
+2000121e: 00fa2023 sw a5,0(s4)
+20001222: 4509 li a0,2
+20001224: 479d li a5,7
+20001226: cc3e sw a5,24(sp)
+20001228: 84eff0ef jal ra,20000276 <Proc_7>
+2000122c: 46e2 lw a3,24(sp)
+2000122e: 460d li a2,3
+20001230: 1ffff597 auipc a1,0x1ffff
+20001234: 6ec58593 addi a1,a1,1772 # 4000091c <Arr_2_Glob>
+20001238: 1ffff517 auipc a0,0x1ffff
+2000123c: 61c50513 addi a0,a0,1564 # 40000854 <Arr_1_Glob>
+20001240: 83eff0ef jal ra,2000027e <Proc_8>
+20001244: 000ca503 lw a0,0(s9)
+20001248: ec3fe0ef jal ra,2000010a <Proc_1>
+2000124c: 00044703 lbu a4,0(s0)
+20001250: 04000793 li a5,64
+20001254: 40e7fa63 bgeu a5,a4,20001668 <main+0x5ae>
+20001258: 04100d93 li s11,65
+2000125c: 490d li s2,3
+2000125e: a809 j 20001270 <main+0x1b6>
+20001260: 00044703 lbu a4,0(s0)
+20001264: 001d8793 addi a5,s11,1
+20001268: 0ff7fd93 andi s11,a5,255
+2000126c: 03b76c63 bltu a4,s11,200012a4 <main+0x1ea>
+20001270: 04300593 li a1,67
+20001274: 856e mv a0,s11
+20001276: 84eff0ef jal ra,200002c4 <Func_1>
+2000127a: 4772 lw a4,28(sp)
+2000127c: fee512e3 bne a0,a4,20001260 <main+0x1a6>
+20001280: 086c addi a1,sp,28
+20001282: 4501 li a0,0
+20001284: fb7fe0ef jal ra,2000023a <Proc_6>
+20001288: 85e2 mv a1,s8
+2000128a: 0088 addi a0,sp,64
+2000128c: 3e81 jal 20000ddc <strcpy>
+2000128e: 00044703 lbu a4,0(s0)
+20001292: 001d8793 addi a5,s11,1
+20001296: 009aa023 sw s1,0(s5)
+2000129a: 0ff7fd93 andi s11,a5,255
+2000129e: 8926 mv s2,s1
+200012a0: fdb778e3 bgeu a4,s11,20001270 <main+0x1b6>
+200012a4: 00191793 slli a5,s2,0x1
+200012a8: 993e add s2,s2,a5
+200012aa: 4662 lw a2,24(sp)
+200012ac: 0009c703 lbu a4,0(s3)
+200012b0: 02c946b3 div a3,s2,a2
+200012b4: 87b6 mv a5,a3
+200012b6: 01771863 bne a4,s7,200012c6 <main+0x20c>
+200012ba: 000aa783 lw a5,0(s5)
+200012be: 00968713 addi a4,a3,9
+200012c2: 40f707b3 sub a5,a4,a5
+200012c6: 0485 addi s1,s1,1
+200012c8: 472d li a4,11
+200012ca: f2e496e3 bne s1,a4,200011f6 <main+0x13c>
+200012ce: 1ffff517 auipc a0,0x1ffff
+200012d2: 57650513 addi a0,a0,1398 # 40000844 <data_end>
+200012d6: c436 sw a3,8(sp)
+200012d8: c232 sw a2,4(sp)
+200012da: c63e sw a5,12(sp)
+200012dc: 1ffffb97 auipc s7,0x1ffff
+200012e0: 568b8b93 addi s7,s7,1384 # 40000844 <data_end>
+200012e4: 3ac1 jal 20000cb4 <mytimes>
+200012e6: 000ba703 lw a4,0(s7)
+200012ea: 20002b17 auipc s6,0x20002
+200012ee: d4eb0b13 addi s6,s6,-690 # 40003038 <End_Time>
+200012f2: 1ffff517 auipc a0,0x1ffff
+200012f6: 09e50513 addi a0,a0,158 # 40000390 <uart_ctrl_addr+0x18c>
+200012fa: 00eb2023 sw a4,0(s6)
+200012fe: af8ff0ef jal ra,200005f6 <ee_printf>
+20001302: 1ffff517 auipc a0,0x1ffff
+20001306: 1de50513 addi a0,a0,478 # 400004e0 <uart_ctrl_addr+0x2dc>
+2000130a: aecff0ef jal ra,200005f6 <ee_printf>
+2000130e: 1ffff517 auipc a0,0x1ffff
+20001312: 09250513 addi a0,a0,146 # 400003a0 <uart_ctrl_addr+0x19c>
+20001316: ae0ff0ef jal ra,200005f6 <ee_printf>
+2000131a: 1ffff517 auipc a0,0x1ffff
+2000131e: 1c650513 addi a0,a0,454 # 400004e0 <uart_ctrl_addr+0x2dc>
+20001322: ad4ff0ef jal ra,200005f6 <ee_printf>
+20001326: 000aa583 lw a1,0(s5)
+2000132a: 1ffff517 auipc a0,0x1ffff
+2000132e: 0ae50513 addi a0,a0,174 # 400003d8 <uart_ctrl_addr+0x1d4>
+20001332: 20002497 auipc s1,0x20002
+20001336: d0248493 addi s1,s1,-766 # 40003034 <User_Time>
+2000133a: abcff0ef jal ra,200005f6 <ee_printf>
+2000133e: 4595 li a1,5
+20001340: 1ffff517 auipc a0,0x1ffff
+20001344: 0b450513 addi a0,a0,180 # 400003f4 <uart_ctrl_addr+0x1f0>
+20001348: aaeff0ef jal ra,200005f6 <ee_printf>
+2000134c: 000a2583 lw a1,0(s4)
+20001350: 1ffff517 auipc a0,0x1ffff
+20001354: 0c050513 addi a0,a0,192 # 40000410 <uart_ctrl_addr+0x20c>
+20001358: a9eff0ef jal ra,200005f6 <ee_printf>
+2000135c: 4585 li a1,1
+2000135e: 1ffff517 auipc a0,0x1ffff
+20001362: 09650513 addi a0,a0,150 # 400003f4 <uart_ctrl_addr+0x1f0>
+20001366: a90ff0ef jal ra,200005f6 <ee_printf>
+2000136a: 0009c583 lbu a1,0(s3)
+2000136e: 1ffff517 auipc a0,0x1ffff
+20001372: 0be50513 addi a0,a0,190 # 4000042c <uart_ctrl_addr+0x228>
+20001376: a80ff0ef jal ra,200005f6 <ee_printf>
+2000137a: 04100593 li a1,65
+2000137e: 1ffff517 auipc a0,0x1ffff
+20001382: 0ca50513 addi a0,a0,202 # 40000448 <uart_ctrl_addr+0x244>
+20001386: a70ff0ef jal ra,200005f6 <ee_printf>
+2000138a: 00044583 lbu a1,0(s0)
+2000138e: 1ffff517 auipc a0,0x1ffff
+20001392: 0d650513 addi a0,a0,214 # 40000464 <uart_ctrl_addr+0x260>
+20001396: 20002417 auipc s0,0x20002
+2000139a: cb640413 addi s0,s0,-842 # 4000304c <Next_Ptr_Glob>
+2000139e: a58ff0ef jal ra,200005f6 <ee_printf>
+200013a2: 04200593 li a1,66
+200013a6: 1ffff517 auipc a0,0x1ffff
+200013aa: 0a250513 addi a0,a0,162 # 40000448 <uart_ctrl_addr+0x244>
+200013ae: a48ff0ef jal ra,200005f6 <ee_printf>
+200013b2: 030ba583 lw a1,48(s7)
+200013b6: 1ffff517 auipc a0,0x1ffff
+200013ba: 0ca50513 addi a0,a0,202 # 40000480 <uart_ctrl_addr+0x27c>
+200013be: a38ff0ef jal ra,200005f6 <ee_printf>
+200013c2: 459d li a1,7
+200013c4: 1ffff517 auipc a0,0x1ffff
+200013c8: 03050513 addi a0,a0,48 # 400003f4 <uart_ctrl_addr+0x1f0>
+200013cc: a2aff0ef jal ra,200005f6 <ee_printf>
+200013d0: 1ffff797 auipc a5,0x1ffff
+200013d4: 54c78793 addi a5,a5,1356 # 4000091c <Arr_2_Glob>
+200013d8: 65c7a583 lw a1,1628(a5)
+200013dc: 1ffff517 auipc a0,0x1ffff
+200013e0: 0c050513 addi a0,a0,192 # 4000049c <uart_ctrl_addr+0x298>
+200013e4: a12ff0ef jal ra,200005f6 <ee_printf>
+200013e8: 1ffff517 auipc a0,0x1ffff
+200013ec: 0d050513 addi a0,a0,208 # 400004b8 <uart_ctrl_addr+0x2b4>
+200013f0: a06ff0ef jal ra,200005f6 <ee_printf>
+200013f4: 1ffff517 auipc a0,0x1ffff
+200013f8: 0f050513 addi a0,a0,240 # 400004e4 <uart_ctrl_addr+0x2e0>
+200013fc: 9faff0ef jal ra,200005f6 <ee_printf>
+20001400: 000ca703 lw a4,0(s9)
+20001404: 1ffff517 auipc a0,0x1ffff
+20001408: 0ec50513 addi a0,a0,236 # 400004f0 <uart_ctrl_addr+0x2ec>
+2000140c: 430c lw a1,0(a4)
+2000140e: 9e8ff0ef jal ra,200005f6 <ee_printf>
+20001412: 1ffff517 auipc a0,0x1ffff
+20001416: 0fa50513 addi a0,a0,250 # 4000050c <uart_ctrl_addr+0x308>
+2000141a: 9dcff0ef jal ra,200005f6 <ee_printf>
+2000141e: 000ca703 lw a4,0(s9)
+20001422: 1ffff517 auipc a0,0x1ffff
+20001426: 11e50513 addi a0,a0,286 # 40000540 <uart_ctrl_addr+0x33c>
+2000142a: 434c lw a1,4(a4)
+2000142c: 9caff0ef jal ra,200005f6 <ee_printf>
+20001430: 4581 li a1,0
+20001432: 1ffff517 auipc a0,0x1ffff
+20001436: fc250513 addi a0,a0,-62 # 400003f4 <uart_ctrl_addr+0x1f0>
+2000143a: 9bcff0ef jal ra,200005f6 <ee_printf>
+2000143e: 000ca703 lw a4,0(s9)
+20001442: 1ffff517 auipc a0,0x1ffff
+20001446: 11a50513 addi a0,a0,282 # 4000055c <uart_ctrl_addr+0x358>
+2000144a: 470c lw a1,8(a4)
+2000144c: 9aaff0ef jal ra,200005f6 <ee_printf>
+20001450: 4589 li a1,2
+20001452: 1ffff517 auipc a0,0x1ffff
+20001456: fa250513 addi a0,a0,-94 # 400003f4 <uart_ctrl_addr+0x1f0>
+2000145a: 99cff0ef jal ra,200005f6 <ee_printf>
+2000145e: 000ca703 lw a4,0(s9)
+20001462: 1ffff517 auipc a0,0x1ffff
+20001466: 11650513 addi a0,a0,278 # 40000578 <uart_ctrl_addr+0x374>
+2000146a: 474c lw a1,12(a4)
+2000146c: 98aff0ef jal ra,200005f6 <ee_printf>
+20001470: 45c5 li a1,17
+20001472: 1ffff517 auipc a0,0x1ffff
+20001476: f8250513 addi a0,a0,-126 # 400003f4 <uart_ctrl_addr+0x1f0>
+2000147a: 97cff0ef jal ra,200005f6 <ee_printf>
+2000147e: 000ca583 lw a1,0(s9)
+20001482: 1ffff517 auipc a0,0x1ffff
+20001486: 11250513 addi a0,a0,274 # 40000594 <uart_ctrl_addr+0x390>
+2000148a: 05c1 addi a1,a1,16
+2000148c: 96aff0ef jal ra,200005f6 <ee_printf>
+20001490: 1ffff517 auipc a0,0x1ffff
+20001494: 12050513 addi a0,a0,288 # 400005b0 <uart_ctrl_addr+0x3ac>
+20001498: 95eff0ef jal ra,200005f6 <ee_printf>
+2000149c: 1ffff517 auipc a0,0x1ffff
+200014a0: 14c50513 addi a0,a0,332 # 400005e8 <uart_ctrl_addr+0x3e4>
+200014a4: 952ff0ef jal ra,200005f6 <ee_printf>
+200014a8: 4018 lw a4,0(s0)
+200014aa: 1ffff517 auipc a0,0x1ffff
+200014ae: 04650513 addi a0,a0,70 # 400004f0 <uart_ctrl_addr+0x2ec>
+200014b2: 430c lw a1,0(a4)
+200014b4: 942ff0ef jal ra,200005f6 <ee_printf>
+200014b8: 1ffff517 auipc a0,0x1ffff
+200014bc: 14450513 addi a0,a0,324 # 400005fc <uart_ctrl_addr+0x3f8>
+200014c0: 936ff0ef jal ra,200005f6 <ee_printf>
+200014c4: 4018 lw a4,0(s0)
+200014c6: 1ffff517 auipc a0,0x1ffff
+200014ca: 07a50513 addi a0,a0,122 # 40000540 <uart_ctrl_addr+0x33c>
+200014ce: 434c lw a1,4(a4)
+200014d0: 926ff0ef jal ra,200005f6 <ee_printf>
+200014d4: 4581 li a1,0
+200014d6: 1ffff517 auipc a0,0x1ffff
+200014da: f1e50513 addi a0,a0,-226 # 400003f4 <uart_ctrl_addr+0x1f0>
+200014de: 918ff0ef jal ra,200005f6 <ee_printf>
+200014e2: 4018 lw a4,0(s0)
+200014e4: 1ffff517 auipc a0,0x1ffff
+200014e8: 07850513 addi a0,a0,120 # 4000055c <uart_ctrl_addr+0x358>
+200014ec: 470c lw a1,8(a4)
+200014ee: 908ff0ef jal ra,200005f6 <ee_printf>
+200014f2: 4585 li a1,1
+200014f4: 1ffff517 auipc a0,0x1ffff
+200014f8: f0050513 addi a0,a0,-256 # 400003f4 <uart_ctrl_addr+0x1f0>
+200014fc: 8faff0ef jal ra,200005f6 <ee_printf>
+20001500: 4018 lw a4,0(s0)
+20001502: 1ffff517 auipc a0,0x1ffff
+20001506: 07650513 addi a0,a0,118 # 40000578 <uart_ctrl_addr+0x374>
+2000150a: 474c lw a1,12(a4)
+2000150c: 8eaff0ef jal ra,200005f6 <ee_printf>
+20001510: 45c9 li a1,18
+20001512: 1ffff517 auipc a0,0x1ffff
+20001516: ee250513 addi a0,a0,-286 # 400003f4 <uart_ctrl_addr+0x1f0>
+2000151a: 8dcff0ef jal ra,200005f6 <ee_printf>
+2000151e: 400c lw a1,0(s0)
+20001520: 1ffff517 auipc a0,0x1ffff
+20001524: 07450513 addi a0,a0,116 # 40000594 <uart_ctrl_addr+0x390>
+20001528: 20002417 auipc s0,0x20002
+2000152c: b1440413 addi s0,s0,-1260 # 4000303c <Begin_Time>
+20001530: 05c1 addi a1,a1,16
+20001532: 8c4ff0ef jal ra,200005f6 <ee_printf>
+20001536: 1ffff517 auipc a0,0x1ffff
+2000153a: 07a50513 addi a0,a0,122 # 400005b0 <uart_ctrl_addr+0x3ac>
+2000153e: 8b8ff0ef jal ra,200005f6 <ee_printf>
+20001542: 47b2 lw a5,12(sp)
+20001544: 1ffff517 auipc a0,0x1ffff
+20001548: 0f850513 addi a0,a0,248 # 4000063c <uart_ctrl_addr+0x438>
+2000154c: 85be mv a1,a5
+2000154e: 8a8ff0ef jal ra,200005f6 <ee_printf>
+20001552: 4595 li a1,5
+20001554: 1ffff517 auipc a0,0x1ffff
+20001558: ea050513 addi a0,a0,-352 # 400003f4 <uart_ctrl_addr+0x1f0>
+2000155c: 89aff0ef jal ra,200005f6 <ee_printf>
+20001560: 4612 lw a2,4(sp)
+20001562: 46a2 lw a3,8(sp)
+20001564: 1ffff517 auipc a0,0x1ffff
+20001568: 0f450513 addi a0,a0,244 # 40000658 <uart_ctrl_addr+0x454>
+2000156c: 40c90933 sub s2,s2,a2
+20001570: 00391793 slli a5,s2,0x3
+20001574: 41278933 sub s2,a5,s2
+20001578: 40d905b3 sub a1,s2,a3
+2000157c: 87aff0ef jal ra,200005f6 <ee_printf>
+20001580: 45b5 li a1,13
+20001582: 1ffff517 auipc a0,0x1ffff
+20001586: e7250513 addi a0,a0,-398 # 400003f4 <uart_ctrl_addr+0x1f0>
+2000158a: 86cff0ef jal ra,200005f6 <ee_printf>
+2000158e: 45e2 lw a1,24(sp)
+20001590: 1ffff517 auipc a0,0x1ffff
+20001594: 0e450513 addi a0,a0,228 # 40000674 <uart_ctrl_addr+0x470>
+20001598: 85eff0ef jal ra,200005f6 <ee_printf>
+2000159c: 459d li a1,7
+2000159e: 1ffff517 auipc a0,0x1ffff
+200015a2: e5650513 addi a0,a0,-426 # 400003f4 <uart_ctrl_addr+0x1f0>
+200015a6: 850ff0ef jal ra,200005f6 <ee_printf>
+200015aa: 45f2 lw a1,28(sp)
+200015ac: 1ffff517 auipc a0,0x1ffff
+200015b0: 0e450513 addi a0,a0,228 # 40000690 <uart_ctrl_addr+0x48c>
+200015b4: 842ff0ef jal ra,200005f6 <ee_printf>
+200015b8: 4585 li a1,1
+200015ba: 1ffff517 auipc a0,0x1ffff
+200015be: e3a50513 addi a0,a0,-454 # 400003f4 <uart_ctrl_addr+0x1f0>
+200015c2: 834ff0ef jal ra,200005f6 <ee_printf>
+200015c6: 100c addi a1,sp,32
+200015c8: 1ffff517 auipc a0,0x1ffff
+200015cc: 0e450513 addi a0,a0,228 # 400006ac <uart_ctrl_addr+0x4a8>
+200015d0: 826ff0ef jal ra,200005f6 <ee_printf>
+200015d4: 1ffff517 auipc a0,0x1ffff
+200015d8: 0f450513 addi a0,a0,244 # 400006c8 <uart_ctrl_addr+0x4c4>
+200015dc: 81aff0ef jal ra,200005f6 <ee_printf>
+200015e0: 008c addi a1,sp,64
+200015e2: 1ffff517 auipc a0,0x1ffff
+200015e6: 11e50513 addi a0,a0,286 # 40000700 <uart_ctrl_addr+0x4fc>
+200015ea: 80cff0ef jal ra,200005f6 <ee_printf>
+200015ee: 1ffff517 auipc a0,0x1ffff
+200015f2: 12e50513 addi a0,a0,302 # 4000071c <uart_ctrl_addr+0x518>
+200015f6: 800ff0ef jal ra,200005f6 <ee_printf>
+200015fa: 1ffff517 auipc a0,0x1ffff
+200015fe: ee650513 addi a0,a0,-282 # 400004e0 <uart_ctrl_addr+0x2dc>
+20001602: ff5fe0ef jal ra,200005f6 <ee_printf>
+20001606: 4018 lw a4,0(s0)
+20001608: 000b2783 lw a5,0(s6)
+2000160c: 1ffff517 auipc a0,0x1ffff
+20001610: 14850513 addi a0,a0,328 # 40000754 <uart_ctrl_addr+0x550>
+20001614: 8f99 sub a5,a5,a4
+20001616: c09c sw a5,0(s1)
+20001618: fdffe0ef jal ra,200005f6 <ee_printf>
+2000161c: 1ffff517 auipc a0,0x1ffff
+20001620: 17050513 addi a0,a0,368 # 4000078c <uart_ctrl_addr+0x588>
+20001624: fd3fe0ef jal ra,200005f6 <ee_printf>
+20001628: 4094 lw a3,0(s1)
+2000162a: 000b2603 lw a2,0(s6)
+2000162e: 400c lw a1,0(s0)
+20001630: 1ffff517 auipc a0,0x1ffff
+20001634: 17c50513 addi a0,a0,380 # 400007ac <uart_ctrl_addr+0x5a8>
+20001638: fbffe0ef jal ra,200005f6 <ee_printf>
+2000163c: 1ffff517 auipc a0,0x1ffff
+20001640: ea450513 addi a0,a0,-348 # 400004e0 <uart_ctrl_addr+0x2dc>
+20001644: fb3fe0ef jal ra,200005f6 <ee_printf>
+20001648: 40fa lw ra,156(sp)
+2000164a: 446a lw s0,152(sp)
+2000164c: 44da lw s1,148(sp)
+2000164e: 494a lw s2,144(sp)
+20001650: 49ba lw s3,140(sp)
+20001652: 4a2a lw s4,136(sp)
+20001654: 4a9a lw s5,132(sp)
+20001656: 4b0a lw s6,128(sp)
+20001658: 5bf6 lw s7,124(sp)
+2000165a: 5c66 lw s8,120(sp)
+2000165c: 5cd6 lw s9,116(sp)
+2000165e: 5d46 lw s10,112(sp)
+20001660: 5db6 lw s11,108(sp)
+20001662: 4501 li a0,0
+20001664: 610d addi sp,sp,160
+20001666: 8082 ret
+20001668: 4925 li s2,9
+2000166a: b181 j 200012aa <main+0x1f0>
+2000166c: 1ffff517 auipc a0,0x1ffff
+20001670: c4c50513 addi a0,a0,-948 # 400002b8 <uart_ctrl_addr+0xb4>
+20001674: f83fe0ef jal ra,200005f6 <ee_printf>
+20001678: 1ffff517 auipc a0,0x1ffff
+2000167c: e6850513 addi a0,a0,-408 # 400004e0 <uart_ctrl_addr+0x2dc>
+20001680: f77fe0ef jal ra,200005f6 <ee_printf>
+20001684: bcdd j 2000117a <main+0xc0>
+
+Disassembly of section .text_itim:
+
+08000000 <spi_quad_mode>:
+ 8000000: 1141 addi sp,sp,-16
+ 8000002: 0ff0000f fence
+ 8000006: 0000100f fence.i
+ 800000a: 4114 lw a3,0(a0)
+ 800000c: 4705 li a4,1
+ 800000e: 4785 li a5,1
+ 8000010: 00e68663 beq a3,a4,800001c <spi_quad_mode+0x1c>
+ 8000014: c11c sw a5,0(a0)
+ 8000016: 4118 lw a4,0(a0)
+ 8000018: fef71ee3 bne a4,a5,8000014 <spi_quad_mode+0x14>
+ 800001c: 5138 lw a4,96(a0)
+ 800001e: 06050793 addi a5,a0,96
+ 8000022: c709 beqz a4,800002c <spi_quad_mode+0x2c>
+ 8000024: 0007a023 sw zero,0(a5)
+ 8000028: 4398 lw a4,0(a5)
+ 800002a: ff6d bnez a4,8000024 <spi_quad_mode+0x24>
+ 800002c: 04850693 addi a3,a0,72
+ 8000030: 4298 lw a4,0(a3)
+ 8000032: fe074fe3 bltz a4,8000030 <spi_quad_mode+0x30>
+ 8000036: 03500713 li a4,53
+ 800003a: c538 sw a4,72(a0)
+ 800003c: 000b3737 lui a4,0xb3
+ 8000040: a4770713 addi a4,a4,-1465 # b2a47 <spi_quad_mode-0x7f4d5b9>
+ 8000044: c63a sw a4,12(sp)
+ 8000046: 5174 lw a3,100(a0)
+ 8000048: 4632 lw a2,12(sp)
+ 800004a: 06450713 addi a4,a0,100
+ 800004e: 00d60863 beq a2,a3,800005e <spi_quad_mode+0x5e>
+ 8000052: 46b2 lw a3,12(sp)
+ 8000054: c314 sw a3,0(a4)
+ 8000056: 4310 lw a2,0(a4)
+ 8000058: 46b2 lw a3,12(sp)
+ 800005a: fed61ce3 bne a2,a3,8000052 <spi_quad_mode+0x52>
+ 800005e: 5130 lw a2,96(a0)
+ 8000060: 4685 li a3,1
+ 8000062: 4705 li a4,1
+ 8000064: 00d60663 beq a2,a3,8000070 <spi_quad_mode+0x70>
+ 8000068: c398 sw a4,0(a5)
+ 800006a: 4394 lw a3,0(a5)
+ 800006c: fee69ee3 bne a3,a4,8000068 <spi_quad_mode+0x68>
+ 8000070: 0141 addi sp,sp,16
+ 8000072: 8082 ret
+
+Disassembly of section .rodata:
+
+40000000 <rodata_start>:
+40000000: 0770 addi a2,sp,908
+40000002: e000 fsw fs0,0(s0)
+40000004: 070c addi a1,sp,896
+40000006: e000 fsw fs0,0(s0)
+40000008: 070c addi a1,sp,896
+4000000a: e000 fsw fs0,0(s0)
+4000000c: 0768 addi a0,sp,908
+4000000e: e000 fsw fs0,0(s0)
+40000010: 070c addi a1,sp,896
+40000012: e000 fsw fs0,0(s0)
+40000014: 070c addi a1,sp,896
+40000016: e000 fsw fs0,0(s0)
+40000018: 070c addi a1,sp,896
+4000001a: e000 fsw fs0,0(s0)
+4000001c: 070c addi a1,sp,896
+4000001e: e000 fsw fs0,0(s0)
+40000020: 070c addi a1,sp,896
+40000022: e000 fsw fs0,0(s0)
+40000024: 070c addi a1,sp,896
+40000026: e000 fsw fs0,0(s0)
+40000028: 070c addi a1,sp,896
+4000002a: e000 fsw fs0,0(s0)
+4000002c: 0760 addi s0,sp,908
+4000002e: e000 fsw fs0,0(s0)
+40000030: 070c addi a1,sp,896
+40000032: e000 fsw fs0,0(s0)
+40000034: 0758 addi a4,sp,900
+40000036: e000 fsw fs0,0(s0)
+40000038: 070c addi a1,sp,896
+4000003a: e000 fsw fs0,0(s0)
+4000003c: 070c addi a1,sp,896
+4000003e: e000 fsw fs0,0(s0)
+40000040: 0750 addi a2,sp,900
+40000042: e000 fsw fs0,0(s0)
+40000044: 090c addi a1,sp,144
+40000046: e000 fsw fs0,0(s0)
+40000048: 075a slli a4,a4,0x16
+4000004a: e000 fsw fs0,0(s0)
+4000004c: 075a slli a4,a4,0x16
+4000004e: e000 fsw fs0,0(s0)
+40000050: 075a slli a4,a4,0x16
+40000052: e000 fsw fs0,0(s0)
+40000054: 075a slli a4,a4,0x16
+40000056: e000 fsw fs0,0(s0)
+40000058: 075a slli a4,a4,0x16
+4000005a: e000 fsw fs0,0(s0)
+4000005c: 075a slli a4,a4,0x16
+4000005e: e000 fsw fs0,0(s0)
+40000060: 075a slli a4,a4,0x16
+40000062: e000 fsw fs0,0(s0)
+40000064: 075a slli a4,a4,0x16
+40000066: e000 fsw fs0,0(s0)
+40000068: 075a slli a4,a4,0x16
+4000006a: e000 fsw fs0,0(s0)
+4000006c: 075a slli a4,a4,0x16
+4000006e: e000 fsw fs0,0(s0)
+40000070: 075a slli a4,a4,0x16
+40000072: e000 fsw fs0,0(s0)
+40000074: 075a slli a4,a4,0x16
+40000076: e000 fsw fs0,0(s0)
+40000078: 075a slli a4,a4,0x16
+4000007a: e000 fsw fs0,0(s0)
+4000007c: 075a slli a4,a4,0x16
+4000007e: e000 fsw fs0,0(s0)
+40000080: 075a slli a4,a4,0x16
+40000082: e000 fsw fs0,0(s0)
+40000084: 075a slli a4,a4,0x16
+40000086: e000 fsw fs0,0(s0)
+40000088: 075a slli a4,a4,0x16
+4000008a: e000 fsw fs0,0(s0)
+4000008c: 075a slli a4,a4,0x16
+4000008e: e000 fsw fs0,0(s0)
+40000090: 075a slli a4,a4,0x16
+40000092: e000 fsw fs0,0(s0)
+40000094: 075a slli a4,a4,0x16
+40000096: e000 fsw fs0,0(s0)
+40000098: 075a slli a4,a4,0x16
+4000009a: e000 fsw fs0,0(s0)
+4000009c: 075a slli a4,a4,0x16
+4000009e: e000 fsw fs0,0(s0)
+400000a0: 0900 addi s0,sp,144
+400000a2: e000 fsw fs0,0(s0)
+400000a4: 075a slli a4,a4,0x16
+400000a6: e000 fsw fs0,0(s0)
+400000a8: 075a slli a4,a4,0x16
+400000aa: e000 fsw fs0,0(s0)
+400000ac: 075a slli a4,a4,0x16
+400000ae: e000 fsw fs0,0(s0)
+400000b0: 075a slli a4,a4,0x16
+400000b2: e000 fsw fs0,0(s0)
+400000b4: 075a slli a4,a4,0x16
+400000b6: e000 fsw fs0,0(s0)
+400000b8: 075a slli a4,a4,0x16
+400000ba: e000 fsw fs0,0(s0)
+400000bc: 075a slli a4,a4,0x16
+400000be: e000 fsw fs0,0(s0)
+400000c0: 075a slli a4,a4,0x16
+400000c2: e000 fsw fs0,0(s0)
+400000c4: 0b6c addi a1,sp,412
+400000c6: e000 fsw fs0,0(s0)
+400000c8: 075a slli a4,a4,0x16
+400000ca: e000 fsw fs0,0(s0)
+400000cc: 08be slli a7,a7,0xf
+400000ce: e000 fsw fs0,0(s0)
+400000d0: 08b0 addi a2,sp,88
+400000d2: e000 fsw fs0,0(s0)
+400000d4: 075a slli a4,a4,0x16
+400000d6: e000 fsw fs0,0(s0)
+400000d8: 075a slli a4,a4,0x16
+400000da: e000 fsw fs0,0(s0)
+400000dc: 075a slli a4,a4,0x16
+400000de: e000 fsw fs0,0(s0)
+400000e0: 075a slli a4,a4,0x16
+400000e2: e000 fsw fs0,0(s0)
+400000e4: 08b0 addi a2,sp,88
+400000e6: e000 fsw fs0,0(s0)
+400000e8: 075a slli a4,a4,0x16
+400000ea: e000 fsw fs0,0(s0)
+400000ec: 075a slli a4,a4,0x16
+400000ee: e000 fsw fs0,0(s0)
+400000f0: 075a slli a4,a4,0x16
+400000f2: e000 fsw fs0,0(s0)
+400000f4: 075a slli a4,a4,0x16
+400000f6: e000 fsw fs0,0(s0)
+400000f8: 075a slli a4,a4,0x16
+400000fa: e000 fsw fs0,0(s0)
+400000fc: 08a8 addi a0,sp,88
+400000fe: e000 fsw fs0,0(s0)
+40000100: 088a slli a7,a7,0x2
+40000102: e000 fsw fs0,0(s0)
+40000104: 075a slli a4,a4,0x16
+40000106: e000 fsw fs0,0(s0)
+40000108: 075a slli a4,a4,0x16
+4000010a: e000 fsw fs0,0(s0)
+4000010c: 0810 addi a2,sp,16
+4000010e: e000 fsw fs0,0(s0)
+40000110: 075a slli a4,a4,0x16
+40000112: e000 fsw fs0,0(s0)
+40000114: 0806 slli a6,a6,0x1
+40000116: e000 fsw fs0,0(s0)
+40000118: 075a slli a4,a4,0x16
+4000011a: e000 fsw fs0,0(s0)
+4000011c: 075a slli a4,a4,0x16
+4000011e: e000 fsw fs0,0(s0)
+40000120: 07ea slli a5,a5,0x1a
+40000122: e000 fsw fs0,0(s0)
+40000124: 095c addi a5,sp,148
+40000126: e000 fsw fs0,0(s0)
+40000128: 0676 slli a2,a2,0x1d
+4000012a: e000 fsw fs0,0(s0)
+4000012c: 0676 slli a2,a2,0x1d
+4000012e: e000 fsw fs0,0(s0)
+40000130: 0676 slli a2,a2,0x1d
+40000132: e000 fsw fs0,0(s0)
+40000134: 0676 slli a2,a2,0x1d
+40000136: e000 fsw fs0,0(s0)
+40000138: 0676 slli a2,a2,0x1d
+4000013a: e000 fsw fs0,0(s0)
+4000013c: 0676 slli a2,a2,0x1d
+4000013e: e000 fsw fs0,0(s0)
+40000140: 0676 slli a2,a2,0x1d
+40000142: e000 fsw fs0,0(s0)
+40000144: 0676 slli a2,a2,0x1d
+40000146: e000 fsw fs0,0(s0)
+40000148: 0676 slli a2,a2,0x1d
+4000014a: e000 fsw fs0,0(s0)
+4000014c: 0676 slli a2,a2,0x1d
+4000014e: e000 fsw fs0,0(s0)
+40000150: 0676 slli a2,a2,0x1d
+40000152: e000 fsw fs0,0(s0)
+40000154: 0676 slli a2,a2,0x1d
+40000156: e000 fsw fs0,0(s0)
+40000158: 0676 slli a2,a2,0x1d
+4000015a: e000 fsw fs0,0(s0)
+4000015c: 0676 slli a2,a2,0x1d
+4000015e: e000 fsw fs0,0(s0)
+40000160: 0676 slli a2,a2,0x1d
+40000162: e000 fsw fs0,0(s0)
+40000164: 0676 slli a2,a2,0x1d
+40000166: e000 fsw fs0,0(s0)
+40000168: 0676 slli a2,a2,0x1d
+4000016a: e000 fsw fs0,0(s0)
+4000016c: 0676 slli a2,a2,0x1d
+4000016e: e000 fsw fs0,0(s0)
+40000170: 0676 slli a2,a2,0x1d
+40000172: e000 fsw fs0,0(s0)
+40000174: 0676 slli a2,a2,0x1d
+40000176: e000 fsw fs0,0(s0)
+40000178: 0676 slli a2,a2,0x1d
+4000017a: e000 fsw fs0,0(s0)
+4000017c: 0676 slli a2,a2,0x1d
+4000017e: e000 fsw fs0,0(s0)
+40000180: 0954 addi a3,sp,148
+40000182: e000 fsw fs0,0(s0)
+40000184: 0676 slli a2,a2,0x1d
+40000186: e000 fsw fs0,0(s0)
+40000188: 0676 slli a2,a2,0x1d
+4000018a: e000 fsw fs0,0(s0)
+4000018c: 0676 slli a2,a2,0x1d
+4000018e: e000 fsw fs0,0(s0)
+40000190: 0676 slli a2,a2,0x1d
+40000192: e000 fsw fs0,0(s0)
+40000194: 0676 slli a2,a2,0x1d
+40000196: e000 fsw fs0,0(s0)
+40000198: 0676 slli a2,a2,0x1d
+4000019a: e000 fsw fs0,0(s0)
+4000019c: 0676 slli a2,a2,0x1d
+4000019e: e000 fsw fs0,0(s0)
+400001a0: 0676 slli a2,a2,0x1d
+400001a2: e000 fsw fs0,0(s0)
+400001a4: 0960 addi s0,sp,156
+400001a6: e000 fsw fs0,0(s0)
+400001a8: 0676 slli a2,a2,0x1d
+400001aa: e000 fsw fs0,0(s0)
+400001ac: 07dc addi a5,sp,964
+400001ae: e000 fsw fs0,0(s0)
+400001b0: 0934 addi a3,sp,152
+400001b2: e000 fsw fs0,0(s0)
+400001b4: 0676 slli a2,a2,0x1d
+400001b6: e000 fsw fs0,0(s0)
+400001b8: 0676 slli a2,a2,0x1d
+400001ba: e000 fsw fs0,0(s0)
+400001bc: 0676 slli a2,a2,0x1d
+400001be: e000 fsw fs0,0(s0)
+400001c0: 0676 slli a2,a2,0x1d
+400001c2: e000 fsw fs0,0(s0)
+400001c4: 0934 addi a3,sp,152
+400001c6: e000 fsw fs0,0(s0)
+400001c8: 0676 slli a2,a2,0x1d
+400001ca: e000 fsw fs0,0(s0)
+400001cc: 0676 slli a2,a2,0x1d
+400001ce: e000 fsw fs0,0(s0)
+400001d0: 0676 slli a2,a2,0x1d
+400001d2: e000 fsw fs0,0(s0)
+400001d4: 0676 slli a2,a2,0x1d
+400001d6: e000 fsw fs0,0(s0)
+400001d8: 0676 slli a2,a2,0x1d
+400001da: e000 fsw fs0,0(s0)
+400001dc: 0950 addi a2,sp,148
+400001de: e000 fsw fs0,0(s0)
+400001e0: 07a8 addi a0,sp,968
+400001e2: e000 fsw fs0,0(s0)
+400001e4: 0676 slli a2,a2,0x1d
+400001e6: e000 fsw fs0,0(s0)
+400001e8: 0676 slli a2,a2,0x1d
+400001ea: e000 fsw fs0,0(s0)
+400001ec: 072e slli a4,a4,0xb
+400001ee: e000 fsw fs0,0(s0)
+400001f0: 0676 slli a2,a2,0x1d
+400001f2: e000 fsw fs0,0(s0)
+400001f4: 0b30 addi a2,sp,408
+400001f6: e000 fsw fs0,0(s0)
+400001f8: 0676 slli a2,a2,0x1d
+400001fa: e000 fsw fs0,0(s0)
+400001fc: 0676 slli a2,a2,0x1d
+400001fe: e000 fsw fs0,0(s0)
+40000200: 0b2c addi a1,sp,408
+40000202: e000 fsw fs0,0(s0)
+
+40000204 <uart_ctrl_addr>:
+40000204: 3000 fld fs0,32(s0)
+40000206: 1001 c.nop -32
+40000208: 3000 fld fs0,32(s0)
+4000020a: 1002 c.slli zero,0x20
+4000020c: 3000 fld fs0,32(s0)
+4000020e: 30001003 lh zero,768(zero) # 300 <spi_quad_mode-0x7fffd00>
+40000212: 1004 addi s1,sp,32
+40000214: 3000 fld fs0,32(s0)
+40000216: 1005 c.nop -31
+40000218: 3000 fld fs0,32(s0)
+4000021a: 1006 c.slli zero,0x21
+4000021c: 4844 lw s1,20(s0)
+4000021e: 5952 lw s2,52(sp)
+40000220: 4e4f5453 0x4e4f5453
+40000224: 2045 jal 400002c4 <uart_ctrl_addr+0xc0>
+40000226: 5250 lw a2,36(a2)
+40000228: 4152474f fnmadd.s fa4,ft4,fs5,fs0,rmm
+4000022c: 2c4d jal 400004de <uart_ctrl_addr+0x2da>
+4000022e: 5320 lw s0,96(a4)
+40000230: 20454d4f fnmadd.s fs10,fa0,ft4,ft4,rmm
+40000234: 49525453 0x49525453
+40000238: 474e lw a4,208(sp)
+4000023a: 0000 unimp
+4000023c: 4844 lw s1,20(s0)
+4000023e: 5952 lw s2,52(sp)
+40000240: 4e4f5453 0x4e4f5453
+40000244: 2045 jal 400002e4 <uart_ctrl_addr+0xe0>
+40000246: 5250 lw a2,36(a2)
+40000248: 4152474f fnmadd.s fa4,ft4,fs5,fs0,rmm
+4000024c: 2c4d jal 400004fe <uart_ctrl_addr+0x2fa>
+4000024e: 3120 fld fs0,96(a0)
+40000250: 20545327 0x20545327
+40000254: 49525453 0x49525453
+40000258: 474e lw a4,208(sp)
+4000025a: 0000 unimp
+4000025c: 6844 flw fs1,20(s0)
+4000025e: 7972 flw fs2,60(sp)
+40000260: 6e6f7473 csrrci s0,0x6e6,30
+40000264: 2065 jal 4000030c <uart_ctrl_addr+0x108>
+40000266: 6542 flw fa0,16(sp)
+40000268: 636e flw ft6,216(sp)
+4000026a: 6d68 flw fa0,92(a0)
+4000026c: 7261 lui tp,0xffff8
+4000026e: 56202c6b 0x56202c6b
+40000272: 7265 lui tp,0xffff9
+40000274: 6e6f6973 csrrsi s2,0x6e6,30
+40000278: 3220 fld fs0,96(a2)
+4000027a: 312e fld ft2,232(sp)
+4000027c: 2820 fld fs0,80(s0)
+4000027e: 614c flw fa1,4(a0)
+40000280: 676e flw fa4,216(sp)
+40000282: 6175 addi sp,sp,368
+40000284: 203a6567 0x203a6567
+40000288: 000a2943 fmadd.s fs2,fs4,ft0,ft0,rdn
+4000028c: 7250 flw fa2,36(a2)
+4000028e: 6172676f jal a4,400270a4 <_end+0x24040>
+40000292: 206d jal 4000033c <uart_ctrl_addr+0x138>
+40000294: 706d6f63 bltu s10,t1,400009b2 <Arr_2_Glob+0x96>
+40000298: 6c69 lui s8,0x1a
+4000029a: 6465 lui s0,0x19
+4000029c: 7720 flw fs0,104(a4)
+4000029e: 7469 lui s0,0xffffa
+400002a0: 2068 fld fa0,192(s0)
+400002a2: 67657227 0x67657227
+400002a6: 7369 lui t1,0xffffa
+400002a8: 6574 flw fa3,76(a0)
+400002aa: 2772 fld fa4,280(sp)
+400002ac: 6120 flw fs0,64(a0)
+400002ae: 7474 flw fa3,108(s0)
+400002b0: 6972 flw fs2,28(sp)
+400002b2: 7562 flw fa0,56(sp)
+400002b4: 6574 flw fa3,76(a0)
+400002b6: 000a c.slli zero,0x2
+400002b8: 7250 flw fa2,36(a2)
+400002ba: 6172676f jal a4,400270d0 <_end+0x2406c>
+400002be: 206d jal 40000368 <uart_ctrl_addr+0x164>
+400002c0: 706d6f63 bltu s10,t1,400009de <Arr_2_Glob+0xc2>
+400002c4: 6c69 lui s8,0x1a
+400002c6: 6465 lui s0,0x19
+400002c8: 7720 flw fs0,104(a4)
+400002ca: 7469 lui s0,0xffffa
+400002cc: 6f68 flw fa0,92(a4)
+400002ce: 7475 lui s0,0xffffd
+400002d0: 2720 fld fs0,72(a4)
+400002d2: 6572 flw fa0,28(sp)
+400002d4: 74736967 0x74736967
+400002d8: 7265 lui tp,0xffff9
+400002da: 74612027 fsw ft6,1856(sp)
+400002de: 7274 flw fa3,100(a2)
+400002e0: 6269 lui tp,0x1a
+400002e2: 7475 lui s0,0xffffd
+400002e4: 0a65 addi s4,s4,25
+400002e6: 0000 unimp
+400002e8: 6c50 flw fa2,28(s0)
+400002ea: 6165 addi sp,sp,112
+400002ec: 67206573 csrrsi a0,0x672,0
+400002f0: 7669 lui a2,0xffffa
+400002f2: 2065 jal 4000039a <uart_ctrl_addr+0x196>
+400002f4: 6874 flw fa3,84(s0)
+400002f6: 2065 jal 4000039e <uart_ctrl_addr+0x19a>
+400002f8: 756e flw fa0,248(sp)
+400002fa: 626d lui tp,0x1b
+400002fc: 7265 lui tp,0xffff9
+400002fe: 6f20 flw fs0,88(a4)
+40000300: 2066 fld ft0,88(sp)
+40000302: 7572 flw fa0,60(sp)
+40000304: 736e flw ft6,248(sp)
+40000306: 7420 flw fs0,104(s0)
+40000308: 7268 flw fa0,100(a2)
+4000030a: 6867756f jal a0,40077990 <_end+0x7492c>
+4000030e: 7420 flw fs0,104(s0)
+40000310: 6568 flw fa0,76(a0)
+40000312: 6220 flw fs0,64(a2)
+40000314: 6e65 lui t3,0x19
+40000316: 616d6863 bltu s10,s6,40000926 <Arr_2_Glob+0xa>
+4000031a: 6b72 flw fs6,28(sp)
+4000031c: 203a fld ft0,392(sp)
+4000031e: 0000 unimp
+40000320: 7845 lui a6,0xffff1
+40000322: 6365 lui t1,0x19
+40000324: 7475 lui s0,0xffffd
+40000326: 6f69 lui t5,0x1a
+40000328: 206e fld ft0,216(sp)
+4000032a: 72617473 csrrci s0,0x726,2
+4000032e: 7374 flw fa3,100(a4)
+40000330: 202c fld fa1,64(s0)
+40000332: 6425 lui s0,0x9
+40000334: 7220 flw fs0,96(a2)
+40000336: 6e75 lui t3,0x1d
+40000338: 68742073 csrs 0x687,s0
+4000033c: 6f72 flw ft10,28(sp)
+4000033e: 6775 lui a4,0x1d
+40000340: 2068 fld fa0,192(s0)
+40000342: 6844 flw fs1,20(s0)
+40000344: 7972 flw fs2,60(sp)
+40000346: 6e6f7473 csrrci s0,0x6e6,30
+4000034a: 0a65 addi s4,s4,25
+4000034c: 0000 unimp
+4000034e: 0000 unimp
+40000350: 4844 lw s1,20(s0)
+40000352: 5952 lw s2,52(sp)
+40000354: 4e4f5453 0x4e4f5453
+40000358: 2045 jal 400003f8 <uart_ctrl_addr+0x1f4>
+4000035a: 5250 lw a2,36(a2)
+4000035c: 4152474f fnmadd.s fa4,ft4,fs5,fs0,rmm
+40000360: 2c4d jal 40000612 <uart_ctrl_addr+0x40e>
+40000362: 3220 fld fs0,96(a2)
+40000364: 20444e27 fsq ft4,540(s0) # 921c <spi_quad_mode-0x7ff6de4>
+40000368: 49525453 0x49525453
+4000036c: 474e lw a4,208(sp)
+4000036e: 0000 unimp
+40000370: 4844 lw s1,20(s0)
+40000372: 5952 lw s2,52(sp)
+40000374: 4e4f5453 0x4e4f5453
+40000378: 2045 jal 40000418 <uart_ctrl_addr+0x214>
+4000037a: 5250 lw a2,36(a2)
+4000037c: 4152474f fnmadd.s fa4,ft4,fs5,fs0,rmm
+40000380: 2c4d jal 40000632 <uart_ctrl_addr+0x42e>
+40000382: 3320 fld fs0,96(a4)
+40000384: 20445227 0x20445227
+40000388: 49525453 0x49525453
+4000038c: 474e lw a4,208(sp)
+4000038e: 0000 unimp
+40000390: 7845 lui a6,0xffff1
+40000392: 6365 lui t1,0x19
+40000394: 7475 lui s0,0xffffd
+40000396: 6f69 lui t5,0x1a
+40000398: 206e fld ft0,216(sp)
+4000039a: 6e65 lui t3,0x19
+4000039c: 7364 flw fs1,100(a4)
+4000039e: 000a c.slli zero,0x2
+400003a0: 6946 flw fs2,80(sp)
+400003a2: 616e flw ft2,216(sp)
+400003a4: 206c fld fa1,192(s0)
+400003a6: 6176 flw ft2,92(sp)
+400003a8: 756c flw fa1,108(a0)
+400003aa: 7365 lui t1,0xffff9
+400003ac: 6f20 flw fs0,88(a4)
+400003ae: 2066 fld ft0,88(sp)
+400003b0: 6874 flw fa3,84(s0)
+400003b2: 2065 jal 4000045a <uart_ctrl_addr+0x256>
+400003b4: 6176 flw ft2,92(sp)
+400003b6: 6972 flw fs2,28(sp)
+400003b8: 6261 lui tp,0x18
+400003ba: 656c flw fa1,76(a0)
+400003bc: 73752073 csrs 0x737,a0
+400003c0: 6465 lui s0,0x19
+400003c2: 6920 flw fs0,80(a0)
+400003c4: 206e fld ft0,216(sp)
+400003c6: 6874 flw fa3,84(s0)
+400003c8: 2065 jal 40000470 <uart_ctrl_addr+0x26c>
+400003ca: 6562 flw fa0,24(sp)
+400003cc: 636e flw ft6,216(sp)
+400003ce: 6d68 flw fa0,92(a0)
+400003d0: 7261 lui tp,0xffff8
+400003d2: 000a3a6b 0xa3a6b
+400003d6: 0000 unimp
+400003d8: 6e49 lui t3,0x12
+400003da: 5f74 lw a3,124(a4)
+400003dc: 626f6c47 fmsub.d fs8,ft10,ft6,fa2,unknown
+400003e0: 203a fld ft0,392(sp)
+400003e2: 2020 fld fs0,64(s0)
+400003e4: 2020 fld fs0,64(s0)
+400003e6: 2020 fld fs0,64(s0)
+400003e8: 2020 fld fs0,64(s0)
+400003ea: 2020 fld fs0,64(s0)
+400003ec: 2520 fld fs0,72(a0)
+400003ee: 0a64 addi s1,sp,284
+400003f0: 0000 unimp
+400003f2: 0000 unimp
+400003f4: 2020 fld fs0,64(s0)
+400003f6: 2020 fld fs0,64(s0)
+400003f8: 2020 fld fs0,64(s0)
+400003fa: 2020 fld fs0,64(s0)
+400003fc: 756f6873 csrrsi a6,0x756,30
+40000400: 646c flw fa1,76(s0)
+40000402: 6220 flw fs0,64(a2)
+40000404: 3a65 jal 3ffffdbc <data_load_start+0x1fffde82>
+40000406: 2020 fld fs0,64(s0)
+40000408: 2520 fld fs0,72(a0)
+4000040a: 0a64 addi s1,sp,284
+4000040c: 0000 unimp
+4000040e: 0000 unimp
+40000410: 6f42 flw ft10,16(sp)
+40000412: 475f6c6f jal s8,400f7086 <_end+0xf4022>
+40000416: 6f6c flw fa1,92(a4)
+40000418: 3a62 fld fs4,56(sp)
+4000041a: 2020 fld fs0,64(s0)
+4000041c: 2020 fld fs0,64(s0)
+4000041e: 2020 fld fs0,64(s0)
+40000420: 2020 fld fs0,64(s0)
+40000422: 2020 fld fs0,64(s0)
+40000424: 2520 fld fs0,72(a0)
+40000426: 0a64 addi s1,sp,284
+40000428: 0000 unimp
+4000042a: 0000 unimp
+4000042c: 315f6843 fmadd.s fa6,ft10,fs5,ft6,unknown
+40000430: 475f 6f6c 3a62 0x3a626f6c475f
+40000436: 2020 fld fs0,64(s0)
+40000438: 2020 fld fs0,64(s0)
+4000043a: 2020 fld fs0,64(s0)
+4000043c: 2020 fld fs0,64(s0)
+4000043e: 2020 fld fs0,64(s0)
+40000440: 2520 fld fs0,72(a0)
+40000442: 00000a63 beqz zero,40000456 <uart_ctrl_addr+0x252>
+40000446: 0000 unimp
+40000448: 2020 fld fs0,64(s0)
+4000044a: 2020 fld fs0,64(s0)
+4000044c: 2020 fld fs0,64(s0)
+4000044e: 2020 fld fs0,64(s0)
+40000450: 756f6873 csrrsi a6,0x756,30
+40000454: 646c flw fa1,76(s0)
+40000456: 6220 flw fs0,64(a2)
+40000458: 3a65 jal 3ffffe10 <data_load_start+0x1fffded6>
+4000045a: 2020 fld fs0,64(s0)
+4000045c: 2520 fld fs0,72(a0)
+4000045e: 00000a63 beqz zero,40000472 <uart_ctrl_addr+0x26e>
+40000462: 0000 unimp
+40000464: 325f6843 fmadd.d fa6,ft10,ft5,ft6,unknown
+40000468: 475f 6f6c 3a62 0x3a626f6c475f
+4000046e: 2020 fld fs0,64(s0)
+40000470: 2020 fld fs0,64(s0)
+40000472: 2020 fld fs0,64(s0)
+40000474: 2020 fld fs0,64(s0)
+40000476: 2020 fld fs0,64(s0)
+40000478: 2520 fld fs0,72(a0)
+4000047a: 00000a63 beqz zero,4000048e <uart_ctrl_addr+0x28a>
+4000047e: 0000 unimp
+40000480: 7241 lui tp,0xffff0
+40000482: 5f72 lw t5,60(sp)
+40000484: 5f31 li t5,-20
+40000486: 626f6c47 fmsub.d fs8,ft10,ft6,fa2,unknown
+4000048a: 3a5d385b 0x3a5d385b
+4000048e: 2020 fld fs0,64(s0)
+40000490: 2020 fld fs0,64(s0)
+40000492: 2020 fld fs0,64(s0)
+40000494: 2520 fld fs0,72(a0)
+40000496: 0a64 addi s1,sp,284
+40000498: 0000 unimp
+4000049a: 0000 unimp
+4000049c: 7241 lui tp,0xffff0
+4000049e: 5f72 lw t5,60(sp)
+400004a0: 5f32 lw t5,44(sp)
+400004a2: 626f6c47 fmsub.d fs8,ft10,ft6,fa2,unknown
+400004a6: 5b5d385b 0x5b5d385b
+400004aa: 203a5d37 lui s10,0x203a5
+400004ae: 2020 fld fs0,64(s0)
+400004b0: 2520 fld fs0,72(a0)
+400004b2: 0a64 addi s1,sp,284
+400004b4: 0000 unimp
+400004b6: 0000 unimp
+400004b8: 2020 fld fs0,64(s0)
+400004ba: 2020 fld fs0,64(s0)
+400004bc: 2020 fld fs0,64(s0)
+400004be: 2020 fld fs0,64(s0)
+400004c0: 756f6873 csrrsi a6,0x756,30
+400004c4: 646c flw fa1,76(s0)
+400004c6: 6220 flw fs0,64(a2)
+400004c8: 3a65 jal 3ffffe80 <data_load_start+0x1fffdf46>
+400004ca: 2020 fld fs0,64(s0)
+400004cc: 4e20 lw s0,88(a2)
+400004ce: 6d75 lui s10,0x1d
+400004d0: 6562 flw fa0,24(sp)
+400004d2: 5f72 lw t5,60(sp)
+400004d4: 525f664f fnmadd.d fa2,ft10,ft5,fa0,unknown
+400004d8: 6e75 lui t3,0x1d
+400004da: 202b2073 csrs hedeleg,s6
+400004de: 3031 jal 3ffffcea <data_load_start+0x1fffddb0>
+400004e0: 000a c.slli zero,0x2
+400004e2: 0000 unimp
+400004e4: 7450 flw fa2,44(s0)
+400004e6: 5f72 lw t5,60(sp)
+400004e8: 626f6c47 fmsub.d fs8,ft10,ft6,fa2,unknown
+400004ec: 3e2d jal 40000026 <rodata_start+0x26>
+400004ee: 000a c.slli zero,0x2
+400004f0: 2020 fld fs0,64(s0)
+400004f2: 7450 flw fa2,44(s0)
+400004f4: 5f72 lw t5,60(sp)
+400004f6: 706d6f43 fmadd.s ft10,fs10,ft6,fa4,unknown
+400004fa: 203a fld ft0,392(sp)
+400004fc: 2020 fld fs0,64(s0)
+400004fe: 2020 fld fs0,64(s0)
+40000500: 2020 fld fs0,64(s0)
+40000502: 2020 fld fs0,64(s0)
+40000504: 2520 fld fs0,72(a0)
+40000506: 0a64 addi s1,sp,284
+40000508: 0000 unimp
+4000050a: 0000 unimp
+4000050c: 2020 fld fs0,64(s0)
+4000050e: 2020 fld fs0,64(s0)
+40000510: 2020 fld fs0,64(s0)
+40000512: 2020 fld fs0,64(s0)
+40000514: 756f6873 csrrsi a6,0x756,30
+40000518: 646c flw fa1,76(s0)
+4000051a: 6220 flw fs0,64(a2)
+4000051c: 3a65 jal 3ffffed4 <data_load_start+0x1fffdf9a>
+4000051e: 2020 fld fs0,64(s0)
+40000520: 2820 fld fs0,80(s0)
+40000522: 6d69 lui s10,0x1a
+40000524: 6c70 flw fa2,92(s0)
+40000526: 6d65 lui s10,0x19
+40000528: 6e65 lui t3,0x19
+4000052a: 6174 flw fa3,68(a0)
+4000052c: 6974 flw fa3,84(a0)
+4000052e: 642d6e6f jal t3,400d6b70 <_end+0xd3b0c>
+40000532: 7065 c.lui zero,0xffff9
+40000534: 6e65 lui t3,0x19
+40000536: 6564 flw fs1,76(a0)
+40000538: 746e flw fs0,248(sp)
+4000053a: 0a29 addi s4,s4,10
+4000053c: 0000 unimp
+4000053e: 0000 unimp
+40000540: 2020 fld fs0,64(s0)
+40000542: 6944 flw fs1,20(a0)
+40000544: 3a726373 csrrsi t1,0x3a7,4
+40000548: 2020 fld fs0,64(s0)
+4000054a: 2020 fld fs0,64(s0)
+4000054c: 2020 fld fs0,64(s0)
+4000054e: 2020 fld fs0,64(s0)
+40000550: 2020 fld fs0,64(s0)
+40000552: 2020 fld fs0,64(s0)
+40000554: 2520 fld fs0,72(a0)
+40000556: 0a64 addi s1,sp,284
+40000558: 0000 unimp
+4000055a: 0000 unimp
+4000055c: 2020 fld fs0,64(s0)
+4000055e: 6e45 lui t3,0x11
+40000560: 6d75 lui s10,0x1d
+40000562: 435f 6d6f 3a70 0x3a706d6f435f
+40000568: 2020 fld fs0,64(s0)
+4000056a: 2020 fld fs0,64(s0)
+4000056c: 2020 fld fs0,64(s0)
+4000056e: 2020 fld fs0,64(s0)
+40000570: 2520 fld fs0,72(a0)
+40000572: 0a64 addi s1,sp,284
+40000574: 0000 unimp
+40000576: 0000 unimp
+40000578: 2020 fld fs0,64(s0)
+4000057a: 6e49 lui t3,0x12
+4000057c: 5f74 lw a3,124(a4)
+4000057e: 706d6f43 fmadd.s ft10,fs10,ft6,fa4,unknown
+40000582: 203a fld ft0,392(sp)
+40000584: 2020 fld fs0,64(s0)
+40000586: 2020 fld fs0,64(s0)
+40000588: 2020 fld fs0,64(s0)
+4000058a: 2020 fld fs0,64(s0)
+4000058c: 2520 fld fs0,72(a0)
+4000058e: 0a64 addi s1,sp,284
+40000590: 0000 unimp
+40000592: 0000 unimp
+40000594: 2020 fld fs0,64(s0)
+40000596: 5f727453 0x5f727453
+4000059a: 706d6f43 fmadd.s ft10,fs10,ft6,fa4,unknown
+4000059e: 203a fld ft0,392(sp)
+400005a0: 2020 fld fs0,64(s0)
+400005a2: 2020 fld fs0,64(s0)
+400005a4: 2020 fld fs0,64(s0)
+400005a6: 2020 fld fs0,64(s0)
+400005a8: 2520 fld fs0,72(a0)
+400005aa: 00000a73 0xa73
+400005ae: 0000 unimp
+400005b0: 2020 fld fs0,64(s0)
+400005b2: 2020 fld fs0,64(s0)
+400005b4: 2020 fld fs0,64(s0)
+400005b6: 2020 fld fs0,64(s0)
+400005b8: 756f6873 csrrsi a6,0x756,30
+400005bc: 646c flw fa1,76(s0)
+400005be: 6220 flw fs0,64(a2)
+400005c0: 3a65 jal 3fffff78 <data_load_start+0x1fffe03e>
+400005c2: 2020 fld fs0,64(s0)
+400005c4: 4420 lw s0,72(s0)
+400005c6: 5248 lw a0,36(a2)
+400005c8: 5359 li t1,-10
+400005ca: 4f54 lw a3,28(a4)
+400005cc: 454e lw a0,208(sp)
+400005ce: 5020 lw s0,96(s0)
+400005d0: 4f52 lw t5,20(sp)
+400005d2: 4d415247 0x4d415247
+400005d6: 202c fld fa1,64(s0)
+400005d8: 454d4f53 0x454d4f53
+400005dc: 5320 lw s0,96(a4)
+400005de: 5254 lw a3,36(a2)
+400005e0: 4e49 li t3,18
+400005e2: 00000a47 fmsub.s fs4,ft0,ft0,ft0,rne
+400005e6: 0000 unimp
+400005e8: 654e flw fa0,208(sp)
+400005ea: 7478 flw fa4,108(s0)
+400005ec: 505f 7274 475f 0x475f7274505f
+400005f2: 6f6c flw fa1,92(a4)
+400005f4: 2d62 fld fs10,24(sp)
+400005f6: 0a3e slli s4,s4,0xf
+400005f8: 0000 unimp
+400005fa: 0000 unimp
+400005fc: 2020 fld fs0,64(s0)
+400005fe: 2020 fld fs0,64(s0)
+40000600: 2020 fld fs0,64(s0)
+40000602: 2020 fld fs0,64(s0)
+40000604: 756f6873 csrrsi a6,0x756,30
+40000608: 646c flw fa1,76(s0)
+4000060a: 6220 flw fs0,64(a2)
+4000060c: 3a65 jal 3fffffc4 <data_load_start+0x1fffe08a>
+4000060e: 2020 fld fs0,64(s0)
+40000610: 2820 fld fs0,80(s0)
+40000612: 6d69 lui s10,0x1a
+40000614: 6c70 flw fa2,92(s0)
+40000616: 6d65 lui s10,0x19
+40000618: 6e65 lui t3,0x19
+4000061a: 6174 flw fa3,68(a0)
+4000061c: 6974 flw fa3,84(a0)
+4000061e: 642d6e6f jal t3,400d6c60 <_end+0xd3bfc>
+40000622: 7065 c.lui zero,0xffff9
+40000624: 6e65 lui t3,0x19
+40000626: 6564 flw fs1,76(a0)
+40000628: 746e flw fs0,248(sp)
+4000062a: 2c29 jal 40000844 <data_end>
+4000062c: 7320 flw fs0,96(a4)
+4000062e: 6d61 lui s10,0x18
+40000630: 2065 jal 400006d8 <uart_ctrl_addr+0x4d4>
+40000632: 7361 lui t1,0xffff8
+40000634: 6120 flw fs0,64(a0)
+40000636: 6f62 flw ft10,24(sp)
+40000638: 6576 flw fa0,92(sp)
+4000063a: 000a c.slli zero,0x2
+4000063c: 6e49 lui t3,0x12
+4000063e: 5f74 lw a3,124(a4)
+40000640: 5f31 li t5,-20
+40000642: 6f4c flw fa1,28(a4)
+40000644: 20203a63 0x20203a63
+40000648: 2020 fld fs0,64(s0)
+4000064a: 2020 fld fs0,64(s0)
+4000064c: 2020 fld fs0,64(s0)
+4000064e: 2020 fld fs0,64(s0)
+40000650: 2520 fld fs0,72(a0)
+40000652: 0a64 addi s1,sp,284
+40000654: 0000 unimp
+40000656: 0000 unimp
+40000658: 6e49 lui t3,0x12
+4000065a: 5f74 lw a3,124(a4)
+4000065c: 5f32 lw t5,44(sp)
+4000065e: 6f4c flw fa1,28(a4)
+40000660: 20203a63 0x20203a63
+40000664: 2020 fld fs0,64(s0)
+40000666: 2020 fld fs0,64(s0)
+40000668: 2020 fld fs0,64(s0)
+4000066a: 2020 fld fs0,64(s0)
+4000066c: 2520 fld fs0,72(a0)
+4000066e: 0a64 addi s1,sp,284
+40000670: 0000 unimp
+40000672: 0000 unimp
+40000674: 6e49 lui t3,0x12
+40000676: 5f74 lw a3,124(a4)
+40000678: 6f4c5f33 0x6f4c5f33
+4000067c: 20203a63 0x20203a63
+40000680: 2020 fld fs0,64(s0)
+40000682: 2020 fld fs0,64(s0)
+40000684: 2020 fld fs0,64(s0)
+40000686: 2020 fld fs0,64(s0)
+40000688: 2520 fld fs0,72(a0)
+4000068a: 0a64 addi s1,sp,284
+4000068c: 0000 unimp
+4000068e: 0000 unimp
+40000690: 6e45 lui t3,0x11
+40000692: 6d75 lui s10,0x1d
+40000694: 4c5f 636f 203a 0x203a636f4c5f
+4000069a: 2020 fld fs0,64(s0)
+4000069c: 2020 fld fs0,64(s0)
+4000069e: 2020 fld fs0,64(s0)
+400006a0: 2020 fld fs0,64(s0)
+400006a2: 2020 fld fs0,64(s0)
+400006a4: 2520 fld fs0,72(a0)
+400006a6: 0a64 addi s1,sp,284
+400006a8: 0000 unimp
+400006aa: 0000 unimp
+400006ac: 5f727453 0x5f727453
+400006b0: 5f31 li t5,-20
+400006b2: 6f4c flw fa1,28(a4)
+400006b4: 20203a63 0x20203a63
+400006b8: 2020 fld fs0,64(s0)
+400006ba: 2020 fld fs0,64(s0)
+400006bc: 2020 fld fs0,64(s0)
+400006be: 2020 fld fs0,64(s0)
+400006c0: 2520 fld fs0,72(a0)
+400006c2: 00000a73 0xa73
+400006c6: 0000 unimp
+400006c8: 2020 fld fs0,64(s0)
+400006ca: 2020 fld fs0,64(s0)
+400006cc: 2020 fld fs0,64(s0)
+400006ce: 2020 fld fs0,64(s0)
+400006d0: 756f6873 csrrsi a6,0x756,30
+400006d4: 646c flw fa1,76(s0)
+400006d6: 6220 flw fs0,64(a2)
+400006d8: 3a65 jal 40000090 <rodata_start+0x90>
+400006da: 2020 fld fs0,64(s0)
+400006dc: 4420 lw s0,72(s0)
+400006de: 5248 lw a0,36(a2)
+400006e0: 5359 li t1,-10
+400006e2: 4f54 lw a3,28(a4)
+400006e4: 454e lw a0,208(sp)
+400006e6: 5020 lw s0,96(s0)
+400006e8: 4f52 lw t5,20(sp)
+400006ea: 4d415247 0x4d415247
+400006ee: 202c fld fa1,64(s0)
+400006f0: 2731 jal 40000dfc <Arr_2_Glob+0x4e0>
+400006f2: 53205453 0x53205453
+400006f6: 5254 lw a3,36(a2)
+400006f8: 4e49 li t3,18
+400006fa: 00000a47 fmsub.s fs4,ft0,ft0,ft0,rne
+400006fe: 0000 unimp
+40000700: 5f727453 0x5f727453
+40000704: 5f32 lw t5,44(sp)
+40000706: 6f4c flw fa1,28(a4)
+40000708: 20203a63 0x20203a63
+4000070c: 2020 fld fs0,64(s0)
+4000070e: 2020 fld fs0,64(s0)
+40000710: 2020 fld fs0,64(s0)
+40000712: 2020 fld fs0,64(s0)
+40000714: 2520 fld fs0,72(a0)
+40000716: 00000a73 0xa73
+4000071a: 0000 unimp
+4000071c: 2020 fld fs0,64(s0)
+4000071e: 2020 fld fs0,64(s0)
+40000720: 2020 fld fs0,64(s0)
+40000722: 2020 fld fs0,64(s0)
+40000724: 756f6873 csrrsi a6,0x756,30
+40000728: 646c flw fa1,76(s0)
+4000072a: 6220 flw fs0,64(a2)
+4000072c: 3a65 jal 400000e4 <rodata_start+0xe4>
+4000072e: 2020 fld fs0,64(s0)
+40000730: 4420 lw s0,72(s0)
+40000732: 5248 lw a0,36(a2)
+40000734: 5359 li t1,-10
+40000736: 4f54 lw a3,28(a4)
+40000738: 454e lw a0,208(sp)
+4000073a: 5020 lw s0,96(s0)
+4000073c: 4f52 lw t5,20(sp)
+4000073e: 4d415247 0x4d415247
+40000742: 202c fld fa1,64(s0)
+40000744: 2732 fld fa4,264(sp)
+40000746: 444e lw s0,208(sp)
+40000748: 5320 lw s0,96(a4)
+4000074a: 5254 lw a3,36(a2)
+4000074c: 4e49 li t3,18
+4000074e: 00000a47 fmsub.s fs4,ft0,ft0,ft0,rne
+40000752: 0000 unimp
+40000754: 654d lui a0,0x13
+40000756: 7361 lui t1,0xffff8
+40000758: 7275 lui tp,0xffffd
+4000075a: 6465 lui s0,0x19
+4000075c: 7420 flw fs0,104(s0)
+4000075e: 6d69 lui s10,0x1a
+40000760: 2065 jal 40000808 <uart_ctrl_addr+0x604>
+40000762: 6f74 flw fa3,92(a4)
+40000764: 6d73206f j 4003363a <_end+0x305d6>
+40000768: 6c61 lui s8,0x18
+4000076a: 206c fld fa1,192(s0)
+4000076c: 6f74 flw fa3,92(a4)
+4000076e: 6f20 flw fs0,88(a4)
+40000770: 7462 flw fs0,56(sp)
+40000772: 6961 lui s2,0x18
+40000774: 206e fld ft0,216(sp)
+40000776: 656d lui a0,0x1b
+40000778: 6e61 lui t3,0x18
+4000077a: 6e69 lui t3,0x1a
+4000077c: 6c756667 0x6c756667
+40000780: 7220 flw fs0,96(a2)
+40000782: 7365 lui t1,0xffff9
+40000784: 6c75 lui s8,0x1d
+40000786: 7374 flw fa3,100(a4)
+40000788: 000a c.slli zero,0x2
+4000078a: 0000 unimp
+4000078c: 6c50 flw fa2,28(s0)
+4000078e: 6165 addi sp,sp,112
+40000790: 69206573 csrrsi a0,0x692,0
+40000794: 636e flw ft6,216(sp)
+40000796: 6572 flw fa0,28(sp)
+40000798: 7361 lui t1,0xffff8
+4000079a: 2065 jal 40000842 <rodata_end+0x2>
+4000079c: 756e flw fa0,248(sp)
+4000079e: 626d lui tp,0x1b
+400007a0: 7265 lui tp,0xffff9
+400007a2: 6f20 flw fs0,88(a4)
+400007a4: 2066 fld ft0,88(sp)
+400007a6: 7572 flw fa0,60(sp)
+400007a8: 736e flw ft6,248(sp)
+400007aa: 000a c.slli zero,0x2
+400007ac: 6542 flw fa0,16(sp)
+400007ae: 5f6e6967 0x5f6e6967
+400007b2: 6974 flw fa3,84(a0)
+400007b4: 656d lui a0,0x1b
+400007b6: 253d jal 40000de4 <Arr_2_Glob+0x4c8>
+400007b8: 2064 fld fs1,192(s0)
+400007ba: 6e45 lui t3,0x11
+400007bc: 5f64 lw s1,124(a4)
+400007be: 6954 flw fa3,20(a0)
+400007c0: 656d lui a0,0x1b
+400007c2: 253d jal 40000df0 <Arr_2_Glob+0x4d4>
+400007c4: 2064 fld fs1,192(s0)
+400007c6: 7355 lui t1,0xffff5
+400007c8: 7265 lui tp,0xffff9
+400007ca: 545f 6d69 3d65 0x3d656d69545f
+400007d0: 6425 lui s0,0x9
+400007d2: 000a c.slli zero,0x2
+400007d4: 3130 fld fa2,96(a0)
+400007d6: 3332 fld ft6,296(sp)
+400007d8: 3534 fld fa3,104(a0)
+400007da: 3736 fld fa4,360(sp)
+400007dc: 3938 fld fa4,112(a0)
+400007de: 6261 lui tp,0x18
+400007e0: 66656463 bltu a0,t1,40000e48 <Arr_2_Glob+0x52c>
+400007e4: 6a696867 0x6a696867
+400007e8: 6e6d6c6b 0x6e6d6c6b
+400007ec: 7271706f j 40018712 <_end+0x156ae>
+400007f0: 76757473 csrrci s0,0x767,10
+400007f4: 7a797877 0x7a797877
+400007f8: 0000 unimp
+400007fa: 0000 unimp
+400007fc: 3130 fld fa2,96(a0)
+400007fe: 3332 fld ft6,296(sp)
+40000800: 3534 fld fa3,104(a0)
+40000802: 3736 fld fa4,360(sp)
+40000804: 3938 fld fa4,112(a0)
+40000806: 4241 li tp,16
+40000808: 46454443 fmadd.q fs0,fa0,ft4,fs0,rmm
+4000080c: 4a494847 fmsub.d fa6,fs2,ft4,fs1,rmm
+40000810: 4e4d4c4b fnmsub.q fs8,fs10,ft4,fs1,rmm
+40000814: 5251504f fnmadd.d ft0,ft2,ft5,fa0,unknown
+40000818: 56555453 0x56555453
+4000081c: 5a595857 0x5a595857
+40000820: 0000 unimp
+40000822: 0000 unimp
+40000824: 4e3c lw a5,88(a2)
+40000826: 4c55 li s8,21
+40000828: 3e4c fld fa1,184(a2)
+4000082a: 0000 unimp
+4000082c: 3130 fld fa2,96(a0)
+4000082e: 3332 fld ft6,296(sp)
+40000830: 3534 fld fa3,104(a0)
+40000832: 3736 fld fa4,360(sp)
+40000834: 3938 fld fa4,112(a0)
+40000836: 6261 lui tp,0x18
+40000838: 66656463 bltu a0,t1,40000ea0 <Arr_2_Glob+0x584>
+4000083c: 0000 unimp
+ ...
+
+Disassembly of section .data:
+
+40000840 <Reg>:
+40000840: 0001 nop
+ ...
+
+Disassembly of section .bss:
+
+40000844 <time_info>:
+ ...
+
+40000854 <Arr_1_Glob>:
+ ...
+
+4000091c <Arr_2_Glob>:
+ ...
+
+4000302c <Dhrystones_Per_Second>:
+4000302c: 0000 unimp
+ ...
+
+40003030 <Microseconds>:
+40003030: 0000 unimp
+ ...
+
+40003034 <User_Time>:
+40003034: 0000 unimp
+ ...
+
+40003038 <End_Time>:
+40003038: 0000 unimp
+ ...
+
+4000303c <Begin_Time>:
+4000303c: 0000 unimp
+ ...
+
+40003040 <Ch_2_Glob>:
+ ...
+
+40003041 <Ch_1_Glob>:
+40003041: 0000 unimp
+ ...
+
+40003044 <Bool_Glob>:
+40003044: 0000 unimp
+ ...
+
+40003048 <Int_Glob>:
+40003048: 0000 unimp
+ ...
+
+4000304c <Next_Ptr_Glob>:
+4000304c: 0000 unimp
+ ...
+
+40003050 <Ptr_Glob>:
+40003050: 0000 unimp
+ ...
+
+40003054 <last_valid_address>:
+40003054: 0000 unimp
+ ...
+
+40003058 <managed_memory_start>:
+40003058: 0000 unimp
+ ...
+
+4000305c <has_initialized>:
+4000305c: 0000 unimp
+ ...
+
+40003060 <heap_ptr>:
+40003060: 0000 unimp
+ ...
+
+Disassembly of section .comment:
+
+00000000 <_stack-0x8001ff0>:
+ 0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
+ 4: 2820 fld fs0,80(s0)
+ 6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
+ a: 3920 fld fs0,112(a0)
+ c: 322e fld ft4,232(sp)
+ e: 302e fld ft0,232(sp)
+ ...
+
+Disassembly of section .riscv.attributes:
+
+00000000 <.riscv.attributes>:
+ 0: 2a41 jal 190 <spi_quad_mode-0x7fffe70>
+ 2: 0000 unimp
+ 4: 7200 flw fs0,32(a2)
+ 6: 7369 lui t1,0xffffa
+ 8: 01007663 bgeu zero,a6,14 <spi_quad_mode-0x7ffffec>
+ c: 0020 addi s0,sp,8
+ e: 0000 unimp
+ 10: 1004 addi s1,sp,32
+ 12: 7205 lui tp,0xfffe1
+ 14: 3376 fld ft6,376(sp)
+ 16: 6932 flw fs2,12(sp)
+ 18: 7032 flw ft0,44(sp)
+ 1a: 5f30 lw a2,120(a4)
+ 1c: 326d jal fffff9c6 <_end+0xbfffc962>
+ 1e: 3070 fld fa2,224(s0)
+ 20: 615f 7032 5f30 0x5f307032615f
+ 26: 30703263 0x30703263
+ ...
diff --git a/verilog/dv/dhrystone/spi_flash.mem b/verilog/dv/dhrystone/spi_flash.mem
new file mode 100644
index 0000000..139f0dc
--- /dev/null
+++ b/verilog/dv/dhrystone/spi_flash.mem
@@ -0,0 +1,8502 @@
+// /home/shc/Development/RISC-V/chipyard/vlsi/sim/testcase/dhrystone-2.1/gcc_dry2reg_flash.mem
+// gcc_dry2reg_flash.srec
+@00000000
+93
+00
+00
+00
+13
+01
+00
+00
+93
+01
+00
+00
+13
+02
+00
+00
+@00000010
+93
+02
+00
+00
+13
+03
+00
+00
+93
+03
+00
+00
+13
+04
+00
+00
+@00000020
+93
+04
+00
+00
+13
+05
+00
+00
+93
+05
+00
+00
+13
+06
+00
+00
+@00000030
+93
+06
+00
+00
+13
+07
+00
+00
+93
+07
+00
+00
+13
+08
+00
+00
+@00000040
+93
+08
+00
+00
+13
+09
+00
+00
+93
+09
+00
+00
+13
+0A
+00
+00
+@00000050
+93
+0A
+00
+00
+13
+0B
+00
+00
+93
+0B
+00
+00
+13
+0C
+00
+00
+@00000060
+93
+0C
+00
+00
+13
+0D
+00
+00
+93
+0D
+00
+00
+13
+0E
+00
+00
+@00000070
+93
+0E
+00
+00
+13
+0F
+00
+00
+93
+0F
+00
+00
+37
+21
+00
+08
+@00000080
+13
+01
+01
+FF
+75
+24
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+@00000090
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+@000000A0
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+@000000B0
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+@000000C0
+00
+00
+00
+00
+00
+00
+17
+37
+00
+20
+03
+47
+B7
+F7
+93
+07
+@000000D0
+10
+04
+63
+03
+F7
+00
+82
+80
+1C
+41
+17
+37
+00
+20
+03
+27
+@000000E0
+E7
+F6
+A5
+07
+99
+8F
+1C
+C1
+82
+80
+97
+37
+00
+20
+93
+87
+@000000F0
+67
+F6
+90
+43
+01
+C6
+18
+42
+18
+C1
+90
+43
+31
+06
+97
+35
+@00000100
+00
+20
+83
+A5
+A5
+F4
+29
+45
+BD
+A2
+41
+11
+4A
+C0
+17
+39
+@00000110
+00
+20
+13
+09
+29
+F4
+83
+27
+09
+00
+22
+C4
+00
+41
+98
+43
+@00000120
+83
+AE
+47
+00
+03
+AE
+87
+00
+03
+A3
+07
+01
+83
+A8
+47
+01
+@00000130
+03
+A8
+87
+01
+8C
+53
+D0
+53
+94
+57
+26
+C2
+06
+C6
+AA
+84
+@00000140
+C8
+4F
+DC
+57
+18
+C0
+98
+40
+48
+CC
+5C
+D4
+23
+22
+D4
+01
+@00000150
+95
+47
+23
+24
+C4
+01
+23
+28
+64
+00
+23
+2A
+14
+01
+23
+2C
+@00000160
+04
+01
+0C
+D0
+50
+D0
+14
+D4
+DC
+C4
+5C
+C4
+18
+C0
+22
+85
+@00000170
+AD
+3F
+5C
+40
+B1
+CF
+9C
+40
+B2
+40
+22
+44
+83
+AF
+07
+00
+@00000180
+03
+AF
+47
+00
+83
+AE
+87
+00
+03
+AE
+C7
+00
+03
+A3
+07
+01
+@00000190
+83
+A8
+47
+01
+03
+A8
+87
+01
+CC
+4F
+90
+53
+D4
+53
+98
+57
+@000001A0
+DC
+57
+23
+A0
+F4
+01
+23
+A2
+E4
+01
+23
+A4
+D4
+01
+23
+A6
+@000001B0
+C4
+01
+23
+A8
+64
+00
+23
+AA
+14
+01
+23
+AC
+04
+01
+CC
+CC
+@000001C0
+90
+D0
+D4
+D0
+98
+D4
+DC
+D4
+02
+49
+92
+44
+41
+01
+82
+80
+@000001D0
+88
+44
+99
+47
+93
+05
+84
+00
+5C
+C4
+85
+20
+83
+27
+09
+00
+@000001E0
+48
+44
+13
+06
+C4
+00
+9C
+43
+B2
+40
+92
+44
+1C
+C0
+22
+44
+@000001F0
+02
+49
+A9
+45
+41
+01
+41
+A0
+17
+37
+00
+20
+13
+07
+C7
+E4
+@00000200
+14
+43
+97
+37
+00
+20
+83
+C7
+F7
+E3
+93
+87
+F7
+FB
+93
+B7
+@00000210
+17
+00
+D5
+8F
+1C
+C3
+93
+07
+20
+04
+17
+37
+00
+20
+23
+03
+@00000220
+F7
+E2
+82
+80
+93
+07
+10
+04
+17
+37
+00
+20
+A3
+0C
+F7
+E0
+@00000230
+97
+37
+00
+20
+23
+AA
+07
+E0
+82
+80
+09
+47
+63
+0A
+E5
+02
+@00000240
+8D
+47
+9C
+C1
+85
+47
+63
+09
+F5
+00
+63
+FF
+A7
+00
+91
+47
+@00000250
+63
+1F
+F5
+00
+98
+C1
+82
+80
+17
+37
+00
+20
+03
+27
+07
+DF
+@00000260
+93
+07
+40
+06
+E3
+D9
+E7
+FE
+23
+A0
+05
+00
+82
+80
+82
+80
+@00000270
+85
+47
+9C
+C1
+82
+80
+09
+05
+AA
+95
+0C
+C2
+82
+80
+13
+07
+@00000280
+56
+00
+13
+08
+80
+0C
+33
+08
+07
+03
+0A
+06
+93
+17
+27
+00
+@00000290
+3E
+95
+14
+C1
+38
+DD
+54
+C1
+B3
+07
+C8
+00
+AE
+97
+94
+4B
+@000002A0
+D8
+CB
+98
+CF
+13
+87
+16
+00
+98
+CB
+18
+41
+C2
+95
+B2
+95
+@000002B0
+85
+67
+BE
+95
+95
+47
+23
+AA
+E5
+FA
+17
+37
+00
+20
+23
+27
+@000002C0
+F7
+D8
+82
+80
+13
+75
+F5
+0F
+93
+F5
+F5
+0F
+63
+04
+B5
+00
+@000002D0
+01
+45
+82
+80
+97
+37
+00
+20
+A3
+86
+A7
+D6
+05
+45
+82
+80
+@000002E0
+41
+11
+06
+C6
+17
+38
+00
+20
+13
+08
+D8
+D5
+83
+47
+25
+00
+@000002F0
+03
+C7
+35
+00
+03
+46
+08
+00
+81
+46
+63
+84
+E7
+02
+99
+C2
+@00000300
+23
+00
+C8
+00
+EF
+00
+D0
+2F
+81
+47
+63
+58
+A0
+00
+A9
+47
+@00000310
+17
+37
+00
+20
+23
+2C
+F7
+D2
+85
+47
+B2
+40
+3E
+85
+41
+01
+@00000320
+82
+80
+85
+46
+3E
+86
+D1
+BF
+79
+15
+13
+35
+15
+00
+82
+80
+@00000330
+17
+05
+00
+E8
+13
+05
+05
+CD
+17
+06
+00
+E8
+13
+06
+C6
+D3
+@00000340
+41
+11
+09
+8E
+97
+15
+00
+00
+93
+85
+25
+34
+06
+C6
+EF
+00
+@00000350
+D0
+22
+37
+45
+01
+10
+97
+00
+00
+E8
+E7
+80
+A0
+CA
+37
+45
+@00000360
+03
+10
+97
+00
+00
+E8
+E7
+80
+E0
+C9
+B7
+77
+09
+00
+37
+47
+@00000370
+03
+10
+93
+87
+27
+A0
+17
+05
+00
+20
+13
+05
+A5
+C8
+17
+06
+@00000380
+00
+20
+13
+06
+26
+4C
+3C
+D7
+09
+8E
+97
+15
+00
+00
+93
+85
+@00000390
+05
+37
+EF
+00
+90
+1E
+17
+05
+00
+20
+13
+05
+A5
+4A
+17
+06
+@000003A0
+00
+20
+13
+06
+66
+4A
+09
+8E
+97
+25
+00
+00
+93
+85
+25
+B9
+@000003B0
+EF
+00
+B0
+1C
+17
+05
+00
+20
+13
+05
+05
+49
+17
+36
+00
+20
+@000003C0
+13
+06
+86
+CA
+09
+8E
+81
+45
+EF
+00
+90
+19
+85
+45
+01
+45
+@000003D0
+EF
+00
+10
+0F
+EF
+00
+70
+4E
+B7
+27
+01
+10
+98
+5F
+B7
+06
+@000003E0
+00
+C0
+0A
+07
+09
+83
+98
+DF
+98
+47
+55
+8F
+98
+C7
+37
+07
+@000003F0
+00
+80
+D8
+C7
+01
+A0
+1D
+71
+A2
+CE
+A6
+CC
+13
+F8
+07
+04
+@00000400
+17
+0E
+00
+20
+13
+0E
+CE
+3F
+63
+16
+08
+00
+17
+0E
+00
+20
+@00000410
+13
+0E
+8E
+3C
+13
+F4
+07
+01
+63
+02
+04
+14
+F9
+9B
+A2
+84
+@00000420
+13
+F8
+27
+00
+93
+0F
+00
+02
+93
+F3
+07
+02
+63
+06
+08
+14
+@00000430
+63
+C6
+05
+14
+13
+F8
+47
+00
+63
+1C
+08
+16
+A1
+8B
+81
+42
+@00000440
+81
+C7
+FD
+16
+93
+02
+00
+02
+63
+8A
+03
+00
+C1
+47
+63
+0F
+@00000450
+F6
+16
+93
+07
+86
+FF
+93
+B7
+17
+00
+9D
+8E
+63
+97
+05
+12
+@00000460
+93
+07
+00
+03
+23
+06
+F1
+00
+01
+43
+13
+08
+00
+03
+85
+48
+@00000470
+7C
+00
+C6
+8E
+63
+D3
+E8
+00
+BA
+8E
+33
+8E
+D6
+41
+93
+05
+@00000480
+FE
+FF
+91
+EC
+B3
+06
+C5
+01
+13
+07
+00
+02
+63
+5A
+C0
+15
+@00000490
+05
+05
+A3
+0F
+E5
+FE
+E3
+1D
+D5
+FE
+F9
+55
+7D
+5E
+63
+85
+@000004A0
+02
+00
+23
+00
+55
+00
+05
+05
+63
+88
+03
+00
+21
+47
+63
+01
+@000004B0
+E6
+12
+41
+47
+63
+02
+E6
+10
+0D
+E8
+2A
+86
+05
+47
+63
+56
+@000004C0
+C0
+13
+05
+06
+B3
+06
+C7
+40
+AE
+96
+AA
+96
+A3
+0F
+F6
+FF
+@000004D0
+E3
+49
+D0
+FE
+13
+C7
+F5
+FF
+7D
+87
+6D
+8F
+FD
+15
+33
+8E
+@000004E0
+E5
+40
+05
+07
+3A
+95
+93
+05
+FE
+FF
+33
+87
+1E
+41
+2A
+97
+@000004F0
+93
+06
+00
+03
+63
+D4
+D8
+0F
+05
+05
+A3
+0F
+D5
+FE
+E3
+1D
+@00000500
+A7
+FE
+33
+86
+67
+00
+BA
+86
+05
+45
+19
+A0
+03
+48
+06
+00
+@00000510
+85
+06
+B3
+07
+D5
+40
+9A
+97
+BA
+97
+A3
+8F
+06
+FF
+7D
+16
+@00000520
+E3
+46
+F0
+FE
+13
+05
+13
+00
+3A
+95
+63
+55
+C0
+03
+2A
+87
+@00000530
+13
+06
+00
+02
+85
+46
+05
+07
+B3
+87
+E6
+40
+AE
+97
+AA
+97
+@00000540
+A3
+0F
+C7
+FE
+E3
+49
+F0
+FE
+93
+C7
+F5
+FF
+FD
+87
+FD
+8D
+@00000550
+85
+05
+2E
+95
+76
+44
+E6
+44
+25
+61
+82
+80
+13
+F8
+17
+00
+@00000560
+93
+F4
+17
+01
+93
+0F
+00
+03
+E3
+0C
+08
+EA
+13
+F8
+27
+00
+@00000570
+93
+F3
+07
+02
+E3
+1E
+08
+EA
+81
+42
+F9
+B5
+B3
+05
+B0
+40
+@00000580
+FD
+16
+93
+02
+D0
+02
+E3
+93
+03
+EC
+81
+48
+7C
+00
+33
+F8
+@00000590
+C5
+02
+46
+83
+85
+08
+33
+8F
+17
+01
+AE
+8E
+72
+98
+03
+48
+@000005A0
+08
+00
+B3
+D5
+C5
+02
+A3
+0F
+0F
+FF
+E3
+F2
+CE
+FE
+D1
+B5
+@000005B0
+FD
+16
+93
+02
+B0
+02
+49
+BD
+13
+07
+00
+03
+23
+00
+E5
+00
+@000005C0
+13
+07
+80
+07
+A3
+00
+E5
+00
+09
+05
+FD
+B5
+F9
+16
+79
+B5
+@000005D0
+13
+07
+00
+03
+23
+00
+E5
+00
+05
+05
+F9
+BD
+2A
+87
+15
+B7
+@000005E0
+13
+07
+EE
+FF
+2E
+8E
+BA
+85
+5D
+BD
+2E
+8E
+FD
+15
+F5
+BD
+@000005F0
+AA
+85
+01
+45
+19
+AF
+49
+71
+23
+28
+61
+13
+23
+26
+11
+14
+@00000600
+23
+24
+81
+14
+23
+22
+91
+14
+23
+20
+21
+15
+23
+2E
+31
+13
+@00000610
+23
+2C
+41
+13
+23
+2A
+51
+13
+23
+26
+71
+13
+23
+24
+81
+13
+@00000620
+23
+22
+91
+13
+23
+20
+A1
+13
+23
+2A
+B1
+14
+23
+2C
+C1
+14
+@00000630
+23
+2E
+D1
+14
+23
+20
+E1
+16
+23
+22
+F1
+16
+23
+24
+01
+17
+@00000640
+23
+26
+11
+17
+83
+47
+05
+00
+13
+0B
+41
+15
+5A
+C2
+63
+89
+@00000650
+07
+5C
+93
+09
+01
+02
+2A
+83
+97
+0A
+00
+20
+93
+8A
+8A
+9A
+@00000660
+4E
+85
+93
+0B
+E0
+02
+17
+0A
+00
+20
+13
+0A
+EA
+9D
+97
+04
+@00000670
+00
+20
+93
+84
+64
+16
+17
+04
+00
+20
+13
+04
+E4
+AA
+13
+07
+@00000680
+50
+02
+63
+84
+E7
+06
+23
+00
+F5
+00
+83
+47
+13
+00
+05
+05
+@00000690
+05
+03
+F5
+F7
+23
+00
+05
+00
+83
+45
+01
+02
+63
+84
+05
+12
+@000006A0
+05
+44
+33
+04
+34
+41
+01
+45
+8D
+25
+83
+C5
+19
+00
+33
+85
+@000006B0
+89
+00
+85
+09
+ED
+F9
+83
+20
+C1
+14
+03
+24
+81
+14
+83
+24
+@000006C0
+41
+14
+03
+29
+01
+14
+83
+29
+C1
+13
+03
+2A
+81
+13
+83
+2A
+@000006D0
+41
+13
+03
+2B
+01
+13
+83
+2B
+C1
+12
+03
+2C
+81
+12
+83
+2C
+@000006E0
+41
+12
+03
+2D
+01
+12
+75
+61
+82
+80
+81
+47
+C1
+46
+83
+45
+@000006F0
+13
+00
+13
+09
+13
+00
+13
+87
+05
+FE
+13
+77
+F7
+0F
+63
+E7
+@00000700
+E6
+00
+0A
+07
+56
+97
+18
+43
+56
+97
+02
+87
+13
+87
+05
+FD
+@00000710
+13
+77
+F7
+0F
+A5
+46
+63
+FB
+E6
+0C
+13
+07
+A0
+02
+FD
+56
+@00000720
+63
+89
+E5
+0E
+7D
+57
+63
+81
+75
+0B
+13
+F6
+F5
+0D
+13
+08
+@00000730
+C0
+04
+63
+03
+06
+05
+13
+86
+F5
+FB
+13
+76
+F6
+0F
+13
+08
+@00000740
+70
+03
+63
+6E
+C8
+04
+0A
+06
+52
+96
+10
+42
+52
+96
+02
+86
+@00000750
+93
+E7
+17
+00
+4A
+83
+61
+BF
+93
+E7
+07
+01
+4A
+83
+41
+BF
+@00000760
+93
+E7
+47
+00
+4A
+83
+61
+B7
+93
+E7
+07
+02
+4A
+83
+41
+B7
+@00000770
+93
+E7
+87
+00
+4A
+83
+A5
+BF
+03
+48
+19
+00
+13
+03
+70
+03
+@00000780
+93
+08
+19
+00
+13
+06
+F8
+FB
+13
+76
+F6
+0F
+63
+67
+C3
+00
+@00000790
+0A
+06
+22
+96
+10
+42
+22
+96
+02
+86
+C2
+85
+46
+89
+13
+07
+@000007A0
+50
+02
+93
+07
+15
+00
+63
+89
+E5
+42
+23
+00
+E5
+00
+03
+47
+@000007B0
+09
+00
+63
+1A
+07
+4C
+3E
+85
+23
+00
+05
+00
+83
+45
+01
+02
+@000007C0
+E3
+90
+05
+EE
+01
+45
+C5
+BD
+83
+45
+19
+00
+25
+46
+13
+08
+@000007D0
+19
+00
+13
+87
+05
+FD
+13
+77
+F7
+0F
+63
+77
+E6
+3A
+13
+07
+@000007E0
+A0
+02
+63
+8B
+E5
+3C
+42
+89
+01
+47
+81
+B7
+81
+46
+25
+46
+@000007F0
+13
+97
+26
+00
+BA
+96
+05
+09
+86
+06
+AE
+96
+83
+45
+09
+00
+@00000800
+93
+86
+06
+FD
+13
+87
+05
+FD
+13
+77
+F7
+0F
+E3
+72
+E6
+FE
+@00000810
+11
+BF
+83
+26
+0B
+00
+83
+45
+23
+00
+13
+09
+23
+00
+11
+0B
+@00000820
+E3
+D2
+06
+F0
+B3
+06
+D0
+40
+93
+E7
+07
+01
+E5
+BD
+13
+08
+@00000830
+4B
+00
+41
+46
+83
+25
+0B
+00
+42
+8B
+75
+3E
+83
+47
+19
+00
+@00000840
+13
+03
+19
+00
+E3
+9D
+07
+E2
+B1
+B5
+13
+08
+4B
+00
+29
+46
+@00000850
+D5
+B7
+46
+89
+03
+26
+0B
+00
+11
+0B
+63
+01
+06
+3A
+83
+45
+@00000860
+06
+00
+63
+8B
+05
+3E
+63
+09
+07
+3E
+B2
+85
+29
+A0
+33
+88
+@00000870
+E5
+40
+63
+07
+C8
+00
+03
+C8
+15
+00
+85
+05
+E3
+19
+08
+FE
+@00000880
+C1
+8B
+91
+8D
+63
+82
+07
+3A
+63
+5B
+B0
+40
+33
+08
+B6
+00
+@00000890
+AA
+87
+03
+47
+06
+00
+05
+06
+85
+07
+A3
+8F
+E7
+FE
+E3
+1A
+@000008A0
+06
+FF
+33
+07
+B5
+00
+33
+85
+B6
+40
+13
+03
+19
+00
+3A
+95
+@000008B0
+93
+07
+00
+02
+63
+D1
+D5
+3C
+05
+07
+A3
+0F
+F7
+FE
+E3
+1D
+@000008C0
+A7
+FE
+83
+47
+19
+00
+E3
+9C
+07
+DA
+E9
+B3
+46
+89
+7D
+56
+@000008D0
+63
+82
+C6
+32
+83
+25
+0B
+00
+41
+46
+11
+0B
+29
+3E
+83
+47
+@000008E0
+19
+00
+13
+03
+19
+00
+E3
+9C
+07
+D8
+6D
+B3
+13
+08
+4B
+00
+@000008F0
+21
+46
+89
+B7
+93
+E7
+27
+00
+13
+08
+4B
+00
+29
+46
+1D
+BF
+@00000900
+46
+89
+C1
+8B
+FD
+16
+63
+80
+07
+30
+03
+26
+0B
+00
+13
+07
+@00000910
+15
+00
+93
+87
+16
+00
+23
+00
+C5
+00
+11
+0B
+3E
+95
+13
+03
+@00000920
+19
+00
+BA
+87
+13
+06
+00
+02
+63
+57
+D0
+34
+85
+07
+A3
+8F
+@00000930
+C7
+FE
+E3
+9D
+A7
+FE
+83
+47
+19
+00
+33
+05
+D7
+00
+E3
+90
+@00000940
+07
+D4
+89
+BB
+93
+E7
+07
+04
+13
+08
+4B
+00
+41
+46
+DD
+B5
+@00000950
+03
+27
+0B
+00
+93
+E7
+07
+04
+11
+0B
+83
+45
+07
+00
+01
+48
+@00000960
+93
+08
+47
+00
+93
+0E
+30
+06
+A5
+4F
+29
+43
+13
+0F
+40
+06
+@00000970
+13
+0E
+00
+03
+13
+06
+18
+00
+9D
+E1
+0C
+12
+2E
+98
+23
+04
+@00000980
+C8
+EF
+05
+07
+63
+06
+17
+07
+0C
+12
+B2
+95
+23
+84
+75
+EF
+@00000990
+83
+45
+07
+00
+13
+08
+16
+00
+13
+06
+18
+00
+F9
+DD
+63
+D0
+@000009A0
+BE
+1C
+33
+EC
+E5
+03
+93
+02
+01
+12
+33
+8D
+02
+01
+B3
+8C
+@000009B0
+C2
+00
+93
+03
+28
+00
+13
+06
+38
+00
+B3
+C5
+E5
+03
+33
+48
+@000009C0
+6C
+02
+B3
+82
+B4
+00
+83
+C5
+02
+00
+23
+04
+BD
+EE
+B3
+65
+@000009D0
+6C
+02
+26
+98
+03
+48
+08
+00
+23
+84
+0C
+EF
+A6
+95
+03
+C8
+@000009E0
+05
+00
+0C
+12
+9E
+95
+23
+84
+05
+EF
+05
+07
+E3
+1E
+17
+F9
+@000009F0
+C1
+8B
+13
+88
+F6
+FF
+95
+E3
+B3
+87
+C6
+40
+AA
+97
+13
+07
+@00000A00
+00
+02
+63
+54
+D6
+28
+05
+05
+A3
+0F
+E5
+FE
+E3
+9D
+A7
+FE
+@00000A10
+B3
+06
+D6
+40
+C2
+96
+13
+88
+F6
+FF
+3C
+00
+B3
+05
+C5
+00
+@00000A20
+03
+C7
+07
+00
+05
+05
+85
+07
+A3
+0F
+E5
+FE
+E3
+1A
+B5
+FE
+@00000A30
+E3
+56
+D6
+E0
+2E
+87
+13
+05
+00
+02
+85
+46
+05
+07
+B3
+87
+@00000A40
+E6
+40
+C2
+97
+AE
+97
+A3
+0F
+A7
+FE
+E3
+49
+F6
+FE
+05
+45
+@00000A50
+63
+5F
+C8
+16
+2E
+95
+DD
+B3
+93
+E7
+27
+00
+29
+46
+13
+03
+@00000A60
+C0
+06
+13
+08
+4B
+00
+63
+9E
+65
+20
+83
+25
+0B
+00
+46
+89
+@00000A70
+42
+8B
+E1
+B3
+21
+46
+E5
+B7
+93
+E7
+07
+04
+41
+46
+C5
+B7
+@00000A80
+93
+E7
+07
+04
+13
+06
+C0
+06
+03
+27
+0B
+00
+11
+0B
+63
+9F
+@00000A90
+C5
+1A
+13
+F6
+07
+04
+A6
+88
+09
+C6
+97
+08
+00
+20
+93
+88
+@00000AA0
+28
+D6
+13
+03
+81
+00
+13
+0E
+A1
+01
+9A
+85
+93
+0E
+A0
+03
+@00000AB0
+19
+A0
+A3
+8F
+D5
+FF
+03
+46
+07
+00
+8D
+05
+05
+07
+13
+58
+@00000AC0
+46
+00
+3D
+8A
+46
+98
+46
+96
+03
+48
+08
+00
+03
+46
+06
+00
+@00000AD0
+A3
+8E
+05
+FF
+23
+8F
+C5
+FE
+E3
+9D
+C5
+FD
+C1
+8B
+13
+86
+@00000AE0
+F6
+FF
+9D
+E3
+93
+85
+F6
+FE
+45
+48
+33
+07
+B5
+00
+93
+07
+@00000AF0
+00
+02
+63
+51
+D8
+1A
+05
+05
+A3
+0F
+F5
+FE
+E3
+1D
+E5
+FE
+@00000B00
+B3
+06
+B6
+40
+13
+86
+F6
+FF
+AA
+87
+93
+05
+13
+01
+03
+47
+@00000B10
+03
+00
+05
+03
+85
+07
+A3
+8F
+E7
+FE
+E3
+1A
+B3
+FE
+C5
+47
+@00000B20
+45
+05
+63
+D7
+D7
+02
+2A
+87
+13
+08
+00
+02
+85
+45
+C5
+46
+@00000B30
+05
+07
+B3
+87
+E5
+40
+B2
+97
+AA
+97
+A3
+0F
+07
+FF
+E3
+C9
+@00000B40
+F6
+FE
+41
+47
+85
+47
+63
+54
+C7
+00
+93
+07
+06
+FF
+3E
+95
+@00000B50
+83
+47
+29
+00
+13
+03
+29
+00
+E3
+93
+07
+B2
+25
+BE
+C2
+83
+@00000B60
+E3
+DE
+BF
+E6
+B3
+C2
+65
+02
+93
+03
+01
+12
+33
+8C
+03
+01
+@00000B70
+B2
+83
+13
+06
+28
+00
+33
+88
+54
+00
+03
+48
+08
+00
+B3
+E5
+@00000B80
+65
+02
+23
+04
+0C
+EF
+99
+BD
+01
+47
+A5
+48
+13
+16
+27
+00
+@00000B90
+32
+97
+05
+08
+06
+07
+2E
+97
+83
+45
+08
+00
+13
+07
+07
+FD
+@00000BA0
+13
+86
+05
+FD
+13
+76
+F6
+0F
+E3
+F2
+C8
+FE
+42
+89
+B5
+BE
+@00000BB0
+03
+27
+0B
+00
+11
+0B
+55
+B3
+03
+27
+0B
+00
+83
+45
+29
+00
+@00000BC0
+11
+0B
+13
+46
+F7
+FF
+7D
+86
+71
+8F
+09
+09
+B9
+BE
+91
+8E
+@00000BD0
+33
+85
+06
+01
+2E
+95
+9D
+B1
+03
+47
+09
+00
+BE
+86
+AA
+87
+@00000BE0
+36
+85
+23
+80
+E7
+00
+83
+47
+19
+00
+13
+03
+19
+00
+E3
+98
+@00000BF0
+07
+A8
+4D
+B4
+93
+E7
+17
+00
+A1
+46
+E9
+B9
+17
+06
+00
+20
+@00000C00
+13
+06
+86
+C2
+8D
+B1
+33
+07
+D5
+00
+93
+07
+00
+02
+63
+5B
+@00000C10
+D0
+04
+05
+05
+A3
+0F
+F5
+FE
+E3
+1D
+E5
+FE
+FD
+56
+F5
+B1
+@00000C20
+93
+09
+01
+02
+4E
+85
+BD
+B4
+13
+88
+F6
+FF
+63
+D2
+D5
+08
+@00000C30
+B3
+87
+B6
+40
+AA
+97
+13
+07
+00
+02
+05
+05
+A3
+0F
+E5
+FE
+@00000C40
+E3
+1D
+F5
+FE
+B3
+86
+D5
+40
+C2
+96
+3D
+B9
+46
+89
+31
+B3
+@00000C50
+41
+46
+31
+B5
+29
+46
+21
+B5
+93
+F5
+07
+01
+B9
+C1
+2A
+87
+@00000C60
+81
+45
+91
+B1
+83
+27
+0B
+00
+13
+07
+15
+00
+11
+0B
+23
+00
+@00000C70
+F5
+00
+13
+03
+19
+00
+83
+47
+19
+00
+3A
+85
+E3
+91
+07
+A0
+@00000C80
+11
+BC
+46
+89
+45
+BE
+09
+05
+A9
+BF
+93
+87
+E6
+FF
+C2
+86
+@00000C90
+3E
+88
+61
+B3
+93
+87
+E6
+FF
+B2
+86
+3E
+86
+B5
+B5
+2A
+87
+@00000CA0
+19
+B1
+13
+88
+F6
+FF
+E3
+45
+D0
+F8
+C2
+86
+2A
+87
+E5
+BE
+@00000CB0
+C2
+86
+D9
+BE
+AA
+87
+73
+27
+00
+B0
+01
+45
+98
+C3
+82
+80
+@00000CC0
+93
+17
+25
+00
+17
+F5
+FF
+1F
+13
+05
+05
+54
+3E
+95
+18
+41
+@00000CD0
+85
+47
+1C
+C7
+5C
+C7
+63
+8A
+F5
+00
+93
+07
+30
+36
+1C
+CF
+@00000CE0
+5C
+43
+E3
+DF
+07
+FE
+01
+45
+82
+80
+BD
+47
+1C
+CF
+CD
+BF
+@00000CF0
+93
+17
+25
+00
+17
+F5
+FF
+1F
+13
+05
+05
+51
+3E
+95
+1C
+41
+@00000D00
+88
+43
+13
+45
+F5
+FF
+7D
+81
+82
+80
+93
+17
+25
+00
+17
+F5
+@00000D10
+FF
+1F
+13
+05
+65
+4F
+3E
+95
+18
+41
+1C
+43
+E3
+CF
+07
+FE
+@00000D20
+0C
+C3
+01
+45
+82
+80
+93
+17
+25
+00
+17
+F5
+FF
+1F
+13
+05
+@00000D30
+A5
+4D
+3E
+95
+1C
+41
+DC
+43
+13
+C5
+F7
+FF
+23
+80
+F5
+00
+@00000D40
+7D
+81
+82
+80
+93
+17
+25
+00
+17
+F5
+FF
+1F
+13
+05
+C5
+4B
+@00000D50
+3E
+95
+1C
+41
+C8
+43
+E3
+4F
+05
+FE
+13
+75
+F5
+0F
+82
+80
+@00000D60
+93
+F5
+F5
+0F
+33
+07
+C5
+00
+AA
+87
+63
+57
+C0
+00
+85
+07
+@00000D70
+A3
+8F
+B7
+FE
+E3
+1D
+F7
+FE
+82
+80
+63
+5C
+C0
+00
+2A
+96
+@00000D80
+AA
+87
+03
+C7
+05
+00
+85
+07
+85
+05
+A3
+8F
+E7
+FE
+E3
+1A
+@00000D90
+F6
+FE
+82
+80
+63
+55
+C0
+02
+2E
+96
+19
+A0
+63
+01
+B6
+02
+@00000DA0
+83
+47
+05
+00
+03
+C7
+05
+00
+05
+05
+85
+05
+E3
+88
+E7
+FE
+@00000DB0
+33
+35
+F7
+00
+33
+05
+A0
+40
+09
+89
+7D
+15
+82
+80
+01
+45
+@00000DC0
+82
+80
+83
+47
+05
+00
+2A
+87
+01
+45
+81
+CB
+05
+05
+B3
+07
+@00000DD0
+A7
+00
+83
+C7
+07
+00
+FD
+FB
+82
+80
+82
+80
+83
+C7
+05
+00
+@00000DE0
+23
+00
+F5
+00
+83
+C7
+05
+00
+99
+CB
+AA
+87
+03
+C7
+15
+00
+@00000DF0
+85
+05
+85
+07
+23
+80
+E7
+00
+03
+C7
+05
+00
+65
+FB
+82
+80
+@00000E00
+19
+A0
+63
+9D
+E7
+00
+83
+47
+05
+00
+03
+C7
+05
+00
+05
+05
+@00000E10
+85
+05
+B3
+E6
+E7
+00
+F5
+F6
+01
+45
+82
+80
+33
+35
+F7
+00
+@00000E20
+33
+05
+A0
+40
+09
+89
+7D
+15
+82
+80
+AA
+87
+33
+08
+C5
+00
+@00000E30
+03
+C7
+07
+00
+B3
+06
+F8
+40
+19
+EB
+03
+C7
+05
+00
+0D
+C7
+@00000E40
+32
+95
+1D
+8D
+33
+25
+A0
+00
+33
+05
+A0
+40
+82
+80
+63
+5D
+@00000E50
+D0
+00
+83
+C6
+05
+00
+85
+07
+85
+05
+E3
+8B
+E6
+FC
+05
+45
+@00000E60
+E3
+E6
+E6
+FE
+7D
+55
+82
+80
+01
+45
+82
+80
+41
+11
+22
+C4
+@00000E70
+06
+C6
+A9
+47
+2A
+84
+63
+08
+F5
+00
+A2
+85
+22
+44
+B2
+40
+@00000E80
+01
+45
+41
+01
+59
+B5
+B5
+45
+01
+45
+41
+35
+A2
+85
+22
+44
+@00000E90
+B2
+40
+01
+45
+41
+01
+95
+BD
+41
+11
+01
+45
+22
+C4
+06
+C6
+@00000EA0
+55
+35
+B5
+47
+29
+44
+63
+03
+F5
+00
+2A
+84
+22
+85
+7D
+3F
+@00000EB0
+B2
+40
+22
+85
+22
+44
+41
+01
+82
+80
+41
+11
+22
+C4
+06
+C6
+@00000EC0
+2A
+84
+03
+45
+05
+00
+11
+C5
+05
+04
+4D
+37
+03
+45
+04
+00
+@00000ED0
+65
+FD
+B2
+40
+22
+44
+01
+45
+41
+01
+82
+80
+41
+11
+22
+C4
+@00000EE0
+26
+C2
+4A
+C0
+06
+C6
+29
+49
+2A
+84
+81
+44
+75
+37
+63
+0C
+@00000EF0
+25
+01
+23
+00
+A4
+00
+93
+87
+14
+00
+05
+04
+19
+C5
+BE
+84
+@00000F00
+61
+3F
+E3
+18
+25
+FF
+23
+00
+04
+00
+B2
+40
+22
+44
+02
+49
+@00000F10
+26
+85
+92
+44
+41
+01
+82
+80
+01
+11
+06
+CE
+22
+CC
+23
+06
+@00000F20
+01
+00
+05
+ED
+91
+E1
+85
+45
+93
+07
+B1
+00
+13
+07
+00
+03
+@00000F30
+91
+C5
+23
+80
+E7
+00
+FD
+15
+FD
+17
+E5
+FD
+03
+C5
+17
+00
+@00000F40
+13
+84
+17
+00
+11
+C5
+05
+04
+15
+37
+03
+45
+04
+00
+65
+FD
+@00000F50
+F2
+40
+62
+44
+01
+45
+05
+61
+82
+80
+2A
+87
+93
+77
+F7
+00
+@00000F60
+17
+08
+00
+20
+13
+08
+C8
+8C
+C2
+97
+03
+C5
+07
+00
+13
+04
+@00000F70
+B1
+00
+93
+07
+F4
+FF
+A3
+80
+A7
+00
+11
+83
+99
+CD
+FD
+15
+@00000F80
+55
+D7
+3E
+84
+93
+77
+F7
+00
+C2
+97
+03
+C5
+07
+00
+11
+83
+@00000F90
+93
+07
+F4
+FF
+A3
+80
+A7
+00
+FD
+F1
+93
+76
+F7
+00
+C2
+96
+@00000FA0
+13
+86
+F7
+FF
+45
+D3
+03
+C5
+06
+00
+11
+83
+3E
+84
+23
+80
+@00000FB0
+A7
+00
+93
+76
+F7
+00
+B2
+87
+C2
+96
+13
+86
+F7
+FF
+59
+D3
+@00000FC0
+DD
+B7
+41
+11
+01
+45
+06
+C6
+F9
+20
+B2
+40
+97
+27
+00
+20
+@00000FD0
+23
+A4
+A7
+08
+97
+27
+00
+20
+23
+A2
+A7
+08
+85
+47
+17
+27
+@00000FE0
+00
+20
+23
+2F
+F7
+06
+41
+01
+82
+80
+85
+47
+23
+2C
+F5
+FE
+@00000FF0
+82
+80
+41
+11
+4A
+C0
+17
+29
+00
+20
+13
+09
+69
+06
+83
+27
+@00001000
+09
+00
+22
+C4
+06
+C6
+26
+C2
+13
+04
+85
+00
+A1
+C7
+97
+24
+@00001010
+00
+20
+93
+84
+64
+04
+94
+40
+17
+25
+00
+20
+03
+25
+05
+04
+@00001020
+63
+08
+D5
+04
+18
+41
+5C
+41
+19
+C3
+63
+DD
+87
+04
+3E
+95
+@00001030
+E3
+1A
+D5
+FE
+22
+85
+85
+20
+88
+40
+B3
+07
+85
+00
+9C
+C0
+@00001040
+23
+20
+05
+00
+40
+C1
+B2
+40
+22
+44
+92
+44
+02
+49
+21
+05
+@00001050
+41
+01
+82
+80
+01
+45
+81
+20
+97
+27
+00
+20
+23
+A0
+A7
+00
+@00001060
+97
+24
+00
+20
+93
+84
+44
+FF
+85
+47
+88
+C0
+23
+20
+F9
+00
+@00001070
+22
+85
+15
+20
+88
+40
+B3
+07
+85
+00
+9C
+C0
+23
+20
+05
+00
+@00001080
+40
+C1
+D1
+B7
+B2
+40
+22
+44
+23
+20
+05
+00
+92
+44
+02
+49
+@00001090
+21
+05
+41
+01
+82
+80
+17
+27
+00
+20
+13
+07
+A7
+FC
+1C
+43
+@000010A0
+89
+C7
+3E
+95
+08
+C3
+3E
+85
+82
+80
+97
+27
+00
+20
+93
+87
+@000010B0
+A7
+FB
+3E
+95
+08
+C3
+3E
+85
+82
+80
+@000010BA
+35
+71
+13
+05
+00
+03
+06
+CF
+22
+CD
+E6
+DA
+26
+CB
+4A
+C9
+@000010CA
+4E
+C7
+52
+C5
+56
+C3
+5A
+C1
+DE
+DE
+E2
+DC
+EA
+D8
+EE
+D6
+@000010DA
+21
+3F
+AA
+87
+17
+24
+00
+20
+13
+04
+E4
+F6
+13
+05
+00
+03
+@000010EA
+1C
+C0
+19
+37
+1C
+40
+97
+2C
+00
+20
+93
+8C
+0C
+F6
+23
+A0
+@000010FA
+AC
+00
+1C
+C1
+89
+47
+1C
+C5
+93
+07
+80
+02
+5C
+C5
+97
+F5
+@0000110A
+FF
+1F
+93
+85
+45
+11
+23
+22
+05
+00
+41
+05
+D9
+31
+97
+F5
+@0000111A
+FF
+1F
+93
+85
+45
+12
+08
+10
+6D
+39
+A9
+47
+17
+F7
+FF
+1F
+@0000112A
+13
+07
+67
+7F
+17
+F5
+FF
+1F
+13
+05
+25
+3B
+23
+2E
+F7
+64
+@0000113A
+EF
+F0
+CF
+CB
+17
+F5
+FF
+1F
+13
+05
+E5
+11
+EF
+F0
+0F
+CB
+@0000114A
+17
+F5
+FF
+1F
+13
+05
+65
+39
+EF
+F0
+4F
+CA
+97
+F7
+FF
+1F
+@0000115A
+83
+A7
+A7
+6E
+63
+87
+07
+50
+17
+F5
+FF
+1F
+13
+05
+A5
+12
+@0000116A
+EF
+F0
+CF
+C8
+17
+F5
+FF
+1F
+13
+05
+25
+37
+EF
+F0
+0F
+C8
+@0000117A
+17
+F5
+FF
+1F
+13
+05
+E5
+16
+EF
+F0
+4F
+C7
+17
+F5
+FF
+1F
+@0000118A
+13
+05
+A5
+35
+EF
+F0
+8F
+C6
+A9
+45
+17
+F5
+FF
+1F
+13
+05
+@0000119A
+C5
+18
+EF
+F0
+AF
+C5
+17
+F5
+FF
+1F
+13
+05
+45
+6A
+31
+36
+@000011AA
+97
+F7
+FF
+1F
+93
+87
+A7
+69
+9C
+43
+17
+27
+00
+20
+13
+07
+@000011BA
+87
+E8
+85
+44
+1C
+C3
+97
+29
+00
+20
+93
+89
+19
+E8
+17
+2A
+@000011CA
+00
+20
+13
+0A
+CA
+E7
+17
+24
+00
+20
+13
+04
+04
+E7
+97
+2A
+@000011DA
+00
+20
+93
+8A
+0A
+E7
+93
+0B
+10
+04
+05
+4B
+17
+FD
+FF
+1F
+@000011EA
+13
+0D
+AD
+16
+17
+FC
+FF
+1F
+13
+0C
+2C
+18
+93
+07
+20
+04
+@000011FA
+EA
+85
+88
+00
+23
+00
+F4
+00
+23
+80
+79
+01
+23
+20
+6A
+01
+@0000120A
+C9
+3E
+8C
+00
+08
+10
+5A
+CE
+EF
+F0
+EF
+8C
+93
+37
+15
+00
+@0000121A
+30
+08
+8D
+45
+23
+20
+FA
+00
+09
+45
+9D
+47
+3E
+CC
+EF
+F0
+@0000122A
+EF
+84
+E2
+46
+0D
+46
+97
+F5
+FF
+1F
+93
+85
+C5
+6E
+17
+F5
+@0000123A
+FF
+1F
+13
+05
+C5
+61
+EF
+F0
+EF
+83
+03
+A5
+0C
+00
+EF
+E0
+@0000124A
+3F
+EC
+03
+47
+04
+00
+93
+07
+00
+04
+63
+FA
+E7
+40
+93
+0D
+@0000125A
+10
+04
+0D
+49
+09
+A8
+03
+47
+04
+00
+93
+87
+1D
+00
+93
+FD
+@0000126A
+F7
+0F
+63
+6C
+B7
+03
+93
+05
+30
+04
+6E
+85
+EF
+F0
+EF
+84
+@0000127A
+72
+47
+E3
+12
+E5
+FE
+6C
+08
+01
+45
+EF
+E0
+7F
+FB
+E2
+85
+@0000128A
+88
+00
+81
+3E
+03
+47
+04
+00
+93
+87
+1D
+00
+23
+A0
+9A
+00
+@0000129A
+93
+FD
+F7
+0F
+26
+89
+E3
+78
+B7
+FD
+93
+17
+19
+00
+3E
+99
+@000012AA
+62
+46
+03
+C7
+09
+00
+B3
+46
+C9
+02
+B6
+87
+63
+18
+77
+01
+@000012BA
+83
+A7
+0A
+00
+13
+87
+96
+00
+B3
+07
+F7
+40
+85
+04
+2D
+47
+@000012CA
+E3
+96
+E4
+F2
+17
+F5
+FF
+1F
+13
+05
+65
+57
+36
+C4
+32
+C2
+@000012DA
+3E
+C6
+97
+FB
+FF
+1F
+93
+8B
+8B
+56
+C1
+3A
+03
+A7
+0B
+00
+@000012EA
+17
+2B
+00
+20
+13
+0B
+EB
+D4
+17
+F5
+FF
+1F
+13
+05
+E5
+09
+@000012FA
+23
+20
+EB
+00
+EF
+F0
+8F
+AF
+17
+F5
+FF
+1F
+13
+05
+E5
+1D
+@0000130A
+EF
+F0
+CF
+AE
+17
+F5
+FF
+1F
+13
+05
+25
+09
+EF
+F0
+0F
+AE
+@0000131A
+17
+F5
+FF
+1F
+13
+05
+65
+1C
+EF
+F0
+4F
+AD
+83
+A5
+0A
+00
+@0000132A
+17
+F5
+FF
+1F
+13
+05
+E5
+0A
+97
+24
+00
+20
+93
+84
+24
+D0
+@0000133A
+EF
+F0
+CF
+AB
+95
+45
+17
+F5
+FF
+1F
+13
+05
+45
+0B
+EF
+F0
+@0000134A
+EF
+AA
+83
+25
+0A
+00
+17
+F5
+FF
+1F
+13
+05
+05
+0C
+EF
+F0
+@0000135A
+EF
+A9
+85
+45
+17
+F5
+FF
+1F
+13
+05
+65
+09
+EF
+F0
+0F
+A9
+@0000136A
+83
+C5
+09
+00
+17
+F5
+FF
+1F
+13
+05
+E5
+0B
+EF
+F0
+0F
+A8
+@0000137A
+93
+05
+10
+04
+17
+F5
+FF
+1F
+13
+05
+A5
+0C
+EF
+F0
+0F
+A7
+@0000138A
+83
+45
+04
+00
+17
+F5
+FF
+1F
+13
+05
+65
+0D
+17
+24
+00
+20
+@0000139A
+13
+04
+64
+CB
+EF
+F0
+8F
+A5
+93
+05
+20
+04
+17
+F5
+FF
+1F
+@000013AA
+13
+05
+25
+0A
+EF
+F0
+8F
+A4
+83
+A5
+0B
+03
+17
+F5
+FF
+1F
+@000013BA
+13
+05
+A5
+0C
+EF
+F0
+8F
+A3
+9D
+45
+17
+F5
+FF
+1F
+13
+05
+@000013CA
+05
+03
+EF
+F0
+AF
+A2
+97
+F7
+FF
+1F
+93
+87
+C7
+54
+83
+A5
+@000013DA
+C7
+65
+17
+F5
+FF
+1F
+13
+05
+05
+0C
+EF
+F0
+2F
+A1
+17
+F5
+@000013EA
+FF
+1F
+13
+05
+05
+0D
+EF
+F0
+6F
+A0
+17
+F5
+FF
+1F
+13
+05
+@000013FA
+05
+0F
+EF
+F0
+AF
+9F
+03
+A7
+0C
+00
+17
+F5
+FF
+1F
+13
+05
+@0000140A
+C5
+0E
+0C
+43
+EF
+F0
+8F
+9E
+17
+F5
+FF
+1F
+13
+05
+A5
+0F
+@0000141A
+EF
+F0
+CF
+9D
+03
+A7
+0C
+00
+17
+F5
+FF
+1F
+13
+05
+E5
+11
+@0000142A
+4C
+43
+EF
+F0
+AF
+9C
+81
+45
+17
+F5
+FF
+1F
+13
+05
+25
+FC
+@0000143A
+EF
+F0
+CF
+9B
+03
+A7
+0C
+00
+17
+F5
+FF
+1F
+13
+05
+A5
+11
+@0000144A
+0C
+47
+EF
+F0
+AF
+9A
+89
+45
+17
+F5
+FF
+1F
+13
+05
+25
+FA
+@0000145A
+EF
+F0
+CF
+99
+03
+A7
+0C
+00
+17
+F5
+FF
+1F
+13
+05
+65
+11
+@0000146A
+4C
+47
+EF
+F0
+AF
+98
+C5
+45
+17
+F5
+FF
+1F
+13
+05
+25
+F8
+@0000147A
+EF
+F0
+CF
+97
+83
+A5
+0C
+00
+17
+F5
+FF
+1F
+13
+05
+25
+11
+@0000148A
+C1
+05
+EF
+F0
+AF
+96
+17
+F5
+FF
+1F
+13
+05
+05
+12
+EF
+F0
+@0000149A
+EF
+95
+17
+F5
+FF
+1F
+13
+05
+C5
+14
+EF
+F0
+2F
+95
+18
+40
+@000014AA
+17
+F5
+FF
+1F
+13
+05
+65
+04
+0C
+43
+EF
+F0
+2F
+94
+17
+F5
+@000014BA
+FF
+1F
+13
+05
+45
+14
+EF
+F0
+6F
+93
+18
+40
+17
+F5
+FF
+1F
+@000014CA
+13
+05
+A5
+07
+4C
+43
+EF
+F0
+6F
+92
+81
+45
+17
+F5
+FF
+1F
+@000014DA
+13
+05
+E5
+F1
+EF
+F0
+8F
+91
+18
+40
+17
+F5
+FF
+1F
+13
+05
+@000014EA
+85
+07
+0C
+47
+EF
+F0
+8F
+90
+85
+45
+17
+F5
+FF
+1F
+13
+05
+@000014FA
+05
+F0
+EF
+F0
+AF
+8F
+18
+40
+17
+F5
+FF
+1F
+13
+05
+65
+07
+@0000150A
+4C
+47
+EF
+F0
+AF
+8E
+C9
+45
+17
+F5
+FF
+1F
+13
+05
+25
+EE
+@0000151A
+EF
+F0
+CF
+8D
+0C
+40
+17
+F5
+FF
+1F
+13
+05
+45
+07
+17
+24
+@0000152A
+00
+20
+13
+04
+44
+B1
+C1
+05
+EF
+F0
+4F
+8C
+17
+F5
+FF
+1F
+@0000153A
+13
+05
+A5
+07
+EF
+F0
+8F
+8B
+B2
+47
+17
+F5
+FF
+1F
+13
+05
+@0000154A
+85
+0F
+BE
+85
+EF
+F0
+8F
+8A
+95
+45
+17
+F5
+FF
+1F
+13
+05
+@0000155A
+05
+EA
+EF
+F0
+AF
+89
+12
+46
+A2
+46
+17
+F5
+FF
+1F
+13
+05
+@0000156A
+45
+0F
+33
+09
+C9
+40
+93
+17
+39
+00
+33
+89
+27
+41
+B3
+05
+@0000157A
+D9
+40
+EF
+F0
+AF
+87
+B5
+45
+17
+F5
+FF
+1F
+13
+05
+25
+E7
+@0000158A
+EF
+F0
+CF
+86
+E2
+45
+17
+F5
+FF
+1F
+13
+05
+45
+0E
+EF
+F0
+@0000159A
+EF
+85
+9D
+45
+17
+F5
+FF
+1F
+13
+05
+65
+E5
+EF
+F0
+0F
+85
+@000015AA
+F2
+45
+17
+F5
+FF
+1F
+13
+05
+45
+0E
+EF
+F0
+2F
+84
+85
+45
+@000015BA
+17
+F5
+FF
+1F
+13
+05
+A5
+E3
+EF
+F0
+4F
+83
+0C
+10
+17
+F5
+@000015CA
+FF
+1F
+13
+05
+45
+0E
+EF
+F0
+6F
+82
+17
+F5
+FF
+1F
+13
+05
+@000015DA
+45
+0F
+EF
+F0
+AF
+81
+8C
+00
+17
+F5
+FF
+1F
+13
+05
+E5
+11
+@000015EA
+EF
+F0
+CF
+80
+17
+F5
+FF
+1F
+13
+05
+E5
+12
+EF
+F0
+0F
+80
+@000015FA
+17
+F5
+FF
+1F
+13
+05
+65
+EE
+EF
+E0
+5F
+FF
+18
+40
+83
+27
+@0000160A
+0B
+00
+17
+F5
+FF
+1F
+13
+05
+85
+14
+99
+8F
+9C
+C0
+EF
+E0
+@0000161A
+FF
+FD
+17
+F5
+FF
+1F
+13
+05
+05
+17
+EF
+E0
+3F
+FD
+94
+40
+@0000162A
+03
+26
+0B
+00
+0C
+40
+17
+F5
+FF
+1F
+13
+05
+C5
+17
+EF
+E0
+@0000163A
+FF
+FB
+17
+F5
+FF
+1F
+13
+05
+45
+EA
+EF
+E0
+3F
+FB
+FA
+40
+@0000164A
+6A
+44
+DA
+44
+4A
+49
+BA
+49
+2A
+4A
+9A
+4A
+0A
+4B
+F6
+5B
+@0000165A
+66
+5C
+D6
+5C
+46
+5D
+B6
+5D
+01
+45
+0D
+61
+82
+80
+25
+49
+@0000166A
+81
+B1
+17
+F5
+FF
+1F
+13
+05
+C5
+C4
+EF
+E0
+3F
+F8
+17
+F5
+@0000167A
+FF
+1F
+13
+05
+85
+E6
+EF
+E0
+7F
+F7
+DD
+BC
+@00001686
+41
+11
+0F
+00
+F0
+0F
+0F
+10
+00
+00
+14
+41
+05
+47
+85
+47
+@00001696
+63
+86
+E6
+00
+1C
+C1
+18
+41
+E3
+1E
+F7
+FE
+38
+51
+93
+07
+@000016A6
+05
+06
+09
+C7
+23
+A0
+07
+00
+98
+43
+6D
+FF
+93
+06
+85
+04
+@000016B6
+98
+42
+E3
+4F
+07
+FE
+13
+07
+50
+03
+38
+C5
+37
+37
+0B
+00
+@000016C6
+13
+07
+77
+A4
+3A
+C6
+74
+51
+32
+46
+13
+07
+45
+06
+63
+08
+@000016D6
+D6
+00
+B2
+46
+14
+C3
+10
+43
+B2
+46
+E3
+1C
+D6
+FE
+30
+51
+@000016E6
+85
+46
+05
+47
+63
+06
+D6
+00
+98
+C3
+94
+43
+E3
+9E
+E6
+FE
+@000016F6
+41
+01
+82
+80
+@000016FA
+70
+07
+00
+E0
+0C
+07
+00
+E0
+0C
+07
+00
+E0
+68
+07
+00
+E0
+@0000170A
+0C
+07
+00
+E0
+0C
+07
+00
+E0
+0C
+07
+00
+E0
+0C
+07
+00
+E0
+@0000171A
+0C
+07
+00
+E0
+0C
+07
+00
+E0
+0C
+07
+00
+E0
+60
+07
+00
+E0
+@0000172A
+0C
+07
+00
+E0
+58
+07
+00
+E0
+0C
+07
+00
+E0
+0C
+07
+00
+E0
+@0000173A
+50
+07
+00
+E0
+0C
+09
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@0000174A
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@0000175A
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@0000176A
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@0000177A
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@0000178A
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@0000179A
+00
+09
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@000017AA
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@000017BA
+5A
+07
+00
+E0
+6C
+0B
+00
+E0
+5A
+07
+00
+E0
+BE
+08
+00
+E0
+@000017CA
+B0
+08
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@000017DA
+5A
+07
+00
+E0
+B0
+08
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@000017EA
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+A8
+08
+00
+E0
+@000017FA
+8A
+08
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+10
+08
+00
+E0
+@0000180A
+5A
+07
+00
+E0
+06
+08
+00
+E0
+5A
+07
+00
+E0
+5A
+07
+00
+E0
+@0000181A
+EA
+07
+00
+E0
+5C
+09
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@0000182A
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@0000183A
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@0000184A
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@0000185A
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@0000186A
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@0000187A
+54
+09
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@0000188A
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@0000189A
+76
+06
+00
+E0
+60
+09
+00
+E0
+76
+06
+00
+E0
+DC
+07
+00
+E0
+@000018AA
+34
+09
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@000018BA
+76
+06
+00
+E0
+34
+09
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@000018CA
+76
+06
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+50
+09
+00
+E0
+@000018DA
+A8
+07
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+2E
+07
+00
+E0
+@000018EA
+76
+06
+00
+E0
+30
+0B
+00
+E0
+76
+06
+00
+E0
+76
+06
+00
+E0
+@000018FA
+2C
+0B
+00
+E0
+00
+30
+01
+10
+00
+30
+02
+10
+00
+30
+03
+10
+@0000190A
+00
+30
+04
+10
+00
+30
+05
+10
+00
+30
+06
+10
+44
+48
+52
+59
+@0000191A
+53
+54
+4F
+4E
+45
+20
+50
+52
+4F
+47
+52
+41
+4D
+2C
+20
+53
+@0000192A
+4F
+4D
+45
+20
+53
+54
+52
+49
+4E
+47
+00
+00
+44
+48
+52
+59
+@0000193A
+53
+54
+4F
+4E
+45
+20
+50
+52
+4F
+47
+52
+41
+4D
+2C
+20
+31
+@0000194A
+27
+53
+54
+20
+53
+54
+52
+49
+4E
+47
+00
+00
+44
+68
+72
+79
+@0000195A
+73
+74
+6F
+6E
+65
+20
+42
+65
+6E
+63
+68
+6D
+61
+72
+6B
+2C
+@0000196A
+20
+56
+65
+72
+73
+69
+6F
+6E
+20
+32
+2E
+31
+20
+28
+4C
+61
+@0000197A
+6E
+67
+75
+61
+67
+65
+3A
+20
+43
+29
+0A
+00
+50
+72
+6F
+67
+@0000198A
+72
+61
+6D
+20
+63
+6F
+6D
+70
+69
+6C
+65
+64
+20
+77
+69
+74
+@0000199A
+68
+20
+27
+72
+65
+67
+69
+73
+74
+65
+72
+27
+20
+61
+74
+74
+@000019AA
+72
+69
+62
+75
+74
+65
+0A
+00
+50
+72
+6F
+67
+72
+61
+6D
+20
+@000019BA
+63
+6F
+6D
+70
+69
+6C
+65
+64
+20
+77
+69
+74
+68
+6F
+75
+74
+@000019CA
+20
+27
+72
+65
+67
+69
+73
+74
+65
+72
+27
+20
+61
+74
+74
+72
+@000019DA
+69
+62
+75
+74
+65
+0A
+00
+00
+50
+6C
+65
+61
+73
+65
+20
+67
+@000019EA
+69
+76
+65
+20
+74
+68
+65
+20
+6E
+75
+6D
+62
+65
+72
+20
+6F
+@000019FA
+66
+20
+72
+75
+6E
+73
+20
+74
+68
+72
+6F
+75
+67
+68
+20
+74
+@00001A0A
+68
+65
+20
+62
+65
+6E
+63
+68
+6D
+61
+72
+6B
+3A
+20
+00
+00
+@00001A1A
+45
+78
+65
+63
+75
+74
+69
+6F
+6E
+20
+73
+74
+61
+72
+74
+73
+@00001A2A
+2C
+20
+25
+64
+20
+72
+75
+6E
+73
+20
+74
+68
+72
+6F
+75
+67
+@00001A3A
+68
+20
+44
+68
+72
+79
+73
+74
+6F
+6E
+65
+0A
+00
+00
+00
+00
+@00001A4A
+44
+48
+52
+59
+53
+54
+4F
+4E
+45
+20
+50
+52
+4F
+47
+52
+41
+@00001A5A
+4D
+2C
+20
+32
+27
+4E
+44
+20
+53
+54
+52
+49
+4E
+47
+00
+00
+@00001A6A
+44
+48
+52
+59
+53
+54
+4F
+4E
+45
+20
+50
+52
+4F
+47
+52
+41
+@00001A7A
+4D
+2C
+20
+33
+27
+52
+44
+20
+53
+54
+52
+49
+4E
+47
+00
+00
+@00001A8A
+45
+78
+65
+63
+75
+74
+69
+6F
+6E
+20
+65
+6E
+64
+73
+0A
+00
+@00001A9A
+46
+69
+6E
+61
+6C
+20
+76
+61
+6C
+75
+65
+73
+20
+6F
+66
+20
+@00001AAA
+74
+68
+65
+20
+76
+61
+72
+69
+61
+62
+6C
+65
+73
+20
+75
+73
+@00001ABA
+65
+64
+20
+69
+6E
+20
+74
+68
+65
+20
+62
+65
+6E
+63
+68
+6D
+@00001ACA
+61
+72
+6B
+3A
+0A
+00
+00
+00
+49
+6E
+74
+5F
+47
+6C
+6F
+62
+@00001ADA
+3A
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+25
+64
+0A
+@00001AEA
+00
+00
+00
+00
+20
+20
+20
+20
+20
+20
+20
+20
+73
+68
+6F
+75
+@00001AFA
+6C
+64
+20
+62
+65
+3A
+20
+20
+20
+25
+64
+0A
+00
+00
+00
+00
+@00001B0A
+42
+6F
+6F
+6C
+5F
+47
+6C
+6F
+62
+3A
+20
+20
+20
+20
+20
+20
+@00001B1A
+20
+20
+20
+20
+20
+25
+64
+0A
+00
+00
+00
+00
+43
+68
+5F
+31
+@00001B2A
+5F
+47
+6C
+6F
+62
+3A
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+@00001B3A
+20
+25
+63
+0A
+00
+00
+00
+00
+20
+20
+20
+20
+20
+20
+20
+20
+@00001B4A
+73
+68
+6F
+75
+6C
+64
+20
+62
+65
+3A
+20
+20
+20
+25
+63
+0A
+@00001B5A
+00
+00
+00
+00
+43
+68
+5F
+32
+5F
+47
+6C
+6F
+62
+3A
+20
+20
+@00001B6A
+20
+20
+20
+20
+20
+20
+20
+20
+20
+25
+63
+0A
+00
+00
+00
+00
+@00001B7A
+41
+72
+72
+5F
+31
+5F
+47
+6C
+6F
+62
+5B
+38
+5D
+3A
+20
+20
+@00001B8A
+20
+20
+20
+20
+20
+25
+64
+0A
+00
+00
+00
+00
+41
+72
+72
+5F
+@00001B9A
+32
+5F
+47
+6C
+6F
+62
+5B
+38
+5D
+5B
+37
+5D
+3A
+20
+20
+20
+@00001BAA
+20
+25
+64
+0A
+00
+00
+00
+00
+20
+20
+20
+20
+20
+20
+20
+20
+@00001BBA
+73
+68
+6F
+75
+6C
+64
+20
+62
+65
+3A
+20
+20
+20
+4E
+75
+6D
+@00001BCA
+62
+65
+72
+5F
+4F
+66
+5F
+52
+75
+6E
+73
+20
+2B
+20
+31
+30
+@00001BDA
+0A
+00
+00
+00
+50
+74
+72
+5F
+47
+6C
+6F
+62
+2D
+3E
+0A
+00
+@00001BEA
+20
+20
+50
+74
+72
+5F
+43
+6F
+6D
+70
+3A
+20
+20
+20
+20
+20
+@00001BFA
+20
+20
+20
+20
+20
+25
+64
+0A
+00
+00
+00
+00
+20
+20
+20
+20
+@00001C0A
+20
+20
+20
+20
+73
+68
+6F
+75
+6C
+64
+20
+62
+65
+3A
+20
+20
+@00001C1A
+20
+28
+69
+6D
+70
+6C
+65
+6D
+65
+6E
+74
+61
+74
+69
+6F
+6E
+@00001C2A
+2D
+64
+65
+70
+65
+6E
+64
+65
+6E
+74
+29
+0A
+00
+00
+00
+00
+@00001C3A
+20
+20
+44
+69
+73
+63
+72
+3A
+20
+20
+20
+20
+20
+20
+20
+20
+@00001C4A
+20
+20
+20
+20
+20
+25
+64
+0A
+00
+00
+00
+00
+20
+20
+45
+6E
+@00001C5A
+75
+6D
+5F
+43
+6F
+6D
+70
+3A
+20
+20
+20
+20
+20
+20
+20
+20
+@00001C6A
+20
+25
+64
+0A
+00
+00
+00
+00
+20
+20
+49
+6E
+74
+5F
+43
+6F
+@00001C7A
+6D
+70
+3A
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+25
+64
+0A
+@00001C8A
+00
+00
+00
+00
+20
+20
+53
+74
+72
+5F
+43
+6F
+6D
+70
+3A
+20
+@00001C9A
+20
+20
+20
+20
+20
+20
+20
+20
+20
+25
+73
+0A
+00
+00
+00
+00
+@00001CAA
+20
+20
+20
+20
+20
+20
+20
+20
+73
+68
+6F
+75
+6C
+64
+20
+62
+@00001CBA
+65
+3A
+20
+20
+20
+44
+48
+52
+59
+53
+54
+4F
+4E
+45
+20
+50
+@00001CCA
+52
+4F
+47
+52
+41
+4D
+2C
+20
+53
+4F
+4D
+45
+20
+53
+54
+52
+@00001CDA
+49
+4E
+47
+0A
+00
+00
+00
+00
+4E
+65
+78
+74
+5F
+50
+74
+72
+@00001CEA
+5F
+47
+6C
+6F
+62
+2D
+3E
+0A
+00
+00
+00
+00
+20
+20
+20
+20
+@00001CFA
+20
+20
+20
+20
+73
+68
+6F
+75
+6C
+64
+20
+62
+65
+3A
+20
+20
+@00001D0A
+20
+28
+69
+6D
+70
+6C
+65
+6D
+65
+6E
+74
+61
+74
+69
+6F
+6E
+@00001D1A
+2D
+64
+65
+70
+65
+6E
+64
+65
+6E
+74
+29
+2C
+20
+73
+61
+6D
+@00001D2A
+65
+20
+61
+73
+20
+61
+62
+6F
+76
+65
+0A
+00
+49
+6E
+74
+5F
+@00001D3A
+31
+5F
+4C
+6F
+63
+3A
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+@00001D4A
+20
+25
+64
+0A
+00
+00
+00
+00
+49
+6E
+74
+5F
+32
+5F
+4C
+6F
+@00001D5A
+63
+3A
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+25
+64
+0A
+@00001D6A
+00
+00
+00
+00
+49
+6E
+74
+5F
+33
+5F
+4C
+6F
+63
+3A
+20
+20
+@00001D7A
+20
+20
+20
+20
+20
+20
+20
+20
+20
+25
+64
+0A
+00
+00
+00
+00
+@00001D8A
+45
+6E
+75
+6D
+5F
+4C
+6F
+63
+3A
+20
+20
+20
+20
+20
+20
+20
+@00001D9A
+20
+20
+20
+20
+20
+25
+64
+0A
+00
+00
+00
+00
+53
+74
+72
+5F
+@00001DAA
+31
+5F
+4C
+6F
+63
+3A
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+@00001DBA
+20
+25
+73
+0A
+00
+00
+00
+00
+20
+20
+20
+20
+20
+20
+20
+20
+@00001DCA
+73
+68
+6F
+75
+6C
+64
+20
+62
+65
+3A
+20
+20
+20
+44
+48
+52
+@00001DDA
+59
+53
+54
+4F
+4E
+45
+20
+50
+52
+4F
+47
+52
+41
+4D
+2C
+20
+@00001DEA
+31
+27
+53
+54
+20
+53
+54
+52
+49
+4E
+47
+0A
+00
+00
+00
+00
+@00001DFA
+53
+74
+72
+5F
+32
+5F
+4C
+6F
+63
+3A
+20
+20
+20
+20
+20
+20
+@00001E0A
+20
+20
+20
+20
+20
+25
+73
+0A
+00
+00
+00
+00
+20
+20
+20
+20
+@00001E1A
+20
+20
+20
+20
+73
+68
+6F
+75
+6C
+64
+20
+62
+65
+3A
+20
+20
+@00001E2A
+20
+44
+48
+52
+59
+53
+54
+4F
+4E
+45
+20
+50
+52
+4F
+47
+52
+@00001E3A
+41
+4D
+2C
+20
+32
+27
+4E
+44
+20
+53
+54
+52
+49
+4E
+47
+0A
+@00001E4A
+00
+00
+00
+00
+4D
+65
+61
+73
+75
+72
+65
+64
+20
+74
+69
+6D
+@00001E5A
+65
+20
+74
+6F
+6F
+20
+73
+6D
+61
+6C
+6C
+20
+74
+6F
+20
+6F
+@00001E6A
+62
+74
+61
+69
+6E
+20
+6D
+65
+61
+6E
+69
+6E
+67
+66
+75
+6C
+@00001E7A
+20
+72
+65
+73
+75
+6C
+74
+73
+0A
+00
+00
+00
+50
+6C
+65
+61
+@00001E8A
+73
+65
+20
+69
+6E
+63
+72
+65
+61
+73
+65
+20
+6E
+75
+6D
+62
+@00001E9A
+65
+72
+20
+6F
+66
+20
+72
+75
+6E
+73
+0A
+00
+42
+65
+67
+69
+@00001EAA
+6E
+5F
+74
+69
+6D
+65
+3D
+25
+64
+20
+45
+6E
+64
+5F
+54
+69
+@00001EBA
+6D
+65
+3D
+25
+64
+20
+55
+73
+65
+72
+5F
+54
+69
+6D
+65
+3D
+@00001ECA
+25
+64
+0A
+00
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+61
+62
+@00001EDA
+63
+64
+65
+66
+67
+68
+69
+6A
+6B
+6C
+6D
+6E
+6F
+70
+71
+72
+@00001EEA
+73
+74
+75
+76
+77
+78
+79
+7A
+00
+00
+00
+00
+30
+31
+32
+33
+@00001EFA
+34
+35
+36
+37
+38
+39
+41
+42
+43
+44
+45
+46
+47
+48
+49
+4A
+@00001F0A
+4B
+4C
+4D
+4E
+4F
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+5A
+@00001F1A
+00
+00
+00
+00
+3C
+4E
+55
+4C
+4C
+3E
+00
+00
+30
+31
+32
+33
+@00001F2A
+34
+35
+36
+37
+38
+39
+61
+62
+63
+64
+65
+66
+00
+00
+00
+00
+@00001F3A
+01
+00
+00
+00
diff --git a/verilog/dv/dhrystone/wave.do b/verilog/dv/dhrystone/wave.do
new file mode 100644
index 0000000..8dcc64d
--- /dev/null
+++ b/verilog/dv/dhrystone/wave.do
@@ -0,0 +1,90 @@
+onerror {resume}
+quietly virtual function -install /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core -env /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core { ( ~(ctrl_killd ) )} dbgTemp1_ex_reg_valid_56
+quietly virtual function -install /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/ibuf/exp -env /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/ibuf/exp { (_io_out_T_2[4:0] == 5'b11111)} dbgTemp143_1026
+quietly WaveActivateNextPane {} 0
+add wave -noupdate -expand -group CPU -radix decimal /testbench/cycle
+add wave -noupdate -expand -group CPU -expand -group coreMonitor /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/coreMonitorBundle_pc
+add wave -noupdate -expand -group CPU -expand -group coreMonitor /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/coreMonitorBundle_inst
+add wave -noupdate -expand -group CPU -expand -group coreMonitor /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/coreMonitorBundle_valid
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_valid
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_ready
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_bits_cmd
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_bits_addr
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_bits_size
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_valid
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_bits_data
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_bits_data_word_bypass
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_bits_has_data
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_bits_tag
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_s1_data_data
+add wave -noupdate -expand -group CPU -expand -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_s1_kill
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_valid
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_ready
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_opcode
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_size
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_param
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_address
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_corrupt
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_mask
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_data
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_source
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_valid
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_ready
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_bits_opcode
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_bits_size
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_bits_source
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_bits_data
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_valid
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_ready
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_opcode
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_param
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_address
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_corrupt
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_data
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_mask
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_size
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_source
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_valid
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_ready
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_bits_opcode
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_bits_data
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_bits_size
+add wave -noupdate -expand -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_bits_source
+add wave -noupdate -expand -group SPI-PSRAM /testbench/spi_ram/SCK_i
+add wave -noupdate -expand -group SPI-PSRAM /testbench/spi_ram/nCE_i
+add wave -noupdate -expand -group SPI-PSRAM /testbench/spi_ram/NC_io
+add wave -noupdate -expand -group SPI-PSRAM /testbench/spi_ram/nWP_io
+add wave -noupdate -expand -group SPI-PSRAM /testbench/spi_ram/SI_io
+add wave -noupdate -expand -group SPI-PSRAM /testbench/spi_ram/SO_io
+add wave -noupdate /testbench/uut/mprj/Marmot/io_oeb
+add wave -noupdate -expand -group SPI-Flash /testbench/spi_flash/SCLK
+add wave -noupdate -expand -group SPI-Flash /testbench/spi_flash/CS
+add wave -noupdate -expand -group SPI-Flash /testbench/spi_flash/SI
+add wave -noupdate -expand -group SPI-Flash /testbench/spi_flash/SO
+add wave -noupdate -expand -group SPI-Flash /testbench/spi_flash/WP
+add wave -noupdate -expand -group SPI-Flash /testbench/spi_flash/SIO3
+add wave -noupdate /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/ctrl_killd
+add wave -noupdate /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/id_raddr1
+add wave -noupdate /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/ex_waddr
+add wave -noupdate /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/ibuf/exp/io_out_rs1
+add wave -noupdate /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/ibuf/exp_io_in
+add wave -noupdate /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/ibuf/icData
+add wave -noupdate /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/ibuf/icData_data
+TreeUpdate [SetDefaultTree]
+WaveRestoreCursors {{Cursor 1} {1714380000 ps} 0} {{Cursor 2} {21100900000 ps} 0} {Trace {21511428110 ps} 0}
+quietly wave cursor active 2
+configure wave -namecolwidth 312
+configure wave -valuecolwidth 142
+configure wave -justifyvalue left
+configure wave -signalnamewidth 1
+configure wave -snapdistance 10
+configure wave -datasetprefix 0
+configure wave -rowmargin 4
+configure wave -childrowmargin 2
+configure wave -gridoffset 0
+configure wave -gridperiod 1
+configure wave -griddelta 40
+configure wave -timeline 0
+configure wave -timelineunits ns
+update
+WaveRestoreZoom {21099208519 ps} {21102591481 ps}
diff --git a/verilog/dv/jtag/Makefile b/verilog/dv/jtag/Makefile
new file mode 100644
index 0000000..2291ae2
--- /dev/null
+++ b/verilog/dv/jtag/Makefile
@@ -0,0 +1,54 @@
+# SPDX-FileCopyrightText: 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# RTL/GL/GL_SDF
+export SIM ?= RTL
+
+# Questa only
+SIMULATOR = Questa
+
+export TARGET_PATH = $(MARMOT_ROOT)
+export DESIGNS = $(TARGET_PATH)
+export CARAVEL_ROOT = $(TARGET_PATH)/caravel
+export MCW_ROOT = $(TARGET_PATH)/mgmt_core_wrapper
+export CORE_VERILOG_PATH = $(MCW_ROOT)/verilog
+#export PDK_ROOT = $(PDK_ROOT)
+#export PDK = $(PDK)
+export TOOLS = $(RISCV)
+export GCC_PREFIX = riscv64-unknown-linux-gnu
+
+TESTCASE_DIR = $(HOME)/Development/RISC-V/chipyard/vlsi/sim/testcase
+
+PWDD := $(shell pwd)
+BLOCKS := $(shell basename $(PWDD))
+
+# ---- Include Partitioned Makefiles ----
+
+CONFIG = caravel_user_project
+
+include $(MCW_ROOT)/verilog/dv/make/env.makefile
+include $(MCW_ROOT)/verilog/dv/make/var.makefile
+include $(MCW_ROOT)/verilog/dv/make/cpu.makefile
+include ../make/sim.makefile
+
+setup:
+ echo "// $(TESTCASE_DIR)/jtag/spi_flash.mem" > spi_flash.mem
+ cat $(TESTCASE_DIR)/jtag/spi_flash.mem >> spi_flash.mem
+ cp $(TESTCASE_DIR)/jtag/spi_flash.lis spi_flash.lis
+
+wave:
+ vsim -gui vsim.wlf -do wave.do &
+
diff --git a/verilog/dv/jtag/io_mapping.v b/verilog/dv/jtag/io_mapping.v
new file mode 120000
index 0000000..35e5eff
--- /dev/null
+++ b/verilog/dv/jtag/io_mapping.v
@@ -0,0 +1 @@
+../dhrystone/io_mapping.v
\ No newline at end of file
diff --git a/verilog/dv/jtag/jtag.c b/verilog/dv/jtag/jtag.c
new file mode 100644
index 0000000..a27f576
--- /dev/null
+++ b/verilog/dv/jtag/jtag.c
@@ -0,0 +1,162 @@
+/*
+ * SPDX-FileCopyrightText: 2020 Efabless Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+// This include is relative to $CARAVEL_PATH (see Makefile)
+#include <defs.h>
+#include <stub.c>
+
+#define MARMOT_ICACHE_TAG_RAM_CLK_DELAY 2
+#define MARMOT_ICACHE_DATA_RAM0_CLK_DELAY 5
+#define MARMOT_ICACHE_DATA_RAM1_CLK_DELAY 4
+#define MARMOT_ICACHE_DATA_RAM2_CLK_DELAY 1
+#define MARMOT_ICACHE_DATA_RAM3_CLK_DELAY 3
+
+void main()
+{
+ /*
+ IO Control Registers
+ | DM | VTRIP | SLOW | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+ | 3-bits | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit | 1-bit |
+ Output: 0000_0110_0000_1110 (0x1808) = GPIO_MODE_USER_STD_OUTPUT
+ | DM | VTRIP | SLOW | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+ | 110 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
+
+
+ Input: 0000_0001_0000_1111 (0x0402) = GPIO_MODE_USER_STD_INPUT_NOPULL
+ | DM | VTRIP | SLOW | AN_POL | AN_SEL | AN_EN | MOD_SEL | INP_DIS | HOLDH | OEB_N | MGMT_EN |
+ | 001 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
+ */
+
+ /* Set up the housekeeping SPI to be connected internally so */
+ /* that external pin changes don't affect it. */
+
+ reg_spi_enable = 1;
+ reg_wb_enable = 1;
+ //reg_spimaster_config = 0xa002; // Enable, prescaler = 2,
+ // connect to housekeeping SPI
+
+ // Connect the housekeeping SPI to the SPI master
+ // so that the CSB line is not left floating. This allows
+ // all of the GPIO pins to be used for user functions.
+
+ // All GPIO pins are configured to be bi-directional for Marmot use
+ reg_mprj_io_37 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_36 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_35 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_34 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_33 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_32 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+
+#if 0
+ // For actual use
+ reg_mprj_io_31 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_30 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_29 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_28 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+#else
+ // For simulation
+ reg_mprj_io_31 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_30 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_29 = GPIO_MODE_MGMT_STD_OUTPUT;
+ reg_mprj_io_28 = GPIO_MODE_MGMT_STD_OUTPUT;
+#endif
+
+ reg_mprj_io_27 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_26 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_25 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_24 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_23 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_22 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_21 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_20 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_19 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_18 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_17 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_16 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_15 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_14 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_13 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_12 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_11 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_10 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_9 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_8 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_7 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_6 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_5 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+ reg_mprj_io_4 = GPIO_MODE_USER_STD_BIDIRECTIONAL; // TCK
+ reg_mprj_io_3 = GPIO_MODE_USER_STD_BIDIRECTIONAL; // TMS
+ reg_mprj_io_2 = GPIO_MODE_USER_STD_BIDIRECTIONAL; // TDI
+ reg_mprj_io_1 = GPIO_MODE_USER_STD_BIDIRECTIONAL; // TDO
+ //reg_mprj_io_0 = GPIO_MODE_USER_STD_BIDIRECTIONAL;
+
+ /* Apply configuration */
+ reg_mprj_xfer = 1;
+ while (reg_mprj_xfer == 1);
+
+ // Initialize LA probes [127:0]
+ // Input:
+ // [31: 0] <- Marmot.gpio_out[31:0]
+ // Output:
+ // [31: 0] -> Marmot.gpio_in[31:0]
+ // [63:32] -> Marmot.ram_clk_delay_sel[31:0]
+ // [ 4: 0] -> u_clk_skew_adjust_0.sel[4:0] (I-$ Tag RAM)
+ // [ 9: 5] -> u_clk_skew_adjust_1.sel[4:0] (I-$ Data RAM0)
+ // [14:10] -> u_clk_skew_adjust_1.sel[4:0] (I-$ Data RAM1)
+ // [19:15] -> u_clk_skew_adjust_1.sel[4:0] (I-$ Data RAM2)
+ // [24:20] -> u_clk_skew_adjust_1.sel[4:0] (I-$ Data RAM3)
+
+ reg_la0_oenb = reg_la0_iena = 0xffffffff; // [31:0]
+ reg_la1_oenb = reg_la1_iena = 0xffffffff; // [63:32]
+ reg_la2_oenb = reg_la2_iena = 0xffffffff; // [95:64]
+ reg_la3_oenb = reg_la3_iena = 0xffffffff; // [127:96]
+ reg_la0_data = 0xffffffff;
+ reg_la1_data = 0xffffffff;
+ reg_la2_data = 0xffffffff;
+ reg_la3_data = 0xffffffff;
+ reg_la0_data = 0x00000000;
+ reg_la1_data = 0x00000000;
+ reg_la2_data = 0x00000000;
+ reg_la3_data = 0x00000000;
+
+ // Configure LA probes [31:0] as inputs to mgmt_soc
+ reg_la0_iena = 0x00000000; // [31:0] <- Marmot.gpio_out[31:0]
+
+ // Set clock delay for Marmot RAMs
+ reg_la1_data = (MARMOT_ICACHE_TAG_RAM_CLK_DELAY)
+ | (MARMOT_ICACHE_DATA_RAM0_CLK_DELAY << 5)
+ | (MARMOT_ICACHE_DATA_RAM1_CLK_DELAY << 10)
+ | (MARMOT_ICACHE_DATA_RAM2_CLK_DELAY << 15)
+ | (MARMOT_ICACHE_DATA_RAM3_CLK_DELAY << 20);
+
+ // Start Marmot
+ reg_mprj_slave = 0x00000001;
+
+ // Wait for Marmot to finish and check result
+ while (1) {
+ reg_la0_data ^= 0xffffffff;
+
+ if ((reg_la0_data_in & 0xc0000000) != 0x0) {
+ if ((reg_la0_data_in & 0xc0000000) == 0x80000000) {
+ reg_mprj_datal = 0x12340000; // Pass
+ } else {
+ reg_mprj_datal = 0xdead0000; // Fail
+ }
+ break;
+ }
+ }
+}
diff --git a/verilog/dv/jtag/jtag_tb.v b/verilog/dv/jtag/jtag_tb.v
new file mode 100644
index 0000000..ac91414
--- /dev/null
+++ b/verilog/dv/jtag/jtag_tb.v
@@ -0,0 +1,375 @@
+// SPDX-FileCopyrightText: 2020 Efabless Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// SPDX-License-Identifier: Apache-2.0
+
+`default_nettype none
+
+`timescale 1 ns / 100 ps
+
+`define TB testbench
+`define CARAVEL `TB.uut
+`define USER_PROJECT_WRAPPER `CARAVEL.mprj
+`define MARMOT `USER_PROJECT_WRAPPER.Marmot
+`define CHIP `MARMOT.MarmotCaravelChip
+`define PLATFORM `CHIP.dut
+`define SYS `PLATFORM.sys
+`define TILE `SYS.tile_prci_domain.tile_reset_domain.tile
+`define CORE `TILE.core
+`define UART0 `SYS.uartClockDomainWrapper.uart_0
+`define UART1 `SYS.uartClockDomainWrapper_1.uart_1
+`define UART2 `SYS.uartClockDomainWrapper_2.uart_2
+`define UART3 `SYS.uartClockDomainWrapper_3.uart_3
+`define UART4 `SYS.uartClockDomainWrapper_4.uart_4
+`define TLSPIRAM `SYS.qspiClockDomainWrapper_1.qspi_ram_0
+
+module testbench;
+ `include "io_mapping.v"
+
+ localparam CLOCK_PERIOD = 40; // ns
+ localparam TCK_PERIOD = 100;
+ localparam IR_LEN = 5;
+ localparam MAX_CYCLE = 200000;
+ localparam MAX_EXCEPTION_PC_COUNT = 100;
+
+ reg clock;
+ wire clock_wire = clock;
+ reg RSTB;
+ reg tck;
+ reg CSB;
+
+ reg power1, power2;
+
+ wire gpio;
+ wire [37:0] mprj_io;
+
+ wire reset = `MARMOT.wb_rst_i;
+
+`ifdef SIM
+ wire [31:0] PC = `CORE.coreMonitorBundle_pc;
+`else
+ wire [31:0] PC = {
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[31] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[30] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[29] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[28] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[27] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[26] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[25] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[24] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[23] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[22] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[21] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[20] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[19] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[18] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[17] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[16] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[15] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[14] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[13] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[12] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[11] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[10] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[9] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[8] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[7] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[6] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[5] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[4] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[3] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[2] ,
+ `MARMOT.\MarmotCaravelChip_dut_sys_tile_prci_domain_tile_reset_domain_tile_core_coreMonitorBundle_pc[1] ,
+ 1'b0};
+`endif
+
+//-------------------------------------------------------------------------------
+// Timeformat
+ initial begin
+ $timeformat(-9, 0, " ns", 12);
+ end
+
+//-------------------------------------------------------------------------------
+// Pull-up
+`ifdef PULLUP_IO
+ genvar gen_i;
+ generate
+ for (gen_i = 0; gen_i < 38; gen_i = gen_i + 1) begin
+ pullup(mprj_io[gen_i]);
+ end
+ endgenerate
+`endif
+
+//-------------------------------------------------------------------------------
+// Clock
+ initial begin
+ clock = 0;
+ tck = 0;
+ end
+
+ always #(CLOCK_PERIOD/2) clock <= (clock === 1'b0);
+ always #(TCK_PERIOD/2) tck <= (tck === 1'b0);
+
+//-------------------------------------------------------------------------------
+// Waveform
+ initial begin
+ if ($test$plusargs("waveform")) begin
+ $dumpfile("wave.vcd");
+ $dumpvars(0, `TB);
+ end
+ end
+
+//-------------------------------------------------------------------------------
+// Initialize FFs for gate level sim.
+`ifdef GL
+ `include "init_ff.v"
+`endif
+
+//-------------------------------------------------------------------------------
+// SDF annotate
+`ifdef ENABLE_SDF
+ initial begin
+ $sdf_annotate("../../../mgmt_core_wrapper/sdf/DFFRAM.sdf", `CARAVEL.soc.DFFRAM_0 );
+ $sdf_annotate("../../../mgmt_core_wrapper/sdf/mgmt_core.sdf", `CARAVEL.soc.core);
+ $sdf_annotate("../../../mgmt_core_wrapper/sdf/mgmt_core_wrapper.sdf", `CARAVEL.soc);
+ $sdf_annotate("../../../sdf/user_project_wrapper.sdf.gz", `USER_PROJECT_WRAPPER);
+ $sdf_annotate("../../../sdf/Marmot.sdf.gz", `MARMOT);
+ end
+`endif
+
+//-------------------------------------------------------------------------------
+// Count cycle
+ reg [31:0] cycle;
+ initial begin
+ cycle = 0;
+ end
+
+ always @(posedge clock) begin
+ cycle = cycle + 1;
+ end
+
+//-------------------------------------------------------------------------------
+// Monitor PC
+ integer exception_pc_count;
+
+ always @ (posedge clock) begin
+ if ($test$plusargs("pc_monitor")) begin
+ if (cycle % 1000 == 0) begin
+ $fwrite(32'h80000002, "[%t] %10d pc=%08x\n", $time, cycle, PC);
+ end
+ end
+
+ // Finish on PC=x
+ //if (^PC === 1'bx) begin
+ // $display("[%t] PC=xxxxxxxx", $time);
+ // repeat (50) @(posedge clock);
+ // $finish;
+ //end
+
+ // Finish on exception
+ if (PC == 32'h00000000 || PC == 32'h00000002) begin
+ exception_pc_count <= exception_pc_count + 1;
+ if (exception_pc_count > MAX_EXCEPTION_PC_COUNT) begin
+ $display("[%t] Exception occurred.", $time);
+ $finish;
+ end
+ end
+ else begin
+ exception_pc_count <= 0;
+ end
+ end
+
+//-------------------------------------------------------------------------------
+// Timeout
+ reg [31:0] max_cycle;
+ initial begin
+ if (! $value$plusargs("max_cycle=%d", max_cycle)) begin
+ max_cycle = MAX_CYCLE;
+ end
+
+ wait (reset === 1'b0);
+ wait (cycle < 10);
+ wait (cycle >= max_cycle);
+ $display("\n*** Timeout ***");
+ $finish;
+ end
+
+//-------------------------------------------------------------------------------
+// Pass
+ initial begin
+ wait (mprj_io[31:28] == 4'h1);
+ $display("\n*** Test Pass ***");
+ $finish;
+ end
+
+//-------------------------------------------------------------------------------
+// Fail
+ initial begin
+ wait (mprj_io[31:28] == 4'hd);
+ $display("\n*** Test Fail ***");
+ $finish;
+ end
+
+//-------------------------------------------------------------------------------
+// Reset
+ initial begin
+ RSTB <= 1'b0;
+ #1000;
+ RSTB <= 1'b1; // Release reset
+ #2000;
+ end
+
+//-------------------------------------------------------------------------------
+// Power-up sequence
+ initial begin
+ power1 <= 1'b0;
+ power2 <= 1'b0;
+ #200;
+ power1 <= 1'b1;
+ #200;
+ power2 <= 1'b1;
+ end
+
+ wire flash_csb;
+ wire flash_clk;
+ wire flash_io0;
+ wire flash_io1;
+
+ wire VDD1V8;
+ wire VDD3V3;
+ wire VSS;
+
+ assign VDD3V3 = power1;
+ assign VDD1V8 = power2;
+ assign VSS = 1'b0;
+
+ assign mprj_io[0] = 0; // Disable debug mode
+
+//-------------------------------------------------------------------------------
+// Caravel
+ caravel uut (
+ .vddio (VDD3V3),
+ .vddio_2 (VDD3V3),
+ .vssio (VSS),
+ .vssio_2 (VSS),
+ .vdda (VDD3V3),
+ .vssa (VSS),
+ .vccd (VDD1V8),
+ .vssd (VSS),
+ .vdda1 (VDD3V3),
+ .vdda1_2 (VDD3V3),
+ .vdda2 (VDD3V3),
+ .vssa1 (VSS),
+ .vssa1_2 (VSS),
+ .vssa2 (VSS),
+ .vccd1 (VDD1V8),
+ .vccd2 (VDD1V8),
+ .vssd1 (VSS),
+ .vssd2 (VSS),
+ .clock (clock_wire),
+ .gpio (gpio),
+ .mprj_io (mprj_io),
+ .flash_csb(flash_csb),
+ .flash_clk(flash_clk),
+ .flash_io0(flash_io0),
+ .flash_io1(flash_io1),
+ .resetb (RSTB)
+ );
+
+//-------------------------------------------------------------------------------
+// SPI Flash for Mgmt. SoC
+ spiflash #(
+ .FILENAME(`MGMT_SOC_PROG)
+ ) spiflash (
+ .csb(flash_csb),
+ .clk(flash_clk),
+ .io0(flash_io0),
+ .io1(flash_io1),
+ .io2(),
+ .io3()
+ );
+
+//-------------------------------------------------------------------------------
+// SPI Flash model for Marmot
+MX25U3235F #(.Init_File("spi_flash.mem")) spi_flash
+(
+ .SCLK (mprj_io[io_spi0_flash_sck]),
+ .CS (mprj_io[io_spi0_flash_csb]),
+ .SI (mprj_io[io_spi0_flash_io_0]),
+ .SO (mprj_io[io_spi0_flash_io_1]),
+ .WP (mprj_io[io_spi0_flash_io_2]),
+ .SIO3 (mprj_io[io_spi0_flash_io_3])
+);
+
+//-------------------------------------------------------------------------------
+// SPI RAM model (APM APS6404L-3SQN_SQPI_PSRAM)
+`ifdef SIMULATOR_QUESTA
+sqpi_model #(.VeriOutStr(1), .STOP_ON_ERROR(0)) spi_ram
+(
+ .SCK_i (mprj_io[io_spi2_sck]),
+ .nCE_i (mprj_io[io_spi2_csb]),
+ .SI_io (mprj_io[io_spi2_io_0]),
+ .SO_io (mprj_io[io_spi2_io_1]),
+ .nWP_io (mprj_io[io_spi2_io_2]),
+ .NC_io (mprj_io[io_spi2_io_3])
+);
+`else
+// SPI Flash model
+MX25U3235F spi_ram
+(
+ .SCLK (mprj_io[io_spi2_sck]),
+ .CS (mprj_io[io_spi2_csb]),
+ .SI (mprj_io[io_spi2_io_0]),
+ .SO (mprj_io[io_spi2_io_1]),
+ .WP (mprj_io[io_spi2_io_2]),
+ .SIO3 (mprj_io[io_spi2_io_3])
+);
+`endif
+
+//-------------------------------------------------------------------------------
+// UART model for Marmot
+`ifdef UART_HIGH_SPEED
+ `define CLKS_PER_BIT 16 // F_CLK / 16 baud
+`else
+ `define CLKS_PER_BIT ((1000/CLOCK_PERIOD)*1000000 / 115200) // 115200 baud
+ //`define CLKS_PER_BIT 104 // 12MHz / 115200 baud
+`endif
+
+uart_tb #(.CLKS_PER_BIT(`CLKS_PER_BIT)) uart0_tb
+(
+ .clk (clock_wire),
+ .rst (~RSTB),
+ .rxd (mprj_io[io_uart0_tx]),
+ .txd (mprj_io[io_uart0_rx])
+);
+
+//-------------------------------------------------------------------------------
+// JTAG driver
+ jtag_driver #(.TCK_PERIOD(TCK_PERIOD), .IR_LEN(IR_LEN))
+ jtag_driver (
+ .tck(mprj_io[io_TCK]),
+ .tms(mprj_io[io_TMS]),
+ .tdi(mprj_io[io_TDI]),
+ .tdo(mprj_io[io_TDO])
+ );
+
+`ifdef SIMULATOR_QUESTA
+ pullup(mprj_io[io_TDO]); // doesn't work well with Icarus
+`endif
+
+//-------------------------------------------------------------------------------
+// Stimulus
+`include "stm.v"
+
+endmodule
+`default_nettype wire
diff --git a/verilog/dv/jtag/run_sim.csh b/verilog/dv/jtag/run_sim.csh
new file mode 100755
index 0000000..2bd2cbf
--- /dev/null
+++ b/verilog/dv/jtag/run_sim.csh
@@ -0,0 +1,34 @@
+#!/bin/csh -f
+
+# RTL/GL
+set sim = RTL
+#set sim = GL
+
+# Simulator
+set simulator = Icarus
+#set simulator = Questa
+
+# Compile option
+set mgmt_soc_prog = \\\"jtag.hex\\\"
+
+if ($simulator == Icarus) then
+ set compopt = "-DMGMT_SOC_PROG=$mgmt_soc_prog"
+ set compopt = "$compopt -DPRINTF_COND=0" # 0 = stop instruction trace
+else
+ set compopt = "+define+MGMT_SOC_PROG=$mgmt_soc_prog"
+ set compopt = "$compopt +define+PRINTF_COND=0" # 0 = stop instruction trace
+endif
+
+# Simulation option
+set simopt =
+#set simopt = "$simopt +waveform"
+#set simopt = "$simopt +pc_monitor"
+#set simopt = "$simopt +max_cycle=200000"
+
+# For Questa
+set doopt = ""
+#set doopt = "log -r /testbench/* ;" # waveform
+
+make SIMULATOR=$simulator SIM=$sim USER_COMPOPT="$compopt" USER_SIMOPT="$simopt" DOOPT="$doopt" \
+ |& spike-dasm | egrep -v '\[0\] pc=' | tee sim_${sim}.log
+
diff --git a/verilog/dv/jtag/spi_flash.lis b/verilog/dv/jtag/spi_flash.lis
new file mode 100644
index 0000000..0a54585
--- /dev/null
+++ b/verilog/dv/jtag/spi_flash.lis
@@ -0,0 +1,1218 @@
+
+spi_flash.elf: file format elf32-littleriscv
+
+
+Disassembly of section .text:
+
+20000000 <_prog_start>:
+20000000: 00000093 li ra,0
+20000004: 00000113 li sp,0
+20000008: 00000193 li gp,0
+2000000c: 00000213 li tp,0
+20000010: 00000293 li t0,0
+20000014: 00000313 li t1,0
+20000018: 00000393 li t2,0
+2000001c: 00000413 li s0,0
+20000020: 00000493 li s1,0
+20000024: 00000513 li a0,0
+20000028: 00000593 li a1,0
+2000002c: 00000613 li a2,0
+20000030: 00000693 li a3,0
+20000034: 00000713 li a4,0
+20000038: 00000793 li a5,0
+2000003c: 00000813 li a6,0
+20000040: 00000893 li a7,0
+20000044: 00000913 li s2,0
+20000048: 00000993 li s3,0
+2000004c: 00000a13 li s4,0
+20000050: 00000a93 li s5,0
+20000054: 00000b13 li s6,0
+20000058: 00000b93 li s7,0
+2000005c: 00000c13 li s8,0
+20000060: 00000c93 li s9,0
+20000064: 00000d13 li s10,0
+20000068: 00000d93 li s11,0
+2000006c: 00000e13 li t3,0
+20000070: 00000e93 li t4,0
+20000074: 00000f13 li t5,0
+20000078: 00000f93 li t6,0
+2000007c: 00800913 li s2,8
+20000080: 30491073 csrw mie,s2
+20000084: 00000493 li s1,0
+20000088: f1402973 csrr s2,mhartid
+2000008c: 03249663 bne s1,s2,200000b8 <_prog_start+0xb8>
+20000090: 08002137 lui sp,0x8002
+20000094: ff010113 addi sp,sp,-16 # 8001ff0 <_stack>
+20000098: 421000ef jal ra,20000cb8 <main>
+2000009c: 020004b7 lui s1,0x2000
+200000a0: 00100913 li s2,1
+200000a4: 0124a023 sw s2,0(s1) # 2000000 <spi_quad_mode-0x6000000>
+200000a8: 00448493 addi s1,s1,4
+200000ac: 02000937 lui s2,0x2000
+200000b0: 08090913 addi s2,s2,128 # 2000080 <spi_quad_mode-0x5ffff80>
+200000b4: ff24c6e3 blt s1,s2,200000a0 <_prog_start+0xa0>
+200000b8: 10500073 wfi
+200000bc: 34402973 csrr s2,mip
+200000c0: 00897913 andi s2,s2,8
+200000c4: fe090ae3 beqz s2,200000b8 <_prog_start+0xb8>
+200000c8: 020004b7 lui s1,0x2000
+200000cc: f1402973 csrr s2,mhartid
+200000d0: 00291913 slli s2,s2,0x2
+200000d4: 00990933 add s2,s2,s1
+200000d8: 00092023 sw zero,0(s2)
+200000dc: 0004a903 lw s2,0(s1) # 2000000 <spi_quad_mode-0x6000000>
+200000e0: fe091ee3 bnez s2,200000dc <_prog_start+0xdc>
+200000e4: 00448493 addi s1,s1,4
+200000e8: 02000937 lui s2,0x2000
+200000ec: 08090913 addi s2,s2,128 # 2000080 <spi_quad_mode-0x5ffff80>
+200000f0: ff24c6e3 blt s1,s2,200000dc <_prog_start+0xdc>
+
+200000f4 <loop>:
+200000f4: 0000006f j 200000f4 <loop>
+
+200000f8 <memset>:
+200000f8: 0ff5f593 andi a1,a1,255
+200000fc: 00c50733 add a4,a0,a2
+20000100: 87aa mv a5,a0
+20000102: 00c05763 blez a2,20000110 <memset+0x18>
+20000106: 0785 addi a5,a5,1
+20000108: feb78fa3 sb a1,-1(a5)
+2000010c: fef71de3 bne a4,a5,20000106 <memset+0xe>
+20000110: 8082 ret
+
+20000112 <memcpy>:
+20000112: 00c05c63 blez a2,2000012a <memcpy+0x18>
+20000116: 962a add a2,a2,a0
+20000118: 87aa mv a5,a0
+2000011a: 0005c703 lbu a4,0(a1)
+2000011e: 0785 addi a5,a5,1
+20000120: 0585 addi a1,a1,1
+20000122: fee78fa3 sb a4,-1(a5)
+20000126: fef61ae3 bne a2,a5,2000011a <memcpy+0x8>
+2000012a: 8082 ret
+
+2000012c <memcmp>:
+2000012c: 02c05563 blez a2,20000156 <memcmp+0x2a>
+20000130: 962e add a2,a2,a1
+20000132: a019 j 20000138 <memcmp+0xc>
+20000134: 02b60163 beq a2,a1,20000156 <memcmp+0x2a>
+20000138: 00054783 lbu a5,0(a0)
+2000013c: 0005c703 lbu a4,0(a1)
+20000140: 0505 addi a0,a0,1
+20000142: 0585 addi a1,a1,1
+20000144: fee788e3 beq a5,a4,20000134 <memcmp+0x8>
+20000148: 00f73533 sltu a0,a4,a5
+2000014c: 40a00533 neg a0,a0
+20000150: 8909 andi a0,a0,2
+20000152: 157d addi a0,a0,-1
+20000154: 8082 ret
+20000156: 4501 li a0,0
+20000158: 8082 ret
+
+2000015a <strlen>:
+2000015a: 00054783 lbu a5,0(a0)
+2000015e: 872a mv a4,a0
+20000160: 4501 li a0,0
+20000162: cb81 beqz a5,20000172 <strlen+0x18>
+20000164: 0505 addi a0,a0,1
+20000166: 00a707b3 add a5,a4,a0
+2000016a: 0007c783 lbu a5,0(a5)
+2000016e: fbfd bnez a5,20000164 <strlen+0xa>
+20000170: 8082 ret
+20000172: 8082 ret
+
+20000174 <strcpy>:
+20000174: 0005c783 lbu a5,0(a1)
+20000178: 00f50023 sb a5,0(a0)
+2000017c: 0005c783 lbu a5,0(a1)
+20000180: cb99 beqz a5,20000196 <strcpy+0x22>
+20000182: 87aa mv a5,a0
+20000184: 0015c703 lbu a4,1(a1)
+20000188: 0585 addi a1,a1,1
+2000018a: 0785 addi a5,a5,1
+2000018c: 00e78023 sb a4,0(a5)
+20000190: 0005c703 lbu a4,0(a1)
+20000194: fb65 bnez a4,20000184 <strcpy+0x10>
+20000196: 8082 ret
+
+20000198 <strcmp>:
+20000198: a019 j 2000019e <strcmp+0x6>
+2000019a: 00e79d63 bne a5,a4,200001b4 <strcmp+0x1c>
+2000019e: 00054783 lbu a5,0(a0)
+200001a2: 0005c703 lbu a4,0(a1)
+200001a6: 0505 addi a0,a0,1
+200001a8: 0585 addi a1,a1,1
+200001aa: 00e7e6b3 or a3,a5,a4
+200001ae: f6f5 bnez a3,2000019a <strcmp+0x2>
+200001b0: 4501 li a0,0
+200001b2: 8082 ret
+200001b4: 00f73533 sltu a0,a4,a5
+200001b8: 40a00533 neg a0,a0
+200001bc: 8909 andi a0,a0,2
+200001be: 157d addi a0,a0,-1
+200001c0: 8082 ret
+
+200001c2 <strncmp>:
+200001c2: 87aa mv a5,a0
+200001c4: 00c50833 add a6,a0,a2
+200001c8: 0007c703 lbu a4,0(a5)
+200001cc: 40f806b3 sub a3,a6,a5
+200001d0: eb19 bnez a4,200001e6 <strncmp+0x24>
+200001d2: 0005c703 lbu a4,0(a1)
+200001d6: c70d beqz a4,20000200 <strncmp+0x3e>
+200001d8: 9532 add a0,a0,a2
+200001da: 8d1d sub a0,a0,a5
+200001dc: 00a02533 sgtz a0,a0
+200001e0: 40a00533 neg a0,a0
+200001e4: 8082 ret
+200001e6: 00d05d63 blez a3,20000200 <strncmp+0x3e>
+200001ea: 0005c683 lbu a3,0(a1)
+200001ee: 0785 addi a5,a5,1
+200001f0: 0585 addi a1,a1,1
+200001f2: fce68be3 beq a3,a4,200001c8 <strncmp+0x6>
+200001f6: 4505 li a0,1
+200001f8: fee6e6e3 bltu a3,a4,200001e4 <strncmp+0x22>
+200001fc: 557d li a0,-1
+200001fe: 8082 ret
+20000200: 4501 li a0,0
+20000202: 8082 ret
+
+20000204 <putc>:
+20000204: 1141 addi sp,sp,-16
+20000206: c422 sw s0,8(sp)
+20000208: c606 sw ra,12(sp)
+2000020a: 47a9 li a5,10
+2000020c: 842a mv s0,a0
+2000020e: 00f50863 beq a0,a5,2000021e <putc+0x1a>
+20000212: 85a2 mv a1,s0
+20000214: 4422 lw s0,8(sp)
+20000216: 40b2 lw ra,12(sp)
+20000218: 4501 li a0,0
+2000021a: 0141 addi sp,sp,16
+2000021c: a261 j 200003a4 <serial_send_byte>
+2000021e: 45b5 li a1,13
+20000220: 4501 li a0,0
+20000222: 2249 jal 200003a4 <serial_send_byte>
+20000224: 85a2 mv a1,s0
+20000226: 4422 lw s0,8(sp)
+20000228: 40b2 lw ra,12(sp)
+2000022a: 4501 li a0,0
+2000022c: 0141 addi sp,sp,16
+2000022e: aa9d j 200003a4 <serial_send_byte>
+
+20000230 <getc>:
+20000230: 1141 addi sp,sp,-16
+20000232: 4501 li a0,0
+20000234: c422 sw s0,8(sp)
+20000236: c606 sw ra,12(sp)
+20000238: 225d jal 200003de <serial_recv_byte>
+2000023a: 47b5 li a5,13
+2000023c: 4429 li s0,10
+2000023e: 00f50363 beq a0,a5,20000244 <getc+0x14>
+20000242: 842a mv s0,a0
+20000244: 8522 mv a0,s0
+20000246: 3f7d jal 20000204 <putc>
+20000248: 40b2 lw ra,12(sp)
+2000024a: 8522 mv a0,s0
+2000024c: 4422 lw s0,8(sp)
+2000024e: 0141 addi sp,sp,16
+20000250: 8082 ret
+
+20000252 <puts>:
+20000252: 1141 addi sp,sp,-16
+20000254: c422 sw s0,8(sp)
+20000256: c606 sw ra,12(sp)
+20000258: 842a mv s0,a0
+2000025a: 00054503 lbu a0,0(a0)
+2000025e: c511 beqz a0,2000026a <puts+0x18>
+20000260: 0405 addi s0,s0,1
+20000262: 374d jal 20000204 <putc>
+20000264: 00044503 lbu a0,0(s0)
+20000268: fd65 bnez a0,20000260 <puts+0xe>
+2000026a: 40b2 lw ra,12(sp)
+2000026c: 4422 lw s0,8(sp)
+2000026e: 4501 li a0,0
+20000270: 0141 addi sp,sp,16
+20000272: 8082 ret
+
+20000274 <gets>:
+20000274: 1141 addi sp,sp,-16
+20000276: c422 sw s0,8(sp)
+20000278: c226 sw s1,4(sp)
+2000027a: c04a sw s2,0(sp)
+2000027c: c606 sw ra,12(sp)
+2000027e: 4929 li s2,10
+20000280: 842a mv s0,a0
+20000282: 4481 li s1,0
+20000284: 3775 jal 20000230 <getc>
+20000286: 01250c63 beq a0,s2,2000029e <gets+0x2a>
+2000028a: 00a40023 sb a0,0(s0)
+2000028e: 00148793 addi a5,s1,1
+20000292: 0405 addi s0,s0,1
+20000294: c519 beqz a0,200002a2 <gets+0x2e>
+20000296: 84be mv s1,a5
+20000298: 3f61 jal 20000230 <getc>
+2000029a: ff2518e3 bne a0,s2,2000028a <gets+0x16>
+2000029e: 00040023 sb zero,0(s0)
+200002a2: 40b2 lw ra,12(sp)
+200002a4: 4422 lw s0,8(sp)
+200002a6: 4902 lw s2,0(sp)
+200002a8: 8526 mv a0,s1
+200002aa: 4492 lw s1,4(sp)
+200002ac: 0141 addi sp,sp,16
+200002ae: 8082 ret
+
+200002b0 <putxval>:
+200002b0: 1101 addi sp,sp,-32
+200002b2: ce06 sw ra,28(sp)
+200002b4: cc22 sw s0,24(sp)
+200002b6: 00010623 sb zero,12(sp)
+200002ba: ed05 bnez a0,200002f2 <putxval+0x42>
+200002bc: e191 bnez a1,200002c0 <putxval+0x10>
+200002be: 4585 li a1,1
+200002c0: 00b10793 addi a5,sp,11
+200002c4: 03000713 li a4,48
+200002c8: c591 beqz a1,200002d4 <putxval+0x24>
+200002ca: 00e78023 sb a4,0(a5)
+200002ce: 15fd addi a1,a1,-1
+200002d0: 17fd addi a5,a5,-1
+200002d2: fde5 bnez a1,200002ca <putxval+0x1a>
+200002d4: 0017c503 lbu a0,1(a5)
+200002d8: 00178413 addi s0,a5,1
+200002dc: c511 beqz a0,200002e8 <putxval+0x38>
+200002de: 0405 addi s0,s0,1
+200002e0: 3715 jal 20000204 <putc>
+200002e2: 00044503 lbu a0,0(s0)
+200002e6: fd65 bnez a0,200002de <putxval+0x2e>
+200002e8: 40f2 lw ra,28(sp)
+200002ea: 4462 lw s0,24(sp)
+200002ec: 4501 li a0,0
+200002ee: 6105 addi sp,sp,32
+200002f0: 8082 ret
+200002f2: 872a mv a4,a0
+200002f4: 00f77793 andi a5,a4,15
+200002f8: 00001817 auipc a6,0x1
+200002fc: cfc80813 addi a6,a6,-772 # 20000ff4 <uart_ctrl_addr+0x22c>
+20000300: 97c2 add a5,a5,a6
+20000302: 0007c503 lbu a0,0(a5)
+20000306: 00b10413 addi s0,sp,11
+2000030a: fff40793 addi a5,s0,-1
+2000030e: 00a780a3 sb a0,1(a5)
+20000312: 8311 srli a4,a4,0x4
+20000314: cd99 beqz a1,20000332 <putxval+0x82>
+20000316: 15fd addi a1,a1,-1
+20000318: d755 beqz a4,200002c4 <putxval+0x14>
+2000031a: 843e mv s0,a5
+2000031c: 00f77793 andi a5,a4,15
+20000320: 97c2 add a5,a5,a6
+20000322: 0007c503 lbu a0,0(a5)
+20000326: 8311 srli a4,a4,0x4
+20000328: fff40793 addi a5,s0,-1
+2000032c: 00a780a3 sb a0,1(a5)
+20000330: f1fd bnez a1,20000316 <putxval+0x66>
+20000332: 00f77693 andi a3,a4,15
+20000336: 96c2 add a3,a3,a6
+20000338: fff78613 addi a2,a5,-1
+2000033c: d345 beqz a4,200002dc <putxval+0x2c>
+2000033e: 0006c503 lbu a0,0(a3)
+20000342: 8311 srli a4,a4,0x4
+20000344: 843e mv s0,a5
+20000346: 00a78023 sb a0,0(a5)
+2000034a: 00f77693 andi a3,a4,15
+2000034e: 87b2 mv a5,a2
+20000350: 96c2 add a3,a3,a6
+20000352: fff78613 addi a2,a5,-1
+20000356: d359 beqz a4,200002dc <putxval+0x2c>
+20000358: b7dd j 2000033e <putxval+0x8e>
+
+2000035a <serial_init>:
+2000035a: 00251793 slli a5,a0,0x2
+2000035e: 00001517 auipc a0,0x1
+20000362: a6a50513 addi a0,a0,-1430 # 20000dc8 <uart_ctrl_addr>
+20000366: 953e add a0,a0,a5
+20000368: 4118 lw a4,0(a0)
+2000036a: 4785 li a5,1
+2000036c: c71c sw a5,8(a4)
+2000036e: c75c sw a5,12(a4)
+20000370: 00f58a63 beq a1,a5,20000384 <serial_init+0x2a>
+20000374: 36300793 li a5,867
+20000378: cf1c sw a5,24(a4)
+2000037a: 435c lw a5,4(a4)
+2000037c: fe07dfe3 bgez a5,2000037a <serial_init+0x20>
+20000380: 4501 li a0,0
+20000382: 8082 ret
+20000384: 47bd li a5,15
+20000386: cf1c sw a5,24(a4)
+20000388: bfcd j 2000037a <serial_init+0x20>
+
+2000038a <serial_is_send_enable>:
+2000038a: 00251793 slli a5,a0,0x2
+2000038e: 00001517 auipc a0,0x1
+20000392: a3a50513 addi a0,a0,-1478 # 20000dc8 <uart_ctrl_addr>
+20000396: 953e add a0,a0,a5
+20000398: 411c lw a5,0(a0)
+2000039a: 4388 lw a0,0(a5)
+2000039c: fff54513 not a0,a0
+200003a0: 817d srli a0,a0,0x1f
+200003a2: 8082 ret
+
+200003a4 <serial_send_byte>:
+200003a4: 00251793 slli a5,a0,0x2
+200003a8: 00001517 auipc a0,0x1
+200003ac: a2050513 addi a0,a0,-1504 # 20000dc8 <uart_ctrl_addr>
+200003b0: 953e add a0,a0,a5
+200003b2: 4118 lw a4,0(a0)
+200003b4: 431c lw a5,0(a4)
+200003b6: fe07cfe3 bltz a5,200003b4 <serial_send_byte+0x10>
+200003ba: c30c sw a1,0(a4)
+200003bc: 4501 li a0,0
+200003be: 8082 ret
+
+200003c0 <serial_is_recv_enable>:
+200003c0: 00251793 slli a5,a0,0x2
+200003c4: 00001517 auipc a0,0x1
+200003c8: a0450513 addi a0,a0,-1532 # 20000dc8 <uart_ctrl_addr>
+200003cc: 953e add a0,a0,a5
+200003ce: 411c lw a5,0(a0)
+200003d0: 43dc lw a5,4(a5)
+200003d2: fff7c513 not a0,a5
+200003d6: 00f58023 sb a5,0(a1)
+200003da: 817d srli a0,a0,0x1f
+200003dc: 8082 ret
+
+200003de <serial_recv_byte>:
+200003de: 00251793 slli a5,a0,0x2
+200003e2: 00001517 auipc a0,0x1
+200003e6: 9e650513 addi a0,a0,-1562 # 20000dc8 <uart_ctrl_addr>
+200003ea: 953e add a0,a0,a5
+200003ec: 411c lw a5,0(a0)
+200003ee: 43c8 lw a0,4(a5)
+200003f0: fe054fe3 bltz a0,200003ee <serial_recv_byte+0x10>
+200003f4: 0ff57513 andi a0,a0,255
+200003f8: 8082 ret
+
+200003fa <number>:
+200003fa: 711d addi sp,sp,-96
+200003fc: cea2 sw s0,92(sp)
+200003fe: cca6 sw s1,88(sp)
+20000400: 0407f813 andi a6,a5,64
+20000404: 00001e17 auipc t3,0x1
+20000408: c2ce0e13 addi t3,t3,-980 # 20001030 <uart_ctrl_addr+0x268>
+2000040c: 00081663 bnez a6,20000418 <number+0x1e>
+20000410: 00001e17 auipc t3,0x1
+20000414: bf8e0e13 addi t3,t3,-1032 # 20001008 <uart_ctrl_addr+0x240>
+20000418: 0107f413 andi s0,a5,16
+2000041c: 14040263 beqz s0,20000560 <number+0x166>
+20000420: 9bf9 andi a5,a5,-2
+20000422: 84a2 mv s1,s0
+20000424: 0027f813 andi a6,a5,2
+20000428: 02000f93 li t6,32
+2000042c: 0207f393 andi t2,a5,32
+20000430: 14080663 beqz a6,2000057c <number+0x182>
+20000434: 1405c663 bltz a1,20000580 <number+0x186>
+20000438: 0047f813 andi a6,a5,4
+2000043c: 16081c63 bnez a6,200005b4 <number+0x1ba>
+20000440: 8ba1 andi a5,a5,8
+20000442: 4281 li t0,0
+20000444: c781 beqz a5,2000044c <number+0x52>
+20000446: 16fd addi a3,a3,-1
+20000448: 02000293 li t0,32
+2000044c: 00038a63 beqz t2,20000460 <number+0x66>
+20000450: 47c1 li a5,16
+20000452: 16f60f63 beq a2,a5,200005d0 <number+0x1d6>
+20000456: ff860793 addi a5,a2,-8
+2000045a: 0017b793 seqz a5,a5
+2000045e: 8e9d sub a3,a3,a5
+20000460: 12059763 bnez a1,2000058e <number+0x194>
+20000464: 03000793 li a5,48
+20000468: 00f10623 sb a5,12(sp)
+2000046c: 4301 li t1,0
+2000046e: 03000813 li a6,48
+20000472: 4885 li a7,1
+20000474: 007c addi a5,sp,12
+20000476: 8ec6 mv t4,a7
+20000478: 00e8d363 bge a7,a4,2000047e <number+0x84>
+2000047c: 8eba mv t4,a4
+2000047e: 41d68e33 sub t3,a3,t4
+20000482: fffe0593 addi a1,t3,-1
+20000486: ec91 bnez s1,200004a2 <number+0xa8>
+20000488: 01c506b3 add a3,a0,t3
+2000048c: 02000713 li a4,32
+20000490: 15c05a63 blez t3,200005e4 <number+0x1ea>
+20000494: 0505 addi a0,a0,1
+20000496: fee50fa3 sb a4,-1(a0)
+2000049a: fed51de3 bne a0,a3,20000494 <number+0x9a>
+2000049e: 55f9 li a1,-2
+200004a0: 5e7d li t3,-1
+200004a2: 00028563 beqz t0,200004ac <number+0xb2>
+200004a6: 00550023 sb t0,0(a0)
+200004aa: 0505 addi a0,a0,1
+200004ac: 00038863 beqz t2,200004bc <number+0xc2>
+200004b0: 4721 li a4,8
+200004b2: 12e60163 beq a2,a4,200005d4 <number+0x1da>
+200004b6: 4741 li a4,16
+200004b8: 10e60263 beq a2,a4,200005bc <number+0x1c2>
+200004bc: e80d bnez s0,200004ee <number+0xf4>
+200004be: 862a mv a2,a0
+200004c0: 4705 li a4,1
+200004c2: 13c05663 blez t3,200005ee <number+0x1f4>
+200004c6: 0605 addi a2,a2,1
+200004c8: 40c706b3 sub a3,a4,a2
+200004cc: 96ae add a3,a3,a1
+200004ce: 96aa add a3,a3,a0
+200004d0: fff60fa3 sb t6,-1(a2)
+200004d4: fed049e3 bgtz a3,200004c6 <number+0xcc>
+200004d8: fff5c713 not a4,a1
+200004dc: 877d srai a4,a4,0x1f
+200004de: 8f6d and a4,a4,a1
+200004e0: 15fd addi a1,a1,-1
+200004e2: 40e58e33 sub t3,a1,a4
+200004e6: 0705 addi a4,a4,1
+200004e8: 953a add a0,a0,a4
+200004ea: fffe0593 addi a1,t3,-1
+200004ee: 411e8733 sub a4,t4,a7
+200004f2: 972a add a4,a4,a0
+200004f4: 03000693 li a3,48
+200004f8: 0fd8d463 bge a7,t4,200005e0 <number+0x1e6>
+200004fc: 0505 addi a0,a0,1
+200004fe: fed50fa3 sb a3,-1(a0)
+20000502: fea71de3 bne a4,a0,200004fc <number+0x102>
+20000506: 00678633 add a2,a5,t1
+2000050a: 86ba mv a3,a4
+2000050c: 4505 li a0,1
+2000050e: a019 j 20000514 <number+0x11a>
+20000510: 00064803 lbu a6,0(a2)
+20000514: 0685 addi a3,a3,1
+20000516: 40d507b3 sub a5,a0,a3
+2000051a: 979a add a5,a5,t1
+2000051c: 97ba add a5,a5,a4
+2000051e: ff068fa3 sb a6,-1(a3)
+20000522: 167d addi a2,a2,-1
+20000524: fef046e3 bgtz a5,20000510 <number+0x116>
+20000528: 00130513 addi a0,t1,1
+2000052c: 953a add a0,a0,a4
+2000052e: 03c05563 blez t3,20000558 <number+0x15e>
+20000532: 872a mv a4,a0
+20000534: 02000613 li a2,32
+20000538: 4685 li a3,1
+2000053a: 0705 addi a4,a4,1
+2000053c: 40e687b3 sub a5,a3,a4
+20000540: 97ae add a5,a5,a1
+20000542: 97aa add a5,a5,a0
+20000544: fec70fa3 sb a2,-1(a4)
+20000548: fef049e3 bgtz a5,2000053a <number+0x140>
+2000054c: fff5c793 not a5,a1
+20000550: 87fd srai a5,a5,0x1f
+20000552: 8dfd and a1,a1,a5
+20000554: 0585 addi a1,a1,1
+20000556: 952e add a0,a0,a1
+20000558: 4476 lw s0,92(sp)
+2000055a: 44e6 lw s1,88(sp)
+2000055c: 6125 addi sp,sp,96
+2000055e: 8082 ret
+20000560: 0017f813 andi a6,a5,1
+20000564: 0117f493 andi s1,a5,17
+20000568: 03000f93 li t6,48
+2000056c: ea080ce3 beqz a6,20000424 <number+0x2a>
+20000570: 0027f813 andi a6,a5,2
+20000574: 0207f393 andi t2,a5,32
+20000578: ea081ee3 bnez a6,20000434 <number+0x3a>
+2000057c: 4281 li t0,0
+2000057e: b5f9 j 2000044c <number+0x52>
+20000580: 40b005b3 neg a1,a1
+20000584: 16fd addi a3,a3,-1
+20000586: 02d00293 li t0,45
+2000058a: ec0393e3 bnez t2,20000450 <number+0x56>
+2000058e: 4881 li a7,0
+20000590: 007c addi a5,sp,12
+20000592: 02c5f833 remu a6,a1,a2
+20000596: 8346 mv t1,a7
+20000598: 0885 addi a7,a7,1
+2000059a: 01178f33 add t5,a5,a7
+2000059e: 8eae mv t4,a1
+200005a0: 9872 add a6,a6,t3
+200005a2: 00084803 lbu a6,0(a6)
+200005a6: 02c5d5b3 divu a1,a1,a2
+200005aa: ff0f0fa3 sb a6,-1(t5)
+200005ae: fecef2e3 bgeu t4,a2,20000592 <number+0x198>
+200005b2: b5d1 j 20000476 <number+0x7c>
+200005b4: 16fd addi a3,a3,-1
+200005b6: 02b00293 li t0,43
+200005ba: bd49 j 2000044c <number+0x52>
+200005bc: 03000713 li a4,48
+200005c0: 00e50023 sb a4,0(a0)
+200005c4: 07800713 li a4,120
+200005c8: 00e500a3 sb a4,1(a0)
+200005cc: 0509 addi a0,a0,2
+200005ce: b5fd j 200004bc <number+0xc2>
+200005d0: 16f9 addi a3,a3,-2
+200005d2: b579 j 20000460 <number+0x66>
+200005d4: 03000713 li a4,48
+200005d8: 00e50023 sb a4,0(a0)
+200005dc: 0505 addi a0,a0,1
+200005de: bdf9 j 200004bc <number+0xc2>
+200005e0: 872a mv a4,a0
+200005e2: b715 j 20000506 <number+0x10c>
+200005e4: ffee0713 addi a4,t3,-2
+200005e8: 8e2e mv t3,a1
+200005ea: 85ba mv a1,a4
+200005ec: bd5d j 200004a2 <number+0xa8>
+200005ee: 8e2e mv t3,a1
+200005f0: 15fd addi a1,a1,-1
+200005f2: bdf5 j 200004ee <number+0xf4>
+
+200005f4 <uart_send_char>:
+200005f4: 85aa mv a1,a0
+200005f6: 4501 li a0,0
+200005f8: b375 j 200003a4 <serial_send_byte>
+
+200005fa <ee_printf>:
+200005fa: 7149 addi sp,sp,-368
+200005fc: 13612823 sw s6,304(sp)
+20000600: 14112623 sw ra,332(sp)
+20000604: 14812423 sw s0,328(sp)
+20000608: 14912223 sw s1,324(sp)
+2000060c: 15212023 sw s2,320(sp)
+20000610: 13312e23 sw s3,316(sp)
+20000614: 13412c23 sw s4,312(sp)
+20000618: 13512a23 sw s5,308(sp)
+2000061c: 13712623 sw s7,300(sp)
+20000620: 13812423 sw s8,296(sp)
+20000624: 13912223 sw s9,292(sp)
+20000628: 13a12023 sw s10,288(sp)
+2000062c: 14b12a23 sw a1,340(sp)
+20000630: 14c12c23 sw a2,344(sp)
+20000634: 14d12e23 sw a3,348(sp)
+20000638: 16e12023 sw a4,352(sp)
+2000063c: 16f12223 sw a5,356(sp)
+20000640: 17012423 sw a6,360(sp)
+20000644: 17112623 sw a7,364(sp)
+20000648: 00054783 lbu a5,0(a0)
+2000064c: 15410b13 addi s6,sp,340
+20000650: c25a sw s6,4(sp)
+20000652: 5c078963 beqz a5,20000c24 <ee_printf+0x62a>
+20000656: 02010993 addi s3,sp,32
+2000065a: 832a mv t1,a0
+2000065c: 00000a97 auipc s5,0x0
+20000660: 784a8a93 addi s5,s5,1924 # 20000de0 <uart_ctrl_addr+0x18>
+20000664: 854e mv a0,s3
+20000666: 02e00b93 li s7,46
+2000066a: 00000a17 auipc s4,0x0
+2000066e: 7baa0a13 addi s4,s4,1978 # 20000e24 <uart_ctrl_addr+0x5c>
+20000672: 00001497 auipc s1,0x1
+20000676: 99648493 addi s1,s1,-1642 # 20001008 <uart_ctrl_addr+0x240>
+2000067a: 00001417 auipc s0,0x1
+2000067e: 88a40413 addi s0,s0,-1910 # 20000f04 <uart_ctrl_addr+0x13c>
+20000682: 02500713 li a4,37
+20000686: 06e78463 beq a5,a4,200006ee <ee_printf+0xf4>
+2000068a: 00f50023 sb a5,0(a0)
+2000068e: 00134783 lbu a5,1(t1)
+20000692: 0505 addi a0,a0,1
+20000694: 0305 addi t1,t1,1
+20000696: f7f5 bnez a5,20000682 <ee_printf+0x88>
+20000698: 00050023 sb zero,0(a0)
+2000069c: 02014583 lbu a1,32(sp)
+200006a0: 12058463 beqz a1,200007c8 <ee_printf+0x1ce>
+200006a4: 4405 li s0,1
+200006a6: 41340433 sub s0,s0,s3
+200006aa: 4501 li a0,0
+200006ac: 39e5 jal 200003a4 <serial_send_byte>
+200006ae: 0019c583 lbu a1,1(s3)
+200006b2: 00898533 add a0,s3,s0
+200006b6: 0985 addi s3,s3,1
+200006b8: f9ed bnez a1,200006aa <ee_printf+0xb0>
+200006ba: 14c12083 lw ra,332(sp)
+200006be: 14812403 lw s0,328(sp)
+200006c2: 14412483 lw s1,324(sp)
+200006c6: 14012903 lw s2,320(sp)
+200006ca: 13c12983 lw s3,316(sp)
+200006ce: 13812a03 lw s4,312(sp)
+200006d2: 13412a83 lw s5,308(sp)
+200006d6: 13012b03 lw s6,304(sp)
+200006da: 12c12b83 lw s7,300(sp)
+200006de: 12812c03 lw s8,296(sp)
+200006e2: 12412c83 lw s9,292(sp)
+200006e6: 12012d03 lw s10,288(sp)
+200006ea: 6175 addi sp,sp,368
+200006ec: 8082 ret
+200006ee: 4781 li a5,0
+200006f0: 46c1 li a3,16
+200006f2: 00134583 lbu a1,1(t1)
+200006f6: 00130913 addi s2,t1,1
+200006fa: fe058713 addi a4,a1,-32
+200006fe: 0ff77713 andi a4,a4,255
+20000702: 00e6e763 bltu a3,a4,20000710 <ee_printf+0x116>
+20000706: 070a slli a4,a4,0x2
+20000708: 9756 add a4,a4,s5
+2000070a: 4318 lw a4,0(a4)
+2000070c: 9756 add a4,a4,s5
+2000070e: 8702 jr a4
+20000710: fd058713 addi a4,a1,-48
+20000714: 0ff77713 andi a4,a4,255
+20000718: 46a5 li a3,9
+2000071a: 0ce6fb63 bgeu a3,a4,200007f0 <ee_printf+0x1f6>
+2000071e: 02a00713 li a4,42
+20000722: 56fd li a3,-1
+20000724: 0ee58963 beq a1,a4,20000816 <ee_printf+0x21c>
+20000728: 577d li a4,-1
+2000072a: 0b758163 beq a1,s7,200007cc <ee_printf+0x1d2>
+2000072e: 0df5f613 andi a2,a1,223
+20000732: 04c00813 li a6,76
+20000736: 05060363 beq a2,a6,2000077c <ee_printf+0x182>
+2000073a: fbf58613 addi a2,a1,-65
+2000073e: 0ff67613 andi a2,a2,255
+20000742: 03700813 li a6,55
+20000746: 04c86e63 bltu a6,a2,200007a2 <ee_printf+0x1a8>
+2000074a: 060a slli a2,a2,0x2
+2000074c: 9652 add a2,a2,s4
+2000074e: 4210 lw a2,0(a2)
+20000750: 9652 add a2,a2,s4
+20000752: 8602 jr a2
+20000754: 0017e793 ori a5,a5,1
+20000758: 834a mv t1,s2
+2000075a: bf61 j 200006f2 <ee_printf+0xf8>
+2000075c: 0107e793 ori a5,a5,16
+20000760: 834a mv t1,s2
+20000762: bf41 j 200006f2 <ee_printf+0xf8>
+20000764: 0047e793 ori a5,a5,4
+20000768: 834a mv t1,s2
+2000076a: b761 j 200006f2 <ee_printf+0xf8>
+2000076c: 0207e793 ori a5,a5,32
+20000770: 834a mv t1,s2
+20000772: b741 j 200006f2 <ee_printf+0xf8>
+20000774: 0087e793 ori a5,a5,8
+20000778: 834a mv t1,s2
+2000077a: bfa5 j 200006f2 <ee_printf+0xf8>
+2000077c: 00194803 lbu a6,1(s2)
+20000780: 03700313 li t1,55
+20000784: 00190893 addi a7,s2,1
+20000788: fbf80613 addi a2,a6,-65
+2000078c: 0ff67613 andi a2,a2,255
+20000790: 00c36763 bltu t1,a2,2000079e <ee_printf+0x1a4>
+20000794: 060a slli a2,a2,0x2
+20000796: 9622 add a2,a2,s0
+20000798: 4210 lw a2,0(a2)
+2000079a: 9622 add a2,a2,s0
+2000079c: 8602 jr a2
+2000079e: 85c2 mv a1,a6
+200007a0: 8946 mv s2,a7
+200007a2: 02500713 li a4,37
+200007a6: 00150793 addi a5,a0,1
+200007aa: 42e58963 beq a1,a4,20000bdc <ee_printf+0x5e2>
+200007ae: 00e50023 sb a4,0(a0)
+200007b2: 00094703 lbu a4,0(s2)
+200007b6: 4c071a63 bnez a4,20000c8a <ee_printf+0x690>
+200007ba: 853e mv a0,a5
+200007bc: 00050023 sb zero,0(a0)
+200007c0: 02014583 lbu a1,32(sp)
+200007c4: ee0590e3 bnez a1,200006a4 <ee_printf+0xaa>
+200007c8: 4501 li a0,0
+200007ca: bdc5 j 200006ba <ee_printf+0xc0>
+200007cc: 00194583 lbu a1,1(s2)
+200007d0: 4625 li a2,9
+200007d2: 00190813 addi a6,s2,1
+200007d6: fd058713 addi a4,a1,-48
+200007da: 0ff77713 andi a4,a4,255
+200007de: 3ae67763 bgeu a2,a4,20000b8c <ee_printf+0x592>
+200007e2: 02a00713 li a4,42
+200007e6: 3ce58b63 beq a1,a4,20000bbc <ee_printf+0x5c2>
+200007ea: 8942 mv s2,a6
+200007ec: 4701 li a4,0
+200007ee: b781 j 2000072e <ee_printf+0x134>
+200007f0: 4681 li a3,0
+200007f2: 4625 li a2,9
+200007f4: 00269713 slli a4,a3,0x2
+200007f8: 96ba add a3,a3,a4
+200007fa: 0905 addi s2,s2,1
+200007fc: 0686 slli a3,a3,0x1
+200007fe: 96ae add a3,a3,a1
+20000800: 00094583 lbu a1,0(s2)
+20000804: fd068693 addi a3,a3,-48
+20000808: fd058713 addi a4,a1,-48
+2000080c: 0ff77713 andi a4,a4,255
+20000810: fee672e3 bgeu a2,a4,200007f4 <ee_printf+0x1fa>
+20000814: bf11 j 20000728 <ee_printf+0x12e>
+20000816: 000b2683 lw a3,0(s6)
+2000081a: 00234583 lbu a1,2(t1)
+2000081e: 00230913 addi s2,t1,2
+20000822: 0b11 addi s6,s6,4
+20000824: f006d2e3 bgez a3,20000728 <ee_printf+0x12e>
+20000828: 40d006b3 neg a3,a3
+2000082c: 0107e793 ori a5,a5,16
+20000830: bde5 j 20000728 <ee_printf+0x12e>
+20000832: 004b0813 addi a6,s6,4
+20000836: 4641 li a2,16
+20000838: 000b2583 lw a1,0(s6)
+2000083c: 8b42 mv s6,a6
+2000083e: 3e75 jal 200003fa <number>
+20000840: 00194783 lbu a5,1(s2)
+20000844: 00190313 addi t1,s2,1
+20000848: e2079de3 bnez a5,20000682 <ee_printf+0x88>
+2000084c: b5b1 j 20000698 <ee_printf+0x9e>
+2000084e: 004b0813 addi a6,s6,4
+20000852: 4629 li a2,10
+20000854: b7d5 j 20000838 <ee_printf+0x23e>
+20000856: 8946 mv s2,a7
+20000858: 000b2603 lw a2,0(s6)
+2000085c: 0b11 addi s6,s6,4
+2000085e: 3a060163 beqz a2,20000c00 <ee_printf+0x606>
+20000862: 00064583 lbu a1,0(a2)
+20000866: 3e058b63 beqz a1,20000c5c <ee_printf+0x662>
+2000086a: 3e070963 beqz a4,20000c5c <ee_printf+0x662>
+2000086e: 85b2 mv a1,a2
+20000870: a029 j 2000087a <ee_printf+0x280>
+20000872: 40e58833 sub a6,a1,a4
+20000876: 00c80763 beq a6,a2,20000884 <ee_printf+0x28a>
+2000087a: 0015c803 lbu a6,1(a1)
+2000087e: 0585 addi a1,a1,1
+20000880: fe0819e3 bnez a6,20000872 <ee_printf+0x278>
+20000884: 8bc1 andi a5,a5,16
+20000886: 8d91 sub a1,a1,a2
+20000888: 3a078263 beqz a5,20000c2c <ee_printf+0x632>
+2000088c: 40b05b63 blez a1,20000ca2 <ee_printf+0x6a8>
+20000890: 00b60833 add a6,a2,a1
+20000894: 87aa mv a5,a0
+20000896: 00064703 lbu a4,0(a2)
+2000089a: 0605 addi a2,a2,1
+2000089c: 0785 addi a5,a5,1
+2000089e: fee78fa3 sb a4,-1(a5)
+200008a2: ff061ae3 bne a2,a6,20000896 <ee_printf+0x29c>
+200008a6: 00b50733 add a4,a0,a1
+200008aa: 40b68533 sub a0,a3,a1
+200008ae: 00190313 addi t1,s2,1
+200008b2: 953a add a0,a0,a4
+200008b4: 02000793 li a5,32
+200008b8: 3cd5d163 bge a1,a3,20000c7a <ee_printf+0x680>
+200008bc: 0705 addi a4,a4,1
+200008be: fef70fa3 sb a5,-1(a4)
+200008c2: fea71de3 bne a4,a0,200008bc <ee_printf+0x2c2>
+200008c6: 00194783 lbu a5,1(s2)
+200008ca: da079ce3 bnez a5,20000682 <ee_printf+0x88>
+200008ce: b3e9 j 20000698 <ee_printf+0x9e>
+200008d0: 8946 mv s2,a7
+200008d2: 567d li a2,-1
+200008d4: 32c68263 beq a3,a2,20000bf8 <ee_printf+0x5fe>
+200008d8: 000b2583 lw a1,0(s6)
+200008dc: 4641 li a2,16
+200008de: 0b11 addi s6,s6,4
+200008e0: 3e29 jal 200003fa <number>
+200008e2: 00194783 lbu a5,1(s2)
+200008e6: 00190313 addi t1,s2,1
+200008ea: d8079ce3 bnez a5,20000682 <ee_printf+0x88>
+200008ee: b36d j 20000698 <ee_printf+0x9e>
+200008f0: 004b0813 addi a6,s6,4
+200008f4: 4621 li a2,8
+200008f6: b789 j 20000838 <ee_printf+0x23e>
+200008f8: 0027e793 ori a5,a5,2
+200008fc: 004b0813 addi a6,s6,4
+20000900: 4629 li a2,10
+20000902: bf1d j 20000838 <ee_printf+0x23e>
+20000904: 8946 mv s2,a7
+20000906: 8bc1 andi a5,a5,16
+20000908: 16fd addi a3,a3,-1
+2000090a: 30078063 beqz a5,20000c0a <ee_printf+0x610>
+2000090e: 000b2603 lw a2,0(s6)
+20000912: 00150713 addi a4,a0,1
+20000916: 00168793 addi a5,a3,1
+2000091a: 00c50023 sb a2,0(a0)
+2000091e: 0b11 addi s6,s6,4
+20000920: 953e add a0,a0,a5
+20000922: 00190313 addi t1,s2,1
+20000926: 87ba mv a5,a4
+20000928: 02000613 li a2,32
+2000092c: 34d05763 blez a3,20000c7a <ee_printf+0x680>
+20000930: 0785 addi a5,a5,1
+20000932: fec78fa3 sb a2,-1(a5)
+20000936: fea79de3 bne a5,a0,20000930 <ee_printf+0x336>
+2000093a: 00194783 lbu a5,1(s2)
+2000093e: 00d70533 add a0,a4,a3
+20000942: d40790e3 bnez a5,20000682 <ee_printf+0x88>
+20000946: bb89 j 20000698 <ee_printf+0x9e>
+20000948: 0407e793 ori a5,a5,64
+2000094c: 004b0813 addi a6,s6,4
+20000950: 4641 li a2,16
+20000952: b5dd j 20000838 <ee_printf+0x23e>
+20000954: 000b2703 lw a4,0(s6)
+20000958: 0407e793 ori a5,a5,64
+2000095c: 0b11 addi s6,s6,4
+2000095e: 00074583 lbu a1,0(a4)
+20000962: 4801 li a6,0
+20000964: 00470893 addi a7,a4,4
+20000968: 06300e93 li t4,99
+2000096c: 4fa5 li t6,9
+2000096e: 4329 li t1,10
+20000970: 06400f13 li t5,100
+20000974: 03000e13 li t3,48
+20000978: 00180613 addi a2,a6,1
+2000097c: e19d bnez a1,200009a2 <ee_printf+0x3a8>
+2000097e: 120c addi a1,sp,288
+20000980: 982e add a6,a6,a1
+20000982: efc80423 sb t3,-280(a6)
+20000986: 0705 addi a4,a4,1
+20000988: 07170663 beq a4,a7,200009f4 <ee_printf+0x3fa>
+2000098c: 120c addi a1,sp,288
+2000098e: 95b2 add a1,a1,a2
+20000990: ef758423 sb s7,-280(a1)
+20000994: 00074583 lbu a1,0(a4)
+20000998: 00160813 addi a6,a2,1
+2000099c: 00180613 addi a2,a6,1
+200009a0: ddf9 beqz a1,2000097e <ee_printf+0x384>
+200009a2: 1cbed063 bge t4,a1,20000b62 <ee_printf+0x568>
+200009a6: 03e5ec33 rem s8,a1,t5
+200009aa: 12010293 addi t0,sp,288
+200009ae: 01028d33 add s10,t0,a6
+200009b2: 00c28cb3 add s9,t0,a2
+200009b6: 00280393 addi t2,a6,2
+200009ba: 00380613 addi a2,a6,3
+200009be: 03e5c5b3 div a1,a1,t5
+200009c2: 026c4833 div a6,s8,t1
+200009c6: 00b482b3 add t0,s1,a1
+200009ca: 0002c583 lbu a1,0(t0)
+200009ce: eebd0423 sb a1,-280(s10)
+200009d2: 026c65b3 rem a1,s8,t1
+200009d6: 9826 add a6,a6,s1
+200009d8: 00084803 lbu a6,0(a6)
+200009dc: ef0c8423 sb a6,-280(s9)
+200009e0: 95a6 add a1,a1,s1
+200009e2: 0005c803 lbu a6,0(a1)
+200009e6: 120c addi a1,sp,288
+200009e8: 959e add a1,a1,t2
+200009ea: ef058423 sb a6,-280(a1)
+200009ee: 0705 addi a4,a4,1
+200009f0: f9171ee3 bne a4,a7,2000098c <ee_printf+0x392>
+200009f4: 8bc1 andi a5,a5,16
+200009f6: fff68813 addi a6,a3,-1
+200009fa: e395 bnez a5,20000a1e <ee_printf+0x424>
+200009fc: 40c687b3 sub a5,a3,a2
+20000a00: 97aa add a5,a5,a0
+20000a02: 02000713 li a4,32
+20000a06: 28d65463 bge a2,a3,20000c8e <ee_printf+0x694>
+20000a0a: 0505 addi a0,a0,1
+20000a0c: fee50fa3 sb a4,-1(a0)
+20000a10: fea79de3 bne a5,a0,20000a0a <ee_printf+0x410>
+20000a14: 40d606b3 sub a3,a2,a3
+20000a18: 96c2 add a3,a3,a6
+20000a1a: fff68813 addi a6,a3,-1
+20000a1e: 003c addi a5,sp,8
+20000a20: 00c505b3 add a1,a0,a2
+20000a24: 0007c703 lbu a4,0(a5)
+20000a28: 0505 addi a0,a0,1
+20000a2a: 0785 addi a5,a5,1
+20000a2c: fee50fa3 sb a4,-1(a0)
+20000a30: feb51ae3 bne a0,a1,20000a24 <ee_printf+0x42a>
+20000a34: e0d656e3 bge a2,a3,20000840 <ee_printf+0x246>
+20000a38: 872e mv a4,a1
+20000a3a: 02000513 li a0,32
+20000a3e: 4685 li a3,1
+20000a40: 0705 addi a4,a4,1
+20000a42: 40e687b3 sub a5,a3,a4
+20000a46: 97c2 add a5,a5,a6
+20000a48: 97ae add a5,a5,a1
+20000a4a: fea70fa3 sb a0,-1(a4)
+20000a4e: fef649e3 blt a2,a5,20000a40 <ee_printf+0x446>
+20000a52: 4505 li a0,1
+20000a54: 16c85f63 bge a6,a2,20000bd2 <ee_printf+0x5d8>
+20000a58: 952e add a0,a0,a1
+20000a5a: b3dd j 20000840 <ee_printf+0x246>
+20000a5c: 0027e793 ori a5,a5,2
+20000a60: 4629 li a2,10
+20000a62: 06c00313 li t1,108
+20000a66: 004b0813 addi a6,s6,4
+20000a6a: 20659e63 bne a1,t1,20000c86 <ee_printf+0x68c>
+20000a6e: 000b2583 lw a1,0(s6)
+20000a72: 8946 mv s2,a7
+20000a74: 8b42 mv s6,a6
+20000a76: b3e1 j 2000083e <ee_printf+0x244>
+20000a78: 4621 li a2,8
+20000a7a: b7e5 j 20000a62 <ee_printf+0x468>
+20000a7c: 0407e793 ori a5,a5,64
+20000a80: 4641 li a2,16
+20000a82: b7c5 j 20000a62 <ee_printf+0x468>
+20000a84: 0407e793 ori a5,a5,64
+20000a88: 06c00613 li a2,108
+20000a8c: 000b2703 lw a4,0(s6)
+20000a90: 0b11 addi s6,s6,4
+20000a92: 1ac59f63 bne a1,a2,20000c50 <ee_printf+0x656>
+20000a96: 0407f613 andi a2,a5,64
+20000a9a: 88a6 mv a7,s1
+20000a9c: c609 beqz a2,20000aa6 <ee_printf+0x4ac>
+20000a9e: 00000897 auipc a7,0x0
+20000aa2: 59288893 addi a7,a7,1426 # 20001030 <uart_ctrl_addr+0x268>
+20000aa6: 00810313 addi t1,sp,8
+20000aaa: 01a10e13 addi t3,sp,26
+20000aae: 859a mv a1,t1
+20000ab0: 03a00e93 li t4,58
+20000ab4: a019 j 20000aba <ee_printf+0x4c0>
+20000ab6: ffd58fa3 sb t4,-1(a1)
+20000aba: 00074603 lbu a2,0(a4)
+20000abe: 058d addi a1,a1,3
+20000ac0: 0705 addi a4,a4,1
+20000ac2: 00465813 srli a6,a2,0x4
+20000ac6: 8a3d andi a2,a2,15
+20000ac8: 9846 add a6,a6,a7
+20000aca: 9646 add a2,a2,a7
+20000acc: 00084803 lbu a6,0(a6)
+20000ad0: 00064603 lbu a2,0(a2)
+20000ad4: ff058ea3 sb a6,-3(a1)
+20000ad8: fec58f23 sb a2,-2(a1)
+20000adc: fdc59de3 bne a1,t3,20000ab6 <ee_printf+0x4bc>
+20000ae0: 8bc1 andi a5,a5,16
+20000ae2: fff68613 addi a2,a3,-1
+20000ae6: e39d bnez a5,20000b0c <ee_printf+0x512>
+20000ae8: fef68593 addi a1,a3,-17
+20000aec: 4845 li a6,17
+20000aee: 00b50733 add a4,a0,a1
+20000af2: 02000793 li a5,32
+20000af6: 1ad85163 bge a6,a3,20000c98 <ee_printf+0x69e>
+20000afa: 0505 addi a0,a0,1
+20000afc: fef50fa3 sb a5,-1(a0)
+20000b00: fee51de3 bne a0,a4,20000afa <ee_printf+0x500>
+20000b04: 40b606b3 sub a3,a2,a1
+20000b08: fff68613 addi a2,a3,-1
+20000b0c: 87aa mv a5,a0
+20000b0e: 01130593 addi a1,t1,17
+20000b12: 00034703 lbu a4,0(t1)
+20000b16: 0305 addi t1,t1,1
+20000b18: 0785 addi a5,a5,1
+20000b1a: fee78fa3 sb a4,-1(a5)
+20000b1e: feb31ae3 bne t1,a1,20000b12 <ee_printf+0x518>
+20000b22: 47c5 li a5,17
+20000b24: 0545 addi a0,a0,17
+20000b26: 02d7d763 bge a5,a3,20000b54 <ee_printf+0x55a>
+20000b2a: 872a mv a4,a0
+20000b2c: 02000813 li a6,32
+20000b30: 4585 li a1,1
+20000b32: 46c5 li a3,17
+20000b34: 0705 addi a4,a4,1
+20000b36: 40e587b3 sub a5,a1,a4
+20000b3a: 97b2 add a5,a5,a2
+20000b3c: 97aa add a5,a5,a0
+20000b3e: ff070fa3 sb a6,-1(a4)
+20000b42: fef6c9e3 blt a3,a5,20000b34 <ee_printf+0x53a>
+20000b46: 4741 li a4,16
+20000b48: 4785 li a5,1
+20000b4a: 00c75463 bge a4,a2,20000b52 <ee_printf+0x558>
+20000b4e: ff060793 addi a5,a2,-16
+20000b52: 953e add a0,a0,a5
+20000b54: 00294783 lbu a5,2(s2)
+20000b58: 00290313 addi t1,s2,2
+20000b5c: b20793e3 bnez a5,20000682 <ee_printf+0x88>
+20000b60: be25 j 20000698 <ee_printf+0x9e>
+20000b62: 83c2 mv t2,a6
+20000b64: e6bfdee3 bge t6,a1,200009e0 <ee_printf+0x3e6>
+20000b68: 0265c2b3 div t0,a1,t1
+20000b6c: 12010393 addi t2,sp,288
+20000b70: 01038c33 add s8,t2,a6
+20000b74: 83b2 mv t2,a2
+20000b76: 00280613 addi a2,a6,2
+20000b7a: 00548833 add a6,s1,t0
+20000b7e: 00084803 lbu a6,0(a6)
+20000b82: 0265e5b3 rem a1,a1,t1
+20000b86: ef0c0423 sb a6,-280(s8)
+20000b8a: bd99 j 200009e0 <ee_printf+0x3e6>
+20000b8c: 4701 li a4,0
+20000b8e: 48a5 li a7,9
+20000b90: 00271613 slli a2,a4,0x2
+20000b94: 9732 add a4,a4,a2
+20000b96: 0805 addi a6,a6,1
+20000b98: 0706 slli a4,a4,0x1
+20000b9a: 972e add a4,a4,a1
+20000b9c: 00084583 lbu a1,0(a6)
+20000ba0: fd070713 addi a4,a4,-48
+20000ba4: fd058613 addi a2,a1,-48
+20000ba8: 0ff67613 andi a2,a2,255
+20000bac: fec8f2e3 bgeu a7,a2,20000b90 <ee_printf+0x596>
+20000bb0: 8942 mv s2,a6
+20000bb2: beb5 j 2000072e <ee_printf+0x134>
+20000bb4: 000b2703 lw a4,0(s6)
+20000bb8: 0b11 addi s6,s6,4
+20000bba: b355 j 2000095e <ee_printf+0x364>
+20000bbc: 000b2703 lw a4,0(s6)
+20000bc0: 00294583 lbu a1,2(s2)
+20000bc4: 0b11 addi s6,s6,4
+20000bc6: fff74613 not a2,a4
+20000bca: 867d srai a2,a2,0x1f
+20000bcc: 8f71 and a4,a4,a2
+20000bce: 0909 addi s2,s2,2
+20000bd0: beb9 j 2000072e <ee_printf+0x134>
+20000bd2: 8e91 sub a3,a3,a2
+20000bd4: 01068533 add a0,a3,a6
+20000bd8: 952e add a0,a0,a1
+20000bda: b19d j 20000840 <ee_printf+0x246>
+20000bdc: 00094703 lbu a4,0(s2)
+20000be0: 86be mv a3,a5
+20000be2: 87aa mv a5,a0
+20000be4: 8536 mv a0,a3
+20000be6: 00e78023 sb a4,0(a5)
+20000bea: 00194783 lbu a5,1(s2)
+20000bee: 00190313 addi t1,s2,1
+20000bf2: a80798e3 bnez a5,20000682 <ee_printf+0x88>
+20000bf6: b44d j 20000698 <ee_printf+0x9e>
+20000bf8: 0017e793 ori a5,a5,1
+20000bfc: 46a1 li a3,8
+20000bfe: b9e9 j 200008d8 <ee_printf+0x2de>
+20000c00: 00000617 auipc a2,0x0
+20000c04: 45860613 addi a2,a2,1112 # 20001058 <uart_ctrl_addr+0x290>
+20000c08: b18d j 2000086a <ee_printf+0x270>
+20000c0a: 00d50733 add a4,a0,a3
+20000c0e: 02000793 li a5,32
+20000c12: 04d05b63 blez a3,20000c68 <ee_printf+0x66e>
+20000c16: 0505 addi a0,a0,1
+20000c18: fef50fa3 sb a5,-1(a0)
+20000c1c: fee51de3 bne a0,a4,20000c16 <ee_printf+0x61c>
+20000c20: 56fd li a3,-1
+20000c22: b1f5 j 2000090e <ee_printf+0x314>
+20000c24: 02010993 addi s3,sp,32
+20000c28: 854e mv a0,s3
+20000c2a: b4bd j 20000698 <ee_printf+0x9e>
+20000c2c: fff68813 addi a6,a3,-1
+20000c30: 08d5d263 bge a1,a3,20000cb4 <ee_printf+0x6ba>
+20000c34: 40b687b3 sub a5,a3,a1
+20000c38: 97aa add a5,a5,a0
+20000c3a: 02000713 li a4,32
+20000c3e: 0505 addi a0,a0,1
+20000c40: fee50fa3 sb a4,-1(a0)
+20000c44: fef51de3 bne a0,a5,20000c3e <ee_printf+0x644>
+20000c48: 40d586b3 sub a3,a1,a3
+20000c4c: 96c2 add a3,a3,a6
+20000c4e: b93d j 2000088c <ee_printf+0x292>
+20000c50: 8946 mv s2,a7
+20000c52: b331 j 2000095e <ee_printf+0x364>
+20000c54: 4641 li a2,16
+20000c56: b531 j 20000a62 <ee_printf+0x468>
+20000c58: 4629 li a2,10
+20000c5a: b521 j 20000a62 <ee_printf+0x468>
+20000c5c: 0107f593 andi a1,a5,16
+20000c60: c1b9 beqz a1,20000ca6 <ee_printf+0x6ac>
+20000c62: 872a mv a4,a0
+20000c64: 4581 li a1,0
+20000c66: b191 j 200008aa <ee_printf+0x2b0>
+20000c68: 000b2783 lw a5,0(s6)
+20000c6c: 00150713 addi a4,a0,1
+20000c70: 0b11 addi s6,s6,4
+20000c72: 00f50023 sb a5,0(a0)
+20000c76: 00190313 addi t1,s2,1
+20000c7a: 00194783 lbu a5,1(s2)
+20000c7e: 853a mv a0,a4
+20000c80: a00791e3 bnez a5,20000682 <ee_printf+0x88>
+20000c84: bc11 j 20000698 <ee_printf+0x9e>
+20000c86: 8946 mv s2,a7
+20000c88: be45 j 20000838 <ee_printf+0x23e>
+20000c8a: 0509 addi a0,a0,2
+20000c8c: bfa9 j 20000be6 <ee_printf+0x5ec>
+20000c8e: ffe68793 addi a5,a3,-2
+20000c92: 86c2 mv a3,a6
+20000c94: 883e mv a6,a5
+20000c96: b361 j 20000a1e <ee_printf+0x424>
+20000c98: ffe68793 addi a5,a3,-2
+20000c9c: 86b2 mv a3,a2
+20000c9e: 863e mv a2,a5
+20000ca0: b5b5 j 20000b0c <ee_printf+0x512>
+20000ca2: 872a mv a4,a0
+20000ca4: b119 j 200008aa <ee_printf+0x2b0>
+20000ca6: fff68813 addi a6,a3,-1
+20000caa: f8d045e3 bgtz a3,20000c34 <ee_printf+0x63a>
+20000cae: 86c2 mv a3,a6
+20000cb0: 872a mv a4,a0
+20000cb2: bee5 j 200008aa <ee_printf+0x2b0>
+20000cb4: 86c2 mv a3,a6
+20000cb6: bed9 j 2000088c <ee_printf+0x292>
+
+Disassembly of section .text.startup:
+
+20000cb8 <main>:
+20000cb8: e7fff517 auipc a0,0xe7fff
+20000cbc: 34850513 addi a0,a0,840 # 8000000 <spi_quad_mode>
+20000cc0: e7fff617 auipc a2,0xe7fff
+20000cc4: 3b460613 addi a2,a2,948 # 8000074 <itim_end>
+20000cc8: 1141 addi sp,sp,-16
+20000cca: 8e09 sub a2,a2,a0
+20000ccc: 00000597 auipc a1,0x0
+20000cd0: 08858593 addi a1,a1,136 # 20000d54 <itim_load_start>
+20000cd4: c606 sw ra,12(sp)
+20000cd6: c3cff0ef jal ra,20000112 <memcpy>
+20000cda: 1ffff517 auipc a0,0x1ffff
+20000cde: 32650513 addi a0,a0,806 # 40000000 <_end>
+20000ce2: 1ffff617 auipc a2,0x1ffff
+20000ce6: 31e60613 addi a2,a2,798 # 40000000 <_end>
+20000cea: 8e09 sub a2,a2,a0
+20000cec: 00000597 auipc a1,0x0
+20000cf0: 37458593 addi a1,a1,884 # 20001060 <erodata>
+20000cf4: c1eff0ef jal ra,20000112 <memcpy>
+20000cf8: 1ffff517 auipc a0,0x1ffff
+20000cfc: 30850513 addi a0,a0,776 # 40000000 <_end>
+20000d00: 1ffff617 auipc a2,0x1ffff
+20000d04: 30060613 addi a2,a2,768 # 40000000 <_end>
+20000d08: 8e09 sub a2,a2,a0
+20000d0a: 4581 li a1,0
+20000d0c: becff0ef jal ra,200000f8 <memset>
+20000d10: 10014537 lui a0,0x10014
+20000d14: e7fff097 auipc ra,0xe7fff
+20000d18: 2ec080e7 jalr 748(ra) # 8000000 <spi_quad_mode>
+20000d1c: 4585 li a1,1
+20000d1e: 4501 li a0,0
+20000d20: e3aff0ef jal ra,2000035a <serial_init>
+20000d24: 00000517 auipc a0,0x0
+20000d28: 2c050513 addi a0,a0,704 # 20000fe4 <uart_ctrl_addr+0x21c>
+20000d2c: d26ff0ef jal ra,20000252 <puts>
+20000d30: 100127b7 lui a5,0x10012
+20000d34: 5f98 lw a4,56(a5)
+20000d36: c00006b7 lui a3,0xc0000
+20000d3a: 40b2 lw ra,12(sp)
+20000d3c: 070a slli a4,a4,0x2
+20000d3e: 8309 srli a4,a4,0x2
+20000d40: df98 sw a4,56(a5)
+20000d42: 4798 lw a4,8(a5)
+20000d44: 4501 li a0,0
+20000d46: 8f55 or a4,a4,a3
+20000d48: c798 sw a4,8(a5)
+20000d4a: 80000737 lui a4,0x80000
+20000d4e: c7d8 sw a4,12(a5)
+20000d50: 0141 addi sp,sp,16
+20000d52: 8082 ret
+
+Disassembly of section .text_itim:
+
+08000000 <spi_quad_mode>:
+ 8000000: 1141 addi sp,sp,-16
+ 8000002: 0ff0000f fence
+ 8000006: 0000100f fence.i
+ 800000a: 4114 lw a3,0(a0)
+ 800000c: 4705 li a4,1
+ 800000e: 4785 li a5,1
+ 8000010: 00e68663 beq a3,a4,800001c <spi_quad_mode+0x1c>
+ 8000014: c11c sw a5,0(a0)
+ 8000016: 4118 lw a4,0(a0)
+ 8000018: fef71ee3 bne a4,a5,8000014 <spi_quad_mode+0x14>
+ 800001c: 5138 lw a4,96(a0)
+ 800001e: 06050793 addi a5,a0,96
+ 8000022: c709 beqz a4,800002c <spi_quad_mode+0x2c>
+ 8000024: 0007a023 sw zero,0(a5) # 10012000 <_stack+0x8010010>
+ 8000028: 4398 lw a4,0(a5)
+ 800002a: ff6d bnez a4,8000024 <spi_quad_mode+0x24>
+ 800002c: 04850693 addi a3,a0,72
+ 8000030: 4298 lw a4,0(a3)
+ 8000032: fe074fe3 bltz a4,8000030 <spi_quad_mode+0x30>
+ 8000036: 03500713 li a4,53
+ 800003a: c538 sw a4,72(a0)
+ 800003c: 000b3737 lui a4,0xb3
+ 8000040: a4770713 addi a4,a4,-1465 # b2a47 <spi_quad_mode-0x7f4d5b9>
+ 8000044: c63a sw a4,12(sp)
+ 8000046: 5174 lw a3,100(a0)
+ 8000048: 4632 lw a2,12(sp)
+ 800004a: 06450713 addi a4,a0,100
+ 800004e: 00d60863 beq a2,a3,800005e <spi_quad_mode+0x5e>
+ 8000052: 46b2 lw a3,12(sp)
+ 8000054: c314 sw a3,0(a4)
+ 8000056: 4310 lw a2,0(a4)
+ 8000058: 46b2 lw a3,12(sp)
+ 800005a: fed61ce3 bne a2,a3,8000052 <spi_quad_mode+0x52>
+ 800005e: 5130 lw a2,96(a0)
+ 8000060: 4685 li a3,1
+ 8000062: 4705 li a4,1
+ 8000064: 00d60663 beq a2,a3,8000070 <spi_quad_mode+0x70>
+ 8000068: c398 sw a4,0(a5)
+ 800006a: 4394 lw a3,0(a5)
+ 800006c: fee69ee3 bne a3,a4,8000068 <spi_quad_mode+0x68>
+ 8000070: 0141 addi sp,sp,16
+ 8000072: 8082 ret
diff --git a/verilog/dv/jtag/spi_flash.mem b/verilog/dv/jtag/spi_flash.mem
new file mode 100644
index 0000000..3a53bd0
--- /dev/null
+++ b/verilog/dv/jtag/spi_flash.mem
@@ -0,0 +1,4458 @@
+// /home/shc/Development/RISC-V/chipyard/vlsi/sim/testcase/jtag/spi_flash.mem
+// spi_flash.srec
+@00000000
+93
+00
+00
+00
+13
+01
+00
+00
+93
+01
+00
+00
+13
+02
+00
+00
+@00000010
+93
+02
+00
+00
+13
+03
+00
+00
+93
+03
+00
+00
+13
+04
+00
+00
+@00000020
+93
+04
+00
+00
+13
+05
+00
+00
+93
+05
+00
+00
+13
+06
+00
+00
+@00000030
+93
+06
+00
+00
+13
+07
+00
+00
+93
+07
+00
+00
+13
+08
+00
+00
+@00000040
+93
+08
+00
+00
+13
+09
+00
+00
+93
+09
+00
+00
+13
+0A
+00
+00
+@00000050
+93
+0A
+00
+00
+13
+0B
+00
+00
+93
+0B
+00
+00
+13
+0C
+00
+00
+@00000060
+93
+0C
+00
+00
+13
+0D
+00
+00
+93
+0D
+00
+00
+13
+0E
+00
+00
+@00000070
+93
+0E
+00
+00
+13
+0F
+00
+00
+93
+0F
+00
+00
+13
+09
+80
+00
+@00000080
+73
+10
+49
+30
+93
+04
+00
+00
+73
+29
+40
+F1
+63
+96
+24
+03
+@00000090
+37
+21
+00
+08
+13
+01
+01
+FF
+EF
+00
+10
+42
+B7
+04
+00
+02
+@000000A0
+13
+09
+10
+00
+23
+A0
+24
+01
+93
+84
+44
+00
+37
+09
+00
+02
+@000000B0
+13
+09
+09
+08
+E3
+C6
+24
+FF
+73
+00
+50
+10
+73
+29
+40
+34
+@000000C0
+13
+79
+89
+00
+E3
+0A
+09
+FE
+B7
+04
+00
+02
+73
+29
+40
+F1
+@000000D0
+13
+19
+29
+00
+33
+09
+99
+00
+23
+20
+09
+00
+03
+A9
+04
+00
+@000000E0
+E3
+1E
+09
+FE
+93
+84
+44
+00
+37
+09
+00
+02
+13
+09
+09
+08
+@000000F0
+E3
+C6
+24
+FF
+6F
+00
+00
+00
+93
+F5
+F5
+0F
+33
+07
+C5
+00
+@00000100
+AA
+87
+63
+57
+C0
+00
+85
+07
+A3
+8F
+B7
+FE
+E3
+1D
+F7
+FE
+@00000110
+82
+80
+63
+5C
+C0
+00
+2A
+96
+AA
+87
+03
+C7
+05
+00
+85
+07
+@00000120
+85
+05
+A3
+8F
+E7
+FE
+E3
+1A
+F6
+FE
+82
+80
+63
+55
+C0
+02
+@00000130
+2E
+96
+19
+A0
+63
+01
+B6
+02
+83
+47
+05
+00
+03
+C7
+05
+00
+@00000140
+05
+05
+85
+05
+E3
+88
+E7
+FE
+33
+35
+F7
+00
+33
+05
+A0
+40
+@00000150
+09
+89
+7D
+15
+82
+80
+01
+45
+82
+80
+83
+47
+05
+00
+2A
+87
+@00000160
+01
+45
+81
+CB
+05
+05
+B3
+07
+A7
+00
+83
+C7
+07
+00
+FD
+FB
+@00000170
+82
+80
+82
+80
+83
+C7
+05
+00
+23
+00
+F5
+00
+83
+C7
+05
+00
+@00000180
+99
+CB
+AA
+87
+03
+C7
+15
+00
+85
+05
+85
+07
+23
+80
+E7
+00
+@00000190
+03
+C7
+05
+00
+65
+FB
+82
+80
+19
+A0
+63
+9D
+E7
+00
+83
+47
+@000001A0
+05
+00
+03
+C7
+05
+00
+05
+05
+85
+05
+B3
+E6
+E7
+00
+F5
+F6
+@000001B0
+01
+45
+82
+80
+33
+35
+F7
+00
+33
+05
+A0
+40
+09
+89
+7D
+15
+@000001C0
+82
+80
+AA
+87
+33
+08
+C5
+00
+03
+C7
+07
+00
+B3
+06
+F8
+40
+@000001D0
+19
+EB
+03
+C7
+05
+00
+0D
+C7
+32
+95
+1D
+8D
+33
+25
+A0
+00
+@000001E0
+33
+05
+A0
+40
+82
+80
+63
+5D
+D0
+00
+83
+C6
+05
+00
+85
+07
+@000001F0
+85
+05
+E3
+8B
+E6
+FC
+05
+45
+E3
+E6
+E6
+FE
+7D
+55
+82
+80
+@00000200
+01
+45
+82
+80
+41
+11
+22
+C4
+06
+C6
+A9
+47
+2A
+84
+63
+08
+@00000210
+F5
+00
+A2
+85
+22
+44
+B2
+40
+01
+45
+41
+01
+61
+A2
+B5
+45
+@00000220
+01
+45
+49
+22
+A2
+85
+22
+44
+B2
+40
+01
+45
+41
+01
+9D
+AA
+@00000230
+41
+11
+01
+45
+22
+C4
+06
+C6
+5D
+22
+B5
+47
+29
+44
+63
+03
+@00000240
+F5
+00
+2A
+84
+22
+85
+7D
+3F
+B2
+40
+22
+85
+22
+44
+41
+01
+@00000250
+82
+80
+41
+11
+22
+C4
+06
+C6
+2A
+84
+03
+45
+05
+00
+11
+C5
+@00000260
+05
+04
+4D
+37
+03
+45
+04
+00
+65
+FD
+B2
+40
+22
+44
+01
+45
+@00000270
+41
+01
+82
+80
+41
+11
+22
+C4
+26
+C2
+4A
+C0
+06
+C6
+29
+49
+@00000280
+2A
+84
+81
+44
+75
+37
+63
+0C
+25
+01
+23
+00
+A4
+00
+93
+87
+@00000290
+14
+00
+05
+04
+19
+C5
+BE
+84
+61
+3F
+E3
+18
+25
+FF
+23
+00
+@000002A0
+04
+00
+B2
+40
+22
+44
+02
+49
+26
+85
+92
+44
+41
+01
+82
+80
+@000002B0
+01
+11
+06
+CE
+22
+CC
+23
+06
+01
+00
+05
+ED
+91
+E1
+85
+45
+@000002C0
+93
+07
+B1
+00
+13
+07
+00
+03
+91
+C5
+23
+80
+E7
+00
+FD
+15
+@000002D0
+FD
+17
+E5
+FD
+03
+C5
+17
+00
+13
+84
+17
+00
+11
+C5
+05
+04
+@000002E0
+15
+37
+03
+45
+04
+00
+65
+FD
+F2
+40
+62
+44
+01
+45
+05
+61
+@000002F0
+82
+80
+2A
+87
+93
+77
+F7
+00
+17
+18
+00
+00
+13
+08
+C8
+CF
+@00000300
+C2
+97
+03
+C5
+07
+00
+13
+04
+B1
+00
+93
+07
+F4
+FF
+A3
+80
+@00000310
+A7
+00
+11
+83
+99
+CD
+FD
+15
+55
+D7
+3E
+84
+93
+77
+F7
+00
+@00000320
+C2
+97
+03
+C5
+07
+00
+11
+83
+93
+07
+F4
+FF
+A3
+80
+A7
+00
+@00000330
+FD
+F1
+93
+76
+F7
+00
+C2
+96
+13
+86
+F7
+FF
+45
+D3
+03
+C5
+@00000340
+06
+00
+11
+83
+3E
+84
+23
+80
+A7
+00
+93
+76
+F7
+00
+B2
+87
+@00000350
+C2
+96
+13
+86
+F7
+FF
+59
+D3
+DD
+B7
+93
+17
+25
+00
+17
+15
+@00000360
+00
+00
+13
+05
+A5
+A6
+3E
+95
+18
+41
+85
+47
+1C
+C7
+5C
+C7
+@00000370
+63
+8A
+F5
+00
+93
+07
+30
+36
+1C
+CF
+5C
+43
+E3
+DF
+07
+FE
+@00000380
+01
+45
+82
+80
+BD
+47
+1C
+CF
+CD
+BF
+93
+17
+25
+00
+17
+15
+@00000390
+00
+00
+13
+05
+A5
+A3
+3E
+95
+1C
+41
+88
+43
+13
+45
+F5
+FF
+@000003A0
+7D
+81
+82
+80
+93
+17
+25
+00
+17
+15
+00
+00
+13
+05
+05
+A2
+@000003B0
+3E
+95
+18
+41
+1C
+43
+E3
+CF
+07
+FE
+0C
+C3
+01
+45
+82
+80
+@000003C0
+93
+17
+25
+00
+17
+15
+00
+00
+13
+05
+45
+A0
+3E
+95
+1C
+41
+@000003D0
+DC
+43
+13
+C5
+F7
+FF
+23
+80
+F5
+00
+7D
+81
+82
+80
+93
+17
+@000003E0
+25
+00
+17
+15
+00
+00
+13
+05
+65
+9E
+3E
+95
+1C
+41
+C8
+43
+@000003F0
+E3
+4F
+05
+FE
+13
+75
+F5
+0F
+82
+80
+1D
+71
+A2
+CE
+A6
+CC
+@00000400
+13
+F8
+07
+04
+17
+1E
+00
+00
+13
+0E
+CE
+C2
+63
+16
+08
+00
+@00000410
+17
+1E
+00
+00
+13
+0E
+8E
+BF
+13
+F4
+07
+01
+63
+02
+04
+14
+@00000420
+F9
+9B
+A2
+84
+13
+F8
+27
+00
+93
+0F
+00
+02
+93
+F3
+07
+02
+@00000430
+63
+06
+08
+14
+63
+C6
+05
+14
+13
+F8
+47
+00
+63
+1C
+08
+16
+@00000440
+A1
+8B
+81
+42
+81
+C7
+FD
+16
+93
+02
+00
+02
+63
+8A
+03
+00
+@00000450
+C1
+47
+63
+0F
+F6
+16
+93
+07
+86
+FF
+93
+B7
+17
+00
+9D
+8E
+@00000460
+63
+97
+05
+12
+93
+07
+00
+03
+23
+06
+F1
+00
+01
+43
+13
+08
+@00000470
+00
+03
+85
+48
+7C
+00
+C6
+8E
+63
+D3
+E8
+00
+BA
+8E
+33
+8E
+@00000480
+D6
+41
+93
+05
+FE
+FF
+91
+EC
+B3
+06
+C5
+01
+13
+07
+00
+02
+@00000490
+63
+5A
+C0
+15
+05
+05
+A3
+0F
+E5
+FE
+E3
+1D
+D5
+FE
+F9
+55
+@000004A0
+7D
+5E
+63
+85
+02
+00
+23
+00
+55
+00
+05
+05
+63
+88
+03
+00
+@000004B0
+21
+47
+63
+01
+E6
+12
+41
+47
+63
+02
+E6
+10
+0D
+E8
+2A
+86
+@000004C0
+05
+47
+63
+56
+C0
+13
+05
+06
+B3
+06
+C7
+40
+AE
+96
+AA
+96
+@000004D0
+A3
+0F
+F6
+FF
+E3
+49
+D0
+FE
+13
+C7
+F5
+FF
+7D
+87
+6D
+8F
+@000004E0
+FD
+15
+33
+8E
+E5
+40
+05
+07
+3A
+95
+93
+05
+FE
+FF
+33
+87
+@000004F0
+1E
+41
+2A
+97
+93
+06
+00
+03
+63
+D4
+D8
+0F
+05
+05
+A3
+0F
+@00000500
+D5
+FE
+E3
+1D
+A7
+FE
+33
+86
+67
+00
+BA
+86
+05
+45
+19
+A0
+@00000510
+03
+48
+06
+00
+85
+06
+B3
+07
+D5
+40
+9A
+97
+BA
+97
+A3
+8F
+@00000520
+06
+FF
+7D
+16
+E3
+46
+F0
+FE
+13
+05
+13
+00
+3A
+95
+63
+55
+@00000530
+C0
+03
+2A
+87
+13
+06
+00
+02
+85
+46
+05
+07
+B3
+87
+E6
+40
+@00000540
+AE
+97
+AA
+97
+A3
+0F
+C7
+FE
+E3
+49
+F0
+FE
+93
+C7
+F5
+FF
+@00000550
+FD
+87
+FD
+8D
+85
+05
+2E
+95
+76
+44
+E6
+44
+25
+61
+82
+80
+@00000560
+13
+F8
+17
+00
+93
+F4
+17
+01
+93
+0F
+00
+03
+E3
+0C
+08
+EA
+@00000570
+13
+F8
+27
+00
+93
+F3
+07
+02
+E3
+1E
+08
+EA
+81
+42
+F9
+B5
+@00000580
+B3
+05
+B0
+40
+FD
+16
+93
+02
+D0
+02
+E3
+93
+03
+EC
+81
+48
+@00000590
+7C
+00
+33
+F8
+C5
+02
+46
+83
+85
+08
+33
+8F
+17
+01
+AE
+8E
+@000005A0
+72
+98
+03
+48
+08
+00
+B3
+D5
+C5
+02
+A3
+0F
+0F
+FF
+E3
+F2
+@000005B0
+CE
+FE
+D1
+B5
+FD
+16
+93
+02
+B0
+02
+49
+BD
+13
+07
+00
+03
+@000005C0
+23
+00
+E5
+00
+13
+07
+80
+07
+A3
+00
+E5
+00
+09
+05
+FD
+B5
+@000005D0
+F9
+16
+79
+B5
+13
+07
+00
+03
+23
+00
+E5
+00
+05
+05
+F9
+BD
+@000005E0
+2A
+87
+15
+B7
+13
+07
+EE
+FF
+2E
+8E
+BA
+85
+5D
+BD
+2E
+8E
+@000005F0
+FD
+15
+F5
+BD
+AA
+85
+01
+45
+75
+B3
+49
+71
+23
+28
+61
+13
+@00000600
+23
+26
+11
+14
+23
+24
+81
+14
+23
+22
+91
+14
+23
+20
+21
+15
+@00000610
+23
+2E
+31
+13
+23
+2C
+41
+13
+23
+2A
+51
+13
+23
+26
+71
+13
+@00000620
+23
+24
+81
+13
+23
+22
+91
+13
+23
+20
+A1
+13
+23
+2A
+B1
+14
+@00000630
+23
+2C
+C1
+14
+23
+2E
+D1
+14
+23
+20
+E1
+16
+23
+22
+F1
+16
+@00000640
+23
+24
+01
+17
+23
+26
+11
+17
+83
+47
+05
+00
+13
+0B
+41
+15
+@00000650
+5A
+C2
+63
+89
+07
+5C
+93
+09
+01
+02
+2A
+83
+97
+0A
+00
+00
+@00000660
+93
+8A
+4A
+78
+4E
+85
+93
+0B
+E0
+02
+17
+0A
+00
+00
+13
+0A
+@00000670
+AA
+7B
+97
+14
+00
+00
+93
+84
+64
+99
+17
+14
+00
+00
+13
+04
+@00000680
+A4
+88
+13
+07
+50
+02
+63
+84
+E7
+06
+23
+00
+F5
+00
+83
+47
+@00000690
+13
+00
+05
+05
+05
+03
+F5
+F7
+23
+00
+05
+00
+83
+45
+01
+02
+@000006A0
+63
+84
+05
+12
+05
+44
+33
+04
+34
+41
+01
+45
+E5
+39
+83
+C5
+@000006B0
+19
+00
+33
+85
+89
+00
+85
+09
+ED
+F9
+83
+20
+C1
+14
+03
+24
+@000006C0
+81
+14
+83
+24
+41
+14
+03
+29
+01
+14
+83
+29
+C1
+13
+03
+2A
+@000006D0
+81
+13
+83
+2A
+41
+13
+03
+2B
+01
+13
+83
+2B
+C1
+12
+03
+2C
+@000006E0
+81
+12
+83
+2C
+41
+12
+03
+2D
+01
+12
+75
+61
+82
+80
+81
+47
+@000006F0
+C1
+46
+83
+45
+13
+00
+13
+09
+13
+00
+13
+87
+05
+FE
+13
+77
+@00000700
+F7
+0F
+63
+E7
+E6
+00
+0A
+07
+56
+97
+18
+43
+56
+97
+02
+87
+@00000710
+13
+87
+05
+FD
+13
+77
+F7
+0F
+A5
+46
+63
+FB
+E6
+0C
+13
+07
+@00000720
+A0
+02
+FD
+56
+63
+89
+E5
+0E
+7D
+57
+63
+81
+75
+0B
+13
+F6
+@00000730
+F5
+0D
+13
+08
+C0
+04
+63
+03
+06
+05
+13
+86
+F5
+FB
+13
+76
+@00000740
+F6
+0F
+13
+08
+70
+03
+63
+6E
+C8
+04
+0A
+06
+52
+96
+10
+42
+@00000750
+52
+96
+02
+86
+93
+E7
+17
+00
+4A
+83
+61
+BF
+93
+E7
+07
+01
+@00000760
+4A
+83
+41
+BF
+93
+E7
+47
+00
+4A
+83
+61
+B7
+93
+E7
+07
+02
+@00000770
+4A
+83
+41
+B7
+93
+E7
+87
+00
+4A
+83
+A5
+BF
+03
+48
+19
+00
+@00000780
+13
+03
+70
+03
+93
+08
+19
+00
+13
+06
+F8
+FB
+13
+76
+F6
+0F
+@00000790
+63
+67
+C3
+00
+0A
+06
+22
+96
+10
+42
+22
+96
+02
+86
+C2
+85
+@000007A0
+46
+89
+13
+07
+50
+02
+93
+07
+15
+00
+63
+89
+E5
+42
+23
+00
+@000007B0
+E5
+00
+03
+47
+09
+00
+63
+1A
+07
+4C
+3E
+85
+23
+00
+05
+00
+@000007C0
+83
+45
+01
+02
+E3
+90
+05
+EE
+01
+45
+C5
+BD
+83
+45
+19
+00
+@000007D0
+25
+46
+13
+08
+19
+00
+13
+87
+05
+FD
+13
+77
+F7
+0F
+63
+77
+@000007E0
+E6
+3A
+13
+07
+A0
+02
+63
+8B
+E5
+3C
+42
+89
+01
+47
+81
+B7
+@000007F0
+81
+46
+25
+46
+13
+97
+26
+00
+BA
+96
+05
+09
+86
+06
+AE
+96
+@00000800
+83
+45
+09
+00
+93
+86
+06
+FD
+13
+87
+05
+FD
+13
+77
+F7
+0F
+@00000810
+E3
+72
+E6
+FE
+11
+BF
+83
+26
+0B
+00
+83
+45
+23
+00
+13
+09
+@00000820
+23
+00
+11
+0B
+E3
+D2
+06
+F0
+B3
+06
+D0
+40
+93
+E7
+07
+01
+@00000830
+E5
+BD
+13
+08
+4B
+00
+41
+46
+83
+25
+0B
+00
+42
+8B
+75
+3E
+@00000840
+83
+47
+19
+00
+13
+03
+19
+00
+E3
+9D
+07
+E2
+B1
+B5
+13
+08
+@00000850
+4B
+00
+29
+46
+D5
+B7
+46
+89
+03
+26
+0B
+00
+11
+0B
+63
+01
+@00000860
+06
+3A
+83
+45
+06
+00
+63
+8B
+05
+3E
+63
+09
+07
+3E
+B2
+85
+@00000870
+29
+A0
+33
+88
+E5
+40
+63
+07
+C8
+00
+03
+C8
+15
+00
+85
+05
+@00000880
+E3
+19
+08
+FE
+C1
+8B
+91
+8D
+63
+82
+07
+3A
+63
+5B
+B0
+40
+@00000890
+33
+08
+B6
+00
+AA
+87
+03
+47
+06
+00
+05
+06
+85
+07
+A3
+8F
+@000008A0
+E7
+FE
+E3
+1A
+06
+FF
+33
+07
+B5
+00
+33
+85
+B6
+40
+13
+03
+@000008B0
+19
+00
+3A
+95
+93
+07
+00
+02
+63
+D1
+D5
+3C
+05
+07
+A3
+0F
+@000008C0
+F7
+FE
+E3
+1D
+A7
+FE
+83
+47
+19
+00
+E3
+9C
+07
+DA
+E9
+B3
+@000008D0
+46
+89
+7D
+56
+63
+82
+C6
+32
+83
+25
+0B
+00
+41
+46
+11
+0B
+@000008E0
+29
+3E
+83
+47
+19
+00
+13
+03
+19
+00
+E3
+9C
+07
+D8
+6D
+B3
+@000008F0
+13
+08
+4B
+00
+21
+46
+89
+B7
+93
+E7
+27
+00
+13
+08
+4B
+00
+@00000900
+29
+46
+1D
+BF
+46
+89
+C1
+8B
+FD
+16
+63
+80
+07
+30
+03
+26
+@00000910
+0B
+00
+13
+07
+15
+00
+93
+87
+16
+00
+23
+00
+C5
+00
+11
+0B
+@00000920
+3E
+95
+13
+03
+19
+00
+BA
+87
+13
+06
+00
+02
+63
+57
+D0
+34
+@00000930
+85
+07
+A3
+8F
+C7
+FE
+E3
+9D
+A7
+FE
+83
+47
+19
+00
+33
+05
+@00000940
+D7
+00
+E3
+90
+07
+D4
+89
+BB
+93
+E7
+07
+04
+13
+08
+4B
+00
+@00000950
+41
+46
+DD
+B5
+03
+27
+0B
+00
+93
+E7
+07
+04
+11
+0B
+83
+45
+@00000960
+07
+00
+01
+48
+93
+08
+47
+00
+93
+0E
+30
+06
+A5
+4F
+29
+43
+@00000970
+13
+0F
+40
+06
+13
+0E
+00
+03
+13
+06
+18
+00
+9D
+E1
+0C
+12
+@00000980
+2E
+98
+23
+04
+C8
+EF
+05
+07
+63
+06
+17
+07
+0C
+12
+B2
+95
+@00000990
+23
+84
+75
+EF
+83
+45
+07
+00
+13
+08
+16
+00
+13
+06
+18
+00
+@000009A0
+F9
+DD
+63
+D0
+BE
+1C
+33
+EC
+E5
+03
+93
+02
+01
+12
+33
+8D
+@000009B0
+02
+01
+B3
+8C
+C2
+00
+93
+03
+28
+00
+13
+06
+38
+00
+B3
+C5
+@000009C0
+E5
+03
+33
+48
+6C
+02
+B3
+82
+B4
+00
+83
+C5
+02
+00
+23
+04
+@000009D0
+BD
+EE
+B3
+65
+6C
+02
+26
+98
+03
+48
+08
+00
+23
+84
+0C
+EF
+@000009E0
+A6
+95
+03
+C8
+05
+00
+0C
+12
+9E
+95
+23
+84
+05
+EF
+05
+07
+@000009F0
+E3
+1E
+17
+F9
+C1
+8B
+13
+88
+F6
+FF
+95
+E3
+B3
+87
+C6
+40
+@00000A00
+AA
+97
+13
+07
+00
+02
+63
+54
+D6
+28
+05
+05
+A3
+0F
+E5
+FE
+@00000A10
+E3
+9D
+A7
+FE
+B3
+06
+D6
+40
+C2
+96
+13
+88
+F6
+FF
+3C
+00
+@00000A20
+B3
+05
+C5
+00
+03
+C7
+07
+00
+05
+05
+85
+07
+A3
+0F
+E5
+FE
+@00000A30
+E3
+1A
+B5
+FE
+E3
+56
+D6
+E0
+2E
+87
+13
+05
+00
+02
+85
+46
+@00000A40
+05
+07
+B3
+87
+E6
+40
+C2
+97
+AE
+97
+A3
+0F
+A7
+FE
+E3
+49
+@00000A50
+F6
+FE
+05
+45
+63
+5F
+C8
+16
+2E
+95
+DD
+B3
+93
+E7
+27
+00
+@00000A60
+29
+46
+13
+03
+C0
+06
+13
+08
+4B
+00
+63
+9E
+65
+20
+83
+25
+@00000A70
+0B
+00
+46
+89
+42
+8B
+E1
+B3
+21
+46
+E5
+B7
+93
+E7
+07
+04
+@00000A80
+41
+46
+C5
+B7
+93
+E7
+07
+04
+13
+06
+C0
+06
+03
+27
+0B
+00
+@00000A90
+11
+0B
+63
+9F
+C5
+1A
+13
+F6
+07
+04
+A6
+88
+09
+C6
+97
+08
+@00000AA0
+00
+00
+93
+88
+28
+59
+13
+03
+81
+00
+13
+0E
+A1
+01
+9A
+85
+@00000AB0
+93
+0E
+A0
+03
+19
+A0
+A3
+8F
+D5
+FF
+03
+46
+07
+00
+8D
+05
+@00000AC0
+05
+07
+13
+58
+46
+00
+3D
+8A
+46
+98
+46
+96
+03
+48
+08
+00
+@00000AD0
+03
+46
+06
+00
+A3
+8E
+05
+FF
+23
+8F
+C5
+FE
+E3
+9D
+C5
+FD
+@00000AE0
+C1
+8B
+13
+86
+F6
+FF
+9D
+E3
+93
+85
+F6
+FE
+45
+48
+33
+07
+@00000AF0
+B5
+00
+93
+07
+00
+02
+63
+51
+D8
+1A
+05
+05
+A3
+0F
+F5
+FE
+@00000B00
+E3
+1D
+E5
+FE
+B3
+06
+B6
+40
+13
+86
+F6
+FF
+AA
+87
+93
+05
+@00000B10
+13
+01
+03
+47
+03
+00
+05
+03
+85
+07
+A3
+8F
+E7
+FE
+E3
+1A
+@00000B20
+B3
+FE
+C5
+47
+45
+05
+63
+D7
+D7
+02
+2A
+87
+13
+08
+00
+02
+@00000B30
+85
+45
+C5
+46
+05
+07
+B3
+87
+E5
+40
+B2
+97
+AA
+97
+A3
+0F
+@00000B40
+07
+FF
+E3
+C9
+F6
+FE
+41
+47
+85
+47
+63
+54
+C7
+00
+93
+07
+@00000B50
+06
+FF
+3E
+95
+83
+47
+29
+00
+13
+03
+29
+00
+E3
+93
+07
+B2
+@00000B60
+25
+BE
+C2
+83
+E3
+DE
+BF
+E6
+B3
+C2
+65
+02
+93
+03
+01
+12
+@00000B70
+33
+8C
+03
+01
+B2
+83
+13
+06
+28
+00
+33
+88
+54
+00
+03
+48
+@00000B80
+08
+00
+B3
+E5
+65
+02
+23
+04
+0C
+EF
+99
+BD
+01
+47
+A5
+48
+@00000B90
+13
+16
+27
+00
+32
+97
+05
+08
+06
+07
+2E
+97
+83
+45
+08
+00
+@00000BA0
+13
+07
+07
+FD
+13
+86
+05
+FD
+13
+76
+F6
+0F
+E3
+F2
+C8
+FE
+@00000BB0
+42
+89
+B5
+BE
+03
+27
+0B
+00
+11
+0B
+55
+B3
+03
+27
+0B
+00
+@00000BC0
+83
+45
+29
+00
+11
+0B
+13
+46
+F7
+FF
+7D
+86
+71
+8F
+09
+09
+@00000BD0
+B9
+BE
+91
+8E
+33
+85
+06
+01
+2E
+95
+9D
+B1
+03
+47
+09
+00
+@00000BE0
+BE
+86
+AA
+87
+36
+85
+23
+80
+E7
+00
+83
+47
+19
+00
+13
+03
+@00000BF0
+19
+00
+E3
+98
+07
+A8
+4D
+B4
+93
+E7
+17
+00
+A1
+46
+E9
+B9
+@00000C00
+17
+06
+00
+00
+13
+06
+86
+45
+8D
+B1
+33
+07
+D5
+00
+93
+07
+@00000C10
+00
+02
+63
+5B
+D0
+04
+05
+05
+A3
+0F
+F5
+FE
+E3
+1D
+E5
+FE
+@00000C20
+FD
+56
+F5
+B1
+93
+09
+01
+02
+4E
+85
+BD
+B4
+13
+88
+F6
+FF
+@00000C30
+63
+D2
+D5
+08
+B3
+87
+B6
+40
+AA
+97
+13
+07
+00
+02
+05
+05
+@00000C40
+A3
+0F
+E5
+FE
+E3
+1D
+F5
+FE
+B3
+86
+D5
+40
+C2
+96
+3D
+B9
+@00000C50
+46
+89
+31
+B3
+41
+46
+31
+B5
+29
+46
+21
+B5
+93
+F5
+07
+01
+@00000C60
+B9
+C1
+2A
+87
+81
+45
+91
+B1
+83
+27
+0B
+00
+13
+07
+15
+00
+@00000C70
+11
+0B
+23
+00
+F5
+00
+13
+03
+19
+00
+83
+47
+19
+00
+3A
+85
+@00000C80
+E3
+91
+07
+A0
+11
+BC
+46
+89
+45
+BE
+09
+05
+A9
+BF
+93
+87
+@00000C90
+E6
+FF
+C2
+86
+3E
+88
+61
+B3
+93
+87
+E6
+FF
+B2
+86
+3E
+86
+@00000CA0
+B5
+B5
+2A
+87
+19
+B1
+13
+88
+F6
+FF
+E3
+45
+D0
+F8
+C2
+86
+@00000CB0
+2A
+87
+E5
+BE
+C2
+86
+D9
+BE
+@00000CB8
+17
+F5
+FF
+E7
+13
+05
+85
+34
+17
+F6
+FF
+E7
+13
+06
+46
+3B
+@00000CC8
+41
+11
+09
+8E
+97
+05
+00
+00
+93
+85
+85
+08
+06
+C6
+EF
+F0
+@00000CD8
+CF
+C3
+17
+F5
+FF
+1F
+13
+05
+65
+32
+17
+F6
+FF
+1F
+13
+06
+@00000CE8
+E6
+31
+09
+8E
+97
+05
+00
+00
+93
+85
+45
+37
+EF
+F0
+EF
+C1
+@00000CF8
+17
+F5
+FF
+1F
+13
+05
+85
+30
+17
+F6
+FF
+1F
+13
+06
+06
+30
+@00000D08
+09
+8E
+81
+45
+EF
+F0
+CF
+BE
+37
+45
+01
+10
+97
+F0
+FF
+E7
+@00000D18
+E7
+80
+C0
+2E
+85
+45
+01
+45
+EF
+F0
+AF
+E3
+17
+05
+00
+00
+@00000D28
+13
+05
+05
+2C
+EF
+F0
+6F
+D2
+B7
+27
+01
+10
+98
+5F
+B7
+06
+@00000D38
+00
+C0
+B2
+40
+0A
+07
+09
+83
+98
+DF
+98
+47
+01
+45
+55
+8F
+@00000D48
+98
+C7
+37
+07
+00
+80
+D8
+C7
+41
+01
+82
+80
+@00000D54
+41
+11
+0F
+00
+F0
+0F
+0F
+10
+00
+00
+14
+41
+05
+47
+85
+47
+@00000D64
+63
+86
+E6
+00
+1C
+C1
+18
+41
+E3
+1E
+F7
+FE
+38
+51
+93
+07
+@00000D74
+05
+06
+09
+C7
+23
+A0
+07
+00
+98
+43
+6D
+FF
+93
+06
+85
+04
+@00000D84
+98
+42
+E3
+4F
+07
+FE
+13
+07
+50
+03
+38
+C5
+37
+37
+0B
+00
+@00000D94
+13
+07
+77
+A4
+3A
+C6
+74
+51
+32
+46
+13
+07
+45
+06
+63
+08
+@00000DA4
+D6
+00
+B2
+46
+14
+C3
+10
+43
+B2
+46
+E3
+1C
+D6
+FE
+30
+51
+@00000DB4
+85
+46
+05
+47
+63
+06
+D6
+00
+98
+C3
+94
+43
+E3
+9E
+E6
+FE
+@00000DC4
+41
+01
+82
+80
+@00000DC8
+00
+30
+01
+10
+00
+30
+02
+10
+00
+30
+03
+10
+00
+30
+04
+10
+@00000DD8
+00
+30
+05
+10
+00
+30
+06
+10
+94
+F9
+FF
+FF
+30
+F9
+FF
+FF
+@00000DE8
+30
+F9
+FF
+FF
+8C
+F9
+FF
+FF
+30
+F9
+FF
+FF
+30
+F9
+FF
+FF
+@00000DF8
+30
+F9
+FF
+FF
+30
+F9
+FF
+FF
+30
+F9
+FF
+FF
+30
+F9
+FF
+FF
+@00000E08
+30
+F9
+FF
+FF
+84
+F9
+FF
+FF
+30
+F9
+FF
+FF
+7C
+F9
+FF
+FF
+@00000E18
+30
+F9
+FF
+FF
+30
+F9
+FF
+FF
+74
+F9
+FF
+FF
+30
+FB
+FF
+FF
+@00000E28
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+@00000E38
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+@00000E48
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+@00000E58
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+@00000E68
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+@00000E78
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+24
+FB
+FF
+FF
+7E
+F9
+FF
+FF
+@00000E88
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+@00000E98
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+90
+FD
+FF
+FF
+@00000EA8
+7E
+F9
+FF
+FF
+E2
+FA
+FF
+FF
+D4
+FA
+FF
+FF
+7E
+F9
+FF
+FF
+@00000EB8
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+D4
+FA
+FF
+FF
+@00000EC8
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+@00000ED8
+7E
+F9
+FF
+FF
+CC
+FA
+FF
+FF
+AE
+FA
+FF
+FF
+7E
+F9
+FF
+FF
+@00000EE8
+7E
+F9
+FF
+FF
+34
+FA
+FF
+FF
+7E
+F9
+FF
+FF
+2A
+FA
+FF
+FF
+@00000EF8
+7E
+F9
+FF
+FF
+7E
+F9
+FF
+FF
+0E
+FA
+FF
+FF
+80
+FB
+FF
+FF
+@00000F08
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+@00000F18
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+@00000F28
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+@00000F38
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+@00000F48
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+@00000F58
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+78
+FB
+FF
+FF
+9A
+F8
+FF
+FF
+@00000F68
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+@00000F78
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+84
+FB
+FF
+FF
+@00000F88
+9A
+F8
+FF
+FF
+00
+FA
+FF
+FF
+58
+FB
+FF
+FF
+9A
+F8
+FF
+FF
+@00000F98
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+58
+FB
+FF
+FF
+@00000FA8
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+@00000FB8
+9A
+F8
+FF
+FF
+74
+FB
+FF
+FF
+CC
+F9
+FF
+FF
+9A
+F8
+FF
+FF
+@00000FC8
+9A
+F8
+FF
+FF
+52
+F9
+FF
+FF
+9A
+F8
+FF
+FF
+54
+FD
+FF
+FF
+@00000FD8
+9A
+F8
+FF
+FF
+9A
+F8
+FF
+FF
+50
+FD
+FF
+FF
+48
+65
+6C
+6C
+@00000FE8
+6F
+2C
+20
+4D
+61
+72
+6D
+6F
+74
+2E
+0A
+00
+30
+31
+32
+33
+@00000FF8
+34
+35
+36
+37
+38
+39
+61
+62
+63
+64
+65
+66
+00
+00
+00
+00
+@00001008
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+61
+62
+63
+64
+65
+66
+@00001018
+67
+68
+69
+6A
+6B
+6C
+6D
+6E
+6F
+70
+71
+72
+73
+74
+75
+76
+@00001028
+77
+78
+79
+7A
+00
+00
+00
+00
+30
+31
+32
+33
+34
+35
+36
+37
+@00001038
+38
+39
+41
+42
+43
+44
+45
+46
+47
+48
+49
+4A
+4B
+4C
+4D
+4E
+@00001048
+4F
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+5A
+00
+00
+00
+00
+@00001058
+3C
+4E
+55
+4C
+4C
+3E
+00
+00
diff --git a/verilog/dv/jtag/stm.v b/verilog/dv/jtag/stm.v
new file mode 100644
index 0000000..51c3238
--- /dev/null
+++ b/verilog/dv/jtag/stm.v
@@ -0,0 +1,104 @@
+ localparam IR_IDCODE = 5'b00001;
+ localparam IR_DTMCS = 5'b10000;
+ localparam IR_DMI = 5'b10001;
+
+ localparam DM_DMCONTROL = 7'h10;
+ localparam DM_DMSTATUS = 7'h11;
+
+ localparam IDCODE_EX = 32'h20000913;
+ localparam DTMCS_EX = 32'h00005071;
+
+ reg [4:0] ir_o;
+ reg [63:0] dr_i;
+ reg [63:0] dr_o;
+ reg [6:0] abits;
+
+ initial begin
+ jtag_driver.stop();
+ while (`CORE.reset === 1'b1) begin
+ jtag_driver.test_logic_reset();
+ end
+ jtag_driver.stop();
+ jtag_driver.run_test_idle();
+
+ // IDCODE
+ jtag_driver.shift_ir(IR_IDCODE, ir_o);
+ jtag_driver.shift_dr(32, 0, dr_o);
+ $display("[%t] IDCODE = 0x%08x", $time, dr_o[31:0]);
+ $display(" Version = 0x%x", dr_o[31:28]);
+ $display(" PartNumber = 0x%04x", dr_o[27:12]);
+ $display(" ManufId = 0x%03x", dr_o[11:1]);
+/*
+ if (dr_o !== IDCODE_EX) begin
+ $display("[%t] Error: IDCODE 0x%08x != 0x%08x", $time, dr_o[31:0], IDCODE_EX);
+ $display("\n*** Test Fail ***");
+ repeat (100) @(posedge clock);
+ $finish;
+ end
+*/
+
+ // DTMCS
+ jtag_driver.shift_ir(IR_DTMCS, ir_o);
+ jtag_driver.shift_dr(32, 0, dr_o);
+ $display("[%t] DTMCS = 0x%08x", $time, dr_o[31:0]);
+ $display(" dmihardreset = 0b%b", dr_o[17]);
+ $display(" dmireset = 0b%b", dr_o[16]);
+ $display(" idle = 0x%x", dr_o[14:12]);
+ $display(" dmistat = 0x%x", dr_o[11:10]);
+ $display(" abits = 0x%02x", dr_o[9:4]);
+ $display(" version = 0x%x", dr_o[3:0]);
+ abits = dr_o[9:4];
+
+ if (dr_o !== DTMCS_EX) begin
+ $display("[%t] Error: DTMCS 0x%08x != 0x%08x", $time, dr_o[31:0], DTMCS_EX);
+ $display("\n*** Test Fail ***");
+ repeat (100) @(posedge clock);
+ $finish;
+ end
+
+ // Activate Debug Module(?)
+ dr_i = DM_DMCONTROL << 34 | (1 << 0) << 2 | 2; // DMCONTROL.dmactive = 1
+ jtag_driver.shift_ir(IR_DMI, ir_o);
+ jtag_driver.shift_dr(abits+34, dr_i, dr_o);
+
+ // Halt CPU
+ $display("[%t] Halt CPU", $time);
+ dr_i = DM_DMCONTROL << 34 | (1 << 31) << 2 | 2; // DMCONTROL.haltreq = 1
+ jtag_driver.shift_ir(IR_DMI, ir_o);
+ jtag_driver.shift_dr(abits+34, dr_i, dr_o);
+/*
+ // Wait until CPU halts
+ dr_i = DM_DMSTATUS << 34 | 1;
+ dr_o = 0;
+ while (dr_o[9+2] !== 1'b1) begin // DMSTATUS.allhalted == 1 ?
+ jtag_driver.shift_ir(IR_DMI, ir_o);
+ jtag_driver.shift_dr(abits+34, dr_i, dr_o);
+ end
+
+ $display("[%t] CPU halted", $time);
+ dr_i = DM_DMCONTROL << 34 | (0 << 31) << 2 | 2; // DMCONTROL.haltreq = 0
+ jtag_driver.shift_ir(IR_DMI, ir_o);
+ jtag_driver.shift_dr(abits+34, dr_i, dr_o);
+*/
+ // Resume CPU
+ $display("[%t] Resume CPU", $time);
+ dr_i = DM_DMCONTROL << 34 | (1 << 30) << 2 | 2; // DMCONTROL.resumereq = 1
+ jtag_driver.shift_ir(IR_DMI, ir_o);
+ jtag_driver.shift_dr(abits+34, dr_i, dr_o);
+
+ // Wait until CPU resumes
+ dr_i = DM_DMSTATUS << 34 | 1;
+ dr_o = 0;
+ while (dr_o[9+2] !== 1'b0) begin // DMSTATUS.allhalted == 0 ?
+ jtag_driver.shift_ir(IR_DMI, ir_o);
+ jtag_driver.shift_dr(abits+34, dr_i, dr_o);
+ end
+ $display("[%t] CPU resumed", $time);
+
+ jtag_driver.stop();
+
+ $display("\n*** Test Pass ***");
+ repeat (100) @(posedge clock);
+ $finish;
+ end
+
diff --git a/verilog/dv/jtag/wave.do b/verilog/dv/jtag/wave.do
new file mode 100644
index 0000000..aecbd98
--- /dev/null
+++ b/verilog/dv/jtag/wave.do
@@ -0,0 +1,92 @@
+onerror {resume}
+quietly WaveActivateNextPane {} 0
+add wave -noupdate -expand -group CPU -radix decimal /testbench/cycle
+add wave -noupdate -expand -group CPU -expand -group coreMonitor /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/coreMonitorBundle_pc
+add wave -noupdate -expand -group CPU -expand -group coreMonitor /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/coreMonitorBundle_inst
+add wave -noupdate -expand -group CPU -expand -group coreMonitor /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/coreMonitorBundle_valid
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_valid
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_ready
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_bits_cmd
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_bits_addr
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_req_bits_size
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_valid
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_bits_data
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_bits_data_word_bypass
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_bits_has_data
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_resp_bits_tag
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_s1_data_data
+add wave -noupdate -expand -group CPU -group io_dmem_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/core/io_dmem_s1_kill
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_valid
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_ready
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_opcode
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_size
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_param
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_address
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_corrupt
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_mask
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_data
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_a_bits_source
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_valid
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_ready
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_bits_opcode
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_bits_size
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_bits_source
+add wave -noupdate -expand -group CPU -group auto_slave_in_ /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/tile_prci_domain/tile_reset_domain/tile/auto_slave_in_d_bits_data
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_valid
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_ready
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_opcode
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_param
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_address
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_corrupt
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_data
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_mask
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_size
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_a_bits_source
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_valid
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_ready
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_bits_opcode
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_bits_data
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_bits_size
+add wave -noupdate -group SPI-PSRAM -expand -group qspi_ram /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/qspiClockDomainWrapper_1/qspi_ram_0/auto_mem_xing_in_d_bits_source
+add wave -noupdate -group SPI-PSRAM /testbench/spi_ram/SCK_i
+add wave -noupdate -group SPI-PSRAM /testbench/spi_ram/nCE_i
+add wave -noupdate -group SPI-PSRAM /testbench/spi_ram/NC_io
+add wave -noupdate -group SPI-PSRAM /testbench/spi_ram/nWP_io
+add wave -noupdate -group SPI-PSRAM /testbench/spi_ram/SI_io
+add wave -noupdate -group SPI-PSRAM /testbench/spi_ram/SO_io
+add wave -noupdate /testbench/uut/mprj/Marmot/io_oeb
+add wave -noupdate -group SPI-Flash /testbench/spi_flash/SCLK
+add wave -noupdate -group SPI-Flash /testbench/spi_flash/CS
+add wave -noupdate -group SPI-Flash /testbench/spi_flash/SI
+add wave -noupdate -group SPI-Flash /testbench/spi_flash/SO
+add wave -noupdate -group SPI-Flash /testbench/spi_flash/WP
+add wave -noupdate -group SPI-Flash /testbench/spi_flash/SIO3
+add wave -noupdate -expand -group JTAG /testbench/jtag_driver/tck
+add wave -noupdate -expand -group JTAG /testbench/jtag_driver/tms
+add wave -noupdate -expand -group JTAG /testbench/jtag_driver/tdi
+add wave -noupdate -expand -group JTAG /testbench/jtag_driver/tdo
+add wave -noupdate -expand -group DTM /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/dtm/io_jtag_reset
+add wave -noupdate -expand -group DTM /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/dtm/io_jtag_clock
+add wave -noupdate -expand -group DTM /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/dtm/io_jtag_TMS
+add wave -noupdate -expand -group DTM /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/dtm/io_jtag_TDI
+add wave -noupdate -expand -group DTM /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/dtm/io_jtag_TDO_data
+add wave -noupdate -expand -group DTM /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/dtm/io_jtag_TDO_driven
+add wave -noupdate -expand -group DTM /testbench/uut/mprj/Marmot/MarmotCaravelChip/dut/sys/dtm/tapIO_controllerInternal/stateMachine/currState
+TreeUpdate [SetDefaultTree]
+WaveRestoreCursors {{Cursor 1} {1800344536 ps} 0} {{Cursor 2} {21100900000 ps} 0} {Trace {1784828183 ps} 0}
+quietly wave cursor active 3
+configure wave -namecolwidth 312
+configure wave -valuecolwidth 142
+configure wave -justifyvalue left
+configure wave -signalnamewidth 1
+configure wave -snapdistance 10
+configure wave -datasetprefix 0
+configure wave -rowmargin 4
+configure wave -childrowmargin 2
+configure wave -gridoffset 0
+configure wave -gridperiod 1
+configure wave -griddelta 40
+configure wave -timeline 0
+configure wave -timelineunits ns
+update
+WaveRestoreZoom {1740692781 ps} {1859819309 ps}
diff --git a/verilog/dv/vip/jtag_driver.v b/verilog/dv/vip/jtag_driver.v
new file mode 100644
index 0000000..72ab65b
--- /dev/null
+++ b/verilog/dv/vip/jtag_driver.v
@@ -0,0 +1,116 @@
+`timescale 1ns/10ps
+
+module jtag_driver (
+ output reg tck,
+ output reg tms,
+ output reg tdi,
+ input wire tdo
+);
+
+ parameter TCK_PERIOD = 250;
+ parameter IR_LEN = 5;
+
+ // TCK free run
+ reg tck_free;
+ initial begin
+ tck_free = 1'b0;
+ forever #(TCK_PERIOD/2) tck_free = ~tck_free;
+ end
+
+ initial begin
+ tck = 1'b0;
+ tms = 1'b0;
+ tdi = 1'b0;
+ end
+
+ // Drive TMS and TDI
+ task drive;
+ input tms_i;
+ input tdi_i;
+ output reg tdo_o;
+ begin
+ @(negedge tck_free);
+ tck = 1'b0;
+ tms = tms_i;
+ tdi = tdi_i;
+ @(posedge tck_free);
+ tdo_o = tdo;
+ tck = 1'b1;
+ end
+ endtask
+
+ // Set TCK, TMS and TDI to 0
+ task stop;
+ begin
+ @(negedge tck_free);
+ tck = 1'b0;
+ tms = 1'b0;
+ tdi = 1'b0;
+ end
+ endtask
+
+ // Test-Loggic-Reset
+ task test_logic_reset;
+ reg tdo_o;
+ begin
+ repeat (6) drive(1,0,tdo_o);
+ end
+ endtask
+
+ // Run-Test-Idle
+ task run_test_idle;
+ reg tdo_o;
+ begin
+ test_logic_reset();
+ drive(0,0,tdo_o);
+ end
+ endtask
+
+ // Shift-IR (must be in Run-Teset/Idle state before calling this task)
+ task shift_ir;
+ input [IR_LEN-1:0] ir_i;
+ output reg [IR_LEN-1:0] ir_o;
+ reg tdo_o;
+ integer i;
+ begin
+ ir_o = 0;
+ drive(0,0,tdo_o); // Run-Test-Idle -> Run-Test-Idle
+ drive(1,0,tdo_o); // Run-Test-Idle -> Slect-DR-Scan
+ drive(1,0,tdo_o); // Select-DR-Scan -> Select-IR-Scan
+ drive(0,0,tdo_o); // Select-IR-Scan -> Capture-IR
+ drive(0,0,tdo_o); // Capture-IR -> Shift-IR
+ for (i = 0; i < IR_LEN-1; i = i + 1) begin
+ drive(0,ir_i[i],ir_o[i]); // Shift-IR -> Shift-IR
+ end
+ drive(1,ir_i[IR_LEN-1],ir_o[IR_LEN-1]); // Shift-IR -> Exit1-IR
+ drive(1,0,tdo_o); // Exit1-IR -> Update-IR
+ drive(0,0,tdo_o); // Update-IR -> Run-Test-Idle
+ stop(); // Run-Test-Idle
+ end
+ endtask
+
+ // Shift-DR (must be in Run-Teset/Idle state before calling this task)
+ task shift_dr;
+ input [5:0] dr_len;
+ input [63:0] dr_i;
+ output reg [63:0] dr_o;
+ reg tdo_o;
+ integer i;
+ begin
+ dr_o = 0;
+ drive(0,0,tdo_o); // Run-Test-Idle -> Run-Test-Idle
+ drive(1,0,tdo_o); // Run-Test-Idle -> Slect-DR-Scan
+ drive(0,0,tdo_o); // Select-DR-Scan -> Capture-DR
+ drive(0,0,tdo_o); // Capture-DR -> Shift-DR
+ for (i = 0; i < dr_len-1; i = i + 1) begin
+ drive(0,dr_i[i],dr_o[i]); // Shift-DR -> Shift-DR
+ end
+ drive(1,dr_i[dr_len-1],dr_o[dr_len-1]); // Shift-DR -> Exit1-DR
+ drive(1,0,tdo_o); // Exit1-DR -> Update-DR
+ drive(0,0,tdo_o); // Update-DR -> Run-Test-Idle
+ stop(); // Run-Test-Idle
+ end
+ endtask
+
+endmodule
+
diff --git a/verilog/includes/includes.gl+sdf.caravel_user_project b/verilog/includes/includes.gl+sdf.caravel_user_project
index 1d68ec8..0d0e9f5 100644
--- a/verilog/includes/includes.gl+sdf.caravel_user_project
+++ b/verilog/includes/includes.gl+sdf.caravel_user_project
@@ -19,3 +19,5 @@
+incdir+$(USER_PROJECT_VERILOG)/dv/vip/uart
-v $(USER_PROJECT_VERILOG)/dv/vip/uart/uart_tb.v
+// JTAG driver
+-v $(USER_PROJECT_VERILOG)/dv/vip/jtag_driver.v
diff --git a/verilog/includes/includes.gl.caravel_user_project b/verilog/includes/includes.gl.caravel_user_project
index 1d68ec8..0d0e9f5 100644
--- a/verilog/includes/includes.gl.caravel_user_project
+++ b/verilog/includes/includes.gl.caravel_user_project
@@ -19,3 +19,5 @@
+incdir+$(USER_PROJECT_VERILOG)/dv/vip/uart
-v $(USER_PROJECT_VERILOG)/dv/vip/uart/uart_tb.v
+// JTAG driver
+-v $(USER_PROJECT_VERILOG)/dv/vip/jtag_driver.v
diff --git a/verilog/includes/includes.rtl.caravel_user_project b/verilog/includes/includes.rtl.caravel_user_project
index 35579a5..642241b 100644
--- a/verilog/includes/includes.rtl.caravel_user_project
+++ b/verilog/includes/includes.rtl.caravel_user_project
@@ -26,3 +26,5 @@
+incdir+$(USER_PROJECT_VERILOG)/dv/vip/uart
-v $(USER_PROJECT_VERILOG)/dv/vip/uart/uart_tb.v
+// JTAG driver
+-v $(USER_PROJECT_VERILOG)/dv/vip/jtag_driver.v