From e8c0ca5cd15be99ea8b56ac64824fce50e76d577 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Thu, 20 Aug 2009 00:42:14 -0700 Subject: [PATCH] X86: Fix the decoding for and fill out FST and FSTP. --- src/arch/x86/isa/decoder/x87.isa | 4 ++-- .../load_or_store_floating_point.py | 8 ++++++++ 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 -- 2.30.2