diff options
Diffstat (limited to 'util/cpt_upgraders/arm-ccregs.py')
-rw-r--r-- | util/cpt_upgraders/arm-ccregs.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/util/cpt_upgraders/arm-ccregs.py b/util/cpt_upgraders/arm-ccregs.py new file mode 100644 index 000000000..2e3cf1ac2 --- /dev/null +++ b/util/cpt_upgraders/arm-ccregs.py @@ -0,0 +1,28 @@ +# Use condition code registers for the ARM architecture. +# Previously the integer register file was used for these registers. +def upgrader(cpt): + if cpt.get('root','isa') == 'arm': + for sec in cpt.sections(): + import re + + re_cpu_match = re.match('^(.*sys.*\.cpu[^.]*)\.xc\.(.+)$', sec) + # Search for all the execution contexts + if not re_cpu_match: + continue + + items = [] + for (item,value) in cpt.items(sec): + items.append(item) + if 'ccRegs' not in items: + intRegs = cpt.get(sec, 'intRegs').split() + + # Move those 5 integer registers to the ccRegs register file + ccRegs = intRegs[38:43] + del intRegs[38:43] + + ccRegs.append('0') # CCREG_ZERO + + cpt.set(sec, 'intRegs', ' '.join(intRegs)) + cpt.set(sec, 'ccRegs', ' '.join(ccRegs)) + +legacy_version = 13 |