diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index a07d93b..4211cd5 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -60,13 +60,13 @@
 #include "record-full.h"
 #include <algorithm>
 
-#include "features/arm-with-m.c"
-#include "features/arm-with-m-fpa-layout.c"
-#include "features/arm-with-m-vfp-d16.c"
-#include "features/arm-with-iwmmxt.c"
-#include "features/arm-with-vfpv2.c"
-#include "features/arm-with-vfpv3.c"
-#include "features/arm-with-neon.c"
+#include "features/arm/arm-with-m.c"
+#include "features/arm/arm-with-m-fpa-layout.c"
+#include "features/arm/arm-with-m-vfp-d16.c"
+#include "features/arm/arm-with-iwmmxt.c"
+#include "features/arm/arm-with-vfpv2.c"
+#include "features/arm/arm-with-vfpv3.c"
+#include "features/arm/arm-with-neon.c"
 
 static int arm_debug;
 
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 4efb1a5..f24b13e 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -44,7 +44,8 @@
 #   make GDB=/path/to/gdb XMLTOC="xml files" cfiles
 
 WHICH = aarch64 \
-	arm-with-iwmmxt arm-with-vfpv2 arm-with-vfpv3 arm-with-neon \
+	arm/arm-with-iwmmxt arm/arm-with-vfpv2 arm/arm-with-vfpv3 \
+	arm/arm-with-neon \
 	i386/i386 i386/i386-linux \
 	i386/i386-mmx i386/i386-mmx-linux \
 	i386/amd64 i386/amd64-linux \
@@ -150,13 +151,13 @@ XMLTOC = \
 	aarch64.xml \
 	arc-v2.xml \
 	arc-arcompact.xml \
-	arm-with-iwmmxt.xml \
-	arm-with-m-fpa-layout.xml \
-	arm-with-m-vfp-d16.xml \
-	arm-with-m.xml \
-	arm-with-neon.xml \
-	arm-with-vfpv2.xml \
-	arm-with-vfpv3.xml \
+	arm/arm-with-iwmmxt.xml \
+	arm/arm-with-m-fpa-layout.xml \
+	arm/arm-with-m-vfp-d16.xml \
+	arm/arm-with-m.xml \
+	arm/arm-with-neon.xml \
+	arm/arm-with-vfpv2.xml \
+	arm/arm-with-vfpv3.xml \
 	i386/amd64-avx-linux.xml \
 	i386/amd64-avx.xml \
 	i386/amd64-avx512-linux.xml \
@@ -270,7 +271,7 @@ cfiles: $(CFILES)
 	sh ../../move-if-change $@.tmp $@
 
 # Other dependencies.
-$(outdir)/arm-with-iwmmxt.dat: arm-core.xml xscale-iwmmxt.xml
+$(outdir)/arm/arm-with-iwmmxt.dat: arm/arm-core.xml arm/xscale-iwmmxt.xml
 $(outdir)/i386/i386.dat: i386/32bit-core.xml i386/32bit-sse.xml
 $(outdir)/i386/i386-linux.dat: i386/32bit-core.xml i386/32bit-sse.xml \
 			       i386/32bit-linux.xml
