gem5  v20.1.0.0
misc.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010, 2012-2013, 2017-2018 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  * 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
22  * contributors may be used to endorse or promote products derived from
23  * this software without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
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 
38 #ifndef __ARCH_ARM_INSTS_MISC_HH__
39 #define __ARCH_ARM_INSTS_MISC_HH__
40 
42 
43 class MrsOp : public ArmISA::PredOp
44 {
45  protected:
47 
48  MrsOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
49  ArmISA::IntRegIndex _dest) :
50  ArmISA::PredOp(mnem, _machInst, __opClass), dest(_dest)
51  {}
52 
53  std::string generateDisassembly(
54  Addr pc, const Loader::SymbolTable *symtab) const override;
55 };
56 
57 class MsrBase : public ArmISA::PredOp
58 {
59  protected:
60  uint8_t byteMask;
61 
62  MsrBase(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
63  uint8_t _byteMask) :
64  ArmISA::PredOp(mnem, _machInst, __opClass), byteMask(_byteMask)
65  {}
66 
67  void printMsrBase(std::ostream &os) const;
68 };
69 
70 class MsrImmOp : public MsrBase
71 {
72  protected:
73  uint32_t imm;
74 
75  MsrImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
76  OpClass __opClass, uint32_t _imm, uint8_t _byteMask) :
77  MsrBase(mnem, _machInst, __opClass, _byteMask), imm(_imm)
78  {}
79 
80  std::string generateDisassembly(
81  Addr pc, const Loader::SymbolTable *symtab) const override;
82 };
83 
84 class MsrRegOp : public MsrBase
85 {
86  protected:
88 
89  MsrRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
90  OpClass __opClass, ArmISA::IntRegIndex _op1, uint8_t _byteMask) :
91  MsrBase(mnem, _machInst, __opClass, _byteMask), op1(_op1)
92  {}
93 
94  std::string generateDisassembly(
95  Addr pc, const Loader::SymbolTable *symtab) const override;
96 };
97 
98 class MrrcOp : public ArmISA::PredOp
99 {
100  protected:
104  uint32_t imm;
105 
106  MrrcOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
108  ArmISA::IntRegIndex _dest2, uint32_t _imm) :
109  ArmISA::PredOp(mnem, _machInst, __opClass), op1(_op1), dest(_dest),
110  dest2(_dest2), imm(_imm)
111  {}
112 
113  std::string generateDisassembly(
114  Addr pc, const Loader::SymbolTable *symtab) const override;
115 };
116 
117 class McrrOp : public ArmISA::PredOp
118 {
119  protected:
123  uint32_t imm;
124 
125  McrrOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
127  ArmISA::MiscRegIndex _dest, uint32_t _imm) :
128  ArmISA::PredOp(mnem, _machInst, __opClass), op1(_op1), op2(_op2),
129  dest(_dest), imm(_imm)
130  {}
131 
132  std::string generateDisassembly(
133  Addr pc, const Loader::SymbolTable *symtab) const override;
134 };
135 
136 class ImmOp : public ArmISA::PredOp
137 {
138  protected:
139  uint64_t imm;
140 
141  ImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
142  uint64_t _imm) :
143  ArmISA::PredOp(mnem, _machInst, __opClass), imm(_imm)
144  {}
145 
146  std::string generateDisassembly(
147  Addr pc, const Loader::SymbolTable *symtab) const override;
148 };
149 
150 class RegImmOp : public ArmISA::PredOp
151 {
152  protected:
154  uint64_t imm;
155 
156  RegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
157  OpClass __opClass, ArmISA::IntRegIndex _dest, uint64_t _imm) :
158  ArmISA::PredOp(mnem, _machInst, __opClass), dest(_dest), imm(_imm)
159  {}
160 
161  std::string generateDisassembly(
162  Addr pc, const Loader::SymbolTable *symtab) const override;
163 };
164 
165 class RegRegOp : public ArmISA::PredOp
166 {
167  protected:
170 
171  RegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
172  OpClass __opClass, ArmISA::IntRegIndex _dest,
173  ArmISA::IntRegIndex _op1) :
174  ArmISA::PredOp(mnem, _machInst, __opClass), dest(_dest), op1(_op1)
175  {}
176 
177  std::string generateDisassembly(
178  Addr pc, const Loader::SymbolTable *symtab) const override;
179 };
180 
181 class RegOp : public ArmISA::PredOp
182 {
183  protected:
185 
186  RegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
187  ArmISA::IntRegIndex _dest) :
188  ArmISA::PredOp(mnem, _machInst, __opClass), dest(_dest)
189  {}
190 
191  std::string generateDisassembly(
192  Addr pc, const Loader::SymbolTable *symtab) const override;
193 };
194 
196 {
197  protected:
199  uint64_t imm;
201 
202  RegImmRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
203  OpClass __opClass, ArmISA::IntRegIndex _dest, uint64_t _imm,
204  ArmISA::IntRegIndex _op1) :
205  ArmISA::PredOp(mnem, _machInst, __opClass),
206  dest(_dest), imm(_imm), op1(_op1)
207  {}
208 
209  std::string generateDisassembly(
210  Addr pc, const Loader::SymbolTable *symtab) const override;
211 };
212 
214 {
215  protected:
219  uint64_t imm;
220 
221  RegRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
222  OpClass __opClass, ArmISA::IntRegIndex _dest,
224  uint64_t _imm) :
225  ArmISA::PredOp(mnem, _machInst, __opClass),
226  dest(_dest), op1(_op1), op2(_op2), imm(_imm)
227  {}
228 
229  std::string generateDisassembly(
230  Addr pc, const Loader::SymbolTable *symtab) const override;
231 };
232 
234 {
235  protected:
240 
241  RegRegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
242  OpClass __opClass, ArmISA::IntRegIndex _dest,
244  ArmISA::IntRegIndex _op3) :
245  ArmISA::PredOp(mnem, _machInst, __opClass),
246  dest(_dest), op1(_op1), op2(_op2), op3(_op3)
247  {}
248 
249  std::string generateDisassembly(
250  Addr pc, const Loader::SymbolTable *symtab) const override;
251 };
252 
254 {
255  protected:
259 
260  RegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
261  OpClass __opClass, ArmISA::IntRegIndex _dest,
263  ArmISA::PredOp(mnem, _machInst, __opClass),
264  dest(_dest), op1(_op1), op2(_op2)
265  {}
266 
267  std::string generateDisassembly(
268  Addr pc, const Loader::SymbolTable *symtab) const override;
269 };
270 
272 {
273  protected:
276  uint64_t imm;
277 
278  RegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
279  OpClass __opClass, ArmISA::IntRegIndex _dest,
280  ArmISA::IntRegIndex _op1, uint64_t _imm) :
281  ArmISA::PredOp(mnem, _machInst, __opClass),
282  dest(_dest), op1(_op1), imm(_imm)
283  {}
284 
285  std::string generateDisassembly(
286  Addr pc, const Loader::SymbolTable *symtab) const override;
287 };
288 
290 {
291  protected:
294  uint64_t imm;
295 
296  MiscRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
297  OpClass __opClass, ArmISA::MiscRegIndex _dest,
298  ArmISA::IntRegIndex _op1, uint64_t _imm) :
299  ArmISA::PredOp(mnem, _machInst, __opClass),
300  dest(_dest), op1(_op1), imm(_imm)
301  {}
302 
303  std::string generateDisassembly(
304  Addr pc, const Loader::SymbolTable *symtab) const override;
305 };
306 
308 {
309  protected:
312  uint64_t imm;
313 
314  RegMiscRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
315  OpClass __opClass, ArmISA::IntRegIndex _dest,
316  ArmISA::MiscRegIndex _op1, uint64_t _imm) :
317  ArmISA::PredOp(mnem, _machInst, __opClass),
318  dest(_dest), op1(_op1), imm(_imm)
319  {}
320 
321  std::string generateDisassembly(
322  Addr pc, const Loader::SymbolTable *symtab) const override;
323 };
324 
326 {
327  protected:
329  uint64_t imm1;
330  uint64_t imm2;
331 
332  RegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
333  OpClass __opClass, ArmISA::IntRegIndex _dest,
334  uint64_t _imm1, uint64_t _imm2) :
335  ArmISA::PredOp(mnem, _machInst, __opClass),
336  dest(_dest), imm1(_imm1), imm2(_imm2)
337  {}
338 
339  std::string generateDisassembly(
340  Addr pc, const Loader::SymbolTable *symtab) const override;
341 };
342 
344 {
345  protected:
348  uint64_t imm1;
349  uint64_t imm2;
350 
351  RegRegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
352  OpClass __opClass, ArmISA::IntRegIndex _dest,
353  ArmISA::IntRegIndex _op1, uint64_t _imm1, uint64_t _imm2) :
354  ArmISA::PredOp(mnem, _machInst, __opClass),
355  dest(_dest), op1(_op1), imm1(_imm1), imm2(_imm2)
356  {}
357 
358  std::string generateDisassembly(
359  Addr pc, const Loader::SymbolTable *symtab) const override;
360 };
361 
363 {
364  protected:
366  uint64_t imm;
368  int32_t shiftAmt;
370 
371  RegImmRegShiftOp(const char *mnem, ArmISA::ExtMachInst _machInst,
372  OpClass __opClass, ArmISA::IntRegIndex _dest,
373  uint64_t _imm, ArmISA::IntRegIndex _op1,
374  int32_t _shiftAmt, ArmISA::ArmShiftType _shiftType) :
375  ArmISA::PredOp(mnem, _machInst, __opClass),
376  dest(_dest), imm(_imm), op1(_op1),
377  shiftAmt(_shiftAmt), shiftType(_shiftType)
378  {}
379 
380  std::string generateDisassembly(
381  Addr pc, const Loader::SymbolTable *symtab) const override;
382 };
383 
384 class UnknownOp : public ArmISA::PredOp
385 {
386  protected:
387 
388  UnknownOp(const char *mnem, ArmISA::ExtMachInst _machInst,
389  OpClass __opClass) :
390  ArmISA::PredOp(mnem, _machInst, __opClass)
391  {}
392 
393  std::string generateDisassembly(
394  Addr pc, const Loader::SymbolTable *symtab) const override;
395 };
396 
404 {
405  protected:
406  uint64_t iss;
408 
409  public:
410  McrMrcMiscInst(const char *_mnemonic, ArmISA::ExtMachInst _machInst,
411  uint64_t _iss, ArmISA::MiscRegIndex _miscReg);
412 
414  Trace::InstRecord *traceData) const override;
415 
416  std::string generateDisassembly(
417  Addr pc, const Loader::SymbolTable *symtab) const override;
418 
419 };
420 
426 {
427  public:
428  McrMrcImplDefined(const char *_mnemonic, ArmISA::ExtMachInst _machInst,
429  uint64_t _iss, ArmISA::MiscRegIndex _miscReg);
430 
432  Trace::InstRecord *traceData) const override;
433 
434  std::string generateDisassembly(
435  Addr pc, const Loader::SymbolTable *symtab) const override;
436 
437 };
438 
439 #endif
RegRegImmImmOp::imm2
uint64_t imm2
Definition: misc.hh:349
RegImmRegOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:200
MsrBase::byteMask
uint8_t byteMask
Definition: misc.hh:60
McrrOp::dest
ArmISA::MiscRegIndex dest
Definition: misc.hh:122
RegImmRegShiftOp
Definition: misc.hh:362
X86ISA::os
Bitfield< 17 > os
Definition: misc.hh:803
MiscRegRegImmOp
Definition: misc.hh:289
RegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:204
RegRegRegOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:256
UnknownOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:344
ArmISA::ArmShiftType
ArmShiftType
Definition: types.hh:567
RegImmRegShiftOp::shiftType
ArmISA::ArmShiftType shiftType
Definition: misc.hh:369
RegRegRegImmOp::imm
uint64_t imm
Definition: misc.hh:219
RegRegRegRegOp::RegRegRegRegOp
RegRegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, ArmISA::IntRegIndex _op1, ArmISA::IntRegIndex _op2, ArmISA::IntRegIndex _op3)
Definition: misc.hh:241
RegImmOp::imm
uint64_t imm
Definition: misc.hh:154
RegImmRegOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:198
MrrcOp
Definition: misc.hh:98
RegRegImmOp::RegRegImmOp
RegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, ArmISA::IntRegIndex _op1, uint64_t _imm)
Definition: misc.hh:278
RegImmRegOp::RegImmRegOp
RegImmRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, uint64_t _imm, ArmISA::IntRegIndex _op1)
Definition: misc.hh:202
MrrcOp::MrrcOp
MrrcOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::MiscRegIndex _op1, ArmISA::IntRegIndex _dest, ArmISA::IntRegIndex _dest2, uint32_t _imm)
Definition: misc.hh:106
RegImmOp::RegImmOp
RegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, uint64_t _imm)
Definition: misc.hh:156
RegRegRegImmOp
Definition: misc.hh:213
RegRegRegImmOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:216
ImmOp::ImmOp
ImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, uint64_t _imm)
Definition: misc.hh:141
UnknownOp::UnknownOp
UnknownOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass)
Definition: misc.hh:388
McrrOp::imm
uint32_t imm
Definition: misc.hh:123
RegRegRegRegOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:237
RegRegRegImmOp::op2
ArmISA::IntRegIndex op2
Definition: misc.hh:218
RegImmImmOp::imm2
uint64_t imm2
Definition: misc.hh:330
RegRegOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:168
Loader::SymbolTable
Definition: symtab.hh:59
ArmISA::IntRegIndex
IntRegIndex
Definition: intregs.hh:51
RegRegRegOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:257
MsrImmOp::imm
uint32_t imm
Definition: misc.hh:73
Trace::InstRecord
Definition: insttracer.hh:55
RegImmImmOp::RegImmImmOp
RegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, uint64_t _imm1, uint64_t _imm2)
Definition: misc.hh:332
MrsOp
Definition: misc.hh:43
RegMiscRegImmOp::RegMiscRegImmOp
RegMiscRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, ArmISA::MiscRegIndex _op1, uint64_t _imm)
Definition: misc.hh:314
MrrcOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:148
RegImmImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:295
McrrOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:161
ArmISA::PredOp
Base class for predicated integer operations.
Definition: pred_inst.hh:210
RegRegRegRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:228
RegMiscRegImmOp::op1
ArmISA::MiscRegIndex op1
Definition: misc.hh:311
ArmISA
Definition: ccregs.hh:41
RegImmRegShiftOp::shiftAmt
int32_t shiftAmt
Definition: misc.hh:368
MrrcOp::dest2
ArmISA::IntRegIndex dest2
Definition: misc.hh:103
MsrBase::printMsrBase
void printMsrBase(std::ostream &os) const
Definition: misc.cc:76
RegImmRegShiftOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:365
RegRegImmOp
Definition: misc.hh:271
RegMiscRegImmOp
Definition: misc.hh:307
McrMrcImplDefined::McrMrcImplDefined
McrMrcImplDefined(const char *_mnemonic, ArmISA::ExtMachInst _machInst, uint64_t _iss, ArmISA::MiscRegIndex _miscReg)
Definition: misc.cc:379
ArmISA::ArmStaticInst
Definition: static_inst.hh:60
RegRegOp
Definition: misc.hh:165
RegRegRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:244
RegRegRegOp
Definition: misc.hh:253
RegImmOp
Definition: misc.hh:150
RegRegImmImmOp::RegRegImmImmOp
RegRegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, ArmISA::IntRegIndex _op1, uint64_t _imm1, uint64_t _imm2)
Definition: misc.hh:351
MrsOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:46
RegRegImmImmOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:347
RegRegImmImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:306
RegMiscRegImmOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:310
RegImmRegOp::imm
uint64_t imm
Definition: misc.hh:199
RegRegRegImmOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:217
MrrcOp::imm
uint32_t imm
Definition: misc.hh:104
RegRegOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:169
McrMrcMiscInst::iss
uint64_t iss
Definition: misc.hh:406
RegImmRegShiftOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:331
RegRegImmImmOp::imm1
uint64_t imm1
Definition: misc.hh:348
MsrBase
Definition: misc.hh:57
RegRegImmOp::imm
uint64_t imm
Definition: misc.hh:276
RegRegOp::RegRegOp
RegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, ArmISA::IntRegIndex _op1)
Definition: misc.hh:171
RegRegImmOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:275
RegImmRegOp
Definition: misc.hh:195
MsrRegOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:87
Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:240
MiscRegRegImmOp::imm
uint64_t imm
Definition: misc.hh:294
McrMrcMiscInst::McrMrcMiscInst
McrMrcMiscInst(const char *_mnemonic, ArmISA::ExtMachInst _machInst, uint64_t _iss, ArmISA::MiscRegIndex _miscReg)
Definition: misc.cc:350
MrsOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:46
MrsOp::MrsOp
MrsOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest)
Definition: misc.hh:48
ExecContext
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
Definition: exec_context.hh:70
MrrcOp::op1
ArmISA::MiscRegIndex op1
Definition: misc.hh:101
UnknownOp
Definition: misc.hh:384
MsrRegOp::MsrRegOp
MsrRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _op1, uint8_t _byteMask)
Definition: misc.hh:89
McrrOp::McrrOp
McrrOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _op1, ArmISA::IntRegIndex _op2, ArmISA::MiscRegIndex _dest, uint32_t _imm)
Definition: misc.hh:125
RegRegImmImmOp
Definition: misc.hh:343
RegRegRegOp::RegRegRegOp
RegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, ArmISA::IntRegIndex _op1, ArmISA::IntRegIndex _op2)
Definition: misc.hh:260
RegRegRegRegOp::op2
ArmISA::IntRegIndex op2
Definition: misc.hh:238
RegRegImmOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:274
McrMrcImplDefined::execute
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
Definition: misc.cc:386
RegMiscRegImmOp::imm
uint64_t imm
Definition: misc.hh:312
RegOp
Definition: misc.hh:181
MsrImmOp::MsrImmOp
MsrImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, uint32_t _imm, uint8_t _byteMask)
Definition: misc.hh:75
McrrOp
Definition: misc.hh:117
McrMrcMiscInst::execute
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
Definition: misc.cc:360
McrMrcImplDefined::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:400
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
pred_inst.hh
ImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:174
McrMrcMiscInst
Certain mrc/mcr instructions act as nops or flush the pipe based on what register the instruction is ...
Definition: misc.hh:403
MiscRegRegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:271
RegRegRegImmOp::RegRegRegImmOp
RegRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, ArmISA::IntRegIndex _op1, ArmISA::IntRegIndex _op2, uint64_t _imm)
Definition: misc.hh:221
RegRegRegRegOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:236
McrMrcMiscInst::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:373
RegImmImmOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:328
RegImmImmOp::imm1
uint64_t imm1
Definition: misc.hh:329
RegImmRegShiftOp::imm
uint64_t imm
Definition: misc.hh:366
RegRegRegRegOp::op3
ArmISA::IntRegIndex op3
Definition: misc.hh:239
RegImmImmOp
Definition: misc.hh:325
RegRegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:258
ImmOp::imm
uint64_t imm
Definition: misc.hh:139
RegImmRegShiftOp::RegImmRegShiftOp
RegImmRegShiftOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest, uint64_t _imm, ArmISA::IntRegIndex _op1, int32_t _shiftAmt, ArmISA::ArmShiftType _shiftType)
Definition: misc.hh:371
MsrRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:138
RegImmOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:153
RegRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:193
RegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:183
MiscRegRegImmOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:293
McrMrcImplDefined
This class is also used for IMPLEMENTATION DEFINED registers, whose mcr/mrc behaviour is trappable ev...
Definition: misc.hh:425
MsrBase::MsrBase
MsrBase(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, uint8_t _byteMask)
Definition: misc.hh:62
McrMrcMiscInst::miscReg
ArmISA::MiscRegIndex miscReg
Definition: misc.hh:407
ArmISA::MiscRegIndex
MiscRegIndex
Definition: miscregs.hh:56
RegOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:184
MiscRegRegImmOp::MiscRegRegImmOp
MiscRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::MiscRegIndex _dest, ArmISA::IntRegIndex _op1, uint64_t _imm)
Definition: misc.hh:296
RegRegImmImmOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:346
RegRegRegRegOp
Definition: misc.hh:233
RegImmRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:319
RegOp::RegOp
RegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::IntRegIndex _dest)
Definition: misc.hh:186
MsrImmOp
Definition: misc.hh:70
MsrRegOp
Definition: misc.hh:84
X86ISA::pc
Bitfield< 19 > pc
Definition: misc.hh:805
ImmOp
Definition: misc.hh:136
MrrcOp::dest
ArmISA::IntRegIndex dest
Definition: misc.hh:102
McrrOp::op2
ArmISA::IntRegIndex op2
Definition: misc.hh:121
ArmISA::PredOp::PredOp
PredOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
Constructor.
Definition: pred_inst.hh:217
RegMiscRegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:283
MiscRegRegImmOp::dest
ArmISA::MiscRegIndex dest
Definition: misc.hh:292
RegImmRegShiftOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:367
RegRegRegOp::op2
ArmISA::IntRegIndex op2
Definition: misc.hh:258
MsrImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:129
McrrOp::op1
ArmISA::IntRegIndex op1
Definition: misc.hh:120
RegRegRegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:213
MipsISA::ExtMachInst
uint64_t ExtMachInst
Definition: types.hh:39

Generated on Wed Sep 30 2020 14:02:00 for gem5 by doxygen 1.8.17