Compare commits
10 Commits
Trace_enha
...
076b5a39ad
Author | SHA1 | Date | |
---|---|---|---|
076b5a39ad | |||
f40ab41899 | |||
e8fd5143bc | |||
31fb51de95 | |||
5d481eb79d | |||
1c90fe765d | |||
52ed8b81a6 | |||
0703a0a845 | |||
0c542d42aa | |||
966d1616c5 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -30,6 +30,5 @@ language.settings.xml
|
|||||||
/.gdbinit
|
/.gdbinit
|
||||||
/*.out
|
/*.out
|
||||||
/dump.json
|
/dump.json
|
||||||
/src-gen/
|
|
||||||
/*.yaml
|
/*.yaml
|
||||||
/*.json
|
/*.json
|
||||||
|
@ -29,32 +29,35 @@ endif()
|
|||||||
add_subdirectory(softfloat)
|
add_subdirectory(softfloat)
|
||||||
|
|
||||||
# library files
|
# library files
|
||||||
FILE(GLOB TGC_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/iss/*.cpp)
|
FILE(GLOB GEN_SOURCES
|
||||||
FILE(GLOB TGC_VM_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/vm/interp/vm_*.cpp)
|
${CMAKE_CURRENT_SOURCE_DIR}/src-gen/iss/arch/*.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/src-gen/vm/interp/vm_*.cpp
|
||||||
|
)
|
||||||
|
|
||||||
set(LIB_SOURCES
|
set(LIB_SOURCES
|
||||||
src/vm/fp_functions.cpp
|
src/vm/fp_functions.cpp
|
||||||
src/plugin/instruction_count.cpp
|
src/iss/plugin/instruction_count.cpp
|
||||||
|
src/iss/arch/tgc_c.cpp
|
||||||
${TGC_SOURCES}
|
src/vm/interp/vm_tgc_c.cpp
|
||||||
${TGC_VM_SOURCES}
|
src/vm/fp_functions.cpp
|
||||||
|
${GEN_SOURCES}
|
||||||
)
|
)
|
||||||
if(TARGET RapidJSON)
|
if(TARGET RapidJSON)
|
||||||
list(APPEND LIB_SOURCES src/plugin/cycle_estimate.cpp src/plugin/pctrace.cpp)
|
list(APPEND LIB_SOURCES src/iss/plugin/cycle_estimate.cpp src/iss/plugin/pctrace.cpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_LLVM)
|
if(WITH_LLVM)
|
||||||
FILE(GLOB TGC_LLVM_SOURCES
|
FILE(GLOB LLVM_GEN_SOURCES
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/vm/llvm/vm_*.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/src-gen/vm/llvm/vm_*.cpp
|
||||||
)
|
)
|
||||||
list(APPEND LIB_SOURCES ${TGC_LLVM_SOURCES})
|
list(APPEND LIB_SOURCES ${LLVM_GEN_SOURCES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_TCC)
|
if(WITH_TCC)
|
||||||
FILE(GLOB TGC_TCC_SOURCES
|
FILE(GLOB TCC_GEN_SOURCES
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/vm/tcc/vm_*.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/src/vm/tcc/vm_*.cpp
|
||||||
)
|
)
|
||||||
list(APPEND LIB_SOURCES ${TGC_TCC_SOURCES})
|
list(APPEND LIB_SOURCES ${TCC_GEN_SOURCES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Define the library
|
# Define the library
|
||||||
@ -69,7 +72,8 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
|||||||
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
target_compile_options(${PROJECT_NAME} PRIVATE /wd4293)
|
target_compile_options(${PROJECT_NAME} PRIVATE /wd4293)
|
||||||
endif()
|
endif()
|
||||||
target_include_directories(${PROJECT_NAME} PUBLIC incl)
|
target_include_directories(${PROJECT_NAME} PUBLIC src)
|
||||||
|
target_include_directories(${PROJECT_NAME} PUBLIC src-gen)
|
||||||
target_link_libraries(${PROJECT_NAME} PUBLIC softfloat scc-util jsoncpp Boost::coroutine)
|
target_link_libraries(${PROJECT_NAME} PUBLIC softfloat scc-util jsoncpp Boost::coroutine)
|
||||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
target_link_libraries(${PROJECT_NAME} PUBLIC -Wl,--whole-archive dbt-rise-core -Wl,--no-whole-archive)
|
target_link_libraries(${PROJECT_NAME} PUBLIC -Wl,--whole-archive dbt-rise-core -Wl,--no-whole-archive)
|
||||||
@ -117,6 +121,7 @@ project(tgc-sim)
|
|||||||
find_package(Boost COMPONENTS program_options thread REQUIRED)
|
find_package(Boost COMPONENTS program_options thread REQUIRED)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} src/main.cpp)
|
add_executable(${PROJECT_NAME} src/main.cpp)
|
||||||
|
FILE(GLOB TGC_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src-gen/iss/arch/*.cpp)
|
||||||
foreach(F IN LISTS TGC_SOURCES)
|
foreach(F IN LISTS TGC_SOURCES)
|
||||||
string(REGEX REPLACE ".*/([^/]*)\.cpp" "\\1" CORE_NAME_LC ${F})
|
string(REGEX REPLACE ".*/([^/]*)\.cpp" "\\1" CORE_NAME_LC ${F})
|
||||||
string(TOUPPER ${CORE_NAME_LC} CORE_NAME)
|
string(TOUPPER ${CORE_NAME_LC} CORE_NAME)
|
||||||
|
@ -37,9 +37,9 @@ def getRegisterSizes(){
|
|||||||
return regs
|
return regs
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
|
#include "${coreDef.name.toLowerCase()}.h"
|
||||||
#include "util/ities.h"
|
#include "util/ities.h"
|
||||||
#include <util/logging.h>
|
#include <util/logging.h>
|
||||||
#include <iss/arch/${coreDef.name.toLowerCase()}.h>
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
@ -36,7 +36,7 @@ def nativeTypeSize(int size){
|
|||||||
if(size<=8) return 8; else if(size<=16) return 16; else if(size<=32) return 32; else return 64;
|
if(size<=8) return 8; else if(size<=16) return 16; else if(size<=32) return 32; else return 64;
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
#include "../fp_functions.h"
|
#include <vm/fp_functions.h>
|
||||||
#include <iss/arch/${coreDef.name.toLowerCase()}.h>
|
#include <iss/arch/${coreDef.name.toLowerCase()}.h>
|
||||||
#include <iss/arch/riscv_hart_m_p.h>
|
#include <iss/arch/riscv_hart_m_p.h>
|
||||||
#include <iss/debugger/gdb_session.h>
|
#include <iss/debugger/gdb_session.h>
|
||||||
@ -301,22 +301,21 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co
|
|||||||
if(this->sync_exec && PRE_SYNC) this->do_sync(PRE_SYNC, static_cast<unsigned>(inst_id));
|
if(this->sync_exec && PRE_SYNC) this->do_sync(PRE_SYNC, static_cast<unsigned>(inst_id));
|
||||||
switch(inst_id){<%instructions.eachWithIndex{instr, idx -> %>
|
switch(inst_id){<%instructions.eachWithIndex{instr, idx -> %>
|
||||||
case arch::traits<ARCH>::opcode_e::${instr.name}: {
|
case arch::traits<ARCH>::opcode_e::${instr.name}: {
|
||||||
<%instr.fields.eachLine{%>${it}
|
<%instr.fields.eachLine{%>${it}
|
||||||
<%}%>if(this->disass_enabled){
|
<%}%>if(this->disass_enabled){
|
||||||
/* generate console output when executing the command */
|
/* generate console output when executing the command */<%instr.disass.eachLine{%>
|
||||||
<%instr.disass.eachLine{%>${it}
|
${it}<%}%>
|
||||||
<%}%>
|
}
|
||||||
}
|
// used registers<%instr.usedVariables.each{ k,v->
|
||||||
// used registers<%instr.usedVariables.each{ k,v->
|
if(v.isArray) {%>
|
||||||
if(v.isArray) {%>
|
auto* ${k} = reinterpret_cast<uint${nativeTypeSize(v.type.size)}_t*>(this->regs_base_ptr+arch::traits<ARCH>::reg_byte_offsets[arch::traits<ARCH>::${k}0]);<% }else{ %>
|
||||||
auto* ${k} = reinterpret_cast<uint${nativeTypeSize(v.type.size)}_t*>(this->regs_base_ptr+arch::traits<ARCH>::reg_byte_offsets[arch::traits<ARCH>::${k}0]);<% }else{ %>
|
auto* ${k} = reinterpret_cast<uint${nativeTypeSize(v.type.size)}_t*>(this->regs_base_ptr+arch::traits<ARCH>::reg_byte_offsets[arch::traits<ARCH>::${k}]);
|
||||||
auto* ${k} = reinterpret_cast<uint${nativeTypeSize(v.type.size)}_t*>(this->regs_base_ptr+arch::traits<ARCH>::reg_byte_offsets[arch::traits<ARCH>::${k}]);
|
<%}}%>// calculate next pc value
|
||||||
<%}}%>// calculate next pc value
|
*NEXT_PC = *PC + ${instr.length/8};
|
||||||
*NEXT_PC = *PC + ${instr.length/8};
|
// execute instruction<%instr.behavior.eachLine{%>
|
||||||
// execute instruction
|
${it}<%}%>
|
||||||
<%instr.behavior.eachLine{%>${it}
|
TRAP_${instr.name}:break;
|
||||||
<%}%>TRAP_${instr.name}:break;
|
}// @suppress("No break at end of case")<%}%>
|
||||||
}// @suppress("No break at end of case")<%}%>
|
|
||||||
default: {
|
default: {
|
||||||
*NEXT_PC = *PC + ((instr & 3) == 3 ? 4 : 2);
|
*NEXT_PC = *PC + ((instr & 3) == 3 ? 4 : 2);
|
||||||
raise(0, 2);
|
raise(0, 2);
|
||||||
|
1
incl/iss/arch/.gitignore
vendored
1
incl/iss/arch/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
/tgc_*.h
|
|
2
src-gen/.gitignore
vendored
Normal file
2
src-gen/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/iss
|
||||||
|
/vm
|
@ -30,9 +30,9 @@
|
|||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
|
#include "tgc_c.h"
|
||||||
#include "util/ities.h"
|
#include "util/ities.h"
|
||||||
#include <util/logging.h>
|
#include <util/logging.h>
|
||||||
#include <iss/arch/tgc_c.h>
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <fstream>
|
#include <fstream>
|
@ -4,39 +4,44 @@
|
|||||||
#include "riscv_hart_m_p.h"
|
#include "riscv_hart_m_p.h"
|
||||||
#include "tgc_c.h"
|
#include "tgc_c.h"
|
||||||
using tgc_c_plat_type = iss::arch::riscv_hart_m_p<iss::arch::tgc_c>;
|
using tgc_c_plat_type = iss::arch::riscv_hart_m_p<iss::arch::tgc_c>;
|
||||||
|
#ifdef CORE_TGC_A
|
||||||
|
#include "riscv_hart_m_p.h"
|
||||||
|
#include <iss/arch/tgc_a.h>
|
||||||
|
using tgc_a_plat_type = iss::arch::riscv_hart_m_p<iss::arch::tgc_a>;
|
||||||
|
#endif
|
||||||
#ifdef CORE_TGC_B
|
#ifdef CORE_TGC_B
|
||||||
#include "riscv_hart_m_p.h"
|
#include "riscv_hart_m_p.h"
|
||||||
#include "tgc_b.h"
|
#include <iss/arch/tgc_b.h>
|
||||||
using tgc_b_plat_type = iss::arch::riscv_hart_m_p<iss::arch::tgc_b>;
|
using tgc_b_plat_type = iss::arch::riscv_hart_m_p<iss::arch::tgc_b>;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CORE_TGC_C_XRB_NN
|
#ifdef CORE_TGC_C_XRB_NN
|
||||||
#include "riscv_hart_m_p.h"
|
#include "riscv_hart_m_p.h"
|
||||||
#include "tgc_c_xrb_nn.h"
|
#include <iss/arch/tgc_c_xrb_nn.h>
|
||||||
using tgc_c_xrb_nn_plat_type = iss::arch::riscv_hart_m_p<iss::arch::tgc_c_xrb_nn>;
|
using tgc_c_xrb_nn_plat_type = iss::arch::riscv_hart_m_p<iss::arch::tgc_c_xrb_nn>;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CORE_TGC_D
|
#ifdef CORE_TGC_D
|
||||||
#include "riscv_hart_mu_p.h"
|
#include "riscv_hart_mu_p.h"
|
||||||
#include "tgc_d.h"
|
#include <iss/arch/tgc_d.h>
|
||||||
using tgc_d_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_d, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N)>;
|
using tgc_d_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_d, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N)>;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CORE_TGC_D_XRB_MAC
|
#ifdef CORE_TGC_D_XRB_MAC
|
||||||
#include "riscv_hart_mu_p.h"
|
#include "riscv_hart_mu_p.h"
|
||||||
#include "tgc_d_xrb_mac.h"
|
#include <iss/arch/tgc_d_xrb_mac.h>
|
||||||
using tgc_d_xrb_mac_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_d_xrb_mac, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N)>;
|
using tgc_d_xrb_mac_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_d_xrb_mac, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N)>;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CORE_TGC_D_XRB_NN
|
#ifdef CORE_TGC_D_XRB_NN
|
||||||
#include "riscv_hart_mu_p.h"
|
#include "riscv_hart_mu_p.h"
|
||||||
#include "tgc_d_xrb_nn.h"
|
#include <iss/arch/tgc_d_xrb_nn.h>
|
||||||
using tgc_d_xrb_nn_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_d_xrb_nn, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N)>;
|
using tgc_d_xrb_nn_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_d_xrb_nn, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N)>;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CORE_TGC_E
|
#ifdef CORE_TGC_E
|
||||||
#include "riscv_hart_mu_p.h"
|
#include "riscv_hart_mu_p.h"
|
||||||
#include "tgc_e.h"
|
#include <iss/arch/tgc_e.h>
|
||||||
using tgc_e_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_e, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N)>;
|
using tgc_e_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_e, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N)>;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CORE_TGC_X
|
#ifdef CORE_TGC_X
|
||||||
#include "riscv_hart_mu_p.h"
|
#include "riscv_hart_mu_p.h"
|
||||||
#include "tgc_x.h"
|
#include <iss/arch/tgc_x.h>
|
||||||
using tgc_x_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_x, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N | iss::arch::FEAT_TCM)>;
|
using tgc_x_plat_type = iss::arch::riscv_hart_mu_p<iss::arch::tgc_x, (iss::arch::features_e)(iss::arch::FEAT_PMP | iss::arch::FEAT_CLIC | iss::arch::FEAT_EXT_N | iss::arch::FEAT_TCM)>;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -32,14 +32,14 @@
|
|||||||
* eyck@minres.com - initial API and implementation
|
* eyck@minres.com - initial API and implementation
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#include "iss/plugin/cycle_estimate.h"
|
#include "cycle_estimate.h"
|
||||||
|
|
||||||
#include <iss/arch_if.h>
|
#include <iss/arch_if.h>
|
||||||
#include <util/logging.h>
|
#include <util/logging.h>
|
||||||
#include <rapidjson/document.h>
|
#include <rapidjson/document.h>
|
||||||
#include <rapidjson/istreamwrapper.h>
|
#include <rapidjson/istreamwrapper.h>
|
||||||
#include "rapidjson/writer.h"
|
#include <rapidjson/writer.h>
|
||||||
#include "rapidjson/stringbuffer.h"
|
#include <rapidjson/stringbuffer.h>
|
||||||
#include <rapidjson/ostreamwrapper.h>
|
#include <rapidjson/ostreamwrapper.h>
|
||||||
#include <rapidjson/error/en.h>
|
#include <rapidjson/error/en.h>
|
||||||
#include <fstream>
|
#include <fstream>
|
@ -32,8 +32,8 @@
|
|||||||
* eyck@minres.com - initial API and implementation
|
* eyck@minres.com - initial API and implementation
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#include "iss/plugin/instruction_count.h"
|
#include "instruction_count.h"
|
||||||
#include "iss/instrumentation_if.h"
|
#include <iss/instrumentation_if.h>
|
||||||
|
|
||||||
#include <iss/arch_if.h>
|
#include <iss/arch_if.h>
|
||||||
#include <util/logging.h>
|
#include <util/logging.h>
|
@ -4,8 +4,8 @@
|
|||||||
#include <util/ities.h>
|
#include <util/ities.h>
|
||||||
#include <rapidjson/document.h>
|
#include <rapidjson/document.h>
|
||||||
#include <rapidjson/istreamwrapper.h>
|
#include <rapidjson/istreamwrapper.h>
|
||||||
#include "rapidjson/writer.h"
|
#include <rapidjson/writer.h>
|
||||||
#include "rapidjson/stringbuffer.h"
|
#include <rapidjson/stringbuffer.h>
|
||||||
#include <rapidjson/ostreamwrapper.h>
|
#include <rapidjson/ostreamwrapper.h>
|
||||||
#include <rapidjson/error/en.h>
|
#include <rapidjson/error/en.h>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
@ -89,7 +89,7 @@ private:
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cov::cov(std::string const &filename)
|
pctrace::pctrace(std::string const &filename)
|
||||||
: instr_if(nullptr)
|
: instr_if(nullptr)
|
||||||
, filename(filename)
|
, filename(filename)
|
||||||
, output("output.trc")
|
, output("output.trc")
|
||||||
@ -99,9 +99,9 @@ cov::cov(std::string const &filename)
|
|||||||
#endif
|
#endif
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
cov::~cov() { }
|
pctrace::~pctrace() { }
|
||||||
|
|
||||||
bool cov::registration(const char *const version, vm_if& vm) {
|
bool pctrace::registration(const char *const version, vm_if& vm) {
|
||||||
instr_if = vm.get_arch()->get_instrumentation_if();
|
instr_if = vm.get_arch()->get_instrumentation_if();
|
||||||
if(!instr_if) return false;
|
if(!instr_if) return false;
|
||||||
const string core_name = instr_if->core_type_name();
|
const string core_name = instr_if->core_type_name();
|
||||||
@ -152,7 +152,7 @@ bool cov::registration(const char *const version, vm_if& vm) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cov::callback(instr_info_t iinfo, const exec_info& einfo) {
|
void pctrace::callback(instr_info_t iinfo, const exec_info& einfo) {
|
||||||
auto delay = 0;
|
auto delay = 0;
|
||||||
size_t id = iinfo.instr_id;
|
size_t id = iinfo.instr_id;
|
||||||
auto entry = delays[id];
|
auto entry = delays[id];
|
@ -45,7 +45,7 @@
|
|||||||
namespace iss {
|
namespace iss {
|
||||||
namespace plugin {
|
namespace plugin {
|
||||||
class lz4compress_steambuf;
|
class lz4compress_steambuf;
|
||||||
class cov : public iss::vm_plugin {
|
class pctrace : public iss::vm_plugin {
|
||||||
struct instr_delay {
|
struct instr_delay {
|
||||||
std::string instr_name;
|
std::string instr_name;
|
||||||
size_t size;
|
size_t size;
|
||||||
@ -67,17 +67,17 @@ class cov : public iss::vm_plugin {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
cov(const cov &) = delete;
|
pctrace(const pctrace &) = delete;
|
||||||
|
|
||||||
cov(const cov &&) = delete;
|
pctrace(const pctrace &&) = delete;
|
||||||
|
|
||||||
cov(std::string const &);
|
pctrace(std::string const &);
|
||||||
|
|
||||||
virtual ~cov();
|
virtual ~pctrace();
|
||||||
|
|
||||||
cov &operator=(const cov &) = delete;
|
pctrace &operator=(const pctrace &) = delete;
|
||||||
|
|
||||||
cov &operator=(const cov &&) = delete;
|
pctrace &operator=(const pctrace &&) = delete;
|
||||||
|
|
||||||
bool registration(const char *const version, vm_if &arch) override;
|
bool registration(const char *const version, vm_if &arch) override;
|
||||||
|
|
10
src/main.cpp
10
src/main.cpp
@ -35,14 +35,14 @@
|
|||||||
|
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <boost/program_options.hpp>
|
#include <boost/program_options.hpp>
|
||||||
#include <iss/arch/tgc_mapper.h>
|
#include "iss/arch/tgc_mapper.h"
|
||||||
#ifdef WITH_LLVM
|
#ifdef WITH_LLVM
|
||||||
#include <iss/llvm/jit_helper.h>
|
#include <iss/llvm/jit_helper.h>
|
||||||
#endif
|
#endif
|
||||||
#include <iss/log_categories.h>
|
#include <iss/log_categories.h>
|
||||||
#include <iss/plugin/cycle_estimate.h>
|
#include "iss/plugin/cycle_estimate.h"
|
||||||
#include <iss/plugin/instruction_count.h>
|
#include "iss/plugin/instruction_count.h"
|
||||||
#include <iss/plugin/pctrace.h>
|
#include "iss/plugin/pctrace.h"
|
||||||
#include <iss/plugin/loader.h>
|
#include <iss/plugin/loader.h>
|
||||||
#if defined(HAS_LUA)
|
#if defined(HAS_LUA)
|
||||||
#include <iss/plugin/lua.h>
|
#include <iss/plugin/lua.h>
|
||||||
@ -177,7 +177,7 @@ int main(int argc, char *argv[]) {
|
|||||||
vm->register_plugin(*ce_plugin);
|
vm->register_plugin(*ce_plugin);
|
||||||
plugin_list.push_back(ce_plugin);
|
plugin_list.push_back(ce_plugin);
|
||||||
} else if (plugin_name == "pctrace") {
|
} else if (plugin_name == "pctrace") {
|
||||||
auto *plugin = new iss::plugin::cov(filename);
|
auto *plugin = new iss::plugin::pctrace(filename);
|
||||||
vm->register_plugin(*plugin);
|
vm->register_plugin(*plugin);
|
||||||
plugin_list.push_back(plugin);
|
plugin_list.push_back(plugin);
|
||||||
} else {
|
} else {
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
#include <iss/iss.h>
|
#include <iss/iss.h>
|
||||||
#include <iss/vm_types.h>
|
#include <iss/vm_types.h>
|
||||||
#include <iss/plugin/loader.h>
|
#include <iss/plugin/loader.h>
|
||||||
#include <sysc/core_complex.h>
|
#include "core_complex.h"
|
||||||
#include <iss/arch/tgc_mapper.h>
|
#include <iss/arch/tgc_mapper.h>
|
||||||
#include <scc/report.h>
|
#include <scc/report.h>
|
||||||
#include <util/ities.h>
|
#include <util/ities.h>
|
||||||
@ -405,7 +405,7 @@ void core_complex::before_end_of_elaboration() {
|
|||||||
cpu->vm->register_plugin(*plugin);
|
cpu->vm->register_plugin(*plugin);
|
||||||
plugin_list.push_back(plugin);
|
plugin_list.push_back(plugin);
|
||||||
} else if (plugin_name == "pctrace") {
|
} else if (plugin_name == "pctrace") {
|
||||||
auto *plugin = new iss::plugin::cov(filename);
|
auto *plugin = new iss::plugin::pctrace(filename);
|
||||||
cpu->vm->register_plugin(*plugin);
|
cpu->vm->register_plugin(*plugin);
|
||||||
plugin_list.push_back(plugin);
|
plugin_list.push_back(plugin);
|
||||||
} else {
|
} else {
|
||||||
|
1
src/vm/interp/.gitignore
vendored
1
src/vm/interp/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
/vm_tgc_*.cpp
|
|
File diff suppressed because it is too large
Load Diff
@ -30,7 +30,7 @@
|
|||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
#include <iss/arch/tgf_c.h>
|
#include <iss/arch/tgc_c.h>
|
||||||
#include <iss/arch/riscv_hart_m_p.h>
|
#include <iss/arch/riscv_hart_m_p.h>
|
||||||
#include <iss/debugger/gdb_session.h>
|
#include <iss/debugger/gdb_session.h>
|
||||||
#include <iss/debugger/server.h>
|
#include <iss/debugger/server.h>
|
||||||
@ -52,7 +52,7 @@ namespace fp_impl {
|
|||||||
void add_fp_functions_2_module(::llvm::Module *, unsigned, unsigned);
|
void add_fp_functions_2_module(::llvm::Module *, unsigned, unsigned);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace tgf_c {
|
namespace tgc_c {
|
||||||
using namespace ::llvm;
|
using namespace ::llvm;
|
||||||
using namespace iss::arch;
|
using namespace iss::arch;
|
||||||
using namespace iss::debugger;
|
using namespace iss::debugger;
|
||||||
@ -4151,11 +4151,11 @@ template <typename ARCH> inline void vm_impl<ARCH>::gen_trap_check(BasicBlock *b
|
|||||||
bb, this->trap_blk, 1);
|
bb, this->trap_blk, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace tgf_c
|
} // namespace tgc_c
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
std::unique_ptr<vm_if> create<arch::tgf_c>(arch::tgf_c *core, unsigned short port, bool dump) {
|
std::unique_ptr<vm_if> create<arch::tgc_c>(arch::tgc_c *core, unsigned short port, bool dump) {
|
||||||
auto ret = new tgf_c::vm_impl<arch::tgf_c>(*core, dump);
|
auto ret = new tgc_c::vm_impl<arch::tgc_c>(*core, dump);
|
||||||
if (port != 0) debugger::server<debugger::gdb_session>::run_server(ret, port);
|
if (port != 0) debugger::server<debugger::gdb_session>::run_server(ret, port);
|
||||||
return std::unique_ptr<vm_if>(ret);
|
return std::unique_ptr<vm_if>(ret);
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
@ -30,7 +30,7 @@
|
|||||||
*
|
*
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
#include <iss/arch/tgf_c.h>
|
#include <iss/arch/tgc_c.h>
|
||||||
#include <iss/arch/riscv_hart_m_p.h>
|
#include <iss/arch/riscv_hart_m_p.h>
|
||||||
#include <iss/debugger/gdb_session.h>
|
#include <iss/debugger/gdb_session.h>
|
||||||
#include <iss/debugger/server.h>
|
#include <iss/debugger/server.h>
|
||||||
@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
namespace iss {
|
namespace iss {
|
||||||
namespace tcc {
|
namespace tcc {
|
||||||
namespace tgf_c {
|
namespace tgc_c {
|
||||||
using namespace iss::arch;
|
using namespace iss::arch;
|
||||||
using namespace iss::debugger;
|
using namespace iss::debugger;
|
||||||
|
|
||||||
@ -3251,8 +3251,8 @@ template <typename ARCH> void vm_impl<ARCH>::gen_trap_behavior(tu_builder& tu) {
|
|||||||
} // namespace mnrv32
|
} // namespace mnrv32
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
std::unique_ptr<vm_if> create<arch::tgf_c>(arch::tgf_c *core, unsigned short port, bool dump) {
|
std::unique_ptr<vm_if> create<arch::tgc_c>(arch::tgc_c *core, unsigned short port, bool dump) {
|
||||||
auto ret = new tgf_c::vm_impl<arch::tgf_c>(*core, dump);
|
auto ret = new tgc_c::vm_impl<arch::tgc_c>(*core, dump);
|
||||||
if (port != 0) debugger::server<debugger::gdb_session>::run_server(ret, port);
|
if (port != 0) debugger::server<debugger::gdb_session>::run_server(ret, port);
|
||||||
return std::unique_ptr<vm_if>(ret);
|
return std::unique_ptr<vm_if>(ret);
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user