gem5
v21.1.0.0
|
Typedefs | |
template<typename T , std::size_t count, typename Enabled = void> | |
using | Aapcs32HomogeneousAggregate = T[count] |
Functions | |
reg | as< Float > ()[0] |
tc | setVecReg (id, reg) |
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, GEM5_VAR_USED 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 (GEM5_VAR_USED 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 E , size_t N> | |
struct IsAapcs64Hfa< E[N], typename std::enable_if_t< std::is_floating_point< E >::value &&N<=4 > > :public std::true_type{};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< IsAapcs64ShortVector< E >::value &&N<=4 > > :public std::true_type{};template< typename T, typename Enabled=void >struct IsAapcs64Hxa :public std::false_type {};template< typename T >struct IsAapcs64Hxa< T, typename std::enable_if_t< IsAapcs64Hfa< T >::value||IsAapcs64Hva< T >::value > > :public std::true_type{};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< Float >::value||IsAapcs64ShortVector< Float >::value > > :public Aapcs64ArgumentBase{ static Float get(ThreadContext *tc, Aapcs64::State &state) { if(state.nsrn<=state.MAX_SRN) { RegId id(VecRegClass, state.nsrn++);return tc->readVecReg(id).as< Float >()[0];} return loadFromStack< Float >(tc, state);}};template< typename Float >struct Result< Aapcs64, Float, typename std::enable_if_t< std::is_floating_point< Float >::value||IsAapcs64ShortVector< Float >::value > >{ static void store(ThreadContext *tc, const Float &f) { RegId id(VecRegClass, 0);auto reg=tc-> | readVecReg (id) |
using gem5::guest_abi::Aapcs32HomogeneousAggregate = typedef T[count] |
Definition at line 96 of file aapcs32.hh.
reg gem5::guest_abi::as< Float > | ( | ) |
|
inlinestatic |
Definition at line 82 of file dispatch.hh.
Referenced by gem5::invokeSimcall().
|
inlinestatic |
Definition at line 63 of file dispatch.hh.
|
inlinestatic |
Definition at line 72 of file dispatch.hh.
|
static |
Definition at line 103 of file dispatch.hh.
References gem5::X86ISA::count, and gem5::X86ISA::os.
Referenced by gem5::dumpSimcall().
|
static |
Definition at line 170 of file layout.hh.
Referenced by gem5::guest_abi::Argument< Aapcs32Vfp, VarArgs< Types... > >::get().
|
static |
Definition at line 72 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 181 of file varargs.hh.
References gem5::X86ISA::os.
|
inlinestatic |
Definition at line 116 of file layout.hh.
Referenced by gem5::invokeSimcall(), and prepareForFunction().
|
inlinestatic |
Definition at line 124 of file layout.hh.
References prepareForArguments().
Referenced by gem5::dumpSimcall(), and gem5::invokeSimcall().
|
inlinestatic |
Definition at line 109 of file layout.hh.
References gem5::guest_abi::Preparer< ABI, Role, Type, Enabled >::prepare().
tc gem5::guest_abi::setVecReg | ( | id | , |
reg | |||
) |
|
static |
Definition at line 163 of file layout.hh.
References gem5::guest_abi::ResultStorer< ABI, Ret, Enabled >::store().
struct IsAapcs64Hfa< E[N], typename std::enable_if_t< std::is_floating_point< E >::value &&N<=4 > > : public std::true_type{};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< IsAapcs64ShortVector< E >::value &&N<=4 > > : public std::true_type{};template< typename T, typename Enabled=void >struct IsAapcs64Hxa :public std::false_type {};template< typename T >struct IsAapcs64Hxa< T, typename std::enable_if_t< IsAapcs64Hfa< T >::value||IsAapcs64Hva< T >::value > > : public std::true_type{};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< Float >::value|| IsAapcs64ShortVector< Float >::value > > : public Aapcs64ArgumentBase{ static Float get(ThreadContext *tc, Aapcs64::State &state) { if(state.nsrn<=state.MAX_SRN) { RegId id(VecRegClass, state.nsrn++); return tc->readVecReg(id).as< Float >()[0]; } return loadFromStack< Float >(tc, state); }};template< typename Float >struct Result< Aapcs64, Float, typename std::enable_if_t< std::is_floating_point< Float >::value|| IsAapcs64ShortVector< Float >::value > >{ static void store(ThreadContext *tc, const Float &f) { RegId id(VecRegClass, 0); auto reg=tc-> gem5::guest_abi::readVecReg(id) |
Definition at line 209 of file aapcs64.hh.