diff --git a/src/arch/x86/linux/linux.hh b/src/arch/x86/linux/linux.hh index 11979cebc6..7fb362784f 100644 --- a/src/arch/x86/linux/linux.hh +++ b/src/arch/x86/linux/linux.hh @@ -40,6 +40,8 @@ #include "arch/x86/utility.hh" #include "kern/linux/linux.hh" +#include "sim/guest_abi.hh" +#include "sim/syscall_return.hh" class X86Linux : public Linux { @@ -62,6 +64,27 @@ class X86Linux : public Linux if (stack) ctc->setIntReg(X86ISA::StackPointerReg, stack); } + + class SyscallABI + { + }; +}; + +namespace GuestABI +{ + +template +struct Result::value>::type> +{ + static void + store(ThreadContext *tc, const SyscallReturn &ret) + { + tc->setIntReg(ABI::ReturnValueReg, ret.encodedValue()); + } +}; + }; class X86Linux64 : public X86Linux