In gen_vla_sp_restore, use X30 rather than get_reg.

master
Edmund Grimley Evans 2016-10-10 20:15:57 +01:00
parent 94d8d12c26
commit 7dddd65b46
1 changed files with 4 additions and 1 deletions

View File

@ -1826,7 +1826,10 @@ ST_FUNC void gen_vla_sp_save(int addr) {
}
ST_FUNC void gen_vla_sp_restore(int addr) {
uint32_t r = intr(get_reg(RC_INT));
// Use x30 because this function can be called when there
// is a live return value in x0 but there is nothing on
// the value stack to prevent get_reg from returning x0.
uint32_t r = 30;
arm64_ldrx(0, 3, r, 29, addr);
o(0x9100001f | r << 5); // mov sp,x(r)
}