diff --git a/gdb/features/aarch64-core.c b/gdb/features/aarch64-core.c
index a080a641c4..f929b2cbf9 100644
--- a/gdb/features/aarch64-core.c
+++ b/gdb/features/aarch64-core.c
@@ -30,39 +30,39 @@ create_feature_aarch64_core (struct target_desc *result, long regnum)
   tdesc_add_flag (type_with_fields, 30, "Z");
   tdesc_add_flag (type_with_fields, 31, "N");
 
-  tdesc_create_reg (feature, "x0", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x1", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x2", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x3", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x4", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x5", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x6", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x7", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x8", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x9", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x10", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x11", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x12", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x13", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x14", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x15", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x16", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x17", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x18", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x19", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x20", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x21", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x22", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x23", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x24", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x25", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x26", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x27", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x28", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x29", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "x30", regnum++, 1, NULL, 64, "int");
-  tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 64, "data_ptr");
-  tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 64, "code_ptr");
-  tdesc_create_reg (feature, "cpsr", regnum++, 1, NULL, 32, "cpsr_flags");
+  tdesc_create_reg (feature, "x0", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x1", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x2", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x3", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x4", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x5", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x6", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x7", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x8", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x9", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x10", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x11", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x12", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x13", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x14", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x15", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x16", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x17", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x18", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x19", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x20", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x21", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x22", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x23", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x24", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x25", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x26", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x27", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x28", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x29", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "x30", regnum++, 1, "general", 64, "int");
+  tdesc_create_reg (feature, "sp", regnum++, 1, "general", 64, "data_ptr");
+  tdesc_create_reg (feature, "pc", regnum++, 1, "general", 64, "code_ptr");
+  tdesc_create_reg (feature, "cpsr", regnum++, 1, "general", 32, "cpsr_flags");
   return regnum;
 }
diff --git a/gdb/features/aarch64-core.xml b/gdb/features/aarch64-core.xml
index ee6a3a6dfa..2f66088c6d 100644
--- a/gdb/features/aarch64-core.xml
+++ b/gdb/features/aarch64-core.xml
@@ -8,40 +8,40 @@
 
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.aarch64.core">
-  <reg name="x0" bitsize="64"/>
-  <reg name="x1" bitsize="64"/>
-  <reg name="x2" bitsize="64"/>
-  <reg name="x3" bitsize="64"/>
-  <reg name="x4" bitsize="64"/>
-  <reg name="x5" bitsize="64"/>
-  <reg name="x6" bitsize="64"/>
-  <reg name="x7" bitsize="64"/>
-  <reg name="x8" bitsize="64"/>
-  <reg name="x9" bitsize="64"/>
-  <reg name="x10" bitsize="64"/>
-  <reg name="x11" bitsize="64"/>
-  <reg name="x12" bitsize="64"/>
-  <reg name="x13" bitsize="64"/>
-  <reg name="x14" bitsize="64"/>
-  <reg name="x15" bitsize="64"/>
-  <reg name="x16" bitsize="64"/>
-  <reg name="x17" bitsize="64"/>
-  <reg name="x18" bitsize="64"/>
-  <reg name="x19" bitsize="64"/>
-  <reg name="x20" bitsize="64"/>
-  <reg name="x21" bitsize="64"/>
-  <reg name="x22" bitsize="64"/>
-  <reg name="x23" bitsize="64"/>
-  <reg name="x24" bitsize="64"/>
-  <reg name="x25" bitsize="64"/>
-  <reg name="x26" bitsize="64"/>
-  <reg name="x27" bitsize="64"/>
-  <reg name="x28" bitsize="64"/>
-  <reg name="x29" bitsize="64"/>
-  <reg name="x30" bitsize="64"/>
-  <reg name="sp" bitsize="64" type="data_ptr"/>
+  <reg name="x0" bitsize="64" group="general"/>
+  <reg name="x1" bitsize="64" group="general"/>
+  <reg name="x2" bitsize="64" group="general"/>
+  <reg name="x3" bitsize="64" group="general"/>
+  <reg name="x4" bitsize="64" group="general"/>
+  <reg name="x5" bitsize="64" group="general"/>
+  <reg name="x6" bitsize="64" group="general"/>
+  <reg name="x7" bitsize="64" group="general"/>
+  <reg name="x8" bitsize="64" group="general"/>
+  <reg name="x9" bitsize="64" group="general"/>
+  <reg name="x10" bitsize="64" group="general"/>
+  <reg name="x11" bitsize="64" group="general"/>
+  <reg name="x12" bitsize="64" group="general"/>
+  <reg name="x13" bitsize="64" group="general"/>
+  <reg name="x14" bitsize="64" group="general"/>
+  <reg name="x15" bitsize="64" group="general"/>
+  <reg name="x16" bitsize="64" group="general"/>
+  <reg name="x17" bitsize="64" group="general"/>
+  <reg name="x18" bitsize="64" group="general"/>
+  <reg name="x19" bitsize="64" group="general"/>
+  <reg name="x20" bitsize="64" group="general"/>
+  <reg name="x21" bitsize="64" group="general"/>
+  <reg name="x22" bitsize="64" group="general"/>
+  <reg name="x23" bitsize="64" group="general"/>
+  <reg name="x24" bitsize="64" group="general"/>
+  <reg name="x25" bitsize="64" group="general"/>
+  <reg name="x26" bitsize="64" group="general"/>
+  <reg name="x27" bitsize="64" group="general"/>
+  <reg name="x28" bitsize="64" group="general"/>
+  <reg name="x29" bitsize="64" group="general"/>
+  <reg name="x30" bitsize="64" group="general"/>
+  <reg name="sp" bitsize="64" type="data_ptr" group="general"/>
 
