diff --git a/src/core/tls.cpp b/src/core/tls.cpp index 7256ff8c8..0c232748e 100644 --- a/src/core/tls.cpp +++ b/src/core/tls.cpp @@ -10,6 +10,8 @@ #ifdef _WIN32 #include +#elif defined(__FreeBSD__) +#include #elif defined(__APPLE__) && defined(ARCH_X86_64) #include #include @@ -168,6 +170,17 @@ Tcb* GetTcbBase() { return Libraries::Kernel::g_curthread->tcb; } +#elif defined(__FreeBSD__) +void SetTcbBase(void* image_address) { + amd64_set_gsbase(image_address); +} + +Tcb* GetTcbBase() { + void *addr = nullptr; + amd64_get_gsbase(&addr); + return static_cast(addr); +} + #else // POSIX non-x86_64