gem5 v24.0.0.0
Loading...
Searching...
No Matches
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
 
using Dispatcher
 
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
Initial value:
std::function<RetErrno(Semihosting *sh, ThreadContext *tc)>
std::pair< uint64_t, SemiErrno > RetErrno
Bitfield< 8, 7 > sh

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
Initial value:
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.

◆ call64

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

Definition at line 442 of file semihosting.hh.

◆ dump32

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

Definition at line 445 of file semihosting.hh.

◆ dump64

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

Definition at line 446 of file semihosting.hh.

◆ 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 Tue Jun 18 2024 16:24:10 for gem5 by doxygen 1.11.0