sys.xml */
| 27497 | |
| 27498 | /* sys.xml */ |
| 27499 | int SYS(context *ctx, Instruction *instr) |
| 27500 | { |
| 27501 | int rc = DECODE_STATUS_UNMATCHED; |
| 27502 | /* class iclass_system */ |
| 27503 | /* 1101010100|L=0|op0=01|op1=xxx|CRn=xxxx|CRm=xxxx|op2=xxx|Rt=xxxxx */ |
| 27504 | if((INSWORD & 0xFFF80000)==0xD5080000) { |
| 27505 | decode_fields32(ENC_SYS_CR_SYSTEMINSTRS, ctx, instr); |
| 27506 | CheckSystemAccess(1,ctx->op1,ctx->CRn,ctx->CRm,ctx->op2,ctx->Rt,ctx->L); |
| 27507 | ctx->t = UINT(ctx->Rt); |
| 27508 | ctx->sys_op0 = 1; |
| 27509 | ctx->sys_op1 = UINT(ctx->op1); |
| 27510 | ctx->sys_op2 = UINT(ctx->op2); |
| 27511 | ctx->sys_crn = UINT(ctx->CRn); |
| 27512 | ctx->sys_crm = UINT(ctx->CRm); |
| 27513 | ctx->has_result = (ctx->L==1); |
| 27514 | /* regular aliases */ |
| 27515 | if(ctx->CRn==7 && (ctx->CRm&14)==8 && SysOp(ctx->op1,7,ctx->CRm,ctx->op2)==Sys_AT) return AT_SYS(ctx, instr); |
| 27516 | if(ctx->op1==3 && ctx->CRn==7 && ctx->CRm==3 && ctx->op2==4) return CFP_SYS(ctx, instr); |
| 27517 | if(ctx->op1==3 && ctx->CRn==7 && ctx->CRm==3 && ctx->op2==7) return CPP_SYS(ctx, instr); |
| 27518 | if(ctx->CRn==7 && SysOp(ctx->op1,7,ctx->CRm,ctx->op2)==Sys_DC) return DC_SYS(ctx, instr); |
| 27519 | if(ctx->op1==3 && ctx->CRn==7 && ctx->CRm==3 && ctx->op2==5) return DVP_SYS(ctx, instr); |
| 27520 | if(ctx->CRn==7 && SysOp(ctx->op1,7,ctx->CRm,ctx->op2)==Sys_IC) return IC_SYS(ctx, instr); |
| 27521 | // if(ctx->CRn==8 && SysOp(ctx->op1,8,ctx->CRm,ctx->op2)==Sys_TLBI) return TLBI_SYS(ctx, instr); |
| 27522 | if(((ctx->CRn&14)==8) && SysOp(ctx->op1,ctx->CRn,ctx->CRm,ctx->op2)==Sys_TLBI) return TLBI_SYS(ctx, instr); |
| 27523 | OK(ENC_SYS_CR_SYSTEMINSTRS); |
| 27524 | } |
| 27525 | return rc; |
| 27526 | } |
| 27527 | |
| 27528 | /* sysl.xml */ |
| 27529 | int SYSL(context *ctx, Instruction *instr) |
no test coverage detected