33a34
> #include "base/bigint.hh"
153a155,156
> data_swap_pkt = new Packet(data_write_req, MemCmd::SwapReq,
> Packet::Broadcast);
320a324,327
> AtomicSimpleCPU::read(Addr addr, Twin64_t &data, unsigned flags);
>
> template
> Fault
366c373
< PacketPtr pkt = data_write_pkt;
---
> PacketPtr pkt;
369a377,381
> if (req->isSwap())
> pkt = data_swap_pkt;
> else
> pkt = data_write_pkt;
>
383a396,399
> if (req->isCondSwap()) {
> assert(res);
> req->setExtraData(*res);
> }
384a401
>
404,405c421,423
< if (res) {
< *res = req->getScResult();
---
> if (req->isSwap()) {
> assert(res);
> *res = pkt->get<T>();
406a425,435
>
> if (req->isLocked()) {
> uint64_t scResult = req->getExtraData();
> if (scResult != 0) {
> // clear failure counter
> thread->setStCondFailures(0);
> }
> if (res) {
> *res = req->getExtraData();
> }
> }