target/arm/hvf: Add KVMID_TO_HVF, HVF_TO_KVMID
Conversion between KVM system registers ids and the HVF system register ids is trivial. Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
8da60618b6
commit
7d4d89a437
1 changed files with 20 additions and 0 deletions
|
|
@ -403,6 +403,26 @@ struct hvf_sreg_match {
|
|||
uint32_t cp_idx;
|
||||
};
|
||||
|
||||
/*
|
||||
* QEMU uses KVM system register ids in the migration format.
|
||||
* Conveniently, HVF uses the same encoding of the op* and cr* parameters
|
||||
* within the low 16 bits of the ids. Thus conversion between the
|
||||
* formats is trivial.
|
||||
*/
|
||||
|
||||
#define KVMID_TO_HVF(KVM) ((KVM) & 0xffff)
|
||||
#define HVF_TO_KVMID(HVF) \
|
||||
(CP_REG_ARM64 | CP_REG_SIZE_U64 | CP_REG_ARM64_SYSREG | (HVF))
|
||||
|
||||
/* Verify this at compile-time. */
|
||||
|
||||
#define DEF_SYSREG(HVF_ID, ...) \
|
||||
QEMU_BUILD_BUG_ON(HVF_ID != KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARGS__)));
|
||||
|
||||
#include "sysreg.c.inc"
|
||||
|
||||
#undef DEF_SYSREG
|
||||
|
||||
#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) \
|
||||
{ HVF_ID, HVF_SYSREG(crn, crm, op0, op1, op2) },
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue