Skip to content

Commit dddba03

Browse files
WalterBrightthewilsonator
authored andcommitted
fix stack offset for saved registers
1 parent a476e91 commit dddba03

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

  • compiler/src/dmd/backend/arm

compiler/src/dmd/backend/arm/cod3.d

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -370,8 +370,8 @@ void prolog_saveregs(ref CGstate cg, ref CodeBuilder cdb, regm_t topush, int cfa
370370
// Save to preallocated section in the stack frame
371371
int xmmtopush = 0;
372372
int gptopush = popcnt(topush); // general purpose registers to save
373-
targ_size_t gpoffset = cg.pushoff + cg.BPoff;
374-
gpoffset += localsize;
373+
//targ_size_t gpoffset = cg.pushoff + cg.BPoff + localsize;
374+
targ_size_t gpoffset = 8 + 8; // skip over x29,x30
375375
reg_t fp; // frame pointer
376376
if (!cg.hasframe || cg.enforcealign)
377377
{
@@ -422,8 +422,8 @@ private void epilog_restoreregs(ref CGstate cg, ref CodeBuilder cdb, regm_t topo
422422
// Save to preallocated section in the stack frame
423423
int xmmtopop = popcnt(topop & XMMREGS); // XMM regs take 16 bytes
424424
int gptopop = popcnt(topop); // general purpose registers to save
425-
targ_size_t gpoffset = cg.pushoff + cg.BPoff;
426-
gpoffset += localsize;
425+
//targ_size_t gpoffset = cg.pushoff + cg.BPoff + localsize;
426+
targ_size_t gpoffset = 8 + 8; // skip over x29,x30
427427

428428
reg_t fp;
429429
if (!cg.hasframe || cg.enforcealign)

0 commit comments

Comments
 (0)