s390: Fix lay overflow when too many arguments on stack
R=bjaideep@ca.ibm.com, joransiu@ca.ibm.com Bug: Change-Id: Ia9fa7785b0f508775f38547e56f07bc7ef9ee03d Reviewed-on: https://chromium-review.googlesource.com/557928 Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Reviewed-by: Jaideep Bajwa <bjaideep@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#47055}
This commit is contained in:
parent
788d828948
commit
04ac652862
@ -951,8 +951,13 @@ int TurboAssembler::LeaveFrame(StackFrame::Type type, int stack_adjustment) {
|
||||
// Drop the execution stack down to the frame pointer and restore
|
||||
// the caller frame pointer, return address and constant pool pointer.
|
||||
LoadP(r14, MemOperand(fp, StandardFrameConstants::kCallerPCOffset));
|
||||
lay(r1, MemOperand(
|
||||
fp, StandardFrameConstants::kCallerSPOffset + stack_adjustment));
|
||||
if (is_int20(StandardFrameConstants::kCallerSPOffset + stack_adjustment)) {
|
||||
lay(r1, MemOperand(fp, StandardFrameConstants::kCallerSPOffset +
|
||||
stack_adjustment));
|
||||
} else {
|
||||
AddP(r1, fp,
|
||||
Operand(StandardFrameConstants::kCallerSPOffset + stack_adjustment));
|
||||
}
|
||||
LoadP(fp, MemOperand(fp, StandardFrameConstants::kCallerFPOffset));
|
||||
LoadRR(sp, r1);
|
||||
int frame_ends = pc_offset();
|
||||
|
Loading…
Reference in New Issue
Block a user