diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2014-07-08 14:01:58 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2014-07-08 14:01:58 +0100 |
commit | 67d01fb8066b7bfa9be1b2c8537ad3f2406d98cf (patch) | |
tree | f8d1985530290f3dff6f03f5ff50db9bd41276bd | |
parent | eaa4980185943da6e36f6f2e052d41924705e1ea (diff) | |
parent | 75c9a1a0473cc5ca9756d11b236c715c7bc0ba67 (diff) |
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20140708' into staging
target-arm queue:
* fix handling of KVM reset for 32-bit ARM CPUs
* implement NOR flash alias for vexpress-a9
* make sure libvixl gets its own utils.h rather than somebody else's
# gpg: Signature made Tue 08 Jul 2014 13:12:05 BST using RSA key ID 14360CDE
# gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>"
* remotes/pmaydell/tags/pull-target-arm-20140708:
target-arm: Implement vCPU reset via KVM_ARM_VCPU_INIT for 32-bit CPUs
hw/arm/vexpress: Alias NOR flash at 0 for vexpress-a9
disas/libvixl: prepend the include path of libvixl header files
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | disas/libvixl/Makefile.objs | 2 | ||||
-rw-r--r-- | hw/arm/vexpress.c | 2 | ||||
-rw-r--r-- | target-arm/cpu-qom.h | 4 | ||||
-rw-r--r-- | target-arm/kvm32.c | 19 |
4 files changed, 7 insertions, 20 deletions
diff --git a/disas/libvixl/Makefile.objs b/disas/libvixl/Makefile.objs index 0adb3ced7b..17e6565d10 100644 --- a/disas/libvixl/Makefile.objs +++ b/disas/libvixl/Makefile.objs @@ -3,6 +3,6 @@ libvixl_OBJS = utils.o \ a64/decoder-a64.o \ a64/disasm-a64.o -$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS += -I$(SRC_PATH)/disas/libvixl +$(addprefix $(obj)/,$(libvixl_OBJS)): QEMU_CFLAGS := -I$(SRC_PATH)/disas/libvixl $(QEMU_CFLAGS) common-obj-$(CONFIG_ARM_A64_DIS) += $(libvixl_OBJS) diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index 3d83e6c98d..a88732c7ea 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -84,6 +84,7 @@ enum { }; static hwaddr motherboard_legacy_map[] = { + [VE_NORFLASHALIAS] = 0, /* CS7: 0x10000000 .. 0x10020000 */ [VE_SYSREGS] = 0x10000000, [VE_SP810] = 0x10001000, @@ -114,7 +115,6 @@ static hwaddr motherboard_legacy_map[] = { [VE_VIDEORAM] = 0x4c000000, [VE_ETHERNET] = 0x4e000000, [VE_USB] = 0x4f000000, - [VE_NORFLASHALIAS] = -1, /* not present */ }; static hwaddr motherboard_aseries_map[] = { diff --git a/target-arm/cpu-qom.h b/target-arm/cpu-qom.h index eaee9447ee..ee4fbb1dad 100644 --- a/target-arm/cpu-qom.h +++ b/target-arm/cpu-qom.h @@ -72,10 +72,6 @@ typedef struct ARMCPU { uint64_t *cpreg_indexes; /* Values of the registers (cpreg_indexes[i]'s value is cpreg_values[i]) */ uint64_t *cpreg_values; - /* 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 diff --git a/target-arm/kvm32.c b/target-arm/kvm32.c index 068af7db57..5ec4eb1f32 100644 --- a/target-arm/kvm32.c +++ b/target-arm/kvm32.c @@ -270,13 +270,6 @@ int kvm_arch_init_vcpu(CPUState *cs) goto out; } - /* Save a copy of the initial register values so that we can - * feed it back to the kernel on VCPU reset. - */ - cpu->cpreg_reset_values = g_memdup(cpu->cpreg_values, - cpu->cpreg_array_len * - sizeof(cpu->cpreg_values[0])); - out: g_free(rlp); return ret; @@ -518,11 +511,9 @@ int kvm_arch_get_registers(CPUState *cs) void kvm_arm_reset_vcpu(ARMCPU *cpu) { - /* Feed the kernel back its initial register state */ - memmove(cpu->cpreg_values, cpu->cpreg_reset_values, - cpu->cpreg_array_len * sizeof(cpu->cpreg_values[0])); - - if (!write_list_to_kvmstate(cpu)) { - abort(); - } + /* Re-init VCPU so that all registers are set to + * their respective reset values. + */ + kvm_arm_vcpu_init(CPU(cpu)); + write_kvmstate_to_list(cpu); } |