ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
etiss Namespace Reference

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< JITgetJIT (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< CPUArchgetCPUArch (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< PlugingetPlugin (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::JITgetDefaultJIT ()
 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_SystemcreateFastMemory (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...
 
Verbosityverbosity ()
 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)
 
Configurationcfg (const std::string &cfgName)
 Get reference of the global ETISS configuration object. More...
 
Configurationcfg ()
 
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_Systemwrap (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...
 

Detailed Description

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.

Author
Aote Jin aote..nosp@m.jin@.nosp@m.tum.d.nosp@m.e, Chair of Electronic Design Automation, TUM
Date
June 24, 2018
Version
0.1

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.

Author
Aote Jin aote..nosp@m.jin@.nosp@m.tum.d.nosp@m.e, Chair of Electronic Design Automation, TUM
Date
June 24, 2018
Version
0.1

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 Documentation

◆ ExecBlockCall

typedef etiss::int32(* etiss::ExecBlockCall) (ETISS_CPU *cpu, ETISS_System *system, void **plugin_pointers)

Definition at line 57 of file Translation.h.

◆ ModuleHandle

typedef void* etiss::ModuleHandle

Represents a module handle. Analogous to Windows this represents the module base address, not a dlopen handle!

Definition at line 31 of file Memory.h.

Enumeration Type Documentation

◆ endian_t

Enumeration type for the endianness.

Enumerator
_LITTLE_ENDIAN_ 
_BIG_ENDIAN_ 
_UNKNOWN_ENDIAN_ 

Definition at line 524 of file Misc.h.

◆ InterruptType

interrupt types supported by the default implementation

Enumerator
EDGE_TRIGGERED 
LEVEL_TRIGGERED 

Definition at line 73 of file InterruptHandler.h.

◆ Verbosity

Enumeration type for the log levels.

This is enumeration type for the log levels supported by the ETISS logging framework.

Enumerator
SILENT 
FATALERROR 
ERROR 
WARNING 
INFO 
VERBOSE 

Definition at line 123 of file Misc.h.

Function Documentation

◆ call_finalizeCodeBlock() [1/2]

template<unsigned len, unsigned pos>
static std::enable_if<len == pos, void>::type etiss::call_finalizeCodeBlock ( etiss::TranslationPlugin **  ca,
CodeBlock cb 
)
static

Definition at line 79 of file Translation.cpp.

◆ call_finalizeCodeBlock() [2/2]

template<unsigned len, unsigned pos>
static std::enable_if<len != pos, void>::type etiss::call_finalizeCodeBlock ( etiss::TranslationPlugin **  ca,
CodeBlock cb 
)
static

Definition at line 85 of file Translation.cpp.

References etiss::TranslationPlugin::finalizeCodeBlock().

Here is the call graph for this function:

◆ call_finalizeCodeBlock_ul()

static void etiss::call_finalizeCodeBlock_ul ( etiss::TranslationPlugin **  ca,
CodeBlock cb 
)
static

Definition at line 100 of file Translation.cpp.

References etiss::TranslationPlugin::finalizeCodeBlock().

Referenced by etiss::Translation::init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ call_initCodeBlock() [1/2]

template<unsigned len, unsigned pos>
static std::enable_if<len == pos, void>::type etiss::call_initCodeBlock ( etiss::TranslationPlugin **  ca,
CodeBlock cb 
)
static

Definition at line 67 of file Translation.cpp.

◆ call_initCodeBlock() [2/2]

template<unsigned len, unsigned pos>
static std::enable_if<len != pos, void>::type etiss::call_initCodeBlock ( etiss::TranslationPlugin **  ca,
CodeBlock cb 
)
static

Definition at line 72 of file Translation.cpp.

References etiss::TranslationPlugin::initCodeBlock().

Here is the call graph for this function:

◆ call_initCodeBlock_ul()

static void etiss::call_initCodeBlock_ul ( etiss::TranslationPlugin **  ca,
CodeBlock cb 
)
static

Definition at line 92 of file Translation.cpp.

References etiss::TranslationPlugin::initCodeBlock().

Referenced by etiss::Translation::init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cfg() [1/2]

etiss::Configuration & etiss::cfg ( )

Definition at line 577 of file Misc.cpp.

References cfg().

Here is the call graph for this function:

◆ cfg() [2/2]

etiss::Configuration & etiss::cfg ( const std::string &  cfgName)

◆ Configuration::get< std::string >()

template<>
std::string etiss::Configuration::get< std::string > ( const std::string &  key,
std::string  default_,
bool default_used 
)

Definition at line 255 of file Misc.cpp.

◆ copy()

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.

Parameters
pretendif 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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ createFastMemory()

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.

Here is the call graph for this function:

◆ dbg_print()

etiss::int32 etiss::dbg_print ( etiss::uint32  reg)

Definition at line 179 of file System.cpp.

◆ decRef() [1/2]

template<typename T >
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().

Here is the call graph for this function:

◆ decRef() [2/2]

template<typename T >
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.

◆ genTranslationId()

static uint64_t etiss::genTranslationId ( )
static

Definition at line 109 of file Translation.cpp.

References uint64_t.

◆ GetCurrentModule()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getEndianness()

endian_t etiss::getEndianness ( )
inline

evaluates the endianness of the current build as a constexpr.

Todo:
test on big endian machine

Definition at line 542 of file Misc.h.

References _BIG_ENDIAN_, _LITTLE_ENDIAN_, and _UNKNOWN_ENDIAN_.

Referenced by etiss::instr::Buffer::recoverFromEndianness().

Here is the caller graph for this function:

◆ GetModuleByAddress()

etiss::ModuleHandle etiss::GetModuleByAddress ( uintptr_t  adr)

Definition at line 85 of file Memory.cpp.

References get_metrics::adr.

Referenced by GetCurrentModule().

Here is the caller graph for this function:

◆ GetModuleByName()

etiss::ModuleHandle etiss::GetModuleByName ( const std::string &  name = "")

Definition at line 56 of file Memory.cpp.

References NULL, and NullModuleHandle.

◆ GetModulePath()

std::string etiss::GetModulePath ( etiss::ModuleHandle  hModule)

Definition at line 92 of file Memory.cpp.

Referenced by GetCurrentModulePath().

Here is the caller graph for this function:

◆ helper_allocator_ptr_ref()

template<typename T , typename allocatorT >
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.

◆ helper_decRef()

template<typename T , typename allocatorT >
std::enable_if< std::is_base_of< etiss::RefCountedObject< allocatorT >, T >::value, bool >::type etiss::helper_decRef ( T *  ptr)
Returns
true if the object has no mor references.

Definition at line 96 of file RefCountedObject.h.

References unlikely.

◆ helper_incRef()

template<typename T , typename allocatorT >
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.

◆ incRef()

template<typename T >
void etiss::incRef ( T *  ptr)
inline
Attention
for now this function mapps directly to helper_incRef. for future more complex management scenarios this might need to change

Definition at line 130 of file RefCountedObject.h.

◆ installDir()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ jitExtHeaderPaths()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ jitExtHeaders()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ jitExtLibPaths()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ jitExtLibraries()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ jitFiles()

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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ log() [1/2]

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().

Here is the call graph for this function:

◆ log() [2/2]

template<typename T , typename... O>
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().

Here is the call graph for this function:

◆ logC()

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().

Here is the call graph for this function:

◆ operator<<()

template<typename T >
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.

Definition at line 148 of file Misc.h.

◆ parseCommands()

std::vector< std::string > etiss::parseCommands ( const std::string &  cmdline)

Definition at line 144 of file Misc.cpp.

Referenced by etiss::Configuration::Configuration().

Here is the caller graph for this function:

◆ parseName()

static void etiss::parseName ( const char *  cname,
const int  baseflags,
unsigned &  flags,
std::string &  name_ 
)
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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_lsbs()

CONSTEXPR size_t etiss::set_lsbs ( size_t  val)

◆ split() [1/4]

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.

◆ split() [2/4]

std::list<std::string> etiss::split ( const std::string &  str,
char  splitchar 
)
inline

Definition at line 184 of file Misc.h.

References split(), and get_metrics::str.

Here is the call graph for this function:

◆ split() [3/4]

std::list<std::string> etiss::split ( const std::string &  str,
const std::string &  splitstring 
)
inline

Definition at line 192 of file Misc.h.

References split(), and get_metrics::str.

Here is the call graph for this function:

◆ split() [4/4]

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().

Here is the caller graph for this function:

◆ toLogString() [1/2]

template<typename T >
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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ toLogString() [2/2]

template<typename T1 , typename T2 , typename... O>
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().

Here is the call graph for this function:

◆ toString() [1/3]

template<typename T >
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.

Parameters
valReference to the value, that shall be converted.
Returns
The string representation.

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().

Here is the caller graph for this function:

◆ toString() [2/3]

template<typename T , typename T2 , typename... O>
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().

Here is the call graph for this function:

◆ toString() [3/3]

std::string etiss::toString ( const Verbosity val)

prints string representation of verbosity level

Definition at line 70 of file Misc.cpp.

References ERROR, FATALERROR, INFO, SILENT, VERBOSE, and WARNING.

◆ verbosity()

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().

Here is the caller graph for this function:

◆ wrap()

std::shared_ptr< ETISS_System > etiss::wrap ( etiss::System sys)

Variable Documentation

◆ NullModuleHandle

const ModuleHandle etiss::NullModuleHandle = nullptr
static

Represents a null value for hl::ModuleHandle.

Definition at line 34 of file Memory.h.

Referenced by GetModuleByName().