MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / SWPH

Function SWPH

arch/arm64/disassembler/decode2.c:27418–27442  ·  view source on GitHub ↗

swph.xml */

Source from the content-addressed store, hash-verified

27416
27417/* swph.xml */
27418int SWPH(context *ctx, Instruction *instr)
27419{
27420 int rc = DECODE_STATUS_UNMATCHED;
27421 /* class iclass_general */
27422 /* size=01|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=1|opc=000|00|Rn=xxxxx|Rt=xxxxx */
27423 if((INSWORD & 0xFF20FC00)==0x78208000) {
27424 decode_fields32(ENC_SWPAH_32_MEMOP, ctx, instr);
27425 if(!HaveAtomicExt()) {
27426 UNDEFINED;
27427 }
27428 ctx->t = UINT(ctx->Rt);
27429 ctx->n = UINT(ctx->Rn);
27430 ctx->s = UINT(ctx->Rs);
27431 ctx->datasize = (8) << (UINT(ctx->size));
27432 ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20;
27433 ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
27434 ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
27435 ctx->tag_checked = ctx->n!=0x1f;
27436 if(ctx->A==1 && ctx->R==0) OK(ENC_SWPAH_32_MEMOP);
27437 if(ctx->A==1 && ctx->R==1) OK(ENC_SWPALH_32_MEMOP);
27438 if(ctx->A==0 && ctx->R==0) OK(ENC_SWPH_32_MEMOP);
27439 if(ctx->A==0 && ctx->R==1) OK(ENC_SWPLH_32_MEMOP);
27440 }
27441 return rc;
27442}
27443
27444/* sxtb_sbfm.xml */
27445int SXTB_SBFM(context *ctx, Instruction *instr)

Callers 1

decode_iclass_memopFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected