diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2009-02-27 09:21:58 -0800 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2009-02-27 09:21:58 -0800 |
commit | 60aab03e854c0d955127d12c63f4c99a36d19d80 (patch) | |
tree | b0e9cc60f4e53c9e7d757242e5a8b02a9ebc7420 /src/arch/x86/isa | |
parent | 05de9f4e2cb0771a8f83dc1888c877852e19f1ad (diff) | |
download | gem5-60aab03e854c0d955127d12c63f4c99a36d19d80.tar.xz |
X86: Implement the int system call interface in the decoder.
Diffstat (limited to 'src/arch/x86/isa')
-rw-r--r-- | src/arch/x86/isa/decoder/one_byte_opcodes.isa | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/arch/x86/isa/decoder/one_byte_opcodes.isa b/src/arch/x86/isa/decoder/one_byte_opcodes.isa index 005864f02..817986232 100644 --- a/src/arch/x86/isa/decoder/one_byte_opcodes.isa +++ b/src/arch/x86/isa/decoder/one_byte_opcodes.isa @@ -418,7 +418,18 @@ default: Inst::RET_FAR(); } 0x4: int3(); +#if FULL_SYSTEM 0x5: int_Ib(); +#else + // Really only the LSB matters, but the predecoder will sign + // extend it, and there's no easy way to specify only checking + // the first byte. + 0x5: decode IMMEDIATE { + 0xffffffffffffff80: + SyscallInst::int80('xc->syscall(Rax)', IsSyscall); + default: int_Ib(); + } +#endif 0x6: decode MODE_SUBMODE { 0x0: Inst::UD2(); default: into(); |