diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index deb64a1..f4dd406 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -934,7 +934,7 @@ common/linux-osdata.h gdb-dlfcn.h auto-load.h probe.h stap-probe.h \
 gdb_bfd.h sparc-ravenscar-thread.h ppc-ravenscar-thread.h common/linux-btrace.h \
 ctf.h common/i386-cpuid.h common/i386-gcc-cpuid.h target/resume.h \
 target/wait.h target/waitstatus.h nat/linux-nat.h nat/linux-waitpid.h \
-common/print-utils.h common/rsp-low.h
+common/print-utils.h common/rsp-low.h nat/i386-dregs.h
 
 # Header files that already have srcdir in them, or which are in objdir.
 
@@ -2178,6 +2178,10 @@ waitstatus.o: ${srcdir}/target/waitstatus.c
 # Need to explicitly specify the compile rule as make will do nothing
 # or try to compile the object file into the sub-directory.
 
+i386-dregs.o: ${srcdir}/nat/i386-dregs.c
+	$(COMPILE) $(srcdir)/nat/i386-dregs.c
+	$(POSTCOMPILE)
+
 linux-waitpid.o: ${srcdir}/nat/linux-waitpid.c
 	$(COMPILE) $(srcdir)/nat/linux-waitpid.c
 	$(POSTCOMPILE)
diff --git a/gdb/config/i386/cygwin.mh b/gdb/config/i386/cygwin.mh
index b704158..8ab439b 100644
--- a/gdb/config/i386/cygwin.mh
+++ b/gdb/config/i386/cygwin.mh
@@ -1,3 +1,3 @@
-MH_CFLAGS=
-NATDEPFILES= i386-nat.o windows-nat.o i386-windows-nat.o
+'MH_CFLAGS=
+NATDEPFILES= i386-nat.o i386-dregs.o windows-nat.o i386-windows-nat.o
 XM_CLIBS=
diff --git a/gdb/config/i386/cygwin64.mh b/gdb/config/i386/cygwin64.mh
index 1c21fc6..5ce3095 100644
--- a/gdb/config/i386/cygwin64.mh
+++ b/gdb/config/i386/cygwin64.mh
@@ -17,4 +17,4 @@
 #  You should have received a copy of the GNU General Public License
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
-NATDEPFILES= i386-nat.o windows-nat.o amd64-windows-nat.o
+NATDEPFILES= i386-nat.o i386-dregs.o windows-nat.o amd64-windows-nat.o
diff --git a/gdb/config/i386/darwin.mh b/gdb/config/i386/darwin.mh
index 190d56c..bd4d57e 100644
--- a/gdb/config/i386/darwin.mh
+++ b/gdb/config/i386/darwin.mh
@@ -1,4 +1,4 @@
 # Host: IA86 running Darwin
 
 NATDEPFILES = fork-child.o darwin-nat.o \
-     i386-darwin-nat.o i386-nat.o amd64-nat.o darwin-nat-info.o
+     i386-darwin-nat.o i386-nat.o i386-dregs.o amd64-nat.o darwin-nat-info.o
diff --git a/gdb/config/i386/fbsd.mh b/gdb/config/i386/fbsd.mh
index 2c9cd9a..7aa6a69 100644
--- a/gdb/config/i386/fbsd.mh
+++ b/gdb/config/i386/fbsd.mh
@@ -1,6 +1,6 @@
 # Host: FreeBSD/i386
 NATDEPFILES= fork-child.o inf-ptrace.o \
-	fbsd-nat.o i386-nat.o i386bsd-nat.o i386fbsd-nat.o \
+	fbsd-nat.o i386-nat.o i386-dregs.o i386bsd-nat.o i386fbsd-nat.o \
 	bsd-kvm.o
 NAT_FILE= nm-fbsd.h
 HAVE_NATIVE_GCORE_HOST = 1
