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

Function STXR

arch/arm64/disassembler/decode2.c:26737–26778  ·  view source on GitHub ↗

stxr.xml */

Source from the content-addressed store, hash-verified

26735
26736/* stxr.xml */
26737int STXR(context *ctx, Instruction *instr)
26738{
26739 int rc = DECODE_STATUS_UNMATCHED;
26740 /* class iclass_base_register */
26741 /* size=1x|001000|o2=0|L=0|o1=0|Rs=xxxxx|o0=0|Rt2=(1)(1)(1)(1)(1)|Rn=xxxxx|Rt=xxxxx */
26742 if((INSWORD & 0xBFE08000)==0x88000000) {
26743 decode_fields32(ENC_STXR_SR32_LDSTEXCLR, ctx, instr);
26744 ctx->n = UINT(ctx->Rn);
26745 ctx->t = UINT(ctx->Rt);
26746 ctx->t2 = UINT(ctx->Rt2);
26747 ctx->s = UINT(ctx->Rs);
26748 ctx->acctype = (ctx->o0==1) ? AccType_ORDEREDATOMIC : AccType_ATOMIC;
26749 ctx->pair = FALSE;
26750 ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE;
26751 ctx->elsize = (8) << (UINT(ctx->size));
26752 ctx->regsize = (ctx->elsize==0x40) ? 0x40 : 0x20;
26753 ctx->datasize = (ctx->pair) ? (ctx->elsize) * (2) : ctx->elsize;
26754 ctx->tag_checked = ctx->n!=0x1f;
26755 ctx->rt_unknown = FALSE;
26756 ctx->rn_unknown = FALSE;
26757 if(ctx->memop==MemOp_LOAD && ctx->pair && ctx->t==ctx->t2) {
26758 ctx->c = ConstrainUnpredictable(Unpredictable_LDPOVERLAP);
26759 // assert
26760 // switch on constraint
26761 }
26762 if(ctx->memop==MemOp_STORE) {
26763 if(ctx->s==ctx->t || (ctx->pair && ctx->s==ctx->t2)) {
26764 ctx->c = ConstrainUnpredictable(Unpredictable_DATAOVERLAP);
26765 // assert
26766 // switch on constraint
26767 }
26768 if(ctx->s==ctx->n && ctx->n!=0x1f) {
26769 ctx->c = ConstrainUnpredictable(Unpredictable_BASEOVERLAP);
26770 // assert
26771 // switch on constraint
26772 }
26773 }
26774 if(ctx->size==2) OK(ENC_STXR_SR32_LDSTEXCLR);
26775 if(ctx->size==3) OK(ENC_STXR_SR64_LDSTEXCLR);
26776 }
26777 return rc;
26778}
26779
26780/* stxrb.xml */
26781int STXRB(context *ctx, Instruction *instr)

Callers 1

decode_iclass_ldstexclrFunction · 0.85

Calls 2

decode_fields32Function · 0.85
ConstrainUnpredictableFunction · 0.85

Tested by

no test coverage detected