mirror of https://github.com/xqemu/xqemu.git
Implement exception prefix feature for PowerPC 601.
Fix PowerPC 601 hardware reset vector. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3352 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
7a3a6927b6
commit
4e80effcf9
|
@ -1996,16 +1996,17 @@ int do_store_msr (CPUPPCState *env, target_ulong value)
|
|||
tlb_flush(env, 1);
|
||||
env->interrupt_request |= CPU_INTERRUPT_EXITTB;
|
||||
}
|
||||
#if 0
|
||||
if (loglevel != 0) {
|
||||
fprintf(logfile, "%s: T0 %08lx\n", __func__, value);
|
||||
}
|
||||
#endif
|
||||
#if !defined (CONFIG_USER_ONLY)
|
||||
if (unlikely((env->flags & POWERPC_FLAG_TGPR) &&
|
||||
((value >> MSR_TGPR) & 1) != msr_tgpr)) {
|
||||
/* Swap temporary saved registers with GPRs */
|
||||
swap_gpr_tgpr(env);
|
||||
}
|
||||
if (unlikely((value >> MSR_EP) & 1) != msr_ep) {
|
||||
/* Change the exception prefix on PowerPC 601 */
|
||||
env->excp_prefix = ((value >> MSR_EP) & 1) * 0xFFF00000;
|
||||
}
|
||||
#endif
|
||||
#if defined (TARGET_PPC64)
|
||||
msr_sf = (value >> MSR_SF) & 1;
|
||||
msr_isf = (value >> MSR_ISF) & 1;
|
||||
|
@ -2899,7 +2900,7 @@ void cpu_ppc_reset (void *opaque)
|
|||
#endif
|
||||
msr_ap = 0; /* TO BE CHECKED */
|
||||
msr_sa = 0; /* TO BE CHECKED */
|
||||
msr_ip = 0; /* TO BE CHECKED */
|
||||
msr_ep = 1;
|
||||
#if defined (DO_SINGLE_STEP) && 0
|
||||
/* Single step trace mode */
|
||||
msr_se = 1;
|
||||
|
|
|
@ -2322,7 +2322,7 @@ static void init_excp_601 (CPUPPCState *env)
|
|||
env->excp_vectors[POWERPC_EXCP_RUNM] = 0x00002000;
|
||||
env->excp_prefix = 0xFFF00000;
|
||||
/* Hardware reset vector */
|
||||
env->hreset_vector = 0xFFFFFFFCUL;
|
||||
env->hreset_vector = 0x00000100UL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue