////////////////////////////////////////////////////////////////////
//
// Unknown instructions
//

output header {{
        /**
         * Class for Unknown/Illegal instructions
         */
        class Unknown : public SparcStaticInst
        {
          public:

            // Constructor
            Unknown(ExtMachInst _machInst) :
                    SparcStaticInst("unknown", _machInst, No_OpClass)
            {
            }

            %(BasicExecDeclare)s

            std::string generateDisassembly(Addr pc,
                    const SymbolTable *symtab) const;

        };
}};

output decoder {{
        std::string Unknown::generateDisassembly(Addr pc,
                const SymbolTable *symtab) const
        {
            return "Unknown instruction";
        }
}};

output exec {{
        Fault Unknown::execute(%(CPU_exec_context)s *xc,
                Trace::InstRecord *traceData) const
        {
            return new IllegalInstruction;
        }
}};

def format Unknown() {{
        decode_block = 'return new Unknown(machInst);\n'
}};