| def upgrader(cpt): |
| """ |
| Update the checkpoint to support initial SVE implemtation. |
| The updater is taking the following steps. |
| |
| 1) Set isa.haveSVE to false |
| 2) Set isa.sveVL to 1 |
| 3) Add SVE misc registers in the checkpoint |
| """ |
| if cpt.get('root','isa') == 'arm': |
| for sec in cpt.sections(): |
| import re |
| # Search for all ISA sections |
| if re.search('.*sys.*\.cpu.*\.isa$', sec): |
| |
| # haveSVE = false |
| cpt.set(sec, 'haveSVE', 'false') |
| |
| # sveVL (sve Vector Length in quadword) = 1 |
| # (This is a dummy value since haveSVE is set to false) |
| cpt.set(sec, 'sveVL', '1') |
| |
| # Updating SVE misc registers (dummy values) |
| mr = cpt.get(sec, 'miscRegs').split() |
| if len(mr) == 820: |
| print "MISCREG_SVE registers already seems to be inserted." |
| else: |
| # Replace MISCREG_FREESLOT_1 with MISCREG_ID_AA64ZFR0_EL1 |
| mr[-1] = 0; |
| |
| mr.append(0); # Add dummy value for MISCREG_ZCR_EL3 |
| mr.append(0); # Add dummy value for MISCREG_ZCR_EL2 |
| mr.append(0); # Add dummy value for MISCREG_ZCR_EL12 |
| mr.append(0); # Add dummy value for MISCREG_ZCR_EL1 |
| cpt.set(sec, 'miscRegs', ' '.join(str(x) for x in mr)) |
| |
| legacy_version = 15 |