misc: Merged release-staging-v19.0.0.0 into develop
[gem5.git] / util / cpt_upgraders / memory-per-range.py
1 # The backing store supporting the memories in the system has changed
2 # in that it is now stored globally per address range. As a result the
3 # actual storage is separate from the memory controllers themselves.
4 def upgrader(cpt):
5 for sec in cpt.sections():
6 import re
7 # Search for a physical memory
8 if re.search('.*sys.*\.physmem$', sec):
9 # Add the number of stores attribute to the global physmem
10 cpt.set(sec, 'nbr_of_stores', '1')
11
12 # Get the filename and size as this is moving to the
13 # specific backing store
14 mem_filename = cpt.get(sec, 'filename')
15 mem_size = cpt.get(sec, '_size')
16 cpt.remove_option(sec, 'filename')
17 cpt.remove_option(sec, '_size')
18
19 # Get the name so that we can create the new section
20 system_name = str(sec).split('.')[0]
21 section_name = system_name + '.physmem.store0'
22 cpt.add_section(section_name)
23 cpt.set(section_name, 'store_id', '0')
24 cpt.set(section_name, 'range_size', mem_size)
25 cpt.set(section_name, 'filename', mem_filename)
26 elif re.search('.*sys.*\.\w*mem$', sec):
27 # Due to the lack of information about a start address,
28 # this migration only works if there is a single memory in
29 # the system, thus starting at 0
30 raise ValueError("more than one memory detected (" + sec + ")")
31
32 legacy_version = 2