diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2014-04-24 05:27:13 -0400 |
---|---|---|
committer | Christoffer Dall <christoffer.dall@linaro.org> | 2014-07-11 07:57:44 -0400 |
commit | 72564016aae45f42e488f926bc803f9a2e1c771c (patch) | |
tree | 80184b0510031158803482b803fd5d6ee1fb258e /arch/arm64/include/asm/kvm_host.h | |
parent | 0c557ed4983b7abe152212b5b1726c2a789b2c61 (diff) |
arm64: KVM: common infrastructure for handling AArch32 CP14/CP15
As we're about to trap a bunch of CP14 registers, let's rework
the CP15 handling so it can be generalized and work with multiple
tables.
Reviewed-by: Anup Patel <anup.patel@linaro.org>
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'arch/arm64/include/asm/kvm_host.h')
-rw-r--r-- | arch/arm64/include/asm/kvm_host.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h index 8e410f761918..79812be4f25f 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h | |||
@@ -86,7 +86,7 @@ struct kvm_cpu_context { | |||
86 | struct kvm_regs gp_regs; | 86 | struct kvm_regs gp_regs; |
87 | union { | 87 | union { |
88 | u64 sys_regs[NR_SYS_REGS]; | 88 | u64 sys_regs[NR_SYS_REGS]; |
89 | u32 cp15[NR_CP15_REGS]; | 89 | u32 copro[NR_COPRO_REGS]; |
90 | }; | 90 | }; |
91 | }; | 91 | }; |
92 | 92 | ||
@@ -141,12 +141,17 @@ struct kvm_vcpu_arch { | |||
141 | 141 | ||
142 | #define vcpu_gp_regs(v) (&(v)->arch.ctxt.gp_regs) | 142 | #define vcpu_gp_regs(v) (&(v)->arch.ctxt.gp_regs) |
143 | #define vcpu_sys_reg(v,r) ((v)->arch.ctxt.sys_regs[(r)]) | 143 | #define vcpu_sys_reg(v,r) ((v)->arch.ctxt.sys_regs[(r)]) |
144 | #define vcpu_cp15(v,r) ((v)->arch.ctxt.cp15[(r)]) | 144 | /* |
145 | * CP14 and CP15 live in the same array, as they are backed by the | ||
146 | * same system registers. | ||
147 | */ | ||
148 | #define vcpu_cp14(v,r) ((v)->arch.ctxt.copro[(r)]) | ||
149 | #define vcpu_cp15(v,r) ((v)->arch.ctxt.copro[(r)]) | ||
145 | 150 | ||
146 | #ifdef CONFIG_CPU_BIG_ENDIAN | 151 | #ifdef CONFIG_CPU_BIG_ENDIAN |
147 | #define vcpu_cp15_64_low(v,r) ((v)->arch.ctxt.cp15[((r) + 1)]) | 152 | #define vcpu_cp15_64_low(v,r) ((v)->arch.ctxt.copro[((r) + 1)]) |
148 | #else | 153 | #else |
149 | #define vcpu_cp15_64_low(v,r) ((v)->arch.ctxt.cp15[((r) + 0)]) | 154 | #define vcpu_cp15_64_low(v,r) ((v)->arch.ctxt.copro[((r) + 0)]) |
150 | #endif | 155 | #endif |
151 | 156 | ||
152 | struct kvm_vm_stat { | 157 | struct kvm_vm_stat { |