]> git.proxmox.com Git - mirror_qemu.git/commitdiff
target/ppc: Relax reserved bitmask of indexed store instructions
authorBALATON Zoltan <balaton@eik.bme.hu>
Thu, 28 Jun 2018 22:38:33 +0000 (00:38 +0200)
committerDavid Gibson <david@gibson.dropbear.id.au>
Tue, 3 Jul 2018 01:13:08 +0000 (11:13 +1000)
The PPC440 User Manual says that if bit 31 is set, the contents of
CR[CR0] are undefined for indexed store instructions but this form is
not invalid. Other PPC variants confirming to recent ISA where this
bit may be reserved should ignore reserved bits and not raise invalid
instruction exception. In particular, MorphOS has an stwx instruction
with bit 31 set and fails to boot currently because of this. With this
patch it gets further.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
target/ppc/translate.c

index 65c8cc94e75175ec6456f1b6df15f8c68a9c7580..9eaa10b421a5a6a24c553f279c6b9552c38d2b2b 100644 (file)
@@ -7054,7 +7054,7 @@ GEN_HANDLER(stop##u, opc, 0xFF, 0xFF, 0x00000000, type),
 #define GEN_STUX(name, stop, opc2, opc3, type)                                \
 GEN_HANDLER(name##ux, 0x1F, opc2, opc3, 0x00000001, type),
 #define GEN_STX_E(name, stop, opc2, opc3, type, type2, chk)                   \
-GEN_HANDLER_E(name##x, 0x1F, opc2, opc3, 0x00000001, type, type2),
+GEN_HANDLER_E(name##x, 0x1F, opc2, opc3, 0x00000000, type, type2),
 #define GEN_STS(name, stop, op, type)                                         \
 GEN_ST(name, stop, op | 0x20, type)                                           \
 GEN_STU(name, stop, op | 0x21, type)                                          \