gem5  v21.2.0.0
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
gem5::ArmSemihosting::SemiCall Struct Reference

Semihosting call information structure. More...

Public Types

template<typename ... Args>
using Implementation = RetErrno(ArmSemihosting::*)(ThreadContext *tc, Args... args)
 
using Dispatcher = std::function< RetErrno(ArmSemihosting *sh, ThreadContext *tc)>
 
using Dumper = std::function< std::string(ThreadContext *tc)>
 

Public Member Functions

template<typename ... Args>
 SemiCall (const char *_name, Implementation< Args... > common)
 
template<typename ... Args32, typename ... Args64>
 SemiCall (const char *_name, Implementation< Args32... > impl32, Implementation< Args64... > impl64)
 

Static Public Member Functions

template<typename ... Args>
static std::function< RetErrno(ThreadContext *tc, Args... args)> wrapImpl (ArmSemihosting *sh, Implementation< Args... > impl)
 
template<typename Abi , typename ... Args>
static Dispatcher buildDispatcher (Implementation< Args... > impl)
 
template<typename Abi , typename ... Args>
static Dumper buildDumper (const char *name, Implementation< Args... > impl)
 

Public Attributes

const char * name
 Call name. More...
 
Dispatcher call32
 
Dispatcher call64
 
Dumper dump32
 
Dumper dump64
 

Detailed Description

Semihosting call information structure.

This structure describes how a semi-hosting call is implemented. It contains debug information (e.g., the name of the call), and a way to invoke it in a particular context.

Definition at line 455 of file semihosting.hh.

Member Typedef Documentation

◆ Dispatcher

Definition at line 479 of file semihosting.hh.

◆ Dumper

using gem5::ArmSemihosting::SemiCall::Dumper = std::function<std::string(ThreadContext *tc)>

Definition at line 480 of file semihosting.hh.

◆ Implementation

template<typename ... Args>
using gem5::ArmSemihosting::SemiCall::Implementation = RetErrno (ArmSemihosting::*)(ThreadContext *tc, Args... args)

Definition at line 463 of file semihosting.hh.

Constructor & Destructor Documentation

◆ SemiCall() [1/2]

template<typename ... Args>
gem5::ArmSemihosting::SemiCall::SemiCall ( const char *  _name,
Implementation< Args... >  common 
)
inline

Definition at line 515 of file semihosting.hh.

◆ SemiCall() [2/2]

template<typename ... Args32, typename ... Args64>
gem5::ArmSemihosting::SemiCall::SemiCall ( const char *  _name,
Implementation< Args32... >  impl32,
Implementation< Args64... >  impl64 
)
inline

Definition at line 524 of file semihosting.hh.

Member Function Documentation

◆ buildDispatcher()

template<typename Abi , typename ... Args>
static Dispatcher gem5::ArmSemihosting::SemiCall::buildDispatcher ( Implementation< Args... >  impl)
inlinestatic

Definition at line 493 of file semihosting.hh.

References gem5::MipsISA::impl, gem5::ArmISA::sh, and wrapImpl().

◆ buildDumper()

template<typename Abi , typename ... Args>
static Dumper gem5::ArmSemihosting::SemiCall::buildDumper ( const char *  name,
Implementation< Args... >  impl 
)
inlinestatic

Definition at line 505 of file semihosting.hh.

References gem5::dumpSimcall(), and name.

◆ wrapImpl()

template<typename ... Args>
static std::function<RetErrno(ThreadContext *tc, Args... args)> gem5::ArmSemihosting::SemiCall::wrapImpl ( ArmSemihosting sh,
Implementation< Args... >  impl 
)
inlinestatic

Definition at line 469 of file semihosting.hh.

References gem5::MipsISA::impl, and gem5::ArmISA::sh.

Referenced by buildDispatcher().

Member Data Documentation

◆ call32

Dispatcher gem5::ArmSemihosting::SemiCall::call32

Definition at line 483 of file semihosting.hh.

Referenced by gem5::ArmSemihosting::call32().

◆ call64

Dispatcher gem5::ArmSemihosting::SemiCall::call64

Definition at line 484 of file semihosting.hh.

Referenced by gem5::ArmSemihosting::call64().

◆ dump32

Dumper gem5::ArmSemihosting::SemiCall::dump32

Definition at line 487 of file semihosting.hh.

Referenced by gem5::ArmSemihosting::call32().

◆ dump64

Dumper gem5::ArmSemihosting::SemiCall::dump64

Definition at line 488 of file semihosting.hh.

Referenced by gem5::ArmSemihosting::call64().

◆ name

const char* gem5::ArmSemihosting::SemiCall::name

Call name.

Definition at line 458 of file semihosting.hh.

Referenced by buildDumper().


The documentation for this struct was generated from the following file:

Generated on Tue Dec 21 2021 11:34:55 for gem5 by doxygen 1.8.17