diff options
Diffstat (limited to 'src/vppinfra/unix-formats.c')
-rw-r--r-- | src/vppinfra/unix-formats.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/vppinfra/unix-formats.c b/src/vppinfra/unix-formats.c index fb3a7286020..1a101e04aee 100644 --- a/src/vppinfra/unix-formats.c +++ b/src/vppinfra/unix-formats.c @@ -67,7 +67,9 @@ #include <linux/types.h> #include <linux/netlink.h> #endif -#endif +#elif __FreeBSD__ +#include <netlink/netlink.h> +#endif /* __linux__ */ #endif /* ! __KERNEL__ */ @@ -409,7 +411,9 @@ u8 * format_signal (u8 * s, va_list * args) _ (SIGPROF); _ (SIGWINCH); _ (SIGIO); +#ifdef __linux__ _ (SIGPWR); +#endif /* __linux */ #ifdef SIGSYS _ (SIGSYS); #endif @@ -430,12 +434,15 @@ u8 * format_ucontext_pc (u8 * s, va_list * args) uc = va_arg (*args, ucontext_t *); +#ifdef __linux__ #if defined (powerpc) regs = &uc->uc_mcontext.uc_regs->gregs[0]; #elif defined (powerpc64) regs = &uc->uc_mcontext.uc_regs->gp_regs[0]; #elif defined (i386) || defined (__x86_64__) regs = (void *) &uc->uc_mcontext.gregs[0]; +#elif defined(__aarch64__) + regs = (void *) &uc->uc_mcontext.pc; #endif #if defined (powerpc) || defined (powerpc64) @@ -444,10 +451,19 @@ u8 * format_ucontext_pc (u8 * s, va_list * args) reg_no = REG_EIP; #elif defined (__x86_64__) reg_no = REG_RIP; +#elif defined(__aarch64__) + reg_no = 0; #else reg_no = 0; regs = 0; #endif +#elif __FreeBSD__ +#if defined(__amd64__) + reg_no = 0; + regs = (void *) &uc->uc_mcontext.mc_rip; +#else +#endif /* __amd64__ */ +#endif /* __linux__ */ if (! regs) return format (s, "unsupported"); |