diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2007-06-19 17:56:06 +0000 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2007-06-19 17:56:06 +0000 |
commit | d49649279312fe8d05c27a91f94992d8d584c35b (patch) | |
tree | c094438ae522f3438438bf0f5865b9681470608a /src/arch/x86/isa/insts/control_transfer/call.py | |
parent | 4486762a8519783aaec7ebe6a391355cd30792e0 (diff) | |
download | gem5-d49649279312fe8d05c27a91f94992d8d584c35b.tar.xz |
Make instructions that are illegal in 64 bit mode not do the wrong thing in 64 bit mode. Also add in more versions of PUSH and POP, and a version of near CALL.
--HG--
extra : convert_revision : 7d8266cdfa54ac25610466b3533d3e9e5433297b
Diffstat (limited to 'src/arch/x86/isa/insts/control_transfer/call.py')
-rw-r--r-- | src/arch/x86/isa/insts/control_transfer/call.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/arch/x86/isa/insts/control_transfer/call.py b/src/arch/x86/isa/insts/control_transfer/call.py index 231db6e40..5cd8a6359 100644 --- a/src/arch/x86/isa/insts/control_transfer/call.py +++ b/src/arch/x86/isa/insts/control_transfer/call.py @@ -53,7 +53,18 @@ # # Authors: Gabe Black -microcode = "" +microcode = ''' +def macroop CALL_I +{ + .adjust_env "if(machInst.mode.submode == SixtyFourBitMode && env.dataSize == 4) env.dataSize = 8\;" + + limm "NUM_INTREGS+2", "IMMEDIATE" + rdip "NUM_INTREGS+1" + subi "INTREG_RSP", "INTREG_RSP", "env.dataSize" + st "NUM_INTREGS+1", 2, [0, "NUM_INTREGS", "INTREG_RSP"] + wrip "NUM_INTREGS+1", "NUM_INTREGS+2" +}; +''' #let {{ # class CALL(Inst): # "GenFault ${new UnimpInstFault}" |