|
From: | Pierre d'Herbemont |
Subject: | Re: [Qemu-devel] [Patch] target-ppc mtcrf instruction not recognized |
Date: | Tue, 17 May 2005 22:17:40 +0200 |
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 ornot: 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 asis 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
[Prev in Thread] | Current Thread | [Next in Thread] |