mem.isa (7279:157b02cc0ba1) mem.isa (7292:f4d99c45743e)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

--- 24 unchanged lines hidden (view full) ---

33// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Authors: Gabe Black
39
40let {{
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 ARM Limited
4// All rights reserved
5//
6// The license below extends only to copyright in the software and shall
7// not be construed as granting a license to any other intellectual
8// property including but not limited to intellectual property relating

--- 24 unchanged lines hidden (view full) ---

33// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Authors: Gabe Black
39
40let {{
41 def loadStoreBaseWork(name, Name, imm, swp, codeBlobs, memFlags,
41 def loadStoreBaseWork(name, Name, imm, swp, rfe, codeBlobs, memFlags,
42 instFlags, double, base = 'Memory',
43 execTemplateBase = ''):
44 # Make sure flags are in lists (convert to lists if not).
45 memFlags = makeList(memFlags)
46 instFlags = makeList(instFlags)
47
48 eaCode = codeBlobs["ea_code"]
49

--- 11 unchanged lines hidden (view full) ---

61
62 fullExecTemplate = eval(execTemplateBase + 'Execute')
63 initiateAccTemplate = eval(execTemplateBase + 'InitiateAcc')
64 completeAccTemplate = eval(execTemplateBase + 'CompleteAcc')
65
66 if swp:
67 declareTemplate = SwapDeclare
68 constructTemplate = SwapConstructor
42 instFlags, double, base = 'Memory',
43 execTemplateBase = ''):
44 # Make sure flags are in lists (convert to lists if not).
45 memFlags = makeList(memFlags)
46 instFlags = makeList(instFlags)
47
48 eaCode = codeBlobs["ea_code"]
49

--- 11 unchanged lines hidden (view full) ---

61
62 fullExecTemplate = eval(execTemplateBase + 'Execute')
63 initiateAccTemplate = eval(execTemplateBase + 'InitiateAcc')
64 completeAccTemplate = eval(execTemplateBase + 'CompleteAcc')
65
66 if swp:
67 declareTemplate = SwapDeclare
68 constructTemplate = SwapConstructor
69 elif rfe:
70 declareTemplate = RfeDeclare
71 constructTemplate = RfeConstructor
69 elif imm:
70 if double:
71 declareTemplate = LoadStoreDImmDeclare
72 constructTemplate = LoadStoreDImmConstructor
73 else:
74 declareTemplate = LoadStoreImmDeclare
75 constructTemplate = LoadStoreImmConstructor
76 else:

--- 12 unchanged lines hidden (view full) ---

89 + completeAccTemplate.subst(iop))
90
91 def loadStoreBase(name, Name, imm, eaCode, accCode, memFlags,
92 instFlags, double, base = 'Memory',
93 execTemplateBase = ''):
94 codeBlobs = { "ea_code": eaCode,
95 "memacc_code": accCode,
96 "predicate_test": predicateTest }
72 elif imm:
73 if double:
74 declareTemplate = LoadStoreDImmDeclare
75 constructTemplate = LoadStoreDImmConstructor
76 else:
77 declareTemplate = LoadStoreImmDeclare
78 constructTemplate = LoadStoreImmConstructor
79 else:

--- 12 unchanged lines hidden (view full) ---

92 + completeAccTemplate.subst(iop))
93
94 def loadStoreBase(name, Name, imm, eaCode, accCode, memFlags,
95 instFlags, double, base = 'Memory',
96 execTemplateBase = ''):
97 codeBlobs = { "ea_code": eaCode,
98 "memacc_code": accCode,
99 "predicate_test": predicateTest }
97 return loadStoreBaseWork(name, Name, imm, False, codeBlobs, memFlags,
98 instFlags, double, base, execTemplateBase)
100 return loadStoreBaseWork(name, Name, imm, False, False, codeBlobs,
101 memFlags, instFlags, double, base,
102 execTemplateBase)
99
103
104 def RfeBase(name, Name, eaCode, accCode, memFlags, instFlags):
105 codeBlobs = { "ea_code": eaCode,
106 "memacc_code": accCode,
107 "predicate_test": predicateTest }
108 return loadStoreBaseWork(name, Name, False, False, True, codeBlobs,
109 memFlags, instFlags, False, 'RfeOp', 'Load')
110
100 def SwapBase(name, Name, eaCode, preAccCode, postAccCode, memFlags,
101 instFlags):
102 codeBlobs = { "ea_code": eaCode,
103 "preacc_code": preAccCode,
104 "postacc_code": postAccCode,
105 "predicate_test": predicateTest }
111 def SwapBase(name, Name, eaCode, preAccCode, postAccCode, memFlags,
112 instFlags):
113 codeBlobs = { "ea_code": eaCode,
114 "preacc_code": preAccCode,
115 "postacc_code": postAccCode,
116 "predicate_test": predicateTest }
106 return loadStoreBaseWork(name, Name, False, True, codeBlobs, memFlags,
107 instFlags, False, 'Swap', 'Swap')
117 return loadStoreBaseWork(name, Name, False, True, False, codeBlobs,
118 memFlags, instFlags, False, 'Swap', 'Swap')
108
109 def memClassName(base, post, add, writeback, \
110 size=4, sign=False, user=False):
111 Name = base
112
113 if post:
114 Name += '_PY'
115 else:

--- 56 unchanged lines hidden ---
119
120 def memClassName(base, post, add, writeback, \
121 size=4, sign=False, user=False):
122 Name = base
123
124 if post:
125 Name += '_PY'
126 else:

--- 56 unchanged lines hidden ---