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
