gem5 v25.0.0.1
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
ThreadContext is the external interface to all thread state for anything outside of the CPU.
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.

References gem5::Named::_name, buildDispatcher(), buildDumper(), call32, call64, dump32, dump64, and name.

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

References gem5::Named::_name, buildDispatcher(), buildDumper(), call32, call64, dump32, dump64, and name.

Member Function Documentation

◆ buildDispatcher()

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

Definition at line 451 of file semihosting.hh.

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

Referenced by SemiCallBase(), and SemiCallBase().

◆ buildDumper()

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

Definition at line 463 of file semihosting.hh.

References gem5::dumpSimcall(), gem5::MipsISA::impl, and name.

Referenced by SemiCallBase(), and SemiCallBase().

◆ wrapImpl()

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

Definition at line 427 of file semihosting.hh.

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

Referenced by buildDispatcher().

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 SemiCallBase(), and SemiCallBase().

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

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

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

◆ name

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

Call name.

Definition at line 416 of file semihosting.hh.

Referenced by buildDumper(), SemiCallBase(), and SemiCallBase().


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

Generated on Sat Oct 18 2025 08:06:49 for gem5 by doxygen 1.14.0