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 |
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 --- |