From: Gabe Black Date: Tue, 14 Sep 2010 19:27:30 +0000 (-0700) Subject: X86: Make unrecognized instructions behave better in x86. X-Git-Tag: stable_2012_02_02~814 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0bbd88eb40e553deaabd6fbc935a596125701a86;p=gem5.git X86: Make unrecognized instructions behave better in x86. --- diff --git a/src/arch/x86/faults.cc b/src/arch/x86/faults.cc index 4c8fb33c2..4f2d97f90 100644 --- a/src/arch/x86/faults.cc +++ b/src/arch/x86/faults.cc @@ -269,6 +269,13 @@ namespace X86ISA #else + void + InvalidOpcode::invoke(ThreadContext * tc, StaticInstPtr inst) + { + panic("Unrecognized/invalid instruction executed:\n %s", + inst->machInst); + } + void PageFault::invoke(ThreadContext * tc, StaticInstPtr inst) { diff --git a/src/arch/x86/faults.hh b/src/arch/x86/faults.hh index f98ef72e9..cfb654b62 100644 --- a/src/arch/x86/faults.hh +++ b/src/arch/x86/faults.hh @@ -250,6 +250,11 @@ namespace X86ISA InvalidOpcode() : X86Fault("Invalid-Opcode", "#UD", 6) {} + +#if !FULL_SYSTEM + void invoke(ThreadContext * tc, + StaticInstPtr inst = StaticInst::nullStaticInstPtr); +#endif }; class DeviceNotAvailable : public X86Fault diff --git a/src/arch/x86/isa/formats/unknown.isa b/src/arch/x86/isa/formats/unknown.isa index 9b283b5d7..11751e861 100644 --- a/src/arch/x86/isa/formats/unknown.isa +++ b/src/arch/x86/isa/formats/unknown.isa @@ -77,8 +77,7 @@ output exec {{ Fault Unknown::execute(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const { - warn("No instructions are implemented for X86!\n"); - return NoFault; + return new InvalidOpcode(); } }};