Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/unwind.c
Show All 39 Lines | |||||
{ | { | ||||
uintptr_t fp; | uintptr_t fp; | ||||
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); | ||||
frame->sp = fp + sizeof(uintptr_t) * 2; | |||||
/* 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 = ((uintptr_t *)fp)[1] - 4; | ||||
return (true); | return (true); | ||||
} | } |