swpb.xml */
| 27389 | |
| 27390 | /* swpb.xml */ |
| 27391 | int SWPB(context *ctx, Instruction *instr) |
| 27392 | { |
| 27393 | int rc = DECODE_STATUS_UNMATCHED; |
| 27394 | /* class iclass_general */ |
| 27395 | /* size=00|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=1|opc=000|00|Rn=xxxxx|Rt=xxxxx */ |
| 27396 | if((INSWORD & 0xFF20FC00)==0x38208000) { |
| 27397 | decode_fields32(ENC_SWPAB_32_MEMOP, ctx, instr); |
| 27398 | if(!HaveAtomicExt()) { |
| 27399 | UNDEFINED; |
| 27400 | } |
| 27401 | ctx->t = UINT(ctx->Rt); |
| 27402 | ctx->n = UINT(ctx->Rn); |
| 27403 | ctx->s = UINT(ctx->Rs); |
| 27404 | ctx->datasize = (8) << (UINT(ctx->size)); |
| 27405 | ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20; |
| 27406 | ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 27407 | ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 27408 | ctx->tag_checked = ctx->n!=0x1f; |
| 27409 | if(ctx->A==1 && ctx->R==0) OK(ENC_SWPAB_32_MEMOP); |
| 27410 | if(ctx->A==1 && ctx->R==1) OK(ENC_SWPALB_32_MEMOP); |
| 27411 | if(ctx->A==0 && ctx->R==0) OK(ENC_SWPB_32_MEMOP); |
| 27412 | if(ctx->A==0 && ctx->R==1) OK(ENC_SWPLB_32_MEMOP); |
| 27413 | } |
| 27414 | return rc; |
| 27415 | } |
| 27416 | |
| 27417 | /* swph.xml */ |
| 27418 | int SWPH(context *ctx, Instruction *instr) |
no test coverage detected