tcg/i386: Add setup_guest_base_seg for FreeBSD
authorRichard Henderson <richard.henderson@linaro.org>
Mon, 3 Dec 2018 15:25:10 +0000 (09:25 -0600)
committerRichard Henderson <richard.henderson@linaro.org>
Mon, 17 Dec 2018 03:04:44 +0000 (06:04 +0300)
Reviewed-by: Emilio G. Cota <cota@braap.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
tcg/i386/tcg-target.inc.c

index 3fb2f4b971c0ea29d63f5038a5d9e79592fcfc0a..c21c3272f2a6b3fafc4184c97a82c69392b47fbd 100644 (file)
@@ -1876,6 +1876,15 @@ static inline int setup_guest_base_seg(void)
     }
     return 0;
 }
+# elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
+#  include <machine/sysarch.h>
+static inline int setup_guest_base_seg(void)
+{
+    if (sysarch(AMD64_SET_GSBASE, &guest_base) == 0) {
+        return P_GS;
+    }
+    return 0;
+}
 # else
 static inline int setup_guest_base_seg(void)
 {