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

Function LDXP

arch/arm64/disassembler/decode2.c:17049–17090  ·  view source on GitHub ↗

ldxp.xml */

Source from the content-addressed store, hash-verified

17047
17048/* ldxp.xml */
17049int LDXP(context *ctx, Instruction *instr)
17050{
17051 int rc = DECODE_STATUS_UNMATCHED;
17052 /* class iclass_base_register */
17053 /* 1|sz=x|001000|o2=0|L=1|o1=1|Rs=(1)(1)(1)(1)(1)|o0=0|Rt2=xxxxx|Rn=xxxxx|Rt=xxxxx */
17054 if((INSWORD & 0xBFE08000)==0x88600000) {
17055 decode_fields32(ENC_LDXP_LP32_LDSTEXCLP, ctx, instr);
17056 ctx->n = UINT(ctx->Rn);
17057 ctx->t = UINT(ctx->Rt);
17058 ctx->t2 = UINT(ctx->Rt2);
17059 ctx->s = UINT(ctx->Rs);
17060 ctx->acctype = (ctx->o0==1) ? AccType_ORDEREDATOMIC : AccType_ATOMIC;
17061 ctx->pair = TRUE;
17062 ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE;
17063 ctx->elsize = (0x20) << (UINT(ctx->sz));
17064 ctx->regsize = (ctx->elsize==0x40) ? 0x40 : 0x20;
17065 ctx->datasize = (ctx->pair) ? (ctx->elsize) * (2) : ctx->elsize;
17066 ctx->tag_checked = ctx->n!=0x1f;
17067 ctx->rt_unknown = FALSE;
17068 ctx->rn_unknown = FALSE;
17069 if(ctx->memop==MemOp_LOAD && ctx->pair && ctx->t==ctx->t2) {
17070 ctx->c = ConstrainUnpredictable(Unpredictable_LDPOVERLAP);
17071 // assert
17072 // switch on constraint
17073 }
17074 if(ctx->memop==MemOp_STORE) {
17075 if(ctx->s==ctx->t || (ctx->pair && ctx->s==ctx->t2)) {
17076 ctx->c = ConstrainUnpredictable(Unpredictable_DATAOVERLAP);
17077 // assert
17078 // switch on constraint
17079 }
17080 if(ctx->s==ctx->n && ctx->n!=0x1f) {
17081 ctx->c = ConstrainUnpredictable(Unpredictable_BASEOVERLAP);
17082 // assert
17083 // switch on constraint
17084 }
17085 }
17086 if(ctx->sz==0) OK(ENC_LDXP_LP32_LDSTEXCLP);
17087 if(ctx->sz==1) OK(ENC_LDXP_LP64_LDSTEXCLP);
17088 }
17089 return rc;
17090}
17091
17092/* ldxr.xml */
17093int LDXR(context *ctx, Instruction *instr)

Callers 1

decode_iclass_ldstexclpFunction · 0.85

Calls 2

decode_fields32Function · 0.85
ConstrainUnpredictableFunction · 0.85

Tested by

no test coverage detected