diff options
Diffstat (limited to 'tools/testing/selftests/kvm/include/aarch64/processor.h')
| -rw-r--r-- | tools/testing/selftests/kvm/include/aarch64/processor.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/tools/testing/selftests/kvm/include/aarch64/processor.h b/tools/testing/selftests/kvm/include/aarch64/processor.h new file mode 100644 index 000000000000..9ef2ab1a0c08 --- /dev/null +++ b/tools/testing/selftests/kvm/include/aarch64/processor.h | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
| 2 | /* | ||
| 3 | * AArch64 processor specific defines | ||
| 4 | * | ||
| 5 | * Copyright (C) 2018, Red Hat, Inc. | ||
| 6 | */ | ||
| 7 | #ifndef SELFTEST_KVM_PROCESSOR_H | ||
| 8 | #define SELFTEST_KVM_PROCESSOR_H | ||
| 9 | |||
| 10 | #include "kvm_util.h" | ||
| 11 | |||
| 12 | |||
| 13 | #define ARM64_CORE_REG(x) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | \ | ||
| 14 | KVM_REG_ARM_CORE | KVM_REG_ARM_CORE_REG(x)) | ||
| 15 | |||
| 16 | #define CPACR_EL1 3, 0, 1, 0, 2 | ||
| 17 | #define TCR_EL1 3, 0, 2, 0, 2 | ||
| 18 | #define MAIR_EL1 3, 0, 10, 2, 0 | ||
| 19 | #define TTBR0_EL1 3, 0, 2, 0, 0 | ||
| 20 | #define SCTLR_EL1 3, 0, 1, 0, 0 | ||
| 21 | |||
| 22 | /* | ||
| 23 | * Default MAIR | ||
| 24 | * index attribute | ||
| 25 | * DEVICE_nGnRnE 0 0000:0000 | ||
| 26 | * DEVICE_nGnRE 1 0000:0100 | ||
| 27 | * DEVICE_GRE 2 0000:1100 | ||
| 28 | * NORMAL_NC 3 0100:0100 | ||
| 29 | * NORMAL 4 1111:1111 | ||
| 30 | * NORMAL_WT 5 1011:1011 | ||
| 31 | */ | ||
| 32 | #define DEFAULT_MAIR_EL1 ((0x00ul << (0 * 8)) | \ | ||
| 33 | (0x04ul << (1 * 8)) | \ | ||
| 34 | (0x0cul << (2 * 8)) | \ | ||
| 35 | (0x44ul << (3 * 8)) | \ | ||
| 36 | (0xfful << (4 * 8)) | \ | ||
| 37 | (0xbbul << (5 * 8))) | ||
| 38 | |||
| 39 | static inline void get_reg(struct kvm_vm *vm, uint32_t vcpuid, uint64_t id, uint64_t *addr) | ||
| 40 | { | ||
| 41 | struct kvm_one_reg reg; | ||
| 42 | reg.id = id; | ||
| 43 | reg.addr = (uint64_t)addr; | ||
| 44 | vcpu_ioctl(vm, vcpuid, KVM_GET_ONE_REG, ®); | ||
| 45 | } | ||
| 46 | |||
| 47 | static inline void set_reg(struct kvm_vm *vm, uint32_t vcpuid, uint64_t id, uint64_t val) | ||
| 48 | { | ||
| 49 | struct kvm_one_reg reg; | ||
| 50 | reg.id = id; | ||
| 51 | reg.addr = (uint64_t)&val; | ||
| 52 | vcpu_ioctl(vm, vcpuid, KVM_SET_ONE_REG, ®); | ||
| 53 | } | ||
| 54 | |||
| 55 | #endif /* SELFTEST_KVM_PROCESSOR_H */ | ||
