unknown.hh revision 12321
112321Sar4jc@virginia.edu/* 212321Sar4jc@virginia.edu * Copyright (c) 2015 RISC-V Foundation 312321Sar4jc@virginia.edu * Copyright (c) 2017 The University of Virginia 412321Sar4jc@virginia.edu * All rights reserved. 512321Sar4jc@virginia.edu * 612321Sar4jc@virginia.edu * Redistribution and use in source and binary forms, with or without 712321Sar4jc@virginia.edu * modification, are permitted provided that the following conditions are 812321Sar4jc@virginia.edu * met: redistributions of source code must retain the above copyright 912321Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer; 1012321Sar4jc@virginia.edu * redistributions in binary form must reproduce the above copyright 1112321Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer in the 1212321Sar4jc@virginia.edu * documentation and/or other materials provided with the distribution; 1312321Sar4jc@virginia.edu * neither the name of the copyright holders nor the names of its 1412321Sar4jc@virginia.edu * contributors may be used to endorse or promote products derived from 1512321Sar4jc@virginia.edu * this software without specific prior written permission. 1612321Sar4jc@virginia.edu * 1712321Sar4jc@virginia.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1812321Sar4jc@virginia.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1912321Sar4jc@virginia.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2012321Sar4jc@virginia.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2112321Sar4jc@virginia.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2212321Sar4jc@virginia.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2312321Sar4jc@virginia.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2412321Sar4jc@virginia.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2512321Sar4jc@virginia.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2612321Sar4jc@virginia.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2712321Sar4jc@virginia.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2812321Sar4jc@virginia.edu * 2912321Sar4jc@virginia.edu * Authors: Alec Roelke 3012321Sar4jc@virginia.edu */ 3112321Sar4jc@virginia.edu 3212321Sar4jc@virginia.edu#ifndef __ARCH_RISCV_UNKNOWN_INST_HH__ 3312321Sar4jc@virginia.edu#define __ARCH_RISCV_UNKNOWN_INST_HH__ 3412321Sar4jc@virginia.edu 3512321Sar4jc@virginia.edu#include <memory> 3612321Sar4jc@virginia.edu#include <string> 3712321Sar4jc@virginia.edu 3812321Sar4jc@virginia.edu#include "arch/riscv/faults.hh" 3912321Sar4jc@virginia.edu#include "arch/riscv/insts/bitfields.hh" 4012321Sar4jc@virginia.edu#include "arch/riscv/insts/static_inst.hh" 4112321Sar4jc@virginia.edu#include "cpu/exec_context.hh" 4212321Sar4jc@virginia.edu#include "cpu/static_inst.hh" 4312321Sar4jc@virginia.edu 4412321Sar4jc@virginia.edunamespace RiscvISA 4512321Sar4jc@virginia.edu{ 4612321Sar4jc@virginia.edu 4712321Sar4jc@virginia.edu/** 4812321Sar4jc@virginia.edu * Static instruction class for unknown (illegal) instructions. 4912321Sar4jc@virginia.edu * These cause simulator termination if they are executed in a 5012321Sar4jc@virginia.edu * non-speculative mode. This is a leaf class. 5112321Sar4jc@virginia.edu */ 5212321Sar4jc@virginia.educlass Unknown : public RiscvStaticInst 5312321Sar4jc@virginia.edu{ 5412321Sar4jc@virginia.edu public: 5512321Sar4jc@virginia.edu Unknown(MachInst _machInst) 5612321Sar4jc@virginia.edu : RiscvStaticInst("unknown", _machInst, No_OpClass) 5712321Sar4jc@virginia.edu {} 5812321Sar4jc@virginia.edu 5912321Sar4jc@virginia.edu Fault 6012321Sar4jc@virginia.edu execute(ExecContext *, Trace::InstRecord *) const override 6112321Sar4jc@virginia.edu { 6212321Sar4jc@virginia.edu return std::make_shared<UnknownInstFault>(); 6312321Sar4jc@virginia.edu } 6412321Sar4jc@virginia.edu 6512321Sar4jc@virginia.edu std::string 6612321Sar4jc@virginia.edu generateDisassembly(Addr pc, const SymbolTable *symtab) const override 6712321Sar4jc@virginia.edu { 6812321Sar4jc@virginia.edu return csprintf("unknown opcode %#02x", OPCODE); 6912321Sar4jc@virginia.edu } 7012321Sar4jc@virginia.edu}; 7112321Sar4jc@virginia.edu 7212321Sar4jc@virginia.edu} 7312321Sar4jc@virginia.edu 7412321Sar4jc@virginia.edu#endif // __ARCH_RISCV_UNKNOWN_INST_HH__