dsb.xml */
| 3471 | |
| 3472 | /* dsb.xml */ |
| 3473 | int 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) { |
no test coverage detected