Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/unwind.c
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | unwind_frame(struct thread *td, struct unwind_state *frame) | ||||
fp = frame->fp; | fp = frame->fp; | ||||
if (!kstack_contains(td, fp, sizeof(uintptr_t) * 2)) | if (!kstack_contains(td, fp, sizeof(uintptr_t) * 2)) | ||||
return (false); | return (false); | ||||
/* FP to previous frame (X29) */ | /* FP to previous frame (X29) */ | ||||
frame->fp = ((uintptr_t *)fp)[0]; | frame->fp = ((uintptr_t *)fp)[0]; | ||||
/* LR (X30) */ | /* LR (X30) */ | ||||
frame->pc = ((uintptr_t *)fp)[1] - 4; | frame->pc = ADDR_MAKE_CANONICAL(((uintptr_t *)fp)[1] - 4); | ||||
return (true); | return (true); | ||||
} | } |