summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/insts/data_transfer/stack_operations.py
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-06-14 20:52:22 +0000
committerGabe Black <gblack@eecs.umich.edu>2007-06-14 20:52:22 +0000
commit866cc8214ba1642c2af56ed14e9ca2cf8b1928cf (patch)
tree5de3396fae004a17052103b437858e1d1275854b /src/arch/x86/isa/insts/data_transfer/stack_operations.py
parenta8f65b18bc55fdb8ca888abfd0d991d12602fbf4 (diff)
downloadgem5-866cc8214ba1642c2af56ed14e9ca2cf8b1928cf.tar.xz
Implement a handful more instructions and differentiate macroops based on the operand types they expect.
--HG-- extra : convert_revision : f9c8e694a8c0eb33b988657dca03ab495b65bee8
Diffstat (limited to 'src/arch/x86/isa/insts/data_transfer/stack_operations.py')
-rw-r--r--src/arch/x86/isa/insts/data_transfer/stack_operations.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/arch/x86/isa/insts/data_transfer/stack_operations.py b/src/arch/x86/isa/insts/data_transfer/stack_operations.py
index fff0f749f..b7ec0ec66 100644
--- a/src/arch/x86/isa/insts/data_transfer/stack_operations.py
+++ b/src/arch/x86/isa/insts/data_transfer/stack_operations.py
@@ -54,11 +54,17 @@
# Authors: Gabe Black
microcode = '''
-def macroop POP {
+def macroop POP_R {
.adjust_env "if(machInst.mode.submode == SixtyFourBitMode && env.dataSize == 4) env.dataSize = 8\;"
# There needs to be a load here to actually "pop" the data
addi "INTREG_RSP", "INTREG_RSP", "env.dataSize"
};
+
+def macroop PUSH_R {
+ .adjust_env "if(machInst.mode.submode == SixtyFourBitMode && env.dataSize == 4) env.dataSize = 8\;"
+ subi "INTREG_RSP", "INTREG_RSP", "env.dataSize"
+ # There needs to be a store here to actually "push" the data
+};
'''
#let {{
# class POP(Inst):