From d53f6611b9f80c7805c6c49a22381b26d58ccba9 Mon Sep 17 00:00:00 2001 From: Clo91eaf Date: Fri, 6 Sep 2024 17:03:31 +0800 Subject: [PATCH] [t1rocket] remove unused libspike dependency --- t1rocketemu/.clang-format | 236 ----------------- t1rocketemu/spike_interfaces/CMakeLists.txt | 32 --- t1rocketemu/spike_interfaces/default.nix | 11 - .../spike_interfaces-config.cmake | 3 - .../spike_interfaces/spike_interfaces.cc | 243 ------------------ .../spike_interfaces/spike_interfaces.h | 76 ------ .../spike_interfaces/spike_interfaces_c.h | 64 ----- 7 files changed, 665 deletions(-) delete mode 100644 t1rocketemu/.clang-format delete mode 100644 t1rocketemu/spike_interfaces/CMakeLists.txt delete mode 100644 t1rocketemu/spike_interfaces/default.nix delete mode 100644 t1rocketemu/spike_interfaces/spike_interfaces-config.cmake delete mode 100644 t1rocketemu/spike_interfaces/spike_interfaces.cc delete mode 100644 t1rocketemu/spike_interfaces/spike_interfaces.h delete mode 100644 t1rocketemu/spike_interfaces/spike_interfaces_c.h diff --git a/t1rocketemu/.clang-format b/t1rocketemu/.clang-format deleted file mode 100644 index 57d55c245..000000000 --- a/t1rocketemu/.clang-format +++ /dev/null @@ -1,236 +0,0 @@ ---- -Language: Cpp -# BasedOnStyle: LLVM -AccessModifierOffset: -2 -AlignAfterOpenBracket: Align -AlignArrayOfStructures: None -AlignConsecutiveAssignments: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - PadOperators: true -AlignConsecutiveBitFields: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - PadOperators: false -AlignConsecutiveDeclarations: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - PadOperators: false -AlignConsecutiveMacros: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - PadOperators: false -AlignConsecutiveShortCaseStatements: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCaseColons: false -AlignEscapedNewlines: Right -AlignOperands: Align -AlignTrailingComments: - Kind: Always - OverEmptyLines: 0 -AllowAllArgumentsOnNextLine: true -AllowAllParametersOfDeclarationOnNextLine: true -AllowShortBlocksOnASingleLine: Never -AllowShortCaseLabelsOnASingleLine: false -AllowShortEnumsOnASingleLine: true -AllowShortFunctionsOnASingleLine: All -AllowShortIfStatementsOnASingleLine: Never -AllowShortLambdasOnASingleLine: All -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterDefinitionReturnType: None -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: MultiLine -AttributeMacros: - - __capability -BinPackArguments: true -BinPackParameters: true -BitFieldColonSpacing: Both -BraceWrapping: - AfterCaseLabel: false - AfterClass: false - AfterControlStatement: Never - AfterEnum: false - AfterExternBlock: false - AfterFunction: false - AfterNamespace: false - AfterObjCDeclaration: false - AfterStruct: false - AfterUnion: false - BeforeCatch: false - BeforeElse: false - BeforeLambdaBody: false - BeforeWhile: false - IndentBraces: false - SplitEmptyFunction: true - SplitEmptyRecord: true - SplitEmptyNamespace: true -BreakAfterAttributes: Never -BreakAfterJavaFieldAnnotations: false -BreakArrays: true -BreakBeforeBinaryOperators: None -BreakBeforeConceptDeclarations: Always -BreakBeforeBraces: Attach -BreakBeforeInlineASMColon: OnlyMultiline -BreakBeforeTernaryOperators: true -BreakConstructorInitializers: BeforeColon -BreakInheritanceList: BeforeColon -BreakStringLiterals: true -ColumnLimit: 80 -CommentPragmas: '^ IWYU pragma:' -CompactNamespaces: false -ConstructorInitializerIndentWidth: 4 -ContinuationIndentWidth: 4 -Cpp11BracedListStyle: true -DerivePointerAlignment: false -DisableFormat: false -EmptyLineAfterAccessModifier: Never -EmptyLineBeforeAccessModifier: LogicalBlock -ExperimentalAutoDetectBinPacking: false -FixNamespaceComments: true -ForEachMacros: - - foreach - - Q_FOREACH - - BOOST_FOREACH -IfMacros: - - KJ_IF_MAYBE -IncludeBlocks: Preserve -IncludeCategories: - - Regex: '^"(llvm|llvm-c|clang|clang-c)/' - Priority: 2 - SortPriority: 0 - CaseSensitive: false - - Regex: '^(<|"(gtest|gmock|isl|json)/)' - Priority: 3 - SortPriority: 0 - CaseSensitive: false - - Regex: '.*' - Priority: 1 - SortPriority: 0 - CaseSensitive: false -IncludeIsMainRegex: '(Test)?$' -IncludeIsMainSourceRegex: '' -IndentAccessModifiers: false -IndentCaseBlocks: false -IndentCaseLabels: false -IndentExternBlock: AfterExternBlock -IndentGotoLabels: true -IndentPPDirectives: None -IndentRequiresClause: true -IndentWidth: 2 -IndentWrappedFunctionNames: false -InsertBraces: false -InsertNewlineAtEOF: false -InsertTrailingCommas: None -IntegerLiteralSeparator: - Binary: 0 - BinaryMinDigits: 0 - Decimal: 0 - DecimalMinDigits: 0 - Hex: 0 - HexMinDigits: 0 -JavaScriptQuotes: Leave -JavaScriptWrapImports: true -KeepEmptyLinesAtTheStartOfBlocks: true -KeepEmptyLinesAtEOF: false -LambdaBodyIndentation: Signature -LineEnding: DeriveLF -MacroBlockBegin: '' -MacroBlockEnd: '' -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: None -ObjCBinPackProtocolList: Auto -ObjCBlockIndentWidth: 2 -ObjCBreakBeforeNestedBlockParam: true -ObjCSpaceAfterProperty: false -ObjCSpaceBeforeProtocolList: true -PackConstructorInitializers: BinPack -PenaltyBreakAssignment: 2 -PenaltyBreakBeforeFirstCallParameter: 19 -PenaltyBreakComment: 300 -PenaltyBreakFirstLessLess: 120 -PenaltyBreakOpenParenthesis: 0 -PenaltyBreakString: 1000 -PenaltyBreakTemplateDeclaration: 10 -PenaltyExcessCharacter: 1000000 -PenaltyIndentedWhitespace: 0 -PenaltyReturnTypeOnItsOwnLine: 60 -PointerAlignment: Right -PPIndentWidth: -1 -QualifierAlignment: Leave -ReferenceAlignment: Pointer -ReflowComments: true -RemoveBracesLLVM: false -RemoveParentheses: Leave -RemoveSemicolon: false -RequiresClausePosition: OwnLine -RequiresExpressionIndentation: OuterScope -SeparateDefinitionBlocks: Leave -ShortNamespaceLines: 1 -SortIncludes: CaseSensitive -SortJavaStaticImport: Before -SortUsingDeclarations: LexicographicNumeric -SpaceAfterCStyleCast: false -SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: true -SpaceAroundPointerQualifiers: Default -SpaceBeforeAssignmentOperators: true -SpaceBeforeCaseColon: false -SpaceBeforeCpp11BracedList: false -SpaceBeforeCtorInitializerColon: true -SpaceBeforeInheritanceColon: true -SpaceBeforeJsonColon: false -SpaceBeforeParens: ControlStatements -SpaceBeforeParensOptions: - AfterControlStatements: true - AfterForeachMacros: true - AfterFunctionDefinitionName: false - AfterFunctionDeclarationName: false - AfterIfMacros: true - AfterOverloadedOperator: false - AfterRequiresInClause: false - AfterRequiresInExpression: false - BeforeNonEmptyParentheses: false -SpaceBeforeRangeBasedForLoopColon: true -SpaceBeforeSquareBrackets: false -SpaceInEmptyBlock: false -SpacesBeforeTrailingComments: 1 -SpacesInAngles: Never -SpacesInContainerLiterals: true -SpacesInLineCommentPrefix: - Minimum: 1 - Maximum: -1 -SpacesInParens: Never -SpacesInParensOptions: - InCStyleCasts: false - InConditionalStatements: false - InEmptyParentheses: false - Other: false -SpacesInSquareBrackets: false -Standard: Latest -StatementAttributeLikeMacros: - - Q_EMIT -StatementMacros: - - Q_UNUSED - - QT_REQUIRE_VERSION -TabWidth: 8 -UseTab: Never -VerilogBreakBetweenInstancePorts: true -WhitespaceSensitiveMacros: - - BOOST_PP_STRINGIZE - - CF_SWIFT_NAME - - NS_SWIFT_NAME - - PP_STRINGIZE - - STRINGIZE -... - diff --git a/t1rocketemu/spike_interfaces/CMakeLists.txt b/t1rocketemu/spike_interfaces/CMakeLists.txt deleted file mode 100644 index fe5272891..000000000 --- a/t1rocketemu/spike_interfaces/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION 3.20) -project(spike_interfaces LANGUAGES CXX) -set(CMAKE_CXX_STANDARD 17) - -find_package(libspike REQUIRED) - -add_library(${CMAKE_PROJECT_NAME} STATIC spike_interfaces.cc) - -target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC libspike) - -target_include_directories(${CMAKE_PROJECT_NAME} INTERFACE - $ - $ -) - -# just playing with CMake export, maybe not necessary -target_sources(${CMAKE_PROJECT_NAME} PUBLIC - FILE_SET HEADERS - FILES spike_interfaces.h spike_interfaces_c.h) - -install( - TARGETS ${CMAKE_PROJECT_NAME} - EXPORT ${CMAKE_PROJECT_NAME}-config - PUBLIC_HEADER - FILE_SET HEADERS -) - -install( - EXPORT ${CMAKE_PROJECT_NAME}-config - NAMESPACE ${CMAKE_PROJECT_NAME}:: - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME} -) diff --git a/t1rocketemu/spike_interfaces/default.nix b/t1rocketemu/spike_interfaces/default.nix deleted file mode 100644 index d95618793..000000000 --- a/t1rocketemu/spike_interfaces/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ lib, stdenv, cmake, libspike }: - -stdenv.mkDerivation { - name = "spike_interfaces"; - src = with lib.fileset; toSource { - root = ./.; - fileset = fileFilter (file: file.name != "default.nix") ./.; - }; - nativeBuildInputs = [ cmake ]; - propagatedBuildInputs = [ libspike ]; -} diff --git a/t1rocketemu/spike_interfaces/spike_interfaces-config.cmake b/t1rocketemu/spike_interfaces/spike_interfaces-config.cmake deleted file mode 100644 index 8a0867895..000000000 --- a/t1rocketemu/spike_interfaces/spike_interfaces-config.cmake +++ /dev/null @@ -1,3 +0,0 @@ -include(CMakeFindDependencyMacro) -find_dependency(libspike 0.1.0) -include(${CMAKE_CURRENT_LIST_DIR}/libspike_interface_targets.cmake) diff --git a/t1rocketemu/spike_interfaces/spike_interfaces.cc b/t1rocketemu/spike_interfaces/spike_interfaces.cc deleted file mode 100644 index 3e92fd2f9..000000000 --- a/t1rocketemu/spike_interfaces/spike_interfaces.cc +++ /dev/null @@ -1,243 +0,0 @@ -#include - -#include "spike_interfaces.h" - -void *ffi_target; - -cfg_t make_spike_cfg() { - cfg_t cfg; - cfg.initrd_bounds = std::make_pair((reg_t)0, (reg_t)0), - cfg.bootargs = nullptr; - cfg.isa = DEFAULT_ISA; - cfg.priv = DEFAULT_PRIV; - cfg.misaligned = false; - cfg.endianness = endianness_little; - cfg.pmpregions = 16; - cfg.pmpgranularity = 4; - cfg.mem_layout = std::vector(); - cfg.hartids = std::vector(); - cfg.explicit_hartids = false; - cfg.real_time_clint = false; - cfg.trigger_count = 4; - return cfg; -} - -Spike::Spike(const char *set, const char *lvl, - size_t lane_number) - : sim(), isa(set, lvl), cfg(make_spike_cfg()), - proc( - /*isa*/ &isa, - /*cfg*/ &cfg, - /*sim*/ &sim, - /*id*/ 0, - /*halt on reset*/ true, - /*log_file_t*/ nullptr, - /*sout*/ std::cerr) { - proc.VU.lane_num = lane_number; - proc.VU.lane_granularity = 32; - - proc.enable_log_commits(); -} - -spike_t *spike_new(const char *set, const char *lvl, - size_t lane_number) { - return new spike_t{new Spike(set, lvl, lane_number)}; -} - -const char *proc_disassemble(spike_processor_t *proc) { - auto pc = proc->p->get_state()->pc; - auto mmu = proc->p->get_mmu(); - auto disasm = proc->p->get_disassembler(); - auto fetch = mmu->load_insn(pc); - return strdup(disasm->disassemble(fetch.insn).c_str()); -} - -spike_processor_t *spike_get_proc(spike_t *spike) { - return new spike_processor_t{spike->s->get_proc()}; -} - -void proc_reset(spike_processor_t *proc) { proc->p->reset(); } - -spike_state_t *proc_get_state(spike_processor_t *proc) { - return new spike_state_t{proc->p->get_state()}; -} - -reg_t proc_func(spike_processor_t *proc) { - auto pc = proc->p->get_state()->pc; - auto mmu = proc->p->get_mmu(); - auto fetch = mmu->load_insn(pc); - try { - return fetch.func(proc->p, fetch.insn, pc); - } catch (trap_t &trap) { - std::cerr << "Error: spike trapped with " << trap.name() - << " (tval=" << std::uppercase << std::setfill('0') - << std::setw(8) << std::hex << trap.get_tval() - << ", tval2=" << std::setw(8) << std::hex << trap.get_tval2() - << ", tinst=" << std::setw(8) << std::hex << trap.get_tinst() - << ")" << std::endl; - throw trap; - } -} - -reg_t proc_get_insn(spike_processor_t *proc) { - auto pc = proc->p->get_state()->pc; - auto mmu = proc->p->get_mmu(); - auto fetch = mmu->load_insn(pc); - return fetch.insn.bits(); -} - -uint8_t proc_get_vreg_data(spike_processor_t *proc, uint32_t vreg_idx, - uint32_t vreg_offset) { - return proc->p->VU.elt(vreg_idx, vreg_offset); -} - -uint32_t extract_f32(freg_t f) { return (uint32_t)f.v[0]; } - -inline uint32_t clip(uint32_t binary, int a, int b) { - int nbits = b - a + 1; - uint32_t mask = nbits >= 32 ? (uint32_t)-1 : (1 << nbits) - 1; - return (binary >> a) & mask; -} - -uint32_t proc_get_rs1(spike_processor_t *proc) { - auto pc = proc->p->get_state()->pc; - auto fetch = proc->p->get_mmu()->load_insn(pc); - return (uint32_t)fetch.insn.rs1(); -} - -uint32_t proc_get_rs2(spike_processor_t *proc) { - auto pc = proc->p->get_state()->pc; - auto fetch = proc->p->get_mmu()->load_insn(pc); - return (uint32_t)fetch.insn.rs2(); -} - -uint32_t proc_get_rd(spike_processor_t *proc) { - auto pc = proc->p->get_state()->pc; - auto fetch = proc->p->get_mmu()->load_insn(pc); - return fetch.insn.rd(); -} - -uint64_t proc_vu_get_vtype(spike_processor_t *proc) { - return proc->p->VU.vtype->read(); -} - -uint32_t proc_vu_get_vxrm(spike_processor_t *proc) { - return proc->p->VU.vxrm->read(); -} - -uint32_t proc_vu_get_vnf(spike_processor_t *proc) { - auto pc = proc->p->get_state()->pc; - auto fetch = proc->p->get_mmu()->load_insn(pc); - return fetch.insn.v_nf(); -} - -bool proc_vu_get_vill(spike_processor_t *proc) { return proc->p->VU.vill; } - -bool proc_vu_get_vxsat(spike_processor_t *proc) { - return proc->p->VU.vxsat->read(); -} - -uint32_t proc_vu_get_vl(spike_processor_t *proc) { - return proc->p->VU.vl->read(); -} - -uint16_t proc_vu_get_vstart(spike_processor_t *proc) { - return proc->p->VU.vstart->read(); -} - -reg_t state_get_pc(spike_state_t *state) { return state->s->pc; } - -void state_set_mcycle(spike_state_t *state, size_t mcycle) { - state->s->mcycle->write((int64_t)mcycle); -} - -void state_clear(spike_state_t *state) { - state->s->log_reg_write.clear(); - state->s->log_mem_read.clear(); - state->s->log_mem_write.clear(); -} - -static void state_set_serialized(spike_state_t *state, bool serialized) { - state->s->serialized = serialized; -} - -uint64_t state_handle_pc(spike_state_t *state, uint64_t new_pc) { - if ((new_pc & 1) == 0) { - state_set_pc(state, new_pc); - } else { - switch (new_pc) { - case PC_SERIALIZE_BEFORE: - state_set_serialized(state, true); - break; - case PC_SERIALIZE_AFTER: - break; - default: - return -1; - } - } - return 0; -} - -void state_set_pc(spike_state_t *state, uint64_t pc) { state->s->pc = pc; } - -uint32_t state_get_reg(spike_state_t *state, uint32_t index, bool is_fp) { - if (is_fp) { - auto &fr = state->s->FPR; - return extract_f32(fr[index]); - } - auto &xr = state->s->XPR; - return (uint32_t)xr[index]; -} - -uint32_t state_get_reg_write_size(spike_state_t *state) { - reg_write_index_vec.clear(); - for (auto [idx, data] : state->s->log_reg_write) { - reg_write_index_vec.push_back(idx); - } - return state->s->log_reg_write.size(); -} - -uint32_t state_get_reg_write_index(spike_state_t *state, uint32_t index) { - return reg_write_index_vec[index]; -} - -uint32_t state_get_mem_write_size(spike_state_t *state) { - return state->s->log_mem_write.size(); -} - -uint32_t state_get_mem_write_addr(spike_state_t *state, uint32_t index) { - return std::get<0>(state->s->log_mem_write[index]) & 0xffffffff; -} - -uint64_t state_get_mem_write_value(spike_state_t *state, uint32_t index) { - return std::get<1>(state->s->log_mem_write[index]); -} - -uint8_t state_get_mem_write_size_by_byte(spike_state_t *state, uint32_t index) { - return std::get<2>(state->s->log_mem_write[index]); -} - -uint32_t state_get_mem_read_size(spike_state_t *state) { - return state->s->log_mem_read.size(); -} - -uint32_t state_get_mem_read_addr(spike_state_t *state, uint32_t index) { - return std::get<0>(state->s->log_mem_read[index]) & 0xffffffff; -} - -uint8_t state_get_mem_read_size_by_byte(spike_state_t *state, uint32_t index) { - return std::get<2>(state->s->log_mem_read[index]); -} - -void spike_register_callback(void *ffi_target_, ffi_callback callback) { - ffi_addr_to_mem = callback; - ffi_target = ffi_target_; - - return; -} - -void spike_destruct(spike_t *spike) { delete spike; } - -void proc_destruct(spike_processor_t *proc) { delete proc; } - -void state_destruct(spike_state_t *state) { delete state; } diff --git a/t1rocketemu/spike_interfaces/spike_interfaces.h b/t1rocketemu/spike_interfaces/spike_interfaces.h deleted file mode 100644 index ceffa8f7f..000000000 --- a/t1rocketemu/spike_interfaces/spike_interfaces.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifndef __SPIKE_INTERFCES_H__ -#define __SPIKE_INTERFCES_H__ - -#include "cfg.h" -#include "decode_macros.h" -#include "disasm.h" -#include "mmu.h" -#include "processor.h" -#include "simif.h" -#include "spike_interfaces_c.h" - -#ifdef __cplusplus -extern "C" { -#endif - -ffi_callback ffi_addr_to_mem; -extern void *ffi_target; -std::vector reg_write_index_vec; - -class sim_t : public simif_t { -public: - sim_t() {} - ~sim_t() {} - char *addr_to_mem(reg_t addr) override { - return ffi_addr_to_mem(ffi_target, addr); - } - bool mmio_load(reg_t addr, size_t len, uint8_t *bytes) override { - throw std::logic_error("not implemented"); - } - bool mmio_store(reg_t addr, size_t len, const uint8_t *bytes) override { - throw std::logic_error("not implemented"); - } - virtual void proc_reset(unsigned id) override {} - virtual const char *get_symbol(uint64_t addr) override { - throw std::logic_error("not implemented"); - } - [[nodiscard]] const cfg_t &get_cfg() const override { - throw std::logic_error("not implemented"); - } - [[nodiscard]] const std::map & - get_harts() const override { - throw std::logic_error("not implemented"); - } -}; - -class Spike { -public: - Spike(const char *set, const char *lvl, size_t lane_number); - processor_t *get_proc() { return &proc; } - -private: - cfg_t cfg; - sim_t sim; - isa_parser_t isa; - processor_t proc; -}; - -struct spike_t { - Spike *s; - ffi_callback ffi_addr_to_mem; -}; -struct spike_processor_t { - processor_t *p; -}; -struct spike_state_t { - state_t *s; -}; -struct spike_mmu_t { - mmu_t *m; -}; - -#ifdef __cplusplus -} -#endif - -#endif // __SPIKE_INTERFCES_H__ diff --git a/t1rocketemu/spike_interfaces/spike_interfaces_c.h b/t1rocketemu/spike_interfaces/spike_interfaces_c.h deleted file mode 100644 index 03fe2c4d5..000000000 --- a/t1rocketemu/spike_interfaces/spike_interfaces_c.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef __SPIKE_INTERFCES_C_H__ -#define __SPIKE_INTERFCES_C_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef char *(*ffi_callback)(void *, uint64_t); - -typedef struct spike_t spike_t; -typedef struct spike_processor_t spike_processor_t; -typedef struct spike_state_t spike_state_t; - -void spike_register_callback(void *ffi_target, ffi_callback callback); -spike_t *spike_new(const char *set, const char *lvl, - size_t lane_number); -const char *proc_disassemble(spike_processor_t *proc); -void proc_reset(spike_processor_t *proc); -spike_processor_t *spike_get_proc(spike_t *spike); -spike_state_t *proc_get_state(spike_processor_t *proc); - -uint64_t proc_func(spike_processor_t *proc); -uint64_t proc_get_insn(spike_processor_t *proc); -uint8_t proc_get_vreg_data(spike_processor_t *proc, uint32_t vreg_idx, - uint32_t vreg_offset); -uint32_t proc_get_rs1(spike_processor_t *proc); -uint32_t proc_get_rs2(spike_processor_t *proc); -uint32_t proc_get_rd(spike_processor_t *proc); - -uint64_t proc_vu_get_vtype(spike_processor_t *proc); -uint32_t proc_vu_get_vxrm(spike_processor_t *proc); -uint32_t proc_vu_get_vnf(spike_processor_t *proc); -bool proc_vu_get_vill(spike_processor_t *proc); -bool proc_vu_get_vxsat(spike_processor_t *proc); -uint32_t proc_vu_get_vl(spike_processor_t *proc); -uint16_t proc_vu_get_vstart(spike_processor_t *proc); - -uint64_t state_get_pc(spike_state_t *state); -uint64_t state_handle_pc(spike_state_t *state, uint64_t new_pc); -void state_set_pc(spike_state_t *state, uint64_t pc); -uint32_t state_get_reg(spike_state_t *state, uint32_t index, bool is_fp); -uint32_t state_get_reg_write_size(spike_state_t *state); -uint32_t state_get_reg_write_index(spike_state_t *state, uint32_t index); -uint32_t state_get_mem_write_size(spike_state_t *state); -uint32_t state_get_mem_write_addr(spike_state_t *state, uint32_t index); -uint64_t state_get_mem_write_value(spike_state_t *state, uint32_t index); -uint8_t state_get_mem_write_size_by_byte(spike_state_t *state, uint32_t index); -uint32_t state_get_mem_read_size(spike_state_t *state); -uint32_t state_get_mem_read_addr(spike_state_t *state, uint32_t index); -uint8_t state_get_mem_read_size_by_byte(spike_state_t *state, uint32_t index); -void state_set_mcycle(spike_state_t *state, size_t mcycle); -void state_clear(spike_state_t *state); - -void spike_destruct(spike_t *spike); -void proc_destruct(spike_processor_t *proc); -void state_destruct(spike_state_t *state); - -#ifdef __cplusplus -} -#endif - -#endif // __SPIKE_INTERFCES_C_H__