diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-10-22 00:23:50 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-10-22 00:23:50 -0700 |
commit | 255685534aab23d52a08ea5f87fb4dffadff2899 (patch) | |
tree | 09c20cde20f4f27c5b46632a6f06caad88168894 /src/arch/x86/isa | |
parent | 29676286c8b52014c44f5001ff2d039881189030 (diff) | |
download | gem5-255685534aab23d52a08ea5f87fb4dffadff2899.tar.xz |
X86: Make syscall instructions non-speculative in SE.
Diffstat (limited to 'src/arch/x86/isa')
-rw-r--r-- | src/arch/x86/isa/decoder/one_byte_opcodes.isa | 3 | ||||
-rw-r--r-- | src/arch/x86/isa/decoder/two_byte_opcodes.isa | 6 |
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(); |