trap.isa revision 2488
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 %(op_decl)s; 40 %(op_rd)s; 41 %(code)s 42 return fault; 43 } 44}}; 45 46def format Trap(code, *opt_flags) {{ 47 orig_code = code 48 cblk = CodeBlock(code) 49 iop = InstObjParams(name, Name, 'SparcStaticInst', cblk, opt_flags) 50 header_output = BasicDeclare.subst(iop) 51 decoder_output = BasicConstructor.subst(iop) 52 decode_block = BasicDecode.subst(iop) 53 exec_output = TrapExecute.subst(iop) 54}}; 55