On 16 mai 05, at 09:54, Benjamin Herrenschmidt wrote:
OK, I did put this in my working repository and I'll submit this to
Fabrice.
Please try to do this change to check if other bits need to be relax or
not:
Index: target-ppc/translate.c =================================================================== RCS file: /cvsroot/qemu/qemu/target-ppc/translate.c,v retrieving revision 1.31 diff -u -r1.31 translate.c --- target-ppc/translate.c 12 May 2005 18:46:11 -0000 1.31 +++ target-ppc/translate.c 14 May 2005 17:14:35 -0000 @@ -2123,7 +2123,7 @@ }
/* mtcrf */ -GEN_HANDLER(mtcrf, 0x1F, 0x10, 0x04, 0x00100801, PPC_MISC) +GEN_HANDLER(mtcrf, 0x1F, 0x10, 0x04, 0x00000801, PPC_MISC) { gen_op_load_gpr_T0(rS(ctx->opcode)); gen_op_store_cr(CRM(ctx->opcode));
I've tested it: it works fine as expected.
And maybe someone should fill an Apple bug report to tell them their as
is buggy ;-)
It is definitely a bug in Apple assembler I would say, so I suggest you add a comment in the above patch in order to avoid somebody later on "fixing" your mask :)
I thought it was, but it seems to be not so buggy ;)
I have had a look at the Apple's as source code of Darwin 8.0 (10.4) [1] and I have found an interesting comment :
/*
* If this is the mtcrf opcode (0x7c000120) and val is not zero and
* has exactly one bit set then use the new form of the mtcrf
* opcode. This has bit 0x00100000 set and the FXM field is a bit
* mask. Else use the old form without bit 0x00100000 set.
*/
I don't know what they are refering to, but that may have been introduced by the PowerPC 970 or an other new PPC, since it was not present on the Mac OS X 10.2's as [2].
Pierre.
[1] http://darwinsource.opendarwin.org/10.4/cctools-576/as/ppc.c [2] http://darwinsource.opendarwin.org/10.2/cctools-435/as/ppc.c
_______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel