nop.isa revision 2516
110263Satgutier@umich.edu//////////////////////////////////////////////////////////////////// 210263Satgutier@umich.edu// 310263Satgutier@umich.edu// Nop instruction 410263Satgutier@umich.edu// 510263Satgutier@umich.edu 610263Satgutier@umich.eduoutput header {{ 710263Satgutier@umich.edu /** 810263Satgutier@umich.edu * Nop class. 910263Satgutier@umich.edu */ 1010263Satgutier@umich.edu class Nop : public SparcStaticInst 1110263Satgutier@umich.edu { 1210263Satgutier@umich.edu public: 1310263Satgutier@umich.edu // Constructor 1410263Satgutier@umich.edu Nop(const char *mnem, ExtMachInst _machInst, OpClass __opClass) : 1510263Satgutier@umich.edu SparcStaticInst(mnem, _machInst, __opClass) 1610263Satgutier@umich.edu { 1710263Satgutier@umich.edu } 1810263Satgutier@umich.edu 1910263Satgutier@umich.edu // All Nop instructions do the same thing, so this can be 2010263Satgutier@umich.edu // defined here. Nops can be defined directly, so there needs 2110263Satgutier@umich.edu // to be a default implementation 2210263Satgutier@umich.edu Fault execute(%(CPU_exec_context)s *xc, 2310263Satgutier@umich.edu Trace::InstRecord *traceData) const 2410263Satgutier@umich.edu { 2510263Satgutier@umich.edu //Nothing to see here, move along 2610263Satgutier@umich.edu return NoFault; 2710263Satgutier@umich.edu } 2810263Satgutier@umich.edu 2910263Satgutier@umich.edu std::string generateDisassembly(Addr pc, 3010263Satgutier@umich.edu const SymbolTable *symtab) const; 3110263Satgutier@umich.edu }; 3210263Satgutier@umich.edu}}; 3310263Satgutier@umich.edu 3410263Satgutier@umich.eduoutput decoder {{ 3510263Satgutier@umich.edu std::string Nop::generateDisassembly(Addr pc, 3610263Satgutier@umich.edu const SymbolTable *symtab) const 3710263Satgutier@umich.edu { 3810263Satgutier@umich.edu std::stringstream response; 3910263Satgutier@umich.edu printMnemonic(response, mnemonic); 4010263Satgutier@umich.edu return response.str(); 4110263Satgutier@umich.edu } 4210263Satgutier@umich.edu}}; 4310263Satgutier@umich.edu 4410263Satgutier@umich.edudef template NopExecute {{ 4510263Satgutier@umich.edu Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, 4610263Satgutier@umich.edu Trace::InstRecord *traceData) const 4710263Satgutier@umich.edu { 4810263Satgutier@umich.edu //Nothing to see here, move along 4910263Satgutier@umich.edu return NoFault; 5010263Satgutier@umich.edu } 5110263Satgutier@umich.edu}}; 5210263Satgutier@umich.edu 5310263Satgutier@umich.edu// Primary format for integer operate instructions: 5410263Satgutier@umich.edudef format Nop(code, *opt_flags) {{ 5510263Satgutier@umich.edu orig_code = code 5610263Satgutier@umich.edu cblk = CodeBlock(code) 5710263Satgutier@umich.edu iop = InstObjParams(name, Name, 'Nop', cblk, opt_flags) 5810263Satgutier@umich.edu header_output = BasicDeclare.subst(iop) 5910263Satgutier@umich.edu decoder_output = BasicConstructor.subst(iop) 6010263Satgutier@umich.edu decode_block = BasicDecode.subst(iop) 6110263Satgutier@umich.edu exec_output = NopExecute.subst(iop) 6210263Satgutier@umich.edu}}; 6310263Satgutier@umich.edu