tlbop.isa revision 2038
111104Spower.jg@gmail.com//////////////////////////////////////////////////////////////////// 211104Spower.jg@gmail.com// 311104Spower.jg@gmail.com// TlbOp instructions 411104Spower.jg@gmail.com// 511104Spower.jg@gmail.com 611104Spower.jg@gmail.comoutput header {{ 711104Spower.jg@gmail.com /** 811104Spower.jg@gmail.com * Base class for integer operations. 911104Spower.jg@gmail.com */ 1011104Spower.jg@gmail.com class TlbOp : public MipsStaticInst 1111104Spower.jg@gmail.com { 1211104Spower.jg@gmail.com protected: 1311104Spower.jg@gmail.com 1411104Spower.jg@gmail.com /// Constructor 1511104Spower.jg@gmail.com TlbOp(const char *mnem, MachInst _machInst, OpClass __opClass) : MipsStaticInst(mnem, _machInst, __opClass) 1611104Spower.jg@gmail.com { 1711104Spower.jg@gmail.com } 1811104Spower.jg@gmail.com 1911104Spower.jg@gmail.com std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const; 2011104Spower.jg@gmail.com }; 2111104Spower.jg@gmail.com}}; 2211104Spower.jg@gmail.com 2311104Spower.jg@gmail.comoutput decoder {{ 2411104Spower.jg@gmail.com std::string TlbOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const 2511104Spower.jg@gmail.com { 2611104Spower.jg@gmail.com return "Disassembly of integer instruction\n"; 2711104Spower.jg@gmail.com } 2811104Spower.jg@gmail.com}}; 2911104Spower.jg@gmail.com 3011104Spower.jg@gmail.comdef template TlbOpExecute {{ 3111104Spower.jg@gmail.com Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const 3211104Spower.jg@gmail.com { 3311104Spower.jg@gmail.com //Call into the trap handler with the appropriate fault 3411104Spower.jg@gmail.com return No_Fault; 3511104Spower.jg@gmail.com } 3611104Spower.jg@gmail.com 3711104Spower.jg@gmail.com //Write the resulting state to the execution context 3811104Spower.jg@gmail.com %(op_wb)s; 3911104Spower.jg@gmail.com 4012564Sgabeblack@google.com return No_Fault; 4113774Sandreas.sandberg@arm.com } 4213774Sandreas.sandberg@arm.com}}; 4312564Sgabeblack@google.com 4411104Spower.jg@gmail.com// Primary format for integer operate instructions: 4511104Spower.jg@gmail.comdef format TlbOp(code, *opt_flags) {{ 4611104Spower.jg@gmail.com orig_code = code 4711104Spower.jg@gmail.com cblk = CodeBlock(code) 4811104Spower.jg@gmail.com iop = InstObjParams(name, Name, 'MipsStaticInst', cblk, opt_flags) 4911104Spower.jg@gmail.com header_output = BasicDeclare.subst(iop) 5011104Spower.jg@gmail.com decoder_output = BasicConstructor.subst(iop) 5111104Spower.jg@gmail.com decode_block = BasicDecodeWithMnemonic.subst(iop) 5211104Spower.jg@gmail.com exec_output = TlbOpExecute.subst(iop) 5311104Spower.jg@gmail.com}}; 5411104Spower.jg@gmail.com