| 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", fallback="") == "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 |