blob: ee6a5cd51f00d1066f87e053d152a79438cab4b5 [file] [log] [blame]
Wedson Almeida Filho987c0ff2018-06-20 16:34:38 +01001#include "vm.h"
2
3#include "cpu.h"
4
5void vm_init(struct vm *vm, struct cpu *cpus)
6{
7 size_t i;
8
9 /* Do basic initialization of vcpus. */
10 for (i = 0; i < MAX_CPUS; i++) {
11 vcpu_init(vm->vcpus + i, cpus + i, vm);
12 }
13
14 arch_vptable_init(&vm->page_table);
15}
16
17/* TODO: Shall we use index or id here? */
18void vm_start_vcpu(struct vm *vm, size_t index, size_t entry, size_t arg)
19{
20 struct vcpu *vcpu = vm->vcpus + index;
21 arch_regs_init(&vcpu->regs, entry, arg);
22 vcpu_ready(vcpu);
23 cpu_on(vcpu->cpu);
24}