[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 028/111] m68k: allow fpu to manage double data type.
From: |
Bryce Lanham |
Subject: |
[Qemu-devel] [PATCH 028/111] m68k: allow fpu to manage double data type. |
Date: |
Wed, 17 Aug 2011 15:46:33 -0500 |
From: Laurent Vivier <address@hidden>
This patch allows to manage instructions like "fcmpd #2.2, %fp0".
Original function manages only data accessed through an address register.
Signed-off-by: Laurent Vivier <address@hidden>
---
target-m68k/translate.c | 48 ++++++++++++++--------------------------------
1 files changed, 15 insertions(+), 33 deletions(-)
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index d4d2f44..a91f557 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -2939,6 +2939,7 @@ DISAS_INSN(fpu)
TCGv_i64 dest;
TCGv_i64 res;
TCGv tmp32;
+ TCGv reg;
int round;
int set_dest;
int opsize;
@@ -3111,40 +3112,21 @@ DISAS_INSN(fpu)
goto undef;
}
if (opsize == OS_DOUBLE) {
- tmp32 = tcg_temp_new_i32();
- tcg_gen_mov_i32(tmp32, AREG(insn, 0));
- switch ((insn >> 3) & 7) {
- case 2:
- case 3:
- break;
- case 4:
- tcg_gen_addi_i32(tmp32, tmp32, -8);
- break;
- case 5:
- offset = ldsw_code(s->pc);
- s->pc += 2;
- tcg_gen_addi_i32(tmp32, tmp32, offset);
- break;
- case 7:
- offset = ldsw_code(s->pc);
- offset += s->pc - 2;
- s->pc += 2;
- tcg_gen_addi_i32(tmp32, tmp32, offset);
- break;
- default:
- goto undef;
- }
- src = gen_load64(s, tmp32);
- switch ((insn >> 3) & 7) {
- case 3:
- tcg_gen_addi_i32(tmp32, tmp32, 8);
- tcg_gen_mov_i32(AREG(insn, 0), tmp32);
- break;
- case 4:
- tcg_gen_mov_i32(AREG(insn, 0), tmp32);
- break;
+ if ((insn & 0x3f) == 0x3c) {
+ src = gen_load64(s, tcg_const_i32(s->pc));
+ s->pc += 8;
+ } else {
+ tmp32 = gen_lea(s, insn, opsize);
+ if (IS_NULL_QREG(tmp32)) {
+ gen_addr_fault(s);
+ return;
+ }
+ src = gen_load64(s, tmp32);
+ if ( ((insn >> 3) & 7) == 3) { /* post-increment */
+ reg = AREG(insn, 0);
+ tcg_gen_addi_i32(reg, reg, opsize_bytes(opsize));
+ }
}
- tcg_temp_free_i32(tmp32);
} else {
SRC_EA(tmp32, opsize, 1, NULL);
src = tcg_temp_new_i64();
--
1.7.2.3
- [Qemu-devel] [PATCH 038/111] m68k: add EA support for negx, (continued)
- [Qemu-devel] [PATCH 038/111] m68k: add EA support for negx, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 056/111] m68k-linux-user: add '--enable-emulop', Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 080/111] m68k: add fcos instruction, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 064/111] m68k: more tests, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 072/111] m68k: add flog10, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 021/111] m68k: add "byte", "word" and memory rotate., Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 078/111] m68k: add ftan instruction, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 032/111] m68k: add linkl instruction, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 036/111] m68k: correct neg condition code flags computation, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 024/111] m68k: add cas, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 028/111] m68k: allow fpu to manage double data type.,
Bryce Lanham <=
- [Qemu-devel] [PATCH 077/111] m68k: add facos instruction, Bryce Lanham, 2011/08/17
- [Qemu-devel] [PATCH 026/111] m68k: define fcntl constants, Bryce Lanham, 2011/08/17
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Rob Landley, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Natalia Portillo, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Rob Landley, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Natalia Portillo, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Rob Landley, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Natalia Portillo, 2011/08/20
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Rob Landley, 2011/08/21
- Re: [Qemu-devel] [RFC][PATCH 000/111] QEMU m68k core additions, Natalia Portillo, 2011/08/21