X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/cd303963aec7291de8aabf9aa04d1423fe7dcac4..818bad9b1b5e68bdd26595a0ec5f513fe56ba174:/base/regdump.h diff --git a/base/regdump.h b/base/regdump.h index e0568202..3a6d59cb 100644 --- a/base/regdump.h +++ b/base/regdump.h @@ -612,6 +612,8 @@ DO16(REGDEF_NEONQ) sub r13, r13, #REGDUMP_GPSIZE // Save flags and general-purpose registers. + mrs r14, cpsr + str r14, [r13, #4*REGIX_CPSR] str r12, [r13, #4*12] bl regdump_gpsave @@ -772,8 +774,15 @@ DO32(REGDEF_FP) // Make space for the register save area. sub sp, sp, #REGDUMP_GPSIZE - // Save flags and general-purpose registers. - stp x16, x17, [sp, #8*16] + // Save flags and general-purpose registers. The PLT linkage code + // makes free with x8--x17, so we must save those here. + mrs x30, nzcv + str x30, [sp, #8*REGIX_NZCV] + stp x8, x9, [sp, #64] + stp x10, x11, [sp, #80] + stp x12, x13, [sp, #96] + stp x14, x15, [sp, #112] + stp x16, x17, [sp, #128] bl regdump_gpsave // Make space for the extended registers.