gem5 v24.0.0.0
Loading...
Searching...
No Matches
unimp.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
9 * redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution;
12 * neither the name of the copyright holders nor the names of its
13 * contributors may be used to endorse or promote products derived from
14 * this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef __ARCH_SPARC_INSTS_UNIMP_HH__
30#define __ARCH_SPARC_INSTS_UNIMP_HH__
31
32#include <memory>
33
36#include "base/cprintf.hh"
37
38namespace gem5
39{
40
41namespace SparcISA
42{
43
45//
46// Unimplemented instructions
47//
48
57{
58 public:
60 FailUnimplemented(const char *_mnemonic, ExtMachInst _machInst) :
61 SparcStaticInst(_mnemonic, _machInst, No_OpClass)
62 {
63 flags[IsInvalid] = true;
64 }
65
66 Fault
67 execute(ExecContext *xc, trace::InstRecord *traceData) const override
68 {
69 return std::make_shared<GenericISA::M5PanicFault>(
70 "attempt to execute unimplemented instruction '%s' (inst %#08x)",
72 }
73
74 std::string
76 Addr pc, const loader::SymbolTable *symtab) const override
77 {
78 return csprintf("%-10s (unimplemented)", mnemonic);
79 }
80};
81
92{
93 private:
95 mutable bool warned;
96
97 public:
99 WarnUnimplemented(const char *_mnemonic, ExtMachInst _machInst) :
100 SparcStaticInst(_mnemonic, _machInst, No_OpClass), warned(false)
101 {}
102
103 Fault
104 execute(ExecContext *xc, trace::InstRecord *traceData) const override
105 {
106 if (!warned) {
107 return std::make_shared<GenericISA::M5WarnFault>(
108 "instruction '%s' unimplemented\n", mnemonic);
109 warned = true;
110 }
111 return NoFault;
112 }
113
114 std::string
116 Addr pc, const loader::SymbolTable *symtab) const override
117 {
118 return csprintf("%-10s (unimplemented)", mnemonic);
119 }
120};
121
122} // namespace SparcISA
123} // namespace gem5
124
125#endif // __ARCH_SPARC_INSTS_UNIMP_HH__
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
Static instruction class for unimplemented instructions that cause simulator termination.
Definition unimp.hh:57
FailUnimplemented(const char *_mnemonic, ExtMachInst _machInst)
Constructor.
Definition unimp.hh:60
Fault execute(ExecContext *xc, trace::InstRecord *traceData) const override
Definition unimp.hh:67
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition unimp.hh:75
Base class for all SPARC static instructions.
Base class for unimplemented instructions that cause a warning to be printed (but do not terminate si...
Definition unimp.hh:92
WarnUnimplemented(const char *_mnemonic, ExtMachInst _machInst)
Constructor.
Definition unimp.hh:99
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition unimp.hh:115
Fault execute(ExecContext *xc, trace::InstRecord *traceData) const override
Definition unimp.hh:104
bool warned
Have we warned on this instruction yet?
Definition unimp.hh:95
const char * mnemonic
Base mnemonic (e.g., "add").
std::bitset< Num_Flags > flags
Flag values for this instruction.
Bitfield< 4 > pc
uint64_t ExtMachInst
Definition types.hh:42
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
std::shared_ptr< FaultBase > Fault
Definition types.hh:249
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147
std::string csprintf(const char *format, const Args &...args)
Definition cprintf.hh:161
constexpr decltype(nullptr) NoFault
Definition types.hh:253

Generated on Tue Jun 18 2024 16:24:00 for gem5 by doxygen 1.11.0