29 lines
977 B
Python
29 lines
977 B
Python
|
# 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
|