Op2
#define __ACCESS_CP15(CRn, Op1, CRm, Op2) \
"mrc", "mcr", __stringify(p15, Op1, %0, CRn, CRm, Op2), u32
encoding = sys_reg(sr->Op0, sr->Op1, sr->CRn, sr->CRm, sr->Op2);
Op0(3), Op1(0), CRn(0), CRm(crm), Op2(op2), \
pmceid = kvm_pmu_get_pmceid(vcpu, (p->Op2 & 1));
if (r->CRn == 9 && r->CRm == 13 && r->Op2 == 0)
idx = ((r->CRm & 3) << 3) | (r->Op2 & 7);
if (r->CRn == 9 && r->CRm == 13 && r->Op2 == 0)
idx = ((r->CRm & 3) << 3) | (r->Op2 & 7);
if (r->Op2 == 2) {
} else if (r->Op2 == 0) {
idx = ((r->CRm & 3) << 3) | (r->Op2 & 7);
if (r->CRn == 9 && r->CRm == 13 && r->Op2 == 1) {
idx = ((r->CRm & 3) << 3) | (r->Op2 & 7);
if (r->Op2 & 0x1)
if (r->Op2 & 0x1)
Op0(3), Op1(0), CRn(0), CRm(crm), Op2(op2), \
u32 op = sys_insn(p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);
u32 op = sys_insn(p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);
u32 op = sys_insn(p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);
u32 sys_encoding = sys_insn(p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);
u8 Op2 = sys_reg_Op2(instr);
if (CRm == TLBI_CRm_IPAIS && (Op2 == 2 || Op2 == 6) &&
if (CRm == TLBI_CRm_IPAONS && (Op2 == 0 || Op2 == 4) &&
if (CRm == TLBI_CRm_IPAONS && (Op2 == 3 || Op2 == 7) &&
u32 sys_encoding = sys_insn(p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);
u32 sys_encoding = sys_insn(p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);
u32 sys_encoding = sys_insn(p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);
u32 sys_encoding = sys_insn(p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);
u32 sys_encoding = sys_insn(p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);
{ AA32(LO), Op1( 0), CRn( 0), CRm((n)), Op2( 4), \
{ Op1( 0), CRn( 0), CRm((n)), Op2( 5), trap_dbg_wb_reg, NULL, n }, \
{ Op1( 0), CRn( 0), CRm((n)), Op2( 6), trap_dbg_wb_reg, NULL, n }, \
{ Op1( 0), CRn( 0), CRm((n)), Op2( 7), trap_dbg_wb_reg, NULL, n }
{ AA32(HI), Op1( 0), CRn( 1), CRm((n)), Op2( 1), \
{ Op1( 0), CRn( 0), CRm( 0), Op2( 0), trap_dbgdidr },
{ Op1( 0), CRn( 0), CRm( 0), Op2( 2), trap_raz_wi },
{ Op1( 0), CRn( 0), CRm( 1), Op2( 0), trap_raz_wi },
{ Op1( 0), CRn( 0), CRm( 2), Op2( 0), trap_debug_regs, NULL, MDCCINT_EL1 },
{ Op1( 0), CRn( 0), CRm( 2), Op2( 2), trap_debug_regs, NULL, MDSCR_EL1 },
{ Op1( 0), CRn( 0), CRm( 3), Op2( 0), trap_raz_wi },
{ Op1( 0), CRn( 0), CRm( 3), Op2( 2), trap_raz_wi },
{ Op1( 0), CRn( 0), CRm( 6), Op2( 0), trap_raz_wi },
{ Op1( 0), CRn( 0), CRm( 6), Op2( 2), trap_raz_wi },
{ Op1( 0), CRn( 0), CRm( 7), Op2( 0), trap_debug_regs, NULL, DBGVCR32_EL2 },
{ Op1( 0), CRn( 1), CRm( 0), Op2( 0), trap_raz_wi },
{ Op1( 0), CRn( 1), CRm( 0), Op2( 4), trap_oslar_el1 },
{ Op1( 0), CRn( 1), CRm( 1), Op2( 4), trap_oslsr_el1, NULL, OSLSR_EL1 },
{ Op1( 0), CRn( 1), CRm( 3), Op2( 4), trap_raz_wi },
{ Op1( 0), CRn( 1), CRm( 4), Op2( 4), trap_raz_wi },
{ Op1( 0), CRn( 2), CRm( 0), Op2( 0), trap_raz_wi },
{ Op1( 0), CRn( 7), CRm( 0), Op2( 7), trap_raz_wi },
{ Op1( 0), CRn( 7), CRm( 1), Op2( 7), trap_raz_wi },
{ Op1( 0), CRn( 7), CRm( 2), Op2( 7), trap_raz_wi },
{ Op1( 0), CRn( 7), CRm( 8), Op2( 6), trap_raz_wi },
{ Op1( 0), CRn( 7), CRm( 9), Op2( 6), trap_raz_wi },
{ Op1( 0), CRn( 7), CRm(14), Op2( 6), trap_dbgauthstatus_el1 },
Op1(_Op1), CRn(_CRn), CRm(_CRm), Op2(_Op2), \
{ Op1( 0), CRn( 0), CRm( 0), Op2( 1), access_ctr },
{ Op1( 0), CRn( 1), CRm( 0), Op2( 0), access_vm_reg, NULL, SCTLR_EL1 },
{ AA32(LO), Op1( 0), CRn( 1), CRm( 0), Op2( 1), access_actlr, NULL, ACTLR_EL1 },
{ AA32(HI), Op1( 0), CRn( 1), CRm( 0), Op2( 3), access_actlr, NULL, ACTLR_EL1 },
{ Op1( 0), CRn( 2), CRm( 0), Op2( 0), access_vm_reg, NULL, TTBR0_EL1 },
{ Op1( 0), CRn( 2), CRm( 0), Op2( 1), access_vm_reg, NULL, TTBR1_EL1 },
{ AA32(LO), Op1( 0), CRn( 2), CRm( 0), Op2( 2), access_vm_reg, NULL, TCR_EL1 },
{ AA32(HI), Op1( 0), CRn( 2), CRm( 0), Op2( 3), access_vm_reg, NULL, TCR_EL1 },
{ Op1( 0), CRn( 3), CRm( 0), Op2( 0), access_vm_reg, NULL, DACR32_EL2 },
{ Op1( 0), CRn( 5), CRm( 0), Op2( 0), access_vm_reg, NULL, ESR_EL1 },
{ Op1( 0), CRn( 5), CRm( 0), Op2( 1), access_vm_reg, NULL, IFSR32_EL2 },
{ Op1( 0), CRn( 5), CRm( 1), Op2( 0), access_vm_reg, NULL, AFSR0_EL1 },
{ Op1( 0), CRn( 5), CRm( 1), Op2( 1), access_vm_reg, NULL, AFSR1_EL1 },
{ AA32(LO), Op1( 0), CRn( 6), CRm( 0), Op2( 0), access_vm_reg, NULL, FAR_EL1 },
{ AA32(HI), Op1( 0), CRn( 6), CRm( 0), Op2( 2), access_vm_reg, NULL, FAR_EL1 },
{ Op1( 0), CRn( 7), CRm( 6), Op2( 2), access_dcsw },
{ Op1( 0), CRn( 7), CRm(10), Op2( 2), access_dcsw },
{ Op1( 0), CRn( 7), CRm(14), Op2( 2), access_dcsw },
{ AA32(LO), Op1( 0), CRn(10), CRm( 2), Op2( 0), access_vm_reg, NULL, MAIR_EL1 },
{ AA32(HI), Op1( 0), CRn(10), CRm( 2), Op2( 1), access_vm_reg, NULL, MAIR_EL1 },
{ AA32(LO), Op1( 0), CRn(10), CRm( 3), Op2( 0), access_vm_reg, NULL, AMAIR_EL1 },
{ AA32(HI), Op1( 0), CRn(10), CRm( 3), Op2( 1), access_vm_reg, NULL, AMAIR_EL1 },
{ Op1( 0), CRn(13), CRm( 0), Op2( 1), access_vm_reg, NULL, CONTEXTIDR_EL1 },
{ Op1(1), CRn( 0), CRm( 0), Op2(0), access_ccsidr },
{ Op1(1), CRn( 0), CRm( 0), Op2(1), access_clidr },
{ Op1(1), CRn( 0), CRm( 0), Op2(2), undef_access },
{ Op1(2), CRn( 0), CRm( 0), Op2(0), access_csselr, NULL, CSSELR_EL1 },
{ Op1( 0), CRn( 0), CRm( 2), Op2( 0), access_vm_reg, NULL, TTBR0_EL1 },
{ Op1( 0), CRn( 0), CRm(12), Op2( 0), access_gic_sgi }, /* ICC_SGI1R */
{ Op1( 1), CRn( 0), CRm( 2), Op2( 0), access_vm_reg, NULL, TTBR1_EL1 },
{ Op1( 1), CRn( 0), CRm(12), Op2( 0), access_gic_sgi }, /* ICC_ASGI1R */
{ Op1( 2), CRn( 0), CRm(12), Op2( 0), access_gic_sgi }, /* ICC_SGI0R */
params.Op2 = 0;
params->Op2 = 0;
params->Op2 = 1;
params->Op2 = 2;
(params.CRm || params.Op2 == 6 /* REVIDR */))
params.CRm == 0 && params.Op2 == 7 /* AIDR */)
params->Op2 = ((id & KVM_REG_ARM64_SYSREG_OP2_MASK)
(reg->Op2 << KVM_REG_ARM64_SYSREG_OP2_SHIFT));
switch (p->Op2) {
switch (rd->Op2) {
p->Op0, p->Op1, p->CRn, p->CRm, p->Op2, str_write_read(p->is_write));
(u32)(x)->CRn, (u32)(x)->CRm, (u32)(x)->Op2)
return i1->Op2 - i2->Op2;
#define Op2(_x) .Op2 = _x
u8 Op2;
Op2(sys_reg_Op2(reg))
Op2(sys_reg_Op2(reg))
.Op2 = sys_reg_Op2(reg) })
.Op2 = ((esr) >> 17) & 0x7, \
.Op2 = ((esr) >> 17) & 0x7, \
u8 Op2;
__entry->Op2 = reg->Op2;
__entry->CRm, __entry->Op2,
__field(u8, Op2)
u8 idx = r->Op2 & 3;
u8 idx = r->Op2 & 3;
u8 idx = r->Op2 & 3;
u8 idx = r->Op2 & 3;
u8 idx = r->Op2 & 3;
u8 idx = r->Op2 & 3;