diff options
Diffstat (limited to 'xen/arch/ia64/hypercall.c')
-rw-r--r-- | xen/arch/ia64/hypercall.c | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/xen/arch/ia64/hypercall.c b/xen/arch/ia64/hypercall.c index 0fcc6f7cf8..648bbfbbe8 100644 --- a/xen/arch/ia64/hypercall.c +++ b/xen/arch/ia64/hypercall.c @@ -19,8 +19,6 @@ extern unsigned long translate_domain_mpaddr(unsigned long); extern struct ia64_sal_retval pal_emulator_static(UINT64); extern struct ia64_sal_retval sal_emulator(UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64); -void fooefi(void) {} - int ia64_hypercall (struct pt_regs *regs) { @@ -122,6 +120,31 @@ ia64_hypercall (struct pt_regs *regs) case 0xfffb: // test dummy hypercall regs->r8 = domU_staging_read_8(vcpu_get_gr(v,32)); break; + + case __HYPERVISOR_dom0_op: + regs->r8 = do_dom0_op(regs->r14); + break; + + case __HYPERVISOR_dom_mem_op: +#ifdef CONFIG_VTI + regs->r8 = do_dom_mem_op(regs->r14, regs->r15, regs->r16, regs->r17, regs->r18); +#else + /* we don't handle reservations; just return success */ + regs->r8 = regs->r16; +#endif + break; + + case __HYPERVISOR_event_channel_op: + regs->r8 = do_event_channel_op(regs->r14); + break; + + case __HYPERVISOR_console_io: + regs->r8 = do_console_io(regs->r14, regs->r15, regs->r16); + break; + + default: + printf("unknown hypercall %x\n", regs->r2); + regs->r8 = (unsigned long)-1; } return 1; } |