162a163,167
> /** The request is an atomic that returns data. */
> ATOMIC_RETURN_OP = 0x40000000,
> /** The request is an atomic that does not return data. */
> ATOMIC_NO_RETURN_OP = 0x80000000,
>
347a353,355
> /** A pointer to an atomic operation */
> AtomicOpFunctor *atomicOpFunctor;
>
359c367,368
< _reqInstSeqNum(0), translateDelta(0), accessDelta(0), depth(0)
---
> _reqInstSeqNum(0), atomicOpFunctor(nullptr), translateDelta(0),
> accessDelta(0), depth(0)
367c376,377
< _reqInstSeqNum(seq_num), translateDelta(0), accessDelta(0), depth(0)
---
> _reqInstSeqNum(seq_num), atomicOpFunctor(nullptr), translateDelta(0),
> accessDelta(0), depth(0)
383c393,394
< _reqInstSeqNum(0), translateDelta(0), accessDelta(0), depth(0)
---
> _reqInstSeqNum(0), atomicOpFunctor(nullptr), translateDelta(0),
> accessDelta(0), depth(0)
392c403,404
< _reqInstSeqNum(0), translateDelta(0), accessDelta(0), depth(0)
---
> _reqInstSeqNum(0), atomicOpFunctor(nullptr), translateDelta(0),
> accessDelta(0), depth(0)
401,402c413,415
< _extraData(0), _contextId(0), _threadId(0), _pc(0),
< _reqInstSeqNum(0), translateDelta(0), accessDelta(0), depth(0)
---
> _extraData(0), _contextId(0), _threadId(0), _pc(pc),
> _reqInstSeqNum(0), atomicOpFunctor(nullptr), translateDelta(0),
> accessDelta(0), depth(0)
406d418
< _pc = pc;
414c426,427
< _reqInstSeqNum(0), translateDelta(0), accessDelta(0), depth(0)
---
> _reqInstSeqNum(0), atomicOpFunctor(nullptr), translateDelta(0),
> accessDelta(0), depth(0)
420c433,439
< ~Request() {}
---
> Request(int asid, Addr vaddr, int size, Flags flags, MasterID mid, Addr pc,
> int cid, ThreadID tid, AtomicOpFunctor *atomic_op)
> : atomicOpFunctor(atomic_op)
> {
> setVirt(asid, vaddr, size, flags, mid, pc);
> setThreadContext(cid, tid);
> }
421a441,447
> ~Request()
> {
> if (hasAtomicOpFunctor()) {
> delete atomicOpFunctor;
> }
> }
>
543a570,585
> /**
> * Accessor for atomic-op functor.
> */
> bool
> hasAtomicOpFunctor()
> {
> return atomicOpFunctor != NULL;
> }
>
> AtomicOpFunctor *
> getAtomicOpFunctor()
> {
> assert(atomicOpFunctor != NULL);
> return atomicOpFunctor;
> }
>
751a794,795
> bool isAtomicReturn() const { return _flags.isSet(ATOMIC_RETURN_OP); }
> bool isAtomicNoReturn() const { return _flags.isSet(ATOMIC_NO_RETURN_OP); }
752a797,803
> bool
> isAtomic() const
> {
> return _flags.isSet(ATOMIC_RETURN_OP) ||
> _flags.isSet(ATOMIC_NO_RETURN_OP);
> }
>