gem5 v24.1.0.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 > Struct Template Reference

Semihosting call information structure. More...

#include <semihosting.hh>

Public Types

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

Public Member Functions

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

Static Public Member Functions

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

Public Attributes

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

Detailed Description

template<typename Semihosting, typename Abi32, typename Abi64>
struct gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >

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 413 of file semihosting.hh.

Member Typedef Documentation

◆ Dispatcher

template<typename Semihosting , typename Abi32 , typename Abi64 >
using gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::Dispatcher = std::function<RetErrno(Semihosting *sh, ThreadContext *tc)>

Definition at line 436 of file semihosting.hh.

◆ Dumper

template<typename Semihosting , typename Abi32 , typename Abi64 >
using gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::Dumper = std::function<std::string(ThreadContext *tc)>

Definition at line 438 of file semihosting.hh.

◆ Implementation

template<typename Semihosting , typename Abi32 , typename Abi64 >
template<typename Impl , typename... Args>
using gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::Implementation = RetErrno (Impl::*)( ThreadContext *tc, Args... args)

Definition at line 420 of file semihosting.hh.

Constructor & Destructor Documentation

◆ SemiCallBase() [1/2]

template<typename Semihosting , typename Abi32 , typename Abi64 >
template<typename SemiImpl , typename... Args>
gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::SemiCallBase ( const char *  _name,
Implementation< SemiImpl, Args... >  common 
)
inline

Definition at line 473 of file semihosting.hh.

◆ SemiCallBase() [2/2]

template<typename Semihosting , typename Abi32 , typename Abi64 >
template<typename SemiImpl , typename... Args32, typename... Args64>
gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::SemiCallBase ( const char *  _name,
Implementation< SemiImpl, Args32... >  impl32,
Implementation< SemiImpl, Args64... >  impl64 
)
inline

Definition at line 483 of file semihosting.hh.

Member Function Documentation

◆ buildDispatcher()

template<typename Semihosting , typename Abi32 , typename Abi64 >
template<typename Abi , typename SemiImpl , typename... Args>
static Dispatcher gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::buildDispatcher ( Implementation< SemiImpl, Args... >  impl)
inlinestatic

◆ buildDumper()

template<typename Semihosting , typename Abi32 , typename Abi64 >
template<typename Abi , typename SemiImpl , typename... Args>
static Dumper gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::buildDumper ( const char *  name,
Implementation< SemiImpl, Args... >  impl 
)
inlinestatic

◆ wrapImpl()

template<typename Semihosting , typename Abi32 , typename Abi64 >
template<typename SemiImpl , typename... Args>
static std::function< RetErrno(ThreadContext *tc, Args... args)> gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::wrapImpl ( SemiImpl *  sh,
Implementation< SemiImpl, Args... >  impl 
)
inlinestatic

Member Data Documentation

◆ call32

template<typename Semihosting , typename Abi32 , typename Abi64 >
Dispatcher gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::call32

Definition at line 441 of file semihosting.hh.

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

◆ call64

template<typename Semihosting , typename Abi32 , typename Abi64 >
Dispatcher gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::call64

Definition at line 442 of file semihosting.hh.

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

◆ dump32

template<typename Semihosting , typename Abi32 , typename Abi64 >
Dumper gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::dump32

Definition at line 445 of file semihosting.hh.

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

◆ dump64

template<typename Semihosting , typename Abi32 , typename Abi64 >
Dumper gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::dump64

Definition at line 446 of file semihosting.hh.

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

◆ name

template<typename Semihosting , typename Abi32 , typename Abi64 >
const char* gem5::BaseSemihosting::SemiCallBase< Semihosting, Abi32, Abi64 >::name

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

Generated on Mon Jan 13 2025 04:28:49 for gem5 by doxygen 1.9.8