aboutsummaryrefslogtreecommitdiff
path: root/target-arm/cpu-qom.h
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2013-06-25 18:16:07 +0100
committerPeter Maydell <peter.maydell@linaro.org>2013-06-25 18:16:10 +0100
commit2d8e5a0e25171eca30a72a450826f539f05951d0 (patch)
tree3375a5860412b5ec30c009f270744ceda5c46d2e /target-arm/cpu-qom.h
parentff047453f56713aa627e63aade1a9046ccd3bdfd (diff)
downloadqemu-arm-2d8e5a0e25171eca30a72a450826f539f05951d0.tar.gz
target-arm: Reinitialize all KVM VCPU registers on reset
Since the ARM KVM API doesn't include a "reset this VCPU" ioctl, we have to capture the initial values of every register it knows about so that we can reset the VCPU by feeding those values back again. Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target-arm/cpu-qom.h')
-rw-r--r--target-arm/cpu-qom.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/target-arm/cpu-qom.h b/target-arm/cpu-qom.h
index 2242eee514..25239b8952 100644
--- a/target-arm/cpu-qom.h
+++ b/target-arm/cpu-qom.h
@@ -72,7 +72,11 @@ typedef struct ARMCPU {
uint64_t *cpreg_indexes;
/* Values of the registers (cpreg_indexes[i]'s value is cpreg_values[i]) */
uint64_t *cpreg_values;
- /* Length of the indexes, values arrays */
+ /* When using KVM, keeps a copy of the initial state of the VCPU,
+ * so that on reset we can feed the reset values back into the kernel.
+ */
+ uint64_t *cpreg_reset_values;
+ /* Length of the indexes, values, reset_values arrays */
int32_t cpreg_array_len;
/* These are used only for migration: incoming data arrives in
* these fields and is sanity checked in post_load before copying