ldapursw.xml */
| 13274 | |
| 13275 | /* ldapursw.xml */ |
| 13276 | int LDAPURSW(context *ctx, Instruction *instr) |
| 13277 | { |
| 13278 | int rc = DECODE_STATUS_UNMATCHED; |
| 13279 | /* class iclass_base_plus_offset */ |
| 13280 | /* size=10|011001|opc=10|0|imm9=xxxxxxxxx|00|Rn=xxxxx|Rt=xxxxx */ |
| 13281 | if((INSWORD & 0xFFE00C00)==0x99800000) { |
| 13282 | decode_fields32(ENC_LDAPURSW_64_LDAPSTL_UNSCALED, ctx, instr); |
| 13283 | ctx->wback = FALSE; |
| 13284 | ctx->postindex = FALSE; |
| 13285 | ctx->scale = UINT(ctx->size); |
| 13286 | ctx->offset = SignExtend(ctx->imm9,9); |
| 13287 | OK(ENC_LDAPURSW_64_LDAPSTL_UNSCALED); |
| 13288 | } |
| 13289 | /* post-decode pcode */ |
| 13290 | ctx->n = UINT(ctx->Rn); |
| 13291 | ctx->t = UINT(ctx->Rt); |
| 13292 | ctx->acctype = AccType_ORDERED; |
| 13293 | if(SLICE(ctx->opc,1,1)==0) { |
| 13294 | if(SLICE(ctx->opc,0,0)==1) { |
| 13295 | ctx->memop = MemOp_LOAD; |
| 13296 | }; |
| 13297 | if(ctx->size==3) { |
| 13298 | ctx->regsize = 0x40; |
| 13299 | }; |
| 13300 | ctx->signed_ = FALSE; |
| 13301 | } |
| 13302 | else { |
| 13303 | if(ctx->size==3) { |
| 13304 | ctx->memop = MemOp_PREFETCH; |
| 13305 | if(SLICE(ctx->opc,0,0)==1) { |
| 13306 | UNDEFINED; |
| 13307 | } |
| 13308 | } |
| 13309 | else { |
| 13310 | ctx->memop = MemOp_LOAD; |
| 13311 | if(ctx->size==2 && SLICE(ctx->opc,0,0)==1) { |
| 13312 | UNDEFINED; |
| 13313 | } |
| 13314 | if(SLICE(ctx->opc,0,0)==1) { |
| 13315 | ctx->regsize = 0x20; |
| 13316 | }; |
| 13317 | ctx->signed_ = TRUE; |
| 13318 | } |
| 13319 | } |
| 13320 | ctx->datasize = (8) << (ctx->scale); |
| 13321 | ctx->tag_checked = ctx->memop!=MemOp_PREFETCH && (ctx->wback || ctx->n!=0x1f); |
| 13322 | ctx->wb_unknown = FALSE; |
| 13323 | ctx->rt_unknown = FALSE; |
| 13324 | if(ctx->memop==MemOp_LOAD && ctx->wback && ctx->n==ctx->t && ctx->n!=0x1f) { |
| 13325 | // assignment from ConstrainUnpredictable() |
| 13326 | // assert |
| 13327 | // switch on constraint |
| 13328 | } |
| 13329 | if(ctx->memop==MemOp_STORE && ctx->wback && ctx->n==ctx->t && ctx->n!=0x1f) { |
| 13330 | // assignment from ConstrainUnpredictable() |
| 13331 | // assert |
| 13332 | // switch on constraint |
| 13333 | } |
no test coverage detected