From 0bbd88eb40e553deaabd6fbc935a596125701a86 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Tue, 14 Sep 2010 12:27:30 -0700 Subject: X86: Make unrecognized instructions behave better in x86. --- src/arch/x86/faults.cc | 7 +++++++ src/arch/x86/faults.hh | 5 +++++ src/arch/x86/isa/formats/unknown.isa | 3 +-- 3 files changed, 13 insertions(+), 2 deletions(-) (limited to 'src/arch/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(); } }}; -- cgit v1.2.3