KVM: arm64: Add AArch32 mapping annotation
authorMarc Zyngier <maz@kernel.org>
Thu, 29 Oct 2020 17:09:12 +0000 (17:09 +0000)
committerMarc Zyngier <maz@kernel.org>
Tue, 10 Nov 2020 11:22:51 +0000 (11:22 +0000)
In order to deal with the few AArch32 system registers that map to
only a particular half of their AArch64 counterpart (such as DFAR
and IFAR being colocated in FAR_EL1), let's add an optional annotation
to the sysreg descriptor structure, indicating whether a register
maps to the upper or lower 32bits of a register.

Nothing is using these annotation yet.

Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/sys_regs.h

index 5a6fc30..259864c 100644 (file)
@@ -27,6 +27,12 @@ struct sys_reg_desc {
        /* Sysreg string for debug */
        const char *name;
 
+       enum {
+               AA32_ZEROHIGH,
+               AA32_LO,
+               AA32_HI,
+       } aarch32_map;
+
        /* MRS/MSR instruction which accesses it. */
        u8      Op0;
        u8      Op1;
@@ -153,6 +159,7 @@ const struct sys_reg_desc *find_reg_by_id(u64 id,
                                          const struct sys_reg_desc table[],
                                          unsigned int num);
 
+#define AA32(_x)       .aarch32_map = AA32_##_x
 #define Op0(_x)        .Op0 = _x
 #define Op1(_x)        .Op1 = _x
 #define CRn(_x)                .CRn = _x