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

Function LDAXP

arch/arm64/disassembler/decode2.c:13471–13512  ·  view source on GitHub ↗

ldaxp.xml */

Source from the content-addressed store, hash-verified

13469
13470/* ldaxp.xml */
13471int LDAXP(context *ctx, Instruction *instr)
13472{
13473 int rc = DECODE_STATUS_UNMATCHED;
13474 /* class iclass_base_register */
13475 /* 1|sz=x|001000|o2=0|L=1|o1=1|Rs=(1)(1)(1)(1)(1)|o0=1|Rt2=xxxxx|Rn=xxxxx|Rt=xxxxx */
13476 if((INSWORD & 0xBFE08000)==0x88608000) {
13477 decode_fields32(ENC_LDAXP_LP32_LDSTEXCLP, ctx, instr);
13478 ctx->n = UINT(ctx->Rn);
13479 ctx->t = UINT(ctx->Rt);
13480 ctx->t2 = UINT(ctx->Rt2);
13481 ctx->s = UINT(ctx->Rs);
13482 ctx->acctype = (ctx->o0==1) ? AccType_ORDEREDATOMIC : AccType_ATOMIC;
13483 ctx->pair = TRUE;
13484 ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE;
13485 ctx->elsize = (0x20) << (UINT(ctx->sz));
13486 ctx->regsize = (ctx->elsize==0x40) ? 0x40 : 0x20;
13487 ctx->datasize = (ctx->pair) ? (ctx->elsize) * (2) : ctx->elsize;
13488 ctx->tag_checked = ctx->n!=0x1f;
13489 ctx->rt_unknown = FALSE;
13490 ctx->rn_unknown = FALSE;
13491 if(ctx->memop==MemOp_LOAD && ctx->pair && ctx->t==ctx->t2) {
13492 ctx->c = ConstrainUnpredictable(Unpredictable_LDPOVERLAP);
13493 // assert
13494 // switch on constraint
13495 }
13496 if(ctx->memop==MemOp_STORE) {
13497 if(ctx->s==ctx->t || (ctx->pair && ctx->s==ctx->t2)) {
13498 ctx->c = ConstrainUnpredictable(Unpredictable_DATAOVERLAP);
13499 // assert
13500 // switch on constraint
13501 }
13502 if(ctx->s==ctx->n && ctx->n!=0x1f) {
13503 ctx->c = ConstrainUnpredictable(Unpredictable_BASEOVERLAP);
13504 // assert
13505 // switch on constraint
13506 }
13507 }
13508 if(ctx->sz==0) OK(ENC_LDAXP_LP32_LDSTEXCLP);
13509 if(ctx->sz==1) OK(ENC_LDAXP_LP64_LDSTEXCLP);
13510 }
13511 return rc;
13512}
13513
13514/* ldaxr.xml */
13515int LDAXR(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