aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/ia64/xenmisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/arch/ia64/xenmisc.c')
-rw-r--r--xen/arch/ia64/xenmisc.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/xen/arch/ia64/xenmisc.c b/xen/arch/ia64/xenmisc.c
index 6703b397ab..da9c034e96 100644
--- a/xen/arch/ia64/xenmisc.c
+++ b/xen/arch/ia64/xenmisc.c
@@ -62,8 +62,10 @@ void sync_lazy_execstate_cpu(unsigned int cpu) {}
void sync_lazy_execstate_mask(cpumask_t mask) {}
void sync_lazy_execstate_all(void) {}
+#ifdef CONFIG_VTI
int grant_table_create(struct domain *d) { return 0; }
void grant_table_destroy(struct domain *d) { return; }
+#endif
struct pt_regs *guest_cpu_user_regs(void) { return ia64_task_regs(current); }
@@ -72,6 +74,35 @@ void raise_actimer_softirq(void)
raise_softirq(AC_TIMER_SOFTIRQ);
}
+#ifndef CONFIG_VTI
+unsigned long
+__gpfn_to_mfn_foreign(struct domain *d, unsigned long gpfn)
+{
+ if (d == dom0)
+ return(gpfn);
+ else {
+ unsigned long pte = lookup_domain_mpa(d,gpfn << PAGE_SHIFT);
+ if (!pte) {
+printk("__gpfn_to_mfn_foreign: bad gpfn. spinning...\n");
+while(1);
+ return 0;
+ }
+ return ((pte & _PFN_MASK) >> PAGE_SHIFT);
+ }
+}
+
+u32
+__mfn_to_gpfn(struct domain *d, unsigned long frame)
+{
+ // FIXME: is this right?
+if ((frame << PAGE_SHIFT) & _PAGE_PPN_MASK) {
+printk("__mfn_to_gpfn: bad frame. spinning...\n");
+while(1);
+}
+ return frame;
+}
+#endif
+
unsigned long __hypercall_create_continuation(
unsigned int op, unsigned int nr_args, ...)
{