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