summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-02-27 09:21:58 -0800
committerGabe Black <gblack@eecs.umich.edu>2009-02-27 09:21:58 -0800
commit60aab03e854c0d955127d12c63f4c99a36d19d80 (patch)
treeb0e9cc60f4e53c9e7d757242e5a8b02a9ebc7420
parent05de9f4e2cb0771a8f83dc1888c877852e19f1ad (diff)
downloadgem5-60aab03e854c0d955127d12c63f4c99a36d19d80.tar.xz
X86: Implement the int system call interface in the decoder.
-rw-r--r--src/arch/x86/isa/decoder/one_byte_opcodes.isa11
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();