-  <reg name="pc" bitsize="64" type="code_ptr"/>
+  <reg name="pc" bitsize="64" type="code_ptr" group="general"/>
 
   <flags id="cpsr_flags" size="4">
     <!-- Stack Pointer.  -->
@@ -86,6 +86,6 @@
     <!-- Negative Condition flag.  -->
     <field name="N" start="31" end="31"/>
   </flags>
-  <reg name="cpsr" bitsize="32" type="cpsr_flags"/>
+  <reg name="cpsr" bitsize="32" type="cpsr_flags" group="general"/>
 
 </feature>
diff --git a/gdb/features/arm/arm-core.c b/gdb/features/arm/arm-core.c
index e401411fc5..4519752975 100644
--- a/gdb/features/arm/arm-core.c
+++ b/gdb/features/arm/arm-core.c
@@ -9,23 +9,23 @@ create_feature_arm_arm_core (struct target_desc *result, long regnum)
   struct tdesc_feature *feature;
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.arm.core");
-  tdesc_create_reg (feature, "r0", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r1", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r2", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r3", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r4", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r5", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r6", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r7", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r8", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r9", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r10", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r11", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "r12", regnum++, 1, NULL, 32, "uint32");
-  tdesc_create_reg (feature, "sp", regnum++, 1, NULL, 32, "data_ptr");
-  tdesc_create_reg (feature, "lr", regnum++, 1, NULL, 32, "int");
-  tdesc_create_reg (feature, "pc", regnum++, 1, NULL, 32, "code_ptr");
+  tdesc_create_reg (feature, "r0", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r1", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r2", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r3", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r4", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r5", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r6", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r7", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r8", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r9", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r10", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r11", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "r12", regnum++, 1, "general", 32, "uint32");
+  tdesc_create_reg (feature, "sp", regnum++, 1, "general", 32, "data_ptr");
+  tdesc_create_reg (feature, "lr", regnum++, 1, "general", 32, "int");
+  tdesc_create_reg (feature, "pc", regnum++, 1, "general", 32, "code_ptr");
   regnum = 25;
-  tdesc_create_reg (feature, "cpsr", regnum++, 1, NULL, 32, "int");
+  tdesc_create_reg (feature, "cpsr", regnum++, 1, "general", 32, "int");
   return regnum;
 }
diff --git a/gdb/features/arm/arm-core.xml b/gdb/features/arm/arm-core.xml
index 144fc4638a..d506004fe1 100644
--- a/gdb/features/arm/arm-core.xml
+++ b/gdb/features/arm/arm-core.xml
@@ -7,25 +7,25 @@
 
 <!DOCTYPE feature SYSTEM "gdb-target.dtd">
 <feature name="org.gnu.gdb.arm.core">
-  <reg name="r0" bitsize="32" type="uint32"/>
-  <reg name="r1" bitsize="32" type="uint32"/>
-  <reg name="r2" bitsize="32" type="uint32"/>
-  <reg name="r3" bitsize="32" type="uint32"/>
-  <reg name="r4" bitsize="32" type="uint32"/>
-  <reg name="r5" bitsize="32" type="uint32"/>
-  <reg name="r6" bitsize="32" type="uint32"/>
-  <reg name="r7" bitsize="32" type="uint32"/>
-  <reg name="r8" bitsize="32" type="uint32"/>
-  <reg name="r9" bitsize="32" type="uint32"/>
-  <reg name="r10" bitsize="32" type="uint32"/>
-  <reg name="r11" bitsize="32" type="uint32"/>
-  <reg name="r12" bitsize="32" type="uint32"/>
-  <reg name="sp" bitsize="32" type="data_ptr"/>
-  <reg name="lr" bitsize="32"/>
-  <reg name="pc" bitsize="32" type="code_ptr"/>
+  <reg name="r0" bitsize="32" type="uint32" group="general"/>
+  <reg name="r1" bitsize="32" type="uint32" group="general"/>
+  <reg name="r2" bitsize="32" type="uint32" group="general"/>
+  <reg name="r3" bitsize="32" type="uint32" group="general"/>
+  <reg name="r4" bitsize="32" type="uint32" group="general"/>
+  <reg name="r5" bitsize="32" type="uint32" group="general"/>
+  <reg name="r6" bitsize="32" type="uint32" group="general"/>
+  <reg name="r7" bitsize="32" type="uint32" group="general"/>
+  <reg name="r8" bitsize="32" type="uint32" group="general"/>
+  <reg name="r9" bitsize="32" type="uint32" group="general"/>
+  <reg name="r10" bitsize="32" type="uint32" group="general"/>
+  <reg name="r11" bitsize="32" type="uint32" group="general"/>
+  <reg name="r12" bitsize="32" type="uint32" group="general"/>
+  <reg name="sp" bitsize="32" type="data_ptr" group="general"/>
+  <reg name="lr" bitsize="32" group="general"/>
+  <reg name="pc" bitsize="32" type="code_ptr"/ group="general">
 
   <!-- The CPSR is register 25, rather than register 16, because
        the FPA registers historically were placed between the PC
        and the CPSR in the "g" packet.  -->
-  <reg name="cpsr" bitsize="32" regnum="25"/>
+  <reg name="cpsr" bitsize="32" regnum="25" group="general"/>
 </feature>
