[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [6753] Implement mtfsf.L encoding
From: |
Blue Swirl |
Subject: |
[Qemu-devel] [6753] Implement mtfsf.L encoding |
Date: |
Sat, 07 Mar 2009 20:55:31 +0000 |
Revision: 6753
http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6753
Author: blueswir1
Date: 2009-03-07 20:55:31 +0000 (Sat, 07 Mar 2009)
Log Message:
-----------
Implement mtfsf.L encoding
Mtfsf can have the L bit set, so all the register contents get stored
in FPSCR. Linux uses it, so let's implement it.
Signed-off-by: Alexander Graf <address@hidden>
Modified Paths:
--------------
trunk/target-ppc/translate.c
Modified: trunk/target-ppc/translate.c
===================================================================
--- trunk/target-ppc/translate.c 2009-03-07 20:54:59 UTC (rev 6752)
+++ trunk/target-ppc/translate.c 2009-03-07 20:55:31 UTC (rev 6753)
@@ -2420,9 +2420,10 @@
}
/* mtfsf */
-GEN_HANDLER(mtfsf, 0x3F, 0x07, 0x16, 0x02010000, PPC_FLOAT)
+GEN_HANDLER(mtfsf, 0x3F, 0x07, 0x16, 0x00010000, PPC_FLOAT)
{
TCGv_i32 t0;
+ int L = ctx->opcode & 0x02000000;
if (unlikely(!ctx->fpu_enabled)) {
gen_exception(ctx, POWERPC_EXCP_FPU);
@@ -2431,7 +2432,10 @@
/* NIP cannot be restored if the memory exception comes from an helper */
gen_update_nip(ctx, ctx->nip - 4);
gen_reset_fpstatus();
- t0 = tcg_const_i32(FM(ctx->opcode));
+ if (L)
+ t0 = tcg_const_i32(0xff);
+ else
+ t0 = tcg_const_i32(FM(ctx->opcode));
gen_helper_store_fpscr(cpu_fpr[rB(ctx->opcode)], t0);
tcg_temp_free_i32(t0);
if (unlikely(Rc(ctx->opcode) != 0)) {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [6753] Implement mtfsf.L encoding,
Blue Swirl <=