+
+ uint32_t data = 0;
+ data = FIELD_DP32(data, CPUCFG1, ARCH, 2);
+ data = FIELD_DP32(data, CPUCFG1, PGMMU, 1);
+ data = FIELD_DP32(data, CPUCFG1, IOCSR, 1);
+ data = FIELD_DP32(data, CPUCFG1, PALEN, 0x2f);
+ data = FIELD_DP32(data, CPUCFG1, VALEN, 0x2f);
+ data = FIELD_DP32(data, CPUCFG1, UAL, 1);
+ data = FIELD_DP32(data, CPUCFG1, RI, 1);
+ data = FIELD_DP32(data, CPUCFG1, EP, 1);
+ data = FIELD_DP32(data, CPUCFG1, RPLV, 1);
+ data = FIELD_DP32(data, CPUCFG1, HP, 1);
+ data = FIELD_DP32(data, CPUCFG1, IOCSR_BRD, 1);
+ env->cpucfg[1] = data;
+
+ data = 0;
+ data = FIELD_DP32(data, CPUCFG2, FP, 1);
+ data = FIELD_DP32(data, CPUCFG2, FP_SP, 1);
+ data = FIELD_DP32(data, CPUCFG2, FP_DP, 1);
+ data = FIELD_DP32(data, CPUCFG2, FP_VER, 1);
+ data = FIELD_DP32(data, CPUCFG2, LSX, 1);
+ data = FIELD_DP32(data, CPUCFG2, LASX, 1);
+ data = FIELD_DP32(data, CPUCFG2, COMPLEX, 1);
+ data = FIELD_DP32(data, CPUCFG2, CRYPTO, 1);
+ data = FIELD_DP32(data, CPUCFG2, LLFTP, 1);
+ data = FIELD_DP32(data, CPUCFG2, LLFTP_VER, 1);
+ data = FIELD_DP32(data, CPUCFG2, LSPW, 1);
+ data = FIELD_DP32(data, CPUCFG2, LAM, 1);
+ env->cpucfg[2] = data;
+
+ data = 0;
+ data = FIELD_DP32(data, CPUCFG3, CCDMA, 1);
+ data = FIELD_DP32(data, CPUCFG3, SFB, 1);
+ data = FIELD_DP32(data, CPUCFG3, UCACC, 1);
+ data = FIELD_DP32(data, CPUCFG3, LLEXC, 1);
+ data = FIELD_DP32(data, CPUCFG3, SCDLY, 1);
+ data = FIELD_DP32(data, CPUCFG3, LLDBAR, 1);
+ data = FIELD_DP32(data, CPUCFG3, ITLBHMC, 1);
+ data = FIELD_DP32(data, CPUCFG3, ICHMC, 1);
+ data = FIELD_DP32(data, CPUCFG3, SPW_LVL, 4);
+ data = FIELD_DP32(data, CPUCFG3, SPW_HP_HF, 1);
+ env->cpucfg[3] = data;
+
+ env->cpucfg[4] = 0x5f5e100; /* Crystal frequency */
+
+ data = 0;
+ data = FIELD_DP32(data, CPUCFG5, CC_MUL, 1);
+ data = FIELD_DP32(data, CPUCFG5, CC_DIV, 1);
+ env->cpucfg[5] = data;
+
+ data = 0;
+ data = FIELD_DP32(data, CPUCFG16, L1_IUPRE, 1);
+ data = FIELD_DP32(data, CPUCFG16, L1_DPRE, 1);
+ data = FIELD_DP32(data, CPUCFG16, L2_IUPRE, 1);
+ data = FIELD_DP32(data, CPUCFG16, L2_IUUNIFY, 1);
+ data = FIELD_DP32(data, CPUCFG16, L2_IUPRIV, 1);
+ data = FIELD_DP32(data, CPUCFG16, L3_IUPRE, 1);
+ data = FIELD_DP32(data, CPUCFG16, L3_IUUNIFY, 1);
+ data = FIELD_DP32(data, CPUCFG16, L3_IUINCL, 1);
+ env->cpucfg[16] = data;
+
+ data = 0;
+ data = FIELD_DP32(data, CPUCFG17, L1IU_WAYS, 0x8003);
+ data = FIELD_DP32(data, CPUCFG17, L1IU_SETS, 0x60);
+ env->cpucfg[17] = data;
+
+ data = 0;
+ data = FIELD_DP32(data, CPUCFG18, L1D_WAYS, 0x8003);
+ data = FIELD_DP32(data, CPUCFG18, L1D_SETS, 0x60);
+ env->cpucfg[18] = data;
+
+ data = 0;
+ data = FIELD_DP32(data, CPUCFG19, L2IU_WAYS, 0x800f);
+ data = FIELD_DP32(data, CPUCFG19, L2IU_SETS, 0x60);
+ env->cpucfg[19] = data;
+
+ data = 0;
+ data = FIELD_DP32(data, CPUCFG20, L3IU_WAYS, 0xf00f);
+ data = FIELD_DP32(data, CPUCFG20, L3IU_SETS, 0x60);
+ env->cpucfg[20] = data;
+}
+
+static inline void loongarch_3a5000_initfn(Object *obj)