/*
 * Copyright (C) 2018 Ossdev07
 *
 * This file is part of the JNR project.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package jnr.a64asm;

public enum SYSREG_CODE {
    SPSR_EL1,
    ELR_EL1,
    SP_EL0,
    SPSEL,
    DAIF,
    CURRENTEL,
    NZCV,
    FPCR,
    FPSR,
    DSPSR_EL0,
    DLR_EL0,
    SPSR_EL2,
    ELR_EL2,
    SP_EL1,
    SPSR_IRQ,
    SPSR_ABT,
    SPSR_UND,
    SPSR_FIQ,
    SPSR_EL3,
    ELR_EL3,
    SP_EL2,
    SPSR_SVC,
    SPSR_HYP,
    MIDR_EL1,
    CTR_EL0,
    MPIDR_EL1,
    REVIDR_EL1,
    AIDR_EL1,
    DCZID_EL0,
    ID_DFR0_EL1,
    ID_PFR0_EL1,
    ID_PFR1_EL1,
    ID_AFR0_EL1,
    ID_MMFR0_EL1,
    ID_MMFR1_EL1,
    ID_MMFR2_EL1,
    ID_MMFR3_EL1,
    ID_ISAR0_EL1,
    ID_ISAR1_EL1,
    ID_ISAR2_EL1,
    ID_ISAR3_EL1,
    ID_ISAR4_EL1,
    ID_ISAR5_EL1,
    MVFR0_EL1,
    MVFR1_EL1,
    MVFR2_EL1,
    CCSIDR_EL1,
    ID_AA64PFR0_EL1,
    ID_AA64PFR1_EL1,
    ID_AA64DFR0_EL1,
    ID_AA64DFR1_EL1,
    ID_AA64ISAR0_EL1,
    ID_AA64ISAR1_EL1,
    ID_AA64MMFR0_EL1,
    ID_AA64MMFR1_EL1,
    ID_AA64AFR0_EL1,
    ID_AA64AFR1_EL1,
    CLIDR_EL1,
    CSSELR_EL1,
    VPIDR_EL2,
    VMPIDR_EL2,
    SCTLR_EL1,
    SCTLR_EL2,
    SCTLR_EL3,
    ACTLR_EL1,
    ACTLR_EL2,
    ACTLR_EL3,
    CPACR_EL1,
    CPTR_EL2,
    CPTR_EL3,
    SCR_EL3,
    HCR_EL2,
    MDCR_EL2,
    MDCR_EL3,
    HSTR_EL2,
    HACR_EL2,
    TTBR0_EL1,
    TTBR1_EL1,
    TTBR0_EL2,
    TTBR0_EL3,
    VTTBR_EL2,
    TCR_EL1,
    TCR_EL2,
    TCR_EL3,
    VTCR_EL2,
    AFSR0_EL1,
    AFSR1_EL1,
    AFSR0_EL2,
    AFSR1_EL2,
    AFSR0_EL3,
    AFSR1_EL3,
    ESR_EL1,
    ESR_EL2,
    ESR_EL3,
    FPEXC32_EL2,
    FAR_EL1,
    FAR_EL2,
    FAR_EL3,
    HPFAR_EL2,
    PAR_EL1,
    MAIR_EL1,
    MAIR_EL2,
    MAIR_EL3,
    AMAIR_EL1,
    AMAIR_EL2,
    AMAIR_EL3,
    VBAR_EL1,
    VBAR_EL2,
    VBAR_EL3,
    RVBAR_EL1,
    RVBAR_EL2,
    RVBAR_EL3,
    RMR_EL1,
    RMR_EL2,
    RMR_EL3,
    ISR_EL1,
    CONTEXTIDR_EL1,
    TPIDR_EL0,
    TPIDRRO_EL0,
    TPIDR_EL1,
    TPIDR_EL2,
    TPIDR_EL3,
    TEECR32_EL1,
    CNTFRQ_EL0,
    CNTPCT_EL0,
    CNTVCT_EL0,
    CNTVOFF_EL2,
    CNTKCTL_EL1,
    CNTHCTL_EL2,
    CNTP_TVAL_EL0,
    CNTP_CTL_EL0,
    CNTP_CVAL_EL0,
    CNTV_TVAL_EL0,
    CNTV_CTL_EL0,
    CNTV_CVAL_EL0,
    CNTHP_TVAL_EL2,
    CNTHP_CTL_EL2,
    CNTHP_CVAL_EL2,
    CNTPS_TVAL_EL1,
    CNTPS_CTL_EL1,
    CNTPS_CVAL_EL1,
    DACR32_EL2,
    IFSR32_EL2,
    TEEHBR32_EL1,
    SDER32_EL3,
    MDSCR_EL1,
    MDCCSR_EL0,
    MDCCINT_EL1,
    DBGDTR_EL0,
    DBGDTRRX_EL0,
    DBGDTRTX_EL0,
    OSDTRRX_EL1,
    OSDTRTX_EL1,
    OSECCR_EL1,
    DBGVCR32_EL2,
    DBGBVR0_EL1,
    DBGBVR1_EL1,
    DBGBVR2_EL1,
    DBGBVR3_EL1,
    DBGBVR4_EL1,
    DBGBVR5_EL1,
    DBGBVR6_EL1,
    DBGBVR7_EL1,
    DBGBVR8_EL1,
    DBGBVR9_EL1,
    DBGBVR10_EL1,
    DBGBVR11_EL1,
    DBGBVR12_EL1,
    DBGBVR13_EL1,
    DBGBVR14_EL1,
    DBGBVR15_EL1,
    DBGBCR0_EL1,
    DBGBCR1_EL1,
    DBGBCR2_EL1,
    DBGBCR3_EL1,
    DBGBCR4_EL1,
    DBGBCR5_EL1,
    DBGBCR6_EL1,
    DBGBCR7_EL1,
    DBGBCR8_EL1,
    DBGBCR9_EL1,
    DBGBCR10_EL1,
    DBGBCR11_EL1,
    DBGBCR12_EL1,
    DBGBCR13_EL1,
    DBGBCR14_EL1,
    DBGBCR15_EL1,
    DBGWVR0_EL1,
    DBGWVR1_EL1,
    DBGWVR2_EL1,
    DBGWVR3_EL1,
    DBGWVR4_EL1,
    DBGWVR5_EL1,
    DBGWVR6_EL1,
    DBGWVR7_EL1,
    DBGWVR8_EL1,
    DBGWVR9_EL1,
    DBGWVR10_EL1,
    DBGWVR11_EL1,
    DBGWVR12_EL1,
    DBGWVR13_EL1,
    DBGWVR14_EL1,
    DBGWVR15_EL1,
    DBGWCR0_EL1,
    DBGWCR1_EL1,
    DBGWCR2_EL1,
    DBGWCR3_EL1,
    DBGWCR4_EL1,
    DBGWCR5_EL1,
    DBGWCR6_EL1,
    DBGWCR7_EL1,
    DBGWCR8_EL1,
    DBGWCR9_EL1,
    DBGWCR10_EL1,
    DBGWCR11_EL1,
    DBGWCR12_EL1,
    DBGWCR13_EL1,
    DBGWCR14_EL1,
    DBGWCR15_EL1,
    MDRAR_EL1,
    OSLAR_EL1,
    OSLSR_EL1,
    OSDLR_EL1,
    DBGPRCR_EL1,
    DBGCLAIMSET_EL1,
    DBGCLAIMCLR_EL1,
    DBGAUTHSTATUS_EL1,
    PMCR_EL0,
    PMCNTENSET_EL0,
    PMCNTENCLR_EL0,
    PMOVSCLR_EL0,
    PMSWINC_EL0,
    PMSELR_EL0,
    PMCEID0_EL0,
    PMCEID1_EL0,
    PMCCNTR_EL0,
    PMXEVTYPER_EL0,
    PMXEVCNTR_EL0,
    PMUSERENR_EL0,
    PMINTENSET_EL1,
    PMINTENCLR_EL1,
    PMOVSSET_EL0,
    PMEVCNTR0_EL0,
    PMEVCNTR1_EL0,
    PMEVCNTR2_EL0,
    PMEVCNTR3_EL0,
    PMEVCNTR4_EL0,
    PMEVCNTR5_EL0,
    PMEVCNTR6_EL0,
    PMEVCNTR7_EL0,
    PMEVCNTR8_EL0,
    PMEVCNTR9_EL0,
    PMEVCNTR10_EL0,
    PMEVCNTR11_EL0,
    PMEVCNTR12_EL0,
    PMEVCNTR13_EL0,
    PMEVCNTR14_EL0,
    PMEVCNTR15_EL0,
    PMEVCNTR16_EL0,
    PMEVCNTR17_EL0,
    PMEVCNTR18_EL0,
    PMEVCNTR19_EL0,
    PMEVCNTR20_EL0,
    PMEVCNTR21_EL0,
    PMEVCNTR22_EL0,
    PMEVCNTR23_EL0,
    PMEVCNTR24_EL0,
    PMEVCNTR25_EL0,
    PMEVCNTR26_EL0,
    PMEVCNTR27_EL0,
    PMEVCNTR28_EL0,
    PMEVCNTR29_EL0,
    PMEVCNTR30_EL0,
    PMEVTYPER0_EL0,
    PMEVTYPER1_EL0,
    PMEVTYPER2_EL0,
    PMEVTYPER3_EL0,
    PMEVTYPER4_EL0,
    PMEVTYPER5_EL0,
    PMEVTYPER6_EL0,
    PMEVTYPER7_EL0,
    PMEVTYPER8_EL0,
    PMEVTYPER9_EL0,
    PMEVTYPER10_EL0,
    PMEVTYPER11_EL0,
    PMEVTYPER12_EL0,
    PMEVTYPER13_EL0,
    PMEVTYPER14_EL0,
    PMEVTYPER15_EL0,
    PMEVTYPER16_EL0,
    PMEVTYPER17_EL0,
    PMEVTYPER18_EL0,
    PMEVTYPER19_EL0,
    PMEVTYPER20_EL0,
    PMEVTYPER21_EL0,
    PMEVTYPER22_EL0,
    PMEVTYPER23_EL0,
    PMEVTYPER24_EL0,
    PMEVTYPER25_EL0,
    PMEVTYPER26_EL0,
    PMEVTYPER27_EL0,
    PMEVTYPER28_EL0,
    PMEVTYPER29_EL0,
    PMEVTYPER30_EL0,
    PMCCFILTR_EL0,
    SYSREG_MAX;

    public static final SYSREG_CODE valueOf(int idx) {
        return values()[idx];
    }

}
