diff options
| author | Alex Bennée <alex.bennee@linaro.org> | 2015-07-07 12:29:54 -0400 |
|---|---|---|
| committer | Marc Zyngier <marc.zyngier@arm.com> | 2015-07-21 07:47:08 -0400 |
| commit | 21b6f32f9471284f6d4621fc8be71719266db557 (patch) | |
| tree | 4a506a24a9b053193ae5a617b47fbba20b8e8e6a /arch/arm64/include/uapi/asm | |
| parent | 8ab30c1538b14424015e45063c41d509b24c1dea (diff) | |
KVM: arm64: guest debug, define API headers
This commit defines the API headers for guest debugging. There are two
architecture specific debug structures:
- kvm_guest_debug_arch, allows us to pass in HW debug registers
- kvm_debug_exit_arch, signals exception and possible faulting address
The type of debugging being used is controlled by the architecture
specific control bits of the kvm_guest_debug->control flags in the ioctl
structure.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Acked-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'arch/arm64/include/uapi/asm')
| -rw-r--r-- | arch/arm64/include/uapi/asm/kvm.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/arm64/include/uapi/asm/kvm.h b/arch/arm64/include/uapi/asm/kvm.h index d26832022127..d82f3f316ba4 100644 --- a/arch/arm64/include/uapi/asm/kvm.h +++ b/arch/arm64/include/uapi/asm/kvm.h | |||
| @@ -100,12 +100,39 @@ struct kvm_sregs { | |||
| 100 | struct kvm_fpu { | 100 | struct kvm_fpu { |
| 101 | }; | 101 | }; |
| 102 | 102 | ||
| 103 | /* | ||
| 104 | * See v8 ARM ARM D7.3: Debug Registers | ||
| 105 | * | ||
| 106 | * The architectural limit is 16 debug registers of each type although | ||
| 107 | * in practice there are usually less (see ID_AA64DFR0_EL1). | ||
| 108 | * | ||
| 109 | * Although the control registers are architecturally defined as 32 | ||
| 110 | * bits wide we use a 64 bit structure here to keep parity with | ||
| 111 | * KVM_GET/SET_ONE_REG behaviour which treats all system registers as | ||
| 112 | * 64 bit values. It also allows for the possibility of the | ||
| 113 | * architecture expanding the control registers without having to | ||
| 114 | * change the userspace ABI. | ||
| 115 | */ | ||
| 116 | #define KVM_ARM_MAX_DBG_REGS 16 | ||
| 103 | struct kvm_guest_debug_arch { | 117 | struct kvm_guest_debug_arch { |
| 118 | __u64 dbg_bcr[KVM_ARM_MAX_DBG_REGS]; | ||
| 119 | __u64 dbg_bvr[KVM_ARM_MAX_DBG_REGS]; | ||
| 120 | __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS]; | ||
| 121 | __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS]; | ||
| 104 | }; | 122 | }; |
| 105 | 123 | ||
| 106 | struct kvm_debug_exit_arch { | 124 | struct kvm_debug_exit_arch { |
| 125 | __u32 hsr; | ||
| 126 | __u64 far; /* used for watchpoints */ | ||
| 107 | }; | 127 | }; |
| 108 | 128 | ||
| 129 | /* | ||
| 130 | * Architecture specific defines for kvm_guest_debug->control | ||
| 131 | */ | ||
| 132 | |||
| 133 | #define KVM_GUESTDBG_USE_SW_BP (1 << 16) | ||
| 134 | #define KVM_GUESTDBG_USE_HW (1 << 17) | ||
| 135 | |||
| 109 | struct kvm_sync_regs { | 136 | struct kvm_sync_regs { |
| 110 | }; | 137 | }; |
| 111 | 138 | ||
