From d49649279312fe8d05c27a91f94992d8d584c35b Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Tue, 19 Jun 2007 17:56:06 +0000 Subject: 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 --- src/arch/x86/isa/insts/control_transfer/call.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/arch/x86/isa/insts') 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}" -- cgit v1.2.3