On 07/09/2016 02:43 AM, Mark Cave-Ayland wrote:
On 01/07/16 07:41, David Gibson wrote:
From: Benjamin Herrenschmidt
<b378bb0948277d71c78bc6d0c1ef80a253aafc80>
The architecture specifies that any instruction that sets MSR:PR
will also
set MSR:EE, IR and DR.
Signed-off-by: Benjamin Herrenschmidt <b...@kernel.crashing.org>
Signed-off-by: C?dric Le Goater <c...@kaod.org>
Signed-off-by: David Gibson <da...@gibson.dropbear.id.au>
---
target-ppc/helper_regs.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/target-ppc/helper_regs.h b/target-ppc/helper_regs.h
index 8fc0934..8fdfa5c 100644
--- a/target-ppc/helper_regs.h
+++ b/target-ppc/helper_regs.h
@@ -136,6 +136,10 @@ static inline int hreg_store_msr(CPUPPCState
*env, target_ulong value,
/* Change the exception prefix on PowerPC 601 */
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
env->msr = value;
hreg_compute_hflags(env);
Unfortunately this patch causes a regression and breaks booting OS
9 and
OS X under qemu-system-ppc.
Ah This is curious.
I used :
qemu-system-ppc -M g3beige -cdrom darwinppc-602.cdr -boot d
qemu-system-ppc -M mac99 -cdrom darwinppc-602.cdr -boot d
qemu-system-ppc64 -M g3beige -cdrom darwinppc-602.cdr -boot d
which "work" as they reach the installation prompt :
The following devices are available for installation.
This one hangs :
qemu-system-ppc64 -M mac99 -cdrom darwinppc-602.cdr -boot d
But that is expected for a 970 cpu.
The login prompt is reached with a full Darwin disk image.
So I must be missing a scenario :/
Thanks,
C.
I suggest you use a more up-to-date version of Darwin for PowerPC 64-
bit support:
https://opensource.apple.com/static/iso/darwinppc-801.cdr.gz