gem5  v22.1.0.0
misc.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010, 2012-2013, 2017-2018, 2021 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 namespace gem5
44 {
45 
46 class MrsOp : public ArmISA::PredOp
47 {
48  protected:
50 
51  MrsOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
52  RegIndex _dest) :
53  ArmISA::PredOp(mnem, _machInst, __opClass), dest(_dest)
54  {}
55 
56  std::string generateDisassembly(
57  Addr pc, const loader::SymbolTable *symtab) const override;
58 };
59 
60 class MsrBase : public ArmISA::PredOp
61 {
62  protected:
63  uint8_t byteMask;
64 
65  MsrBase(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
66  uint8_t _byteMask) :
67  ArmISA::PredOp(mnem, _machInst, __opClass), byteMask(_byteMask)
68  {}
69 
70  void printMsrBase(std::ostream &os) const;
71 };
72 
73 class MsrImmOp : public MsrBase
74 {
75  protected:
76  uint32_t imm;
77 
78  MsrImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
79  OpClass __opClass, uint32_t _imm, uint8_t _byteMask) :
80  MsrBase(mnem, _machInst, __opClass, _byteMask), imm(_imm)
81  {}
82 
83  std::string generateDisassembly(
84  Addr pc, const loader::SymbolTable *symtab) const override;
85 };
86 
87 class MsrRegOp : public MsrBase
88 {
89  protected:
91 
92  MsrRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
93  OpClass __opClass, RegIndex _op1, uint8_t _byteMask) :
94  MsrBase(mnem, _machInst, __opClass, _byteMask), op1(_op1)
95  {}
96 
97  std::string generateDisassembly(
98  Addr pc, const loader::SymbolTable *symtab) const override;
99 };
100 
101 class MrrcOp : public ArmISA::PredOp
102 {
103  protected:
107  uint32_t imm;
108 
109  MrrcOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
110  ArmISA::MiscRegIndex _op1, RegIndex _dest, RegIndex _dest2,
111  uint32_t _imm) :
112  ArmISA::PredOp(mnem, _machInst, __opClass), op1(_op1), dest(_dest),
113  dest2(_dest2), imm(_imm)
114  {}
115 
116  std::string generateDisassembly(
117  Addr pc, const loader::SymbolTable *symtab) const override;
118 };
119 
120 class McrrOp : public ArmISA::PredOp
121 {
122  protected:
126  uint32_t imm;
127 
128  McrrOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
129  RegIndex _op1, RegIndex _op2,
130  ArmISA::MiscRegIndex _dest, uint32_t _imm) :
131  ArmISA::PredOp(mnem, _machInst, __opClass), op1(_op1), op2(_op2),
132  dest(_dest), imm(_imm)
133  {}
134 
135  std::string generateDisassembly(
136  Addr pc, const loader::SymbolTable *symtab) const override;
137 };
138 
139 class ImmOp : public ArmISA::PredOp
140 {
141  protected:
142  uint64_t imm;
143 
144  ImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
145  uint64_t _imm) :
146  ArmISA::PredOp(mnem, _machInst, __opClass), imm(_imm)
147  {}
148 
149  std::string generateDisassembly(
150  Addr pc, const loader::SymbolTable *symtab) const override;
151 };
152 
153 class RegImmOp : public ArmISA::PredOp
154 {
155  protected:
157  uint64_t imm;
158 
159  RegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
160  OpClass __opClass, RegIndex _dest, uint64_t _imm) :
161  ArmISA::PredOp(mnem, _machInst, __opClass), dest(_dest), imm(_imm)
162  {}
163 
164  std::string generateDisassembly(
165  Addr pc, const loader::SymbolTable *symtab) const override;
166 };
167 
168 class RegRegOp : public ArmISA::PredOp
169 {
170  protected:
173 
174  RegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
175  OpClass __opClass, RegIndex _dest,
176  RegIndex _op1) :
177  ArmISA::PredOp(mnem, _machInst, __opClass), dest(_dest), op1(_op1)
178  {}
179 
180  std::string generateDisassembly(
181  Addr pc, const loader::SymbolTable *symtab) const override;
182 };
183 
184 class RegOp : public ArmISA::PredOp
185 {
186  protected:
188 
189  RegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass,
190  RegIndex _dest) :
191  ArmISA::PredOp(mnem, _machInst, __opClass), dest(_dest)
192  {}
193 
194  std::string generateDisassembly(
195  Addr pc, const loader::SymbolTable *symtab) const override;
196 };
197 
199 {
200  protected:
202  uint64_t imm;
204 
205  RegImmRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
206  OpClass __opClass, RegIndex _dest, uint64_t _imm,
207  RegIndex _op1) :
208  ArmISA::PredOp(mnem, _machInst, __opClass),
209  dest(_dest), imm(_imm), op1(_op1)
210  {}
211 
212  std::string generateDisassembly(
213  Addr pc, const loader::SymbolTable *symtab) const override;
214 };
215 
217 {
218  protected:
222  uint64_t imm;
223 
224  RegRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
225  OpClass __opClass, RegIndex _dest,
226  RegIndex _op1, RegIndex _op2,
227  uint64_t _imm) :
228  ArmISA::PredOp(mnem, _machInst, __opClass),
229  dest(_dest), op1(_op1), op2(_op2), imm(_imm)
230  {}
231 
232  std::string generateDisassembly(
233  Addr pc, const loader::SymbolTable *symtab) const override;
234 };
235 
237 {
238  protected:
243 
244  RegRegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
245  OpClass __opClass, RegIndex _dest,
246  RegIndex _op1, RegIndex _op2,
247  RegIndex _op3) :
248  ArmISA::PredOp(mnem, _machInst, __opClass),
249  dest(_dest), op1(_op1), op2(_op2), op3(_op3)
250  {}
251 
252  std::string generateDisassembly(
253  Addr pc, const loader::SymbolTable *symtab) const override;
254 };
255 
257 {
258  protected:
262 
263  RegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst,
264  OpClass __opClass, RegIndex _dest,
265  RegIndex _op1, RegIndex _op2) :
266  ArmISA::PredOp(mnem, _machInst, __opClass),
267  dest(_dest), op1(_op1), op2(_op2)
268  {}
269 
270  std::string generateDisassembly(
271  Addr pc, const loader::SymbolTable *symtab) const override;
272 };
273 
275 {
276  protected:
279  uint64_t imm;
280 
281  RegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
282  OpClass __opClass, RegIndex _dest,
283  RegIndex _op1, uint64_t _imm) :
284  ArmISA::PredOp(mnem, _machInst, __opClass),
285  dest(_dest), op1(_op1), imm(_imm)
286  {}
287 
288  std::string generateDisassembly(
289  Addr pc, const loader::SymbolTable *symtab) const override;
290 };
291 
293 {
294  protected:
297  uint64_t imm;
298 
299  MiscRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
300  OpClass __opClass, ArmISA::MiscRegIndex _dest,
301  RegIndex _op1, uint64_t _imm) :
302  ArmISA::PredOp(mnem, _machInst, __opClass),
303  dest(_dest), op1(_op1), imm(_imm)
304  {}
305 
306  std::string generateDisassembly(
307  Addr pc, const loader::SymbolTable *symtab) const override;
308 };
309 
311 {
312  protected:
315  uint64_t imm;
316 
317  RegMiscRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
318  OpClass __opClass, RegIndex _dest,
319  ArmISA::MiscRegIndex _op1, uint64_t _imm) :
320  ArmISA::PredOp(mnem, _machInst, __opClass),
321  dest(_dest), op1(_op1), imm(_imm)
322  {}
323 
324  std::string generateDisassembly(
325  Addr pc, const loader::SymbolTable *symtab) const override;
326 };
327 
329 {
330  protected:
332  uint64_t imm1;
333  uint64_t imm2;
334 
335  RegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
336  OpClass __opClass, RegIndex _dest,
337  uint64_t _imm1, uint64_t _imm2) :
338  ArmISA::PredOp(mnem, _machInst, __opClass),
339  dest(_dest), imm1(_imm1), imm2(_imm2)
340  {}
341 
342  std::string generateDisassembly(
343  Addr pc, const loader::SymbolTable *symtab) const override;
344 };
345 
347 {
348  protected:
351  uint64_t imm1;
352  uint64_t imm2;
353 
354  RegRegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst,
355  OpClass __opClass, RegIndex _dest,
356  RegIndex _op1, uint64_t _imm1, uint64_t _imm2) :
357  ArmISA::PredOp(mnem, _machInst, __opClass),
358  dest(_dest), op1(_op1), imm1(_imm1), imm2(_imm2)
359  {}
360 
361  std::string generateDisassembly(
362  Addr pc, const loader::SymbolTable *symtab) const override;
363 };
364 
366 {
367  protected:
369  uint64_t imm;
371  int32_t shiftAmt;
372  ArmISA::ArmShiftType shiftType;
373 
374  RegImmRegShiftOp(const char *mnem, ArmISA::ExtMachInst _machInst,
375  OpClass __opClass, RegIndex _dest,
376  uint64_t _imm, RegIndex _op1,
377  int32_t _shiftAmt, ArmISA::ArmShiftType _shiftType) :
378  ArmISA::PredOp(mnem, _machInst, __opClass),
379  dest(_dest), imm(_imm), op1(_op1),
380  shiftAmt(_shiftAmt), shiftType(_shiftType)
381  {}
382 
383  std::string generateDisassembly(
384  Addr pc, const loader::SymbolTable *symtab) const override;
385 };
386 
387 class UnknownOp : public ArmISA::PredOp
388 {
389  protected:
390 
391  UnknownOp(const char *mnem, ArmISA::ExtMachInst _machInst,
392  OpClass __opClass) :
393  ArmISA::PredOp(mnem, _machInst, __opClass)
394  {}
395 
396  std::string generateDisassembly(
397  Addr pc, const loader::SymbolTable *symtab) const override;
398 };
399 
407 {
408  protected:
409  uint64_t iss;
411 
412  public:
413  McrMrcMiscInst(const char *_mnemonic, ArmISA::ExtMachInst _machInst,
414  uint64_t _iss, ArmISA::MiscRegIndex _miscReg);
415 
417  trace::InstRecord *traceData) const override;
418 
419  std::string generateDisassembly(
420  Addr pc, const loader::SymbolTable *symtab) const override;
421 
422 };
423 
429 {
430  public:
431  McrMrcImplDefined(const char *_mnemonic, ArmISA::ExtMachInst _machInst,
432  uint64_t _iss, ArmISA::MiscRegIndex _miscReg);
433 
435  trace::InstRecord *traceData) const override;
436 
437  std::string generateDisassembly(
438  Addr pc, const loader::SymbolTable *symtab) const override;
439 
440 };
441 
442 class TlbiOp : public MiscRegRegImmOp
443 {
444  protected:
445  TlbiOp(const char *mnem, ArmISA::ExtMachInst _machInst,
446  OpClass __opClass, ArmISA::MiscRegIndex _dest,
447  RegIndex _op1, uint64_t _imm) :
448  MiscRegRegImmOp(mnem, _machInst, __opClass, _dest, _op1, _imm)
449  {}
450 
451  void performTlbi(ExecContext *xc,
452  ArmISA::MiscRegIndex dest_idx, RegVal value) const;
453 };
454 
455 } // namespace gem5
456 
457 #endif
Base class for predicated integer operations.
Definition: pred_inst.hh:217
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
Definition: exec_context.hh:72
uint64_t imm
Definition: misc.hh:142
ImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, uint64_t _imm)
Definition: misc.hh:144
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:178
This class is also used for IMPLEMENTATION DEFINED registers, whose mcr/mrc behaviour is trappable ev...
Definition: misc.hh:429
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:395
McrMrcImplDefined(const char *_mnemonic, ArmISA::ExtMachInst _machInst, uint64_t _iss, ArmISA::MiscRegIndex _miscReg)
Definition: misc.cc:376
Fault execute(ExecContext *xc, trace::InstRecord *traceData) const override
Definition: misc.cc:383
Certain mrc/mcr instructions act as nops or flush the pipe based on what register the instruction is ...
Definition: misc.hh:407
Fault execute(ExecContext *xc, trace::InstRecord *traceData) const override
Definition: misc.cc:364
McrMrcMiscInst(const char *_mnemonic, ArmISA::ExtMachInst _machInst, uint64_t _iss, ArmISA::MiscRegIndex _miscReg)
Definition: misc.cc:354
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:370
ArmISA::MiscRegIndex miscReg
Definition: misc.hh:410
uint64_t iss
Definition: misc.hh:409
RegIndex op2
Definition: misc.hh:124
RegIndex op1
Definition: misc.hh:123
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:165
ArmISA::MiscRegIndex dest
Definition: misc.hh:125
uint32_t imm
Definition: misc.hh:126
McrrOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _op1, RegIndex _op2, ArmISA::MiscRegIndex _dest, uint32_t _imm)
Definition: misc.hh:128
MiscRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::MiscRegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition: misc.hh:299
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:275
ArmISA::MiscRegIndex dest
Definition: misc.hh:295
RegIndex dest2
Definition: misc.hh:106
RegIndex dest
Definition: misc.hh:105
ArmISA::MiscRegIndex op1
Definition: misc.hh:104
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:152
uint32_t imm
Definition: misc.hh:107
MrrcOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::MiscRegIndex _op1, RegIndex _dest, RegIndex _dest2, uint32_t _imm)
Definition: misc.hh:109
RegIndex dest
Definition: misc.hh:49
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:50
MrsOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest)
Definition: misc.hh:51
uint8_t byteMask
Definition: misc.hh:63
MsrBase(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, uint8_t _byteMask)
Definition: misc.hh:65
void printMsrBase(std::ostream &os) const
Definition: misc.cc:80
uint32_t imm
Definition: misc.hh:76
MsrImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, uint32_t _imm, uint8_t _byteMask)
Definition: misc.hh:78
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:133
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:142
RegIndex op1
Definition: misc.hh:90
MsrRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _op1, uint8_t _byteMask)
Definition: misc.hh:92
uint64_t imm2
Definition: misc.hh:333
RegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm1, uint64_t _imm2)
Definition: misc.hh:335
uint64_t imm1
Definition: misc.hh:332
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:299
RegIndex dest
Definition: misc.hh:331
uint64_t imm
Definition: misc.hh:157
RegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm)
Definition: misc.hh:159
RegIndex dest
Definition: misc.hh:156
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:187
RegIndex dest
Definition: misc.hh:201
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:323
uint64_t imm
Definition: misc.hh:202
RegIndex op1
Definition: misc.hh:203
RegImmRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm, RegIndex _op1)
Definition: misc.hh:205
RegImmRegShiftOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm, RegIndex _op1, int32_t _shiftAmt, ArmISA::ArmShiftType _shiftType)
Definition: misc.hh:374
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:335
ArmISA::ArmShiftType shiftType
Definition: misc.hh:372
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:287
ArmISA::MiscRegIndex op1
Definition: misc.hh:314
RegMiscRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, ArmISA::MiscRegIndex _op1, uint64_t _imm)
Definition: misc.hh:317
RegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest)
Definition: misc.hh:189
RegIndex dest
Definition: misc.hh:187
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:208
RegIndex dest
Definition: misc.hh:349
RegIndex op1
Definition: misc.hh:350
RegRegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm1, uint64_t _imm2)
Definition: misc.hh:354
uint64_t imm1
Definition: misc.hh:351
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:310
uint64_t imm2
Definition: misc.hh:352
RegIndex op1
Definition: misc.hh:278
uint64_t imm
Definition: misc.hh:279
RegIndex dest
Definition: misc.hh:277
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:262
RegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition: misc.hh:281
RegIndex op1
Definition: misc.hh:172
RegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1)
Definition: misc.hh:174
RegIndex dest
Definition: misc.hh:171
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:197
RegIndex dest
Definition: misc.hh:219
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:217
RegRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint64_t _imm)
Definition: misc.hh:224
uint64_t imm
Definition: misc.hh:222
RegIndex op2
Definition: misc.hh:221
RegIndex op1
Definition: misc.hh:220
RegIndex op1
Definition: misc.hh:260
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:248
RegIndex dest
Definition: misc.hh:259
RegIndex op2
Definition: misc.hh:261
RegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition: misc.hh:263
RegRegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _op3)
Definition: misc.hh:244
RegIndex op3
Definition: misc.hh:242
RegIndex op2
Definition: misc.hh:241
RegIndex op1
Definition: misc.hh:240
RegIndex dest
Definition: misc.hh:239
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:232
TlbiOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::MiscRegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition: misc.hh:445
void performTlbi(ExecContext *xc, ArmISA::MiscRegIndex dest_idx, RegVal value) const
Definition: misc.cc:402
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:348
UnknownOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass)
Definition: misc.hh:391
MiscRegIndex
Definition: misc.hh:64
uint64_t ExtMachInst
Definition: types.hh:43
Bitfield< 19 > pc
Definition: misc.hh:812
Bitfield< 17 > os
Definition: misc.hh:810
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
std::shared_ptr< FaultBase > Fault
Definition: types.hh:248
uint16_t RegIndex
Definition: types.hh:176
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
uint64_t RegVal
Definition: types.hh:173

Generated on Wed Dec 21 2022 10:22:25 for gem5 by doxygen 1.9.1