ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
|
Page Table Entry (PTE) defines the composition of Page Frame Number (PFN) and relavant flags. More...
Namespaces | |
benchmark | |
error | |
fault | |
instr | |
interfaces | |
internal | |
mm | |
plugin | |
py | |
string | |
Classes | |
struct | Default_Clock |
class | Benchmark |
class | RegisterPart |
abstract description of needed or affected register bits. More... | |
class | RegisterSet |
set of register parts. More... | |
class | CodePart |
Contains a small code snipped. More... | |
class | CodeSet |
A set of CodeParts. More... | |
class | CodeBlock |
A list of CodeSets. More... | |
class | CPUArchRegListenerInterface |
allows to inform plugins about changes to a register that is present in the cpu structure. More... | |
class | CPUArchCPUManipulation |
interface for cpu structure access. More... | |
class | CPUArchDefaultPlugins |
provides common basic plugins More... | |
class | CPUArch |
the interface to translate instructions of and processor architecture More... | |
class | CPUCore |
CPUCore is responsible for the simulation of a CPU core in ETISS. More... | |
class | Initializer |
Wrapper for the initialize and shutdown of the ETISS environment. More... | |
struct | pointerHash |
class | FixedSizeHashMap |
class | InterruptEnable |
class | MappedInterruptEnable |
class | InterruptHandler |
class that handles interrupt signaling and checking. More... | |
class | InterruptVector |
interface to set interrupt bits More... | |
class | MappedInterruptVector |
template implementation of an InterruptVector that uses integer variables to store interrupt bit values and to read interrupt masks. More... | |
class | JIT |
compiler interface for just in time compilation of generated C code More... | |
class | LibraryInterface |
interface class for libraries. More... | |
class | ToString |
Marker interface for toString() support. More... | |
class | SourceCodeLocation |
simple class that store source location information. More... | |
class | Configuration |
simple class to hold configuration options More... | |
class | ConfigAnnouncer |
simple class to add a configuration option to the list of known options More... | |
class | ObjectPool |
prealloc_inc defines the number of objects that is availabe within ObjectPools memory; default: 100 More... | |
class | ExpandingNativeStack |
implements a stack that may only grow (if needed) and can only contain native types since no destructor / contructor / initialization is called. More... | |
class | Plugin |
base plugin class that provides access to different plugin functions if present More... | |
class | InterruptListenerPlugin |
class | TranslationPlugin |
allows to add code to the translation of instructions More... | |
class | CoroutinePlugin |
this plugin will be called before a block is executed. More... | |
class | SystemWrapperPlugin |
this plugin allows to wrap the ETISS_System interface More... | |
class | RegisterDevicePlugin |
RegisterDevicePlugin::changedRegister is called if a supported register has been changed. More... | |
class | RefCountedObject |
base refcount class More... | |
class | MemSegment |
class | SimpleMemSystem |
simple etiss:System implementation for testing More... | |
class | System |
System Interface for the basic system IO operations and time synchronization. More... | |
class | SimpleSystem |
A simple system, that implements the etiss::System interface. More... | |
class | DataSheetAccurateTiming |
class | BlockLink |
structure to store additional information with a function pointer to the translated code More... | |
class | Translation |
class | VirtualStruct |
abstract representation of an module of a simulation which could be a embedded device of the cpu of an embedded device. More... | |
class | VSSync |
used for synchronization of the tree of virtual structs. More... | |
class | VirtualStructSupport |
class | LLVMJIT |
Typedefs | |
typedef void * | ModuleHandle |
Represents a module handle. Analogous to Windows this represents the module base address, not a dlopen handle! More... | |
typedef etiss::int32(* | ExecBlockCall) (ETISS_CPU *cpu, ETISS_System *system, void **plugin_pointers) |
Enumerations | |
enum | InterruptType { EDGE_TRIGGERED = 1 , LEVEL_TRIGGERED } |
interrupt types supported by the default implementation More... | |
enum | Verbosity { SILENT = 0 , FATALERROR = 1 , ERROR = 2 , WARNING = 3 , INFO = 4 , VERBOSE = 5 } |
Enumeration type for the log levels. More... | |
enum | endian_t : uint32_t { _LITTLE_ENDIAN_ = ETISS_LITTLE_ENDIAN , _BIG_ENDIAN_ = ETISS_BIG_ENDIAN , _UNKNOWN_ENDIAN_ = ETISS_UNKNOWN_ENDIAN } |
Enumeration type for the endianness. More... | |
Functions | |
std::set< std::string > | listCPUArchs () |
Create a set with all identifier names of the known CPUArch plug-ins. More... | |
std::set< std::string > | listJITs () |
Create a set with all identifier names of the known JIT plug-ins. More... | |
std::set< std::string > | listPlugins () |
Create a set with all identifier names of the known plug-ins. More... | |
void | preloadLibraries () |
Search and try to load libraries. More... | |
std::shared_ptr< JIT > | getJIT (std::string name, std::map< std::string, std::string > options=std::map< std::string, std::string >()) |
Get a present JIT plug-in by name. More... | |
std::shared_ptr< CPUArch > | getCPUArch (std::string name, std::map< std::string, std::string > options=std::map< std::string, std::string >()) |
Get a present CPUArch plug-in by name. More... | |
std::shared_ptr< Plugin > | getPlugin (std::string name, std::map< std::string, std::string > options=std::map< std::string, std::string >()) |
Get a present Plugin plug-in by name. More... | |
bool | loadLibrary (std::string path, std::string name) |
Load a library. More... | |
void | addLibrary (std::shared_ptr< etiss::LibraryInterface > libInterface) |
Add a LibraryInterface to the ETISS environment. More... | |
std::set< std::string > | listLibraries () |
Create a set with strings of the library names and some information appended in square brackets. More... | |
std::set< std::string > | listLibraryPrefixes () |
Create a set with strings of the library names. More... | |
void | initialize (std::vector< std::string > &args) |
Initialize and configure ETISS. More... | |
std::shared_ptr< etiss::JIT > | getDefaultJIT () |
Get the default JIT implementation. More... | |
void | shutdown () |
Shutdown ETISS. More... | |
std::string | errorMessage (etiss::int32 code, CPUArch *arch=0) |
Get the error message for an error code for a specific CPUArch plug-in. More... | |
void | forceInitialization () |
Force the initialization of ETISS. More... | |
std::shared_ptr< ETISS_System > | createFastMemory (size_t size) |
creates a very fast ETISS_System structure. More... | |
CONSTEXPR size_t | set_lsbs (size_t val) |
etiss::ModuleHandle | GetModuleByName (const std::string &name="") |
etiss::ModuleHandle | GetModuleByAddress (uintptr_t adr) |
std::string | GetModulePath (etiss::ModuleHandle hModule) |
etiss::ModuleHandle | GetCurrentModule () |
Returns the module handle to the own dynamic library. More... | |
std::string | GetCurrentModulePath () |
Returns the abolute path with filename to the own dynamic library. More... | |
template<typename T > | |
std::enable_if< std::is_base_of< etiss::ToString, T >::value, std::ostream & >::type | operator<< (std::ostream &os, const T &val) |
Implementation of the write to stream operator for objects, that implement the etiss::ToString interface. More... | |
Verbosity & | verbosity () |
Get log level reference. More... | |
template<typename T > | |
std::string | toString (const T &val) |
conversion of type T to std::string. More... | |
std::list< std::string > | split (const std::string &str, std::function< size_t(const std::string &, size_t, size_t &)> findsplit) |
std::list< std::string > | split (const std::string &str, char splitchar) |
std::list< std::string > | split (const std::string &str, const std::string &splitstring) |
template<typename T , typename T2 , typename... O> | |
std::string | toString (const T &val, const T2 &val2, const O &... others) |
conversion of type T to std::string. More... | |
std::string | toString (const Verbosity &val) |
prints string representation of verbosity level More... | |
void | log (Verbosity level, std::string msg) |
write log message at the given level. More... | |
void | logC (Verbosity level, std::function< std::string(void)> msgGen) |
write log message at the given level. More... | |
template<typename T > | |
std::string | toLogString (const T &t) |
Format the string representation of a value for the log output. More... | |
template<typename T1 , typename T2 , typename... O> | |
std::string | toLogString (const T1 &t1, const T2 &t2, const O &... os) |
Format a list of arguments for the log output. More... | |
template<typename T , typename... O> | |
void | log (Verbosity level, std::string msg, const T &t, const O &... args) |
additional objects will be converted to a string with toString and are added to the message More... | |
std::vector< std::string > | parseCommands (const std::string &cmdline) |
Configuration & | cfg (const std::string &cfgName) |
Get reference of the global ETISS configuration object. More... | |
Configuration & | cfg () |
std::string | installDir () |
Get ETISS installation directory. More... | |
std::string | jitFiles () |
Get ETISS JIT files path. More... | |
std::vector< std::string > | jitExtHeaders () |
Get ETISS JIT external headers. More... | |
std::vector< std::string > | jitExtLibraries () |
Get ETISS JIT external libraries. More... | |
std::vector< std::string > | jitExtHeaderPaths () |
Get ETISS JIT external path. More... | |
std::vector< std::string > | jitExtLibPaths () |
Get ETISS JIT external path. More... | |
template<> | |
std::string | Configuration::get< std::string > (const std::string &key, std::string default_, bool *default_used) |
endian_t | getEndianness () |
evaluates the endianness of the current build as a constexpr. More... | |
template<typename T > | |
std::enable_if< std::is_base_of< etiss::RefCountedObject< ObjectPool< T > >, T >::value, bool >::type | decRef (T *ptr) |
template<typename T , typename allocatorT > | |
std::enable_if< std::is_base_of< etiss::RefCountedObject< allocatorT >, T >::value, bool >::type | helper_decRef (T *ptr) |
template<typename T , typename allocatorT > | |
std::enable_if< std::is_base_of< etiss::RefCountedObject< allocatorT >, T >::value, void >::type | helper_incRef (T *ptr) |
template<typename T , typename allocatorT > | |
std::enable_if< std::is_base_of< etiss::RefCountedObject< allocatorT >, T >::value, allocatorT *& >::type | helper_allocator_ptr_ref (T *ptr) |
template<typename T > | |
void | incRef (T *ptr) |
template<typename T > | |
std::enable_if< std::is_base_of< etiss::RefCountedObject< void >, T >::value, bool >::type | decRef (T *ptr) |
std::shared_ptr< ETISS_System > | wrap (etiss::System *sys) |
wraps a etiss::System in a ETISS_System structure. More... | |
void | copy (VirtualStruct &dst, VirtualStruct &src, std::list< std::shared_ptr< VirtualStruct::Field >> &dst_notPresent, std::list< std::shared_ptr< VirtualStruct::Field >> &dst_notWriteable, std::list< std::shared_ptr< VirtualStruct::Field >> dst_unknown, bool pretend=false, std::list< std::shared_ptr< VirtualStruct::Field >> *src_private=0, std::list< std::shared_ptr< VirtualStruct::Field >> *dst_private=0) |
copies all fields with the same name from the source to the destination structure. More... | |
static void | parseName (const char *cname, const int baseflags, unsigned &flags, std::string &name_) |
std::vector< std::string > & | split (const std::string &s, char delim, std::vector< std::string > &elems) |
etiss::int32 | dbg_print (etiss::uint32 reg) |
template<unsigned len, unsigned pos> | |
static std::enable_if< len==pos, void >::type | call_initCodeBlock (etiss::TranslationPlugin **ca, CodeBlock &cb) |
template<unsigned len, unsigned pos> | |
static std::enable_if< len !=pos, void >::type | call_initCodeBlock (etiss::TranslationPlugin **ca, CodeBlock &cb) |
template<unsigned len, unsigned pos> | |
static std::enable_if< len==pos, void >::type | call_finalizeCodeBlock (etiss::TranslationPlugin **ca, CodeBlock &cb) |
template<unsigned len, unsigned pos> | |
static std::enable_if< len !=pos, void >::type | call_finalizeCodeBlock (etiss::TranslationPlugin **ca, CodeBlock &cb) |
static void | call_initCodeBlock_ul (etiss::TranslationPlugin **ca, CodeBlock &cb) |
static void | call_finalizeCodeBlock_ul (etiss::TranslationPlugin **ca, CodeBlock &cb) |
static uint64_t | genTranslationId () |
Variables | |
static const ModuleHandle | NullModuleHandle = nullptr |
Represents a null value for hl::ModuleHandle. More... | |
Page Table Entry (PTE) defines the composition of Page Frame Number (PFN) and relavant flags.
Singleton to represent specific PTE format, every PTE uses this singleton to parse raw PTE value into PPN and protection flags, read/write PPN or flags.
Copyright 2018 Infineon Technologies AG This file is part of ETISS tool, see https://github.com/tum-ei-eda/etiss. The initial version of this software has been created with the funding support by the German Federal Ministry of Education and Research (BMBF) in the project EffektiV under grant 01IS13022. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright 2018 Infineon Technologies AG This file is part of ETISS tool, see https://github.com/tum-ei-eda/etiss. The initial version of this software has been created with the funding support by the German Federal Ministry of Education and Research (BMBF) in the project EffektiV under grant 01IS13022. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
A PTE contains page frame number (pfn) and protection flags. PTEFormat is used to record bit field of PFR and flags in PTE raw value.PFN or flags could be read/write with help of PTEFormat, which could be built up by its builder utility.
typedef etiss::int32(* etiss::ExecBlockCall) (ETISS_CPU *cpu, ETISS_System *system, void **plugin_pointers) |
Definition at line 57 of file Translation.h.
typedef void* etiss::ModuleHandle |
enum etiss::endian_t : uint32_t |
enum etiss::InterruptType |
interrupt types supported by the default implementation
Enumerator | |
---|---|
EDGE_TRIGGERED | |
LEVEL_TRIGGERED |
Definition at line 73 of file InterruptHandler.h.
enum etiss::Verbosity |
|
static |
Definition at line 79 of file Translation.cpp.
|
static |
Definition at line 85 of file Translation.cpp.
References etiss::TranslationPlugin::finalizeCodeBlock().
|
static |
Definition at line 100 of file Translation.cpp.
References etiss::TranslationPlugin::finalizeCodeBlock().
Referenced by etiss::Translation::init().
|
static |
Definition at line 67 of file Translation.cpp.
|
static |
Definition at line 72 of file Translation.cpp.
References etiss::TranslationPlugin::initCodeBlock().
|
static |
Definition at line 92 of file Translation.cpp.
References etiss::TranslationPlugin::initCodeBlock().
Referenced by etiss::Translation::init().
etiss::Configuration & etiss::cfg | ( | ) |
etiss::Configuration & etiss::cfg | ( | const std::string & | cfgName | ) |
Get reference of the global ETISS configuration object.
Definition at line 560 of file Misc.cpp.
References etiss_cfg_inConstructor, INFO, log(), and WARNING.
Referenced by cfg(), etiss::ConfigAnnouncer::ConfigAnnouncer(), etiss_initialize(), etiss_loadIniConfigs(), etiss_semihost_enabled(), etiss::CPUCore::execute(), etiss::Configuration::get(), etiss::Translation::getBlock(), etiss::CPUArch::getIncludePath(), RV32IMACFDArch::initInstrSet(), RV64IMACFDArch::initInstrSet(), jitExtHeaderPaths(), jitExtHeaders(), jitExtLibPaths(), jitExtLibraries(), etiss::Configuration::listFullConfiguration(), etiss::SimpleMemSystem::load_elf(), etiss::SimpleMemSystem::load_segments(), etiss::Initializer::loadIniJIT(), etiss::Initializer::loadIniPlugins(), main(), preloadLibraries(), etiss::Configuration::set(), etiss::Configuration::set_cmd_line_boost(), etiss::SimpleMemSystem::SimpleMemSystem(), and etiss::Translation::translateBlock().
std::string etiss::Configuration::get< std::string > | ( | const std::string & | key, |
std::string | default_, | ||
bool * | default_used | ||
) |
void etiss::copy | ( | VirtualStruct & | dst, |
VirtualStruct & | src, | ||
std::list< std::shared_ptr< VirtualStruct::Field >> & | dst_notPresent, | ||
std::list< std::shared_ptr< VirtualStruct::Field >> & | dst_notWriteable, | ||
std::list< std::shared_ptr< VirtualStruct::Field >> | dst_unknown, | ||
bool | pretend = false , |
||
std::list< std::shared_ptr< VirtualStruct::Field >> * | src_private = 0 , |
||
std::list< std::shared_ptr< VirtualStruct::Field >> * | dst_private = 0 |
||
) |
copies all fields with the same name from the source to the destination structure.
if a source field is not present in the destination then the field will be added to dst_notPresent if a field is not writeable in the destination then the field will be added to dst_notWriteable if a destination field is not present in the source then the field will be added to dst_unknown if src_private and/or dst_private is passed then they will contain a list of private fields of the source/destination which are ignored by the copy function.
pretend | if true then no copy operation will be performed (only the lists will be filled) |
Definition at line 534 of file VirtualStruct.cpp.
References etiss::VirtualStruct::findName(), etiss::VirtualStruct::foreachField(), etiss::VirtualStruct::Field::P, and etiss::VirtualStruct::Field::W.
Referenced by pugi::xpath_variable::set().
std::shared_ptr< ETISS_System > etiss::createFastMemory | ( | size_t | size | ) |
creates a very fast ETISS_System structure.
segmentation faults are possible if the read access happens outside of the range 0 to size-1. writing to areas that have been translated results in undefined behaviour. instruction write access return etiss::RETURNCODE::IBUS_WRITE_ERROR. time synchronization is disabled but may be changed if a custom handle is not required;
Definition at line 84 of file FastMemory.cpp.
References system_call_dbg_read(), system_call_dbg_write(), system_call_dread(), system_call_dwrite(), system_call_iread(), system_call_iwrite(), system_call_syncTime(), and uint8_t.
etiss::int32 etiss::dbg_print | ( | etiss::uint32 | reg | ) |
Definition at line 179 of file System.cpp.
std::enable_if<std::is_base_of<etiss::RefCountedObject<ObjectPool<T> >, T>::value, bool>::type etiss::decRef | ( | T * | ptr | ) |
Definition at line 217 of file ObjectPool.h.
References etiss::ObjectPool< T, prealloc_inc >::deallocate(), and etiss::ObjectPool< T, prealloc_inc >::destroy().
std::enable_if<std::is_base_of<etiss::RefCountedObject<void>, T>::value, bool>::type etiss::decRef | ( | T * | ptr | ) |
Definition at line 136 of file RefCountedObject.h.
References unlikely.
|
static |
Definition at line 109 of file Translation.cpp.
References uint64_t.
etiss::ModuleHandle etiss::GetCurrentModule | ( | ) |
Returns the module handle to the own dynamic library.
Definition at line 106 of file Memory.cpp.
References GetModuleByAddress().
Referenced by GetCurrentModulePath().
std::string etiss::GetCurrentModulePath | ( | ) |
Returns the abolute path with filename to the own dynamic library.
Definition at line 117 of file Memory.cpp.
References GetCurrentModule(), and GetModulePath().
Referenced by installDir().
|
inline |
evaluates the endianness of the current build as a constexpr.
Definition at line 542 of file Misc.h.
References _BIG_ENDIAN_, _LITTLE_ENDIAN_, and _UNKNOWN_ENDIAN_.
Referenced by etiss::instr::Buffer::recoverFromEndianness().
etiss::ModuleHandle etiss::GetModuleByAddress | ( | uintptr_t | adr | ) |
Definition at line 85 of file Memory.cpp.
References get_metrics::adr.
Referenced by GetCurrentModule().
etiss::ModuleHandle etiss::GetModuleByName | ( | const std::string & | name = "" | ) |
Definition at line 56 of file Memory.cpp.
References NULL, and NullModuleHandle.
std::string etiss::GetModulePath | ( | etiss::ModuleHandle | hModule | ) |
Definition at line 92 of file Memory.cpp.
Referenced by GetCurrentModulePath().
std::enable_if< std::is_base_of< etiss::RefCountedObject< allocatorT >, T >::value, allocatorT *& >::type etiss::helper_allocator_ptr_ref | ( | T * | ptr | ) |
Definition at line 122 of file RefCountedObject.h.
std::enable_if< std::is_base_of< etiss::RefCountedObject< allocatorT >, T >::value, bool >::type etiss::helper_decRef | ( | T * | ptr | ) |
Definition at line 96 of file RefCountedObject.h.
References unlikely.
std::enable_if< std::is_base_of< etiss::RefCountedObject< allocatorT >, T >::value, void >::type etiss::helper_incRef | ( | T * | ptr | ) |
Definition at line 109 of file RefCountedObject.h.
References unlikely.
|
inline |
Definition at line 130 of file RefCountedObject.h.
std::string etiss::installDir | ( | ) |
Get ETISS installation directory.
Definition at line 583 of file Misc.cpp.
References GetCurrentModulePath().
Referenced by etiss_initialize(), jitFiles(), and preloadLibraries().
std::vector< std::string > etiss::jitExtHeaderPaths | ( | ) |
Get ETISS JIT external path.
Definition at line 611 of file Misc.cpp.
References cfg(), etiss::Configuration::get(), split(), and etiss::fault::x.
Referenced by etiss::Translation::getBlock().
std::vector< std::string > etiss::jitExtHeaders | ( | ) |
Get ETISS JIT external headers.
Definition at line 597 of file Misc.cpp.
References cfg(), etiss::Configuration::get(), split(), and etiss::fault::x.
Referenced by etiss::Translation::getBlock().
std::vector< std::string > etiss::jitExtLibPaths | ( | ) |
Get ETISS JIT external path.
Definition at line 618 of file Misc.cpp.
References cfg(), etiss::Configuration::get(), split(), and etiss::fault::x.
Referenced by etiss::Translation::getBlock(), and TCCJIT::translate().
std::vector< std::string > etiss::jitExtLibraries | ( | ) |
Get ETISS JIT external libraries.
Definition at line 604 of file Misc.cpp.
References cfg(), etiss::Configuration::get(), split(), and etiss::fault::x.
Referenced by etiss::Translation::getBlock().
std::string etiss::jitFiles | ( | ) |
Get ETISS JIT files path.
Definition at line 592 of file Misc.cpp.
References installDir().
Referenced by etiss::Translation::getBlock(), etiss::LLVMJIT::translate(), TCCJIT::translate(), verifyJITPragmaPack(), verifyJITSizeOf(), and etiss::plugin::SelectiveSysWrapper::wrap().
void etiss::log | ( | Verbosity | level, |
std::string | msg | ||
) |
write log message at the given level.
if the current verbose level is lower then the message will not be printed
Definition at line 125 of file Misc.cpp.
References etiss_verbosity, FATALERROR, and toString().
Referenced by etiss::VirtualStruct::Field::_applyBitflip(), RegField_RV32IMACFD::_write(), pcField_RV32IMACFD::_write(), RegField_RV64IMACFD::_write(), pcField_RV64IMACFD::_write(), etiss::fault::Injector::acceleratedTrigger(), access_error(), etiss::fault::Action::Action(), etiss::SimpleMemSystem::add_memsegment(), etiss::instr::Instruction::addCallback(), etiss::fault::Stressor::addFault(), etiss::VirtualStruct::addField(), etiss::CPUCore::addPlugin(), etiss::DataSheetAccurateTiming::addRule(), etiss::instr::InstructionDefinition::addTo(), etiss::instr::InstructionGroup::addTo(), etiss::fault::Injector::addTrigger(), etiss::VirtualStruct::allocateFromC(), cfg(), etiss::mm::PTE::ClearFlagByName(), etiss::instr::VariableInstructionSet::compile(), etiss::instr::InstructionSet::create(), etiss::CPUCore::create(), etiss::plugin::gdb::Server::createTCPServer(), etiss::fault::Injector::cycleAccurateCallback(), etiss::mm::dbg_write(), etiss::interfaces::VCD::declare(), etiss::plugin::dread(), etiss::mm::TLB< EntryNum >::DumpEntry(), etiss::plugin::dwrite(), etiss::fault::Trigger::ensure(), etiss_check_shutdown(), etiss_CPUCore_handleException(), etiss_initialize(), etiss_loadIniConfigs(), ETISS_SIGNAL_MMU(), ETISSINCLUDED_createPlugin(), etiss::plugin::errorInjection::BlockAccurateHandler::execute(), etiss::CPUCore::execute(), etiss::fault::Fault::Fault(), etiss::fault::Trigger::fired(), etiss::fault::Stressor::firedTrigger(), etiss::instr::InstructionSet::foreach(), etiss::fault::Injector::freeFastFieldAccessPtr(), etiss::Configuration::get(), etiss::Translation::getBlock(), etiss::mm::PTE::GetByName(), getCPUArch(), etiss::fault::InjectorAddress::getInjector(), etiss::fault::Injector::getInjectorPath(), getJIT(), getPlugin(), etiss::plugin::gdb::Server::handlePacket(), etiss::Translation::init(), etiss::mm::MMU::Init(), RV32IMACFDArch::initInstrSet(), RV64IMACFDArch::initInstrSet(), etiss::fault::Injector::Injector(), etiss::fault::InjectorAddress::InjectorAddress(), etiss::fault::Injector::instructionAccurateCallback(), InstructionSpecificAddressCallback_callback(), etiss::mm::iread(), etiss::mm::iwrite(), listCPUArchs(), listJITs(), listPlugins(), etiss::SimpleMemSystem::load_elf(), etiss::SimpleMemSystem::load_segments(), etiss::Initializer::loadIniJIT(), etiss::Initializer::loadIniPlugins(), loadLibraryList(), etiss::fault::Stressor::loadXML(), log(), logC(), etiss::plugin::Logger::Logger(), main(), etiss::MappedInterruptVector< INT >::MappedInterruptVector(), etiss::MemSegment::memInit(), etiss::MemSegment::MemSegment(), etiss::fault::Injector::needsCallbacks(), etiss::instr::OPCode::OPCode(), etiss::LibraryInterface::openSharedLibrary(), etiss::fault::InjectorAddress::operator=(), etiss::ExpandingNativeStack< T, stackallocatedsize >::operator[](), etiss::mm::page_fault_ni_(), etiss::fault::xml::parse< std::vector< etiss::fault::Fault > >(), etiss::instr::parse_i(), parseName(), etiss::ExpandingNativeStack< T, stackallocatedsize >::pop(), etiss::interfaces::Delegate::read(), etiss::instr::Buffer::recoverFromEndianness(), etiss::fault::Fault::resolveTime(), etiss::fault::Trigger::resolveTime(), RV32IMACFD_createCPUArch(), RV64IMACFD_createCPUArch(), etiss::interfaces::WishboneBus< BOOLSIG, VECTORSIG, instrBus, flipEndianess, bytewidth, VECTORSIGSTORAGETYPE >::sel2Length(), etiss::interfaces::sel_rwop(), semihostingCall(), semihostReadStructField(), etiss::Configuration::set(), etiss::Configuration::set_cmd_line_boost(), etiss::mm::PTE::SetFlagByName(), shutdown(), etiss::CPUArchRegListenerInterface::signalChangedRegisterValue(), etiss::mm::MMU::SignalMMU(), etiss::interfaces::Delegate::syncTime(), etiss::CodeBlock::toCode(), etiss::interfaces::SimpleInstructionInjector< T >::toFunction(), etiss::mm::MMU::Translate(), etiss::fault::Trigger::Trigger(), etiss::plugin::unimpl_read(), etiss::plugin::unimpl_write(), etiss::mm::PTE::Update(), etiss::interfaces::WishboneBus< BOOLSIG, VECTORSIG, instrBus, flipEndianess, bytewidth, VECTORSIGSTORAGETYPE >::update(), etiss::interfaces::VCD::update(), verifyJITPragmaPack(), verifyJITSizeOf(), etiss::interfaces::Delegate::write(), etiss::string::form_string::write(), etiss::fault::xml::write< std::vector< etiss::fault::Fault > >(), etiss::string::form_string::write_dec(), etiss::string::form_string::writet(), and etiss::VirtualStruct::~VirtualStruct().
void etiss::log | ( | Verbosity | level, |
std::string | msg, | ||
const T & | t, | ||
const O &... | args | ||
) |
additional objects will be converted to a string with toString and are added to the message
Definition at line 284 of file Misc.h.
References get_metrics::args, log(), toLogString(), and verbosity().
void etiss::logC | ( | Verbosity | level, |
std::function< std::string(void)> | msgGen | ||
) |
write log message at the given level.
if the current verbose level is lower then the mesGen function will not be called.
Definition at line 136 of file Misc.cpp.
References etiss_verbosity, and log().
std::enable_if<std::is_base_of<etiss::ToString, T>::value, std::ostream &>::type etiss::operator<< | ( | std::ostream & | os, |
const T & | val | ||
) |
Implementation of the write to stream operator for objects, that implement the etiss::ToString interface.
std::vector< std::string > etiss::parseCommands | ( | const std::string & | cmdline | ) |
Definition at line 144 of file Misc.cpp.
Referenced by etiss::Configuration::Configuration().
|
static |
Definition at line 48 of file CVirtualStruct.cpp.
References ETISS_SRCLOC, FATALERROR, log(), etiss::VirtualStruct::Field::P, and WARNING.
Referenced by etiss::VirtualStruct::allocateFromC().
Definition at line 53 of file FixedSizeHashMap.h.
Referenced by etiss::FixedSizeHashMap< K, V, hashFunc, log2_buckets >::erase(), and etiss::FixedSizeHashMap< K, V, hashFunc, log2_buckets >::find().
std::vector<std::string>& etiss::split | ( | const std::string & | s, |
char | delim, | ||
std::vector< std::string > & | elems | ||
) |
Definition at line 67 of file ETISSInit.cpp.
References s.
|
inline |
Definition at line 184 of file Misc.h.
References split(), and get_metrics::str.
|
inline |
Definition at line 192 of file Misc.h.
References split(), and get_metrics::str.
std::list< std::string > etiss::split | ( | const std::string & | str, |
std::function< size_t(const std::string &, size_t, size_t &)> | findsplit | ||
) |
Definition at line 91 of file Misc.cpp.
References get_metrics::str.
Referenced by etiss::interfaces::VCD::declare(), etiss_initialize(), jitExtHeaderPaths(), jitExtHeaders(), jitExtLibPaths(), jitExtLibraries(), loadLibraryList(), and split().
std::string etiss::toLogString | ( | const T & | t | ) |
Format the string representation of a value for the log output.
Currently toLogString only puts the result of toString() in curly brackets
Definition at line 261 of file Misc.h.
References toString().
Referenced by log(), and toLogString().
std::string etiss::toLogString | ( | const T1 & | t1, |
const T2 & | t2, | ||
const O &... | os | ||
) |
Format a list of arguments for the log output.
This function uses etiss::toLogString(cont T & t) convert the arguments to strings. Arguments following the first argument are added to a new line and indented by two tabs.
Definition at line 274 of file Misc.h.
References toLogString().
std::string etiss::toString | ( | const T & | val | ) |
conversion of type T to std::string.
This implementation uses std::stringstream. This function also works if std::string or const char* T::toString() exists.
val | Reference to the value, that shall be converted. |
Definition at line 174 of file Misc.h.
Referenced by etiss::DataSheetAccurateTiming::addRule(), etiss::plugin::gdb::Server::createTCPServer(), etiss::CPUCore::execute(), etiss::Configuration::get(), etiss::Translation::getBlock(), etiss::DataSheetAccurateTiming::handleMatch_cycles(), etiss::Translation::init(), etiss::plugin::InstructionSpecificAddressCallback::initCodeBlock(), log(), etiss::instr::OPCode::OPCode(), etiss::interfaces::Dot::pcreateN(), etiss::Initializer::toList(), toLogString(), etiss::SourceCodeLocation::toString(), and toString().
std::string etiss::toString | ( | const T & | val, |
const T2 & | val2, | ||
const O &... | others | ||
) |
conversion of type T to std::string.
default implementation uses std::stringstream
Definition at line 205 of file Misc.h.
References toString().
std::string etiss::toString | ( | const Verbosity & | val | ) |
Verbosity & etiss::verbosity | ( | ) |
Get log level reference.
verbosity level variable
This function allows get the current log level of ETISS and change the log level.
Definition at line 120 of file Misc.cpp.
References etiss_verbosity.
Referenced by access_error(), etiss_initialize(), etiss_loadIniConfigs(), and log().
std::shared_ptr< ETISS_System > etiss::wrap | ( | etiss::System * | sys | ) |
wraps a etiss::System in a ETISS_System structure.
Definition at line 94 of file System.cpp.
References ETISS_System::dbg_read, ETISS_System::dbg_write, ETISS_System::dread, ETISS_System::dwrite, ETISS_System::handle, ETISS_System::iread, ETISS_System::iwrite, ETISS_System::syncTime, system_call_dbg_read(), system_call_dbg_write(), system_call_dread(), system_call_dwrite(), system_call_iread(), system_call_iwrite(), and system_call_syncTime().
Referenced by etiss::CPUCore::execute().
|
static |
Represents a null value for hl::ModuleHandle.
Definition at line 34 of file Memory.h.
Referenced by GetModuleByName().