cpt_upgrader.py (9332:ae2a5329ce96) | cpt_upgrader.py (9425:a24092160ec7) |
---|---|
1#!/usr/bin/env python 2 3# Copyright (c) 2012 ARM Limited 4# All rights reserved 5# 6# The license below extends only to copyright in the software and shall 7# not be construed as granting a license to any other intellectual 8# property including but not limited to intellectual property relating --- 102 unchanged lines hidden (view full) --- 111 # Search for a CPUs 112 if re.search('.*sys.*cpu', sec): 113 try: 114 junk = cpt.get(sec, 'instCnt') 115 cpt.set(sec, '_pid', '0') 116 except ConfigParser.NoOptionError: 117 pass 118 | 1#!/usr/bin/env python 2 3# Copyright (c) 2012 ARM Limited 4# All rights reserved 5# 6# The license below extends only to copyright in the software and shall 7# not be construed as granting a license to any other intellectual 8# property including but not limited to intellectual property relating --- 102 unchanged lines hidden (view full) --- 111 # Search for a CPUs 112 if re.search('.*sys.*cpu', sec): 113 try: 114 junk = cpt.get(sec, 'instCnt') 115 cpt.set(sec, '_pid', '0') 116 except ConfigParser.NoOptionError: 117 pass 118 |
119# The ISA is now a separate SimObject, which means that we serialize 120# it in a separate section instead of as a part of the ThreadContext. 121def from_3(cpt): 122 isa = cpt.get('root','isa') 123 isa_fields = { 124 "alpha" : ( "fpcr", "uniq", "lock_flag", "lock_addr", "ipr" ), 125 "arm" : ( "miscRegs" ), 126 "sparc" : ( "asi", "tick", "fprs", "gsr", "softint", "tick_cmpr", 127 "stick", "stick_cmpr", "tpc", "tnpc", "tstate", "tt", 128 "tba", "pstate", "tl", "pil", "cwp", "gl", "hpstate", 129 "htstate", "hintp", "htba", "hstick_cmpr", 130 "strandStatusReg", "fsr", "priContext", "secContext", 131 "partId", "lsuCtrlReg", "scratchPad", 132 "cpu_mondo_head", "cpu_mondo_tail", 133 "dev_mondo_head", "dev_mondo_tail", 134 "res_error_head", "res_error_tail", 135 "nres_error_head", "nres_error_tail", 136 "tick_intr_sched", 137 "cpu", "tc_num", "tick_cmp", "stick_cmp", "hstick_cmp"), 138 "x86" : ( "regVal" ), 139 } |
|
119 | 140 |
141 isa_fields = isa_fields.get(isa, []) 142 isa_sections = [] 143 for sec in cpt.sections(): 144 import re 145 146 re_cpu_match = re.match('^(.*sys.*\.cpu[^.]*)\.xc\.(.+)$', sec) 147 # Search for all the execution contexts 148 if not re_cpu_match: 149 continue 150 151 if re_cpu_match.group(2) != "0": 152 # This shouldn't happen as we didn't support checkpointing 153 # of in-order and O3 CPUs. 154 raise ValueError("Don't know how to migrate multi-threaded CPUs " 155 "from version 1") 156 157 isa_section = [] 158 for fspec in isa_fields: 159 for (key, value) in cpt.items(sec, raw=True): 160 if key in isa_fields: 161 isa_section.append((key, value)) 162 163 name = "%s.isa" % re_cpu_match.group(1) 164 isa_sections.append((name, isa_section)) 165 166 for (key, value) in isa_section: 167 cpt.remove_option(sec, key) 168 169 for (sec, options) in isa_sections: 170 # Some intermediate versions of gem5 have empty ISA sections 171 # (after we made the ISA a SimObject, but before we started to 172 # serialize into a separate ISA section). 173 if not cpt.has_section(sec): 174 cpt.add_section(sec) 175 else: 176 if cpt.items(sec): 177 raise ValueError("Unexpected populated ISA section in old " 178 "checkpoint") 179 180 for (key, value) in options: 181 cpt.set(sec, key, value) 182 183 184 |
|
120migrations = [] 121migrations.append(from_0) 122migrations.append(from_1) 123migrations.append(from_2) | 185migrations = [] 186migrations.append(from_0) 187migrations.append(from_1) 188migrations.append(from_2) |
189migrations.append(from_3) |
|
124 125verbose_print = False 126 127def verboseprint(*args): 128 if not verbose_print: 129 return 130 for arg in args: 131 print arg, --- 96 unchanged lines hidden --- | 190 191verbose_print = False 192 193def verboseprint(*args): 194 if not verbose_print: 195 return 196 for arg in args: 197 print arg, --- 96 unchanged lines hidden --- |