gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
request.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012-2013,2017-2022 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) 2002-2005 The Regents of The University of Michigan
15  * Copyright (c) 2010,2015 Advanced Micro Devices, Inc.
16  * All rights reserved.
17  *
18  * Redistribution and use in source and binary forms, with or without
19  * modification, are permitted provided that the following conditions are
20  * met: redistributions of source code must retain the above copyright
21  * notice, this list of conditions and the following disclaimer;
22  * redistributions in binary form must reproduce the above copyright
23  * notice, this list of conditions and the following disclaimer in the
24  * documentation and/or other materials provided with the distribution;
25  * neither the name of the copyright holders nor the names of its
26  * contributors may be used to endorse or promote products derived from
27  * this software without specific prior written permission.
28  *
29  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40  */
41 
48 #ifndef __MEM_REQUEST_HH__
49 #define __MEM_REQUEST_HH__
50 
51 #include <algorithm>
52 #include <cassert>
53 #include <cstdint>
54 #include <functional>
55 #include <limits>
56 #include <memory>
57 #include <vector>
58 
59 #include "base/amo.hh"
60 #include "base/compiler.hh"
61 #include "base/extensible.hh"
62 #include "base/flags.hh"
63 #include "base/types.hh"
64 #include "cpu/inst_seq.hh"
65 #include "mem/htm.hh"
66 #include "sim/cur_tick.hh"
67 
68 namespace gem5
69 {
70 
78 namespace context_switch_task_id
79 {
80  enum TaskId
81  {
82  MaxNormalTaskId = 1021, /* Maximum number of normal tasks */
83  Prefetcher = 1022, /* For cache lines brought in by prefetcher */
84  DMA = 1023, /* Mostly Table Walker */
85  Unknown = 1024,
87  };
88 }
89 
90 class Packet;
91 class Request;
93 
94 typedef std::shared_ptr<Request> RequestPtr;
95 typedef uint16_t RequestorID;
96 
97 class Request : public Extensible<Request>
98 {
99  public:
100  typedef uint64_t FlagsType;
101  typedef uint8_t ArchFlagsType;
103 
104  enum : FlagsType
105  {
113  ARCH_BITS = 0x000000FF,
115  INST_FETCH = 0x00000100,
117  PHYSICAL = 0x00000200,
125  UNCACHEABLE = 0x00000400,
135  STRICT_ORDER = 0x00000800,
137  PRIVILEGED = 0x00008000,
138 
143  CACHE_BLOCK_ZERO = 0x00010000,
144 
146  NO_ACCESS = 0x00080000,
154  LOCKED_RMW = 0x00100000,
156  LLSC = 0x00200000,
158  MEM_SWAP = 0x00400000,
159  MEM_SWAP_COND = 0x00800000,
161  READ_MODIFY_WRITE = 0x00020000,
162 
164  PREFETCH = 0x01000000,
166  PF_EXCLUSIVE = 0x02000000,
168  EVICT_NEXT = 0x04000000,
170  ACQUIRE = 0x00020000,
172  RELEASE = 0x00040000,
173 
175  ATOMIC_RETURN_OP = 0x40000000,
177  ATOMIC_NO_RETURN_OP = 0x80000000,
178 
183  KERNEL = 0x00001000,
184 
186  SECURE = 0x10000000,
188  PT_WALK = 0x20000000,
189 
191  INVALIDATE = 0x0000000100000000,
193  CLEAN = 0x0000000200000000,
194 
196  DST_POU = 0x0000001000000000,
197 
199  DST_POC = 0x0000002000000000,
200 
202  DST_BITS = 0x0000003000000000,
203 
207  HTM_START = 0x0000010000000000,
208 
210  HTM_COMMIT = 0x0000020000000000,
211 
213  HTM_CANCEL = 0x0000040000000000,
214 
216  HTM_ABORT = 0x0000080000000000,
217 
218  // What is the different between HTM cancel and abort?
219  //
220  // HTM_CANCEL will originate from a user instruction, e.g.
221  // Arm's TCANCEL or x86's XABORT. This is an explicit request
222  // to end a transaction and restore from the last checkpoint.
223  //
224  // HTM_ABORT is an internally generated request used to synchronize
225  // a transaction's failure between the core and memory subsystem.
226  // If a transaction fails in the core, e.g. because an instruction
227  // within the transaction generates an exception, the core will prepare
228  // itself to stop fetching/executing more instructions and send an
229  // HTM_ABORT to the memory subsystem before restoring the checkpoint.
230  // Similarly, the transaction could fail in the memory subsystem and
231  // this will be communicated to the core via the Packet object.
232  // Once the core notices, it will do the same as the above and send
233  // a HTM_ABORT to the memory subsystem.
234  // A HTM_CANCEL sent to the memory subsystem will ultimately return
235  // to the core which in turn will send a HTM_ABORT.
236  //
237  // This separation is necessary to ensure the disjoint components
238  // of the system work correctly together.
239 
241  TLBI = 0x0000100000000000,
242 
244  TLBI_SYNC = 0x0000200000000000,
245 
248  TLBI_EXT_SYNC = 0x0000400000000000,
249 
252  TLBI_EXT_SYNC_COMP = 0x0000800000000000,
253 
259  };
261  CLEAN | INVALIDATE;
262 
265 
266  static const FlagsType TLBI_CMD = TLBI | TLBI_SYNC |
268 
271  enum : RequestorID
272  {
286  invldRequestorId = std::numeric_limits<RequestorID>::max()
287  };
290  typedef uint64_t CacheCoherenceFlagsType;
292 
321  {
323  I_CACHE_INV = 0x00000001,
325  V_CACHE_INV = 0x00000002,
326  K_CACHE_INV = 0x00000004,
327  GL1_CACHE_INV = 0x00000008,
328  K_CACHE_WB = 0x00000010,
329  FLUSH_L2 = 0x00000020,
330  GL2_CACHE_INV = 0x00000040,
332  SLC_BIT = 0x00000080,
333  DLC_BIT = 0x00000100,
334  GLC_BIT = 0x00000200,
336  CACHED = 0x00000400,
337  READ_WRITE = 0x00000800,
338  SHARED = 0x00001000,
339 
340  };
341 
342  using LocalAccessor =
343  std::function<Cycles(ThreadContext *tc, Packet *pkt)>;
344 
345  private:
346  typedef uint16_t PrivateFlagsType;
348 
349  enum : PrivateFlagsType
350  {
352  VALID_SIZE = 0x00000001,
354  VALID_PADDR = 0x00000002,
356  VALID_VADDR = 0x00000004,
358  VALID_INST_SEQ_NUM = 0x00000008,
360  VALID_PC = 0x00000010,
362  VALID_CONTEXT_ID = 0x00000020,
364  VALID_EXTRA_DATA = 0x00000080,
366  VALID_STREAM_ID = 0x00000100,
367  VALID_SUBSTREAM_ID = 0x00000200,
368  // hardware transactional memory
370  VALID_HTM_ABORT_CAUSE = 0x00000400,
372  VALID_INST_COUNT = 0x00000800,
378  };
379 
380  private:
381 
387 
393  unsigned _size = 0;
394 
397 
402 
405 
408 
411 
418 
423 
429  uint32_t _streamId = 0;
430 
437  uint32_t _substreamId = 0;
438 
443  bool _systemReq = 0;
444 
447 
451  uint64_t _extraData = 0;
452 
455 
458 
461 
464 
466 
469 
472 
473  public:
474 
480  Request() {}
481 
487  Request(Addr paddr, unsigned size, Flags flags, RequestorID id) :
488  _paddr(paddr), _size(size), _requestorId(id), _time(curTick())
489  {
490  _flags.set(flags);
492  _byteEnable = std::vector<bool>(size, true);
493  }
494 
495  Request(Addr vaddr, unsigned size, Flags flags,
496  RequestorID id, Addr pc, ContextID cid,
497  AtomicOpFunctorPtr atomic_op=nullptr)
498  {
499  setVirt(vaddr, size, flags, id, pc, std::move(atomic_op));
500  setContext(cid);
501  _byteEnable = std::vector<bool>(size, true);
502  }
503 
504  Request(const Request& other)
505  : Extensible<Request>(other),
506  _paddr(other._paddr), _size(other._size),
507  _byteEnable(other._byteEnable),
508  _requestorId(other._requestorId),
509  _flags(other._flags),
511  privateFlags(other.privateFlags),
512  _time(other._time),
513  _taskId(other._taskId), _vaddr(other._vaddr),
515  _pc(other._pc), _reqInstSeqNum(other._reqInstSeqNum),
518  accessDelta(other.accessDelta), depth(other.depth)
519  {
520  atomicOpFunctor.reset(other.atomicOpFunctor ?
521  other.atomicOpFunctor->clone() : nullptr);
522  }
523 
524  ~Request() {}
525 
530  static RequestPtr
532  {
533  auto mgmt_req = std::make_shared<Request>();
534  mgmt_req->_flags.set(flags);
535  mgmt_req->_requestorId = id;
536  mgmt_req->_time = curTick();
537 
538  assert(mgmt_req->isMemMgmt());
539  return mgmt_req;
540  }
541 
545  void
546  setContext(ContextID context_id)
547  {
548  _contextId = context_id;
550  }
551 
552  void
553  setStreamId(uint32_t sid)
554  {
555  _streamId = sid;
557  }
558 
559  void
560  setSubstreamId(uint32_t ssid)
561  {
562  assert(hasStreamId());
563  _substreamId = ssid;
565  }
566 
571  void
572  setVirt(Addr vaddr, unsigned size, Flags flags, RequestorID id, Addr pc,
573  AtomicOpFunctorPtr amo_op=nullptr)
574  {
575  _vaddr = vaddr;
576  _size = size;
577  _requestorId = id;
578  _pc = pc;
579  _time = curTick();
580 
582  _flags.set(flags);
585  depth = 0;
586  accessDelta = 0;
587  translateDelta = 0;
588  atomicOpFunctor = std::move(amo_op);
589  _localAccessor = nullptr;
590  }
591 
596  void
597  setPaddr(Addr paddr)
598  {
599  _paddr = paddr;
601  }
602 
607  // TODO: this function is still required by TimingSimpleCPU - should be
608  // removed once TimingSimpleCPU will support arbitrarily long multi-line
609  // mem. accesses
610  void splitOnVaddr(Addr split_addr, RequestPtr &req1, RequestPtr &req2)
611  {
612  assert(hasVaddr());
613  assert(!hasPaddr());
614  assert(split_addr > _vaddr && split_addr < _vaddr + _size);
615  req1 = std::make_shared<Request>(*this);
616  req2 = std::make_shared<Request>(*this);
617  req1->_size = split_addr - _vaddr;
618  req2->_vaddr = split_addr;
619  req2->_size = _size - req1->_size;
620  req1->_byteEnable = std::vector<bool>(
621  _byteEnable.begin(),
622  _byteEnable.begin() + req1->_size);
623  req2->_byteEnable = std::vector<bool>(
624  _byteEnable.begin() + req1->_size,
625  _byteEnable.end());
626  }
627 
631  bool
632  hasPaddr() const
633  {
635  }
636 
637  Addr
638  getPaddr() const
639  {
640  assert(hasPaddr());
641  return _paddr;
642  }
643 
647  bool
648  hasInstCount() const
649  {
651  }
652 
654  {
655  assert(hasInstCount());
656  return _instCount;
657  }
658 
660  {
662  _instCount = val;
663  }
664 
669 
675 
680  mutable int depth = 0;
681 
685  bool
686  hasSize() const
687  {
688  return privateFlags.isSet(VALID_SIZE);
689  }
690 
691  unsigned
692  getSize() const
693  {
694  assert(hasSize());
695  return _size;
696  }
697 
698  const std::vector<bool>&
700  {
701  return _byteEnable;
702  }
703 
704  void
706  {
707  assert(be.size() == _size);
708  _byteEnable = be;
709  }
710 
716  bool
717  isMasked() const
718  {
719  return std::find(
720  _byteEnable.begin(),
721  _byteEnable.end(),
722  false) != _byteEnable.end();
723  }
724 
726  Tick
727  time() const
728  {
729  assert(hasPaddr() || hasVaddr());
730  return _time;
731  }
732 
734  bool isLocalAccess() { return (bool)_localAccessor; }
738  Cycles
740  {
741  return _localAccessor(tc, pkt);
742  }
743 
747  bool
749  {
750  return (bool)atomicOpFunctor;
751  }
752 
755  {
756  assert(atomicOpFunctor);
757  return atomicOpFunctor.get();
758  }
759 
763  bool
765  {
767  }
768 
771  {
772  assert(hasHtmAbortCause());
773  return _htmAbortCause;
774  }
775 
776  void
778  {
779  assert(isHTMAbort());
782  }
783 
785  Flags
787  {
788  assert(hasPaddr() || hasVaddr());
789  return _flags;
790  }
791 
796  void
798  {
799  assert(hasPaddr() || hasVaddr());
800  _flags.set(flags);
801  }
802 
803  void
805  {
806  assert(hasPaddr() || hasVaddr());
807  _flags.clear(flags);
808  }
809 
810  void
812  {
813  // TODO: do mem_sync_op requests have valid paddr/vaddr?
814  assert(hasPaddr() || hasVaddr());
815  _cacheCoherenceFlags.set(extraFlags);
816  }
817 
818  void
820  {
821  // TODO: do mem_sync_op requests have valid paddr/vaddr?
822  assert(hasPaddr() || hasVaddr());
823  _cacheCoherenceFlags.clear(extraFlags);
824  }
825 
827  bool
828  hasVaddr() const
829  {
831  }
832 
833  Addr
834  getVaddr() const
835  {
836  assert(privateFlags.isSet(VALID_VADDR));
837  return _vaddr;
838  }
839 
842  requestorId() const
843  {
844  return _requestorId;
845  }
846 
847  void
849  {
850  _requestorId = rid;
851  }
852 
853  uint32_t
854  taskId() const
855  {
856  return _taskId;
857  }
858 
859  void
860  taskId(uint32_t id) {
861  _taskId = id;
862  }
863 
866  getArchFlags() const
867  {
868  assert(hasPaddr() || hasVaddr());
869  return _flags & ARCH_BITS;
870  }
871 
873  bool
875  {
877  }
878 
880  uint64_t
881  getExtraData() const
882  {
883  assert(extraDataValid());
884  return _extraData;
885  }
886 
888  void
889  setExtraData(uint64_t extraData)
890  {
891  _extraData = extraData;
893  }
894 
895  bool
896  hasContextId() const
897  {
899  }
900 
902  ContextID
903  contextId() const
904  {
905  assert(hasContextId());
906  return _contextId;
907  }
908 
909  /* For GPU fullsystem mark this request is not to device memory. */
910  void setSystemReq(bool sysReq) { _systemReq = sysReq; }
911  bool systemReq() const { return _systemReq; }
912 
913  bool
914  hasStreamId() const
915  {
917  }
918 
919  uint32_t
920  streamId() const
921  {
922  assert(hasStreamId());
923  return _streamId;
924  }
925 
926  bool
928  {
930  }
931 
932  uint32_t
933  substreamId() const
934  {
935  assert(hasSubstreamId());
936  return _substreamId;
937  }
938 
939  void
941  {
943  _pc = pc;
944  }
945 
946  bool
947  hasPC() const
948  {
949  return privateFlags.isSet(VALID_PC);
950  }
951 
953  Addr
954  getPC() const
955  {
956  assert(hasPC());
957  return _pc;
958  }
959 
964  void incAccessDepth() const { depth++; }
965  int getAccessDepth() const { return depth; }
966 
972 
978  Tick getAccessLatency() const { return accessDelta; }
979 
984  bool
986  {
988  }
989 
990  InstSeqNum
992  {
993  assert(hasInstSeqNum());
994  return _reqInstSeqNum;
995  }
996 
997  void
999  {
1001  _reqInstSeqNum = seq_num;
1002  }
1003 
1006  bool isUncacheable() const { return _flags.isSet(UNCACHEABLE); }
1007  bool isStrictlyOrdered() const { return _flags.isSet(STRICT_ORDER); }
1008  bool isInstFetch() const { return _flags.isSet(INST_FETCH); }
1009  bool
1010  isPrefetch() const
1011  {
1012  return (_flags.isSet(PREFETCH | PF_EXCLUSIVE));
1013  }
1014  bool isPrefetchEx() const { return _flags.isSet(PF_EXCLUSIVE); }
1015  bool isLLSC() const { return _flags.isSet(LLSC); }
1016  bool isPriv() const { return _flags.isSet(PRIVILEGED); }
1017  bool isLockedRMW() const { return _flags.isSet(LOCKED_RMW); }
1018  bool isSwap() const { return _flags.isSet(MEM_SWAP | MEM_SWAP_COND); }
1019  bool isCondSwap() const { return _flags.isSet(MEM_SWAP_COND); }
1020  bool
1022  {
1024  }
1025  bool isSecure() const { return _flags.isSet(SECURE); }
1026  bool isPTWalk() const { return _flags.isSet(PT_WALK); }
1027  bool isRelease() const { return _flags.isSet(RELEASE); }
1028  bool isKernel() const { return _flags.isSet(KERNEL); }
1029  bool isAtomicReturn() const { return _flags.isSet(ATOMIC_RETURN_OP); }
1031  // hardware transactional memory
1032  bool isHTMStart() const { return _flags.isSet(HTM_START); }
1033  bool isHTMCommit() const { return _flags.isSet(HTM_COMMIT); }
1034  bool isHTMCancel() const { return _flags.isSet(HTM_CANCEL); }
1035  bool isHTMAbort() const { return _flags.isSet(HTM_ABORT); }
1036  bool
1037  isHTMCmd() const
1038  {
1039  return (isHTMStart() || isHTMCommit() ||
1040  isHTMCancel() || isHTMAbort());
1041  }
1042 
1043  bool isTlbi() const { return _flags.isSet(TLBI); }
1044  bool isTlbiSync() const { return _flags.isSet(TLBI_SYNC); }
1045  bool isTlbiExtSync() const { return _flags.isSet(TLBI_EXT_SYNC); }
1047  bool
1048  isTlbiCmd() const
1049  {
1050  return (isTlbi() || isTlbiSync() ||
1052  }
1053  bool isMemMgmt() const { return isTlbiCmd() || isHTMCmd(); }
1054 
1055  bool
1056  isAtomic() const
1057  {
1058  return _flags.isSet(ATOMIC_RETURN_OP) ||
1060  }
1061 
1069  bool isToPOU() const { return _flags.isSet(DST_POU); }
1070  bool isToPOC() const { return _flags.isSet(DST_POC); }
1071  Flags getDest() const { return _flags & DST_BITS; }
1072 
1073  bool isAcquire() const { return _cacheCoherenceFlags.isSet(ACQUIRE); }
1074 
1075 
1083  bool isGLCSet() const {return _cacheCoherenceFlags.isSet(GLC_BIT); }
1084  bool isSLCSet() const {return _cacheCoherenceFlags.isSet(SLC_BIT); }
1085 
1091  bool isInvL1() const { return _cacheCoherenceFlags.isSet(INV_L1); }
1092 
1093  bool
1095  {
1097  }
1098 
1111  bool isCacheClean() const { return _flags.isSet(CLEAN); }
1112  bool isCacheInvalidate() const { return _flags.isSet(INVALIDATE); }
1113  bool isCacheMaintenance() const { return _flags.isSet(CLEAN|INVALIDATE); }
1115 };
1116 
1117 } // namespace gem5
1118 
1119 #endif // __MEM_REQUEST_HH__
gem5::Request::ACQUIRE
@ ACQUIRE
The request should be marked with ACQUIRE.
Definition: request.hh:170
gem5::Request::getReqInstSeqNum
InstSeqNum getReqInstSeqNum() const
Definition: request.hh:991
gem5::Request::hasStreamId
bool hasStreamId() const
Definition: request.hh:914
gem5::Request::hasHtmAbortCause
bool hasHtmAbortCause() const
Accessor for hardware transactional memory abort cause.
Definition: request.hh:764
gem5::curTick
Tick curTick()
The universal simulation clock.
Definition: cur_tick.hh:46
gem5::Request::_instCount
Counter _instCount
The instruction count at the time this request is created.
Definition: request.hh:468
gem5::Request::ARCH_BITS
@ ARCH_BITS
Architecture specific flags.
Definition: request.hh:113
gem5::Request::_flags
Flags _flags
Flag structure for the request.
Definition: request.hh:404
gem5::Request::HTM_COMMIT
@ HTM_COMMIT
The request commits a HTM transaction.
Definition: request.hh:210
gem5::Request::funcRequestorId
@ funcRequestorId
This requestor id is used for functional requests that don't come from a particular device.
Definition: request.hh:279
gem5::Request::isTlbi
bool isTlbi() const
Definition: request.hh:1043
gem5::Request::isAtomicNoReturn
bool isAtomicNoReturn() const
Definition: request.hh:1030
gem5::Request::setLocalAccessor
void setLocalAccessor(LocalAccessor acc)
Set the function which will enact that access.
Definition: request.hh:736
gem5::Request::_size
unsigned _size
The size of the request.
Definition: request.hh:393
gem5::Request::isMemMgmt
bool isMemMgmt() const
Definition: request.hh:1053
gem5::Request::TLBI
@ TLBI
The Request is a TLB shootdown.
Definition: request.hh:241
gem5::Request::K_CACHE_WB
@ K_CACHE_WB
Definition: request.hh:328
gem5::Request::Request
Request()
Minimal constructor.
Definition: request.hh:480
gem5::Request::ATOMIC_NO_RETURN_OP
@ ATOMIC_NO_RETURN_OP
The request is an atomic that does not return data.
Definition: request.hh:177
gem5::Request::HTM_ABORT
@ HTM_ABORT
The request aborts a HTM transaction.
Definition: request.hh:216
gem5::Request::getArchFlags
ArchFlagsType getArchFlags() const
Accessor function for architecture-specific flags.
Definition: request.hh:866
gem5::Request::setAccessLatency
void setAccessLatency()
Set/Get the time taken to complete this request's access, not including the time to successfully tran...
Definition: request.hh:977
gem5::Request::PrivateFlags
gem5::Flags< PrivateFlagsType > PrivateFlags
Definition: request.hh:347
gem5::Request::_localAccessor
LocalAccessor _localAccessor
Definition: request.hh:465
gem5::Request::_requestorId
RequestorID _requestorId
The requestor ID which is unique in the system for all ports that are capable of issuing a transactio...
Definition: request.hh:401
gem5::Request::hasAtomicOpFunctor
bool hasAtomicOpFunctor()
Accessor for atomic-op functor.
Definition: request.hh:748
gem5::Request::isStrictlyOrdered
bool isStrictlyOrdered() const
Definition: request.hh:1007
gem5::Request::VALID_SIZE
@ VALID_SIZE
Whether or not the size is valid.
Definition: request.hh:352
gem5::Request::VALID_STREAM_ID
@ VALID_STREAM_ID
Whether or not the stream ID and substream ID is valid.
Definition: request.hh:366
gem5::Request::isPrefetch
bool isPrefetch() const
Definition: request.hh:1010
gem5::Request::getAccessLatency
Tick getAccessLatency() const
Definition: request.hh:978
gem5::Request::isPTWalk
bool isPTWalk() const
Definition: request.hh:1026
gem5::Request::isPrefetchEx
bool isPrefetchEx() const
Definition: request.hh:1014
gem5::HtmFailureFaultCause
HtmFailureFaultCause
Definition: htm.hh:47
gem5::RiscvISA::Unknown
Static instruction class for unknown (illegal) instructions.
Definition: unknown.hh:52
gem5::Request::SHARED
@ SHARED
Definition: request.hh:338
gem5::Request::isUncacheable
bool isUncacheable() const
Accessor functions for flags.
Definition: request.hh:1006
gem5::AtomicOpFunctor
Definition: amo.hh:43
amo.hh
gem5::Request::TLBI_SYNC
@ TLBI_SYNC
The Request is a TLB shootdown sync.
Definition: request.hh:244
gem5::Request::INVALIDATE
@ INVALIDATE
The request invalidates a memory location.
Definition: request.hh:191
gem5::Request::LocalAccessor
std::function< Cycles(ThreadContext *tc, Packet *pkt)> LocalAccessor
Definition: request.hh:343
gem5::Request::VALID_INST_COUNT
@ VALID_INST_COUNT
Whether or not the instruction count is valid.
Definition: request.hh:372
gem5::Flags::set
void set(Type mask)
Set all flag's bits matching the given mask.
Definition: flags.hh:116
gem5::Request::isSecure
bool isSecure() const
Definition: request.hh:1025
gem5::Request::getSize
unsigned getSize() const
Definition: request.hh:692
gem5::Request::GL2_CACHE_INV
@ GL2_CACHE_INV
Definition: request.hh:330
gem5::Request::splitOnVaddr
void splitOnVaddr(Addr split_addr, RequestPtr &req1, RequestPtr &req2)
Generate two requests as if this request had been split into two pieces.
Definition: request.hh:610
gem5::InvalidContextID
const ContextID InvalidContextID
Definition: types.hh:240
gem5::Flags::clear
void clear()
Clear all flag's bits.
Definition: flags.hh:102
gem5::Request::VALID_INST_SEQ_NUM
@ VALID_INST_SEQ_NUM
Whether or not the instruction sequence number is valid.
Definition: request.hh:358
gem5::Request::RELEASE
@ RELEASE
The request should be marked with RELEASE.
Definition: request.hh:172
gem5::Extensible
Definition: extensible.hh:120
gem5::Request::_extraData
uint64_t _extraData
Extra data for the request, such as the return value of store conditional or the compare value for a ...
Definition: request.hh:451
gem5::Request::streamId
uint32_t streamId() const
Definition: request.hh:920
cur_tick.hh
gem5::Request::ATOMIC_RETURN_OP
@ ATOMIC_RETURN_OP
The request is an atomic that returns data.
Definition: request.hh:175
gem5::Request::getInstCount
Counter getInstCount() const
Definition: request.hh:653
gem5::Request::Request
Request(const Request &other)
Definition: request.hh:504
htm.hh
gem5::Request::CLEAN
@ CLEAN
The request cleans a memory location.
Definition: request.hh:193
gem5::Request::isRelease
bool isRelease() const
Definition: request.hh:1027
gem5::Request::setReqInstSeqNum
void setReqInstSeqNum(const InstSeqNum seq_num)
Definition: request.hh:998
gem5::X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:776
gem5::Request::HTM_CMD
static const FlagsType HTM_CMD
Definition: request.hh:263
gem5::Request::~Request
~Request()
Definition: request.hh:524
gem5::Request::getHtmAbortCause
HtmFailureFaultCause getHtmAbortCause() const
Definition: request.hh:770
gem5::Request::isInvL1
bool isInvL1() const
Accessor functions for the memory space configuration flags and used by GPU ISAs such as the Heteroge...
Definition: request.hh:1091
gem5::MaxTick
const Tick MaxTick
Definition: types.hh:60
gem5::Request::CACHED
@ CACHED
mtype flags
Definition: request.hh:336
gem5::Request::_paddr
Addr _paddr
The physical address of the request.
Definition: request.hh:386
std::vector< bool >
gem5::Request::isPriv
bool isPriv() const
Definition: request.hh:1016
gem5::Request::DST_BITS
@ DST_BITS
Bits to define the destination of a request.
Definition: request.hh:202
gem5::Request::getDest
Flags getDest() const
Definition: request.hh:1071
gem5::Request::MEM_SWAP_COND
@ MEM_SWAP_COND
Definition: request.hh:159
gem5::Request::READ_MODIFY_WRITE
@ READ_MODIFY_WRITE
This request is a read which will be followed by a write.
Definition: request.hh:161
gem5::Request::CACHE_BLOCK_ZERO
@ CACHE_BLOCK_ZERO
This is a write that is targeted and zeroing an entire cache block.
Definition: request.hh:143
gem5::Request::VALID_EXTRA_DATA
@ VALID_EXTRA_DATA
Whether or not the sc result is valid.
Definition: request.hh:364
gem5::Request::STRICT_ORDER
@ STRICT_ORDER
The request is required to be strictly ordered by CPU models and is non-speculative.
Definition: request.hh:135
gem5::Request::hasInstSeqNum
bool hasInstSeqNum() const
Accessor for the sequence number of instruction that creates the request.
Definition: request.hh:985
gem5::Request::FlagsType
uint64_t FlagsType
Definition: request.hh:100
gem5::Request::setPC
void setPC(Addr pc)
Definition: request.hh:940
gem5::Request::clearCacheCoherenceFlags
void clearCacheCoherenceFlags(CacheCoherenceFlags extraFlags)
Definition: request.hh:819
gem5::Request::createMemManagement
static RequestPtr createMemManagement(Flags flags, RequestorID id)
Factory method for creating memory management requests, with unspecified addr and size.
Definition: request.hh:531
gem5::Request::getPaddr
Addr getPaddr() const
Definition: request.hh:638
gem5::Request::VALID_HTM_ABORT_CAUSE
@ VALID_HTM_ABORT_CAUSE
Whether or not the abort cause is valid.
Definition: request.hh:370
gem5::Request::Request
Request(Addr vaddr, unsigned size, Flags flags, RequestorID id, Addr pc, ContextID cid, AtomicOpFunctorPtr atomic_op=nullptr)
Definition: request.hh:495
gem5::Request::hasVaddr
bool hasVaddr() const
Accessor function for vaddr.
Definition: request.hh:828
gem5::Request::isReadModifyWrite
bool isReadModifyWrite() const
Definition: request.hh:1021
gem5::Request::isAtomic
bool isAtomic() const
Definition: request.hh:1056
gem5::Request::setStreamId
void setStreamId(uint32_t sid)
Definition: request.hh:553
gem5::Request::systemReq
bool systemReq() const
Definition: request.hh:911
gem5::Cycles
Cycles is a wrapper class for representing cycle counts, i.e.
Definition: types.hh:78
gem5::Request::DST_POC
@ DST_POC
The request targets the point of coherence.
Definition: request.hh:199
gem5::Request::EVICT_NEXT
@ EVICT_NEXT
The request should be marked as LRU.
Definition: request.hh:168
gem5::Request::_taskId
uint32_t _taskId
The task id associated with this request.
Definition: request.hh:422
gem5::Request::isSLCSet
bool isSLCSet() const
Definition: request.hh:1084
gem5::Request::TLBI_EXT_SYNC
@ TLBI_EXT_SYNC
The Request tells the CPU model that a remote TLB Sync has been requested.
Definition: request.hh:248
gem5::Request::isHTMAbort
bool isHTMAbort() const
Definition: request.hh:1035
gem5::Request::TLBI_EXT_SYNC_COMP
@ TLBI_EXT_SYNC_COMP
The Request tells the interconnect that a remote TLB Sync request has completed.
Definition: request.hh:252
gem5::Request::SLC_BIT
@ SLC_BIT
user-policy flags
Definition: request.hh:332
gem5::Request::Flags
gem5::Flags< FlagsType > Flags
Definition: request.hh:102
gem5::Request::PF_EXCLUSIVE
@ PF_EXCLUSIVE
The request should be prefetched into the exclusive state.
Definition: request.hh:166
gem5::Request::getExtraData
uint64_t getExtraData() const
Accessor function for store conditional return value.
Definition: request.hh:881
gem5::Request::taskId
uint32_t taskId() const
Definition: request.hh:854
gem5::Flags< FlagsType >
gem5::Request::_pc
Addr _pc
program counter of initiating access; for tracing/debugging
Definition: request.hh:457
gem5::context_switch_task_id::TaskId
TaskId
Definition: request.hh:80
gem5::Request::PREFETCH
@ PREFETCH
The request is a prefetch.
Definition: request.hh:164
gem5::Request::privateFlags
PrivateFlags privateFlags
Private flags for field validity checking.
Definition: request.hh:410
gem5::Request::TLBI_CMD
static const FlagsType TLBI_CMD
Definition: request.hh:266
gem5::Request::setHtmAbortCause
void setHtmAbortCause(HtmFailureFaultCause val)
Definition: request.hh:777
inst_seq.hh
gem5::Request::getFlags
Flags getFlags()
Accessor for flags.
Definition: request.hh:786
gem5::ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
gem5::Request::isTlbiExtSync
bool isTlbiExtSync() const
Definition: request.hh:1045
gem5::Request::DST_POU
@ DST_POU
The request targets the point of unification.
Definition: request.hh:196
gem5::Flags::isSet
bool isSet(Type mask) const
Verifies whether any bit matching the given mask is set.
Definition: flags.hh:83
gem5::Request::hasSize
bool hasSize() const
Accessor for size.
Definition: request.hh:686
gem5::Request::isHTMStart
bool isHTMStart() const
Definition: request.hh:1032
gem5::Request::invldRequestorId
@ invldRequestorId
Invalid requestor id for assertion checking only.
Definition: request.hh:286
gem5::MaxAddr
const Addr MaxAddr
Definition: types.hh:171
gem5::Packet
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Definition: packet.hh:294
gem5::Request::LLSC
@ LLSC
The request is a Load locked/store conditional.
Definition: request.hh:156
gem5::Request::isSwap
bool isSwap() const
Definition: request.hh:1018
gem5::Request::wbRequestorId
@ wbRequestorId
This requestor id is used for writeback requests by the caches.
Definition: request.hh:274
gem5::probing::Packet
ProbePointArg< PacketInfo > Packet
Packet probe point.
Definition: mem.hh:108
gem5::Tick
uint64_t Tick
Tick count type.
Definition: types.hh:58
gem5::Request::substreamId
uint32_t substreamId() const
Definition: request.hh:933
gem5::Request::_systemReq
bool _systemReq
For fullsystem GPU simulation, this determines if a requests destination is system (host) memory or d...
Definition: request.hh:443
gem5::Request::setPaddr
void setPaddr(Addr paddr)
Set just the physical address.
Definition: request.hh:597
gem5::RequestPtr
std::shared_ptr< Request > RequestPtr
Definition: request.hh:92
gem5::Request::VALID_CONTEXT_ID
@ VALID_CONTEXT_ID
Whether or not the context ID is valid.
Definition: request.hh:362
gem5::Request::_time
Tick _time
The time this request was started.
Definition: request.hh:417
gem5::Request::CacheCoherenceFlagsType
uint64_t CacheCoherenceFlagsType
Definition: request.hh:290
gem5::Request::_cacheCoherenceFlags
CacheCoherenceFlags _cacheCoherenceFlags
Flags that control how downstream cache system maintains coherence.
Definition: request.hh:407
gem5::Request::isAcquire
bool isAcquire() const
Definition: request.hh:1073
gem5::context_switch_task_id::NumTaskId
@ NumTaskId
Definition: request.hh:86
gem5::MipsISA::be
Bitfield< 15 > be
Definition: pra_constants.hh:223
gem5::Request::setExtraData
void setExtraData(uint64_t extraData)
Accessor function for store conditional return value.
Definition: request.hh:889
gem5::Request::isAtomicReturn
bool isAtomicReturn() const
Definition: request.hh:1029
gem5::Request::getAccessDepth
int getAccessDepth() const
Definition: request.hh:965
extensible.hh
gem5::Request::isCacheMaintenance
bool isCacheMaintenance() const
Definition: request.hh:1113
gem5::Request::isInstFetch
bool isInstFetch() const
Definition: request.hh:1008
gem5::Request::isLLSC
bool isLLSC() const
Definition: request.hh:1015
gem5::HtmFailureFaultCause::INVALID
@ INVALID
compiler.hh
flags
uint8_t flags
Definition: helpers.cc:66
gem5::Request::hasSubstreamId
bool hasSubstreamId() const
Definition: request.hh:927
gem5::Request::hasPaddr
bool hasPaddr() const
Accessor for paddr.
Definition: request.hh:632
gem5::Request::setSubstreamId
void setSubstreamId(uint32_t ssid)
Definition: request.hh:560
gem5::Request::isTlbiSync
bool isTlbiSync() const
Definition: request.hh:1044
gem5::Request::setContext
void setContext(ContextID context_id)
Set up Context numbers.
Definition: request.hh:546
gem5::Request::K_CACHE_INV
@ K_CACHE_INV
Definition: request.hh:326
gem5::Request::UNCACHEABLE
@ UNCACHEABLE
The request is to an uncacheable address.
Definition: request.hh:125
gem5::Request::_substreamId
uint32_t _substreamId
The substream ID identifies an "execution context" within a device behind an SMMU/IOMMU.
Definition: request.hh:437
gem5::Request::LOCKED_RMW
@ LOCKED_RMW
This request will lock or unlock the accessed memory.
Definition: request.hh:154
gem5::Request::isGL2CacheFlush
bool isGL2CacheFlush() const
Definition: request.hh:1094
gem5::Request::isHTMCmd
bool isHTMCmd() const
Definition: request.hh:1037
gem5::Request::isCacheInvalidate
bool isCacheInvalidate() const
Definition: request.hh:1112
gem5::Request::_htmAbortCause
HtmFailureFaultCause _htmAbortCause
The cause for HTM transaction abort.
Definition: request.hh:471
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::Request::isKernel
bool isKernel() const
Definition: request.hh:1028
gem5::Request::setFlags
void setFlags(Flags flags)
Note that unlike other accessors, this function sets specific flags (ORs them in); it does not assign...
Definition: request.hh:797
gem5::Request::getByteEnable
const std::vector< bool > & getByteEnable() const
Definition: request.hh:699
gem5::Request::CacheCoherenceFlags
gem5::Flags< CacheCoherenceFlagsType > CacheCoherenceFlags
Definition: request.hh:291
gem5::Request::requestorId
RequestorID requestorId() const
Accesssor for the requestor id.
Definition: request.hh:842
gem5::context_switch_task_id::DMA
@ DMA
Definition: request.hh:84
flags.hh
gem5::Request::PrivateFlagsType
uint16_t PrivateFlagsType
Definition: request.hh:346
gem5::Request::isTlbiExtSyncComp
bool isTlbiExtSyncComp() const
Definition: request.hh:1046
gem5::Request::_reqInstSeqNum
InstSeqNum _reqInstSeqNum
Sequence number of the instruction that creates the request.
Definition: request.hh:460
gem5::Request::localAccessor
Cycles localAccessor(ThreadContext *tc, Packet *pkt)
Perform the installed local access.
Definition: request.hh:739
gem5::Request::isHTMCancel
bool isHTMCancel() const
Definition: request.hh:1034
gem5::Request::isLockedRMW
bool isLockedRMW() const
Definition: request.hh:1017
gem5::Request::I_CACHE_INV
@ I_CACHE_INV
mem_sync_op flags
Definition: request.hh:323
gem5::Request::VALID_PADDR
@ VALID_PADDR
Whether or not paddr is valid (has been written yet).
Definition: request.hh:354
gem5::Request::PT_WALK
@ PT_WALK
The request is a page table walk.
Definition: request.hh:188
gem5::Request::FLUSH_L2
@ FLUSH_L2
Definition: request.hh:329
gem5::Request::VALID_VADDR
@ VALID_VADDR
Whether or not the vaddr is valid.
Definition: request.hh:356
gem5::Request::setVirt
void setVirt(Addr vaddr, unsigned size, Flags flags, RequestorID id, Addr pc, AtomicOpFunctorPtr amo_op=nullptr)
Set up a virtual (e.g., CPU) request in a previously allocated Request object.
Definition: request.hh:572
gem5::Request::MEM_SWAP
@ MEM_SWAP
This request is for a memory swap.
Definition: request.hh:158
gem5::Request::STORE_NO_DATA
static const FlagsType STORE_NO_DATA
Definition: request.hh:260
gem5::Request::ArchFlagsType
uint8_t ArchFlagsType
Definition: request.hh:101
gem5::context_switch_task_id::Unknown
@ Unknown
Definition: request.hh:85
gem5::Request::GL1_CACHE_INV
@ GL1_CACHE_INV
Definition: request.hh:327
gem5::Request::atomicOpFunctor
AtomicOpFunctorPtr atomicOpFunctor
A pointer to an atomic operation.
Definition: request.hh:463
gem5::Request::contextId
ContextID contextId() const
Accessor function for context ID.
Definition: request.hh:903
gem5::Request::GLC_BIT
@ GLC_BIT
Definition: request.hh:334
gem5::Request::HTM_CANCEL
@ HTM_CANCEL
The request cancels a HTM transaction.
Definition: request.hh:213
gem5::context_switch_task_id::MaxNormalTaskId
@ MaxNormalTaskId
Definition: request.hh:82
gem5::Request::setByteEnable
void setByteEnable(const std::vector< bool > &be)
Definition: request.hh:705
gem5::Request::hasContextId
bool hasContextId() const
Definition: request.hh:896
gem5::Request::hasInstCount
bool hasInstCount() const
Accessor for instruction count.
Definition: request.hh:648
types.hh
gem5::Request::INST_FETCH
@ INST_FETCH
The request was an instruction fetch.
Definition: request.hh:115
gem5::Request
Definition: request.hh:97
gem5::Request::V_CACHE_INV
@ V_CACHE_INV
Definition: request.hh:325
gem5::Request::setTranslateLatency
void setTranslateLatency()
Set/Get the time taken for this request to be successfully translated.
Definition: request.hh:970
gem5::Request::_streamId
uint32_t _streamId
The stream ID uniquely identifies a device behind the SMMU/IOMMU Each transaction arriving at the SMM...
Definition: request.hh:429
gem5::Request::INV_L1
@ INV_L1
Definition: request.hh:324
gem5::ContextID
int ContextID
Globally unique thread context ID.
Definition: types.hh:239
gem5::MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:243
gem5::Request::SECURE
@ SECURE
The request targets the secure memory space.
Definition: request.hh:186
gem5::statistics::Counter
double Counter
All counters are of 64-bit values.
Definition: types.hh:46
gem5::Request::isCacheClean
bool isCacheClean() const
Accessor functions to determine whether this request is part of a cache maintenance operation.
Definition: request.hh:1111
gem5::Request::PRIVILEGED
@ PRIVILEGED
This request is made in privileged mode.
Definition: request.hh:137
gem5::Request::getAtomicOpFunctor
AtomicOpFunctor * getAtomicOpFunctor()
Definition: request.hh:754
gem5::ArmISA::id
Bitfield< 33 > id
Definition: misc_types.hh:305
gem5::Request::taskId
void taskId(uint32_t id)
Definition: request.hh:860
gem5::Request::KERNEL
@ KERNEL
The request should be marked with KERNEL.
Definition: request.hh:183
gem5::InstSeqNum
uint64_t InstSeqNum
Definition: inst_seq.hh:40
gem5::Request::STICKY_PRIVATE_FLAGS
@ STICKY_PRIVATE_FLAGS
These flags are not cleared when a Request object is reused (assigned a new address).
Definition: request.hh:377
gem5::Request::hasPC
bool hasPC() const
Definition: request.hh:947
gem5::Request::VALID_SUBSTREAM_ID
@ VALID_SUBSTREAM_ID
Definition: request.hh:367
gem5::Request::time
Tick time() const
Accessor for time.
Definition: request.hh:727
gem5::Request::READ_WRITE
@ READ_WRITE
Definition: request.hh:337
gem5::Request::_byteEnable
std::vector< bool > _byteEnable
Byte-enable mask for writes.
Definition: request.hh:396
gem5::Request::_contextId
ContextID _contextId
The context ID (for statistics, locks, and wakeups).
Definition: request.hh:454
gem5::Request::clearFlags
void clearFlags(Flags flags)
Definition: request.hh:804
gem5::Request::STICKY_FLAGS
@ STICKY_FLAGS
These flags are not cleared when a Request object is reused (assigned a new address).
Definition: request.hh:258
gem5::Request::HTM_START
@ HTM_START
hardware transactional memory
Definition: request.hh:207
gem5::RequestorID
uint16_t RequestorID
Definition: request.hh:95
gem5::Request::_vaddr
Addr _vaddr
The virtual address of the request.
Definition: request.hh:446
gem5::Request::getVaddr
Addr getVaddr() const
Definition: request.hh:834
gem5::Request::incAccessDepth
void incAccessDepth() const
Increment/Get the depth at which this request is responded to.
Definition: request.hh:964
gem5::Request::PHYSICAL
@ PHYSICAL
The virtual address is also the physical address.
Definition: request.hh:117
gem5::context_switch_task_id::Prefetcher
@ Prefetcher
Definition: request.hh:83
gem5::Request::getTranslateLatency
Tick getTranslateLatency() const
Definition: request.hh:971
gem5::Request::isCondSwap
bool isCondSwap() const
Definition: request.hh:1019
gem5::MipsISA::vaddr
vaddr
Definition: pra_constants.hh:278
gem5::AtomicOpFunctorPtr
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
Definition: amo.hh:269
gem5::Request::requestorId
void requestorId(RequestorID rid)
Definition: request.hh:848
gem5::Request::isMasked
bool isMasked() const
Returns true if the memory request is masked, which means there is at least one byteEnable element wh...
Definition: request.hh:717
gem5::Request::translateDelta
Tick translateDelta
Time for the TLB/table walker to successfully translate this request.
Definition: request.hh:668
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::Request::isToPOC
bool isToPOC() const
Definition: request.hh:1070
gem5::Request::isGLCSet
bool isGLCSet() const
Accessor functions for the cache bypass flags.
Definition: request.hh:1083
gem5::Request::intRequestorId
@ intRequestorId
This requestor id is used for message signaled interrupts.
Definition: request.hh:281
gem5::Request::DLC_BIT
@ DLC_BIT
Definition: request.hh:333
gem5::Request::Request
Request(Addr paddr, unsigned size, Flags flags, RequestorID id)
Constructor for physical (e.g.
Definition: request.hh:487
gem5::Request::isLocalAccess
bool isLocalAccess()
Is this request for a local memory mapped resource/register?
Definition: request.hh:734
gem5::Request::isToPOU
bool isToPOU() const
Accessor functions for the destination of a memory request.
Definition: request.hh:1069
gem5::Request::setInstCount
void setInstCount(Counter val)
Definition: request.hh:659
gem5::Request::NO_ACCESS
@ NO_ACCESS
The request should not cause a memory access.
Definition: request.hh:146
gem5::Request::depth
int depth
Level of the cache hierachy where this request was responded to (e.g.
Definition: request.hh:680
gem5::Request::extraDataValid
bool extraDataValid() const
Accessor function to check if sc result is valid.
Definition: request.hh:874
gem5::Request::getPC
Addr getPC() const
Accessor function for pc.
Definition: request.hh:954
gem5::Request::setSystemReq
void setSystemReq(bool sysReq)
Definition: request.hh:910
gem5::Request::isTlbiCmd
bool isTlbiCmd() const
Definition: request.hh:1048
gem5::Request::isHTMCommit
bool isHTMCommit() const
Definition: request.hh:1033
gem5::Request::accessDelta
Tick accessDelta
Access latency to complete this memory transaction not including translation time.
Definition: request.hh:674
gem5::Request::setCacheCoherenceFlags
void setCacheCoherenceFlags(CacheCoherenceFlags extraFlags)
Definition: request.hh:811
gem5::Request::VALID_PC
@ VALID_PC
Whether or not the pc is valid.
Definition: request.hh:360

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