CRn
#define __ACCESS_CP15(CRn, Op1, CRm, Op2) \
"mrc", "mcr", __stringify(p15, Op1, %0, CRn, CRm, Op2), u32
#define __SYS_BARRIER_INSN(op0, op1, CRn, CRm, op2, Rt) \
sys_insn((op0), (op1), (CRn), (CRm), (op2)) | \
encoding = sys_reg(sr->Op0, sr->Op1, sr->CRn, sr->CRm, sr->Op2);
if (!(params.Op0 == 3 && (params.CRn & 0b1011) == 0b1011))
Op0(3), Op1(0), CRn(0), CRm(crm), Op2(op2), \
if (r->CRn == 9 && r->CRm == 13 && r->Op2 == 0)
if (r->CRn == 9 && r->CRm == 13 && r->Op2 == 0)
if (r->CRn == 9 && r->CRm == 13) {
} else if (r->CRn == 0 && r->CRm == 9) {
} else if (r->CRn == 14 && (r->CRm & 12) == 8) {
if (r->CRn == 9 && r->CRm == 13 && r->Op2 == 1) {
} else if (r->CRn == 14 && (r->CRm & 12) == 12) {
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);
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.CRn = 0;
params->CRn = 0;
if (params.Op1 == 0 && params.CRn == 0 &&
if (params.Op1 == 1 && params.CRn == 0 &&
params->CRn = ((id & KVM_REG_ARM64_SYSREG_CRN_MASK)
(reg->CRn << KVM_REG_ARM64_SYSREG_CRN_SHIFT) |
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)
if (i1->CRn != i2->CRn)
return i1->CRn - i2->CRn;
u8 CRn;
#define CRn(_x) .CRn = _x
CRn(sys_reg_CRn(reg)), CRm(sys_reg_CRm(reg)), \
CRn(sys_reg_CRn(reg)), CRm(sys_reg_CRm(reg)), \
.CRn = sys_reg_CRn(reg), \
.CRn = ((esr) >> 10) & 0xf, \
.CRn = ((esr) >> 10) & 0xf, \
p->CRn == 0 && !(p->CRm & 0b1000));
u8 CRn;
__entry->CRn = reg->CRn;
__entry->Op0, __entry->Op1, __entry->CRn,
__field(u8, CRn)