target/loongarch: Set CSR_PRCFG1 and CSR_PRCFG2 values
We set the value of register CSR_PRCFG3, but left out CSR_PRCFG1 and CSR_PRCFG2. Set CSR_PRCFG1 and CSR_PRCFG2 according to the default values of the physical machine. Signed-off-by: Song Gao <gaosong@loongson.cn> Reviewed-by: Bibo Mao <maobibo@loongson.cn> Message-Id: <20240705021839.1004374-1-gaosong@loongson.cn>
This commit is contained in:
		
							parent
							
								
									785875874d
								
							
						
					
					
						commit
						bba1c36da0
					
				@ -457,6 +457,18 @@ static void loongarch_la464_initfn(Object *obj)
 | 
				
			|||||||
    env->cpucfg[20] = data;
 | 
					    env->cpucfg[20] = data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    env->CSR_ASID = FIELD_DP64(0, CSR_ASID, ASIDBITS, 0xa);
 | 
					    env->CSR_ASID = FIELD_DP64(0, CSR_ASID, ASIDBITS, 0xa);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    env->CSR_PRCFG1 = FIELD_DP64(env->CSR_PRCFG1, CSR_PRCFG1, SAVE_NUM, 8);
 | 
				
			||||||
 | 
					    env->CSR_PRCFG1 = FIELD_DP64(env->CSR_PRCFG1, CSR_PRCFG1, TIMER_BITS, 0x2f);
 | 
				
			||||||
 | 
					    env->CSR_PRCFG1 = FIELD_DP64(env->CSR_PRCFG1, CSR_PRCFG1, VSMAX, 7);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    env->CSR_PRCFG2 = 0x3ffff000;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, TLB_TYPE, 2);
 | 
				
			||||||
 | 
					    env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, MTLB_ENTRY, 63);
 | 
				
			||||||
 | 
					    env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, STLB_WAYS, 7);
 | 
				
			||||||
 | 
					    env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, STLB_SETS, 8);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    loongarch_cpu_post_init(obj);
 | 
					    loongarch_cpu_post_init(obj);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -538,11 +550,6 @@ static void loongarch_cpu_reset_hold(Object *obj, ResetType type)
 | 
				
			|||||||
    env->CSR_MERRCTL = FIELD_DP64(env->CSR_MERRCTL, CSR_MERRCTL, ISMERR, 0);
 | 
					    env->CSR_MERRCTL = FIELD_DP64(env->CSR_MERRCTL, CSR_MERRCTL, ISMERR, 0);
 | 
				
			||||||
    env->CSR_TID = cs->cpu_index;
 | 
					    env->CSR_TID = cs->cpu_index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, TLB_TYPE, 2);
 | 
					 | 
				
			||||||
    env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, MTLB_ENTRY, 63);
 | 
					 | 
				
			||||||
    env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, STLB_WAYS, 7);
 | 
					 | 
				
			||||||
    env->CSR_PRCFG3 = FIELD_DP64(env->CSR_PRCFG3, CSR_PRCFG3, STLB_SETS, 8);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for (n = 0; n < 4; n++) {
 | 
					    for (n = 0; n < 4; n++) {
 | 
				
			||||||
        env->CSR_DMW[n] = FIELD_DP64(env->CSR_DMW[n], CSR_DMW, PLV0, 0);
 | 
					        env->CSR_DMW[n] = FIELD_DP64(env->CSR_DMW[n], CSR_DMW, PLV0, 0);
 | 
				
			||||||
        env->CSR_DMW[n] = FIELD_DP64(env->CSR_DMW[n], CSR_DMW, PLV1, 0);
 | 
					        env->CSR_DMW[n] = FIELD_DP64(env->CSR_DMW[n], CSR_DMW, PLV1, 0);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user