summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/insts/data_transfer
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-07-30 13:19:11 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-07-30 13:19:11 -0700
commit4b3a20cdeca2e72606c435ee59abc936cfcb6db2 (patch)
tree5bec9820c84cbca74ea3da66b0f6d676ac04d802 /src/arch/x86/isa/insts/data_transfer
parente70ffb0117bc35ab346970c907a3b557fa816663 (diff)
downloadgem5-4b3a20cdeca2e72606c435ee59abc936cfcb6db2.tar.xz
X86: Implement LEAVE
--HG-- extra : convert_revision : c642d5018ece82c644e1cfa389b2d3dbd6ab5ffd
Diffstat (limited to 'src/arch/x86/isa/insts/data_transfer')
-rw-r--r--src/arch/x86/isa/insts/data_transfer/stack_operations.py9
1 files changed, 9 insertions, 0 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 1c13b44b4..082e24485 100644
--- a/src/arch/x86/isa/insts/data_transfer/stack_operations.py
+++ b/src/arch/x86/isa/insts/data_transfer/stack_operations.py
@@ -141,6 +141,15 @@ def macroop POPA {
ld rax, ss, [0, t0, rsp], "7 * env.dataSize"
addi rsp, rsp, "8 * env.dataSize"
};
+
+def macroop LEAVE {
+ # Make the default data size of pops 64 bits in 64 bit mode
+ .adjust_env oszIn64Override
+
+ mov rsp, rsp, rbp
+ ld rbp, ss, [0, t0, rsp]
+ addi rsp, rsp, dsz
+};
'''
#let {{
# class ENTER(Inst):