28#ifndef __SIM_GUEST_ABI_HH__
29#define __SIM_GUEST_ABI_HH__
48template <
typename ABI,
bool store_ret,
typename Ret,
typename ...Args>
55 auto state = guest_abi::initializeState<ABI>(tc);
61template <
typename ABI,
typename Ret,
typename ...Args>
66 return invokeSimcall<ABI, true>(tc, target);
69template <
typename ABI,
bool store_ret,
typename Ret,
typename ...Args>
73 return invokeSimcall<ABI, store_ret>(
77template <
typename ABI,
typename Ret,
typename ...Args>
81 return invokeSimcall<ABI, true>(tc, target);
84template <
typename ABI,
typename ...Args>
91 auto state = guest_abi::initializeState<ABI>(tc);
96template <
typename ABI,
typename ...Args>
109template <
typename ABI,
typename Ret,
typename ...Args>
115 auto state = guest_abi::initializeState<ABI>(tc);
116 std::ostringstream
ss;
124template <
typename ABI,
typename Ret,
typename ...Args>
129 return dumpSimcall<ABI>(
ThreadContext is the external interface to all thread state for anything outside of the CPU.
static void prepareForFunction(ThreadContext *tc, typename ABI::State &state)
static void dumpArgsFrom(std::ostream &os, ThreadContext *tc, typename ABI::State &state)
static Ret callFrom(ThreadContext *tc, typename ABI::State &state, std::function< Ret(ThreadContext *, Args...)> target)
static void prepareForArguments(ThreadContext *tc, typename ABI::State &state)
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
std::string dumpSimcall(std::string name, ThreadContext *tc, std::function< Ret(ThreadContext *, Args...)> target=std::function< Ret(ThreadContext *, Args...)>())
Ret invokeSimcall(ThreadContext *tc, std::function< Ret(ThreadContext *, Args...)> target)
const std::string & name()