diff --git a/gdb/config/i386/fbsd64.mh b/gdb/config/i386/fbsd64.mh
index c719a17..c37f460 100644
--- a/gdb/config/i386/fbsd64.mh
+++ b/gdb/config/i386/fbsd64.mh
@@ -1,7 +1,7 @@
 # Host: FreeBSD/amd64
 NATDEPFILES= fork-child.o inf-ptrace.o \
 	fbsd-nat.o amd64-nat.o amd64bsd-nat.o amd64fbsd-nat.o \
-	bsd-kvm.o i386-nat.o
+	bsd-kvm.o i386-nat.o i386-dregs.o
 HAVE_NATIVE_GCORE_HOST = 1
 
 LOADLIBES= -lkvm
diff --git a/gdb/config/i386/go32.mh b/gdb/config/i386/go32.mh
index 9cebf01..1b8ce86 100644
--- a/gdb/config/i386/go32.mh
+++ b/gdb/config/i386/go32.mh
@@ -3,7 +3,7 @@
 # We include several header files from config/djgpp
 MH_CFLAGS= -I$(srcdir)/config/djgpp
 
-NATDEPFILES= go32-nat.o i386-nat.o
+NATDEPFILES= go32-nat.o i386-nat.o i386-dregs.o
 
 HOST_IPC=
 CC= gcc
diff --git a/gdb/config/i386/linux.mh b/gdb/config/i386/linux.mh
index 10a2584..be18dcf 100644
--- a/gdb/config/i386/linux.mh
+++ b/gdb/config/i386/linux.mh
@@ -2,7 +2,7 @@
 
 NAT_FILE= config/nm-linux.h
 NATDEPFILES= inf-ptrace.o fork-child.o \
-	i386-nat.o i386-linux-nat.o \
+	i386-nat.o i386-dregs.o i386-linux-nat.o \
 	proc-service.o linux-thread-db.o \
 	linux-nat.o linux-osdata.o linux-fork.o linux-procfs.o linux-ptrace.o \
 	linux-btrace.o linux-waitpid.o
diff --git a/gdb/config/i386/linux64.mh b/gdb/config/i386/linux64.mh
index 686c363..3126b75 100644
--- a/gdb/config/i386/linux64.mh
+++ b/gdb/config/i386/linux64.mh
@@ -1,6 +1,6 @@
 # Host: GNU/Linux x86-64
 NATDEPFILES= inf-ptrace.o fork-child.o \
-	i386-nat.o amd64-nat.o amd64-linux-nat.o \
+	i386-nat.o i386-dregs.o amd64-nat.o amd64-linux-nat.o \
 	linux-nat.o linux-osdata.o \
 	proc-service.o linux-thread-db.o linux-fork.o \
 	linux-procfs.o linux-ptrace.o linux-btrace.o \
diff --git a/gdb/config/i386/mingw.mh b/gdb/config/i386/mingw.mh
index b704158..07f06f2 100644
--- a/gdb/config/i386/mingw.mh
+++ b/gdb/config/i386/mingw.mh
@@ -1,3 +1,3 @@
 MH_CFLAGS=
-NATDEPFILES= i386-nat.o windows-nat.o i386-windows-nat.o
+NATDEPFILES= i386-nat.o i386-dregs.o windows-nat.o i386-windows-nat.o
 XM_CLIBS=
diff --git a/gdb/config/i386/mingw64.mh b/gdb/config/i386/mingw64.mh
index ba6fd9f..740f508 100644
--- a/gdb/config/i386/mingw64.mh
+++ b/gdb/config/i386/mingw64.mh
@@ -1 +1 @@
-NATDEPFILES= i386-nat.o windows-nat.o amd64-windows-nat.o
+NATDEPFILES= i386-nat.o i386-dregs.o windows-nat.o amd64-windows-nat.o
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index cbf36ab..76d8965 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -551,6 +551,10 @@ mips-linux-watch.o: ../common/mips-linux-watch.c
 
 # Native object files rules from ../nat
 
