summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch')
-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