trap.isa revision 2469
1//////////////////////////////////////////////////////////////////// 2// 3// Trap instructions 4// 5 6output header {{ 7 /** 8 * Base class for trap instructions, 9 * or instructions that always fault. 10 */ 11 class Trap : public SparcStaticInst 12 { 13 protected: 14 15 // Constructor 16 Trap(const char *mnem, ExtMachInst _machInst, OpClass __opClass) : 17 SparcStaticInst(mnem, _machInst, __opClass) 18 { 19 } 20 21 std::string generateDisassembly(Addr pc, 22 const SymbolTable *symtab) const; 23 }; 24}}; 25 26output decoder {{ 27 std::string Trap::generateDisassembly(Addr pc, 28 const SymbolTable *symtab) const 29 { 30 return "Trap instruction\n"; 31 } 32}}; 33 34def template TrapExecute {{ 35 Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, 36 Trace::InstRecord *traceData) const 37 { 38 Fault fault = NoFault; 39 %(code)s 40 return fault; 41 } 42}}; 43 44def format Trap(code, *opt_flags) {{ 45 orig_code = code 46 cblk = CodeBlock(code) 47 iop = InstObjParams(name, Name, 'SparcStaticInst', cblk, opt_flags) 48 header_output = BasicDeclare.subst(iop) 49 decoder_output = BasicConstructor.subst(iop) 50 decode_block = BasicDecode.subst(iop) 51 exec_output = TrapExecute.subst(iop) 52}}; 53