summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-08-20 00:42:14 -0700
committerGabe Black <gblack@eecs.umich.edu>2009-08-20 00:42:14 -0700
commite8c0ca5cd15be99ea8b56ac64824fce50e76d577 (patch)
tree2ceb54ada8edb4ce73a386f57783348e3e3d6746 /src/arch/x86/isa
parent843d06466892d1dcce79e7fcdcdbb5d50b40b922 (diff)
downloadgem5-e8c0ca5cd15be99ea8b56ac64824fce50e76d577.tar.xz
X86: Fix the decoding for and fill out FST and FSTP.
Diffstat (limited to 'src/arch/x86/isa')
-rw-r--r--src/arch/x86/isa/decoder/x87.isa4
-rw-r--r--src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py8
2 files changed, 10 insertions, 2 deletions
diff --git a/src/arch/x86/isa/decoder/x87.isa b/src/arch/x86/isa/decoder/x87.isa
index 9a6473141..cfd69b3ba 100644
--- a/src/arch/x86/isa/decoder/x87.isa
+++ b/src/arch/x86/isa/decoder/x87.isa
@@ -249,8 +249,8 @@ format WarnUnimpl {
0x3: Inst::UD2();
default: fisttp();
}
- 0x2: Inst::FST(Mq);
- 0x3: Inst::FSTP(Mq);
+ 0x2: Inst::FST(Eq);
+ 0x3: Inst::FSTP(Eq);
0x4: decode MODRM_MOD {
0x3: fucom();
default: frstor();
diff --git a/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py b/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
index 2a4c3f0ed..4837e1b45 100644
--- a/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
+++ b/src/arch/x86/isa/insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
@@ -65,6 +65,10 @@ def macroop FLD_P {
movfp st(-1), ufp1, spm=-1
};
+def macroop FST_R {
+ movfp sti, st(0)
+};
+
def macroop FST_M {
stfp st(0), seg, sib, disp
};
@@ -74,6 +78,10 @@ def macroop FST_P {
stfp st(0), seg, riprel, disp
};
+def macroop FSTP_R {
+ movfp sti, st(0), spm=1
+};
+
def macroop FSTP_M {
movfp ufp1, st(0), spm=1
stfp ufp1, seg, sib, disp