sl.X86EmitPopReg(kEBP);
sl.X86EmitReturn(static_cast<WORD>(argState.callerArgStackSlots * sizeof(void*)));
#elif defined(_AMD64_)
- // EDX has "ilArgs" i.e., just the point where registers have been homed.
- sl.X86EmitIndexLeaRSP(kEDX, static_cast<X86Reg>(kESP_Unsafe), 8);
+ // Pass "ilArgs", i.e. just the point where registers have been homed, as 2nd arg
+ sl.X86EmitIndexLeaRSP(ARGUMENT_kREG2, static_cast<X86Reg>(kESP_Unsafe), 8);
// Allocate space for homing callee's (InterpretMethod's) arguments.
// Calling convention requires a default allocation space of 4,
#endif
{
// For a non-ILStub method, push NULL as the StubContext argument.
- sl.X86EmitZeroOutReg(kRCX);
- sl.X86EmitMovRegReg(kR8, kRCX);
+ sl.X86EmitZeroOutReg(ARGUMENT_kREG1);
+ sl.X86EmitMovRegReg(kR8, ARGUMENT_kREG1);
}
- sl.X86EmitRegLoad(kRCX, reinterpret_cast<UINT_PTR>(interpMethInfo));
+ sl.X86EmitRegLoad(ARGUMENT_kREG1, reinterpret_cast<UINT_PTR>(interpMethInfo));
sl.X86EmitCall(sl.NewExternalCodeLabel(interpretMethodFunc), 0);
sl.X86EmitAddEsp(interpMethodArgSize);
sl.X86EmitReturn(0);
// This is the argument slot that will be used to hold the return value.
ARG_SLOT retVal = 0;
-#ifndef _ARM_
+#if !defined(_ARM_) && !defined(UNIX_AMD64_ABI)
_ASSERTE (NUMBER_RETURNVALUE_SLOTS == 1);
#endif