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);