On 11/11/21 2:35 AM, Xiaojuan Yang wrote:
@@ -179,12 +181,22 @@ static void loongarch_cpu_reset(DeviceState *dev)
LoongArchCPU *cpu = LOONGARCH_CPU(cs);
LoongArchCPUClass *lacc = LOONGARCH_CPU_GET_CLASS(cpu);
CPULoongArchState *env = &cpu->env;
+ uint64_t data;
lacc->parent_reset(dev);
env->fcsr0_mask = 0x1f1f031f;
env->fcsr0 = 0x0;
+ /* Set direct mapping mode after reset */
+ data = FIELD_DP64(0, CSR_CRMD, PLV, 0);
+ data = FIELD_DP64(data, CSR_CRMD, IE, 0);
+ data = FIELD_DP64(data, CSR_CRMD, DA, 1);
+ data = FIELD_DP64(data, CSR_CRMD, PG, 0);
+ data = FIELD_DP64(data, CSR_CRMD, DATF, 1);
+ data = FIELD_DP64(data, CSR_CRMD, DATM, 1);
+ env->CSR_CRMD = data;
This is not all that is listed in 6.3 Reset.
r~