diff options
Diffstat (limited to 'util')
-rwxr-xr-x | util/cpt_upgrader.py | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/util/cpt_upgrader.py b/util/cpt_upgrader.py index 76d61acf9..09e6ef194 100755 --- a/util/cpt_upgrader.py +++ b/util/cpt_upgrader.py @@ -61,11 +61,8 @@ import ConfigParser import sys, os import os.path as osp -def from_0(cpt): - pass - # An example of a translator -def from_1(cpt): +def from_0(cpt): if cpt.get('root','isa') == 'arm': for sec in cpt.sections(): import re @@ -77,6 +74,37 @@ def from_1(cpt): #mr.insert(26,0) cpt.set(sec, 'miscRegs', ' '.join(str(x) for x in mr)) +# The backing store supporting the memories in the system has changed +# in that it is now stored globally per address range. As a result the +# actual storage is separate from the memory controllers themselves. +def from_1(cpt): + for sec in cpt.sections(): + import re + # Search for a physical memory + if re.search('.*sys.*\.physmem$', sec): + # Add the number of stores attribute to the global physmem + cpt.set(sec, 'nbr_of_stores', '1') + + # Get the filename and size as this is moving to the + # specific backing store + mem_filename = cpt.get(sec, 'filename') + mem_size = cpt.get(sec, '_size') + cpt.remove_option(sec, 'filename') + cpt.remove_option(sec, '_size') + + # Get the name so that we can create the new section + system_name = str(sec).split('.')[0] + section_name = system_name + '.physmem.store0' + cpt.add_section(section_name) + cpt.set(section_name, 'store_id', '0') + cpt.set(section_name, 'range_size', mem_size) + cpt.set(section_name, 'filename', mem_filename) + elif re.search('.*sys.*\.\w*mem$', sec): + # Due to the lack of information about a start address, + # this migration only works if there is a single memory in + # the system, thus starting at 0 + raise ValueError("more than one memory detected (" + sec + ")") + migrations = [] migrations.append(from_0) migrations.append(from_1) |