- if (have_ptrace_xmmregs != 0 &&
- ptrace(PT_GETXMMREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) xmmregs, 0) == 0)
+ 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_supply_xsave (regcache, -1, xstateregs);
+ 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)