gem5
[DEVELOP-FOR-23.0]
|
Typedefs | |
template<typename T , std::size_t count, typename Enabled = void> | |
using | Aapcs32HomogeneousAggregate = T[count] |
Functions | |
reg | as< Float > ()[0] |
tc | setReg (id, ®) |
template<typename ABI , typename Ret , bool store_ret, typename Target , typename State , typename Args , std::size_t... I> | |
static std::enable_if_t<!store_ret, Ret > | callFromHelper (Target &target, ThreadContext *tc, State &state, Args &&args, std::index_sequence< I... >) |
template<typename ABI , typename Ret , bool store_ret, typename Target , typename State , typename Args , std::size_t... I> | |
static std::enable_if_t< store_ret, Ret > | callFromHelper (Target &target, ThreadContext *tc, State &state, Args &&args, std::index_sequence< I... >) |
template<typename ABI , typename Ret , bool store_ret, typename ... Args> | |
static Ret | callFrom (ThreadContext *tc, typename ABI::State &state, std::function< Ret(ThreadContext *, Args...)> target) |
template<typename ABI , typename Ret , typename ... Args> | |
static void | dumpArgsFrom (std::ostream &os, [[maybe_unused]] ThreadContext *tc, typename ABI::State &state) |
template<typename ABI > | |
static ABI::State | initializeState (const ThreadContext *tc) |
template<typename ABI , typename Ret , typename Enabled = void> | |
static void | prepareForResult (ThreadContext *tc, typename ABI::State &state) |
template<typename ABI , typename ... Args> | |
static void | prepareForArguments ([[maybe_unused]] ThreadContext *tc, typename ABI::State &state) |
template<typename ABI , typename Ret , typename ... Args> | |
static void | prepareForFunction (ThreadContext *tc, typename ABI::State &state) |
template<typename ABI , typename Ret > | |
static void | storeResult (ThreadContext *tc, const Ret &ret, typename ABI::State &state) |
template<typename ABI , typename Arg > | |
static Arg | getArgument (ThreadContext *tc, typename ABI::State &state) |
template<typename ... Types> | |
std::ostream & | operator<< (std::ostream &os, const VarArgs< Types... > &va) |
Variables | |
template<typename T > | |
constexpr bool | IsAapcs32CompositeV = IsAapcs32Composite<T>::value |
template<typename T > | |
constexpr bool | IsAapcs32HomogeneousAggregateV |
template<typename T > | |
constexpr bool | IsAapcs64ShortVectorV = IsAapcs64ShortVector<T>::value |
template<typename T > | |
constexpr bool | IsAapcs64CompositeV = IsAapcs64Composite<T>::value |
template<typename E , size_t N> | |
struct IsAapcs64Hfa< E[N], typename std::enable_if_t< std::is_floating_point_v< E > &&N<=4 > > :public std::true_type{};template< typename T >constexpr bool IsAapcs64HfaV=IsAapcs64Hfa< T >::value;template< typename T, typename Enabled=void >struct IsAapcs64Hva :public std::false_type {};template< typename E, size_t N >struct IsAapcs64Hva< E[N], typename std::enable_if_t< IsAapcs64ShortVectorV< E > &&N<=4 > > :public std::true_type{};template< typename T >constexpr bool IsAapcs64HvaV=IsAapcs64Hva< T >::value;template< typename T, typename Enabled=void >struct IsAapcs64Hxa :public std::false_type {};template< typename T >struct IsAapcs64Hxa< T, typename std::enable_if_t< IsAapcs64HfaV< T >||IsAapcs64HvaV< T > > > :public std::true_type{};template< typename T >constexpr bool IsAapcs64HxaV=IsAapcs64Hxa< T >::value;struct Aapcs64ArgumentBase{ template< typename T > static T loadFromStack(ThreadContext *tc, Aapcs64::State &state) { size_t align=std::max< size_t >(8, alignof(T));size_t size=roundUp(sizeof(T), 8);state.nsaa=roundUp(state.nsaa, align);ConstVPtr< T > val(state.nsaa, tc);state.nsaa+=size;return gtoh(*val, ArmISA::byteOrder(tc));}};template< typename Float >struct Argument< Aapcs64, Float, typename std::enable_if_t< std::is_floating_point_v< Float >||IsAapcs64ShortVectorV< Float > > > :public Aapcs64ArgumentBase{ static Float get(ThreadContext *tc, Aapcs64::State &state) { if(state.nsrn<=state.MAX_SRN) { RegId id=ArmISA::vecRegClass[state.nsrn++];ArmISA::VecRegContainer vc;tc->getReg(id, &vc);return vc.as< Float >()[0];} return loadFromStack< Float >(tc, state);}};template< typename Float >struct Result< Aapcs64, Float, typename std::enable_if_t< std::is_floating_point_v< Float >||IsAapcs64ShortVectorV< Float > > >{ static void store(ThreadContext *tc, const Float &f) { RegId id=ArmISA::vecRegClass[0];ArmISA::VecRegContainer reg;tc-> | getReg (id, ®) |
template<typename T > | |
constexpr bool | IsVarArgsV = IsVarArgs<T>::value |
using gem5::guest_abi::Aapcs32HomogeneousAggregate = typedef T[count] |
Definition at line 100 of file aapcs32.hh.
reg gem5::guest_abi::as< Float > | ( | ) |
|
inlinestatic |
|
inlinestatic |
Definition at line 62 of file dispatch.hh.
|
inlinestatic |
Definition at line 71 of file dispatch.hh.
References state.
|
static |
Definition at line 102 of file dispatch.hh.
References gem5::X86ISA::count, gem5::X86ISA::os, and state.
Referenced by gem5::dumpSimcall().
|
static |
Definition at line 170 of file layout.hh.
References state.
Referenced by gem5::guest_abi::Argument< Aapcs32Vfp, VarArgs< Types... > >::get().
|
static |
Definition at line 71 of file layout.hh.
References gem5::guest_abi::StateInitializer< ABI, Enabled >::init().
std::ostream& gem5::guest_abi::operator<< | ( | std::ostream & | os, |
const VarArgs< Types... > & | va | ||
) |
Definition at line 183 of file varargs.hh.
References gem5::X86ISA::os.
|
inlinestatic |
Definition at line 115 of file layout.hh.
References state.
Referenced by gem5::invokeSimcall(), and prepareForFunction().
|
inlinestatic |
Definition at line 123 of file layout.hh.
References prepareForArguments(), and state.
Referenced by gem5::dumpSimcall(), and gem5::invokeSimcall().
|
inlinestatic |
Definition at line 108 of file layout.hh.
References gem5::guest_abi::Preparer< ABI, Role, Type, Enabled >::prepare(), and state.
tc gem5::guest_abi::setReg | ( | id | , |
& | reg | ||
) |
Referenced by gem5::X86ISA::Interrupts::processApicTimerEvent(), and gem5::X86ISA::Interrupts::write().
|
static |
Definition at line 163 of file layout.hh.
References state, and gem5::guest_abi::ResultStorer< ABI, Ret, Enabled >::store().
struct IsAapcs64Hfa< E[N], typename std::enable_if_t< std::is_floating_point_v< E > &&N<=4 > > : public std::true_type{};template< typename T >constexpr bool IsAapcs64HfaV=IsAapcs64Hfa< T >::value;template< typename T, typename Enabled=void >struct IsAapcs64Hva :public std::false_type {};template< typename E, size_t N >struct IsAapcs64Hva< E[N], typename std::enable_if_t< IsAapcs64ShortVectorV< E > &&N<=4 > > : public std::true_type{};template< typename T >constexpr bool IsAapcs64HvaV=IsAapcs64Hva< T >::value;template< typename T, typename Enabled=void >struct IsAapcs64Hxa :public std::false_type {};template< typename T >struct IsAapcs64Hxa< T, typename std::enable_if_t< IsAapcs64HfaV< T >||IsAapcs64HvaV< T > > > : public std::true_type{};template< typename T >constexpr bool IsAapcs64HxaV=IsAapcs64Hxa< T >::value;struct Aapcs64ArgumentBase{ template< typename T > static T loadFromStack(ThreadContext *tc, Aapcs64::State &state) { size_t align=std::max< size_t >(8, alignof(T)); size_t size=roundUp(sizeof(T), 8); state.nsaa=roundUp(state.nsaa, align); ConstVPtr< T > val(state.nsaa, tc); state.nsaa+=size; return gtoh(*val, ArmISA::byteOrder(tc)); }};template< typename Float >struct Argument< Aapcs64, Float, typename std::enable_if_t< std::is_floating_point_v< Float >||IsAapcs64ShortVectorV< Float > > > : public Aapcs64ArgumentBase{ static Float get(ThreadContext *tc, Aapcs64::State &state) { if(state.nsrn<=state.MAX_SRN) { RegId id=ArmISA::vecRegClass[state.nsrn++]; ArmISA::VecRegContainer vc; tc->getReg(id, &vc); return vc.as< Float >()[0]; } return loadFromStack< Float >(tc, state); }};template< typename Float >struct Result< Aapcs64, Float, typename std::enable_if_t< std::is_floating_point_v< Float >||IsAapcs64ShortVectorV< Float > > >{ static void store(ThreadContext *tc, const Float &f) { RegId id=ArmISA::vecRegClass[0]; ArmISA::VecRegContainer reg; tc-> gem5::guest_abi::getReg(id, ®) |
Definition at line 223 of file aapcs64.hh.
|
constexpr |
Definition at line 92 of file aapcs32.hh.
|
constexpr |
Definition at line 109 of file aapcs32.hh.
|
constexpr |
Definition at line 113 of file aapcs64.hh.
|
constexpr |
Definition at line 93 of file aapcs64.hh.
|
constexpr |
Definition at line 179 of file varargs.hh.
Referenced by TEST().