Reference:	https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=262447
		https://github.com/libunwind/libunwind/pull/344

--- include/libunwind-aarch64.h.orig	2021-12-01 00:46:39 UTC
+++ include/libunwind-aarch64.h
@@ -226,15 +226,24 @@ typedef struct
 #else
 /* On AArch64, we can directly use ucontext_t as the unwind context.  */
 typedef ucontext_t unw_tdep_context_t;
+#if defined(__FreeBSD__)
+typedef ucontext_t unw_fpsimd_context_t;
 #endif
+#endif
 
 
 #include "libunwind-common.h"
 #include "libunwind-dynamic.h"
 
+#if defined(__FreeBSD__)
+#define UNW_BASE register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.mc_gpregs.gp_x[0];
+#else
+#define UNW_BASE register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.regs;
+#endif
+
 #define unw_tdep_getcontext(uc) ({					\
   unw_tdep_context_t *unw_ctx = (uc);					\
-  register uint64_t unw_base __asm__ ("x0") = (uint64_t) unw_ctx->uc_mcontext.regs; \
+  UNW_BASE \
   __asm__ __volatile__ (					        \
      "stp x0, x1, [%[base], #0]\n" \
      "stp x2, x3, [%[base], #16]\n" \
--- src/aarch64/Ginit.c.orig	2021-11-30 17:12:31 UTC
+++ src/aarch64/Ginit.c
@@ -47,9 +47,17 @@ static inline void *
 uc_addr (unw_tdep_context_t *uc, int reg)
 {
   if (reg >= UNW_AARCH64_X0 && reg < UNW_AARCH64_V0)
+#if defined(__FreeBSD__)
+    return &uc->uc_mcontext.mc_gpregs.gp_x[reg];
+#else
     return &uc->uc_mcontext.regs[reg];
+#endif
   else if (reg >= UNW_AARCH64_V0 && reg <= UNW_AARCH64_V31)
+#if defined(__FreeBSD__)
+    return &GET_FPCTX(uc)->uc_mcontext.mc_fpregs.fp_q[reg - UNW_AARCH64_V0];
+#else
     return &GET_FPCTX(uc)->vregs[reg - UNW_AARCH64_V0];
+#endif
   else
     return NULL;
 }
--- src/aarch64/unwind_i.h.orig	2020-04-28 15:49:14 UTC
+++ src/aarch64/unwind_i.h
@@ -59,6 +59,10 @@ extern int aarch64_local_resume (unw_addr_space_t as, 
   } while (0)
 #endif
 
+#if defined(__FreeBSD__)
+#define GET_FPCTX(uc) ((unw_tdep_context_t *)(&uc->uc_mcontext.mc_spare))
+#else
 #define GET_FPCTX(uc) ((unw_fpsimd_context_t *)(&uc->uc_mcontext.__reserved))
+#endif
 
 #endif /* unwind_i_h */
