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