mem.isa (7303:6b70985664c8) mem.isa (7313:b0262368daa0)
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, rfe, codeBlobs, memFlags,
42 instFlags, double, strex, base = 'Memory',
43 execTemplateBase = ''):
41 def loadStoreBaseWork(name, Name, imm, swp, rfe, srs, codeBlobs,
42 memFlags, instFlags, double, strex,
43 base = 'Memory', 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
50 # This shouldn't be part of the eaCode, but until the exec templates
51 # are converted over it's the easiest place to put it.

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

61 completeAccTemplate = eval(execTemplateBase + 'CompleteAcc')
62
63 if swp:
64 declareTemplate = SwapDeclare
65 constructTemplate = SwapConstructor
66 elif rfe:
67 declareTemplate = RfeDeclare
68 constructTemplate = RfeConstructor
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
50 # This shouldn't be part of the eaCode, but until the exec templates
51 # are converted over it's the easiest place to put it.

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

61 completeAccTemplate = eval(execTemplateBase + 'CompleteAcc')
62
63 if swp:
64 declareTemplate = SwapDeclare
65 constructTemplate = SwapConstructor
66 elif rfe:
67 declareTemplate = RfeDeclare
68 constructTemplate = RfeConstructor
69 elif srs:
70 declareTemplate = SrsDeclare
71 constructTemplate = SrsConstructor
69 elif imm:
70 if double:
71 declareTemplate = LoadStoreDImmDeclare
72 constructTemplate = LoadStoreDImmConstructor
73 if strex:
74 declareTemplate = StoreExDImmDeclare
75 constructTemplate = StoreExDImmConstructor
76 elif strex:

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

96
97 def loadStoreBase(name, Name, imm, eaCode, accCode, postAccCode,
98 memFlags, instFlags, double, strex, base = 'Memory',
99 execTemplateBase = ''):
100 codeBlobs = { "ea_code": eaCode,
101 "memacc_code": accCode,
102 "postacc_code": postAccCode,
103 "predicate_test": predicateTest }
72 elif imm:
73 if double:
74 declareTemplate = LoadStoreDImmDeclare
75 constructTemplate = LoadStoreDImmConstructor
76 if strex:
77 declareTemplate = StoreExDImmDeclare
78 constructTemplate = StoreExDImmConstructor
79 elif strex:

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

99
100 def loadStoreBase(name, Name, imm, eaCode, accCode, postAccCode,
101 memFlags, instFlags, double, strex, base = 'Memory',
102 execTemplateBase = ''):
103 codeBlobs = { "ea_code": eaCode,
104 "memacc_code": accCode,
105 "postacc_code": postAccCode,
106 "predicate_test": predicateTest }
104 return loadStoreBaseWork(name, Name, imm, False, False, codeBlobs,
105 memFlags, instFlags, double, strex, base,
106 execTemplateBase)
107 return loadStoreBaseWork(name, Name, imm, False, False, False,
108 codeBlobs, memFlags, instFlags, double,
109 strex, base, execTemplateBase)
107
108 def RfeBase(name, Name, eaCode, accCode, memFlags, instFlags):
109 codeBlobs = { "ea_code": eaCode,
110 "memacc_code": accCode,
111 "predicate_test": predicateTest }
110
111 def RfeBase(name, Name, eaCode, accCode, memFlags, instFlags):
112 codeBlobs = { "ea_code": eaCode,
113 "memacc_code": accCode,
114 "predicate_test": predicateTest }
112 return loadStoreBaseWork(name, Name, False, False, True, codeBlobs,
113 memFlags, instFlags, False, False,
115 return loadStoreBaseWork(name, Name, False, False, True, False,
116 codeBlobs, memFlags, instFlags, False, False,
114 'RfeOp', 'Load')
115
117 'RfeOp', 'Load')
118
119 def SrsBase(name, Name, eaCode, accCode, memFlags, instFlags):
120 codeBlobs = { "ea_code": eaCode,
121 "memacc_code": accCode,
122 "postacc_code": "",
123 "predicate_test": predicateTest }
124 return loadStoreBaseWork(name, Name, False, False, False, True,
125 codeBlobs, memFlags, instFlags, False, False,
126 'SrsOp', 'Store')
127
116 def SwapBase(name, Name, eaCode, preAccCode, postAccCode, memFlags,
117 instFlags):
118 codeBlobs = { "ea_code": eaCode,
119 "preacc_code": preAccCode,
120 "postacc_code": postAccCode,
121 "predicate_test": predicateTest }
128 def SwapBase(name, Name, eaCode, preAccCode, postAccCode, memFlags,
129 instFlags):
130 codeBlobs = { "ea_code": eaCode,
131 "preacc_code": preAccCode,
132 "postacc_code": postAccCode,
133 "predicate_test": predicateTest }
122 return loadStoreBaseWork(name, Name, False, True, False, codeBlobs,
123 memFlags, instFlags, False, False,
134 return loadStoreBaseWork(name, Name, False, True, False, False,
135 codeBlobs, memFlags, instFlags, False, False,
124 'Swap', 'Swap')
125
126 def memClassName(base, post, add, writeback, \
127 size=4, sign=False, user=False):
128 Name = base
129
130 if post:
131 Name += '_PY'

--- 57 unchanged lines hidden ---
136 'Swap', 'Swap')
137
138 def memClassName(base, post, add, writeback, \
139 size=4, sign=False, user=False):
140 Name = base
141
142 if post:
143 Name += '_PY'

--- 57 unchanged lines hidden ---