gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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
gem5::X86ISA::pc
Bitfield< 19 > pc
Definition: misc.hh:812
gem5::RegImmRegShiftOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:335
gem5::RegImmRegShiftOp
Definition: misc.hh:365
gem5::RegRegImmOp
Definition: misc.hh:274
gem5::UnknownOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:348
gem5::MsrBase::byteMask
uint8_t byteMask
Definition: misc.hh:63
gem5::RegVal
uint64_t RegVal
Definition: types.hh:173
gem5::RegImmRegShiftOp::RegImmRegShiftOp
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
gem5::McrMrcMiscInst::iss
uint64_t iss
Definition: misc.hh:409
gem5::RegImmRegOp
Definition: misc.hh:198
gem5::RegMiscRegImmOp::imm
uint64_t imm
Definition: misc.hh:315
gem5::RegOp::RegOp
RegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest)
Definition: misc.hh:189
gem5::RegMiscRegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:287
gem5::ArmISA::ArmStaticInst
Definition: static_inst.hh:65
gem5::MrrcOp::dest2
RegIndex dest2
Definition: misc.hh:106
gem5::MsrImmOp
Definition: misc.hh:73
gem5::TlbiOp::performTlbi
void performTlbi(ExecContext *xc, ArmISA::MiscRegIndex dest_idx, RegVal value) const
Definition: misc.cc:402
gem5::MsrRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:142
gem5::RegMiscRegImmOp
Definition: misc.hh:310
gem5::MsrBase::printMsrBase
void printMsrBase(std::ostream &os) const
Definition: misc.cc:80
gem5::trace::InstRecord
Definition: insttracer.hh:60
gem5::UnknownOp
Definition: misc.hh:387
gem5::RegRegRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:248
gem5::MsrImmOp::imm
uint32_t imm
Definition: misc.hh:76
gem5::RegImmOp::imm
uint64_t imm
Definition: misc.hh:157
gem5::MrsOp::dest
RegIndex dest
Definition: misc.hh:49
gem5::RegImmImmOp::RegImmImmOp
RegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm1, uint64_t _imm2)
Definition: misc.hh:335
gem5::RegRegOp::op1
RegIndex op1
Definition: misc.hh:172
gem5::ImmOp::imm
uint64_t imm
Definition: misc.hh:142
gem5::RegImmRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:323
gem5::RegRegRegImmOp::op1
RegIndex op1
Definition: misc.hh:220
gem5::MrrcOp::MrrcOp
MrrcOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::MiscRegIndex _op1, RegIndex _dest, RegIndex _dest2, uint32_t _imm)
Definition: misc.hh:109
gem5::RegRegRegImmOp::RegRegRegImmOp
RegRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, uint64_t _imm)
Definition: misc.hh:224
gem5::RegOp
Definition: misc.hh:184
gem5::loader::SymbolTable
Definition: symtab.hh:64
gem5::RegRegRegRegOp::op2
RegIndex op2
Definition: misc.hh:241
gem5::RegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:208
gem5::RegRegRegOp::dest
RegIndex dest
Definition: misc.hh:259
gem5::MsrRegOp
Definition: misc.hh:87
gem5::MiscRegRegImmOp
Definition: misc.hh:292
gem5::MrrcOp::op1
ArmISA::MiscRegIndex op1
Definition: misc.hh:104
gem5::RegRegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:262
gem5::RegMiscRegImmOp::RegMiscRegImmOp
RegMiscRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, ArmISA::MiscRegIndex _op1, uint64_t _imm)
Definition: misc.hh:317
gem5::McrrOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:165
gem5::RegRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:197
gem5::RegMiscRegImmOp::op1
ArmISA::MiscRegIndex op1
Definition: misc.hh:314
gem5::RegRegRegImmOp::dest
RegIndex dest
Definition: misc.hh:219
gem5::McrrOp::op1
RegIndex op1
Definition: misc.hh:123
gem5::RegImmImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:299
gem5::UnknownOp::UnknownOp
UnknownOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass)
Definition: misc.hh:391
gem5::MsrRegOp::MsrRegOp
MsrRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _op1, uint8_t _byteMask)
Definition: misc.hh:92
gem5::ImmOp
Definition: misc.hh:139
gem5::RegImmImmOp::dest
RegIndex dest
Definition: misc.hh:331
gem5::RegImmImmOp::imm2
uint64_t imm2
Definition: misc.hh:333
gem5::RegRegImmImmOp::imm2
uint64_t imm2
Definition: misc.hh:352
gem5::MrsOp
Definition: misc.hh:46
gem5::RegRegRegRegOp::dest
RegIndex dest
Definition: misc.hh:239
gem5::Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:248
gem5::RegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:187
gem5::ImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:178
gem5::McrMrcMiscInst::McrMrcMiscInst
McrMrcMiscInst(const char *_mnemonic, ArmISA::ExtMachInst _machInst, uint64_t _iss, ArmISA::MiscRegIndex _miscReg)
Definition: misc.cc:354
gem5::ImmOp::ImmOp
ImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, uint64_t _imm)
Definition: misc.hh:144
gem5::RegRegImmOp::dest
RegIndex dest
Definition: misc.hh:277
gem5::McrMrcMiscInst::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:370
gem5::RegRegImmImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:310
gem5::MipsISA::ExtMachInst
uint64_t ExtMachInst
Definition: types.hh:43
gem5::RegRegRegOp::RegRegRegOp
RegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2)
Definition: misc.hh:263
gem5::RegImmRegShiftOp::shiftType
ArmISA::ArmShiftType shiftType
Definition: misc.hh:372
gem5::RegImmImmOp::imm1
uint64_t imm1
Definition: misc.hh:332
gem5::MiscRegRegImmOp::op1
RegIndex op1
Definition: misc.hh:296
gem5::RegImmRegOp::dest
RegIndex dest
Definition: misc.hh:201
gem5::RegRegRegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:217
gem5::RegMiscRegImmOp::dest
RegIndex dest
Definition: misc.hh:313
gem5::MsrImmOp::MsrImmOp
MsrImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, uint32_t _imm, uint8_t _byteMask)
Definition: misc.hh:78
gem5::RegRegRegOp
Definition: misc.hh:256
gem5::McrrOp::imm
uint32_t imm
Definition: misc.hh:126
gem5::RegImmRegOp::RegImmRegOp
RegImmRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm, RegIndex _op1)
Definition: misc.hh:205
gem5::RegImmOp::dest
RegIndex dest
Definition: misc.hh:156
gem5::RegRegImmImmOp
Definition: misc.hh:346
gem5::RegRegImmImmOp::op1
RegIndex op1
Definition: misc.hh:350
gem5::MiscRegRegImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:275
gem5::RegRegRegRegOp::RegRegRegRegOp
RegRegRegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, RegIndex _op2, RegIndex _op3)
Definition: misc.hh:244
gem5::RegOp::dest
RegIndex dest
Definition: misc.hh:187
gem5::RegRegOp::RegRegOp
RegRegOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1)
Definition: misc.hh:174
gem5::RegRegImmImmOp::dest
RegIndex dest
Definition: misc.hh:349
gem5::McrMrcImplDefined
This class is also used for IMPLEMENTATION DEFINED registers, whose mcr/mrc behaviour is trappable ev...
Definition: misc.hh:428
gem5::MiscRegRegImmOp::dest
ArmISA::MiscRegIndex dest
Definition: misc.hh:295
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::RegImmRegOp::imm
uint64_t imm
Definition: misc.hh:202
pred_inst.hh
gem5::RegRegImmImmOp::RegRegImmImmOp
RegRegImmImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm1, uint64_t _imm2)
Definition: misc.hh:354
gem5::McrrOp
Definition: misc.hh:120
gem5::MrrcOp::dest
RegIndex dest
Definition: misc.hh:105
gem5::ArmISA::MiscRegIndex
MiscRegIndex
Definition: misc.hh:64
gem5::McrrOp::dest
ArmISA::MiscRegIndex dest
Definition: misc.hh:125
gem5::MrrcOp
Definition: misc.hh:101
gem5::MrsOp::MrsOp
MrsOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest)
Definition: misc.hh:51
gem5::McrMrcMiscInst::execute
Fault execute(ExecContext *xc, trace::InstRecord *traceData) const override
Definition: misc.cc:364
gem5::McrMrcImplDefined::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:395
gem5::TlbiOp::TlbiOp
TlbiOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::MiscRegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition: misc.hh:445
gem5::McrMrcImplDefined::execute
Fault execute(ExecContext *xc, trace::InstRecord *traceData) const override
Definition: misc.cc:383
gem5::RegImmRegShiftOp::op1
RegIndex op1
Definition: misc.hh:370
gem5::MsrImmOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:133
gem5::RegImmImmOp
Definition: misc.hh:328
gem5::RegImmOp
Definition: misc.hh:153
gem5::McrrOp::op2
RegIndex op2
Definition: misc.hh:124
gem5::McrrOp::McrrOp
McrrOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _op1, RegIndex _op2, ArmISA::MiscRegIndex _dest, uint32_t _imm)
Definition: misc.hh:128
gem5::RegImmRegOp::op1
RegIndex op1
Definition: misc.hh:203
gem5::X86ISA::os
Bitfield< 17 > os
Definition: misc.hh:810
gem5::RegRegRegRegOp::op3
RegIndex op3
Definition: misc.hh:242
gem5::RegRegRegOp::op1
RegIndex op1
Definition: misc.hh:260
gem5::McrMrcImplDefined::McrMrcImplDefined
McrMrcImplDefined(const char *_mnemonic, ArmISA::ExtMachInst _machInst, uint64_t _iss, ArmISA::MiscRegIndex _miscReg)
Definition: misc.cc:376
gem5::RegRegOp
Definition: misc.hh:168
gem5::ExecContext
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
Definition: exec_context.hh:71
gem5::RegRegRegRegOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:232
gem5::RegImmOp::RegImmOp
RegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, uint64_t _imm)
Definition: misc.hh:159
gem5::RegImmRegShiftOp::imm
uint64_t imm
Definition: misc.hh:369
gem5::ArmISA::PredOp
Base class for predicated integer operations.
Definition: pred_inst.hh:216
gem5::RegRegImmImmOp::imm1
uint64_t imm1
Definition: misc.hh:351
gem5::TlbiOp
Definition: misc.hh:442
gem5::RegImmRegShiftOp::dest
RegIndex dest
Definition: misc.hh:368
gem5::MrrcOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:152
gem5::RegRegImmOp::op1
RegIndex op1
Definition: misc.hh:278
gem5::MiscRegRegImmOp::MiscRegRegImmOp
MiscRegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, ArmISA::MiscRegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition: misc.hh:299
gem5::MsrRegOp::op1
RegIndex op1
Definition: misc.hh:90
gem5::RegRegImmOp::imm
uint64_t imm
Definition: misc.hh:279
gem5::RegImmRegShiftOp::shiftAmt
int32_t shiftAmt
Definition: misc.hh:371
gem5::RegIndex
uint16_t RegIndex
Definition: types.hh:176
gem5::RegRegRegOp::op2
RegIndex op2
Definition: misc.hh:261
gem5::MrsOp::generateDisassembly
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc.cc:50
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::RegRegRegImmOp
Definition: misc.hh:216
gem5::RegRegRegImmOp::imm
uint64_t imm
Definition: misc.hh:222
gem5::RegRegOp::dest
RegIndex dest
Definition: misc.hh:171
gem5::McrMrcMiscInst::miscReg
ArmISA::MiscRegIndex miscReg
Definition: misc.hh:410
gem5::MsrBase::MsrBase
MsrBase(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, uint8_t _byteMask)
Definition: misc.hh:65
gem5::MrrcOp::imm
uint32_t imm
Definition: misc.hh:107
gem5::RegRegImmOp::RegRegImmOp
RegRegImmOp(const char *mnem, ArmISA::ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _op1, uint64_t _imm)
Definition: misc.hh:281
gem5::RegRegRegRegOp::op1
RegIndex op1
Definition: misc.hh:240
gem5::RegRegRegRegOp
Definition: misc.hh:236
gem5::MsrBase
Definition: misc.hh:60
gem5::McrMrcMiscInst
Certain mrc/mcr instructions act as nops or flush the pipe based on what register the instruction is ...
Definition: misc.hh:406
gem5::MiscRegRegImmOp::imm
uint64_t imm
Definition: misc.hh:297
gem5::RegRegRegImmOp::op2
RegIndex op2
Definition: misc.hh:221

Generated on Sun Jul 30 2023 01:56:48 for gem5 by doxygen 1.8.17