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

Function DSB

arch/arm64/disassembler/decode2.c:3473–3548  ·  view source on GitHub ↗

dsb.xml */

Source from the content-addressed store, hash-verified

3471
3472/* dsb.xml */
3473int DSB(context *ctx, Instruction *instr)
3474{
3475 int rc = DECODE_STATUS_UNMATCHED;
3476 /* class iclass_dsb_memory */
3477 /* 1101010100|L=0|op0=00|op1=011|CRn=0011|CRm=xxxx|op2[2]=1|opc=00|Rt=11111 */
3478 if((INSWORD & 0xFFFFF0FF)==0xD503309F) {
3479 decode_fields32(ENC_DSB_BO_BARRIERS, ctx, instr);
3480 ctx->nXS = FALSE;
3481 if(!ctx->CRm) {
3482 ctx->alias = DSBAlias_SSBB;
3483 }
3484 else if(ctx->CRm==4) {
3485 ctx->alias = DSBAlias_PSSBB;
3486 }
3487 else {
3488 ctx->alias = DSBAlias_DSB;
3489 }
3490 if(!SLICE(ctx->CRm,3,2)) {
3491 ctx->domain = MBReqDomain_OuterShareable;
3492 }
3493 else if(SLICE(ctx->CRm,3,2)==1) {
3494 ctx->domain = MBReqDomain_Nonshareable;
3495 }
3496 else if(SLICE(ctx->CRm,3,2)==2) {
3497 ctx->domain = MBReqDomain_InnerShareable;
3498 }
3499 else if(SLICE(ctx->CRm,3,2)==3) {
3500 ctx->domain = MBReqDomain_FullSystem;
3501 }
3502 if(!SLICE(ctx->CRm,1,0)) {
3503 ctx->types = MBReqTypes_All;
3504 ctx->domain = MBReqDomain_FullSystem;
3505 }
3506 else if(SLICE(ctx->CRm,1,0)==1) {
3507 ctx->types = MBReqTypes_Reads;
3508 }
3509 else if(SLICE(ctx->CRm,1,0)==2) {
3510 ctx->types = MBReqTypes_Writes;
3511 }
3512 else if(SLICE(ctx->CRm,1,0)==3) {
3513 ctx->types = MBReqTypes_All;
3514 }
3515 /* regular aliases */
3516 if(ctx->CRm==4) return PSSBB_DSB(ctx, instr);
3517 if(ctx->CRm==0) return SSBB_DSB(ctx, instr);
3518 OK(ENC_DSB_BO_BARRIERS);
3519 }
3520 /* class iclass_dsb_nxs */
3521 /* 11010101000000110011|imm2=xx|10|op2<2>=0|op2<1:0>=01|Rt=11111 */
3522 if((INSWORD & 0xFFFFF3FF)==0xD503323F) {
3523 decode_fields32(ENC_DSB_BON_BARRIERS, ctx, instr);
3524 if(!HaveFeatXS()) {
3525 UNDEFINED;
3526 }
3527 ctx->types = MBReqTypes_All;
3528 ctx->nXS = TRUE;
3529 ctx->alias = DSBAlias_DSB;
3530 if(!ctx->imm2) {

Callers 1

decode_iclass_barriersFunction · 0.85

Calls 3

decode_fields32Function · 0.85
PSSBB_DSBFunction · 0.85
SSBB_DSBFunction · 0.85

Tested by

no test coverage detected