Load multiple VMs from ramdisk and run vcpus on request.

Remove gic and timer code for now.
diff --git a/src/vm.c b/src/vm.c
index ee6a5cd..05dd2e3 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -2,23 +2,26 @@
 
 #include "cpu.h"
 
-void vm_init(struct vm *vm, struct cpu *cpus)
+void vm_init(struct vm *vm, uint32_t vcpu_count)
 {
-	size_t i;
+	uint32_t i;
+
+	vm->vcpu_count = vcpu_count;
 
 	/* Do basic initialization of vcpus. */
-	for (i = 0; i < MAX_CPUS; i++) {
-		vcpu_init(vm->vcpus + i, cpus + i, vm);
-	}
+	for (i = 0; i < vcpu_count; i++)
+		vcpu_init(vm->vcpus + i, vm);
 
 	arch_vptable_init(&vm->page_table);
 }
 
 /* TODO: Shall we use index or id here? */
-void vm_start_vcpu(struct vm *vm, size_t index, size_t entry, size_t arg)
+void vm_start_vcpu(struct vm *vm, size_t index, size_t entry, size_t arg,
+		   bool is_primary)
 {
 	struct vcpu *vcpu = vm->vcpus + index;
-	arch_regs_init(&vcpu->regs, entry, arg);
-	vcpu_ready(vcpu);
-	cpu_on(vcpu->cpu);
+	if (index < vm->vcpu_count) {
+		arch_regs_init(&vcpu->regs, entry, arg, is_primary);
+		vcpu_on(vcpu);
+	}
 }