WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Another step towards building xenlinux/ia64 from -sparse

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Another step towards building xenlinux/ia64 from -sparse
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 28 Sep 2005 20:16:12 +0000
Delivery-date: Wed, 28 Sep 2005 20:13:51 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User djm@xxxxxxxxxxxxxxx
# Node ID 109a27c1c00459e02678beabebbdec73376e736d
# Parent  7ddfb9a449729f80305d05dc5faf2f1e7638ef27
Another step towards building xenlinux/ia64 from -sparse

diff -r 7ddfb9a44972 -r 109a27c1c004 
linux-2.6-xen-sparse/arch/ia64/xen-mkbuildtree-pre
--- a/linux-2.6-xen-sparse/arch/ia64/xen-mkbuildtree-pre        Fri Sep 23 
00:11:04 2005
+++ b/linux-2.6-xen-sparse/arch/ia64/xen-mkbuildtree-pre        Fri Sep 23 
14:12:28 2005
@@ -13,3 +13,7 @@
        mv include/linux include/linux.xen-x86
 fi
 cp ../xen/include/asm-ia64/asm-xsi-offsets.h include/asm-ia64/xen/
+cp arch/ia64/xen/drivers/Makefile drivers/xen/Makefile
+cp arch/ia64/xen/drivers/coreMakefile drivers/xen/core/Makefile
+cp arch/ia64/xen/drivers/xenia64_init.c drivers/xen/core
+cp arch/ia64/xen/drivers/evtchn_ia64.c drivers/xen/core
diff -r 7ddfb9a44972 -r 109a27c1c004 
linux-2.6-xen-sparse/arch/ia64/xen/drivers/Makefile
--- /dev/null   Fri Sep 23 00:11:04 2005
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/Makefile       Fri Sep 23 
14:12:28 2005
@@ -0,0 +1,19 @@
+
+
+obj-y  += core/
+obj-y  += console/
+obj-y  += evtchn/
+#obj-y += balloon/
+obj-y  += privcmd/
+obj-y  += blkback/
+#obj-y += netback/
+obj-y  += blkfront/
+obj-y  += xenbus/
+#obj-y += netfront/
+#obj-$(CONFIG_XEN_PRIVILEGED_GUEST)    += privcmd/
+#obj-$(CONFIG_XEN_BLKDEV_BACKEND)      += blkback/
+#obj-$(CONFIG_XEN_NETDEV_BACKEND)      += netback/
+#obj-$(CONFIG_XEN_BLKDEV_FRONTEND)     += blkfront/
+#obj-$(CONFIG_XEN_NETDEV_FRONTEND)     += netfront/
+#obj-$(CONFIG_XEN_BLKDEV_TAP)          += blktap/
+
diff -r 7ddfb9a44972 -r 109a27c1c004 
linux-2.6-xen-sparse/arch/ia64/xen/drivers/README
--- /dev/null   Fri Sep 23 00:11:04 2005
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/README Fri Sep 23 14:12:28 2005
@@ -0,0 +1,2 @@
+This is a temporary location for source/Makefiles that need to be
+patched/reworked in drivers/xen to work with xenlinux/ia64.
diff -r 7ddfb9a44972 -r 109a27c1c004 
linux-2.6-xen-sparse/arch/ia64/xen/drivers/coreMakefile
--- /dev/null   Fri Sep 23 00:11:04 2005
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/coreMakefile   Fri Sep 23 
14:12:28 2005
@@ -0,0 +1,24 @@
+#
+# Makefile for the linux kernel.
+#
+
+XENARCH        := $(subst ",,$(CONFIG_XENARCH))
+
+CPPFLAGS_vmlinux.lds += -U$(XENARCH)
+
+$(obj)/vmlinux.lds.S:
+       @ln -fsn $(srctree)/arch/$(XENARCH)/kernel/vmlinux.lds.S $@
+
+
+obj-y   := gnttab.o devmem.o
+obj-$(CONFIG_PROC_FS) += xen_proc.o
+
+ifeq ($(ARCH),ia64)
+obj-y   += evtchn_ia64.o
+obj-y   += xenia64_init.o
+else
+extra-y += vmlinux.lds
+obj-y   += reboot.o evtchn.o fixup.o 
+obj-$(CONFIG_SMP)     += smp.o         # setup_profiling_timer def'd in ia64
+obj-$(CONFIG_NET)     += skbuff.o      # until networking is up on ia64
+endif
diff -r 7ddfb9a44972 -r 109a27c1c004 
linux-2.6-xen-sparse/arch/ia64/xen/drivers/evtchn_ia64.c
--- /dev/null   Fri Sep 23 00:11:04 2005
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/evtchn_ia64.c  Fri Sep 23 
14:12:28 2005
@@ -0,0 +1,151 @@
+/* NOTE: This file split off from evtchn.c because there was
+   some discussion that the mechanism is sufficiently different.
+   It may be possible to merge it back in the future... djm */
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <asm/hw_irq.h>
+#include <asm-xen/evtchn.h>
+
+#define MAX_EVTCHN 256
+static struct {
+       irqreturn_t (*handler)(int, void *, struct pt_regs *);
+       void *dev_id;
+} evtchns[MAX_EVTCHN];
+
+int virq_to_evtchn[NR_VIRQS] = {-1};
+unsigned int bind_virq_to_evtchn(int virq)
+{
+    evtchn_op_t op;
+
+    op.cmd = EVTCHNOP_bind_virq;
+    op.u.bind_virq.virq = virq;
+    if ( HYPERVISOR_event_channel_op(&op) != 0 )
+        BUG();
+
+    virq_to_evtchn[virq] = op.u.bind_virq.port;
+    return op.u.bind_virq.port;
+}
+
+int bind_virq_to_irq(int virq)
+{
+       printk("bind_virq_to_irq called... FIXME??\n");
+       while(1);
+}
+
+void unbind_virq_from_evtchn(int virq)
+{
+    evtchn_op_t op;
+
+    op.cmd = EVTCHNOP_close;
+    op.u.close.dom = DOMID_SELF;
+    op.u.close.port = virq_to_evtchn[virq];
+    if ( HYPERVISOR_event_channel_op(&op) != 0 )
+       BUG();
+
+    virq_to_evtchn[virq] = -1;
+}
+
+int bind_evtchn_to_irqhandler(unsigned int evtchn,
+                   irqreturn_t (*handler)(int, void *, struct pt_regs *),
+                   unsigned long irqflags, const char * devname, void *dev_id)
+{
+    if (evtchn >= MAX_EVTCHN)
+        return -EINVAL;
+
+    evtchns[evtchn].handler = handler;
+    evtchns[evtchn].dev_id = dev_id;
+    unmask_evtchn(evtchn);
+    return 0;
+}
+
+void unbind_evtchn_from_irqhandler(unsigned int evtchn, void *dev_id)
+{
+    if (evtchn >= MAX_EVTCHN)
+        return;
+
+    mask_evtchn(evtchn);
+    evtchns[evtchn].handler = NULL;
+}
+
+void unbind_evtchn_from_irq(unsigned int evtchn)
+{
+       printk("unbind_evtchn_from_irq called... FIXME??\n");
+       while(1);
+}
+
+irqreturn_t evtchn_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+{
+    u32            l1, l2;
+    unsigned int   l1i, l2i, port;
+    irqreturn_t (*handler)(int, void *, struct pt_regs *);
+    shared_info_t *s = HYPERVISOR_shared_info;
+    vcpu_info_t   *vcpu_info = &s->vcpu_data[smp_processor_id()];
+
+    vcpu_info->evtchn_upcall_mask = 1;
+    vcpu_info->evtchn_upcall_pending = 0;
+
+    /* NB. No need for a barrier here -- XCHG is a barrier on x86. */
+    l1 = xchg(&vcpu_info->evtchn_pending_sel, 0);
+    while ( l1 != 0 )
+    {
+        l1i = __ffs(l1);
+        l1 &= ~(1 << l1i);
+
+        while ( (l2 = s->evtchn_pending[l1i] & ~s->evtchn_mask[l1i]) != 0 )
+        {
+            l2i = __ffs(l2);
+            l2 &= ~(1 << l2i);
+
+            port = (l1i << 5) + l2i;
+            if ( (handler = evtchns[port].handler) != NULL )
+           {
+               clear_evtchn(port);
+                handler(port, evtchns[port].dev_id, regs);
+           }
+            else
+           {
+                evtchn_device_upcall(port);
+           }
+        }
+    }
+    vcpu_info->evtchn_upcall_mask = 0;
+    return IRQ_HANDLED;
+}
+
+void force_evtchn_callback(void)
+{
+       //(void)HYPERVISOR_xen_version(0, NULL);
+}
+
+static struct irqaction evtchn_irqaction = {
+       .handler =      evtchn_interrupt,
+       .flags =        SA_INTERRUPT,
+       .name =         "xen-event-channel"
+};
+
+int evtchn_irq = 0xe9;
+void __init evtchn_init(void)
+{
+    shared_info_t *s = HYPERVISOR_shared_info;
+    vcpu_info_t   *vcpu_info = &s->vcpu_data[smp_processor_id()];
+
+#if 0
+    int ret;
+    irq = assign_irq_vector(AUTO_ASSIGN);
+    ret = request_irq(irq, evtchn_interrupt, 0, "xen-event-channel", NULL);
+    if (ret < 0)
+    {
+       printk("xen-event-channel unable to get irq %d (%d)\n", irq, ret);
+       return;
+    }
+#endif
+    register_percpu_irq(evtchn_irq, &evtchn_irqaction);
+
+    vcpu_info->arch.evtchn_vector = evtchn_irq;
+    printk("xen-event-channel using irq %d\n", evtchn_irq);
+}
+
+/* Following are set of interfaces unused on IA64/XEN, just keep it here */
+
+void bind_evtchn_to_cpu(unsigned int chn, unsigned int cpu) {}
+int teardown_irq(unsigned int irq, struct irqaction * old) {return 0;}
diff -r 7ddfb9a44972 -r 109a27c1c004 
linux-2.6-xen-sparse/arch/ia64/xen/drivers/xenia64_init.c
--- /dev/null   Fri Sep 23 00:11:04 2005
+++ b/linux-2.6-xen-sparse/arch/ia64/xen/drivers/xenia64_init.c Fri Sep 23 
14:12:28 2005
@@ -0,0 +1,48 @@
+#ifdef __ia64__
+#include <linux/config.h>
+#include <linux/module.h>
+#include <linux/efi.h>
+#include <asm/sal.h>
+#include <asm/hypervisor.h>
+/* #include <asm-xen/evtchn.h> */
+#include <linux/vmalloc.h>
+
+shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)0xf100000000000000;
+EXPORT_SYMBOL(HYPERVISOR_shared_info);
+
+static int initialized;
+start_info_t *xen_start_info;
+
+int xen_init(void)
+{
+       shared_info_t *s = HYPERVISOR_shared_info;
+
+       if (initialized)
+               return running_on_xen ? 0 : -1;
+
+       if (!running_on_xen)
+               return -1;
+
+       xen_start_info = __va(s->arch.start_info_pfn << PAGE_SHIFT);
+       xen_start_info->flags = s->arch.flags;
+       printk("Running on Xen! start_info_pfn=0x%lx lags=0x%x\n",
+               s->arch.start_info_pfn, xen_start_info->flags);
+
+       evtchn_init();
+       initialized = 1;
+       return 0;
+}
+
+/* We just need a range of legal va here, though finally identity
+ * mapped one is instead used for gnttab mapping.
+ */
+unsigned long alloc_empty_foreign_map_page_range(unsigned long pages)
+{
+       struct vm_struct *vma;
+
+       if ( (vma = get_vm_area(PAGE_SIZE * pages, VM_ALLOC)) == NULL )
+               return NULL;
+
+       return (unsigned long)vma->addr;
+}
+#endif
diff -r 7ddfb9a44972 -r 109a27c1c004 
linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypercall.h
--- /dev/null   Fri Sep 23 00:11:04 2005
+++ b/linux-2.6-xen-sparse/include/asm-xen/asm-ia64/hypercall.h Fri Sep 23 
14:12:28 2005
@@ -0,0 +1,624 @@
+/******************************************************************************
+ * hypercall.h
+ * 
+ * Linux-specific hypervisor handling.
+ * 
+ * Copyright (c) 2002-2004, K A Fraser
+ * 
+ * This file may be distributed separately from the Linux kernel, or
+ * incorporated into other software packages, subject to the following license:
+ * 
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this source file (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy, modify,
+ * merge, publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ * 
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef __HYPERCALL_H__
+#define __HYPERCALL_H__
+#include <asm-xen/xen-public/xen.h>
+
+/* FIXME: temp place to hold these page related macros */
+#include <asm/page.h>
+#define virt_to_machine(v) __pa(v)
+#define machine_to_virt(m) __va(m)
+//#define virt_to_mfn(v)       (__pa(v) >> 14)
+//#define mfn_to_virt(m)       (__va(m << 14))
+#define virt_to_mfn(v) ((__pa(v)) >> PAGE_SHIFT)
+#define mfn_to_virt(m) (__va((m) << PAGE_SHIFT))
+
+/*
+ * Assembler stubs for hyper-calls.
+ */
+
+#if 0
+static inline int
+HYPERVISOR_set_trap_table(
+    trap_info_t *table)
+{
+#if 0
+    int ret;
+    unsigned long ignore;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ignore)
+       : "0" (__HYPERVISOR_set_trap_table), "1" (table)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_mmu_update(
+    mmu_update_t *req, int count, int *success_count, domid_t domid)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2, ign3, ign4;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4)
+       : "0" (__HYPERVISOR_mmu_update), "1" (req), "2" (count),
+        "3" (success_count), "4" (domid)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_mmuext_op(
+    struct mmuext_op *op, int count, int *success_count, domid_t domid)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2, ign3, ign4;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4)
+       : "0" (__HYPERVISOR_mmuext_op), "1" (op), "2" (count),
+        "3" (success_count), "4" (domid)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_set_gdt(
+    unsigned long *frame_list, int entries)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2)
+       : "0" (__HYPERVISOR_set_gdt), "1" (frame_list), "2" (entries)
+       : "memory" );
+
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_stack_switch(
+    unsigned long ss, unsigned long esp)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2)
+       : "0" (__HYPERVISOR_stack_switch), "1" (ss), "2" (esp)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_set_callbacks(
+    unsigned long event_selector, unsigned long event_address,
+    unsigned long failsafe_selector, unsigned long failsafe_address)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2, ign3, ign4;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4)
+       : "0" (__HYPERVISOR_set_callbacks), "1" (event_selector),
+         "2" (event_address), "3" (failsafe_selector), "4" (failsafe_address)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_fpu_taskswitch(
+    int set)
+{
+#if 0
+    int ret;
+    unsigned long ign;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign)
+        : "0" (__HYPERVISOR_fpu_taskswitch), "1" (set)
+        : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_yield(
+    void)
+{
+#if 0
+    int ret;
+    unsigned long ign;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign)
+       : "0" (__HYPERVISOR_sched_op), "1" (SCHEDOP_yield)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_block(
+    void)
+{
+#if 0
+    int ret;
+    unsigned long ign1;
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1)
+       : "0" (__HYPERVISOR_sched_op), "1" (SCHEDOP_block)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_shutdown(
+    void)
+{
+#if 0
+    int ret;
+    unsigned long ign1;
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1)
+       : "0" (__HYPERVISOR_sched_op),
+         "1" (SCHEDOP_shutdown | (SHUTDOWN_poweroff << SCHEDOP_reasonshift))
+        : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_reboot(
+    void)
+{
+#if 0
+    int ret;
+    unsigned long ign1;
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1)
+       : "0" (__HYPERVISOR_sched_op),
+         "1" (SCHEDOP_shutdown | (SHUTDOWN_reboot << SCHEDOP_reasonshift))
+        : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_suspend(
+    unsigned long srec)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2;
+
+    /* NB. On suspend, control software expects a suspend record in %esi. */
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=S" (ign2)
+       : "0" (__HYPERVISOR_sched_op),
+        "b" (SCHEDOP_shutdown | (SHUTDOWN_suspend << SCHEDOP_reasonshift)), 
+        "S" (srec) : "memory");
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_crash(
+    void)
+{
+#if 0
+    int ret;
+    unsigned long ign1;
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1)
+       : "0" (__HYPERVISOR_sched_op),
+         "1" (SCHEDOP_shutdown | (SHUTDOWN_crash << SCHEDOP_reasonshift))
+        : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline long
+HYPERVISOR_set_timer_op(
+    u64 timeout)
+{
+#if 0
+    int ret;
+    unsigned long timeout_hi = (unsigned long)(timeout>>32);
+    unsigned long timeout_lo = (unsigned long)timeout;
+    unsigned long ign1, ign2;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2)
+       : "0" (__HYPERVISOR_set_timer_op), "b" (timeout_lo), "c" (timeout_hi)
+       : "memory");
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_dom0_op(
+    dom0_op_t *dom0_op)
+{
+#if 0
+    int ret;
+    unsigned long ign1;
+
+    dom0_op->interface_version = DOM0_INTERFACE_VERSION;
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1)
+       : "0" (__HYPERVISOR_dom0_op), "1" (dom0_op)
+       : "memory");
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_set_debugreg(
+    int reg, unsigned long value)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2;
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2)
+       : "0" (__HYPERVISOR_set_debugreg), "1" (reg), "2" (value)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline unsigned long
+HYPERVISOR_get_debugreg(
+    int reg)
+{
+#if 0
+    unsigned long ret;
+    unsigned long ign;
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign)
+       : "0" (__HYPERVISOR_get_debugreg), "1" (reg)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_update_descriptor(
+    unsigned long ma, unsigned long word1, unsigned long word2)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2, ign3;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3)
+       : "0" (__HYPERVISOR_update_descriptor), "1" (ma), "2" (word1),
+         "3" (word2)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_set_fast_trap(
+    int idx)
+{
+#if 0
+    int ret;
+    unsigned long ign;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign)
+       : "0" (__HYPERVISOR_set_fast_trap), "1" (idx)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_dom_mem_op(
+    unsigned int op, unsigned long *extent_list,
+    unsigned long nr_extents, unsigned int extent_order)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2, ign3, ign4, ign5;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4),
+         "=D" (ign5)
+       : "0" (__HYPERVISOR_dom_mem_op), "1" (op), "2" (extent_list),
+         "3" (nr_extents), "4" (extent_order), "5" (DOMID_SELF)
+        : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_multicall(
+    void *call_list, int nr_calls)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2)
+       : "0" (__HYPERVISOR_multicall), "1" (call_list), "2" (nr_calls)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_update_va_mapping(
+    unsigned long va, pte_t new_val, unsigned long flags)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2, ign3;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3)
+       : "0" (__HYPERVISOR_update_va_mapping), 
+          "1" (va), "2" ((new_val).pte_low), "3" (flags)
+       : "memory" );
+
+    if ( unlikely(ret < 0) )
+    {
+        printk(KERN_ALERT "Failed update VA mapping: %08lx, %08lx, %08lx\n",
+               va, (new_val).pte_low, flags);
+        BUG();
+    }
+
+    return ret;
+#endif
+    return 1;
+}
+#endif
+
+static inline int
+HYPERVISOR_event_channel_op(
+    void *op)
+{
+    int ret;
+    __asm__ __volatile__ ( ";; mov r14=%2 ; mov r2=%1 ; break 0x1000 ;; mov 
%0=r8 ;;"
+        : "=r" (ret)
+        : "i" (__HYPERVISOR_event_channel_op), "r"(op)
+        : "r14","r2","r8","memory" );
+    return ret;
+}
+
+#if 0
+static inline int
+HYPERVISOR_xen_version(
+    int cmd)
+{
+#if 0
+    int ret;
+    unsigned long ignore;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ignore)
+       : "0" (__HYPERVISOR_xen_version), "1" (cmd)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+#endif
+
+static inline int
+HYPERVISOR_console_io(
+    int cmd, int count, char *str)
+{
+    int ret;
+    __asm__ __volatile__ ( ";; mov r14=%2 ; mov r15=%3 ; mov r16=%4 ; mov 
r2=%1 ; break 0x1000 ;; mov %0=r8 ;;"
+        : "=r" (ret)
+        : "i" (__HYPERVISOR_console_io), "r"(cmd), "r"(count), "r"(str)
+        : "r14","r15","r16","r2","r8","memory" );
+    return ret;
+}
+
+#if 0
+static inline int
+HYPERVISOR_physdev_op(
+    void *physdev_op)
+{
+#if 0
+    int ret;
+    unsigned long ign;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign)
+       : "0" (__HYPERVISOR_physdev_op), "1" (physdev_op)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+#endif
+
+static inline int
+HYPERVISOR_grant_table_op(
+    unsigned int cmd, void *uop, unsigned int count)
+{
+    int ret;
+    __asm__ __volatile__ ( ";; mov r14=%2 ; mov r15=%3 ; mov r16=%4 ; mov 
r2=%1 ; break 0x1000 ;; mov %0=r8 ;;"
+        : "=r" (ret)
+        : "i" (__HYPERVISOR_grant_table_op), "r"(cmd), "r"(uop), "r"(count)
+        : "r14","r15","r16","r2","r8","memory" );
+    return ret;
+}
+
+#if 0
+static inline int
+HYPERVISOR_update_va_mapping_otherdomain(
+    unsigned long va, pte_t new_val, unsigned long flags, domid_t domid)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2, ign3, ign4;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2), "=d" (ign3), "=S" (ign4)
+       : "0" (__HYPERVISOR_update_va_mapping_otherdomain),
+          "1" (va), "2" ((new_val).pte_low), "3" (flags), "4" (domid) :
+        "memory" );
+    
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_vm_assist(
+    unsigned int cmd, unsigned int type)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2)
+       : "0" (__HYPERVISOR_vm_assist), "1" (cmd), "2" (type)
+       : "memory" );
+
+    return ret;
+#endif
+    return 1;
+}
+
+static inline int
+HYPERVISOR_boot_vcpu(
+    unsigned long vcpu, vcpu_guest_context_t *ctxt)
+{
+#if 0
+    int ret;
+    unsigned long ign1, ign2;
+
+    __asm__ __volatile__ (
+        TRAP_INSTR
+        : "=a" (ret), "=b" (ign1), "=c" (ign2)
+       : "0" (__HYPERVISOR_boot_vcpu), "1" (vcpu), "2" (ctxt)
+       : "memory");
+
+    return ret;
+#endif
+    return 1;
+}
+#endif
+
+#endif /* __HYPERCALL_H__ */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Another step towards building xenlinux/ia64 from -sparse, Xen patchbot -unstable <=