pseudo.hh (10611:3bba9f2d0c7d) pseudo.hh (10696:b5e5068fcb26)
1/*
2 * Copyright (c) 2014 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
1/*
2 * Copyright (c) 2014 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
14 * Copyright (c) 2007-2008 The Florida State University
15 * All rights reserved.
16 *
14 * Redistribution and use in source and binary forms, with or without
15 * modification, are permitted provided that the following conditions are
16 * met: redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer;
18 * redistributions in binary form must reproduce the above copyright
19 * notice, this list of conditions and the following disclaimer in the
20 * documentation and/or other materials provided with the distribution;
21 * neither the name of the copyright holders nor the names of its

--- 8 unchanged lines hidden (view full) ---

30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *
37 * Authors: Andreas Sandberg
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions are
19 * met: redistributions of source code must retain the above copyright
20 * notice, this list of conditions and the following disclaimer;
21 * redistributions in binary form must reproduce the above copyright
22 * notice, this list of conditions and the following disclaimer in the
23 * documentation and/or other materials provided with the distribution;
24 * neither the name of the copyright holders nor the names of its

--- 8 unchanged lines hidden (view full) ---

33 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 *
40 * Authors: Andreas Sandberg
41 * Stephen Hines
38 */
39
40#ifndef __ARCH_ARM_INSTS_PSEUDO_HH__
41#define __ARCH_ARM_INSTS_PSEUDO_HH__
42
43#include "arch/arm/insts/static_inst.hh"
44
45class DecoderFaultInst : public ArmStaticInst

--- 6 unchanged lines hidden (view full) ---

52 public:
53 DecoderFaultInst(ExtMachInst _machInst);
54
55 Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const;
56
57 std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
58};
59
42 */
43
44#ifndef __ARCH_ARM_INSTS_PSEUDO_HH__
45#define __ARCH_ARM_INSTS_PSEUDO_HH__
46
47#include "arch/arm/insts/static_inst.hh"
48
49class DecoderFaultInst : public ArmStaticInst

--- 6 unchanged lines hidden (view full) ---

56 public:
57 DecoderFaultInst(ExtMachInst _machInst);
58
59 Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const;
60
61 std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
62};
63
64/**
65 * Static instruction class for unimplemented instructions that
66 * cause simulator termination. Note that these are recognized
67 * (legal) instructions that the simulator does not support; the
68 * 'Unknown' class is used for unrecognized/illegal instructions.
69 * This is a leaf class.
70 */
71class FailUnimplemented : public ArmStaticInst
72{
73 private:
74 /// Full mnemonic for MRC and MCR instructions including the
75 /// coproc. register name
76 std::string fullMnemonic;
60
77
78 public:
79 FailUnimplemented(const char *_mnemonic, ExtMachInst _machInst);
80 FailUnimplemented(const char *_mnemonic, ExtMachInst _machInst,
81 const std::string& _fullMnemonic);
82
83 Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const;
84
85 std::string
86 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
87};
88
89/**
90 * Base class for unimplemented instructions that cause a warning
91 * to be printed (but do not terminate simulation). This
92 * implementation is a little screwy in that it will print a
93 * warning for each instance of a particular unimplemented machine
94 * instruction, not just for each unimplemented opcode. Should
95 * probably make the 'warned' flag a static member of the derived
96 * class.
97 */
98class WarnUnimplemented : public ArmStaticInst
99{
100 private:
101 /// Have we warned on this instruction yet?
102 mutable bool warned;
103 /// Full mnemonic for MRC and MCR instructions including the
104 /// coproc. register name
105 std::string fullMnemonic;
106
107 public:
108 WarnUnimplemented(const char *_mnemonic, ExtMachInst _machInst);
109 WarnUnimplemented(const char *_mnemonic, ExtMachInst _machInst,
110 const std::string& _fullMnemonic);
111
112 Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const;
113
114 std::string
115 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
116};
117
118class FlushPipeInst : public ArmStaticInst
119{
120 public:
121 FlushPipeInst(const char *_mnemonic, ExtMachInst _machInst);
122
123 Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const;
124
125 std::string
126 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
127
128};
129
130
61#endif
131#endif