| # 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') |