summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa/decoder
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2010-10-22 00:23:50 -0700
committerGabe Black <gblack@eecs.umich.edu>2010-10-22 00:23:50 -0700
commit255685534aab23d52a08ea5f87fb4dffadff2899 (patch)
tree09c20cde20f4f27c5b46632a6f06caad88168894 /src/arch/x86/isa/decoder
parent29676286c8b52014c44f5001ff2d039881189030 (diff)
downloadgem5-255685534aab23d52a08ea5f87fb4dffadff2899.tar.xz
X86: Make syscall instructions non-speculative in SE.
Diffstat (limited to 'src/arch/x86/isa/decoder')
-rw-r--r--src/arch/x86/isa/decoder/one_byte_opcodes.isa3
-rw-r--r--src/arch/x86/isa/decoder/two_byte_opcodes.isa6
2 files changed, 6 insertions, 3 deletions
diff --git a/src/arch/x86/isa/decoder/one_byte_opcodes.isa b/src/arch/x86/isa/decoder/one_byte_opcodes.isa
index 4874b6102..80f603503 100644
--- a/src/arch/x86/isa/decoder/one_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/one_byte_opcodes.isa
@@ -402,7 +402,8 @@
// the first byte.
0x5: decode IMMEDIATE {
-0x80:
- SyscallInst::int80('xc->syscall(Rax)', IsSyscall);
+ SyscallInst::int80('xc->syscall(Rax)',
+ IsSyscall, IsNonSpeculative);
default: int_Ib();
}
#endif
diff --git a/src/arch/x86/isa/decoder/two_byte_opcodes.isa b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
index b8ed1fdbe..27824c8aa 100644
--- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa
@@ -228,7 +228,8 @@
0x1: Inst::SYSCALL_LEGACY();
}
#else
- 0x05: SyscallInst::syscall('xc->syscall(Rax)', IsSyscall);
+ 0x05: SyscallInst::syscall('xc->syscall(Rax)',
+ IsSyscall, IsNonSpeculative);
#endif
0x06: Inst::CLTS();
0x07: decode MODE_SUBMODE {
@@ -404,7 +405,8 @@
#if FULL_SYSTEM
0x4: sysenter();
#else
- 0x4: SyscallInst::sysenter('xc->syscall(Rax)', IsSyscall);
+ 0x4: SyscallInst::sysenter('xc->syscall(Rax)',
+ IsSyscall, IsNonSpeculative);
#endif
0x5: sysexit();
0x6: Inst::UD2();