# Upgrade single-threaded checkpoints to be properly supported with SMT. # SMT adds per-thread interrupts. Thus we must move the interrupt status # from the CPU and into the execution context. def upgrader(cpt): for sec in cpt.sections(): import re re_cpu_match = re.match('^(.*sys.*\.cpu[^._]*)$', sec) if re_cpu_match != None: interrupts = cpt.get(sec, 'interrupts') intStatus = cpt.get(sec, 'intStatus') cpu_name = re_cpu_match.group(1) cpt.set(cpu_name + ".xc.0", 'interrupts', interrupts) cpt.set(cpu_name + ".xc.0", 'intStatus', intStatus) cpt.remove_option(sec, 'interrupts') cpt.remove_option(sec, 'intStatus')