diff --git a/gdb/features/arm-core.xml b/gdb/features/arm/arm-core.xml
similarity index 100%
rename from gdb/features/arm-core.xml
rename to gdb/features/arm/arm-core.xml
diff --git a/gdb/features/arm-fpa.xml b/gdb/features/arm/arm-fpa.xml
similarity index 100%
rename from gdb/features/arm-fpa.xml
rename to gdb/features/arm/arm-fpa.xml
diff --git a/gdb/features/arm-m-profile.xml b/gdb/features/arm/arm-m-profile.xml
similarity index 100%
rename from gdb/features/arm-m-profile.xml
rename to gdb/features/arm/arm-m-profile.xml
diff --git a/gdb/features/arm-vfpv2.xml b/gdb/features/arm/arm-vfpv2.xml
similarity index 100%
rename from gdb/features/arm-vfpv2.xml
rename to gdb/features/arm/arm-vfpv2.xml
diff --git a/gdb/features/arm-vfpv3.xml b/gdb/features/arm/arm-vfpv3.xml
similarity index 100%
rename from gdb/features/arm-vfpv3.xml
rename to gdb/features/arm/arm-vfpv3.xml
diff --git a/gdb/features/arm-with-iwmmxt.c b/gdb/features/arm/arm-with-iwmmxt.c
similarity index 100%
rename from gdb/features/arm-with-iwmmxt.c
rename to gdb/features/arm/arm-with-iwmmxt.c
diff --git a/gdb/features/arm-with-iwmmxt.xml b/gdb/features/arm/arm-with-iwmmxt.xml
similarity index 100%
rename from gdb/features/arm-with-iwmmxt.xml
rename to gdb/features/arm/arm-with-iwmmxt.xml
diff --git a/gdb/features/arm-with-m-fpa-layout.c b/gdb/features/arm/arm-with-m-fpa-layout.c
similarity index 100%
rename from gdb/features/arm-with-m-fpa-layout.c
rename to gdb/features/arm/arm-with-m-fpa-layout.c
diff --git a/gdb/features/arm-with-m-fpa-layout.xml b/gdb/features/arm/arm-with-m-fpa-layout.xml
similarity index 100%
rename from gdb/features/arm-with-m-fpa-layout.xml
rename to gdb/features/arm/arm-with-m-fpa-layout.xml
diff --git a/gdb/features/arm-with-m-vfp-d16.c b/gdb/features/arm/arm-with-m-vfp-d16.c
similarity index 100%
rename from gdb/features/arm-with-m-vfp-d16.c
rename to gdb/features/arm/arm-with-m-vfp-d16.c
diff --git a/gdb/features/arm-with-m-vfp-d16.xml b/gdb/features/arm/arm-with-m-vfp-d16.xml
similarity index 100%
rename from gdb/features/arm-with-m-vfp-d16.xml
rename to gdb/features/arm/arm-with-m-vfp-d16.xml
diff --git a/gdb/features/arm-with-m.c b/gdb/features/arm/arm-with-m.c
similarity index 100%
rename from gdb/features/arm-with-m.c
rename to gdb/features/arm/arm-with-m.c
diff --git a/gdb/features/arm-with-m.xml b/gdb/features/arm/arm-with-m.xml
similarity index 100%
rename from gdb/features/arm-with-m.xml
rename to gdb/features/arm/arm-with-m.xml
diff --git a/gdb/features/arm-with-neon.c b/gdb/features/arm/arm-with-neon.c
similarity index 100%
rename from gdb/features/arm-with-neon.c
rename to gdb/features/arm/arm-with-neon.c
diff --git a/gdb/features/arm-with-neon.xml b/gdb/features/arm/arm-with-neon.xml
similarity index 100%
rename from gdb/features/arm-with-neon.xml
rename to gdb/features/arm/arm-with-neon.xml
diff --git a/gdb/features/arm-with-vfpv2.c b/gdb/features/arm/arm-with-vfpv2.c
similarity index 100%
rename from gdb/features/arm-with-vfpv2.c
rename to gdb/features/arm/arm-with-vfpv2.c
diff --git a/gdb/features/arm-with-vfpv2.xml b/gdb/features/arm/arm-with-vfpv2.xml
similarity index 100%
rename from gdb/features/arm-with-vfpv2.xml
rename to gdb/features/arm/arm-with-vfpv2.xml
diff --git a/gdb/features/arm-with-vfpv3.c b/gdb/features/arm/arm-with-vfpv3.c
similarity index 100%
rename from gdb/features/arm-with-vfpv3.c
rename to gdb/features/arm/arm-with-vfpv3.c
diff --git a/gdb/features/arm-with-vfpv3.xml b/gdb/features/arm/arm-with-vfpv3.xml
similarity index 100%
rename from gdb/features/arm-with-vfpv3.xml
rename to gdb/features/arm/arm-with-vfpv3.xml
diff --git a/gdb/features/xscale-iwmmxt.xml b/gdb/features/arm/xscale-iwmmxt.xml
similarity index 100%
rename from gdb/features/xscale-iwmmxt.xml
rename to gdb/features/arm/xscale-iwmmxt.xml
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 6d5abd3..0db5287 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -801,14 +801,14 @@ aarch64.c : $(srcdir)/../regformats/aarch64.dat $(regdat_sh)
 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/aarch64.dat aarch64.c
 reg-arm.c : $(srcdir)/../regformats/reg-arm.dat $(regdat_sh)
 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-arm.dat reg-arm.c
