The entry address for a VM is an IPA.
Change-Id: I9b447796789082c031c8a342a283d3050cf15ccb
diff --git a/inc/addr.h b/inc/addr.h
index 24a910c..964660b 100644
--- a/inc/addr.h
+++ b/inc/addr.h
@@ -86,6 +86,14 @@
}
/**
+ * Casts a physical address to an intermediate physical address.
+ */
+static inline ipaddr_t ipa_from_pa(paddr_t pa)
+{
+ return ipa_init(pa_addr(pa));
+}
+
+/**
* Casts a virtual address to a physical address.
*/
static inline paddr_t pa_from_va(vaddr_t va)
diff --git a/inc/cpu.h b/inc/cpu.h
index d5bd29b..e949db7 100644
--- a/inc/cpu.h
+++ b/inc/cpu.h
@@ -5,6 +5,7 @@
#include <stddef.h>
#include <stdint.h>
+#include "addr.h"
#include "arch_cpu.h"
#include "spinlock.h"
@@ -52,7 +53,7 @@
size_t cpu_index(struct cpu *c);
void cpu_irq_enable(struct cpu *c);
void cpu_irq_disable(struct cpu *c);
-bool cpu_on(struct cpu *c, size_t entry, size_t arg);
+bool cpu_on(struct cpu *c, ipaddr_t entry, size_t arg);
void cpu_off(struct cpu *c);
struct cpu *cpu_find(size_t id);
diff --git a/inc/vm.h b/inc/vm.h
index 2fb3bbf..eb5fd2a 100644
--- a/inc/vm.h
+++ b/inc/vm.h
@@ -27,7 +27,7 @@
};
bool vm_init(struct vm *vm, uint32_t id, uint32_t vcpu_count);
-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, ipaddr_t entry, size_t arg,
bool is_primary);
void vm_set_current(struct vm *vm);