diff options
Diffstat (limited to 'arch/arm/kvm/reset.c')
| -rw-r--r-- | arch/arm/kvm/reset.c | 19 | 
1 files changed, 8 insertions, 11 deletions
diff --git a/arch/arm/kvm/reset.c b/arch/arm/kvm/reset.c index 71e08baee20..f558c073c02 100644 --- a/arch/arm/kvm/reset.c +++ b/arch/arm/kvm/reset.c @@ -30,16 +30,14 @@  #include <kvm/arm_arch_timer.h>  /****************************************************************************** - * Cortex-A15 Reset Values + * Cortex-A15 and Cortex-A7 Reset Values   */ -static const int a15_max_cpu_idx = 3; - -static struct kvm_regs a15_regs_reset = { +static struct kvm_regs cortexa_regs_reset = {  	.usr_regs.ARM_cpsr = SVC_MODE | PSR_A_BIT | PSR_I_BIT | PSR_F_BIT,  }; -static const struct kvm_irq_level a15_vtimer_irq = { +static const struct kvm_irq_level cortexa_vtimer_irq = {  	{ .irq = 27 },  	.level = 1,  }; @@ -58,23 +56,22 @@ static const struct kvm_irq_level a15_vtimer_irq = {   */  int kvm_reset_vcpu(struct kvm_vcpu *vcpu)  { -	struct kvm_regs *cpu_reset; +	struct kvm_regs *reset_regs;  	const struct kvm_irq_level *cpu_vtimer_irq;  	switch (vcpu->arch.target) { +	case KVM_ARM_TARGET_CORTEX_A7:  	case KVM_ARM_TARGET_CORTEX_A15: -		if (vcpu->vcpu_id > a15_max_cpu_idx) -			return -EINVAL; -		cpu_reset = &a15_regs_reset; +		reset_regs = &cortexa_regs_reset;  		vcpu->arch.midr = read_cpuid_id(); -		cpu_vtimer_irq = &a15_vtimer_irq; +		cpu_vtimer_irq = &cortexa_vtimer_irq;  		break;  	default:  		return -ENODEV;  	}  	/* Reset core registers */ -	memcpy(&vcpu->arch.regs, cpu_reset, sizeof(vcpu->arch.regs)); +	memcpy(&vcpu->arch.regs, reset_regs, sizeof(vcpu->arch.regs));  	/* Reset CP15 registers */  	kvm_reset_coprocs(vcpu);  | 
