gem5 v24.0.0.0
Loading...
Searching...
No Matches
mem.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2010 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 *
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
25 * contributors may be used to endorse or promote products derived from
26 * this software without specific prior written permission.
27 *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
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
41#ifndef __ARCH_ARM_MEM_HH__
42#define __ARCH_ARM_MEM_HH__
43
45#include "arch/arm/pcstate.hh"
46#include "cpu/thread_context.hh"
47
48namespace gem5
49{
50
51namespace ArmISA
52{
53
54class MightBeMicro : public PredOp
55{
56 protected:
57 MightBeMicro(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
58 : PredOp(mnem, _machInst, __opClass)
59 {}
60
61 void
62 advancePC(PCStateBase &pcState) const override
63 {
64 auto &apc = pcState.as<PCState>();
65 if (flags[IsLastMicroop]) {
66 apc.uEnd();
67 } else if (flags[IsMicroop]) {
68 apc.uAdvance();
69 } else {
70 apc.advance();
71 }
72 }
73
74 void
75 advancePC(ThreadContext *tc) const override
76 {
77 PCState pc = tc->pcState().as<PCState>();
78 if (flags[IsLastMicroop]) {
79 pc.uEnd();
80 } else if (flags[IsMicroop]) {
81 pc.uAdvance();
82 } else {
83 pc.advance();
84 }
85 tc->pcState(pc);
86 }
87};
88
89// The address is a base register plus an immediate.
90class RfeOp : public MightBeMicro
91{
92 public:
100 protected:
103 bool wb;
105 static const unsigned numMicroops = 3;
106
108
109 RfeOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
110 RegIndex _base, AddrMode _mode, bool _wb)
111 : MightBeMicro(mnem, _machInst, __opClass),
112 base(_base), mode(_mode), wb(_wb),
113 ura(int_reg::Ureg0), urb(int_reg::Ureg1),
114 urc(int_reg::Ureg2),
115 uops(NULL)
116 {}
117
118 virtual
120 {
121 delete [] uops;
122 }
123
125 fetchMicroop(MicroPC microPC) const override
126 {
127 assert(uops != NULL && microPC < numMicroops);
128 return uops[microPC];
129 }
130
131 std::string generateDisassembly(
132 Addr pc, const loader::SymbolTable *symtab) const override;
133};
134
135// The address is a base register plus an immediate.
136class SrsOp : public MightBeMicro
137{
138 public:
146 protected:
147 uint32_t regMode;
149 bool wb;
150 static const unsigned numMicroops = 2;
151
153
154 SrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
155 uint32_t _regMode, AddrMode _mode, bool _wb)
156 : MightBeMicro(mnem, _machInst, __opClass),
157 regMode(_regMode), mode(_mode), wb(_wb), uops(NULL)
158 {}
159
160 virtual
162 {
163 delete [] uops;
164 }
165
167 fetchMicroop(MicroPC microPC) const override
168 {
169 assert(uops != NULL && microPC < numMicroops);
170 return uops[microPC];
171 }
172
173 std::string generateDisassembly(
174 Addr pc, const loader::SymbolTable *symtab) const override;
175};
176
177class Memory : public MightBeMicro
178{
179 public:
186
187 protected:
188
191 bool add;
192 static const unsigned numMicroops = 3;
193
195
196 Memory(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
197 RegIndex _dest, RegIndex _base, bool _add)
198 : MightBeMicro(mnem, _machInst, __opClass),
199 dest(_dest), base(_base), add(_add), uops(NULL)
200 {}
201
202 virtual
204 {
205 delete [] uops;
206 }
207
209 fetchMicroop(MicroPC microPC) const override
210 {
211 assert(uops != NULL && microPC < numMicroops);
212 return uops[microPC];
213 }
214
215 virtual void
216 printOffset(std::ostream &os) const
217 {}
218
219 virtual void
220 printDest(std::ostream &os) const
221 {
223 }
224
225 void printInst(std::ostream &os, AddrMode addrMode) const;
226};
227
228// The address is a base register plus an immediate.
229class MemoryImm : public Memory
230{
231 protected:
232 int32_t imm;
233
234 MemoryImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
235 RegIndex _dest, RegIndex _base, bool _add, int32_t _imm)
236 : Memory(mnem, _machInst, __opClass, _dest, _base, _add), imm(_imm)
237 {}
238
239 void
240 printOffset(std::ostream &os) const
241 {
242 int32_t pImm = imm;
243 if (!add)
244 pImm = -pImm;
245 ccprintf(os, "#%d", pImm);
246 }
247};
248
249class MemoryExImm : public MemoryImm
250{
251 protected:
253
254 MemoryExImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
255 RegIndex _result, RegIndex _dest, RegIndex _base,
256 bool _add, int32_t _imm)
257 : MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
258 result(_result)
259 {}
260
261 void
262 printDest(std::ostream &os) const
263 {
265 os << ", ";
267 }
268};
269
270// The address is a base register plus an immediate.
271class MemoryDImm : public MemoryImm
272{
273 protected:
275
276 MemoryDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
277 RegIndex _dest, RegIndex _dest2,
278 RegIndex _base, bool _add, int32_t _imm)
279 : MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
280 dest2(_dest2)
281 {}
282
283 void
284 printDest(std::ostream &os) const
285 {
287 os << ", ";
289 }
290};
291
293{
294 protected:
296
297 MemoryExDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
298 RegIndex _result, RegIndex _dest, RegIndex _dest2,
299 RegIndex _base, bool _add, int32_t _imm)
300 : MemoryDImm(mnem, _machInst, __opClass, _dest, _dest2,
301 _base, _add, _imm), result(_result)
302 {}
303
304 void
305 printDest(std::ostream &os) const
306 {
308 os << ", ";
310 }
311};
312
313// The address is a shifted register plus an immediate
314class MemoryReg : public Memory
315{
316 protected:
317 int32_t shiftAmt;
318 ArmShiftType shiftType;
320
321 MemoryReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
322 RegIndex _dest, RegIndex _base, bool _add,
323 int32_t _shiftAmt, ArmShiftType _shiftType,
324 RegIndex _index)
325 : Memory(mnem, _machInst, __opClass, _dest, _base, _add),
326 shiftAmt(_shiftAmt), shiftType(_shiftType), index(_index)
327 {}
328
329 void printOffset(std::ostream &os) const;
330};
331
332class MemoryDReg : public MemoryReg
333{
334 protected:
336
337 MemoryDReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
338 RegIndex _dest, RegIndex _dest2,
339 RegIndex _base, bool _add,
340 int32_t _shiftAmt, ArmShiftType _shiftType,
341 RegIndex _index)
342 : MemoryReg(mnem, _machInst, __opClass, _dest, _base, _add,
343 _shiftAmt, _shiftType, _index),
344 dest2(_dest2)
345 {}
346
347 void
348 printDest(std::ostream &os) const
349 {
351 os << ", ";
353 }
354};
355
356template<class Base>
357class MemoryOffset : public Base
358{
359 protected:
360 MemoryOffset(const char *mnem, ExtMachInst _machInst,
361 OpClass __opClass, RegIndex _dest, RegIndex _base,
362 bool _add, int32_t _imm)
363 : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
364 {}
365
366 MemoryOffset(const char *mnem, ExtMachInst _machInst,
367 OpClass __opClass, RegIndex _dest, RegIndex _base,
368 bool _add, int32_t _shiftAmt, ArmShiftType _shiftType,
369 RegIndex _index)
370 : Base(mnem, _machInst, __opClass, _dest, _base, _add,
371 _shiftAmt, _shiftType, _index)
372 {}
373
374 MemoryOffset(const char *mnem, ExtMachInst _machInst,
375 OpClass __opClass, RegIndex _dest, RegIndex _dest2,
376 RegIndex _base, bool _add, int32_t _imm)
377 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
378 {}
379
380 MemoryOffset(const char *mnem, ExtMachInst _machInst,
381 OpClass __opClass, RegIndex _result,
382 RegIndex _dest, RegIndex _dest2,
383 RegIndex _base, bool _add, int32_t _imm)
384 : Base(mnem, _machInst, __opClass, _result,
385 _dest, _dest2, _base, _add, _imm)
386 {}
387
388 MemoryOffset(const char *mnem, ExtMachInst _machInst,
389 OpClass __opClass, RegIndex _dest, RegIndex _dest2,
390 RegIndex _base, bool _add,
391 int32_t _shiftAmt, ArmShiftType _shiftType,
392 RegIndex _index)
393 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
394 _shiftAmt, _shiftType, _index)
395 {}
396
397 std::string
399 const loader::SymbolTable *symtab) const override
400 {
401 std::stringstream ss;
402 this->printInst(ss, Memory::AddrMd_Offset);
403 return ss.str();
404 }
405};
406
407template<class Base>
408class MemoryPreIndex : public Base
409{
410 protected:
411 MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
412 OpClass __opClass, RegIndex _dest, RegIndex _base,
413 bool _add, int32_t _imm)
414 : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
415 {}
416
417 MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
418 OpClass __opClass, RegIndex _dest, RegIndex _base,
419 bool _add, int32_t _shiftAmt, ArmShiftType _shiftType,
420 RegIndex _index)
421 : Base(mnem, _machInst, __opClass, _dest, _base, _add,
422 _shiftAmt, _shiftType, _index)
423 {}
424
425 MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
426 OpClass __opClass, RegIndex _dest, RegIndex _dest2,
427 RegIndex _base, bool _add, int32_t _imm)
428 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
429 {}
430
431 MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
432 OpClass __opClass, RegIndex _result,
433 RegIndex _dest, RegIndex _dest2,
434 RegIndex _base, bool _add, int32_t _imm)
435 : Base(mnem, _machInst, __opClass, _result,
436 _dest, _dest2, _base, _add, _imm)
437 {}
438
439 MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
440 OpClass __opClass, RegIndex _dest, RegIndex _dest2,
441 RegIndex _base, bool _add,
442 int32_t _shiftAmt, ArmShiftType _shiftType,
443 RegIndex _index)
444 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
445 _shiftAmt, _shiftType, _index)
446 {}
447
448 std::string
450 const loader::SymbolTable *symtab) const override
451 {
452 std::stringstream ss;
453 this->printInst(ss, Memory::AddrMd_PreIndex);
454 return ss.str();
455 }
456};
457
458template<class Base>
459class MemoryPostIndex : public Base
460{
461 protected:
462 MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
463 OpClass __opClass, RegIndex _dest, RegIndex _base,
464 bool _add, int32_t _imm)
465 : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
466 {}
467
468 MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
469 OpClass __opClass, RegIndex _dest, RegIndex _base,
470 bool _add, int32_t _shiftAmt, ArmShiftType _shiftType,
471 RegIndex _index)
472 : Base(mnem, _machInst, __opClass, _dest, _base, _add,
473 _shiftAmt, _shiftType, _index)
474 {}
475
476 MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
477 OpClass __opClass, RegIndex _dest, RegIndex _dest2,
478 RegIndex _base, bool _add, int32_t _imm)
479 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
480 {}
481
482 MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
483 OpClass __opClass, RegIndex _result,
484 RegIndex _dest, RegIndex _dest2,
485 RegIndex _base, bool _add, int32_t _imm)
486 : Base(mnem, _machInst, __opClass, _result,
487 _dest, _dest2, _base, _add, _imm)
488 {}
489
490 MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
491 OpClass __opClass, RegIndex _dest, RegIndex _dest2,
492 RegIndex _base, bool _add,
493 int32_t _shiftAmt, ArmShiftType _shiftType,
494 RegIndex _index)
495 : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
496 _shiftAmt, _shiftType, _index)
497 {}
498
499 std::string
501 const loader::SymbolTable *symtab) const override
502 {
503 std::stringstream ss;
504 this->printInst(ss, Memory::AddrMd_PostIndex);
505 return ss.str();
506 }
507};
508
509} // namespace ArmISA
510} // namespace gem5
511
512#endif //__ARCH_ARM_INSTS_MEM_HH__
void printIntReg(std::ostream &os, RegIndex reg_idx, uint8_t opWidth=0) const
Print a register name for disassembly given the unique dependence tag number (FP or int).
MemoryDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:276
void printDest(std::ostream &os) const
Definition mem.hh:284
void printDest(std::ostream &os) const
Definition mem.hh:348
MemoryDReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, RegIndex _index)
Definition mem.hh:337
void printDest(std::ostream &os) const
Definition mem.hh:305
MemoryExDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _result, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:297
void printDest(std::ostream &os) const
Definition mem.hh:262
MemoryExImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _result, RegIndex _dest, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:254
void printOffset(std::ostream &os) const
Definition mem.hh:240
MemoryImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:234
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:374
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, RegIndex _index)
Definition mem.hh:388
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Definition mem.hh:398
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:360
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, RegIndex _index)
Definition mem.hh:366
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _result, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:380
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, RegIndex _index)
Definition mem.hh:490
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, RegIndex _index)
Definition mem.hh:468
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:476
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:462
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _result, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:482
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Definition mem.hh:500
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, RegIndex _index)
Definition mem.hh:417
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Definition mem.hh:449
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:411
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _result, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:431
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _imm)
Definition mem.hh:425
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _dest2, RegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, RegIndex _index)
Definition mem.hh:439
ArmShiftType shiftType
Definition mem.hh:318
void printOffset(std::ostream &os) const
Definition mem.cc:52
MemoryReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, RegIndex _index)
Definition mem.hh:321
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
Definition mem.hh:209
void printInst(std::ostream &os, AddrMode addrMode) const
Definition mem.cc:163
RegIndex base
Definition mem.hh:190
static const unsigned numMicroops
Definition mem.hh:192
virtual void printDest(std::ostream &os) const
Definition mem.hh:220
StaticInstPtr * uops
Definition mem.hh:194
RegIndex dest
Definition mem.hh:189
virtual ~Memory()
Definition mem.hh:203
Memory(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _dest, RegIndex _base, bool _add)
Definition mem.hh:196
virtual void printOffset(std::ostream &os) const
Definition mem.hh:216
MightBeMicro(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
Definition mem.hh:57
void advancePC(ThreadContext *tc) const override
Definition mem.hh:75
void advancePC(PCStateBase &pcState) const override
Definition mem.hh:62
Base class for predicated integer operations.
Definition pred_inst.hh:217
RegIndex urb
Definition mem.hh:104
RegIndex base
Definition mem.hh:101
RegIndex ura
Definition mem.hh:104
StaticInstPtr * uops
Definition mem.hh:107
RfeOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, RegIndex _base, AddrMode _mode, bool _wb)
Definition mem.hh:109
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition mem.cc:80
AddrMode mode
Definition mem.hh:102
static const unsigned numMicroops
Definition mem.hh:105
RegIndex urc
Definition mem.hh:104
virtual ~RfeOp()
Definition mem.hh:119
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
Definition mem.hh:125
AddrMode mode
Definition mem.hh:148
StaticInstPtr fetchMicroop(MicroPC microPC) const override
Return the microop that goes with a particular micropc.
Definition mem.hh:167
SrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, uint32_t _regMode, AddrMode _mode, bool _wb)
Definition mem.hh:154
uint32_t regMode
Definition mem.hh:147
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition mem.cc:105
StaticInstPtr * uops
Definition mem.hh:152
virtual ~SrsOp()
Definition mem.hh:161
static const unsigned numMicroops
Definition mem.hh:150
Target & as()
Definition pcstate.hh:73
std::bitset< Num_Flags > flags
Flag values for this instruction.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual const PCStateBase & pcState() const =0
Bitfield< 21 > ss
Definition misc_types.hh:60
Bitfield< 4 > pc
Bitfield< 17 > os
Definition misc.hh:838
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
Definition binary32.hh:36
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
uint16_t MicroPC
Definition types.hh:149
void ccprintf(cp::Print &print)
Definition cprintf.hh:130

Generated on Tue Jun 18 2024 16:23:57 for gem5 by doxygen 1.11.0