summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-04-19 03:24:51 -0700
committerGabe Black <gblack@eecs.umich.edu>2009-04-19 03:24:51 -0700
commit35eea4191bdd2644112641091aaa21ec6d5defef (patch)
tree39ea31f6708e7bd40815bf921c2c1e72f501b998 /src/arch
parentbdd55ec8b6eda4b46288d8f85a5a9fa603cd6ab4 (diff)
downloadgem5-35eea4191bdd2644112641091aaa21ec6d5defef.tar.xz
X86: LEA calculates an address before segmentation.
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/isa/microops/ldstop.isa4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/arch/x86/isa/microops/ldstop.isa b/src/arch/x86/isa/microops/ldstop.isa
index af94cf31e..24ddd0b43 100644
--- a/src/arch/x86/isa/microops/ldstop.isa
+++ b/src/arch/x86/isa/microops/ldstop.isa
@@ -484,7 +484,9 @@ let {{
iop = InstObjParams("lea", "Lea", 'X86ISA::LdStOp',
{"code": "Data = merge(Data, EA, dataSize);",
- "ea_code": calculateEA})
+ "ea_code": '''
+ EA = bits(scale * Index + Base + disp, addressSize * 8 - 1, 0);
+ '''})
header_output += MicroLeaDeclare.subst(iop)
decoder_output += MicroLdStOpConstructor.subst(iop)
exec_output += MicroLeaExecute.subst(iop)