str.isa (7303:6b70985664c8) str.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

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

111 base = buildMemBase("MemoryImm", post, writeback)
112 postAccCode = ""
113 execTemplateBase = 'Store'
114
115 emitStore(name, Name, True, eaCode, accCode, postAccCode, \
116 memFlags, [], base, strex=strex,
117 execTemplateBase = execTemplateBase)
118
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

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

111 base = buildMemBase("MemoryImm", post, writeback)
112 postAccCode = ""
113 execTemplateBase = 'Store'
114
115 emitStore(name, Name, True, eaCode, accCode, postAccCode, \
116 memFlags, [], base, strex=strex,
117 execTemplateBase = execTemplateBase)
118
119 def buildSrsStore(mnem, post, add, writeback):
120 name = mnem
121 Name = "SRS_" + storeImmClassName(post, add, writeback, 8)
122
123 offset = 0
124 if post != add:
125 offset += 4
126 if not add:
127 offset -= 8
128
129 eaCode = "EA = SpMode + %d;" % offset
130
131 wbDiff = -8
132 if add:
133 wbDiff = 8
134 accCode = '''
135 CPSR cpsr = Cpsr;
136 Mem.ud = (uint64_t)cSwap(LR.uw, cpsr.e) |
137 ((uint64_t)cSwap(Spsr.uw, cpsr.e) << 32);
138 '''
139 if writeback:
140 accCode += "SpMode = SpMode + %s;\n" % wbDiff
141
142 global header_output, decoder_output, exec_output
143
144 (newHeader,
145 newDecoder,
146 newExec) = SrsBase(name, Name, eaCode, accCode,
147 ["ArmISA::TLB::AlignWord", "ArmISA::TLB::MustBeOne"], [])
148
149 header_output += newHeader
150 decoder_output += newDecoder
151 exec_output += newExec
152
119 def buildRegStore(mnem, post, add, writeback, \
120 size=4, sign=False, user=False, strex=False):
121 name = mnem
122 Name = storeRegClassName(post, add, writeback,
123 size, sign, user)
124
125 if add:
126 op = " +"

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

236 buildDoubleRegStore(mnem, False, True, True)
237 buildDoubleImmStore(mnem, False, False, True)
238 buildDoubleRegStore(mnem, False, False, True)
239 buildDoubleImmStore(mnem, False, True, False)
240 buildDoubleRegStore(mnem, False, True, False)
241 buildDoubleImmStore(mnem, False, False, False)
242 buildDoubleRegStore(mnem, False, False, False)
243
153 def buildRegStore(mnem, post, add, writeback, \
154 size=4, sign=False, user=False, strex=False):
155 name = mnem
156 Name = storeRegClassName(post, add, writeback,
157 size, sign, user)
158
159 if add:
160 op = " +"

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

270 buildDoubleRegStore(mnem, False, True, True)
271 buildDoubleImmStore(mnem, False, False, True)
272 buildDoubleRegStore(mnem, False, False, True)
273 buildDoubleImmStore(mnem, False, True, False)
274 buildDoubleRegStore(mnem, False, True, False)
275 buildDoubleImmStore(mnem, False, False, False)
276 buildDoubleRegStore(mnem, False, False, False)
277
278 def buildSrsStores(mnem):
279 buildSrsStore(mnem, True, True, True)
280 buildSrsStore(mnem, True, True, False)
281 buildSrsStore(mnem, True, False, True)
282 buildSrsStore(mnem, True, False, False)
283 buildSrsStore(mnem, False, True, True)
284 buildSrsStore(mnem, False, True, False)
285 buildSrsStore(mnem, False, False, True)
286 buildSrsStore(mnem, False, False, False)
287
244 buildStores("str")
245 buildStores("strt", user=True)
246 buildStores("strb", size=1)
247 buildStores("strbt", size=1, user=True)
248 buildStores("strh", size=2)
249 buildStores("strht", size=2, user=True)
250
288 buildStores("str")
289 buildStores("strt", user=True)
290 buildStores("strb", size=1)
291 buildStores("strbt", size=1, user=True)
292 buildStores("strh", size=2)
293 buildStores("strht", size=2, user=True)
294
295 buildSrsStores("srs")
296
251 buildDoubleStores("strd")
252
253 buildImmStore("strex", False, True, False, size=4, strex=True)
254 buildImmStore("strexh", False, True, False, size=2, strex=True)
255 buildImmStore("strexb", False, True, False, size=1, strex=True)
256 buildDoubleImmStore("strexd", False, True, False, strex=True)
257}};
297 buildDoubleStores("strd")
298
299 buildImmStore("strex", False, True, False, size=4, strex=True)
300 buildImmStore("strexh", False, True, False, size=2, strex=True)
301 buildImmStore("strexb", False, True, False, size=1, strex=True)
302 buildDoubleImmStore("strexd", False, True, False, strex=True)
303}};