mem.isa (7206:00494ff7ca71) mem.isa (7245:bee7e6b76d38)
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

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

230 return new WarnUnimplemented("ldrex", machInst);
231 default:
232 return new Unknown(machInst);
233 }
234 }
235 '''
236}};
237
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

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

230 return new WarnUnimplemented("ldrex", machInst);
231 default:
232 return new Unknown(machInst);
233 }
234 }
235 '''
236}};
237
238def format Thumb32LdrStrDExTbh() {{
239 decode_block = '''
240 {
241 const uint32_t op1 = bits(machInst, 24, 23);
242 const uint32_t op2 = bits(machInst, 21, 20);
243 const uint32_t op3 = bits(machInst, 7, 4);
244 const IntRegIndex rn = (IntRegIndex)(uint32_t)bits(machInst, 19, 16);
245 if (bits(op1, 1) == 0 && bits(op2, 1) == 0) {
246 if (op1 == 0) {
247 if (op2 == 0) {
248 return new WarnUnimplemented("strex", machInst);
249 } else {
250 return new WarnUnimplemented("ldrex", machInst);
251 }
252 } else {
253 if (op2 == 0) {
254 switch (op3) {
255 case 0x4:
256 return new WarnUnimplemented("strexb", machInst);
257 case 0x5:
258 return new WarnUnimplemented("strexh", machInst);
259 case 0x7:
260 return new WarnUnimplemented("strexd", machInst);
261 default:
262 return new Unknown(machInst);
263 }
264 } else {
265 switch (op3) {
266 case 0x0:
267 return new WarnUnimplemented("tbb", machInst);
268 case 0x1:
269 return new WarnUnimplemented("tbh", machInst);
270 case 0x4:
271 return new WarnUnimplemented("ldrexb", machInst);
272 case 0x5:
273 return new WarnUnimplemented("ldrexh", machInst);
274 case 0x7:
275 return new WarnUnimplemented("ldrexd", machInst);
276 default:
277 return new Unknown(machInst);
278 }
279 }
280 }
281 } else {
282 if (bits(op2, 0) == 0) {
283 return new WarnUnimplemented("strd", machInst);
284 } else {
285 return new WarnUnimplemented("ldrd", machInst);
286 }
287 }
288 }
289 '''
290}};
291
238def format Thumb32LoadWord() {{
239 decode = '''
240 {
241 uint32_t op1 = bits(machInst, 24, 23);
242 if (bits(op1, 1) == 0) {
243 uint32_t op2 = bits(machInst, 11, 6);
244 if (HTRN == 0xF) {
245 if (UP) {

--- 249 unchanged lines hidden ---
292def format Thumb32LoadWord() {{
293 decode = '''
294 {
295 uint32_t op1 = bits(machInst, 24, 23);
296 if (bits(op1, 1) == 0) {
297 uint32_t op2 = bits(machInst, 11, 6);
298 if (HTRN == 0xF) {
299 if (UP) {

--- 249 unchanged lines hidden ---