summaryrefslogtreecommitdiff
path: root/src/arch/x86/insts/static_inst.cc
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-10-02 22:57:33 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-10-02 22:57:33 -0700
commit3e644b48bbbc3c0c3f3dd6bb158ea7b9c2024424 (patch)
tree358ffe6a7e3ffc1d940f4b0b4a9193278b5ce48f /src/arch/x86/insts/static_inst.cc
parenta56c651980921d210f2c48f84ce5d3445fc38475 (diff)
downloadgem5-3e644b48bbbc3c0c3f3dd6bb158ea7b9c2024424.tar.xz
X86: Fix x87 floating point stack register indexing.
--HG-- extra : convert_revision : b515ec20cbfc50b38aa7da6cf4d465acf9054c08
Diffstat (limited to 'src/arch/x86/insts/static_inst.cc')
-rw-r--r--src/arch/x86/insts/static_inst.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/arch/x86/insts/static_inst.cc b/src/arch/x86/insts/static_inst.cc
index 4f6ec5390..510295157 100644
--- a/src/arch/x86/insts/static_inst.cc
+++ b/src/arch/x86/insts/static_inst.cc
@@ -198,13 +198,18 @@ namespace X86ISA
return;
}
fpindex -= NumMMXRegs;
- if(fpindex < NumXMMRegs) {
+ if(fpindex < NumXMMRegs * 2) {
ccprintf(os, "%%xmm%d_%s", fpindex / 2,
(fpindex % 2) ? "high": "low");
return;
}
- fpindex -= NumXMMRegs;
- ccprintf(os, "%%ufp%d", fpindex);
+ fpindex -= NumXMMRegs * 2;
+ if(fpindex < NumMicroFpRegs) {
+ ccprintf(os, "%%ufp%d", fpindex);
+ return;
+ }
+ fpindex -= NumMicroFpRegs;
+ ccprintf(os, "%%st(%d)", fpindex);
} else {
switch (reg - Ctrl_Base_DepTag) {
default: