mem64.isa (10184:bbfa3152bdea) mem64.isa (10196:be0e1724eb39)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2011-2013 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

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

42 if (baseIsSP && bits(XBase, 3, 0) &&
43 SPAlignmentCheckEnabled(xc->tcBase())) {
44 return new SPAlignmentFault();
45 }
46 '''
47}};
48
49def template Load64Execute {{
1// -*- mode:c++ -*-
2
3// Copyright (c) 2011-2013 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

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

42 if (baseIsSP && bits(XBase, 3, 0) &&
43 SPAlignmentCheckEnabled(xc->tcBase())) {
44 return new SPAlignmentFault();
45 }
46 '''
47}};
48
49def template Load64Execute {{
50 Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
50 Fault %(class_name)s::execute(CPU_EXEC_CONTEXT *xc,
51 Trace::InstRecord *traceData) const
52 {
53 Addr EA;
54 Fault fault = NoFault;
55
56 %(op_decl)s;
57 %(op_rd)s;
58 %(ea_code)s;

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

66 %(op_wb)s;
67 }
68
69 return fault;
70 }
71}};
72
73def template Store64Execute {{
51 Trace::InstRecord *traceData) const
52 {
53 Addr EA;
54 Fault fault = NoFault;
55
56 %(op_decl)s;
57 %(op_rd)s;
58 %(ea_code)s;

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

66 %(op_wb)s;
67 }
68
69 return fault;
70 }
71}};
72
73def template Store64Execute {{
74 Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
74 Fault %(class_name)s::execute(CPU_EXEC_CONTEXT *xc,
75 Trace::InstRecord *traceData) const
76 {
77 Addr EA;
78 Fault fault = NoFault;
79
80 %(op_decl)s;
81 %(op_rd)s;
82 %(ea_code)s;

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

94 %(op_wb)s;
95 }
96
97 return fault;
98 }
99}};
100
101def template Store64InitiateAcc {{
75 Trace::InstRecord *traceData) const
76 {
77 Addr EA;
78 Fault fault = NoFault;
79
80 %(op_decl)s;
81 %(op_rd)s;
82 %(ea_code)s;

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

94 %(op_wb)s;
95 }
96
97 return fault;
98 }
99}};
100
101def template Store64InitiateAcc {{
102 Fault %(class_name)s::initiateAcc(%(CPU_exec_context)s *xc,
102 Fault %(class_name)s::initiateAcc(CPU_EXEC_CONTEXT *xc,
103 Trace::InstRecord *traceData) const
104 {
105 Addr EA;
106 Fault fault = NoFault;
107
108 %(op_decl)s;
109 %(op_rd)s;
110 %(ea_code)s;

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

118 NULL);
119 }
120
121 return fault;
122 }
123}};
124
125def template StoreEx64Execute {{
103 Trace::InstRecord *traceData) const
104 {
105 Addr EA;
106 Fault fault = NoFault;
107
108 %(op_decl)s;
109 %(op_rd)s;
110 %(ea_code)s;

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

118 NULL);
119 }
120
121 return fault;
122 }
123}};
124
125def template StoreEx64Execute {{
126 Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
126 Fault %(class_name)s::execute(CPU_EXEC_CONTEXT *xc,
127 Trace::InstRecord *traceData) const
128 {
129 Addr EA;
130 Fault fault = NoFault;
131
132 %(op_decl)s;
133 %(op_rd)s;
134 %(ea_code)s;

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

151 %(op_wb)s;
152 }
153
154 return fault;
155 }
156}};
157
158def template StoreEx64InitiateAcc {{
127 Trace::InstRecord *traceData) const
128 {
129 Addr EA;
130 Fault fault = NoFault;
131
132 %(op_decl)s;
133 %(op_rd)s;
134 %(ea_code)s;

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

151 %(op_wb)s;
152 }
153
154 return fault;
155 }
156}};
157
158def template StoreEx64InitiateAcc {{
159 Fault %(class_name)s::initiateAcc(%(CPU_exec_context)s *xc,
159 Fault %(class_name)s::initiateAcc(CPU_EXEC_CONTEXT *xc,
160 Trace::InstRecord *traceData) const
161 {
162 Addr EA;
163 Fault fault = NoFault;
164
165 %(op_decl)s;
166 %(op_rd)s;
167 %(ea_code)s;

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

175 NULL);
176 }
177
178 return fault;
179 }
180}};
181
182def template Load64InitiateAcc {{
160 Trace::InstRecord *traceData) const
161 {
162 Addr EA;
163 Fault fault = NoFault;
164
165 %(op_decl)s;
166 %(op_rd)s;
167 %(ea_code)s;

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

175 NULL);
176 }
177
178 return fault;
179 }
180}};
181
182def template Load64InitiateAcc {{
183 Fault %(class_name)s::initiateAcc(%(CPU_exec_context)s *xc,
183 Fault %(class_name)s::initiateAcc(CPU_EXEC_CONTEXT *xc,
184 Trace::InstRecord *traceData) const
185 {
186 Addr EA;
187 Fault fault = NoFault;
188
189 %(op_src_decl)s;
190 %(op_rd)s;
191 %(ea_code)s;
192
193 if (fault == NoFault) {
194 fault = readMemTiming(xc, traceData, EA, Mem, memAccessFlags);
195 }
196
197 return fault;
198 }
199}};
200
201def template Load64CompleteAcc {{
202 Fault %(class_name)s::completeAcc(PacketPtr pkt,
184 Trace::InstRecord *traceData) const
185 {
186 Addr EA;
187 Fault fault = NoFault;
188
189 %(op_src_decl)s;
190 %(op_rd)s;
191 %(ea_code)s;
192
193 if (fault == NoFault) {
194 fault = readMemTiming(xc, traceData, EA, Mem, memAccessFlags);
195 }
196
197 return fault;
198 }
199}};
200
201def template Load64CompleteAcc {{
202 Fault %(class_name)s::completeAcc(PacketPtr pkt,
203 %(CPU_exec_context)s *xc,
203 CPU_EXEC_CONTEXT *xc,
204 Trace::InstRecord *traceData) const
205 {
206 Fault fault = NoFault;
207
208 %(op_decl)s;
209 %(op_rd)s;
210
211 // ARM instructions will not have a pkt if the predicate is false

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

220 }
221
222 return fault;
223 }
224}};
225
226def template Store64CompleteAcc {{
227 Fault %(class_name)s::completeAcc(PacketPtr pkt,
204 Trace::InstRecord *traceData) const
205 {
206 Fault fault = NoFault;
207
208 %(op_decl)s;
209 %(op_rd)s;
210
211 // ARM instructions will not have a pkt if the predicate is false

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

220 }
221
222 return fault;
223 }
224}};
225
226def template Store64CompleteAcc {{
227 Fault %(class_name)s::completeAcc(PacketPtr pkt,
228 %(CPU_exec_context)s *xc,
228 CPU_EXEC_CONTEXT *xc,
229 Trace::InstRecord *traceData) const
230 {
231 return NoFault;
232 }
233}};
234
235def template StoreEx64CompleteAcc {{
236 Fault %(class_name)s::completeAcc(PacketPtr pkt,
229 Trace::InstRecord *traceData) const
230 {
231 return NoFault;
232 }
233}};
234
235def template StoreEx64CompleteAcc {{
236 Fault %(class_name)s::completeAcc(PacketPtr pkt,
237 %(CPU_exec_context)s *xc,
237 CPU_EXEC_CONTEXT *xc,
238 Trace::InstRecord *traceData) const
239 {
240 Fault fault = NoFault;
241
242 %(op_decl)s;
243 %(op_rd)s;
244
245 uint64_t writeResult = pkt->req->getExtraData();

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

278 (IntRegIndex)_base, _dest, _imm)
279 {
280 %(constructor)s;
281 assert(!%(use_uops)d);
282 }
283}};
284
285def template DCStore64Execute {{
238 Trace::InstRecord *traceData) const
239 {
240 Fault fault = NoFault;
241
242 %(op_decl)s;
243 %(op_rd)s;
244
245 uint64_t writeResult = pkt->req->getExtraData();

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

278 (IntRegIndex)_base, _dest, _imm)
279 {
280 %(constructor)s;
281 assert(!%(use_uops)d);
282 }
283}};
284
285def template DCStore64Execute {{
286 Fault %(class_name)s::execute(%(CPU_exec_context)s *xc,
286 Fault %(class_name)s::execute(CPU_EXEC_CONTEXT *xc,
287 Trace::InstRecord *traceData) const
288 {
289 Addr EA;
290 Fault fault = NoFault;
291
292 %(op_decl)s;
293 %(op_rd)s;
294 %(ea_code)s;

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

306 %(op_wb)s;
307 }
308
309 return fault;
310 }
311}};
312
313def template DCStore64InitiateAcc {{
287 Trace::InstRecord *traceData) const
288 {
289 Addr EA;
290 Fault fault = NoFault;
291
292 %(op_decl)s;
293 %(op_rd)s;
294 %(ea_code)s;

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

306 %(op_wb)s;
307 }
308
309 return fault;
310 }
311}};
312
313def template DCStore64InitiateAcc {{
314 Fault %(class_name)s::initiateAcc(%(CPU_exec_context)s *xc,
314 Fault %(class_name)s::initiateAcc(CPU_EXEC_CONTEXT *xc,
315 Trace::InstRecord *traceData) const
316 {
317 Addr EA;
318 Fault fault = NoFault;
319
320 %(op_decl)s;
321 %(op_rd)s;
322 %(ea_code)s;

--- 364 unchanged lines hidden ---
315 Trace::InstRecord *traceData) const
316 {
317 Addr EA;
318 Fault fault = NoFault;
319
320 %(op_decl)s;
321 %(op_rd)s;
322 %(ea_code)s;

--- 364 unchanged lines hidden ---