|
|
@ -47,6 +47,8 @@ void ABI_PushRegistersAndAdjustStack(BlockOfCode& code, const size_t frame_size, |
|
|
const size_t num_xmms = (ABI_ALL_XMMS & regs).count(); |
|
|
const size_t num_xmms = (ABI_ALL_XMMS & regs).count(); |
|
|
const FrameInfo frame_info = CalculateFrameInfo(num_gprs, num_xmms, frame_size); |
|
|
const FrameInfo frame_info = CalculateFrameInfo(num_gprs, num_xmms, frame_size); |
|
|
|
|
|
|
|
|
|
|
|
code.push(rbp); |
|
|
|
|
|
code.mov(rbp, rsp); |
|
|
for (size_t i = 0; i < regs.size(); ++i) |
|
|
for (size_t i = 0; i < regs.size(); ++i) |
|
|
if (regs[i] && HostLocIsGPR(HostLoc(i))) |
|
|
if (regs[i] && HostLocIsGPR(HostLoc(i))) |
|
|
code.push(HostLocToReg64(HostLoc(i))); |
|
|
code.push(HostLocToReg64(HostLoc(i))); |
|
|
@ -87,6 +89,7 @@ void ABI_PopRegistersAndAdjustStack(BlockOfCode& code, const size_t frame_size, |
|
|
for (int32_t i = regs.size() - 1; i >= 0; --i) |
|
|
for (int32_t i = regs.size() - 1; i >= 0; --i) |
|
|
if (regs[i] && HostLocIsGPR(HostLoc(i))) |
|
|
if (regs[i] && HostLocIsGPR(HostLoc(i))) |
|
|
code.pop(HostLocToReg64(HostLoc(i))); |
|
|
code.pop(HostLocToReg64(HostLoc(i))); |
|
|
|
|
|
code.pop(rbp); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void ABI_PushCalleeSaveRegistersAndAdjustStack(BlockOfCode& code, const std::size_t frame_size) { |
|
|
void ABI_PushCalleeSaveRegistersAndAdjustStack(BlockOfCode& code, const std::size_t frame_size) { |
|
|
|