basic.isa revision 2104
12568SN/A// -*- mode:c++ -*- 28922Swilliam.wang@arm.com 38713Sandreas.hansson@arm.com// Declarations for execute() methods. 48713Sandreas.hansson@arm.comdef template BasicExecDeclare {{ 58713Sandreas.hansson@arm.com Fault execute(%(CPU_exec_context)s *, Trace::InstRecord *) const; 68713Sandreas.hansson@arm.com}}; 78713Sandreas.hansson@arm.com 88713Sandreas.hansson@arm.com// Basic instruction class declaration template. 98713Sandreas.hansson@arm.comdef template BasicDeclare {{ 108713Sandreas.hansson@arm.com /** 118713Sandreas.hansson@arm.com * Static instruction class for "%(mnemonic)s". 128713Sandreas.hansson@arm.com */ 138713Sandreas.hansson@arm.com class %(class_name)s : public %(base_class)s 142568SN/A { 152568SN/A public: 162568SN/A /// Constructor. 172568SN/A %(class_name)s(MachInst machInst); 182568SN/A %(BasicExecDeclare)s 192568SN/A }; 202568SN/A}}; 212568SN/A 222568SN/A// Basic instruction class constructor template. 232568SN/Adef template BasicConstructor {{ 242568SN/A inline %(class_name)s::%(class_name)s(MachInst machInst) : %(base_class)s("%(mnemonic)s", machInst, %(op_class)s) 252568SN/A { 262568SN/A %(constructor)s; 272568SN/A } 282568SN/A}}; 292568SN/A 302568SN/A// Basic instruction class execute method template. 312568SN/Adef template BasicExecute {{ 322568SN/A Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const 332568SN/A { 342568SN/A Fault fault = No_Fault; 352568SN/A 362568SN/A %(fp_enable_check)s; 372568SN/A %(op_decl)s; 382568SN/A %(op_rd)s; 392665Ssaidi@eecs.umich.edu %(code)s; 402665Ssaidi@eecs.umich.edu 412665Ssaidi@eecs.umich.edu if(fault == No_Fault) 428713Sandreas.hansson@arm.com { 432568SN/A %(op_wb)s; 442568SN/A } 452568SN/A return fault; 462982Sstever@eecs.umich.edu } 478713Sandreas.hansson@arm.com}}; 488713Sandreas.hansson@arm.com 492568SN/A// Basic decode template. 502568SN/Adef template BasicDecode {{ 512568SN/A return new %(class_name)s(machInst); 529164Sandreas.hansson@arm.com}}; 532568SN/A 544762Snate@binkert.org// Basic decode template, passing mnemonic in as string arg to constructor. 552568SN/Adef template BasicDecodeWithMnemonic {{ 569164Sandreas.hansson@arm.com return new %(class_name)s("%(mnemonic)s", machInst); 579164Sandreas.hansson@arm.com}}; 588851Sandreas.hansson@arm.com 599164Sandreas.hansson@arm.com// The most basic instruction format... used only for a few misc. insts 608713Sandreas.hansson@arm.comdef format BasicOp(code, *flags) {{ 619164Sandreas.hansson@arm.com iop = InstObjParams(name, Name, 'MipsStaticInst', CodeBlock(code), flags) 629164Sandreas.hansson@arm.com header_output = BasicDeclare.subst(iop) 639164Sandreas.hansson@arm.com decoder_output = BasicConstructor.subst(iop) 648851Sandreas.hansson@arm.com decode_block = BasicDecode.subst(iop) 658713Sandreas.hansson@arm.com exec_output = BasicExecute.subst(iop) 668713Sandreas.hansson@arm.com}}; 678713Sandreas.hansson@arm.com