Skip to content

Commit 7060c62

Browse files
authored
Fix the unwind opcode for new registers (#112799)
1 parent 4112020 commit 7060c62

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/coreclr/jit/unwindamd64.cpp

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,30 @@ short Compiler::mapRegNumToDwarfReg(regNumber reg)
7171
case REG_R15:
7272
dwarfReg = 15;
7373
break;
74+
case REG_R16:
75+
dwarfReg = 16;
76+
break;
77+
case REG_R17:
78+
dwarfReg = 17;
79+
break;
80+
case REG_R18:
81+
dwarfReg = 18;
82+
break;
83+
case REG_R19:
84+
dwarfReg = 19;
85+
break;
86+
case REG_R20:
87+
dwarfReg = 20;
88+
break;
89+
case REG_R21:
90+
dwarfReg = 21;
91+
break;
92+
case REG_R22:
93+
dwarfReg = 22;
94+
break;
95+
case REG_R23:
96+
dwarfReg = 23;
97+
break;
7498
default:
7599
noway_assert(!"unexpected REG_NUM");
76100
}
@@ -399,7 +423,7 @@ void Compiler::unwindSaveRegWindows(regNumber reg, unsigned offset)
399423
code = (UNWIND_CODE*)&func->unwindCodes[func->unwindCodeSlot -= sizeof(UNWIND_CODE)];
400424
code->UnwindOp = (genIsValidFloatReg(reg)) ? UWOP_SAVE_XMM128_FAR : UWOP_SAVE_NONVOL_FAR;
401425
}
402-
code->OpInfo = (BYTE)reg;
426+
code->OpInfo = (BYTE)(genIsValidFloatReg(reg) ? reg - XMMBASE : reg);
403427
unsigned int cbProlog = unwindGetCurrentOffset(func);
404428
noway_assert((BYTE)cbProlog == cbProlog);
405429
code->CodeOffset = (BYTE)cbProlog;

0 commit comments

Comments
 (0)