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