summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/abstract_mem.cc7
-rw-r--r--src/mem/abstract_mem.hh4
2 files changed, 8 insertions, 3 deletions
diff --git a/src/mem/abstract_mem.cc b/src/mem/abstract_mem.cc
index a998530fd..6870ba38f 100644
--- a/src/mem/abstract_mem.cc
+++ b/src/mem/abstract_mem.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010-2012,2017-2018 ARM Limited
+ * Copyright (c) 2010-2012,2017-2019 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -284,7 +284,10 @@ AbstractMemory::checkLockedAddrList(PacketPtr pkt)
DPRINTF(LLSC, "Erasing lock record: context %d addr %#x\n",
i->contextId, paddr);
ContextID owner_cid = i->contextId;
- ContextID requester_cid = pkt->req->contextId();
+ assert(owner_cid != InvalidContextID);
+ ContextID requester_cid = req->hasContextId() ?
+ req->contextId() :
+ InvalidContextID;
if (owner_cid != requester_cid) {
ThreadContext* ctx = system()->getThreadContext(owner_cid);
TheISA::globalClearExclusive(ctx);
diff --git a/src/mem/abstract_mem.hh b/src/mem/abstract_mem.hh
index 18d8ee909..8b944b981 100644
--- a/src/mem/abstract_mem.hh
+++ b/src/mem/abstract_mem.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 ARM Limited
+ * Copyright (c) 2012, 2019 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -83,6 +83,8 @@ class LockedAddr {
// check for matching execution context
bool matchesContext(const RequestPtr &req) const
{
+ assert(contextId != InvalidContextID);
+ assert(req->hasContextId());
return (contextId == req->contextId());
}