diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index af4284d2f90..8c31c8134fe 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2017-09-04  Yao Qi  <yao.qi@linaro.org>
+
+	* amd64-fbsd-nat.c (amd64fbsd_read_description): Call
+	i386_target_description.
+	* i386-fbsd-nat.c (i386fbsd_read_description): Call
+	i386_target_description.
+	* i386-tdep.c (i386_gdbarch_init): Likewise.
+
 2017-09-04  Yao Qi  <yao.qi@linaro.org>
 
 	* amd64-darwin-tdep.c: Include "x86-xstate.h".
diff --git a/gdb/amd64-fbsd-nat.c b/gdb/amd64-fbsd-nat.c
index f3ddbdd3d92..a22b82bb1b5 100644
--- a/gdb/amd64-fbsd-nat.c
+++ b/gdb/amd64-fbsd-nat.c
@@ -181,7 +181,7 @@ amd64fbsd_read_description (struct target_ops *ops)
   if (is64)
     return amd64_target_description (X86_XSTATE_SSE_MASK);
   else
-    return tdesc_i386;
+    return i386_target_description (X86_XSTATE_SSE_MASK);
 }
 
 /* Provide a prototype to silence -Wmissing-prototypes.  */
diff --git a/gdb/i386-fbsd-nat.c b/gdb/i386-fbsd-nat.c
index dca6c0162b1..ab671efe7a9 100644
--- a/gdb/i386-fbsd-nat.c
+++ b/gdb/i386-fbsd-nat.c
@@ -139,12 +139,10 @@ i386fbsd_read_description (struct target_ops *ops)
       xsave_probed = 1;
     }
 
-  if (x86bsd_xsave_len != 0)
-    {
-      return i386_target_description (xcr0);
-    }
-  else
-    return tdesc_i386;
+  if (x86bsd_xsave_len == 0)
+    xcr0 = X86_XSTATE_SSE_MASK;
+
+  return i386_target_description (xcr0);
 }
 #endif
 
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index b1e5afd5537..9d0dd3d5da5 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -8549,7 +8549,7 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   /* Get the x86 target description from INFO.  */
   tdesc = info.target_desc;
   if (! tdesc_has_registers (tdesc))
-    tdesc = tdesc_i386;
+    tdesc = i386_target_description (X86_XSTATE_SSE_MASK);
   tdep->tdesc = tdesc;
 
   tdep->num_core_regs = I386_NUM_GREGS + I387_NUM_REGS;