28 #ifndef __SIM_SYSCALL_ABI_HH__ 29 #define __SIM_SYSCALL_ABI_HH__ 42 template <
typename T,
typename Enabled=
void>
61 template <
typename T,
typename Enabled=
void>
66 std::is_integral<T>::value &&
67 (sizeof(T) < sizeof(uint64_t) ||
68 GuestABI::IsConforming<T>::value)>::type>
70 static const bool value =
false;
75 std::is_integral<T>::value &&
76 sizeof(T) == sizeof(uint64_t) &&
77 !GuestABI::IsConforming<T>::value>
::type>
79 static const bool value =
true;
96 template <
typename ABI,
typename Arg>
98 typename
std::enable_if<
99 std::is_base_of<GenericSyscallABI64, ABI>::value &&
100 std::is_integral<Arg>::value>
::type>
106 "Ran out of syscall argument registers.");
113 template <
typename ABI,
typename Arg>
115 typename
std::enable_if<!ABI::template IsWide<Arg>::value>
::type>
121 "Ran out of syscall argument registers.");
128 #endif // __SIM_SYSCALL_ABI_HH__ const std::vector< int > ArgumentRegs
virtual RegVal readIntReg(RegIndex reg_idx) const =0
Overload hash function for BasicBlockRange type.
ThreadContext is the external interface to all thread state for anything outside of the CPU...
static uint64_t mergeRegs(ThreadContext *tc, RegIndex low_idx, RegIndex high_idx)
T insertBits(T val, int first, int last, B bit_val)
Returns val with bits first to last set to the LSBs of bit_val.
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,16,32,64}_t.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
This class provides the wrapper interface for the system call implementations which are defined in th...
T bits(T val, int first, int last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it...
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...