Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
libunwind/src/UnwindRegistersRestore.S
Show First 20 Lines • Show All 654 Lines • ▼ Show 20 Lines | #else | ||||
mov lr, r0 | mov lr, r0 | ||||
@ 32bit thumb-2 restrictions for ldm: | @ 32bit thumb-2 restrictions for ldm: | ||||
@ . the sp (r13) cannot be in the list | @ . the sp (r13) cannot be in the list | ||||
@ . the pc (r15) and lr (r14) cannot both be in the list in an LDM instruction | @ . the pc (r15) and lr (r14) cannot both be in the list in an LDM instruction | ||||
ldm lr, {r0-r12} | ldm lr, {r0-r12} | ||||
ldr sp, [lr, #52] | ldr sp, [lr, #52] | ||||
ldr lr, [lr, #60] @ restore pc into lr | ldr lr, [lr, #60] @ restore pc into lr | ||||
#endif | #endif | ||||
#if defined(__ARM_FEATURE_BTI_DEFAULT) && !defined(__ARM_ARCH_ISA_ARM) | |||||
// 'bx' is not BTI setting when used with lr, therefore r12 is used instead | |||||
mov r12, lr | |||||
JMP(r12) | |||||
#else | |||||
JMP(lr) | JMP(lr) | ||||
#endif | |||||
@ | @ | ||||
@ static void libunwind::Registers_arm::restoreVFPWithFLDMD(unw_fpreg_t* values) | @ static void libunwind::Registers_arm::restoreVFPWithFLDMD(unw_fpreg_t* values) | ||||
@ | @ | ||||
@ On entry: | @ On entry: | ||||
@ values pointer is in r0 | @ values pointer is in r0 | ||||
@ | @ | ||||
.p2align 2 | .p2align 2 | ||||
▲ Show 20 Lines • Show All 496 Lines • Show Last 20 Lines |