+ struct fpreg fpregs;
+#ifdef HAVE_PT_GETXMMREGS
+ char xmmregs[512];
+#endif
+
+#ifdef PT_GETXSTATE_INFO
+ if (i386bsd_xsave_len != 0)
+ {
+ char *xstateregs;
+
+ xstateregs = alloca (i386bsd_xsave_len);
+ if (ptrace (PT_GETXSTATE, get_ptrace_pid (inferior_ptid),
+ (PTRACE_TYPE_ARG3) xstateregs, 0) == -1)
+ perror_with_name (_("Couldn't get extended state status"));
+
+ i387_collect_xsave (regcache, -1, xstateregs, 0);
+
+ if (ptrace (PT_SETXSTATE, get_ptrace_pid (inferior_ptid),
+ (PTRACE_TYPE_ARG3) xstateregs, i386bsd_xsave_len) == -1)
+ perror_with_name (_("Couldn't write extended state status"));
+ return;
+ }
+#endif
+
+#ifdef HAVE_PT_GETXMMREGS
+ if (have_ptrace_xmmregs != 0
+ && ptrace(PT_GETXMMREGS, get_ptrace_pid (inferior_ptid),
+ (PTRACE_TYPE_ARG3) xmmregs, 0) == 0)
+ {
+ have_ptrace_xmmregs = 1;