[^:]*:[0-9]+: Error: selected processor does not support system register name 'scxtnum_el3'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'scxtnum_el12'
 [^:]*:[0-9]+: Error: selected processor does not support system register name 'id_pfr2_el1'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tco'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tco'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsre0_el1'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsr_el1'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsr_el2'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsr_el3'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsr_el12'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'rgsr_el1'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'gcr_el1'
+[^:]*:[0-9]+: Error: selected processor does not support PSTATE field name 'tco'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tco'
+[^:]*:[0-9]+: Error: selected processor does not support PSTATE field name 'tco'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tco'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsre0_el1'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsr_el1'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsr_el2'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsr_el3'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'tfsr_el12'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'rgsr_el1'
+[^:]*:[0-9]+: Error: selected processor does not support system register name 'gcr_el1'
+[^:]*:[0-9]+: Error: selected processor does not support PSTATE field name 'tco'
 
 #source: sysreg-4.s
-#as: -march=armv8.5-a+rng
+#as: -march=armv8.5-a+rng+memtag
 #objdump: -dr
 
 .*:     file format .*
 .*:    d53ed0e7        mrs     x7, scxtnum_el3
 .*:    d53dd0e7        mrs     x7, scxtnum_el12
 .*:    d5380388        mrs     x8, id_pfr2_el1
+.*:    d53b42e1        mrs     x1, tco
+.*:    d53b42e2        mrs     x2, tco
+.*:    d5386621        mrs     x1, tfsre0_el1
+.*:    d5386501        mrs     x1, tfsr_el1
+.*:    d53c6502        mrs     x2, tfsr_el2
+.*:    d53e6603        mrs     x3, tfsr_el3
+.*:    d53d660c        mrs     x12, tfsr_el12
+.*:    d53810a1        mrs     x1, rgsr_el1
+.*:    d53810c3        mrs     x3, gcr_el1
+.*:    d51b42e1        msr     tco, x1
+.*:    d51b42e2        msr     tco, x2
+.*:    d5186621        msr     tfsre0_el1, x1
+.*:    d5186501        msr     tfsr_el1, x1
+.*:    d51c6502        msr     tfsr_el2, x2
+.*:    d51e6603        msr     tfsr_el3, x3
+.*:    d51d660c        msr     tfsr_el12, x12
+.*:    d51810a1        msr     rgsr_el1, x1
+.*:    d51810c3        msr     gcr_el1, x3
+.*:    d503489f        msr     tco, #0x8
 
   { "contextidr_el12", CPENC (3, 5, C13, C0, 1), F_ARCHEXT },
   { "rndr",            CPENC(3,3,C2,C4,0), F_ARCHEXT | F_REG_READ }, /* RO */
   { "rndrrs",          CPENC(3,3,C2,C4,1), F_ARCHEXT | F_REG_READ }, /* RO */
+  { "tco",             CPENC(3,3,C4,C2,7), F_ARCHEXT },
+  { "tfsre0_el1",      CPENC(3,0,C6,C6,1), F_ARCHEXT },
+  { "tfsr_el1",                CPENC(3,0,C6,C5,0), F_ARCHEXT },
+  { "tfsr_el2",                CPENC(3,4,C6,C5,0), F_ARCHEXT },
+  { "tfsr_el3",                CPENC(3,6,C6,C6,0), F_ARCHEXT },
+  { "tfsr_el12",       CPENC(3,5,C6,C6,0), F_ARCHEXT },
+  { "rgsr_el1",                CPENC(3,0,C1,C0,5), F_ARCHEXT },
+  { "gcr_el1",         CPENC(3,0,C1,C0,6), F_ARCHEXT },
   { "tpidr_el0",        CPENC(3,3,C13,C0,2),   0 },
   { "tpidrro_el0",      CPENC(3,3,C13,C0,3),   0 }, /* RW */
   { "tpidr_el1",        CPENC(3,0,C13,C0,4),   0 },
           && AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_5)))
     return FALSE;
 
+  /* System Registers in ARMv8.5-A with AARCH64_FEATURE_MEMTAG.  */
+  if ((reg->value == CPENC (3, 3, C4, C2, 7)
+       || reg->value == CPENC (3, 0, C6, C6, 1)
+       || reg->value == CPENC (3, 0, C6, C5, 0)
+       || reg->value == CPENC (3, 4, C6, C5, 0)
+       || reg->value == CPENC (3, 6, C6, C6, 0)
+       || reg->value == CPENC (3, 5, C6, C6, 0)
+       || reg->value == CPENC (3, 0, C1, C0, 5)
+       || reg->value == CPENC (3, 0, C1, C0, 6))
+      && !(AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_MEMTAG)))
+    return FALSE;
+
   return TRUE;
 }
 
   { "uao",             0x03,   F_ARCHEXT },
   { "ssbs",            0x19,   F_ARCHEXT },
   { "dit",             0x1a,   F_ARCHEXT },
+  { "tco",             0x1c,   F_ARCHEXT },
   { 0,          CPENC(0,0,0,0,0), 0 },
 };
 
       && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_V8_4))
     return FALSE;
 
+  /* TCO.  Values are from aarch64_pstatefields.  */
+  if (reg->value == 0x1c
+      && !AARCH64_CPU_HAS_FEATURE (features, AARCH64_FEATURE_MEMTAG))
+    return FALSE;
+
   return TRUE;
 }