2424from ..core import exceptions
2525from ..core .target import Target
2626from ..core .memory_map import MemoryType
27- from ..coresight .core_ids import CortexMExtension
27+ from ..coresight .core_ids import ( CoreArchitecture , CortexMExtension )
2828from . import signals
2929
3030LOG = logging .getLogger (__name__ )
@@ -312,6 +312,29 @@ def _define_vfp_types(self, xml_feature):
312312 ElementTree .SubElement (fpscr , "field" , name = "IOC" , start = "0" , end = "0" , type = "bool" )
313313
314314 def _build_target_xml (self ):
315+ xml_root = ElementTree .Element ('target' )
316+
317+ # Add architecture element.
318+ architecture = 'arm'
319+ arch = self ._context .core .architecture
320+ if arch == CoreArchitecture .ARMv6M :
321+ architecture = 'armv6s-m'
322+ elif arch == CoreArchitecture .ARMv7M :
323+ if (CortexMExtension .DSP in self ._context .core .extensions ):
324+ architecture = 'armv7e-m'
325+ else :
326+ # gdb does not recognize 'armv7-m', use 'armv7e-m' instead.
327+ # architecture = 'armv7-m'
328+ architecture = 'armv7e-m'
329+ elif arch == CoreArchitecture .ARMv8M_BASE :
330+ architecture = 'armv8-m.base'
331+ elif arch == CoreArchitecture .ARMv8M_MAIN :
332+ if self ._context .core .architecture_version == (8 , 1 ):
333+ architecture = 'armv8.1-m.main'
334+ else :
335+ architecture = 'armv8-m.main'
336+ ElementTree .SubElement (xml_root , 'architecture' ).text = architecture
337+
315338 # Extract list of registers, group into gdb features.
316339 regs_sorted_by_feature = sorted (self ._register_list , key = lambda r : r .gdb_feature ) # Must sort for groupby().
317340 regs_by_feature = {k : list (g ) for k , g in groupby (regs_sorted_by_feature , key = lambda r : r .gdb_feature )}
@@ -328,12 +351,10 @@ def _build_target_xml(self):
328351
329352 use_register_fields = self ._context .session .options .get ('register_fields' )
330353
331- xml_root = ElementTree .Element ('target' )
332-
333354 for feature_name in features :
334355 regs = regs_by_feature [feature_name ]
335356
336- xml_feature = ElementTree .SubElement (xml_root , " feature" , name = feature_name )
357+ xml_feature = ElementTree .SubElement (xml_root , ' feature' , name = feature_name )
337358
338359 # Define feature types when option 'register_fields' is enabled.
339360 if use_register_fields :
0 commit comments