Index: sys/arm/arm/trap-v6.c =================================================================== --- sys/arm/arm/trap-v6.c +++ sys/arm/arm/trap-v6.c @@ -28,6 +28,7 @@ */ #include "opt_ktrace.h" +#include "opt_compat.h" #include __FBSDID("$FreeBSD$"); @@ -58,6 +59,10 @@ #include #include +#ifdef COMPAT_LINUX +#include +#endif + #ifdef KDB #include #include @@ -501,6 +506,15 @@ abort_fatal(tf, idx, fsr, far, prefetch, td, &ksig); return; } +#ifdef COMPAT_LINUX + else { + if (far == LINUX_GETTLS_HELPER) { + tf->tf_r0 = linux_get_tls(td); + tf->tf_pc = tf->tf_r14; + goto out; + } + } +#endif /* COMPAT_LINUX */ ksig.sig = SIGSEGV; ksig.code = (rv == KERN_PROTECTION_FAILURE) ? SEGV_ACCERR : SEGV_MAPERR;