-arm-with-iwmmxt.c : $(srcdir)/../regformats/arm-with-iwmmxt.dat $(regdat_sh)
-	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm-with-iwmmxt.dat arm-with-iwmmxt.c
-arm-with-vfpv2.c : $(srcdir)/../regformats/arm-with-vfpv2.dat $(regdat_sh)
-	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm-with-vfpv2.dat arm-with-vfpv2.c
-arm-with-vfpv3.c : $(srcdir)/../regformats/arm-with-vfpv3.dat $(regdat_sh)
-	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm-with-vfpv3.dat arm-with-vfpv3.c
-arm-with-neon.c : $(srcdir)/../regformats/arm-with-neon.dat $(regdat_sh)
-	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm-with-neon.dat arm-with-neon.c
+arm-with-iwmmxt.c : $(srcdir)/../regformats/arm/arm-with-iwmmxt.dat $(regdat_sh)
+	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm/arm-with-iwmmxt.dat arm-with-iwmmxt.c
+arm-with-vfpv2.c : $(srcdir)/../regformats/arm/arm-with-vfpv2.dat $(regdat_sh)
+	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm/arm-with-vfpv2.dat arm-with-vfpv2.c
+arm-with-vfpv3.c : $(srcdir)/../regformats/arm/arm-with-vfpv3.dat $(regdat_sh)
+	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm/arm-with-vfpv3.dat arm-with-vfpv3.c
+arm-with-neon.c : $(srcdir)/../regformats/arm/arm-with-neon.dat $(regdat_sh)
+	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/arm/arm-with-neon.dat arm-with-neon.c
 reg-bfin.c : $(srcdir)/../regformats/reg-bfin.dat $(regdat_sh)
 	$(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-bfin.dat reg-bfin.c
 reg-cris.c : $(srcdir)/../regformats/reg-cris.dat $(regdat_sh)
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 39e8392..e8712e6 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -76,14 +76,14 @@ case "${target}" in
 			srv_tgtobj="${srv_tgtobj} arm.o"
 			srv_tgtobj="${srv_tgtobj} arm-linux.o"
 			srv_tgtobj="${srv_tgtobj} arm-get-next-pcs.o"
-			srv_xmlfiles="arm-with-iwmmxt.xml"
-			srv_xmlfiles="${srv_xmlfiles} arm-with-vfpv2.xml"
-			srv_xmlfiles="${srv_xmlfiles} arm-with-vfpv3.xml"
-			srv_xmlfiles="${srv_xmlfiles} arm-with-neon.xml"
-			srv_xmlfiles="${srv_xmlfiles} arm-core.xml"
-			srv_xmlfiles="${srv_xmlfiles} xscale-iwmmxt.xml"
-			srv_xmlfiles="${srv_xmlfiles} arm-vfpv2.xml"
-			srv_xmlfiles="${srv_xmlfiles} arm-vfpv3.xml"
+			srv_xmlfiles="arm/arm-with-iwmmxt.xml"
+			srv_xmlfiles="${srv_xmlfiles} arm/arm-with-vfpv2.xml"
+			srv_xmlfiles="${srv_xmlfiles} arm/arm-with-vfpv3.xml"
+			srv_xmlfiles="${srv_xmlfiles} arm/arm-with-neon.xml"
+			srv_xmlfiles="${srv_xmlfiles} arm/arm-core.xml"
+			srv_xmlfiles="${srv_xmlfiles} arm/xscale-iwmmxt.xml"
+			srv_xmlfiles="${srv_xmlfiles} arm/arm-vfpv2.xml"
+			srv_xmlfiles="${srv_xmlfiles} arm/arm-vfpv3.xml"
 			srv_linux_usrregs=yes
 			srv_linux_regsets=yes
 			srv_linux_thread_db=yes
diff --git a/gdb/regformats/arm-with-iwmmxt.dat b/gdb/regformats/arm/arm-with-iwmmxt.dat
similarity index 91%
rename from gdb/regformats/arm-with-iwmmxt.dat
rename to gdb/regformats/arm/arm-with-iwmmxt.dat
index 4b4679b..f529c2c 100644
--- a/gdb/regformats/arm-with-iwmmxt.dat
+++ b/gdb/regformats/arm/arm-with-iwmmxt.dat
@@ -1,5 +1,5 @@
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: arm-with-iwmmxt.xml
+# Generated from: arm/arm-with-iwmmxt.xml
 name:arm_with_iwmmxt
 xmltarget:arm-with-iwmmxt.xml
 expedite:r11,sp,pc
diff --git a/gdb/regformats/arm-with-neon.dat b/gdb/regformats/arm/arm-with-neon.dat
similarity index 92%
rename from gdb/regformats/arm-with-neon.dat
rename to gdb/regformats/arm/arm-with-neon.dat
index ee0ec58..2e6cb85 100644
--- a/gdb/regformats/arm-with-neon.dat
+++ b/gdb/regformats/arm/arm-with-neon.dat
@@ -1,5 +1,5 @@
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: arm-with-neon.xml
+# Generated from: arm/arm-with-neon.xml
 name:arm_with_neon
 xmltarget:arm-with-neon.xml
 expedite:r11,sp,pc
diff --git a/gdb/regformats/arm-with-vfpv2.dat b/gdb/regformats/arm/arm-with-vfpv2.dat
similarity index 90%
rename from gdb/regformats/arm-with-vfpv2.dat
rename to gdb/regformats/arm/arm-with-vfpv2.dat
index 9486c19..aa71f85 100644
--- a/gdb/regformats/arm-with-vfpv2.dat
+++ b/gdb/regformats/arm/arm-with-vfpv2.dat
@@ -1,5 +1,5 @@
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: arm-with-vfpv2.xml
+# Generated from: arm/arm-with-vfpv2.xml
 name:arm_with_vfpv2
 xmltarget:arm-with-vfpv2.xml
 expedite:r11,sp,pc
diff --git a/gdb/regformats/arm-with-vfpv3.dat b/gdb/regformats/arm/arm-with-vfpv3.dat
similarity index 92%
rename from gdb/regformats/arm-with-vfpv3.dat
rename to gdb/regformats/arm/arm-with-vfpv3.dat
index 236da09..6fec4fd 100644
--- a/gdb/regformats/arm-with-vfpv3.dat
+++ b/gdb/regformats/arm/arm-with-vfpv3.dat
@@ -1,5 +1,5 @@
 # THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:
-# Generated from: arm-with-vfpv3.xml
+# Generated from: arm/arm-with-vfpv3.xml
 name:arm_with_vfpv3
 xmltarget:arm-with-vfpv3.xml
 expedite:r11,sp,pc
