ppc: Enforce setting MSR:EE,IR and DR when MSR:PR is set
The architecture specifies that any instruction that sets MSR:PR will also set MSR:EE, IR and DR. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
d1dbe37c1e
commit
b378bb0948
|
@ -136,6 +136,10 @@ static inline int hreg_store_msr(CPUPPCState *env, target_ulong value,
|
||||||
/* Change the exception prefix on PowerPC 601 */
|
/* Change the exception prefix on PowerPC 601 */
|
||||||
env->excp_prefix = ((value >> MSR_EP) & 1) * 0xFFF00000;
|
env->excp_prefix = ((value >> MSR_EP) & 1) * 0xFFF00000;
|
||||||
}
|
}
|
||||||
|
/* If PR=1 then EE, IR and DR must be 1 */
|
||||||
|
if ((value >> MSR_PR) & 1) {
|
||||||
|
value |= (1 << MSR_EE) | (1 << MSR_DR) | (1 << MSR_IR);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
env->msr = value;
|
env->msr = value;
|
||||||
hreg_compute_hflags(env);
|
hreg_compute_hflags(env);
|
||||||
|
|
Loading…
Reference in a new issue