tlbop.isa revision 12234
19241Sandreas.hansson@arm.com// -*- mode:c++ -*-
29717Sandreas.hansson@arm.com
39241Sandreas.hansson@arm.com// Copyright (c) 2007 MIPS Technologies, Inc.
49241Sandreas.hansson@arm.com// All rights reserved.
59241Sandreas.hansson@arm.com//
69241Sandreas.hansson@arm.com// Redistribution and use in source and binary forms, with or without
79241Sandreas.hansson@arm.com// modification, are permitted provided that the following conditions are
89241Sandreas.hansson@arm.com// met: redistributions of source code must retain the above copyright
99241Sandreas.hansson@arm.com// notice, this list of conditions and the following disclaimer;
109241Sandreas.hansson@arm.com// redistributions in binary form must reproduce the above copyright
119241Sandreas.hansson@arm.com// notice, this list of conditions and the following disclaimer in the
129241Sandreas.hansson@arm.com// documentation and/or other materials provided with the distribution;
139241Sandreas.hansson@arm.com// neither the name of the copyright holders nor the names of its
149241Sandreas.hansson@arm.com// contributors may be used to endorse or promote products derived from
159241Sandreas.hansson@arm.com// this software without specific prior written permission.
169241Sandreas.hansson@arm.com//
179241Sandreas.hansson@arm.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
189241Sandreas.hansson@arm.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
199241Sandreas.hansson@arm.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
209241Sandreas.hansson@arm.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
219241Sandreas.hansson@arm.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
229241Sandreas.hansson@arm.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
239241Sandreas.hansson@arm.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
249241Sandreas.hansson@arm.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
259241Sandreas.hansson@arm.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
269241Sandreas.hansson@arm.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
279241Sandreas.hansson@arm.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
289241Sandreas.hansson@arm.com//
299241Sandreas.hansson@arm.com// Authors: Korey Sewell
309241Sandreas.hansson@arm.com
319241Sandreas.hansson@arm.com////////////////////////////////////////////////////////////////////
329241Sandreas.hansson@arm.com//
339241Sandreas.hansson@arm.com// TlbOp instructions
349241Sandreas.hansson@arm.com//
359241Sandreas.hansson@arm.com
369241Sandreas.hansson@arm.comoutput header {{
379241Sandreas.hansson@arm.com        /**
389241Sandreas.hansson@arm.com         * Base class for integer operations.
399241Sandreas.hansson@arm.com         */
409241Sandreas.hansson@arm.com        class TlbOp : public MipsStaticInst
419241Sandreas.hansson@arm.com        {
429241Sandreas.hansson@arm.com                protected:
439241Sandreas.hansson@arm.com
449241Sandreas.hansson@arm.com                /// Constructor
459241Sandreas.hansson@arm.com                TlbOp(const char *mnem, MachInst _machInst, OpClass __opClass) : MipsStaticInst(mnem, _machInst, __opClass)
469241Sandreas.hansson@arm.com                {
479241Sandreas.hansson@arm.com                }
489241Sandreas.hansson@arm.com
499241Sandreas.hansson@arm.com                std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
509241Sandreas.hansson@arm.com        };
519241Sandreas.hansson@arm.com}};
529241Sandreas.hansson@arm.com
539241Sandreas.hansson@arm.comoutput decoder {{
549241Sandreas.hansson@arm.com        std::string TlbOp::generateDisassembly(Addr pc, const SymbolTable *symtab) const
559241Sandreas.hansson@arm.com        {
569241Sandreas.hansson@arm.com                return "Disassembly of integer instruction\n";
579718Sandreas.hansson@arm.com        }
589720Sandreas.hansson@arm.com}};
599717Sandreas.hansson@arm.com
609719Sandreas.hansson@arm.comdef template TlbOpExecute {{
619241Sandreas.hansson@arm.com        Fault %(class_name)s::execute(
629719Sandreas.hansson@arm.com            ExecContext *xc, Trace::InstRecord *traceData) const
639719Sandreas.hansson@arm.com        {
649719Sandreas.hansson@arm.com                //Write the resulting state to the execution context
659719Sandreas.hansson@arm.com                %(op_wb)s;
669241Sandreas.hansson@arm.com
679241Sandreas.hansson@arm.com                //Call into the trap handler with the appropriate fault
689241Sandreas.hansson@arm.com                return No_Fault;
699241Sandreas.hansson@arm.com        }
709241Sandreas.hansson@arm.com}};
719241Sandreas.hansson@arm.com
729241Sandreas.hansson@arm.com// Primary format for integer operate instructions:
739241Sandreas.hansson@arm.comdef format TlbOp(code, *opt_flags) {{
749241Sandreas.hansson@arm.com        orig_code = code
759294Sandreas.hansson@arm.com        cblk = code
769294Sandreas.hansson@arm.com        iop = InstObjParams(name, Name, 'MipsStaticInst', cblk, opt_flags)
779241Sandreas.hansson@arm.com        header_output = BasicDeclare.subst(iop)
789241Sandreas.hansson@arm.com        decoder_output = BasicConstructor.subst(iop)
799241Sandreas.hansson@arm.com        decode_block = BasicDecodeWithMnemonic.subst(iop)
809241Sandreas.hansson@arm.com        exec_output = TlbOpExecute.subst(iop)
819241Sandreas.hansson@arm.com}};
829241Sandreas.hansson@arm.com