+i386-dregs.o: ../nat/i386-dregs.c
+	$(COMPILE) $<
+	$(POSTCOMPILE)
+
 linux-waitpid.o: ../nat/linux-waitpid.c
 	$(COMPILE) $<
 	$(POSTCOMPILE)
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 097c7b4..8ff9c28 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -99,7 +99,7 @@ case "${target}" in
 			srv_linux_thread_db=yes
 			;;
   i[34567]86-*-cygwin*)	srv_regobj="$srv_i386_regobj"
-			srv_tgtobj="i386-low.o win32-low.o win32-i386-low.o"
+			srv_tgtobj="i386-low.o i386-dregs.o win32-low.o win32-i386-low.o"
 			srv_xmlfiles="$srv_i386_xmlfiles"
 			;;
   i[34567]86-*-linux*)	srv_regobj="$srv_i386_linux_regobj"
@@ -108,7 +108,7 @@ case "${target}" in
 			    srv_regobj="$srv_regobj $srv_amd64_linux_regobj"
 			    srv_xmlfiles="${srv_xmlfiles} $srv_amd64_linux_xmlfiles"
 			fi
-			srv_tgtobj="$srv_linux_obj linux-x86-low.o i386-low.o i387-fp.o"
+			srv_tgtobj="$srv_linux_obj linux-x86-low.o i386-low.o i386-dregs.o i387-fp.o"
 			srv_tgtobj="${srv_tgtobj} linux-btrace.o"
 			srv_linux_usrregs=yes
 			srv_linux_regsets=yes
@@ -125,7 +125,7 @@ case "${target}" in
 			;;
   i[34567]86-*-mingw32ce*)
 			srv_regobj="$srv_i386_regobj"
-			srv_tgtobj="i386-low.o win32-low.o win32-i386-low.o"
+			srv_tgtobj="i386-low.o i386-dregs.o win32-low.o win32-i386-low.o"
 			srv_tgtobj="${srv_tgtobj} wincecompat.o"
 			srv_xmlfiles="$srv_i386_xmlfiles"
 			# hostio_last_error implementation is in win32-low.c
@@ -134,7 +134,7 @@ case "${target}" in
 			srv_mingwce=yes
 			;;
   i[34567]86-*-mingw*)	srv_regobj="$srv_i386_regobj"
-			srv_tgtobj="i386-low.o win32-low.o win32-i386-low.o"
+			srv_tgtobj="i386-low.o i386-dregs.o win32-low.o win32-i386-low.o"
 			srv_xmlfiles="$srv_i386_xmlfiles"
 			srv_mingw=yes
 			;;
@@ -315,7 +315,7 @@ case "${target}" in
 			srv_linux_thread_db=yes
 			;;
   x86_64-*-linux*)	srv_regobj="$srv_amd64_linux_regobj $srv_i386_linux_regobj"
-			srv_tgtobj="$srv_linux_obj linux-x86-low.o i386-low.o i387-fp.o"
+			srv_tgtobj="$srv_linux_obj linux-x86-low.o i386-low.o i386-dregs.o i387-fp.o"
 			srv_tgtobj="${srv_tgtobj} linux-btrace.o"
 			srv_xmlfiles="$srv_i386_linux_xmlfiles $srv_amd64_linux_xmlfiles"
 			srv_linux_usrregs=yes # This is for i386 progs.
@@ -325,12 +325,12 @@ case "${target}" in
 			ipa_obj="${ipa_amd64_linux_regobj} linux-amd64-ipa.o"
 			;;
   x86_64-*-mingw*)	srv_regobj="$srv_amd64_regobj"
-			srv_tgtobj="i386-low.o i387-fp.o win32-low.o win32-i386-low.o"
+			srv_tgtobj="i386-low.o i386-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
 			srv_xmlfiles="$srv_i386_xmlfiles $srv_amd64_xmlfiles"
 			srv_mingw=yes
 			;;
   x86_64-*-cygwin*)	srv_regobj="$srv_amd64_regobj"
-			srv_tgtobj="i386-low.o i387-fp.o win32-low.o win32-i386-low.o"
+			srv_tgtobj="i386-low.o i386-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
 			srv_xmlfiles="$srv_i386_xmlfiles"
 			;;
 
