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