arch-arm: Signal an event when executing store exclusives
When a store exclusive is executed, whether it is successful or not, the exclusives monitor is cleared and therefore we need to signal an event for the PE. Change-Id: I383c88c769c0ac5f5d36c4b5d39c9681134d3a20 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/4480 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
// -*- mode:c++ -*-
|
||||
|
||||
// Copyright (c) 2010-2011 ARM Limited
|
||||
// Copyright (c) 2010-2011,2017 ARM Limited
|
||||
// All rights reserved
|
||||
//
|
||||
// The license below extends only to copyright in the software and shall
|
||||
@@ -228,7 +228,8 @@ let {{
|
||||
|
||||
def __init__(self, *args, **kargs):
|
||||
super(StoreImmEx, self).__init__(*args, **kargs)
|
||||
self.codeBlobs["postacc_code"] = "Result = !writeResult;"
|
||||
self.codeBlobs["postacc_code"] = \
|
||||
"Result = !writeResult; SevMailbox = 1; LLSCLock = 0;"
|
||||
|
||||
class StoreImm(StoreImmInst, StoreSingle):
|
||||
decConstBase = 'LoadStoreImm'
|
||||
@@ -307,7 +308,8 @@ let {{
|
||||
|
||||
def __init__(self, *args, **kargs):
|
||||
super(StoreDoubleImmEx, self).__init__(*args, **kargs)
|
||||
self.codeBlobs["postacc_code"] = "Result = !writeResult;"
|
||||
self.codeBlobs["postacc_code"] = \
|
||||
"Result = !writeResult; SevMailbox = 1; LLSCLock = 0;"
|
||||
|
||||
class StoreDoubleImm(StoreImmInst, StoreDouble):
|
||||
decConstBase = 'LoadStoreDImm'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// -*- mode:c++ -*-
|
||||
|
||||
// Copyright (c) 2011-2013 ARM Limited
|
||||
// Copyright (c) 2011-2013,2017 ARM Limited
|
||||
// All rights reserved
|
||||
//
|
||||
// The license below extends only to copyright in the software and shall
|
||||
@@ -277,7 +277,8 @@ let {{
|
||||
execBase = 'StoreEx64'
|
||||
def __init__(self, *args, **kargs):
|
||||
super(StoreEx64, self).__init__(*args, **kargs)
|
||||
self.codeBlobs["postacc_code"] = "XResult = !writeResult;"
|
||||
self.codeBlobs["postacc_code"] = \
|
||||
"XResult = !writeResult; SevMailbox = 1; LLSCLock = 0;"
|
||||
|
||||
def buildStores64(mnem, NameBase, size, flavor="normal"):
|
||||
StoreImm64(mnem, NameBase + "_IMM", size, flavor=flavor).emit()
|
||||
@@ -343,7 +344,8 @@ let {{
|
||||
writeback = False
|
||||
def __init__(self, *args, **kargs):
|
||||
super(StoreImmDEx64, self).__init__(*args, **kargs)
|
||||
self.codeBlobs["postacc_code"] = "XResult = !writeResult;"
|
||||
self.codeBlobs["postacc_code"] = \
|
||||
"XResult = !writeResult; SevMailbox = 1; LLSCLock = 0;"
|
||||
|
||||
class StoreRegU64(StoreReg64):
|
||||
decConstBase = 'LoadStoreRegU64'
|
||||
|
||||
Reference in New Issue
Block a user