mem.isa (7309:35b6ca04e5b9) | mem.isa (7314:f254f66afb11) |
---|---|
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 --- 249 unchanged lines hidden (view full) --- 258 "strexh" : "STREXH_" + storeImmClassName(False, True, False, size=2), 259 "strexd" : "STREXD_" + storeDoubleImmClassName(False, True, False) 260 } 261}}; 262 263def format Thumb32SrsRfe() {{ 264 decode_block = ''' 265 { | 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 --- 249 unchanged lines hidden (view full) --- 258 "strexh" : "STREXH_" + storeImmClassName(False, True, False, size=2), 259 "strexd" : "STREXD_" + storeDoubleImmClassName(False, True, False) 260 } 261}}; 262 263def format Thumb32SrsRfe() {{ 264 decode_block = ''' 265 { |
266 const bool wb = (bits(machInst, 21) == 1); 267 const bool add = (bits(machInst, 24, 23) == 0x3); |
|
266 if (bits(machInst, 20) == 1) { | 268 if (bits(machInst, 20) == 1) { |
267 const bool add = (bits(machInst, 24, 23) == 0x3); | |
268 // post == add | 269 // post == add |
269 const bool wb = (bits(machInst, 21) == 1); | |
270 const IntRegIndex rn = 271 (IntRegIndex)(uint32_t)bits(machInst, 19, 16); 272 if (!add && !wb) { 273 return new %(rfe)s(machInst, rn, RfeOp::DecrementBefore, wb); 274 } else if (add && !wb) { 275 return new %(rfe_u)s(machInst, rn, RfeOp::IncrementAfter, wb); 276 } else if (!add && wb) { 277 return new %(rfe_w)s(machInst, rn, RfeOp::DecrementBefore, wb); 278 } else { 279 return new %(rfe_uw)s(machInst, rn, RfeOp::IncrementAfter, wb); 280 } 281 } else { | 270 const IntRegIndex rn = 271 (IntRegIndex)(uint32_t)bits(machInst, 19, 16); 272 if (!add && !wb) { 273 return new %(rfe)s(machInst, rn, RfeOp::DecrementBefore, wb); 274 } else if (add && !wb) { 275 return new %(rfe_u)s(machInst, rn, RfeOp::IncrementAfter, wb); 276 } else if (!add && wb) { 277 return new %(rfe_w)s(machInst, rn, RfeOp::DecrementBefore, wb); 278 } else { 279 return new %(rfe_uw)s(machInst, rn, RfeOp::IncrementAfter, wb); 280 } 281 } else { |
282 return new WarnUnimplemented("srs", machInst); | 282 const uint32_t mode = bits(machInst, 4, 0); 283 if (!add && !wb) { 284 return new %(srs)s(machInst, mode, 285 SrsOp::DecrementBefore, wb); 286 } else if (add && !wb) { 287 return new %(srs_u)s(machInst, mode, 288 SrsOp::IncrementAfter, wb); 289 } else if (!add && wb) { 290 return new %(srs_w)s(machInst, mode, 291 SrsOp::DecrementBefore, wb); 292 } else { 293 return new %(srs_uw)s(machInst, mode, 294 SrsOp::IncrementAfter, wb); 295 } |
283 } 284 } 285 ''' % { 286 "rfe" : "RFE_" + loadImmClassName(False, False, False, 8), 287 "rfe_u" : "RFE_" + loadImmClassName(True, True, False, 8), 288 "rfe_w" : "RFE_" + loadImmClassName(False, False, True, 8), | 296 } 297 } 298 ''' % { 299 "rfe" : "RFE_" + loadImmClassName(False, False, False, 8), 300 "rfe_u" : "RFE_" + loadImmClassName(True, True, False, 8), 301 "rfe_w" : "RFE_" + loadImmClassName(False, False, True, 8), |
289 "rfe_uw" : "RFE_" + loadImmClassName(True, True, True, 8) | 302 "rfe_uw" : "RFE_" + loadImmClassName(True, True, True, 8), 303 "srs" : "SRS_" + storeImmClassName(False, False, False, 8), 304 "srs_u" : "SRS_" + storeImmClassName(True, True, False, 8), 305 "srs_w" : "SRS_" + storeImmClassName(False, False, True, 8), 306 "srs_uw" : "SRS_" + storeImmClassName(True, True, True, 8) |
290 } 291}}; 292 293def format Thumb32LdrStrDExTbh() {{ 294 decode_block = ''' 295 { 296 const uint32_t op1 = bits(machInst, 24, 23); 297 const uint32_t op2 = bits(machInst, 21, 20); --- 740 unchanged lines hidden --- | 307 } 308}}; 309 310def format Thumb32LdrStrDExTbh() {{ 311 decode_block = ''' 312 { 313 const uint32_t op1 = bits(machInst, 24, 23); 314 const uint32_t op2 = bits(machInst, 21, 20); --- 740 unchanged lines hidden --- |