@ -10211,10 +10211,54 @@ static void ppc_cpu_reset(CPUState *s)
PowerPCCPU * cpu = POWERPC_CPU ( s ) ;
PowerPCCPUClass * pcc = POWERPC_CPU_GET_CLASS ( cpu ) ;
CPUPPCState * env = & cpu - > env ;
target_ulong msr ;
if ( qemu_loglevel_mask ( CPU_LOG_RESET ) ) {
qemu_log ( " CPU Reset (CPU %d) \n " , env - > cpu_index ) ;
log_cpu_state ( env , 0 ) ;
}
pcc - > parent_reset ( s ) ;
cpu_state_reset ( env ) ;
msr = ( target_ulong ) 0 ;
if ( 0 ) {
/* XXX: find a suitable condition to enable the hypervisor mode */
msr | = ( target_ulong ) MSR_HVB ;
}
msr | = ( target_ulong ) 0 < < MSR_AP ; /* TO BE CHECKED */
msr | = ( target_ulong ) 0 < < MSR_SA ; /* TO BE CHECKED */
msr | = ( target_ulong ) 1 < < MSR_EP ;
# if defined(DO_SINGLE_STEP) && 0
/* Single step trace mode */
msr | = ( target_ulong ) 1 < < MSR_SE ;
msr | = ( target_ulong ) 1 < < MSR_BE ;
# endif
# if defined(CONFIG_USER_ONLY)
msr | = ( target_ulong ) 1 < < MSR_FP ; /* Allow floating point usage */
msr | = ( target_ulong ) 1 < < MSR_VR ; /* Allow altivec usage */
msr | = ( target_ulong ) 1 < < MSR_SPE ; /* Allow SPE usage */
msr | = ( target_ulong ) 1 < < MSR_PR ;
# else
env - > excp_prefix = env - > hreset_excp_prefix ;
env - > nip = env - > hreset_vector | env - > excp_prefix ;
if ( env - > mmu_model ! = POWERPC_MMU_REAL ) {
ppc_tlb_invalidate_all ( env ) ;
}
# endif
env - > msr = msr & env - > msr_mask ;
# if defined(TARGET_PPC64)
if ( env - > mmu_model & POWERPC_MMU_64 ) {
env - > msr | = ( 1ULL < < MSR_SF ) ;
}
# endif
hreg_compute_hflags ( env ) ;
env - > reserve_addr = ( target_ulong ) - 1ULL ;
/* Be sure no exception or interrupt is pending */
env - > pending_interrupts = 0 ;
env - > exception_index = POWERPC_EXCP_NONE ;
env - > error_code = 0 ;
/* Flush all TLBs */
tlb_flush ( env , 1 ) ;
}
static void ppc_cpu_initfn ( Object * obj )