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

Reply via email to